comparison fuhtark_test/Vulkan-Headers-1.4.334/include/vulkan/vulkan_raii.hpp @ 1501:f40d9d814c08 default tip main

did: correct vulkan-api generator
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 23:34:29 +0700
parents
children
comparison
equal deleted inserted replaced
1500:91c8c3b7cbf0 1501:f40d9d814c08
1 // Copyright 2015-2025 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 #if !defined( VULKAN_HPP_CXX_MODULE )
13 # include <memory> // std::unique_ptr
14 # include <utility> // std::forward
15 #endif
16
17 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18 namespace VULKAN_HPP_NAMESPACE
19 {
20 namespace VULKAN_HPP_RAII_NAMESPACE
21 {
22 namespace detail
23 {
24 using PFN_dummy = void ( * )();
25
26 class ContextDispatcher : public ::VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase
27 {
28 public:
29 ContextDispatcher( PFN_vkGetInstanceProcAddr getProcAddr )
30 : vkGetInstanceProcAddr( getProcAddr )
31 //=== VK_VERSION_1_0 ===
32 , vkCreateInstance( PFN_vkCreateInstance( getProcAddr( NULL, "vkCreateInstance" ) ) )
33 , vkEnumerateInstanceExtensionProperties(
34 PFN_vkEnumerateInstanceExtensionProperties( getProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ) )
35 , vkEnumerateInstanceLayerProperties( PFN_vkEnumerateInstanceLayerProperties( getProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ) )
36 //=== VK_VERSION_1_1 ===
37 , vkEnumerateInstanceVersion( PFN_vkEnumerateInstanceVersion( getProcAddr( NULL, "vkEnumerateInstanceVersion" ) ) )
38 {
39 }
40
41 public:
42 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0;
43
44 //=== VK_VERSION_1_0 ===
45 PFN_vkCreateInstance vkCreateInstance = 0;
46 PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0;
47 PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0;
48
49 //=== VK_VERSION_1_1 ===
50 PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0;
51 };
52
53 class InstanceDispatcher : public ::VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase
54 {
55 public:
56 InstanceDispatcher( PFN_vkGetInstanceProcAddr getProcAddr, VkInstance instance ) : vkGetInstanceProcAddr( getProcAddr )
57 {
58 //=== VK_VERSION_1_0 ===
59 vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) );
60 vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) );
61 vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) );
62 vkGetPhysicalDeviceFormatProperties =
63 PFN_vkGetPhysicalDeviceFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) );
64 vkGetPhysicalDeviceImageFormatProperties =
65 PFN_vkGetPhysicalDeviceImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) );
66 vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) );
67 vkGetPhysicalDeviceQueueFamilyProperties =
68 PFN_vkGetPhysicalDeviceQueueFamilyProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) );
69 vkGetPhysicalDeviceMemoryProperties =
70 PFN_vkGetPhysicalDeviceMemoryProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) );
71 vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) );
72 vkEnumerateDeviceExtensionProperties =
73 PFN_vkEnumerateDeviceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) );
74 vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) );
75 vkGetPhysicalDeviceSparseImageFormatProperties =
76 PFN_vkGetPhysicalDeviceSparseImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) );
77
78 //=== VK_VERSION_1_1 ===
79 vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) );
80 vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) );
81 vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) );
82 vkGetPhysicalDeviceFormatProperties2 =
83 PFN_vkGetPhysicalDeviceFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) );
84 vkGetPhysicalDeviceImageFormatProperties2 =
85 PFN_vkGetPhysicalDeviceImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) );
86 vkGetPhysicalDeviceQueueFamilyProperties2 =
87 PFN_vkGetPhysicalDeviceQueueFamilyProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) );
88 vkGetPhysicalDeviceMemoryProperties2 =
89 PFN_vkGetPhysicalDeviceMemoryProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) );
90 vkGetPhysicalDeviceSparseImageFormatProperties2 =
91 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) );
92 vkGetPhysicalDeviceExternalBufferProperties =
93 PFN_vkGetPhysicalDeviceExternalBufferProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) );
94 vkGetPhysicalDeviceExternalFenceProperties =
95 PFN_vkGetPhysicalDeviceExternalFenceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) );
96 vkGetPhysicalDeviceExternalSemaphoreProperties =
97 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) );
98
99 //=== VK_VERSION_1_3 ===
100 vkGetPhysicalDeviceToolProperties = PFN_vkGetPhysicalDeviceToolProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolProperties" ) );
101
102 //=== VK_KHR_surface ===
103 vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) );
104 vkGetPhysicalDeviceSurfaceSupportKHR =
105 PFN_vkGetPhysicalDeviceSurfaceSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) );
106 vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
107 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) );
108 vkGetPhysicalDeviceSurfaceFormatsKHR =
109 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) );
110 vkGetPhysicalDeviceSurfacePresentModesKHR =
111 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) );
112
113 //=== VK_KHR_swapchain ===
114 vkGetPhysicalDevicePresentRectanglesKHR =
115 PFN_vkGetPhysicalDevicePresentRectanglesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) );
116
117 //=== VK_KHR_display ===
118 vkGetPhysicalDeviceDisplayPropertiesKHR =
119 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) );
120 vkGetPhysicalDeviceDisplayPlanePropertiesKHR =
121 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) );
122 vkGetDisplayPlaneSupportedDisplaysKHR =
123 PFN_vkGetDisplayPlaneSupportedDisplaysKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) );
124 vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) );
125 vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) );
126 vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) );
127 vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) );
128
129 # if defined( VK_USE_PLATFORM_XLIB_KHR )
130 //=== VK_KHR_xlib_surface ===
131 vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) );
132 vkGetPhysicalDeviceXlibPresentationSupportKHR =
133 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) );
134 # endif /*VK_USE_PLATFORM_XLIB_KHR*/
135
136 # if defined( VK_USE_PLATFORM_XCB_KHR )
137 //=== VK_KHR_xcb_surface ===
138 vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) );
139 vkGetPhysicalDeviceXcbPresentationSupportKHR =
140 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) );
141 # endif /*VK_USE_PLATFORM_XCB_KHR*/
142
143 # if defined( VK_USE_PLATFORM_WAYLAND_KHR )
144 //=== VK_KHR_wayland_surface ===
145 vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) );
146 vkGetPhysicalDeviceWaylandPresentationSupportKHR =
147 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) );
148 # endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
149
150 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
151 //=== VK_KHR_android_surface ===
152 vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) );
153 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
154
155 # if defined( VK_USE_PLATFORM_WIN32_KHR )
156 //=== VK_KHR_win32_surface ===
157 vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) );
158 vkGetPhysicalDeviceWin32PresentationSupportKHR =
159 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) );
160 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
161
162 //=== VK_EXT_debug_report ===
163 vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) );
164 vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) );
165 vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) );
166
167 //=== VK_KHR_video_queue ===
168 vkGetPhysicalDeviceVideoCapabilitiesKHR =
169 PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) );
170 vkGetPhysicalDeviceVideoFormatPropertiesKHR =
171 PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) );
172
173 # if defined( VK_USE_PLATFORM_GGP )
174 //=== VK_GGP_stream_descriptor_surface ===
175 vkCreateStreamDescriptorSurfaceGGP =
176 PFN_vkCreateStreamDescriptorSurfaceGGP( vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) );
177 # endif /*VK_USE_PLATFORM_GGP*/
178
179 //=== VK_NV_external_memory_capabilities ===
180 vkGetPhysicalDeviceExternalImageFormatPropertiesNV =
181 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) );
182
183 //=== VK_KHR_get_physical_device_properties2 ===
184 vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) );
185 if ( !vkGetPhysicalDeviceFeatures2 )
186 vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR;
187 vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) );
188 if ( !vkGetPhysicalDeviceProperties2 )
189 vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR;
190 vkGetPhysicalDeviceFormatProperties2KHR =
191 PFN_vkGetPhysicalDeviceFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) );
192 if ( !vkGetPhysicalDeviceFormatProperties2 )
193 vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR;
194 vkGetPhysicalDeviceImageFormatProperties2KHR =
195 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) );
196 if ( !vkGetPhysicalDeviceImageFormatProperties2 )
197 vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR;
198 vkGetPhysicalDeviceQueueFamilyProperties2KHR =
199 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) );
200 if ( !vkGetPhysicalDeviceQueueFamilyProperties2 )
201 vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR;
202 vkGetPhysicalDeviceMemoryProperties2KHR =
203 PFN_vkGetPhysicalDeviceMemoryProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) );
204 if ( !vkGetPhysicalDeviceMemoryProperties2 )
205 vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR;
206 vkGetPhysicalDeviceSparseImageFormatProperties2KHR =
207 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) );
208 if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 )
209 vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
210
211 # if defined( VK_USE_PLATFORM_VI_NN )
212 //=== VK_NN_vi_surface ===
213 vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) );
214 # endif /*VK_USE_PLATFORM_VI_NN*/
215
216 //=== VK_KHR_device_group_creation ===
217 vkEnumeratePhysicalDeviceGroupsKHR =
218 PFN_vkEnumeratePhysicalDeviceGroupsKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) );
219 if ( !vkEnumeratePhysicalDeviceGroups )
220 vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR;
221
222 //=== VK_KHR_external_memory_capabilities ===
223 vkGetPhysicalDeviceExternalBufferPropertiesKHR =
224 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) );
225 if ( !vkGetPhysicalDeviceExternalBufferProperties )
226 vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR;
227
228 //=== VK_KHR_external_semaphore_capabilities ===
229 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR =
230 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) );
231 if ( !vkGetPhysicalDeviceExternalSemaphoreProperties )
232 vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
233
234 //=== VK_EXT_direct_mode_display ===
235 vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) );
236
237 # if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
238 //=== VK_EXT_acquire_xlib_display ===
239 vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) );
240 vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) );
241 # endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
242
243 //=== VK_EXT_display_surface_counter ===
244 vkGetPhysicalDeviceSurfaceCapabilities2EXT =
245 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) );
246
247 //=== VK_KHR_external_fence_capabilities ===
248 vkGetPhysicalDeviceExternalFencePropertiesKHR =
249 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) );
250 if ( !vkGetPhysicalDeviceExternalFenceProperties )
251 vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR;
252
253 //=== VK_KHR_performance_query ===
254 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
255 vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) );
256 vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
257 vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) );
258
259 //=== VK_KHR_get_surface_capabilities2 ===
260 vkGetPhysicalDeviceSurfaceCapabilities2KHR =
261 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) );
262 vkGetPhysicalDeviceSurfaceFormats2KHR =
263 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) );
264
265 //=== VK_KHR_get_display_properties2 ===
266 vkGetPhysicalDeviceDisplayProperties2KHR =
267 PFN_vkGetPhysicalDeviceDisplayProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) );
268 vkGetPhysicalDeviceDisplayPlaneProperties2KHR =
269 PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) );
270 vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) );
271 vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) );
272
273 # if defined( VK_USE_PLATFORM_IOS_MVK )
274 //=== VK_MVK_ios_surface ===
275 vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) );
276 # endif /*VK_USE_PLATFORM_IOS_MVK*/
277
278 # if defined( VK_USE_PLATFORM_MACOS_MVK )
279 //=== VK_MVK_macos_surface ===
280 vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) );
281 # endif /*VK_USE_PLATFORM_MACOS_MVK*/
282
283 //=== VK_EXT_debug_utils ===
284 vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) );
285 vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) );
286 vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) );
287
288 //=== VK_EXT_sample_locations ===
289 vkGetPhysicalDeviceMultisamplePropertiesEXT =
290 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) );
291
292 //=== VK_EXT_calibrated_timestamps ===
293 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT =
294 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) );
295 if ( !vkGetPhysicalDeviceCalibrateableTimeDomainsKHR )
296 vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
297
298 # if defined( VK_USE_PLATFORM_FUCHSIA )
299 //=== VK_FUCHSIA_imagepipe_surface ===
300 vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) );
301 # endif /*VK_USE_PLATFORM_FUCHSIA*/
302
303 # if defined( VK_USE_PLATFORM_METAL_EXT )
304 //=== VK_EXT_metal_surface ===
305 vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) );
306 # endif /*VK_USE_PLATFORM_METAL_EXT*/
307
308 //=== VK_KHR_fragment_shading_rate ===
309 vkGetPhysicalDeviceFragmentShadingRatesKHR =
310 PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) );
311
312 //=== VK_EXT_tooling_info ===
313 vkGetPhysicalDeviceToolPropertiesEXT =
314 PFN_vkGetPhysicalDeviceToolPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) );
315 if ( !vkGetPhysicalDeviceToolProperties )
316 vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolPropertiesEXT;
317
318 //=== VK_NV_cooperative_matrix ===
319 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV =
320 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) );
321
322 //=== VK_NV_coverage_reduction_mode ===
323 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
324 vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) );
325
326 # if defined( VK_USE_PLATFORM_WIN32_KHR )
327 //=== VK_EXT_full_screen_exclusive ===
328 vkGetPhysicalDeviceSurfacePresentModes2EXT =
329 PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) );
330 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
331
332 //=== VK_EXT_headless_surface ===
333 vkCreateHeadlessSurfaceEXT = PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) );
334
335 //=== VK_EXT_acquire_drm_display ===
336 vkAcquireDrmDisplayEXT = PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) );
337 vkGetDrmDisplayEXT = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) );
338
339 //=== VK_KHR_video_encode_queue ===
340 vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
341 vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR" ) );
342
343 # if defined( VK_USE_PLATFORM_WIN32_KHR )
344 //=== VK_NV_acquire_winrt_display ===
345 vkAcquireWinrtDisplayNV = PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) );
346 vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) );
347 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
348
349 # if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
350 //=== VK_EXT_directfb_surface ===
351 vkCreateDirectFBSurfaceEXT = PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) );
352 vkGetPhysicalDeviceDirectFBPresentationSupportEXT =
353 PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) );
354 # endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
355
356 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
357 //=== VK_QNX_screen_surface ===
358 vkCreateScreenSurfaceQNX = PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) );
359 vkGetPhysicalDeviceScreenPresentationSupportQNX =
360 PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) );
361 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
362
363 //=== VK_ARM_tensors ===
364 vkGetPhysicalDeviceExternalTensorPropertiesARM =
365 PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalTensorPropertiesARM" ) );
366
367 //=== VK_NV_optical_flow ===
368 vkGetPhysicalDeviceOpticalFlowImageFormatsNV =
369 PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV" ) );
370
371 //=== VK_NV_cooperative_vector ===
372 vkGetPhysicalDeviceCooperativeVectorPropertiesNV =
373 PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeVectorPropertiesNV" ) );
374
375 //=== VK_KHR_cooperative_matrix ===
376 vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR =
377 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR" ) );
378
379 //=== VK_ARM_data_graph ===
380 vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(
381 vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM" ) );
382 vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(
383 vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM" ) );
384
385 //=== VK_KHR_calibrated_timestamps ===
386 vkGetPhysicalDeviceCalibrateableTimeDomainsKHR =
387 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR" ) );
388
389 # if defined( VK_USE_PLATFORM_OHOS )
390 //=== VK_OHOS_surface ===
391 vkCreateSurfaceOHOS = PFN_vkCreateSurfaceOHOS( vkGetInstanceProcAddr( instance, "vkCreateSurfaceOHOS" ) );
392 # endif /*VK_USE_PLATFORM_OHOS*/
393
394 //=== VK_NV_cooperative_matrix2 ===
395 vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(
396 vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV" ) );
397
398 //=== VK_ARM_performance_counters_by_region ===
399 vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM(
400 vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM" ) );
401
402 vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) );
403 }
404
405 public:
406 //=== VK_VERSION_1_0 ===
407 PFN_vkDestroyInstance vkDestroyInstance = 0;
408 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0;
409 PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0;
410 PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0;
411 PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0;
412 PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0;
413 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0;
414 PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0;
415 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0;
416 PFN_vkCreateDevice vkCreateDevice = 0;
417 PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0;
418 PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0;
419 PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0;
420
421 //=== VK_VERSION_1_1 ===
422 PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0;
423 PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0;
424 PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0;
425 PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0;
426 PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0;
427 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0;
428 PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0;
429 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0;
430 PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0;
431 PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0;
432 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0;
433
434 //=== VK_VERSION_1_3 ===
435 PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties = 0;
436
437 //=== VK_KHR_surface ===
438 PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0;
439 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0;
440 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0;
441 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0;
442 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0;
443
444 //=== VK_KHR_swapchain ===
445 PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
446
447 //=== VK_KHR_display ===
448 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0;
449 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0;
450 PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0;
451 PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0;
452 PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0;
453 PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0;
454 PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0;
455
456 # if defined( VK_USE_PLATFORM_XLIB_KHR )
457 //=== VK_KHR_xlib_surface ===
458 PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0;
459 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0;
460 # else
461 PFN_dummy vkCreateXlibSurfaceKHR_placeholder = 0;
462 PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder = 0;
463 # endif /*VK_USE_PLATFORM_XLIB_KHR*/
464
465 # if defined( VK_USE_PLATFORM_XCB_KHR )
466 //=== VK_KHR_xcb_surface ===
467 PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0;
468 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0;
469 # else
470 PFN_dummy vkCreateXcbSurfaceKHR_placeholder = 0;
471 PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder = 0;
472 # endif /*VK_USE_PLATFORM_XCB_KHR*/
473
474 # if defined( VK_USE_PLATFORM_WAYLAND_KHR )
475 //=== VK_KHR_wayland_surface ===
476 PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0;
477 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0;
478 # else
479 PFN_dummy vkCreateWaylandSurfaceKHR_placeholder = 0;
480 PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder = 0;
481 # endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
482
483 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
484 //=== VK_KHR_android_surface ===
485 PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
486 # else
487 PFN_dummy vkCreateAndroidSurfaceKHR_placeholder = 0;
488 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
489
490 # if defined( VK_USE_PLATFORM_WIN32_KHR )
491 //=== VK_KHR_win32_surface ===
492 PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0;
493 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0;
494 # else
495 PFN_dummy vkCreateWin32SurfaceKHR_placeholder = 0;
496 PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder = 0;
497 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
498
499 //=== VK_EXT_debug_report ===
500 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0;
501 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0;
502 PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0;
503
504 //=== VK_KHR_video_queue ===
505 PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR = 0;
506 PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0;
507
508 # if defined( VK_USE_PLATFORM_GGP )
509 //=== VK_GGP_stream_descriptor_surface ===
510 PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0;
511 # else
512 PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder = 0;
513 # endif /*VK_USE_PLATFORM_GGP*/
514
515 //=== VK_NV_external_memory_capabilities ===
516 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0;
517
518 //=== VK_KHR_get_physical_device_properties2 ===
519 PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0;
520 PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0;
521 PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0;
522 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0;
523 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0;
524 PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0;
525 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0;
526
527 # if defined( VK_USE_PLATFORM_VI_NN )
528 //=== VK_NN_vi_surface ===
529 PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0;
530 # else
531 PFN_dummy vkCreateViSurfaceNN_placeholder = 0;
532 # endif /*VK_USE_PLATFORM_VI_NN*/
533
534 //=== VK_KHR_device_group_creation ===
535 PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0;
536
537 //=== VK_KHR_external_memory_capabilities ===
538 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0;
539
540 //=== VK_KHR_external_semaphore_capabilities ===
541 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0;
542
543 //=== VK_EXT_direct_mode_display ===
544 PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0;
545
546 # if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
547 //=== VK_EXT_acquire_xlib_display ===
548 PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0;
549 PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0;
550 # else
551 PFN_dummy vkAcquireXlibDisplayEXT_placeholder = 0;
552 PFN_dummy vkGetRandROutputDisplayEXT_placeholder = 0;
553 # endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
554
555 //=== VK_EXT_display_surface_counter ===
556 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0;
557
558 //=== VK_KHR_external_fence_capabilities ===
559 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0;
560
561 //=== VK_KHR_performance_query ===
562 PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0;
563 PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0;
564
565 //=== VK_KHR_get_surface_capabilities2 ===
566 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0;
567 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0;
568
569 //=== VK_KHR_get_display_properties2 ===
570 PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0;
571 PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0;
572 PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0;
573 PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0;
574
575 # if defined( VK_USE_PLATFORM_IOS_MVK )
576 //=== VK_MVK_ios_surface ===
577 PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0;
578 # else
579 PFN_dummy vkCreateIOSSurfaceMVK_placeholder = 0;
580 # endif /*VK_USE_PLATFORM_IOS_MVK*/
581
582 # if defined( VK_USE_PLATFORM_MACOS_MVK )
583 //=== VK_MVK_macos_surface ===
584 PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0;
585 # else
586 PFN_dummy vkCreateMacOSSurfaceMVK_placeholder = 0;
587 # endif /*VK_USE_PLATFORM_MACOS_MVK*/
588
589 //=== VK_EXT_debug_utils ===
590 PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0;
591 PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0;
592 PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0;
593
594 //=== VK_EXT_sample_locations ===
595 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
596
597 //=== VK_EXT_calibrated_timestamps ===
598 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
599
600 # if defined( VK_USE_PLATFORM_FUCHSIA )
601 //=== VK_FUCHSIA_imagepipe_surface ===
602 PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0;
603 # else
604 PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder = 0;
605 # endif /*VK_USE_PLATFORM_FUCHSIA*/
606
607 # if defined( VK_USE_PLATFORM_METAL_EXT )
608 //=== VK_EXT_metal_surface ===
609 PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0;
610 # else
611 PFN_dummy vkCreateMetalSurfaceEXT_placeholder = 0;
612 # endif /*VK_USE_PLATFORM_METAL_EXT*/
613
614 //=== VK_KHR_fragment_shading_rate ===
615 PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0;
616
617 //=== VK_EXT_tooling_info ===
618 PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0;
619
620 //=== VK_NV_cooperative_matrix ===
621 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
622
623 //=== VK_NV_coverage_reduction_mode ===
624 PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
625
626 # if defined( VK_USE_PLATFORM_WIN32_KHR )
627 //=== VK_EXT_full_screen_exclusive ===
628 PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0;
629 # else
630 PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder = 0;
631 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
632
633 //=== VK_EXT_headless_surface ===
634 PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0;
635
636 //=== VK_EXT_acquire_drm_display ===
637 PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0;
638 PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT = 0;
639
640 //=== VK_KHR_video_encode_queue ===
641 PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 0;
642
643 # if defined( VK_USE_PLATFORM_WIN32_KHR )
644 //=== VK_NV_acquire_winrt_display ===
645 PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0;
646 PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0;
647 # else
648 PFN_dummy vkAcquireWinrtDisplayNV_placeholder = 0;
649 PFN_dummy vkGetWinrtDisplayNV_placeholder = 0;
650 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
651
652 # if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
653 //=== VK_EXT_directfb_surface ===
654 PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0;
655 PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0;
656 # else
657 PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder = 0;
658 PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0;
659 # endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
660
661 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
662 //=== VK_QNX_screen_surface ===
663 PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0;
664 PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0;
665 # else
666 PFN_dummy vkCreateScreenSurfaceQNX_placeholder = 0;
667 PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder = 0;
668 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
669
670 //=== VK_ARM_tensors ===
671 PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARM = 0;
672
673 //=== VK_NV_optical_flow ===
674 PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 0;
675
676 //=== VK_NV_cooperative_vector ===
677 PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNV = 0;
678
679 //=== VK_KHR_cooperative_matrix ===
680 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 0;
681
682 //=== VK_ARM_data_graph ===
683 PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = 0;
684 PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = 0;
685
686 //=== VK_KHR_calibrated_timestamps ===
687 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = 0;
688
689 # if defined( VK_USE_PLATFORM_OHOS )
690 //=== VK_OHOS_surface ===
691 PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS = 0;
692 # else
693 PFN_dummy vkCreateSurfaceOHOS_placeholder = 0;
694 # endif /*VK_USE_PLATFORM_OHOS*/
695
696 //=== VK_NV_cooperative_matrix2 ===
697 PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = 0;
698
699 //=== VK_ARM_performance_counters_by_region ===
700 PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = 0;
701
702 PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
703 };
704
705 class DeviceDispatcher : public ::VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase
706 {
707 public:
708 DeviceDispatcher( PFN_vkGetDeviceProcAddr getProcAddr, VkDevice device ) : vkGetDeviceProcAddr( getProcAddr )
709 {
710 //=== VK_VERSION_1_0 ===
711 vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) );
712 vkDestroyDevice = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) );
713 vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) );
714 vkQueueSubmit = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) );
715 vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) );
716 vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) );
717 vkAllocateMemory = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) );
718 vkFreeMemory = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) );
719 vkMapMemory = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) );
720 vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) );
721 vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) );
722 vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) );
723 vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) );
724 vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) );
725 vkBindImageMemory = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) );
726 vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) );
727 vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) );
728 vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) );
729 vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) );
730 vkCreateFence = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) );
731 vkDestroyFence = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) );
732 vkResetFences = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) );
733 vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) );
734 vkWaitForFences = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) );
735 vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) );
736 vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) );
737 vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) );
738 vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) );
739 vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) );
740 vkCreateBuffer = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) );
741 vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) );
742 vkCreateImage = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) );
743 vkDestroyImage = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) );
744 vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) );
745 vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) );
746 vkDestroyImageView = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) );
747 vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) );
748 vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) );
749 vkResetCommandPool = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) );
750 vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) );
751 vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) );
752 vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) );
753 vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) );
754 vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) );
755 vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) );
756 vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) );
757 vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) );
758 vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) );
759 vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) );
760 vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) );
761 vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) );
762 vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) );
763 vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) );
764 vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) );
765 vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) );
766 vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) );
767 vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) );
768 vkCreateEvent = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) );
769 vkDestroyEvent = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) );
770 vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) );
771 vkSetEvent = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) );
772 vkResetEvent = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) );
773 vkCreateBufferView = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) );
774 vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) );
775 vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) );
776 vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) );
777 vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) );
778 vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) );
779 vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) );
780 vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) );
781 vkCreateComputePipelines = PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) );
782 vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) );
783 vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) );
784 vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) );
785 vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) );
786 vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) );
787 vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) );
788 vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) );
789 vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) );
790 vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) );
791 vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) );
792 vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) );
793 vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) );
794 vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) );
795 vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) );
796 vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) );
797 vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) );
798 vkCmdDispatch = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) );
799 vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) );
800 vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) );
801 vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) );
802 vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) );
803 vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) );
804 vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) );
805 vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) );
806 vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) );
807 vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) );
808 vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) );
809 vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) );
810 vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) );
811 vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) );
812 vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) );
813 vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) );
814 vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) );
815 vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) );
816 vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) );
817 vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) );
818 vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) );
819 vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) );
820 vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) );
821 vkCmdDraw = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) );
822 vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) );
823 vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) );
824 vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) );
825 vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) );
826 vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) );
827 vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) );
828 vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) );
829 vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) );
830 vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) );
831 vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) );
832
833 //=== VK_VERSION_1_1 ===
834 vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) );
835 vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) );
836 vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) );
837 vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) );
838 vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) );
839 vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) );
840 vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) );
841 vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) );
842 vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) );
843 vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) );
844 vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) );
845 vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) );
846 vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) );
847 vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) );
848 vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) );
849 vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) );
850
851 //=== VK_VERSION_1_2 ===
852 vkResetQueryPool = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) );
853 vkGetSemaphoreCounterValue = PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) );
854 vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) );
855 vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) );
856 vkGetBufferDeviceAddress = PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) );
857 vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) );
858 vkGetDeviceMemoryOpaqueCaptureAddress =
859 PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) );
860 vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) );
861 vkCmdDrawIndexedIndirectCount = PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) );
862 vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) );
863 vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) );
864 vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) );
865 vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) );
866
867 //=== VK_VERSION_1_3 ===
868 vkCreatePrivateDataSlot = PFN_vkCreatePrivateDataSlot( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlot" ) );
869 vkDestroyPrivateDataSlot = PFN_vkDestroyPrivateDataSlot( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlot" ) );
870 vkSetPrivateData = PFN_vkSetPrivateData( vkGetDeviceProcAddr( device, "vkSetPrivateData" ) );
871 vkGetPrivateData = PFN_vkGetPrivateData( vkGetDeviceProcAddr( device, "vkGetPrivateData" ) );
872 vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2" ) );
873 vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2" ) );
874 vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetDeviceProcAddr( device, "vkQueueSubmit2" ) );
875 vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2" ) );
876 vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetDeviceProcAddr( device, "vkCmdCopyImage2" ) );
877 vkCmdCopyBufferToImage2 = PFN_vkCmdCopyBufferToImage2( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2" ) );
878 vkCmdCopyImageToBuffer2 = PFN_vkCmdCopyImageToBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2" ) );
879 vkGetDeviceBufferMemoryRequirements = PFN_vkGetDeviceBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirements" ) );
880 vkGetDeviceImageMemoryRequirements = PFN_vkGetDeviceImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirements" ) );
881 vkGetDeviceImageSparseMemoryRequirements =
882 PFN_vkGetDeviceImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirements" ) );
883 vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetDeviceProcAddr( device, "vkCmdSetEvent2" ) );
884 vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetDeviceProcAddr( device, "vkCmdResetEvent2" ) );
885 vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2" ) );
886 vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetDeviceProcAddr( device, "vkCmdBlitImage2" ) );
887 vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetDeviceProcAddr( device, "vkCmdResolveImage2" ) );
888 vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetDeviceProcAddr( device, "vkCmdBeginRendering" ) );
889 vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetDeviceProcAddr( device, "vkCmdEndRendering" ) );
890 vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetDeviceProcAddr( device, "vkCmdSetCullMode" ) );
891 vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetDeviceProcAddr( device, "vkCmdSetFrontFace" ) );
892 vkCmdSetPrimitiveTopology = PFN_vkCmdSetPrimitiveTopology( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopology" ) );
893 vkCmdSetViewportWithCount = PFN_vkCmdSetViewportWithCount( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCount" ) );
894 vkCmdSetScissorWithCount = PFN_vkCmdSetScissorWithCount( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCount" ) );
895 vkCmdBindVertexBuffers2 = PFN_vkCmdBindVertexBuffers2( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2" ) );
896 vkCmdSetDepthTestEnable = PFN_vkCmdSetDepthTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnable" ) );
897 vkCmdSetDepthWriteEnable = PFN_vkCmdSetDepthWriteEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnable" ) );
898 vkCmdSetDepthCompareOp = PFN_vkCmdSetDepthCompareOp( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOp" ) );
899 vkCmdSetDepthBoundsTestEnable = PFN_vkCmdSetDepthBoundsTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnable" ) );
900 vkCmdSetStencilTestEnable = PFN_vkCmdSetStencilTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnable" ) );
901 vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetDeviceProcAddr( device, "vkCmdSetStencilOp" ) );
902 vkCmdSetRasterizerDiscardEnable = PFN_vkCmdSetRasterizerDiscardEnable( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnable" ) );
903 vkCmdSetDepthBiasEnable = PFN_vkCmdSetDepthBiasEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnable" ) );
904 vkCmdSetPrimitiveRestartEnable = PFN_vkCmdSetPrimitiveRestartEnable( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnable" ) );
905
906 //=== VK_VERSION_1_4 ===
907 vkMapMemory2 = PFN_vkMapMemory2( vkGetDeviceProcAddr( device, "vkMapMemory2" ) );
908 vkUnmapMemory2 = PFN_vkUnmapMemory2( vkGetDeviceProcAddr( device, "vkUnmapMemory2" ) );
909 vkGetDeviceImageSubresourceLayout = PFN_vkGetDeviceImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayout" ) );
910 vkGetImageSubresourceLayout2 = PFN_vkGetImageSubresourceLayout2( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2" ) );
911 vkCopyMemoryToImage = PFN_vkCopyMemoryToImage( vkGetDeviceProcAddr( device, "vkCopyMemoryToImage" ) );
912 vkCopyImageToMemory = PFN_vkCopyImageToMemory( vkGetDeviceProcAddr( device, "vkCopyImageToMemory" ) );
913 vkCopyImageToImage = PFN_vkCopyImageToImage( vkGetDeviceProcAddr( device, "vkCopyImageToImage" ) );
914 vkTransitionImageLayout = PFN_vkTransitionImageLayout( vkGetDeviceProcAddr( device, "vkTransitionImageLayout" ) );
915 vkCmdPushDescriptorSet = PFN_vkCmdPushDescriptorSet( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet" ) );
916 vkCmdPushDescriptorSetWithTemplate = PFN_vkCmdPushDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate" ) );
917 vkCmdBindDescriptorSets2 = PFN_vkCmdBindDescriptorSets2( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2" ) );
918 vkCmdPushConstants2 = PFN_vkCmdPushConstants2( vkGetDeviceProcAddr( device, "vkCmdPushConstants2" ) );
919 vkCmdPushDescriptorSet2 = PFN_vkCmdPushDescriptorSet2( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2" ) );
920 vkCmdPushDescriptorSetWithTemplate2 = PFN_vkCmdPushDescriptorSetWithTemplate2( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2" ) );
921 vkCmdSetLineStipple = PFN_vkCmdSetLineStipple( vkGetDeviceProcAddr( device, "vkCmdSetLineStipple" ) );
922 vkCmdBindIndexBuffer2 = PFN_vkCmdBindIndexBuffer2( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2" ) );
923 vkGetRenderingAreaGranularity = PFN_vkGetRenderingAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularity" ) );
924 vkCmdSetRenderingAttachmentLocations =
925 PFN_vkCmdSetRenderingAttachmentLocations( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocations" ) );
926 vkCmdSetRenderingInputAttachmentIndices =
927 PFN_vkCmdSetRenderingInputAttachmentIndices( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndices" ) );
928
929 //=== VK_KHR_swapchain ===
930 vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) );
931 vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) );
932 vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) );
933 vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) );
934 vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) );
935 vkGetDeviceGroupPresentCapabilitiesKHR =
936 PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) );
937 vkGetDeviceGroupSurfacePresentModesKHR =
938 PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) );
939 vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) );
940
941 //=== VK_KHR_display_swapchain ===
942 vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) );
943
944 //=== VK_EXT_debug_marker ===
945 vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) );
946 vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) );
947 vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) );
948 vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) );
949 vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) );
950
951 //=== VK_KHR_video_queue ===
952 vkCreateVideoSessionKHR = PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) );
953 vkDestroyVideoSessionKHR = PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) );
954 vkGetVideoSessionMemoryRequirementsKHR =
955 PFN_vkGetVideoSessionMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) );
956 vkBindVideoSessionMemoryKHR = PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) );
957 vkCreateVideoSessionParametersKHR = PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) );
958 vkUpdateVideoSessionParametersKHR = PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) );
959 vkDestroyVideoSessionParametersKHR = PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) );
960 vkCmdBeginVideoCodingKHR = PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) );
961 vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) );
962 vkCmdControlVideoCodingKHR = PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) );
963
964 //=== VK_KHR_video_decode_queue ===
965 vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) );
966
967 //=== VK_EXT_transform_feedback ===
968 vkCmdBindTransformFeedbackBuffersEXT =
969 PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) );
970 vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) );
971 vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) );
972 vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) );
973 vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) );
974 vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) );
975
976 //=== VK_NVX_binary_import ===
977 vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) );
978 vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) );
979 vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) );
980 vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) );
981 vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) );
982
983 //=== VK_NVX_image_view_handle ===
984 vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) );
985 vkGetImageViewHandle64NVX = PFN_vkGetImageViewHandle64NVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandle64NVX" ) );
986 vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) );
987
988 //=== VK_AMD_draw_indirect_count ===
989 vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) );
990 if ( !vkCmdDrawIndirectCount )
991 vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD;
992 vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) );
993 if ( !vkCmdDrawIndexedIndirectCount )
994 vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD;
995
996 //=== VK_AMD_shader_info ===
997 vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) );
998
999 //=== VK_KHR_dynamic_rendering ===
1000 vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" ) );
1001 if ( !vkCmdBeginRendering )
1002 vkCmdBeginRendering = vkCmdBeginRenderingKHR;
1003 vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" ) );
1004 if ( !vkCmdEndRendering )
1005 vkCmdEndRendering = vkCmdEndRenderingKHR;
1006
1007 # if defined( VK_USE_PLATFORM_WIN32_KHR )
1008 //=== VK_NV_external_memory_win32 ===
1009 vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) );
1010 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
1011
1012 //=== VK_KHR_device_group ===
1013 vkGetDeviceGroupPeerMemoryFeaturesKHR =
1014 PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) );
1015 if ( !vkGetDeviceGroupPeerMemoryFeatures )
1016 vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR;
1017 vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) );
1018 if ( !vkCmdSetDeviceMask )
1019 vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR;
1020 vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) );
1021 if ( !vkCmdDispatchBase )
1022 vkCmdDispatchBase = vkCmdDispatchBaseKHR;
1023
1024 //=== VK_KHR_maintenance1 ===
1025 vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) );
1026 if ( !vkTrimCommandPool )
1027 vkTrimCommandPool = vkTrimCommandPoolKHR;
1028
1029 # if defined( VK_USE_PLATFORM_WIN32_KHR )
1030 //=== VK_KHR_external_memory_win32 ===
1031 vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) );
1032 vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) );
1033 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
1034
1035 //=== VK_KHR_external_memory_fd ===
1036 vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) );
1037 vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) );
1038
1039 # if defined( VK_USE_PLATFORM_WIN32_KHR )
1040 //=== VK_KHR_external_semaphore_win32 ===
1041 vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) );
1042 vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) );
1043 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
1044
1045 //=== VK_KHR_external_semaphore_fd ===
1046 vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) );
1047 vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) );
1048
1049 //=== VK_KHR_push_descriptor ===
1050 vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) );
1051 if ( !vkCmdPushDescriptorSet )
1052 vkCmdPushDescriptorSet = vkCmdPushDescriptorSetKHR;
1053 vkCmdPushDescriptorSetWithTemplateKHR =
1054 PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) );
1055 if ( !vkCmdPushDescriptorSetWithTemplate )
1056 vkCmdPushDescriptorSetWithTemplate = vkCmdPushDescriptorSetWithTemplateKHR;
1057
1058 //=== VK_EXT_conditional_rendering ===
1059 vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) );
1060 vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) );
1061
1062 //=== VK_KHR_descriptor_update_template ===
1063 vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) );
1064 if ( !vkCreateDescriptorUpdateTemplate )
1065 vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR;
1066 vkDestroyDescriptorUpdateTemplateKHR =
1067 PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) );
1068 if ( !vkDestroyDescriptorUpdateTemplate )
1069 vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR;
1070 vkUpdateDescriptorSetWithTemplateKHR =
1071 PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) );
1072 if ( !vkUpdateDescriptorSetWithTemplate )
1073 vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR;
1074
1075 //=== VK_NV_clip_space_w_scaling ===
1076 vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) );
1077
1078 //=== VK_EXT_display_control ===
1079 vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) );
1080 vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) );
1081 vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) );
1082 vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) );
1083
1084 //=== VK_GOOGLE_display_timing ===
1085 vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) );
1086 vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) );
1087
1088 //=== VK_EXT_discard_rectangles ===
1089 vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) );
1090 vkCmdSetDiscardRectangleEnableEXT = PFN_vkCmdSetDiscardRectangleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEnableEXT" ) );
1091 vkCmdSetDiscardRectangleModeEXT = PFN_vkCmdSetDiscardRectangleModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleModeEXT" ) );
1092
1093 //=== VK_EXT_hdr_metadata ===
1094 vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) );
1095
1096 //=== VK_KHR_create_renderpass2 ===
1097 vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) );
1098 if ( !vkCreateRenderPass2 )
1099 vkCreateRenderPass2 = vkCreateRenderPass2KHR;
1100 vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) );
1101 if ( !vkCmdBeginRenderPass2 )
1102 vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR;
1103 vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) );
1104 if ( !vkCmdNextSubpass2 )
1105 vkCmdNextSubpass2 = vkCmdNextSubpass2KHR;
1106 vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) );
1107 if ( !vkCmdEndRenderPass2 )
1108 vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR;
1109
1110 //=== VK_KHR_shared_presentable_image ===
1111 vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) );
1112
1113 # if defined( VK_USE_PLATFORM_WIN32_KHR )
1114 //=== VK_KHR_external_fence_win32 ===
1115 vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) );
1116 vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) );
1117 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
1118
1119 //=== VK_KHR_external_fence_fd ===
1120 vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) );
1121 vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) );
1122
1123 //=== VK_KHR_performance_query ===
1124 vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) );
1125 vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) );
1126
1127 //=== VK_EXT_debug_utils ===
1128 vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) );
1129 vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) );
1130 vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) );
1131 vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) );
1132 vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) );
1133 vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) );
1134 vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) );
1135 vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) );
1136
1137 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
1138 //=== VK_ANDROID_external_memory_android_hardware_buffer ===
1139 vkGetAndroidHardwareBufferPropertiesANDROID =
1140 PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) );
1141 vkGetMemoryAndroidHardwareBufferANDROID =
1142 PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) );
1143 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1144
1145 # if defined( VK_ENABLE_BETA_EXTENSIONS )
1146 //=== VK_AMDX_shader_enqueue ===
1147 vkCreateExecutionGraphPipelinesAMDX = PFN_vkCreateExecutionGraphPipelinesAMDX( vkGetDeviceProcAddr( device, "vkCreateExecutionGraphPipelinesAMDX" ) );
1148 vkGetExecutionGraphPipelineScratchSizeAMDX =
1149 PFN_vkGetExecutionGraphPipelineScratchSizeAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineScratchSizeAMDX" ) );
1150 vkGetExecutionGraphPipelineNodeIndexAMDX =
1151 PFN_vkGetExecutionGraphPipelineNodeIndexAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineNodeIndexAMDX" ) );
1152 vkCmdInitializeGraphScratchMemoryAMDX =
1153 PFN_vkCmdInitializeGraphScratchMemoryAMDX( vkGetDeviceProcAddr( device, "vkCmdInitializeGraphScratchMemoryAMDX" ) );
1154 vkCmdDispatchGraphAMDX = PFN_vkCmdDispatchGraphAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphAMDX" ) );
1155 vkCmdDispatchGraphIndirectAMDX = PFN_vkCmdDispatchGraphIndirectAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectAMDX" ) );
1156 vkCmdDispatchGraphIndirectCountAMDX = PFN_vkCmdDispatchGraphIndirectCountAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectCountAMDX" ) );
1157 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
1158
1159 //=== VK_EXT_sample_locations ===
1160 vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) );
1161
1162 //=== VK_KHR_get_memory_requirements2 ===
1163 vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) );
1164 if ( !vkGetImageMemoryRequirements2 )
1165 vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR;
1166 vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) );
1167 if ( !vkGetBufferMemoryRequirements2 )
1168 vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR;
1169 vkGetImageSparseMemoryRequirements2KHR =
1170 PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) );
1171 if ( !vkGetImageSparseMemoryRequirements2 )
1172 vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR;
1173
1174 //=== VK_KHR_acceleration_structure ===
1175 vkCreateAccelerationStructureKHR = PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) );
1176 vkDestroyAccelerationStructureKHR = PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) );
1177 vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) );
1178 vkCmdBuildAccelerationStructuresIndirectKHR =
1179 PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) );
1180 vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) );
1181 vkCopyAccelerationStructureKHR = PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) );
1182 vkCopyAccelerationStructureToMemoryKHR =
1183 PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) );
1184 vkCopyMemoryToAccelerationStructureKHR =
1185 PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) );
1186 vkWriteAccelerationStructuresPropertiesKHR =
1187 PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) );
1188 vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) );
1189 vkCmdCopyAccelerationStructureToMemoryKHR =
1190 PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) );
1191 vkCmdCopyMemoryToAccelerationStructureKHR =
1192 PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) );
1193 vkGetAccelerationStructureDeviceAddressKHR =
1194 PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) );
1195 vkCmdWriteAccelerationStructuresPropertiesKHR =
1196 PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) );
1197 vkGetDeviceAccelerationStructureCompatibilityKHR =
1198 PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) );
1199 vkGetAccelerationStructureBuildSizesKHR =
1200 PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) );
1201
1202 //=== VK_KHR_ray_tracing_pipeline ===
1203 vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) );
1204 vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) );
1205 vkGetRayTracingShaderGroupHandlesKHR =
1206 PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) );
1207 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR =
1208 PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) );
1209 vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) );
1210 vkGetRayTracingShaderGroupStackSizeKHR =
1211 PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) );
1212 vkCmdSetRayTracingPipelineStackSizeKHR =
1213 PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) );
1214
1215 //=== VK_KHR_sampler_ycbcr_conversion ===
1216 vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) );
1217 if ( !vkCreateSamplerYcbcrConversion )
1218 vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR;
1219 vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) );
1220 if ( !vkDestroySamplerYcbcrConversion )
1221 vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR;
1222
1223 //=== VK_KHR_bind_memory2 ===
1224 vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) );
1225 if ( !vkBindBufferMemory2 )
1226 vkBindBufferMemory2 = vkBindBufferMemory2KHR;
1227 vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) );
1228 if ( !vkBindImageMemory2 )
1229 vkBindImageMemory2 = vkBindImageMemory2KHR;
1230
1231 //=== VK_EXT_image_drm_format_modifier ===
1232 vkGetImageDrmFormatModifierPropertiesEXT =
1233 PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) );
1234
1235 //=== VK_EXT_validation_cache ===
1236 vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) );
1237 vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) );
1238 vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) );
1239 vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) );
1240
1241 //=== VK_NV_shading_rate_image ===
1242 vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) );
1243 vkCmdSetViewportShadingRatePaletteNV =
1244 PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) );
1245 vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) );
1246
1247 //=== VK_NV_ray_tracing ===
1248 vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) );
1249 vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) );
1250 vkGetAccelerationStructureMemoryRequirementsNV =
1251 PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) );
1252 vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) );
1253 vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) );
1254 vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) );
1255 vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) );
1256 vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) );
1257 vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) );
1258 if ( !vkGetRayTracingShaderGroupHandlesKHR )
1259 vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV;
1260 vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) );
1261 vkCmdWriteAccelerationStructuresPropertiesNV =
1262 PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) );
1263 vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) );
1264
1265 //=== VK_KHR_maintenance3 ===
1266 vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) );
1267 if ( !vkGetDescriptorSetLayoutSupport )
1268 vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR;
1269
1270 //=== VK_KHR_draw_indirect_count ===
1271 vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) );
1272 if ( !vkCmdDrawIndirectCount )
1273 vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR;
1274 vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) );
1275 if ( !vkCmdDrawIndexedIndirectCount )
1276 vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR;
1277
1278 //=== VK_EXT_external_memory_host ===
1279 vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) );
1280
1281 //=== VK_AMD_buffer_marker ===
1282 vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) );
1283 vkCmdWriteBufferMarker2AMD = PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) );
1284
1285 //=== VK_EXT_calibrated_timestamps ===
1286 vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) );
1287 if ( !vkGetCalibratedTimestampsKHR )
1288 vkGetCalibratedTimestampsKHR = vkGetCalibratedTimestampsEXT;
1289
1290 //=== VK_NV_mesh_shader ===
1291 vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) );
1292 vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) );
1293 vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) );
1294
1295 //=== VK_NV_scissor_exclusive ===
1296 vkCmdSetExclusiveScissorEnableNV = PFN_vkCmdSetExclusiveScissorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorEnableNV" ) );
1297 vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) );
1298
1299 //=== VK_NV_device_diagnostic_checkpoints ===
1300 vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) );
1301 vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) );
1302 vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) );
1303
1304 //=== VK_KHR_timeline_semaphore ===
1305 vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) );
1306 if ( !vkGetSemaphoreCounterValue )
1307 vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR;
1308 vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) );
1309 if ( !vkWaitSemaphores )
1310 vkWaitSemaphores = vkWaitSemaphoresKHR;
1311 vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) );
1312 if ( !vkSignalSemaphore )
1313 vkSignalSemaphore = vkSignalSemaphoreKHR;
1314
1315 //=== VK_INTEL_performance_query ===
1316 vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) );
1317 vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) );
1318 vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) );
1319 vkCmdSetPerformanceStreamMarkerINTEL =
1320 PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) );
1321 vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) );
1322 vkAcquirePerformanceConfigurationINTEL =
1323 PFN_vkAcquirePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) );
1324 vkReleasePerformanceConfigurationINTEL =
1325 PFN_vkReleasePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) );
1326 vkQueueSetPerformanceConfigurationINTEL =
1327 PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) );
1328 vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) );
1329
1330 //=== VK_AMD_display_native_hdr ===
1331 vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) );
1332
1333 //=== VK_KHR_fragment_shading_rate ===
1334 vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) );
1335
1336 //=== VK_KHR_dynamic_rendering_local_read ===
1337 vkCmdSetRenderingAttachmentLocationsKHR =
1338 PFN_vkCmdSetRenderingAttachmentLocationsKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocationsKHR" ) );
1339 if ( !vkCmdSetRenderingAttachmentLocations )
1340 vkCmdSetRenderingAttachmentLocations = vkCmdSetRenderingAttachmentLocationsKHR;
1341 vkCmdSetRenderingInputAttachmentIndicesKHR =
1342 PFN_vkCmdSetRenderingInputAttachmentIndicesKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndicesKHR" ) );
1343 if ( !vkCmdSetRenderingInputAttachmentIndices )
1344 vkCmdSetRenderingInputAttachmentIndices = vkCmdSetRenderingInputAttachmentIndicesKHR;
1345
1346 //=== VK_EXT_buffer_device_address ===
1347 vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) );
1348 if ( !vkGetBufferDeviceAddress )
1349 vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT;
1350
1351 //=== VK_KHR_present_wait ===
1352 vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) );
1353
1354 # if defined( VK_USE_PLATFORM_WIN32_KHR )
1355 //=== VK_EXT_full_screen_exclusive ===
1356 vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) );
1357 vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) );
1358 vkGetDeviceGroupSurfacePresentModes2EXT =
1359 PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) );
1360 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
1361
1362 //=== VK_KHR_buffer_device_address ===
1363 vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) );
1364 if ( !vkGetBufferDeviceAddress )
1365 vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR;
1366 vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) );
1367 if ( !vkGetBufferOpaqueCaptureAddress )
1368 vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR;
1369 vkGetDeviceMemoryOpaqueCaptureAddressKHR =
1370 PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) );
1371 if ( !vkGetDeviceMemoryOpaqueCaptureAddress )
1372 vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR;
1373
1374 //=== VK_EXT_line_rasterization ===
1375 vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) );
1376 if ( !vkCmdSetLineStipple )
1377 vkCmdSetLineStipple = vkCmdSetLineStippleEXT;
1378
1379 //=== VK_EXT_host_query_reset ===
1380 vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) );
1381 if ( !vkResetQueryPool )
1382 vkResetQueryPool = vkResetQueryPoolEXT;
1383
1384 //=== VK_EXT_extended_dynamic_state ===
1385 vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) );
1386 if ( !vkCmdSetCullMode )
1387 vkCmdSetCullMode = vkCmdSetCullModeEXT;
1388 vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) );
1389 if ( !vkCmdSetFrontFace )
1390 vkCmdSetFrontFace = vkCmdSetFrontFaceEXT;
1391 vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) );
1392 if ( !vkCmdSetPrimitiveTopology )
1393 vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT;
1394 vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) );
1395 if ( !vkCmdSetViewportWithCount )
1396 vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT;
1397 vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) );
1398 if ( !vkCmdSetScissorWithCount )
1399 vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT;
1400 vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) );
1401 if ( !vkCmdBindVertexBuffers2 )
1402 vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT;
1403 vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) );
1404 if ( !vkCmdSetDepthTestEnable )
1405 vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT;
1406 vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) );
1407 if ( !vkCmdSetDepthWriteEnable )
1408 vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT;
1409 vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) );
1410 if ( !vkCmdSetDepthCompareOp )
1411 vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT;
1412 vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) );
1413 if ( !vkCmdSetDepthBoundsTestEnable )
1414 vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT;
1415 vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) );
1416 if ( !vkCmdSetStencilTestEnable )
1417 vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT;
1418 vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) );
1419 if ( !vkCmdSetStencilOp )
1420 vkCmdSetStencilOp = vkCmdSetStencilOpEXT;
1421
1422 //=== VK_KHR_deferred_host_operations ===
1423 vkCreateDeferredOperationKHR = PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) );
1424 vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) );
1425 vkGetDeferredOperationMaxConcurrencyKHR =
1426 PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) );
1427 vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) );
1428 vkDeferredOperationJoinKHR = PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) );
1429
1430 //=== VK_KHR_pipeline_executable_properties ===
1431 vkGetPipelineExecutablePropertiesKHR =
1432 PFN_vkGetPipelineExecutablePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) );
1433 vkGetPipelineExecutableStatisticsKHR =
1434 PFN_vkGetPipelineExecutableStatisticsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) );
1435 vkGetPipelineExecutableInternalRepresentationsKHR =
1436 PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) );
1437
1438 //=== VK_EXT_host_image_copy ===
1439 vkCopyMemoryToImageEXT = PFN_vkCopyMemoryToImageEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToImageEXT" ) );
1440 if ( !vkCopyMemoryToImage )
1441 vkCopyMemoryToImage = vkCopyMemoryToImageEXT;
1442 vkCopyImageToMemoryEXT = PFN_vkCopyImageToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyImageToMemoryEXT" ) );
1443 if ( !vkCopyImageToMemory )
1444 vkCopyImageToMemory = vkCopyImageToMemoryEXT;
1445 vkCopyImageToImageEXT = PFN_vkCopyImageToImageEXT( vkGetDeviceProcAddr( device, "vkCopyImageToImageEXT" ) );
1446 if ( !vkCopyImageToImage )
1447 vkCopyImageToImage = vkCopyImageToImageEXT;
1448 vkTransitionImageLayoutEXT = PFN_vkTransitionImageLayoutEXT( vkGetDeviceProcAddr( device, "vkTransitionImageLayoutEXT" ) );
1449 if ( !vkTransitionImageLayout )
1450 vkTransitionImageLayout = vkTransitionImageLayoutEXT;
1451 vkGetImageSubresourceLayout2EXT = PFN_vkGetImageSubresourceLayout2EXT( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2EXT" ) );
1452 if ( !vkGetImageSubresourceLayout2 )
1453 vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2EXT;
1454
1455 //=== VK_KHR_map_memory2 ===
1456 vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetDeviceProcAddr( device, "vkMapMemory2KHR" ) );
1457 if ( !vkMapMemory2 )
1458 vkMapMemory2 = vkMapMemory2KHR;
1459 vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetDeviceProcAddr( device, "vkUnmapMemory2KHR" ) );
1460 if ( !vkUnmapMemory2 )
1461 vkUnmapMemory2 = vkUnmapMemory2KHR;
1462
1463 //=== VK_EXT_swapchain_maintenance1 ===
1464 vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesEXT" ) );
1465 if ( !vkReleaseSwapchainImagesKHR )
1466 vkReleaseSwapchainImagesKHR = vkReleaseSwapchainImagesEXT;
1467
1468 //=== VK_NV_device_generated_commands ===
1469 vkGetGeneratedCommandsMemoryRequirementsNV =
1470 PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) );
1471 vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) );
1472 vkCmdExecuteGeneratedCommandsNV = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) );
1473 vkCmdBindPipelineShaderGroupNV = PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) );
1474 vkCreateIndirectCommandsLayoutNV = PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) );
1475 vkDestroyIndirectCommandsLayoutNV = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) );
1476
1477 //=== VK_EXT_depth_bias_control ===
1478 vkCmdSetDepthBias2EXT = PFN_vkCmdSetDepthBias2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias2EXT" ) );
1479
1480 //=== VK_EXT_private_data ===
1481 vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) );
1482 if ( !vkCreatePrivateDataSlot )
1483 vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT;
1484 vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) );
1485 if ( !vkDestroyPrivateDataSlot )
1486 vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT;
1487 vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) );
1488 if ( !vkSetPrivateData )
1489 vkSetPrivateData = vkSetPrivateDataEXT;
1490 vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) );
1491 if ( !vkGetPrivateData )
1492 vkGetPrivateData = vkGetPrivateDataEXT;
1493
1494 //=== VK_KHR_video_encode_queue ===
1495 vkGetEncodedVideoSessionParametersKHR =
1496 PFN_vkGetEncodedVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkGetEncodedVideoSessionParametersKHR" ) );
1497 vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) );
1498
1499 # if defined( VK_ENABLE_BETA_EXTENSIONS )
1500 //=== VK_NV_cuda_kernel_launch ===
1501 vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetDeviceProcAddr( device, "vkCreateCudaModuleNV" ) );
1502 vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetDeviceProcAddr( device, "vkGetCudaModuleCacheNV" ) );
1503 vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetDeviceProcAddr( device, "vkCreateCudaFunctionNV" ) );
1504 vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetDeviceProcAddr( device, "vkDestroyCudaModuleNV" ) );
1505 vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetDeviceProcAddr( device, "vkDestroyCudaFunctionNV" ) );
1506 vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) );
1507 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
1508
1509 //=== VK_QCOM_tile_shading ===
1510 vkCmdDispatchTileQCOM = PFN_vkCmdDispatchTileQCOM( vkGetDeviceProcAddr( device, "vkCmdDispatchTileQCOM" ) );
1511 vkCmdBeginPerTileExecutionQCOM = PFN_vkCmdBeginPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdBeginPerTileExecutionQCOM" ) );
1512 vkCmdEndPerTileExecutionQCOM = PFN_vkCmdEndPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdEndPerTileExecutionQCOM" ) );
1513
1514 # if defined( VK_USE_PLATFORM_METAL_EXT )
1515 //=== VK_EXT_metal_objects ===
1516 vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) );
1517 # endif /*VK_USE_PLATFORM_METAL_EXT*/
1518
1519 //=== VK_KHR_synchronization2 ===
1520 vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) );
1521 if ( !vkCmdSetEvent2 )
1522 vkCmdSetEvent2 = vkCmdSetEvent2KHR;
1523 vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) );
1524 if ( !vkCmdResetEvent2 )
1525 vkCmdResetEvent2 = vkCmdResetEvent2KHR;
1526 vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) );
1527 if ( !vkCmdWaitEvents2 )
1528 vkCmdWaitEvents2 = vkCmdWaitEvents2KHR;
1529 vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) );
1530 if ( !vkCmdPipelineBarrier2 )
1531 vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR;
1532 vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) );
1533 if ( !vkCmdWriteTimestamp2 )
1534 vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR;
1535 vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) );
1536 if ( !vkQueueSubmit2 )
1537 vkQueueSubmit2 = vkQueueSubmit2KHR;
1538
1539 //=== VK_EXT_descriptor_buffer ===
1540 vkGetDescriptorSetLayoutSizeEXT = PFN_vkGetDescriptorSetLayoutSizeEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSizeEXT" ) );
1541 vkGetDescriptorSetLayoutBindingOffsetEXT =
1542 PFN_vkGetDescriptorSetLayoutBindingOffsetEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutBindingOffsetEXT" ) );
1543 vkGetDescriptorEXT = PFN_vkGetDescriptorEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorEXT" ) );
1544 vkCmdBindDescriptorBuffersEXT = PFN_vkCmdBindDescriptorBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBuffersEXT" ) );
1545 vkCmdSetDescriptorBufferOffsetsEXT = PFN_vkCmdSetDescriptorBufferOffsetsEXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsetsEXT" ) );
1546 vkCmdBindDescriptorBufferEmbeddedSamplersEXT =
1547 PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT" ) );
1548 vkGetBufferOpaqueCaptureDescriptorDataEXT =
1549 PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureDescriptorDataEXT" ) );
1550 vkGetImageOpaqueCaptureDescriptorDataEXT =
1551 PFN_vkGetImageOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageOpaqueCaptureDescriptorDataEXT" ) );
1552 vkGetImageViewOpaqueCaptureDescriptorDataEXT =
1553 PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageViewOpaqueCaptureDescriptorDataEXT" ) );
1554 vkGetSamplerOpaqueCaptureDescriptorDataEXT =
1555 PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetSamplerOpaqueCaptureDescriptorDataEXT" ) );
1556 vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
1557 vkGetDeviceProcAddr( device, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT" ) );
1558
1559 //=== VK_NV_fragment_shading_rate_enums ===
1560 vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) );
1561
1562 //=== VK_EXT_mesh_shader ===
1563 vkCmdDrawMeshTasksEXT = PFN_vkCmdDrawMeshTasksEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksEXT" ) );
1564 vkCmdDrawMeshTasksIndirectEXT = PFN_vkCmdDrawMeshTasksIndirectEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectEXT" ) );
1565 vkCmdDrawMeshTasksIndirectCountEXT = PFN_vkCmdDrawMeshTasksIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountEXT" ) );
1566
1567 //=== VK_KHR_copy_commands2 ===
1568 vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) );
1569 if ( !vkCmdCopyBuffer2 )
1570 vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR;
1571 vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) );
1572 if ( !vkCmdCopyImage2 )
1573 vkCmdCopyImage2 = vkCmdCopyImage2KHR;
1574 vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) );
1575 if ( !vkCmdCopyBufferToImage2 )
1576 vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR;
1577 vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) );
1578 if ( !vkCmdCopyImageToBuffer2 )
1579 vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR;
1580 vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) );
1581 if ( !vkCmdBlitImage2 )
1582 vkCmdBlitImage2 = vkCmdBlitImage2KHR;
1583 vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) );
1584 if ( !vkCmdResolveImage2 )
1585 vkCmdResolveImage2 = vkCmdResolveImage2KHR;
1586
1587 //=== VK_EXT_device_fault ===
1588 vkGetDeviceFaultInfoEXT = PFN_vkGetDeviceFaultInfoEXT( vkGetDeviceProcAddr( device, "vkGetDeviceFaultInfoEXT" ) );
1589
1590 //=== VK_EXT_vertex_input_dynamic_state ===
1591 vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) );
1592
1593 # if defined( VK_USE_PLATFORM_FUCHSIA )
1594 //=== VK_FUCHSIA_external_memory ===
1595 vkGetMemoryZirconHandleFUCHSIA = PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) );
1596 vkGetMemoryZirconHandlePropertiesFUCHSIA =
1597 PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) );
1598 # endif /*VK_USE_PLATFORM_FUCHSIA*/
1599
1600 # if defined( VK_USE_PLATFORM_FUCHSIA )
1601 //=== VK_FUCHSIA_external_semaphore ===
1602 vkImportSemaphoreZirconHandleFUCHSIA =
1603 PFN_vkImportSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) );
1604 vkGetSemaphoreZirconHandleFUCHSIA = PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) );
1605 # endif /*VK_USE_PLATFORM_FUCHSIA*/
1606
1607 # if defined( VK_USE_PLATFORM_FUCHSIA )
1608 //=== VK_FUCHSIA_buffer_collection ===
1609 vkCreateBufferCollectionFUCHSIA = PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) );
1610 vkSetBufferCollectionImageConstraintsFUCHSIA =
1611 PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) );
1612 vkSetBufferCollectionBufferConstraintsFUCHSIA =
1613 PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) );
1614 vkDestroyBufferCollectionFUCHSIA = PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) );
1615 vkGetBufferCollectionPropertiesFUCHSIA =
1616 PFN_vkGetBufferCollectionPropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) );
1617 # endif /*VK_USE_PLATFORM_FUCHSIA*/
1618
1619 //=== VK_HUAWEI_subpass_shading ===
1620 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI =
1621 PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) );
1622 vkCmdSubpassShadingHUAWEI = PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) );
1623
1624 //=== VK_HUAWEI_invocation_mask ===
1625 vkCmdBindInvocationMaskHUAWEI = PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) );
1626
1627 //=== VK_NV_external_memory_rdma ===
1628 vkGetMemoryRemoteAddressNV = PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) );
1629
1630 //=== VK_EXT_pipeline_properties ===
1631 vkGetPipelinePropertiesEXT = PFN_vkGetPipelinePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetPipelinePropertiesEXT" ) );
1632
1633 //=== VK_EXT_extended_dynamic_state2 ===
1634 vkCmdSetPatchControlPointsEXT = PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) );
1635 vkCmdSetRasterizerDiscardEnableEXT = PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) );
1636 if ( !vkCmdSetRasterizerDiscardEnable )
1637 vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT;
1638 vkCmdSetDepthBiasEnableEXT = PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) );
1639 if ( !vkCmdSetDepthBiasEnable )
1640 vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT;
1641 vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) );
1642 vkCmdSetPrimitiveRestartEnableEXT = PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) );
1643 if ( !vkCmdSetPrimitiveRestartEnable )
1644 vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT;
1645
1646 //=== VK_EXT_color_write_enable ===
1647 vkCmdSetColorWriteEnableEXT = PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) );
1648
1649 //=== VK_KHR_ray_tracing_maintenance1 ===
1650 vkCmdTraceRaysIndirect2KHR = PFN_vkCmdTraceRaysIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirect2KHR" ) );
1651
1652 //=== VK_EXT_multi_draw ===
1653 vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) );
1654 vkCmdDrawMultiIndexedEXT = PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) );
1655
1656 //=== VK_EXT_opacity_micromap ===
1657 vkCreateMicromapEXT = PFN_vkCreateMicromapEXT( vkGetDeviceProcAddr( device, "vkCreateMicromapEXT" ) );
1658 vkDestroyMicromapEXT = PFN_vkDestroyMicromapEXT( vkGetDeviceProcAddr( device, "vkDestroyMicromapEXT" ) );
1659 vkCmdBuildMicromapsEXT = PFN_vkCmdBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkCmdBuildMicromapsEXT" ) );
1660 vkBuildMicromapsEXT = PFN_vkBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkBuildMicromapsEXT" ) );
1661 vkCopyMicromapEXT = PFN_vkCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapEXT" ) );
1662 vkCopyMicromapToMemoryEXT = PFN_vkCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapToMemoryEXT" ) );
1663 vkCopyMemoryToMicromapEXT = PFN_vkCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToMicromapEXT" ) );
1664 vkWriteMicromapsPropertiesEXT = PFN_vkWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkWriteMicromapsPropertiesEXT" ) );
1665 vkCmdCopyMicromapEXT = PFN_vkCmdCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapEXT" ) );
1666 vkCmdCopyMicromapToMemoryEXT = PFN_vkCmdCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapToMemoryEXT" ) );
1667 vkCmdCopyMemoryToMicromapEXT = PFN_vkCmdCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToMicromapEXT" ) );
1668 vkCmdWriteMicromapsPropertiesEXT = PFN_vkCmdWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkCmdWriteMicromapsPropertiesEXT" ) );
1669 vkGetDeviceMicromapCompatibilityEXT = PFN_vkGetDeviceMicromapCompatibilityEXT( vkGetDeviceProcAddr( device, "vkGetDeviceMicromapCompatibilityEXT" ) );
1670 vkGetMicromapBuildSizesEXT = PFN_vkGetMicromapBuildSizesEXT( vkGetDeviceProcAddr( device, "vkGetMicromapBuildSizesEXT" ) );
1671
1672 //=== VK_HUAWEI_cluster_culling_shader ===
1673 vkCmdDrawClusterHUAWEI = PFN_vkCmdDrawClusterHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterHUAWEI" ) );
1674 vkCmdDrawClusterIndirectHUAWEI = PFN_vkCmdDrawClusterIndirectHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterIndirectHUAWEI" ) );
1675
1676 //=== VK_EXT_pageable_device_local_memory ===
1677 vkSetDeviceMemoryPriorityEXT = PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) );
1678
1679 //=== VK_KHR_maintenance4 ===
1680 vkGetDeviceBufferMemoryRequirementsKHR =
1681 PFN_vkGetDeviceBufferMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) );
1682 if ( !vkGetDeviceBufferMemoryRequirements )
1683 vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR;
1684 vkGetDeviceImageMemoryRequirementsKHR =
1685 PFN_vkGetDeviceImageMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) );
1686 if ( !vkGetDeviceImageMemoryRequirements )
1687 vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR;
1688 vkGetDeviceImageSparseMemoryRequirementsKHR =
1689 PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) );
1690 if ( !vkGetDeviceImageSparseMemoryRequirements )
1691 vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR;
1692
1693 //=== VK_VALVE_descriptor_set_host_mapping ===
1694 vkGetDescriptorSetLayoutHostMappingInfoVALVE =
1695 PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE" ) );
1696 vkGetDescriptorSetHostMappingVALVE = PFN_vkGetDescriptorSetHostMappingVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetHostMappingVALVE" ) );
1697
1698 //=== VK_NV_copy_memory_indirect ===
1699 vkCmdCopyMemoryIndirectNV = PFN_vkCmdCopyMemoryIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectNV" ) );
1700 vkCmdCopyMemoryToImageIndirectNV = PFN_vkCmdCopyMemoryToImageIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectNV" ) );
1701
1702 //=== VK_NV_memory_decompression ===
1703 vkCmdDecompressMemoryNV = PFN_vkCmdDecompressMemoryNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryNV" ) );
1704 vkCmdDecompressMemoryIndirectCountNV =
1705 PFN_vkCmdDecompressMemoryIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountNV" ) );
1706
1707 //=== VK_NV_device_generated_commands_compute ===
1708 vkGetPipelineIndirectMemoryRequirementsNV =
1709 PFN_vkGetPipelineIndirectMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectMemoryRequirementsNV" ) );
1710 vkCmdUpdatePipelineIndirectBufferNV = PFN_vkCmdUpdatePipelineIndirectBufferNV( vkGetDeviceProcAddr( device, "vkCmdUpdatePipelineIndirectBufferNV" ) );
1711 vkGetPipelineIndirectDeviceAddressNV =
1712 PFN_vkGetPipelineIndirectDeviceAddressNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectDeviceAddressNV" ) );
1713
1714 # if defined( VK_USE_PLATFORM_OHOS )
1715 //=== VK_OHOS_external_memory ===
1716 vkGetNativeBufferPropertiesOHOS = PFN_vkGetNativeBufferPropertiesOHOS( vkGetDeviceProcAddr( device, "vkGetNativeBufferPropertiesOHOS" ) );
1717 vkGetMemoryNativeBufferOHOS = PFN_vkGetMemoryNativeBufferOHOS( vkGetDeviceProcAddr( device, "vkGetMemoryNativeBufferOHOS" ) );
1718 # endif /*VK_USE_PLATFORM_OHOS*/
1719
1720 //=== VK_EXT_extended_dynamic_state3 ===
1721 vkCmdSetDepthClampEnableEXT = PFN_vkCmdSetDepthClampEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampEnableEXT" ) );
1722 vkCmdSetPolygonModeEXT = PFN_vkCmdSetPolygonModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetPolygonModeEXT" ) );
1723 vkCmdSetRasterizationSamplesEXT = PFN_vkCmdSetRasterizationSamplesEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationSamplesEXT" ) );
1724 vkCmdSetSampleMaskEXT = PFN_vkCmdSetSampleMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleMaskEXT" ) );
1725 vkCmdSetAlphaToCoverageEnableEXT = PFN_vkCmdSetAlphaToCoverageEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToCoverageEnableEXT" ) );
1726 vkCmdSetAlphaToOneEnableEXT = PFN_vkCmdSetAlphaToOneEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToOneEnableEXT" ) );
1727 vkCmdSetLogicOpEnableEXT = PFN_vkCmdSetLogicOpEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEnableEXT" ) );
1728 vkCmdSetColorBlendEnableEXT = PFN_vkCmdSetColorBlendEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEnableEXT" ) );
1729 vkCmdSetColorBlendEquationEXT = PFN_vkCmdSetColorBlendEquationEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEquationEXT" ) );
1730 vkCmdSetColorWriteMaskEXT = PFN_vkCmdSetColorWriteMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteMaskEXT" ) );
1731 vkCmdSetTessellationDomainOriginEXT = PFN_vkCmdSetTessellationDomainOriginEXT( vkGetDeviceProcAddr( device, "vkCmdSetTessellationDomainOriginEXT" ) );
1732 vkCmdSetRasterizationStreamEXT = PFN_vkCmdSetRasterizationStreamEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationStreamEXT" ) );
1733 vkCmdSetConservativeRasterizationModeEXT =
1734 PFN_vkCmdSetConservativeRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetConservativeRasterizationModeEXT" ) );
1735 vkCmdSetExtraPrimitiveOverestimationSizeEXT =
1736 PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT( vkGetDeviceProcAddr( device, "vkCmdSetExtraPrimitiveOverestimationSizeEXT" ) );
1737 vkCmdSetDepthClipEnableEXT = PFN_vkCmdSetDepthClipEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipEnableEXT" ) );
1738 vkCmdSetSampleLocationsEnableEXT = PFN_vkCmdSetSampleLocationsEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEnableEXT" ) );
1739 vkCmdSetColorBlendAdvancedEXT = PFN_vkCmdSetColorBlendAdvancedEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendAdvancedEXT" ) );
1740 vkCmdSetProvokingVertexModeEXT = PFN_vkCmdSetProvokingVertexModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetProvokingVertexModeEXT" ) );
1741 vkCmdSetLineRasterizationModeEXT = PFN_vkCmdSetLineRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineRasterizationModeEXT" ) );
1742 vkCmdSetLineStippleEnableEXT = PFN_vkCmdSetLineStippleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEnableEXT" ) );
1743 vkCmdSetDepthClipNegativeOneToOneEXT =
1744 PFN_vkCmdSetDepthClipNegativeOneToOneEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipNegativeOneToOneEXT" ) );
1745 vkCmdSetViewportWScalingEnableNV = PFN_vkCmdSetViewportWScalingEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingEnableNV" ) );
1746 vkCmdSetViewportSwizzleNV = PFN_vkCmdSetViewportSwizzleNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportSwizzleNV" ) );
1747 vkCmdSetCoverageToColorEnableNV = PFN_vkCmdSetCoverageToColorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorEnableNV" ) );
1748 vkCmdSetCoverageToColorLocationNV = PFN_vkCmdSetCoverageToColorLocationNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorLocationNV" ) );
1749 vkCmdSetCoverageModulationModeNV = PFN_vkCmdSetCoverageModulationModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationModeNV" ) );
1750 vkCmdSetCoverageModulationTableEnableNV =
1751 PFN_vkCmdSetCoverageModulationTableEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableEnableNV" ) );
1752 vkCmdSetCoverageModulationTableNV = PFN_vkCmdSetCoverageModulationTableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableNV" ) );
1753 vkCmdSetShadingRateImageEnableNV = PFN_vkCmdSetShadingRateImageEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetShadingRateImageEnableNV" ) );
1754 vkCmdSetRepresentativeFragmentTestEnableNV =
1755 PFN_vkCmdSetRepresentativeFragmentTestEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetRepresentativeFragmentTestEnableNV" ) );
1756 vkCmdSetCoverageReductionModeNV = PFN_vkCmdSetCoverageReductionModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageReductionModeNV" ) );
1757
1758 //=== VK_ARM_tensors ===
1759 vkCreateTensorARM = PFN_vkCreateTensorARM( vkGetDeviceProcAddr( device, "vkCreateTensorARM" ) );
1760 vkDestroyTensorARM = PFN_vkDestroyTensorARM( vkGetDeviceProcAddr( device, "vkDestroyTensorARM" ) );
1761 vkCreateTensorViewARM = PFN_vkCreateTensorViewARM( vkGetDeviceProcAddr( device, "vkCreateTensorViewARM" ) );
1762 vkDestroyTensorViewARM = PFN_vkDestroyTensorViewARM( vkGetDeviceProcAddr( device, "vkDestroyTensorViewARM" ) );
1763 vkGetTensorMemoryRequirementsARM = PFN_vkGetTensorMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetTensorMemoryRequirementsARM" ) );
1764 vkBindTensorMemoryARM = PFN_vkBindTensorMemoryARM( vkGetDeviceProcAddr( device, "vkBindTensorMemoryARM" ) );
1765 vkGetDeviceTensorMemoryRequirementsARM =
1766 PFN_vkGetDeviceTensorMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDeviceTensorMemoryRequirementsARM" ) );
1767 vkCmdCopyTensorARM = PFN_vkCmdCopyTensorARM( vkGetDeviceProcAddr( device, "vkCmdCopyTensorARM" ) );
1768 vkGetTensorOpaqueCaptureDescriptorDataARM =
1769 PFN_vkGetTensorOpaqueCaptureDescriptorDataARM( vkGetDeviceProcAddr( device, "vkGetTensorOpaqueCaptureDescriptorDataARM" ) );
1770 vkGetTensorViewOpaqueCaptureDescriptorDataARM =
1771 PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM( vkGetDeviceProcAddr( device, "vkGetTensorViewOpaqueCaptureDescriptorDataARM" ) );
1772
1773 //=== VK_EXT_shader_module_identifier ===
1774 vkGetShaderModuleIdentifierEXT = PFN_vkGetShaderModuleIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleIdentifierEXT" ) );
1775 vkGetShaderModuleCreateInfoIdentifierEXT =
1776 PFN_vkGetShaderModuleCreateInfoIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleCreateInfoIdentifierEXT" ) );
1777
1778 //=== VK_NV_optical_flow ===
1779 vkCreateOpticalFlowSessionNV = PFN_vkCreateOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkCreateOpticalFlowSessionNV" ) );
1780 vkDestroyOpticalFlowSessionNV = PFN_vkDestroyOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkDestroyOpticalFlowSessionNV" ) );
1781 vkBindOpticalFlowSessionImageNV = PFN_vkBindOpticalFlowSessionImageNV( vkGetDeviceProcAddr( device, "vkBindOpticalFlowSessionImageNV" ) );
1782 vkCmdOpticalFlowExecuteNV = PFN_vkCmdOpticalFlowExecuteNV( vkGetDeviceProcAddr( device, "vkCmdOpticalFlowExecuteNV" ) );
1783
1784 //=== VK_KHR_maintenance5 ===
1785 vkCmdBindIndexBuffer2KHR = PFN_vkCmdBindIndexBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2KHR" ) );
1786 if ( !vkCmdBindIndexBuffer2 )
1787 vkCmdBindIndexBuffer2 = vkCmdBindIndexBuffer2KHR;
1788 vkGetRenderingAreaGranularityKHR = PFN_vkGetRenderingAreaGranularityKHR( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularityKHR" ) );
1789 if ( !vkGetRenderingAreaGranularity )
1790 vkGetRenderingAreaGranularity = vkGetRenderingAreaGranularityKHR;
1791 vkGetDeviceImageSubresourceLayoutKHR =
1792 PFN_vkGetDeviceImageSubresourceLayoutKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayoutKHR" ) );
1793 if ( !vkGetDeviceImageSubresourceLayout )
1794 vkGetDeviceImageSubresourceLayout = vkGetDeviceImageSubresourceLayoutKHR;
1795 vkGetImageSubresourceLayout2KHR = PFN_vkGetImageSubresourceLayout2KHR( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2KHR" ) );
1796 if ( !vkGetImageSubresourceLayout2 )
1797 vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2KHR;
1798
1799 //=== VK_AMD_anti_lag ===
1800 vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetDeviceProcAddr( device, "vkAntiLagUpdateAMD" ) );
1801
1802 //=== VK_KHR_present_wait2 ===
1803 vkWaitForPresent2KHR = PFN_vkWaitForPresent2KHR( vkGetDeviceProcAddr( device, "vkWaitForPresent2KHR" ) );
1804
1805 //=== VK_EXT_shader_object ===
1806 vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) );
1807 vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) );
1808 vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) );
1809 vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) );
1810 vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampRangeEXT" ) );
1811
1812 //=== VK_KHR_pipeline_binary ===
1813 vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetDeviceProcAddr( device, "vkCreatePipelineBinariesKHR" ) );
1814 vkDestroyPipelineBinaryKHR = PFN_vkDestroyPipelineBinaryKHR( vkGetDeviceProcAddr( device, "vkDestroyPipelineBinaryKHR" ) );
1815 vkGetPipelineKeyKHR = PFN_vkGetPipelineKeyKHR( vkGetDeviceProcAddr( device, "vkGetPipelineKeyKHR" ) );
1816 vkGetPipelineBinaryDataKHR = PFN_vkGetPipelineBinaryDataKHR( vkGetDeviceProcAddr( device, "vkGetPipelineBinaryDataKHR" ) );
1817 vkReleaseCapturedPipelineDataKHR = PFN_vkReleaseCapturedPipelineDataKHR( vkGetDeviceProcAddr( device, "vkReleaseCapturedPipelineDataKHR" ) );
1818
1819 //=== VK_QCOM_tile_properties ===
1820 vkGetFramebufferTilePropertiesQCOM = PFN_vkGetFramebufferTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetFramebufferTilePropertiesQCOM" ) );
1821 vkGetDynamicRenderingTilePropertiesQCOM =
1822 PFN_vkGetDynamicRenderingTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetDynamicRenderingTilePropertiesQCOM" ) );
1823
1824 //=== VK_KHR_swapchain_maintenance1 ===
1825 vkReleaseSwapchainImagesKHR = PFN_vkReleaseSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesKHR" ) );
1826
1827 //=== VK_NV_cooperative_vector ===
1828 vkConvertCooperativeVectorMatrixNV = PFN_vkConvertCooperativeVectorMatrixNV( vkGetDeviceProcAddr( device, "vkConvertCooperativeVectorMatrixNV" ) );
1829 vkCmdConvertCooperativeVectorMatrixNV =
1830 PFN_vkCmdConvertCooperativeVectorMatrixNV( vkGetDeviceProcAddr( device, "vkCmdConvertCooperativeVectorMatrixNV" ) );
1831
1832 //=== VK_NV_low_latency2 ===
1833 vkSetLatencySleepModeNV = PFN_vkSetLatencySleepModeNV( vkGetDeviceProcAddr( device, "vkSetLatencySleepModeNV" ) );
1834 vkLatencySleepNV = PFN_vkLatencySleepNV( vkGetDeviceProcAddr( device, "vkLatencySleepNV" ) );
1835 vkSetLatencyMarkerNV = PFN_vkSetLatencyMarkerNV( vkGetDeviceProcAddr( device, "vkSetLatencyMarkerNV" ) );
1836 vkGetLatencyTimingsNV = PFN_vkGetLatencyTimingsNV( vkGetDeviceProcAddr( device, "vkGetLatencyTimingsNV" ) );
1837 vkQueueNotifyOutOfBandNV = PFN_vkQueueNotifyOutOfBandNV( vkGetDeviceProcAddr( device, "vkQueueNotifyOutOfBandNV" ) );
1838
1839 //=== VK_ARM_data_graph ===
1840 vkCreateDataGraphPipelinesARM = PFN_vkCreateDataGraphPipelinesARM( vkGetDeviceProcAddr( device, "vkCreateDataGraphPipelinesARM" ) );
1841 vkCreateDataGraphPipelineSessionARM = PFN_vkCreateDataGraphPipelineSessionARM( vkGetDeviceProcAddr( device, "vkCreateDataGraphPipelineSessionARM" ) );
1842 vkGetDataGraphPipelineSessionBindPointRequirementsARM =
1843 PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineSessionBindPointRequirementsARM" ) );
1844 vkGetDataGraphPipelineSessionMemoryRequirementsARM =
1845 PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineSessionMemoryRequirementsARM" ) );
1846 vkBindDataGraphPipelineSessionMemoryARM =
1847 PFN_vkBindDataGraphPipelineSessionMemoryARM( vkGetDeviceProcAddr( device, "vkBindDataGraphPipelineSessionMemoryARM" ) );
1848 vkDestroyDataGraphPipelineSessionARM =
1849 PFN_vkDestroyDataGraphPipelineSessionARM( vkGetDeviceProcAddr( device, "vkDestroyDataGraphPipelineSessionARM" ) );
1850 vkCmdDispatchDataGraphARM = PFN_vkCmdDispatchDataGraphARM( vkGetDeviceProcAddr( device, "vkCmdDispatchDataGraphARM" ) );
1851 vkGetDataGraphPipelineAvailablePropertiesARM =
1852 PFN_vkGetDataGraphPipelineAvailablePropertiesARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineAvailablePropertiesARM" ) );
1853 vkGetDataGraphPipelinePropertiesARM = PFN_vkGetDataGraphPipelinePropertiesARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelinePropertiesARM" ) );
1854
1855 //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
1856 vkCmdSetAttachmentFeedbackLoopEnableEXT =
1857 PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAttachmentFeedbackLoopEnableEXT" ) );
1858
1859 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
1860 //=== VK_QNX_external_memory_screen_buffer ===
1861 vkGetScreenBufferPropertiesQNX = PFN_vkGetScreenBufferPropertiesQNX( vkGetDeviceProcAddr( device, "vkGetScreenBufferPropertiesQNX" ) );
1862 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
1863
1864 //=== VK_KHR_line_rasterization ===
1865 vkCmdSetLineStippleKHR = PFN_vkCmdSetLineStippleKHR( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleKHR" ) );
1866 if ( !vkCmdSetLineStipple )
1867 vkCmdSetLineStipple = vkCmdSetLineStippleKHR;
1868
1869 //=== VK_KHR_calibrated_timestamps ===
1870 vkGetCalibratedTimestampsKHR = PFN_vkGetCalibratedTimestampsKHR( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsKHR" ) );
1871
1872 //=== VK_KHR_maintenance6 ===
1873 vkCmdBindDescriptorSets2KHR = PFN_vkCmdBindDescriptorSets2KHR( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2KHR" ) );
1874 if ( !vkCmdBindDescriptorSets2 )
1875 vkCmdBindDescriptorSets2 = vkCmdBindDescriptorSets2KHR;
1876 vkCmdPushConstants2KHR = PFN_vkCmdPushConstants2KHR( vkGetDeviceProcAddr( device, "vkCmdPushConstants2KHR" ) );
1877 if ( !vkCmdPushConstants2 )
1878 vkCmdPushConstants2 = vkCmdPushConstants2KHR;
1879 vkCmdPushDescriptorSet2KHR = PFN_vkCmdPushDescriptorSet2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2KHR" ) );
1880 if ( !vkCmdPushDescriptorSet2 )
1881 vkCmdPushDescriptorSet2 = vkCmdPushDescriptorSet2KHR;
1882 vkCmdPushDescriptorSetWithTemplate2KHR =
1883 PFN_vkCmdPushDescriptorSetWithTemplate2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2KHR" ) );
1884 if ( !vkCmdPushDescriptorSetWithTemplate2 )
1885 vkCmdPushDescriptorSetWithTemplate2 = vkCmdPushDescriptorSetWithTemplate2KHR;
1886 vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsets2EXT" ) );
1887 vkCmdBindDescriptorBufferEmbeddedSamplers2EXT =
1888 PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) );
1889
1890 //=== VK_QCOM_tile_memory_heap ===
1891 vkCmdBindTileMemoryQCOM = PFN_vkCmdBindTileMemoryQCOM( vkGetDeviceProcAddr( device, "vkCmdBindTileMemoryQCOM" ) );
1892
1893 //=== VK_KHR_copy_memory_indirect ===
1894 vkCmdCopyMemoryIndirectKHR = PFN_vkCmdCopyMemoryIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectKHR" ) );
1895 vkCmdCopyMemoryToImageIndirectKHR = PFN_vkCmdCopyMemoryToImageIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectKHR" ) );
1896
1897 //=== VK_EXT_memory_decompression ===
1898 vkCmdDecompressMemoryEXT = PFN_vkCmdDecompressMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryEXT" ) );
1899 vkCmdDecompressMemoryIndirectCountEXT =
1900 PFN_vkCmdDecompressMemoryIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountEXT" ) );
1901
1902 //=== VK_NV_external_compute_queue ===
1903 vkCreateExternalComputeQueueNV = PFN_vkCreateExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkCreateExternalComputeQueueNV" ) );
1904 vkDestroyExternalComputeQueueNV = PFN_vkDestroyExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkDestroyExternalComputeQueueNV" ) );
1905 vkGetExternalComputeQueueDataNV = PFN_vkGetExternalComputeQueueDataNV( vkGetDeviceProcAddr( device, "vkGetExternalComputeQueueDataNV" ) );
1906
1907 //=== VK_NV_cluster_acceleration_structure ===
1908 vkGetClusterAccelerationStructureBuildSizesNV =
1909 PFN_vkGetClusterAccelerationStructureBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetClusterAccelerationStructureBuildSizesNV" ) );
1910 vkCmdBuildClusterAccelerationStructureIndirectNV =
1911 PFN_vkCmdBuildClusterAccelerationStructureIndirectNV( vkGetDeviceProcAddr( device, "vkCmdBuildClusterAccelerationStructureIndirectNV" ) );
1912
1913 //=== VK_NV_partitioned_acceleration_structure ===
1914 vkGetPartitionedAccelerationStructuresBuildSizesNV =
1915 PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetPartitionedAccelerationStructuresBuildSizesNV" ) );
1916 vkCmdBuildPartitionedAccelerationStructuresNV =
1917 PFN_vkCmdBuildPartitionedAccelerationStructuresNV( vkGetDeviceProcAddr( device, "vkCmdBuildPartitionedAccelerationStructuresNV" ) );
1918
1919 //=== VK_EXT_device_generated_commands ===
1920 vkGetGeneratedCommandsMemoryRequirementsEXT =
1921 PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) );
1922 vkCmdPreprocessGeneratedCommandsEXT = PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsEXT" ) );
1923 vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsEXT" ) );
1924 vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutEXT" ) );
1925 vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutEXT" ) );
1926 vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectExecutionSetEXT" ) );
1927 vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectExecutionSetEXT" ) );
1928 vkUpdateIndirectExecutionSetPipelineEXT =
1929 PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetPipelineEXT" ) );
1930 vkUpdateIndirectExecutionSetShaderEXT =
1931 PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetShaderEXT" ) );
1932
1933 # if defined( VK_USE_PLATFORM_OHOS )
1934 //=== VK_OHOS_native_buffer ===
1935 vkGetSwapchainGrallocUsageOHOS = PFN_vkGetSwapchainGrallocUsageOHOS( vkGetDeviceProcAddr( device, "vkGetSwapchainGrallocUsageOHOS" ) );
1936 vkAcquireImageOHOS = PFN_vkAcquireImageOHOS( vkGetDeviceProcAddr( device, "vkAcquireImageOHOS" ) );
1937 vkQueueSignalReleaseImageOHOS = PFN_vkQueueSignalReleaseImageOHOS( vkGetDeviceProcAddr( device, "vkQueueSignalReleaseImageOHOS" ) );
1938 # endif /*VK_USE_PLATFORM_OHOS*/
1939
1940 # if defined( VK_USE_PLATFORM_METAL_EXT )
1941 //=== VK_EXT_external_memory_metal ===
1942 vkGetMemoryMetalHandleEXT = PFN_vkGetMemoryMetalHandleEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandleEXT" ) );
1943 vkGetMemoryMetalHandlePropertiesEXT = PFN_vkGetMemoryMetalHandlePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandlePropertiesEXT" ) );
1944 # endif /*VK_USE_PLATFORM_METAL_EXT*/
1945
1946 //=== VK_EXT_fragment_density_map_offset ===
1947 vkCmdEndRendering2EXT = PFN_vkCmdEndRendering2EXT( vkGetDeviceProcAddr( device, "vkCmdEndRendering2EXT" ) );
1948 if ( !vkCmdEndRendering2KHR )
1949 vkCmdEndRendering2KHR = vkCmdEndRendering2EXT;
1950
1951 //=== VK_EXT_custom_resolve ===
1952 vkCmdBeginCustomResolveEXT = PFN_vkCmdBeginCustomResolveEXT( vkGetDeviceProcAddr( device, "vkCmdBeginCustomResolveEXT" ) );
1953
1954 //=== VK_KHR_maintenance10 ===
1955 vkCmdEndRendering2KHR = PFN_vkCmdEndRendering2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRendering2KHR" ) );
1956 }
1957
1958 public:
1959 //=== VK_VERSION_1_0 ===
1960 PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
1961 PFN_vkDestroyDevice vkDestroyDevice = 0;
1962 PFN_vkGetDeviceQueue vkGetDeviceQueue = 0;
1963 PFN_vkQueueSubmit vkQueueSubmit = 0;
1964 PFN_vkQueueWaitIdle vkQueueWaitIdle = 0;
1965 PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0;
1966 PFN_vkAllocateMemory vkAllocateMemory = 0;
1967 PFN_vkFreeMemory vkFreeMemory = 0;
1968 PFN_vkMapMemory vkMapMemory = 0;
1969 PFN_vkUnmapMemory vkUnmapMemory = 0;
1970 PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0;
1971 PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0;
1972 PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0;
1973 PFN_vkBindBufferMemory vkBindBufferMemory = 0;
1974 PFN_vkBindImageMemory vkBindImageMemory = 0;
1975 PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0;
1976 PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0;
1977 PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0;
1978 PFN_vkQueueBindSparse vkQueueBindSparse = 0;
1979 PFN_vkCreateFence vkCreateFence = 0;
1980 PFN_vkDestroyFence vkDestroyFence = 0;
1981 PFN_vkResetFences vkResetFences = 0;
1982 PFN_vkGetFenceStatus vkGetFenceStatus = 0;
1983 PFN_vkWaitForFences vkWaitForFences = 0;
1984 PFN_vkCreateSemaphore vkCreateSemaphore = 0;
1985 PFN_vkDestroySemaphore vkDestroySemaphore = 0;
1986 PFN_vkCreateQueryPool vkCreateQueryPool = 0;
1987 PFN_vkDestroyQueryPool vkDestroyQueryPool = 0;
1988 PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0;
1989 PFN_vkCreateBuffer vkCreateBuffer = 0;
1990 PFN_vkDestroyBuffer vkDestroyBuffer = 0;
1991 PFN_vkCreateImage vkCreateImage = 0;
1992 PFN_vkDestroyImage vkDestroyImage = 0;
1993 PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0;
1994 PFN_vkCreateImageView vkCreateImageView = 0;
1995 PFN_vkDestroyImageView vkDestroyImageView = 0;
1996 PFN_vkCreateCommandPool vkCreateCommandPool = 0;
1997 PFN_vkDestroyCommandPool vkDestroyCommandPool = 0;
1998 PFN_vkResetCommandPool vkResetCommandPool = 0;
1999 PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0;
2000 PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0;
2001 PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0;
2002 PFN_vkEndCommandBuffer vkEndCommandBuffer = 0;
2003 PFN_vkResetCommandBuffer vkResetCommandBuffer = 0;
2004 PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0;
2005 PFN_vkCmdCopyImage vkCmdCopyImage = 0;
2006 PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0;
2007 PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0;
2008 PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0;
2009 PFN_vkCmdFillBuffer vkCmdFillBuffer = 0;
2010 PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0;
2011 PFN_vkCmdBeginQuery vkCmdBeginQuery = 0;
2012 PFN_vkCmdEndQuery vkCmdEndQuery = 0;
2013 PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0;
2014 PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0;
2015 PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0;
2016 PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0;
2017 PFN_vkCreateEvent vkCreateEvent = 0;
2018 PFN_vkDestroyEvent vkDestroyEvent = 0;
2019 PFN_vkGetEventStatus vkGetEventStatus = 0;
2020 PFN_vkSetEvent vkSetEvent = 0;
2021 PFN_vkResetEvent vkResetEvent = 0;
2022 PFN_vkCreateBufferView vkCreateBufferView = 0;
2023 PFN_vkDestroyBufferView vkDestroyBufferView = 0;
2024 PFN_vkCreateShaderModule vkCreateShaderModule = 0;
2025 PFN_vkDestroyShaderModule vkDestroyShaderModule = 0;
2026 PFN_vkCreatePipelineCache vkCreatePipelineCache = 0;
2027 PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0;
2028 PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0;
2029 PFN_vkMergePipelineCaches vkMergePipelineCaches = 0;
2030 PFN_vkCreateComputePipelines vkCreateComputePipelines = 0;
2031 PFN_vkDestroyPipeline vkDestroyPipeline = 0;
2032 PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0;
2033 PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0;
2034 PFN_vkCreateSampler vkCreateSampler = 0;
2035 PFN_vkDestroySampler vkDestroySampler = 0;
2036 PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0;
2037 PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0;
2038 PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0;
2039 PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0;
2040 PFN_vkResetDescriptorPool vkResetDescriptorPool = 0;
2041 PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0;
2042 PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0;
2043 PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0;
2044 PFN_vkCmdBindPipeline vkCmdBindPipeline = 0;
2045 PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0;
2046 PFN_vkCmdClearColorImage vkCmdClearColorImage = 0;
2047 PFN_vkCmdDispatch vkCmdDispatch = 0;
2048 PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0;
2049 PFN_vkCmdSetEvent vkCmdSetEvent = 0;
2050 PFN_vkCmdResetEvent vkCmdResetEvent = 0;
2051 PFN_vkCmdWaitEvents vkCmdWaitEvents = 0;
2052 PFN_vkCmdPushConstants vkCmdPushConstants = 0;
2053 PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0;
2054 PFN_vkCreateFramebuffer vkCreateFramebuffer = 0;
2055 PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0;
2056 PFN_vkCreateRenderPass vkCreateRenderPass = 0;
2057 PFN_vkDestroyRenderPass vkDestroyRenderPass = 0;
2058 PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0;
2059 PFN_vkCmdSetViewport vkCmdSetViewport = 0;
2060 PFN_vkCmdSetScissor vkCmdSetScissor = 0;
2061 PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0;
2062 PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0;
2063 PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0;
2064 PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0;
2065 PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0;
2066 PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0;
2067 PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0;
2068 PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0;
2069 PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0;
2070 PFN_vkCmdDraw vkCmdDraw = 0;
2071 PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0;
2072 PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0;
2073 PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0;
2074 PFN_vkCmdBlitImage vkCmdBlitImage = 0;
2075 PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0;
2076 PFN_vkCmdClearAttachments vkCmdClearAttachments = 0;
2077 PFN_vkCmdResolveImage vkCmdResolveImage = 0;
2078 PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0;
2079 PFN_vkCmdNextSubpass vkCmdNextSubpass = 0;
2080 PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0;
2081
2082 //=== VK_VERSION_1_1 ===
2083 PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0;
2084 PFN_vkBindImageMemory2 vkBindImageMemory2 = 0;
2085 PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0;
2086 PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0;
2087 PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0;
2088 PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0;
2089 PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0;
2090 PFN_vkTrimCommandPool vkTrimCommandPool = 0;
2091 PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0;
2092 PFN_vkCmdDispatchBase vkCmdDispatchBase = 0;
2093 PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0;
2094 PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0;
2095 PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0;
2096 PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0;
2097 PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0;
2098 PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0;
2099
2100 //=== VK_VERSION_1_2 ===
2101 PFN_vkResetQueryPool vkResetQueryPool = 0;
2102 PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue = 0;
2103 PFN_vkWaitSemaphores vkWaitSemaphores = 0;
2104 PFN_vkSignalSemaphore vkSignalSemaphore = 0;
2105 PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = 0;
2106 PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress = 0;
2107 PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0;
2108 PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount = 0;
2109 PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount = 0;
2110 PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0;
2111 PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2 = 0;
2112 PFN_vkCmdNextSubpass2 vkCmdNextSubpass2 = 0;
2113 PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2 = 0;
2114
2115 //=== VK_VERSION_1_3 ===
2116 PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot = 0;
2117 PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot = 0;
2118 PFN_vkSetPrivateData vkSetPrivateData = 0;
2119 PFN_vkGetPrivateData vkGetPrivateData = 0;
2120 PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2 = 0;
2121 PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2 = 0;
2122 PFN_vkQueueSubmit2 vkQueueSubmit2 = 0;
2123 PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2 = 0;
2124 PFN_vkCmdCopyImage2 vkCmdCopyImage2 = 0;
2125 PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2 = 0;
2126 PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2 = 0;
2127 PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements = 0;
2128 PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements = 0;
2129 PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements = 0;
2130 PFN_vkCmdSetEvent2 vkCmdSetEvent2 = 0;
2131 PFN_vkCmdResetEvent2 vkCmdResetEvent2 = 0;
2132 PFN_vkCmdWaitEvents2 vkCmdWaitEvents2 = 0;
2133 PFN_vkCmdBlitImage2 vkCmdBlitImage2 = 0;
2134 PFN_vkCmdResolveImage2 vkCmdResolveImage2 = 0;
2135 PFN_vkCmdBeginRendering vkCmdBeginRendering = 0;
2136 PFN_vkCmdEndRendering vkCmdEndRendering = 0;
2137 PFN_vkCmdSetCullMode vkCmdSetCullMode = 0;
2138 PFN_vkCmdSetFrontFace vkCmdSetFrontFace = 0;
2139 PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology = 0;
2140 PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount = 0;
2141 PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount = 0;
2142 PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2 = 0;
2143 PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable = 0;
2144 PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable = 0;
2145 PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp = 0;
2146 PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable = 0;
2147 PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable = 0;
2148 PFN_vkCmdSetStencilOp vkCmdSetStencilOp = 0;
2149 PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable = 0;
2150 PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable = 0;
2151 PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable = 0;
2152
2153 //=== VK_VERSION_1_4 ===
2154 PFN_vkMapMemory2 vkMapMemory2 = 0;
2155 PFN_vkUnmapMemory2 vkUnmapMemory2 = 0;
2156 PFN_vkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayout = 0;
2157 PFN_vkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2 = 0;
2158 PFN_vkCopyMemoryToImage vkCopyMemoryToImage = 0;
2159 PFN_vkCopyImageToMemory vkCopyImageToMemory = 0;
2160 PFN_vkCopyImageToImage vkCopyImageToImage = 0;
2161 PFN_vkTransitionImageLayout vkTransitionImageLayout = 0;
2162 PFN_vkCmdPushDescriptorSet vkCmdPushDescriptorSet = 0;
2163 PFN_vkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplate = 0;
2164 PFN_vkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2 = 0;
2165 PFN_vkCmdPushConstants2 vkCmdPushConstants2 = 0;
2166 PFN_vkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2 = 0;
2167 PFN_vkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2 = 0;
2168 PFN_vkCmdSetLineStipple vkCmdSetLineStipple = 0;
2169 PFN_vkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2 = 0;
2170 PFN_vkGetRenderingAreaGranularity vkGetRenderingAreaGranularity = 0;
2171 PFN_vkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocations = 0;
2172 PFN_vkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndices = 0;
2173
2174 //=== VK_KHR_swapchain ===
2175 PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0;
2176 PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0;
2177 PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0;
2178 PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0;
2179 PFN_vkQueuePresentKHR vkQueuePresentKHR = 0;
2180 PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0;
2181 PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0;
2182 PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0;
2183
2184 //=== VK_KHR_display_swapchain ===
2185 PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0;
2186
2187 //=== VK_EXT_debug_marker ===
2188 PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0;
2189 PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0;
2190 PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0;
2191 PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0;
2192 PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0;
2193
2194 //=== VK_KHR_video_queue ===
2195 PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR = 0;
2196 PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR = 0;
2197 PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0;
2198 PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR = 0;
2199 PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR = 0;
2200 PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR = 0;
2201 PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR = 0;
2202 PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR = 0;
2203 PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR = 0;
2204 PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR = 0;
2205
2206 //=== VK_KHR_video_decode_queue ===
2207 PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0;
2208
2209 //=== VK_EXT_transform_feedback ===
2210 PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0;
2211 PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0;
2212 PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0;
2213 PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0;
2214 PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0;
2215 PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0;
2216
2217 //=== VK_NVX_binary_import ===
2218 PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX = 0;
2219 PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX = 0;
2220 PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX = 0;
2221 PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0;
2222 PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0;
2223
2224 //=== VK_NVX_image_view_handle ===
2225 PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0;
2226 PFN_vkGetImageViewHandle64NVX vkGetImageViewHandle64NVX = 0;
2227 PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0;
2228
2229 //=== VK_AMD_draw_indirect_count ===
2230 PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0;
2231 PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0;
2232
2233 //=== VK_AMD_shader_info ===
2234 PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0;
2235
2236 //=== VK_KHR_dynamic_rendering ===
2237 PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = 0;
2238 PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR = 0;
2239
2240 # if defined( VK_USE_PLATFORM_WIN32_KHR )
2241 //=== VK_NV_external_memory_win32 ===
2242 PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0;
2243 # else
2244 PFN_dummy vkGetMemoryWin32HandleNV_placeholder = 0;
2245 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
2246
2247 //=== VK_KHR_device_group ===
2248 PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0;
2249 PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0;
2250 PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0;
2251
2252 //=== VK_KHR_maintenance1 ===
2253 PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0;
2254
2255 # if defined( VK_USE_PLATFORM_WIN32_KHR )
2256 //=== VK_KHR_external_memory_win32 ===
2257 PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0;
2258 PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0;
2259 # else
2260 PFN_dummy vkGetMemoryWin32HandleKHR_placeholder = 0;
2261 PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder = 0;
2262 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
2263
2264 //=== VK_KHR_external_memory_fd ===
2265 PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0;
2266 PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0;
2267
2268 # if defined( VK_USE_PLATFORM_WIN32_KHR )
2269 //=== VK_KHR_external_semaphore_win32 ===
2270 PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0;
2271 PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0;
2272 # else
2273 PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder = 0;
2274 PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder = 0;
2275 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
2276
2277 //=== VK_KHR_external_semaphore_fd ===
2278 PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0;
2279 PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0;
2280
2281 //=== VK_KHR_push_descriptor ===
2282 PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0;
2283 PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0;
2284
2285 //=== VK_EXT_conditional_rendering ===
2286 PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0;
2287 PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0;
2288
2289 //=== VK_KHR_descriptor_update_template ===
2290 PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0;
2291 PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0;
2292 PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0;
2293
2294 //=== VK_NV_clip_space_w_scaling ===
2295 PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0;
2296
2297 //=== VK_EXT_display_control ===
2298 PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0;
2299 PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0;
2300 PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0;
2301 PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0;
2302
2303 //=== VK_GOOGLE_display_timing ===
2304 PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0;
2305 PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0;
2306
2307 //=== VK_EXT_discard_rectangles ===
2308 PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0;
2309 PFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT = 0;
2310 PFN_vkCmdSetDiscardRectangleModeEXT vkCmdSetDiscardRectangleModeEXT = 0;
2311
2312 //=== VK_EXT_hdr_metadata ===
2313 PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0;
2314
2315 //=== VK_KHR_create_renderpass2 ===
2316 PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0;
2317 PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0;
2318 PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0;
2319 PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0;
2320
2321 //=== VK_KHR_shared_presentable_image ===
2322 PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0;
2323
2324 # if defined( VK_USE_PLATFORM_WIN32_KHR )
2325 //=== VK_KHR_external_fence_win32 ===
2326 PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0;
2327 PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0;
2328 # else
2329 PFN_dummy vkImportFenceWin32HandleKHR_placeholder = 0;
2330 PFN_dummy vkGetFenceWin32HandleKHR_placeholder = 0;
2331 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
2332
2333 //=== VK_KHR_external_fence_fd ===
2334 PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0;
2335 PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0;
2336
2337 //=== VK_KHR_performance_query ===
2338 PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0;
2339 PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0;
2340
2341 //=== VK_EXT_debug_utils ===
2342 PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0;
2343 PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0;
2344 PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0;
2345 PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0;
2346 PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0;
2347 PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0;
2348 PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0;
2349 PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0;
2350
2351 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
2352 //=== VK_ANDROID_external_memory_android_hardware_buffer ===
2353 PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0;
2354 PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0;
2355 # else
2356 PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder = 0;
2357 PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder = 0;
2358 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
2359
2360 # if defined( VK_ENABLE_BETA_EXTENSIONS )
2361 //=== VK_AMDX_shader_enqueue ===
2362 PFN_vkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDX = 0;
2363 PFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX = 0;
2364 PFN_vkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDX = 0;
2365 PFN_vkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDX = 0;
2366 PFN_vkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDX = 0;
2367 PFN_vkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDX = 0;
2368 PFN_vkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDX = 0;
2369 # else
2370 PFN_dummy vkCreateExecutionGraphPipelinesAMDX_placeholder = 0;
2371 PFN_dummy vkGetExecutionGraphPipelineScratchSizeAMDX_placeholder = 0;
2372 PFN_dummy vkGetExecutionGraphPipelineNodeIndexAMDX_placeholder = 0;
2373 PFN_dummy vkCmdInitializeGraphScratchMemoryAMDX_placeholder = 0;
2374 PFN_dummy vkCmdDispatchGraphAMDX_placeholder = 0;
2375 PFN_dummy vkCmdDispatchGraphIndirectAMDX_placeholder = 0;
2376 PFN_dummy vkCmdDispatchGraphIndirectCountAMDX_placeholder = 0;
2377 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
2378
2379 //=== VK_EXT_sample_locations ===
2380 PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0;
2381
2382 //=== VK_KHR_get_memory_requirements2 ===
2383 PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0;
2384 PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0;
2385 PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0;
2386
2387 //=== VK_KHR_acceleration_structure ===
2388 PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = 0;
2389 PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = 0;
2390 PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = 0;
2391 PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0;
2392 PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR = 0;
2393 PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR = 0;
2394 PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR = 0;
2395 PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR = 0;
2396 PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0;
2397 PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR = 0;
2398 PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0;
2399 PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0;
2400 PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = 0;
2401 PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0;
2402 PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0;
2403 PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = 0;
2404
2405 //=== VK_KHR_ray_tracing_pipeline ===
2406 PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = 0;
2407 PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = 0;
2408 PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = 0;
2409 PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0;
2410 PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR = 0;
2411 PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR = 0;
2412 PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR = 0;
2413
2414 //=== VK_KHR_sampler_ycbcr_conversion ===
2415 PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0;
2416 PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0;
2417
2418 //=== VK_KHR_bind_memory2 ===
2419 PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0;
2420 PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0;
2421
2422 //=== VK_EXT_image_drm_format_modifier ===
2423 PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0;
2424
2425 //=== VK_EXT_validation_cache ===
2426 PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0;
2427 PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0;
2428 PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0;
2429 PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0;
2430
2431 //=== VK_NV_shading_rate_image ===
2432 PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0;
2433 PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0;
2434 PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0;
2435
2436 //=== VK_NV_ray_tracing ===
2437 PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0;
2438 PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0;
2439 PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0;
2440 PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0;
2441 PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0;
2442 PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0;
2443 PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0;
2444 PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0;
2445 PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0;
2446 PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0;
2447 PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0;
2448 PFN_vkCompileDeferredNV vkCompileDeferredNV = 0;
2449
2450 //=== VK_KHR_maintenance3 ===
2451 PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0;
2452
2453 //=== VK_KHR_draw_indirect_count ===
2454 PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0;
2455 PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0;
2456
2457 //=== VK_EXT_external_memory_host ===
2458 PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0;
2459
2460 //=== VK_AMD_buffer_marker ===
2461 PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0;
2462 PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD = 0;
2463
2464 //=== VK_EXT_calibrated_timestamps ===
2465 PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0;
2466
2467 //=== VK_NV_mesh_shader ===
2468 PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0;
2469 PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0;
2470 PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0;
2471
2472 //=== VK_NV_scissor_exclusive ===
2473 PFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV = 0;
2474 PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0;
2475
2476 //=== VK_NV_device_diagnostic_checkpoints ===
2477 PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0;
2478 PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0;
2479 PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0;
2480
2481 //=== VK_KHR_timeline_semaphore ===
2482 PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0;
2483 PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR = 0;
2484 PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR = 0;
2485
2486 //=== VK_INTEL_performance_query ===
2487 PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0;
2488 PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0;
2489 PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0;
2490 PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0;
2491 PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0;
2492 PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0;
2493 PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0;
2494 PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0;
2495 PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0;
2496
2497 //=== VK_AMD_display_native_hdr ===
2498 PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0;
2499
2500 //=== VK_KHR_fragment_shading_rate ===
2501 PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0;
2502
2503 //=== VK_KHR_dynamic_rendering_local_read ===
2504 PFN_vkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHR = 0;
2505 PFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR = 0;
2506
2507 //=== VK_EXT_buffer_device_address ===
2508 PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0;
2509
2510 //=== VK_KHR_present_wait ===
2511 PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0;
2512
2513 # if defined( VK_USE_PLATFORM_WIN32_KHR )
2514 //=== VK_EXT_full_screen_exclusive ===
2515 PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0;
2516 PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0;
2517 PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0;
2518 # else
2519 PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder = 0;
2520 PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder = 0;
2521 PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder = 0;
2522 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
2523
2524 //=== VK_KHR_buffer_device_address ===
2525 PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = 0;
2526 PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR = 0;
2527 PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0;
2528
2529 //=== VK_EXT_line_rasterization ===
2530 PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0;
2531
2532 //=== VK_EXT_host_query_reset ===
2533 PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0;
2534
2535 //=== VK_EXT_extended_dynamic_state ===
2536 PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT = 0;
2537 PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT = 0;
2538 PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT = 0;
2539 PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT = 0;
2540 PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT = 0;
2541 PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT = 0;
2542 PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT = 0;
2543 PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT = 0;
2544 PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT = 0;
2545 PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0;
2546 PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT = 0;
2547 PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT = 0;
2548
2549 //=== VK_KHR_deferred_host_operations ===
2550 PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR = 0;
2551 PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR = 0;
2552 PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0;
2553 PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR = 0;
2554 PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR = 0;
2555
2556 //=== VK_KHR_pipeline_executable_properties ===
2557 PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0;
2558 PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0;
2559 PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0;
2560
2561 //=== VK_EXT_host_image_copy ===
2562 PFN_vkCopyMemoryToImageEXT vkCopyMemoryToImageEXT = 0;
2563 PFN_vkCopyImageToMemoryEXT vkCopyImageToMemoryEXT = 0;
2564 PFN_vkCopyImageToImageEXT vkCopyImageToImageEXT = 0;
2565 PFN_vkTransitionImageLayoutEXT vkTransitionImageLayoutEXT = 0;
2566 PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT = 0;
2567
2568 //=== VK_KHR_map_memory2 ===
2569 PFN_vkMapMemory2KHR vkMapMemory2KHR = 0;
2570 PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR = 0;
2571
2572 //=== VK_EXT_swapchain_maintenance1 ===
2573 PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT = 0;
2574
2575 //=== VK_NV_device_generated_commands ===
2576 PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0;
2577 PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV = 0;
2578 PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV = 0;
2579 PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV = 0;
2580 PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV = 0;
2581 PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV = 0;
2582
2583 //=== VK_EXT_depth_bias_control ===
2584 PFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT = 0;
2585
2586 //=== VK_EXT_private_data ===
2587 PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT = 0;
2588 PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0;
2589 PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT = 0;
2590 PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT = 0;
2591
2592 //=== VK_KHR_video_encode_queue ===
2593 PFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR = 0;
2594 PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0;
2595
2596 # if defined( VK_ENABLE_BETA_EXTENSIONS )
2597 //=== VK_NV_cuda_kernel_launch ===
2598 PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV = 0;
2599 PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV = 0;
2600 PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV = 0;
2601 PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV = 0;
2602 PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV = 0;
2603 PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV = 0;
2604 # else
2605 PFN_dummy vkCreateCudaModuleNV_placeholder = 0;
2606 PFN_dummy vkGetCudaModuleCacheNV_placeholder = 0;
2607 PFN_dummy vkCreateCudaFunctionNV_placeholder = 0;
2608 PFN_dummy vkDestroyCudaModuleNV_placeholder = 0;
2609 PFN_dummy vkDestroyCudaFunctionNV_placeholder = 0;
2610 PFN_dummy vkCmdCudaLaunchKernelNV_placeholder = 0;
2611 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
2612
2613 //=== VK_QCOM_tile_shading ===
2614 PFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM = 0;
2615 PFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM = 0;
2616 PFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM = 0;
2617
2618 # if defined( VK_USE_PLATFORM_METAL_EXT )
2619 //=== VK_EXT_metal_objects ===
2620 PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0;
2621 # else
2622 PFN_dummy vkExportMetalObjectsEXT_placeholder = 0;
2623 # endif /*VK_USE_PLATFORM_METAL_EXT*/
2624
2625 //=== VK_KHR_synchronization2 ===
2626 PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR = 0;
2627 PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR = 0;
2628 PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR = 0;
2629 PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR = 0;
2630 PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR = 0;
2631 PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR = 0;
2632
2633 //=== VK_EXT_descriptor_buffer ===
2634 PFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXT = 0;
2635 PFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXT = 0;
2636 PFN_vkGetDescriptorEXT vkGetDescriptorEXT = 0;
2637 PFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXT = 0;
2638 PFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXT = 0;
2639 PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 0;
2640 PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT = 0;
2641 PFN_vkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXT = 0;
2642 PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXT = 0;
2643 PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXT = 0;
2644 PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = 0;
2645
2646 //=== VK_NV_fragment_shading_rate_enums ===
2647 PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0;
2648
2649 //=== VK_EXT_mesh_shader ===
2650 PFN_vkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXT = 0;
2651 PFN_vkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXT = 0;
2652 PFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT = 0;
2653
2654 //=== VK_KHR_copy_commands2 ===
2655 PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR = 0;
2656 PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR = 0;
2657 PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0;
2658 PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0;
2659 PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR = 0;
2660 PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR = 0;
2661
2662 //=== VK_EXT_device_fault ===
2663 PFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT = 0;
2664
2665 //=== VK_EXT_vertex_input_dynamic_state ===
2666 PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0;
2667
2668 # if defined( VK_USE_PLATFORM_FUCHSIA )
2669 //=== VK_FUCHSIA_external_memory ===
2670 PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA = 0;
2671 PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0;
2672 # else
2673 PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder = 0;
2674 PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder = 0;
2675 # endif /*VK_USE_PLATFORM_FUCHSIA*/
2676
2677 # if defined( VK_USE_PLATFORM_FUCHSIA )
2678 //=== VK_FUCHSIA_external_semaphore ===
2679 PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0;
2680 PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA = 0;
2681 # else
2682 PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder = 0;
2683 PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder = 0;
2684 # endif /*VK_USE_PLATFORM_FUCHSIA*/
2685
2686 # if defined( VK_USE_PLATFORM_FUCHSIA )
2687 //=== VK_FUCHSIA_buffer_collection ===
2688 PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA = 0;
2689 PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA = 0;
2690 PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0;
2691 PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA = 0;
2692 PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA = 0;
2693 # else
2694 PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder = 0;
2695 PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder = 0;
2696 PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder = 0;
2697 PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder = 0;
2698 PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder = 0;
2699 # endif /*VK_USE_PLATFORM_FUCHSIA*/
2700
2701 //=== VK_HUAWEI_subpass_shading ===
2702 PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0;
2703 PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI = 0;
2704
2705 //=== VK_HUAWEI_invocation_mask ===
2706 PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0;
2707
2708 //=== VK_NV_external_memory_rdma ===
2709 PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0;
2710
2711 //=== VK_EXT_pipeline_properties ===
2712 PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT = 0;
2713
2714 //=== VK_EXT_extended_dynamic_state2 ===
2715 PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT = 0;
2716 PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0;
2717 PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT = 0;
2718 PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT = 0;
2719 PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT = 0;
2720
2721 //=== VK_EXT_color_write_enable ===
2722 PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0;
2723
2724 //=== VK_KHR_ray_tracing_maintenance1 ===
2725 PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR = 0;
2726
2727 //=== VK_EXT_multi_draw ===
2728 PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT = 0;
2729 PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0;
2730
2731 //=== VK_EXT_opacity_micromap ===
2732 PFN_vkCreateMicromapEXT vkCreateMicromapEXT = 0;
2733 PFN_vkDestroyMicromapEXT vkDestroyMicromapEXT = 0;
2734 PFN_vkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXT = 0;
2735 PFN_vkBuildMicromapsEXT vkBuildMicromapsEXT = 0;
2736 PFN_vkCopyMicromapEXT vkCopyMicromapEXT = 0;
2737 PFN_vkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXT = 0;
2738 PFN_vkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXT = 0;
2739 PFN_vkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXT = 0;
2740 PFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT = 0;
2741 PFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT = 0;
2742 PFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT = 0;
2743 PFN_vkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXT = 0;
2744 PFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT = 0;
2745 PFN_vkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXT = 0;
2746
2747 //=== VK_HUAWEI_cluster_culling_shader ===
2748 PFN_vkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEI = 0;
2749 PFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI = 0;
2750
2751 //=== VK_EXT_pageable_device_local_memory ===
2752 PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0;
2753
2754 //=== VK_KHR_maintenance4 ===
2755 PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR = 0;
2756 PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR = 0;
2757 PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0;
2758
2759 //=== VK_VALVE_descriptor_set_host_mapping ===
2760 PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE = 0;
2761 PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE = 0;
2762
2763 //=== VK_NV_copy_memory_indirect ===
2764 PFN_vkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNV = 0;
2765 PFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV = 0;
2766
2767 //=== VK_NV_memory_decompression ===
2768 PFN_vkCmdDecompressMemoryNV vkCmdDecompressMemoryNV = 0;
2769 PFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV = 0;
2770
2771 //=== VK_NV_device_generated_commands_compute ===
2772 PFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV = 0;
2773 PFN_vkCmdUpdatePipelineIndirectBufferNV vkCmdUpdatePipelineIndirectBufferNV = 0;
2774 PFN_vkGetPipelineIndirectDeviceAddressNV vkGetPipelineIndirectDeviceAddressNV = 0;
2775
2776 # if defined( VK_USE_PLATFORM_OHOS )
2777 //=== VK_OHOS_external_memory ===
2778 PFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS = 0;
2779 PFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS = 0;
2780 # else
2781 PFN_dummy vkGetNativeBufferPropertiesOHOS_placeholder = 0;
2782 PFN_dummy vkGetMemoryNativeBufferOHOS_placeholder = 0;
2783 # endif /*VK_USE_PLATFORM_OHOS*/
2784
2785 //=== VK_EXT_extended_dynamic_state3 ===
2786 PFN_vkCmdSetDepthClampEnableEXT vkCmdSetDepthClampEnableEXT = 0;
2787 PFN_vkCmdSetPolygonModeEXT vkCmdSetPolygonModeEXT = 0;
2788 PFN_vkCmdSetRasterizationSamplesEXT vkCmdSetRasterizationSamplesEXT = 0;
2789 PFN_vkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXT = 0;
2790 PFN_vkCmdSetAlphaToCoverageEnableEXT vkCmdSetAlphaToCoverageEnableEXT = 0;
2791 PFN_vkCmdSetAlphaToOneEnableEXT vkCmdSetAlphaToOneEnableEXT = 0;
2792 PFN_vkCmdSetLogicOpEnableEXT vkCmdSetLogicOpEnableEXT = 0;
2793 PFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT = 0;
2794 PFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT = 0;
2795 PFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT = 0;
2796 PFN_vkCmdSetTessellationDomainOriginEXT vkCmdSetTessellationDomainOriginEXT = 0;
2797 PFN_vkCmdSetRasterizationStreamEXT vkCmdSetRasterizationStreamEXT = 0;
2798 PFN_vkCmdSetConservativeRasterizationModeEXT vkCmdSetConservativeRasterizationModeEXT = 0;
2799 PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT = 0;
2800 PFN_vkCmdSetDepthClipEnableEXT vkCmdSetDepthClipEnableEXT = 0;
2801 PFN_vkCmdSetSampleLocationsEnableEXT vkCmdSetSampleLocationsEnableEXT = 0;
2802 PFN_vkCmdSetColorBlendAdvancedEXT vkCmdSetColorBlendAdvancedEXT = 0;
2803 PFN_vkCmdSetProvokingVertexModeEXT vkCmdSetProvokingVertexModeEXT = 0;
2804 PFN_vkCmdSetLineRasterizationModeEXT vkCmdSetLineRasterizationModeEXT = 0;
2805 PFN_vkCmdSetLineStippleEnableEXT vkCmdSetLineStippleEnableEXT = 0;
2806 PFN_vkCmdSetDepthClipNegativeOneToOneEXT vkCmdSetDepthClipNegativeOneToOneEXT = 0;
2807 PFN_vkCmdSetViewportWScalingEnableNV vkCmdSetViewportWScalingEnableNV = 0;
2808 PFN_vkCmdSetViewportSwizzleNV vkCmdSetViewportSwizzleNV = 0;
2809 PFN_vkCmdSetCoverageToColorEnableNV vkCmdSetCoverageToColorEnableNV = 0;
2810 PFN_vkCmdSetCoverageToColorLocationNV vkCmdSetCoverageToColorLocationNV = 0;
2811 PFN_vkCmdSetCoverageModulationModeNV vkCmdSetCoverageModulationModeNV = 0;
2812 PFN_vkCmdSetCoverageModulationTableEnableNV vkCmdSetCoverageModulationTableEnableNV = 0;
2813 PFN_vkCmdSetCoverageModulationTableNV vkCmdSetCoverageModulationTableNV = 0;
2814 PFN_vkCmdSetShadingRateImageEnableNV vkCmdSetShadingRateImageEnableNV = 0;
2815 PFN_vkCmdSetRepresentativeFragmentTestEnableNV vkCmdSetRepresentativeFragmentTestEnableNV = 0;
2816 PFN_vkCmdSetCoverageReductionModeNV vkCmdSetCoverageReductionModeNV = 0;
2817
2818 //=== VK_ARM_tensors ===
2819 PFN_vkCreateTensorARM vkCreateTensorARM = 0;
2820 PFN_vkDestroyTensorARM vkDestroyTensorARM = 0;
2821 PFN_vkCreateTensorViewARM vkCreateTensorViewARM = 0;
2822 PFN_vkDestroyTensorViewARM vkDestroyTensorViewARM = 0;
2823 PFN_vkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARM = 0;
2824 PFN_vkBindTensorMemoryARM vkBindTensorMemoryARM = 0;
2825 PFN_vkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARM = 0;
2826 PFN_vkCmdCopyTensorARM vkCmdCopyTensorARM = 0;
2827 PFN_vkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARM = 0;
2828 PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARM = 0;
2829
2830 //=== VK_EXT_shader_module_identifier ===
2831 PFN_vkGetShaderModuleIdentifierEXT vkGetShaderModuleIdentifierEXT = 0;
2832 PFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT = 0;
2833
2834 //=== VK_NV_optical_flow ===
2835 PFN_vkCreateOpticalFlowSessionNV vkCreateOpticalFlowSessionNV = 0;
2836 PFN_vkDestroyOpticalFlowSessionNV vkDestroyOpticalFlowSessionNV = 0;
2837 PFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV = 0;
2838 PFN_vkCmdOpticalFlowExecuteNV vkCmdOpticalFlowExecuteNV = 0;
2839
2840 //=== VK_KHR_maintenance5 ===
2841 PFN_vkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHR = 0;
2842 PFN_vkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHR = 0;
2843 PFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR = 0;
2844 PFN_vkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHR = 0;
2845
2846 //=== VK_AMD_anti_lag ===
2847 PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD = 0;
2848
2849 //=== VK_KHR_present_wait2 ===
2850 PFN_vkWaitForPresent2KHR vkWaitForPresent2KHR = 0;
2851
2852 //=== VK_EXT_shader_object ===
2853 PFN_vkCreateShadersEXT vkCreateShadersEXT = 0;
2854 PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0;
2855 PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0;
2856 PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0;
2857 PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT = 0;
2858
2859 //=== VK_KHR_pipeline_binary ===
2860 PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR = 0;
2861 PFN_vkDestroyPipelineBinaryKHR vkDestroyPipelineBinaryKHR = 0;
2862 PFN_vkGetPipelineKeyKHR vkGetPipelineKeyKHR = 0;
2863 PFN_vkGetPipelineBinaryDataKHR vkGetPipelineBinaryDataKHR = 0;
2864 PFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR = 0;
2865
2866 //=== VK_QCOM_tile_properties ===
2867 PFN_vkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOM = 0;
2868 PFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM = 0;
2869
2870 //=== VK_KHR_swapchain_maintenance1 ===
2871 PFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR = 0;
2872
2873 //=== VK_NV_cooperative_vector ===
2874 PFN_vkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNV = 0;
2875 PFN_vkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNV = 0;
2876
2877 //=== VK_NV_low_latency2 ===
2878 PFN_vkSetLatencySleepModeNV vkSetLatencySleepModeNV = 0;
2879 PFN_vkLatencySleepNV vkLatencySleepNV = 0;
2880 PFN_vkSetLatencyMarkerNV vkSetLatencyMarkerNV = 0;
2881 PFN_vkGetLatencyTimingsNV vkGetLatencyTimingsNV = 0;
2882 PFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV = 0;
2883
2884 //=== VK_ARM_data_graph ===
2885 PFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM = 0;
2886 PFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM = 0;
2887 PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM = 0;
2888 PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM = 0;
2889 PFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM = 0;
2890 PFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM = 0;
2891 PFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM = 0;
2892 PFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM = 0;
2893 PFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM = 0;
2894
2895 //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
2896 PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT = 0;
2897
2898 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
2899 //=== VK_QNX_external_memory_screen_buffer ===
2900 PFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX = 0;
2901 # else
2902 PFN_dummy vkGetScreenBufferPropertiesQNX_placeholder = 0;
2903 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
2904
2905 //=== VK_KHR_line_rasterization ===
2906 PFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR = 0;
2907
2908 //=== VK_KHR_calibrated_timestamps ===
2909 PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR = 0;
2910
2911 //=== VK_KHR_maintenance6 ===
2912 PFN_vkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHR = 0;
2913 PFN_vkCmdPushConstants2KHR vkCmdPushConstants2KHR = 0;
2914 PFN_vkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHR = 0;
2915 PFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR = 0;
2916 PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT = 0;
2917 PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0;
2918
2919 //=== VK_QCOM_tile_memory_heap ===
2920 PFN_vkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOM = 0;
2921
2922 //=== VK_KHR_copy_memory_indirect ===
2923 PFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR = 0;
2924 PFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR = 0;
2925
2926 //=== VK_EXT_memory_decompression ===
2927 PFN_vkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXT = 0;
2928 PFN_vkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXT = 0;
2929
2930 //=== VK_NV_external_compute_queue ===
2931 PFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV = 0;
2932 PFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV = 0;
2933 PFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV = 0;
2934
2935 //=== VK_NV_cluster_acceleration_structure ===
2936 PFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV = 0;
2937 PFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV = 0;
2938
2939 //=== VK_NV_partitioned_acceleration_structure ===
2940 PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV = 0;
2941 PFN_vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV = 0;
2942
2943 //=== VK_EXT_device_generated_commands ===
2944 PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT = 0;
2945 PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT = 0;
2946 PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT = 0;
2947 PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT = 0;
2948 PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT = 0;
2949 PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT = 0;
2950 PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT = 0;
2951 PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT = 0;
2952 PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT = 0;
2953
2954 # if defined( VK_USE_PLATFORM_OHOS )
2955 //=== VK_OHOS_native_buffer ===
2956 PFN_vkGetSwapchainGrallocUsageOHOS vkGetSwapchainGrallocUsageOHOS = 0;
2957 PFN_vkAcquireImageOHOS vkAcquireImageOHOS = 0;
2958 PFN_vkQueueSignalReleaseImageOHOS vkQueueSignalReleaseImageOHOS = 0;
2959 # else
2960 PFN_dummy vkGetSwapchainGrallocUsageOHOS_placeholder = 0;
2961 PFN_dummy vkAcquireImageOHOS_placeholder = 0;
2962 PFN_dummy vkQueueSignalReleaseImageOHOS_placeholder = 0;
2963 # endif /*VK_USE_PLATFORM_OHOS*/
2964
2965 # if defined( VK_USE_PLATFORM_METAL_EXT )
2966 //=== VK_EXT_external_memory_metal ===
2967 PFN_vkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXT = 0;
2968 PFN_vkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXT = 0;
2969 # else
2970 PFN_dummy vkGetMemoryMetalHandleEXT_placeholder = 0;
2971 PFN_dummy vkGetMemoryMetalHandlePropertiesEXT_placeholder = 0;
2972 # endif /*VK_USE_PLATFORM_METAL_EXT*/
2973
2974 //=== VK_EXT_fragment_density_map_offset ===
2975 PFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT = 0;
2976
2977 //=== VK_EXT_custom_resolve ===
2978 PFN_vkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXT = 0;
2979
2980 //=== VK_KHR_maintenance10 ===
2981 PFN_vkCmdEndRendering2KHR vkCmdEndRendering2KHR = 0;
2982 };
2983
2984 } // namespace detail
2985
2986 //========================================
2987 //=== RAII HANDLE forward declarations ===
2988 //========================================
2989
2990 //=== VK_VERSION_1_0 ===
2991 class Instance;
2992 class PhysicalDevice;
2993 class Device;
2994 class Queue;
2995 class DeviceMemory;
2996 class Fence;
2997 class Semaphore;
2998 class QueryPool;
2999 class Buffer;
3000 class Image;
3001 class ImageView;
3002 class CommandPool;
3003 class CommandBuffer;
3004 class Event;
3005 class BufferView;
3006 class ShaderModule;
3007 class PipelineCache;
3008 class Pipeline;
3009 class PipelineLayout;
3010 class Sampler;
3011 class DescriptorPool;
3012 class DescriptorSet;
3013 class DescriptorSetLayout;
3014 class Framebuffer;
3015 class RenderPass;
3016
3017 //=== VK_VERSION_1_1 ===
3018 class DescriptorUpdateTemplate;
3019 class SamplerYcbcrConversion;
3020
3021 //=== VK_VERSION_1_3 ===
3022 class PrivateDataSlot;
3023
3024 //=== VK_KHR_surface ===
3025 class SurfaceKHR;
3026
3027 //=== VK_KHR_swapchain ===
3028 class SwapchainKHR;
3029
3030 //=== VK_KHR_display ===
3031 class DisplayKHR;
3032 class DisplayModeKHR;
3033
3034 //=== VK_EXT_debug_report ===
3035 class DebugReportCallbackEXT;
3036
3037 //=== VK_KHR_video_queue ===
3038 class VideoSessionKHR;
3039 class VideoSessionParametersKHR;
3040
3041 //=== VK_NVX_binary_import ===
3042 class CuModuleNVX;
3043 class CuFunctionNVX;
3044
3045 //=== VK_KHR_descriptor_update_template ===
3046 using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate;
3047
3048 //=== VK_EXT_debug_utils ===
3049 class DebugUtilsMessengerEXT;
3050
3051 //=== VK_KHR_acceleration_structure ===
3052 class AccelerationStructureKHR;
3053
3054 //=== VK_KHR_sampler_ycbcr_conversion ===
3055 using SamplerYcbcrConversionKHR = SamplerYcbcrConversion;
3056
3057 //=== VK_EXT_validation_cache ===
3058 class ValidationCacheEXT;
3059
3060 //=== VK_NV_ray_tracing ===
3061 class AccelerationStructureNV;
3062
3063 //=== VK_INTEL_performance_query ===
3064 class PerformanceConfigurationINTEL;
3065
3066 //=== VK_KHR_deferred_host_operations ===
3067 class DeferredOperationKHR;
3068
3069 //=== VK_NV_device_generated_commands ===
3070 class IndirectCommandsLayoutNV;
3071
3072 //=== VK_EXT_private_data ===
3073 using PrivateDataSlotEXT = PrivateDataSlot;
3074
3075 # if defined( VK_ENABLE_BETA_EXTENSIONS )
3076 //=== VK_NV_cuda_kernel_launch ===
3077 class CudaModuleNV;
3078 class CudaFunctionNV;
3079 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
3080
3081 # if defined( VK_USE_PLATFORM_FUCHSIA )
3082 //=== VK_FUCHSIA_buffer_collection ===
3083 class BufferCollectionFUCHSIA;
3084 # endif /*VK_USE_PLATFORM_FUCHSIA*/
3085
3086 //=== VK_EXT_opacity_micromap ===
3087 class MicromapEXT;
3088
3089 //=== VK_ARM_tensors ===
3090 class TensorARM;
3091 class TensorViewARM;
3092
3093 //=== VK_NV_optical_flow ===
3094 class OpticalFlowSessionNV;
3095
3096 //=== VK_EXT_shader_object ===
3097 class ShaderEXT;
3098
3099 //=== VK_KHR_pipeline_binary ===
3100 class PipelineBinaryKHR;
3101
3102 //=== VK_ARM_data_graph ===
3103 class DataGraphPipelineSessionARM;
3104
3105 //=== VK_NV_external_compute_queue ===
3106 class ExternalComputeQueueNV;
3107
3108 //=== VK_EXT_device_generated_commands ===
3109 class IndirectCommandsLayoutEXT;
3110 class IndirectExecutionSetEXT;
3111
3112 //====================
3113 //=== RAII HANDLES ===
3114 //====================
3115
3116 template <typename Type>
3117 struct isVulkanRAIIHandleType
3118 {
3119 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = false;
3120 };
3121
3122 class Context
3123 {
3124 public:
3125 # if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
3126 Context() : m_dispatcher( new detail::ContextDispatcher( m_dynamicLoader.getProcAddress<PFN_vkGetInstanceProcAddr>( "vkGetInstanceProcAddr" ) ) )
3127 # else
3128 Context( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) : m_dispatcher( new detail::ContextDispatcher( getInstanceProcAddr ) )
3129 # endif
3130 {
3131 }
3132
3133 ~Context() = default;
3134
3135 Context( Context const & ) = delete;
3136 Context( Context && rhs ) VULKAN_HPP_NOEXCEPT
3137 # if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
3138 : m_dynamicLoader( std::move( rhs.m_dynamicLoader ) )
3139 , m_dispatcher( rhs.m_dispatcher.release() )
3140 # else
3141 : m_dispatcher( rhs.m_dispatcher.release() )
3142 # endif
3143 {
3144 }
3145 Context & operator=( Context const & ) = delete;
3146
3147 Context & operator=( Context && rhs ) VULKAN_HPP_NOEXCEPT
3148 {
3149 if ( this != &rhs )
3150 {
3151 # if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
3152 m_dynamicLoader = std::move( rhs.m_dynamicLoader );
3153 # endif
3154 m_dispatcher.reset( rhs.m_dispatcher.release() );
3155 }
3156 return *this;
3157 }
3158
3159 detail::ContextDispatcher const * getDispatcher() const
3160 {
3161 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3162 return &*m_dispatcher;
3163 }
3164
3165 void swap( Context & rhs )
3166 {
3167 # if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
3168 std::swap( m_dynamicLoader, rhs.m_dynamicLoader );
3169 # endif
3170 m_dispatcher.swap( rhs.m_dispatcher );
3171 }
3172
3173 //=== VK_VERSION_1_0 ===
3174
3175 // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html
3176 VULKAN_HPP_NODISCARD typename ResultValueType<Instance>::type
3177 createInstance( InstanceCreateInfo const & createInfo,
3178 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3179
3180 // wrapper function for command vkEnumerateInstanceExtensionProperties, see
3181 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html
3182 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<ExtensionProperties>>::type
3183 enumerateInstanceExtensionProperties( Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
3184
3185 // wrapper function for command vkEnumerateInstanceLayerProperties, see
3186 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html
3187 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<LayerProperties>>::type enumerateInstanceLayerProperties() const;
3188
3189 //=== VK_VERSION_1_1 ===
3190
3191 // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html
3192 VULKAN_HPP_NODISCARD typename ResultValueType<uint32_t>::type enumerateInstanceVersion() const;
3193
3194 private:
3195 # if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
3196 VULKAN_HPP_NAMESPACE::detail::DynamicLoader m_dynamicLoader;
3197 # endif
3198 std::unique_ptr<detail::ContextDispatcher> m_dispatcher;
3199 };
3200
3201 // wrapper class for handle VkInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstance.html
3202 class Instance
3203 {
3204 public:
3205 using CType = VkInstance;
3206 using CppType = VULKAN_HPP_NAMESPACE::Instance;
3207
3208 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eInstance;
3209 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eInstance;
3210
3211 public:
3212 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
3213 Instance( Context const & context, InstanceCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
3214 {
3215 *this = context.createInstance( createInfo, allocator );
3216 }
3217 # endif
3218
3219 Instance( Context const & context, VkInstance instance, Optional<const AllocationCallbacks> allocator = nullptr )
3220 : m_instance( instance ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
3221 {
3222 m_dispatcher.reset( new detail::InstanceDispatcher( context.getDispatcher()->vkGetInstanceProcAddr, static_cast<VkInstance>( m_instance ) ) );
3223 }
3224
3225 Instance( std::nullptr_t ) {}
3226
3227 ~Instance()
3228 {
3229 clear();
3230 }
3231
3232 Instance() = delete;
3233 Instance( Instance const & ) = delete;
3234
3235 Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT
3236 : m_instance( exchange( rhs.m_instance, {} ) )
3237 , m_allocator( exchange( rhs.m_allocator, {} ) )
3238 , m_dispatcher( rhs.m_dispatcher.release() )
3239 {
3240 }
3241
3242 Instance & operator=( Instance const & ) = delete;
3243
3244 Instance & operator=( Instance && rhs ) VULKAN_HPP_NOEXCEPT
3245 {
3246 if ( this != &rhs )
3247 {
3248 std::swap( m_instance, rhs.m_instance );
3249 std::swap( m_allocator, rhs.m_allocator );
3250 std::swap( m_dispatcher, rhs.m_dispatcher );
3251 }
3252 return *this;
3253 }
3254
3255 VULKAN_HPP_NAMESPACE::Instance const & operator*() const & VULKAN_HPP_NOEXCEPT
3256 {
3257 return m_instance;
3258 }
3259
3260 VULKAN_HPP_NAMESPACE::Instance const && operator*() const && VULKAN_HPP_NOEXCEPT
3261 {
3262 return std::move( m_instance );
3263 }
3264
3265 operator VULKAN_HPP_NAMESPACE::Instance() const VULKAN_HPP_NOEXCEPT
3266 {
3267 return m_instance;
3268 }
3269
3270 void clear() VULKAN_HPP_NOEXCEPT
3271 {
3272 if ( m_instance )
3273 {
3274 getDispatcher()->vkDestroyInstance( static_cast<VkInstance>( m_instance ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
3275 }
3276 m_instance = nullptr;
3277 m_allocator = nullptr;
3278 m_dispatcher = nullptr;
3279 }
3280
3281 VULKAN_HPP_NAMESPACE::Instance release()
3282 {
3283 m_allocator = nullptr;
3284 m_dispatcher = nullptr;
3285 return exchange( m_instance, nullptr );
3286 }
3287
3288 detail::InstanceDispatcher const * getDispatcher() const
3289 {
3290 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3291 return &*m_dispatcher;
3292 }
3293
3294 void swap( Instance & rhs ) VULKAN_HPP_NOEXCEPT
3295 {
3296 std::swap( m_instance, rhs.m_instance );
3297 std::swap( m_allocator, rhs.m_allocator );
3298 std::swap( m_dispatcher, rhs.m_dispatcher );
3299 }
3300
3301 //=== VK_VERSION_1_0 ===
3302
3303 // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html
3304 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PhysicalDevice>>::type enumeratePhysicalDevices() const;
3305
3306 // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html
3307 VULKAN_HPP_NODISCARD PFN_VoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
3308
3309 //=== VK_VERSION_1_1 ===
3310
3311 // wrapper function for command vkEnumeratePhysicalDeviceGroups, see
3312 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html
3313 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PhysicalDeviceGroupProperties>>::type enumeratePhysicalDeviceGroups() const;
3314
3315 //=== VK_KHR_display ===
3316
3317 // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see
3318 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html
3319 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3320 createDisplayPlaneSurfaceKHR( DisplaySurfaceCreateInfoKHR const & createInfo,
3321 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3322
3323 # if defined( VK_USE_PLATFORM_XLIB_KHR )
3324 //=== VK_KHR_xlib_surface ===
3325
3326 // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html
3327 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3328 createXlibSurfaceKHR( XlibSurfaceCreateInfoKHR const & createInfo,
3329 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3330 # endif /*VK_USE_PLATFORM_XLIB_KHR*/
3331
3332 # if defined( VK_USE_PLATFORM_XCB_KHR )
3333 //=== VK_KHR_xcb_surface ===
3334
3335 // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html
3336 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3337 createXcbSurfaceKHR( XcbSurfaceCreateInfoKHR const & createInfo,
3338 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3339 # endif /*VK_USE_PLATFORM_XCB_KHR*/
3340
3341 # if defined( VK_USE_PLATFORM_WAYLAND_KHR )
3342 //=== VK_KHR_wayland_surface ===
3343
3344 // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html
3345 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3346 createWaylandSurfaceKHR( WaylandSurfaceCreateInfoKHR const & createInfo,
3347 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3348 # endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
3349
3350 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
3351 //=== VK_KHR_android_surface ===
3352
3353 // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html
3354 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3355 createAndroidSurfaceKHR( AndroidSurfaceCreateInfoKHR const & createInfo,
3356 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3357 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
3358
3359 # if defined( VK_USE_PLATFORM_WIN32_KHR )
3360 //=== VK_KHR_win32_surface ===
3361
3362 // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html
3363 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3364 createWin32SurfaceKHR( Win32SurfaceCreateInfoKHR const & createInfo,
3365 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3366 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
3367
3368 //=== VK_EXT_debug_report ===
3369
3370 // wrapper function for command vkCreateDebugReportCallbackEXT, see
3371 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html
3372 VULKAN_HPP_NODISCARD typename ResultValueType<DebugReportCallbackEXT>::type
3373 createDebugReportCallbackEXT( DebugReportCallbackCreateInfoEXT const & createInfo,
3374 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3375
3376 // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html
3377 void debugReportMessageEXT( DebugReportFlagsEXT flags,
3378 DebugReportObjectTypeEXT objectType,
3379 uint64_t object,
3380 size_t location,
3381 int32_t messageCode,
3382 const std::string & layerPrefix,
3383 const std::string & message ) const VULKAN_HPP_NOEXCEPT;
3384
3385 # if defined( VK_USE_PLATFORM_GGP )
3386 //=== VK_GGP_stream_descriptor_surface ===
3387
3388 // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see
3389 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html
3390 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3391 createStreamDescriptorSurfaceGGP( StreamDescriptorSurfaceCreateInfoGGP const & createInfo,
3392 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3393 # endif /*VK_USE_PLATFORM_GGP*/
3394
3395 # if defined( VK_USE_PLATFORM_VI_NN )
3396 //=== VK_NN_vi_surface ===
3397
3398 // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html
3399 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3400 createViSurfaceNN( ViSurfaceCreateInfoNN const & createInfo,
3401 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3402 # endif /*VK_USE_PLATFORM_VI_NN*/
3403
3404 //=== VK_KHR_device_group_creation ===
3405
3406 // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see
3407 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html
3408 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PhysicalDeviceGroupProperties>>::type enumeratePhysicalDeviceGroupsKHR() const;
3409
3410 # if defined( VK_USE_PLATFORM_IOS_MVK )
3411 //=== VK_MVK_ios_surface ===
3412
3413 // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html
3414 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3415 createIOSSurfaceMVK( IOSSurfaceCreateInfoMVK const & createInfo,
3416 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3417 # endif /*VK_USE_PLATFORM_IOS_MVK*/
3418
3419 # if defined( VK_USE_PLATFORM_MACOS_MVK )
3420 //=== VK_MVK_macos_surface ===
3421
3422 // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html
3423 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3424 createMacOSSurfaceMVK( MacOSSurfaceCreateInfoMVK const & createInfo,
3425 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3426 # endif /*VK_USE_PLATFORM_MACOS_MVK*/
3427
3428 //=== VK_EXT_debug_utils ===
3429
3430 // wrapper function for command vkCreateDebugUtilsMessengerEXT, see
3431 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html
3432 VULKAN_HPP_NODISCARD typename ResultValueType<DebugUtilsMessengerEXT>::type
3433 createDebugUtilsMessengerEXT( DebugUtilsMessengerCreateInfoEXT const & createInfo,
3434 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3435
3436 // wrapper function for command vkSubmitDebugUtilsMessageEXT, see
3437 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html
3438 void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
3439 DebugUtilsMessageTypeFlagsEXT messageTypes,
3440 const DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT;
3441
3442 # if defined( VK_USE_PLATFORM_FUCHSIA )
3443 //=== VK_FUCHSIA_imagepipe_surface ===
3444
3445 // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see
3446 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html
3447 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3448 createImagePipeSurfaceFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo,
3449 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3450 # endif /*VK_USE_PLATFORM_FUCHSIA*/
3451
3452 # if defined( VK_USE_PLATFORM_METAL_EXT )
3453 //=== VK_EXT_metal_surface ===
3454
3455 // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html
3456 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3457 createMetalSurfaceEXT( MetalSurfaceCreateInfoEXT const & createInfo,
3458 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3459 # endif /*VK_USE_PLATFORM_METAL_EXT*/
3460
3461 //=== VK_EXT_headless_surface ===
3462
3463 // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html
3464 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3465 createHeadlessSurfaceEXT( HeadlessSurfaceCreateInfoEXT const & createInfo,
3466 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3467
3468 # if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
3469 //=== VK_EXT_directfb_surface ===
3470
3471 // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html
3472 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3473 createDirectFBSurfaceEXT( DirectFBSurfaceCreateInfoEXT const & createInfo,
3474 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3475 # endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
3476
3477 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
3478 //=== VK_QNX_screen_surface ===
3479
3480 // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html
3481 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3482 createScreenSurfaceQNX( ScreenSurfaceCreateInfoQNX const & createInfo,
3483 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3484 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
3485
3486 # if defined( VK_USE_PLATFORM_OHOS )
3487 //=== VK_OHOS_surface ===
3488
3489 // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html
3490 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceKHR>::type
3491 createSurfaceOHOS( SurfaceCreateInfoOHOS const & createInfo,
3492 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3493 # endif /*VK_USE_PLATFORM_OHOS*/
3494
3495 private:
3496 VULKAN_HPP_NAMESPACE::Instance m_instance = {};
3497 const AllocationCallbacks * m_allocator = {};
3498 std::unique_ptr<detail::InstanceDispatcher> m_dispatcher;
3499 };
3500
3501 template <>
3502 struct isVulkanRAIIHandleType<Instance>
3503 {
3504 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
3505 };
3506
3507 // wrapper class for handle VkPhysicalDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice.html
3508 class PhysicalDevice
3509 {
3510 public:
3511 using CType = VkPhysicalDevice;
3512 using CppType = VULKAN_HPP_NAMESPACE::PhysicalDevice;
3513
3514 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePhysicalDevice;
3515 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePhysicalDevice;
3516
3517 public:
3518 PhysicalDevice( Instance const & instance, VkPhysicalDevice physicalDevice )
3519 : m_physicalDevice( physicalDevice ), m_dispatcher( instance.getDispatcher() )
3520 {
3521 }
3522
3523 PhysicalDevice( std::nullptr_t ) {}
3524
3525 ~PhysicalDevice()
3526 {
3527 clear();
3528 }
3529
3530 PhysicalDevice() = delete;
3531
3532 PhysicalDevice( PhysicalDevice const & rhs ) : m_physicalDevice( rhs.m_physicalDevice ), m_dispatcher( rhs.m_dispatcher ) {}
3533
3534 PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
3535 : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) )
3536 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
3537 {
3538 }
3539
3540 PhysicalDevice & operator=( PhysicalDevice const & rhs )
3541 {
3542 m_physicalDevice = rhs.m_physicalDevice;
3543 m_dispatcher = rhs.m_dispatcher;
3544 return *this;
3545 }
3546
3547 PhysicalDevice & operator=( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
3548 {
3549 if ( this != &rhs )
3550 {
3551 std::swap( m_physicalDevice, rhs.m_physicalDevice );
3552 std::swap( m_dispatcher, rhs.m_dispatcher );
3553 }
3554 return *this;
3555 }
3556
3557 VULKAN_HPP_NAMESPACE::PhysicalDevice const & operator*() const & VULKAN_HPP_NOEXCEPT
3558 {
3559 return m_physicalDevice;
3560 }
3561
3562 VULKAN_HPP_NAMESPACE::PhysicalDevice const && operator*() const && VULKAN_HPP_NOEXCEPT
3563 {
3564 return std::move( m_physicalDevice );
3565 }
3566
3567 operator VULKAN_HPP_NAMESPACE::PhysicalDevice() const VULKAN_HPP_NOEXCEPT
3568 {
3569 return m_physicalDevice;
3570 }
3571
3572 void clear() VULKAN_HPP_NOEXCEPT
3573 {
3574 m_physicalDevice = nullptr;
3575 m_dispatcher = nullptr;
3576 }
3577
3578 VULKAN_HPP_NAMESPACE::PhysicalDevice release()
3579 {
3580 m_dispatcher = nullptr;
3581 return exchange( m_physicalDevice, nullptr );
3582 }
3583
3584 detail::InstanceDispatcher const * getDispatcher() const
3585 {
3586 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3587 return m_dispatcher;
3588 }
3589
3590 void swap( PhysicalDevice & rhs ) VULKAN_HPP_NOEXCEPT
3591 {
3592 std::swap( m_physicalDevice, rhs.m_physicalDevice );
3593 std::swap( m_dispatcher, rhs.m_dispatcher );
3594 }
3595
3596 //=== VK_VERSION_1_0 ===
3597
3598 // wrapper function for command vkGetPhysicalDeviceFeatures, see
3599 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html
3600 VULKAN_HPP_NODISCARD PhysicalDeviceFeatures getFeatures() const VULKAN_HPP_NOEXCEPT;
3601
3602 // wrapper function for command vkGetPhysicalDeviceFormatProperties, see
3603 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html
3604 VULKAN_HPP_NODISCARD FormatProperties getFormatProperties( Format format ) const VULKAN_HPP_NOEXCEPT;
3605
3606 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see
3607 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html
3608 VULKAN_HPP_NODISCARD typename ResultValueType<ImageFormatProperties>::type getImageFormatProperties(
3609 Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
3610
3611 // wrapper function for command vkGetPhysicalDeviceProperties, see
3612 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html
3613 VULKAN_HPP_NODISCARD PhysicalDeviceProperties getProperties() const VULKAN_HPP_NOEXCEPT;
3614
3615 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see
3616 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html
3617 VULKAN_HPP_NODISCARD std::vector<QueueFamilyProperties> getQueueFamilyProperties() const;
3618
3619 // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see
3620 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html
3621 VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties getMemoryProperties() const VULKAN_HPP_NOEXCEPT;
3622
3623 // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html
3624 VULKAN_HPP_NODISCARD typename ResultValueType<Device>::type
3625 createDevice( DeviceCreateInfo const & createInfo,
3626 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3627
3628 // wrapper function for command vkEnumerateDeviceExtensionProperties, see
3629 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html
3630 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<ExtensionProperties>>::type
3631 enumerateDeviceExtensionProperties( Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
3632
3633 // wrapper function for command vkEnumerateDeviceLayerProperties, see
3634 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html
3635 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<LayerProperties>>::type enumerateDeviceLayerProperties() const;
3636
3637 // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see
3638 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html
3639 VULKAN_HPP_NODISCARD std::vector<SparseImageFormatProperties>
3640 getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
3641
3642 //=== VK_VERSION_1_1 ===
3643
3644 // wrapper function for command vkGetPhysicalDeviceFeatures2, see
3645 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html
3646 VULKAN_HPP_NODISCARD PhysicalDeviceFeatures2 getFeatures2() const VULKAN_HPP_NOEXCEPT;
3647
3648 // wrapper function for command vkGetPhysicalDeviceFeatures2, see
3649 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html
3650 template <typename X, typename Y, typename... Z>
3651 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFeatures2() const VULKAN_HPP_NOEXCEPT;
3652
3653 // wrapper function for command vkGetPhysicalDeviceProperties2, see
3654 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html
3655 VULKAN_HPP_NODISCARD PhysicalDeviceProperties2 getProperties2() const VULKAN_HPP_NOEXCEPT;
3656
3657 // wrapper function for command vkGetPhysicalDeviceProperties2, see
3658 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html
3659 template <typename X, typename Y, typename... Z>
3660 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getProperties2() const VULKAN_HPP_NOEXCEPT;
3661
3662 // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see
3663 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html
3664 VULKAN_HPP_NODISCARD FormatProperties2 getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT;
3665
3666 // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see
3667 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html
3668 template <typename X, typename Y, typename... Z>
3669 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT;
3670
3671 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see
3672 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html
3673 VULKAN_HPP_NODISCARD Result getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 * pImageFormatInfo,
3674 ImageFormatProperties2 * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT;
3675
3676 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see
3677 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html
3678 VULKAN_HPP_NODISCARD typename ResultValueType<ImageFormatProperties2>::type
3679 getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3680
3681 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see
3682 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html
3683 template <typename X, typename Y, typename... Z>
3684 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
3685 getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3686
3687 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see
3688 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html
3689 VULKAN_HPP_NODISCARD std::vector<QueueFamilyProperties2> getQueueFamilyProperties2() const;
3690
3691 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see
3692 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html
3693 template <typename StructureChain>
3694 VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2() const;
3695
3696 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see
3697 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html
3698 VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties2 getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
3699
3700 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see
3701 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html
3702 template <typename X, typename Y, typename... Z>
3703 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
3704
3705 // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see
3706 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html
3707 VULKAN_HPP_NODISCARD std::vector<SparseImageFormatProperties2>
3708 getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const;
3709
3710 // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see
3711 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html
3712 VULKAN_HPP_NODISCARD ExternalBufferProperties
3713 getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
3714
3715 // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see
3716 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html
3717 VULKAN_HPP_NODISCARD ExternalFenceProperties
3718 getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
3719
3720 // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see
3721 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html
3722 VULKAN_HPP_NODISCARD ExternalSemaphoreProperties
3723 getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT;
3724
3725 //=== VK_VERSION_1_3 ===
3726
3727 // wrapper function for command vkGetPhysicalDeviceToolProperties, see
3728 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html
3729 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PhysicalDeviceToolProperties>>::type getToolProperties() const;
3730
3731 //=== VK_KHR_surface ===
3732
3733 // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see
3734 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html
3735 VULKAN_HPP_NODISCARD typename ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex,
3736 VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3737
3738 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see
3739 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html
3740 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3741
3742 // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see
3743 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html
3744 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<SurfaceFormatKHR>>::type
3745 getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
3746
3747 // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see
3748 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html
3749 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PresentModeKHR>>::type
3750 getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
3751
3752 //=== VK_KHR_swapchain ===
3753
3754 // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see
3755 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html
3756 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Rect2D>>::type getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3757
3758 //=== VK_KHR_display ===
3759
3760 // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see
3761 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html
3762 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayPropertiesKHR>>::type getDisplayPropertiesKHR() const;
3763
3764 // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see
3765 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html
3766 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayPlanePropertiesKHR>>::type getDisplayPlanePropertiesKHR() const;
3767
3768 // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see
3769 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html
3770 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayKHR>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
3771
3772 # if defined( VK_USE_PLATFORM_XLIB_KHR )
3773 //=== VK_KHR_xlib_surface ===
3774
3775 // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see
3776 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html
3777 VULKAN_HPP_NODISCARD Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT;
3778 # endif /*VK_USE_PLATFORM_XLIB_KHR*/
3779
3780 # if defined( VK_USE_PLATFORM_XCB_KHR )
3781 //=== VK_KHR_xcb_surface ===
3782
3783 // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see
3784 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html
3785 VULKAN_HPP_NODISCARD Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex,
3786 xcb_connection_t & connection,
3787 xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT;
3788 # endif /*VK_USE_PLATFORM_XCB_KHR*/
3789
3790 # if defined( VK_USE_PLATFORM_WAYLAND_KHR )
3791 //=== VK_KHR_wayland_surface ===
3792
3793 // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see
3794 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html
3795 VULKAN_HPP_NODISCARD Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const VULKAN_HPP_NOEXCEPT;
3796 # endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
3797
3798 # if defined( VK_USE_PLATFORM_WIN32_KHR )
3799 //=== VK_KHR_win32_surface ===
3800
3801 // wrapper function for command vkGetPhysicalDeviceWin32PresentationSupportKHR, see
3802 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html
3803 VULKAN_HPP_NODISCARD Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT;
3804 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
3805
3806 //=== VK_KHR_video_queue ===
3807
3808 // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see
3809 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html
3810 VULKAN_HPP_NODISCARD Result getVideoCapabilitiesKHR( const VideoProfileInfoKHR * pVideoProfile,
3811 VideoCapabilitiesKHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT;
3812
3813 // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see
3814 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html
3815 VULKAN_HPP_NODISCARD typename ResultValueType<VideoCapabilitiesKHR>::type getVideoCapabilitiesKHR( const VideoProfileInfoKHR & videoProfile ) const;
3816
3817 // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see
3818 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html
3819 template <typename X, typename Y, typename... Z>
3820 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type getVideoCapabilitiesKHR( const VideoProfileInfoKHR & videoProfile ) const;
3821
3822 // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see
3823 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html
3824 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<VideoFormatPropertiesKHR>>::type
3825 getVideoFormatPropertiesKHR( const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const;
3826
3827 // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see
3828 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html
3829 template <typename StructureChain>
3830 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<StructureChain>>::type
3831 getVideoFormatPropertiesKHR( const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const;
3832
3833 //=== VK_NV_external_memory_capabilities ===
3834
3835 // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see
3836 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html
3837 VULKAN_HPP_NODISCARD typename ResultValueType<ExternalImageFormatPropertiesNV>::type
3838 getExternalImageFormatPropertiesNV( Format format,
3839 ImageType type,
3840 ImageTiling tiling,
3841 ImageUsageFlags usage,
3842 ImageCreateFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ),
3843 ExternalMemoryHandleTypeFlagsNV externalHandleType VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
3844
3845 //=== VK_KHR_get_physical_device_properties2 ===
3846
3847 // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see
3848 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html
3849 VULKAN_HPP_NODISCARD PhysicalDeviceFeatures2 getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
3850
3851 // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see
3852 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html
3853 template <typename X, typename Y, typename... Z>
3854 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
3855
3856 // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see
3857 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html
3858 VULKAN_HPP_NODISCARD PhysicalDeviceProperties2 getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3859
3860 // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see
3861 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html
3862 template <typename X, typename Y, typename... Z>
3863 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3864
3865 // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see
3866 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html
3867 VULKAN_HPP_NODISCARD FormatProperties2 getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT;
3868
3869 // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see
3870 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html
3871 template <typename X, typename Y, typename... Z>
3872 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT;
3873
3874 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see
3875 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html
3876 VULKAN_HPP_NODISCARD Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 * pImageFormatInfo,
3877 ImageFormatProperties2 * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT;
3878
3879 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see
3880 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html
3881 VULKAN_HPP_NODISCARD typename ResultValueType<ImageFormatProperties2>::type
3882 getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3883
3884 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see
3885 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html
3886 template <typename X, typename Y, typename... Z>
3887 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
3888 getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3889
3890 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see
3891 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html
3892 VULKAN_HPP_NODISCARD std::vector<QueueFamilyProperties2> getQueueFamilyProperties2KHR() const;
3893
3894 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see
3895 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html
3896 template <typename StructureChain>
3897 VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2KHR() const;
3898
3899 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see
3900 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html
3901 VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3902
3903 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see
3904 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html
3905 template <typename X, typename Y, typename... Z>
3906 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3907
3908 // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see
3909 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html
3910 VULKAN_HPP_NODISCARD std::vector<SparseImageFormatProperties2>
3911 getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const;
3912
3913 //=== VK_KHR_external_memory_capabilities ===
3914
3915 // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see
3916 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html
3917 VULKAN_HPP_NODISCARD ExternalBufferProperties
3918 getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
3919
3920 //=== VK_KHR_external_semaphore_capabilities ===
3921
3922 // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see
3923 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html
3924 VULKAN_HPP_NODISCARD ExternalSemaphoreProperties
3925 getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT;
3926
3927 # if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
3928 //=== VK_EXT_acquire_xlib_display ===
3929
3930 // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html
3931 typename ResultValueType<void>::type acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
3932
3933 // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html
3934 VULKAN_HPP_NODISCARD typename ResultValueType<DisplayKHR>::type
3935 getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3936 # endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
3937
3938 //=== VK_EXT_display_surface_counter ===
3939
3940 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see
3941 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html
3942 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3943
3944 //=== VK_KHR_external_fence_capabilities ===
3945
3946 // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see
3947 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html
3948 VULKAN_HPP_NODISCARD ExternalFenceProperties
3949 getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
3950
3951 //=== VK_KHR_performance_query ===
3952
3953 // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see
3954 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html
3955 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>>>::type
3956 enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const;
3957
3958 // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see
3959 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html
3960 VULKAN_HPP_NODISCARD uint32_t
3961 getQueueFamilyPerformanceQueryPassesKHR( const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT;
3962
3963 //=== VK_KHR_get_surface_capabilities2 ===
3964
3965 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see
3966 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html
3967 VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,
3968 SurfaceCapabilities2KHR * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT;
3969
3970 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see
3971 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html
3972 VULKAN_HPP_NODISCARD typename ResultValueType<SurfaceCapabilities2KHR>::type
3973 getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3974
3975 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see
3976 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html
3977 template <typename X, typename Y, typename... Z>
3978 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
3979 getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3980
3981 // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see
3982 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html
3983 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<SurfaceFormat2KHR>>::type
3984 getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3985
3986 // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see
3987 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html
3988 template <typename StructureChain>
3989 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<StructureChain>>::type
3990 getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3991
3992 //=== VK_KHR_get_display_properties2 ===
3993
3994 // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see
3995 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html
3996 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayProperties2KHR>>::type getDisplayProperties2KHR() const;
3997
3998 // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see
3999 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html
4000 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayPlaneProperties2KHR>>::type getDisplayPlaneProperties2KHR() const;
4001
4002 // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see
4003 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html
4004 VULKAN_HPP_NODISCARD typename ResultValueType<DisplayPlaneCapabilities2KHR>::type
4005 getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo ) const;
4006
4007 //=== VK_EXT_sample_locations ===
4008
4009 // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see
4010 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html
4011 VULKAN_HPP_NODISCARD MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT;
4012
4013 //=== VK_EXT_calibrated_timestamps ===
4014
4015 // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see
4016 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html
4017 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<TimeDomainKHR>>::type getCalibrateableTimeDomainsEXT() const;
4018
4019 //=== VK_KHR_fragment_shading_rate ===
4020
4021 // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see
4022 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html
4023 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PhysicalDeviceFragmentShadingRateKHR>>::type getFragmentShadingRatesKHR() const;
4024
4025 //=== VK_EXT_tooling_info ===
4026
4027 // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see
4028 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html
4029 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PhysicalDeviceToolProperties>>::type getToolPropertiesEXT() const;
4030
4031 //=== VK_NV_cooperative_matrix ===
4032
4033 // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see
4034 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html
4035 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<CooperativeMatrixPropertiesNV>>::type getCooperativeMatrixPropertiesNV() const;
4036
4037 //=== VK_NV_coverage_reduction_mode ===
4038
4039 // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see
4040 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html
4041 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<FramebufferMixedSamplesCombinationNV>>::type
4042 getSupportedFramebufferMixedSamplesCombinationsNV() const;
4043
4044 # if defined( VK_USE_PLATFORM_WIN32_KHR )
4045 //=== VK_EXT_full_screen_exclusive ===
4046
4047 // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see
4048 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html
4049 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PresentModeKHR>>::type
4050 getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
4051 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
4052
4053 //=== VK_EXT_acquire_drm_display ===
4054
4055 // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html
4056 typename ResultValueType<void>::type acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
4057
4058 // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html
4059 VULKAN_HPP_NODISCARD typename ResultValueType<DisplayKHR>::type getDrmDisplayEXT( int32_t drmFd,
4060 uint32_t connectorId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4061
4062 //=== VK_KHR_video_encode_queue ===
4063
4064 // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see
4065 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html
4066 VULKAN_HPP_NODISCARD Result
4067 getVideoEncodeQualityLevelPropertiesKHR( const PhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo,
4068 VideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) const VULKAN_HPP_NOEXCEPT;
4069
4070 // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see
4071 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html
4072 VULKAN_HPP_NODISCARD typename ResultValueType<VideoEncodeQualityLevelPropertiesKHR>::type
4073 getVideoEncodeQualityLevelPropertiesKHR( const PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const;
4074
4075 // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see
4076 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html
4077 template <typename X, typename Y, typename... Z>
4078 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
4079 getVideoEncodeQualityLevelPropertiesKHR( const PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const;
4080
4081 # if defined( VK_USE_PLATFORM_WIN32_KHR )
4082 //=== VK_NV_acquire_winrt_display ===
4083
4084 // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html
4085 VULKAN_HPP_NODISCARD typename ResultValueType<DisplayKHR>::type
4086 getWinrtDisplayNV( uint32_t deviceRelativeId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4087 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
4088
4089 # if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
4090 //=== VK_EXT_directfb_surface ===
4091
4092 // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see
4093 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html
4094 VULKAN_HPP_NODISCARD Bool32 getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT;
4095 # endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
4096
4097 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
4098 //=== VK_QNX_screen_surface ===
4099
4100 // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see
4101 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html
4102 VULKAN_HPP_NODISCARD Bool32 getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT;
4103 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
4104
4105 //=== VK_ARM_tensors ===
4106
4107 // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see
4108 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html
4109 VULKAN_HPP_NODISCARD ExternalTensorPropertiesARM
4110 getExternalTensorPropertiesARM( const PhysicalDeviceExternalTensorInfoARM & externalTensorInfo ) const VULKAN_HPP_NOEXCEPT;
4111
4112 //=== VK_NV_optical_flow ===
4113
4114 // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see
4115 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html
4116 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<OpticalFlowImageFormatPropertiesNV>>::type
4117 getOpticalFlowImageFormatsNV( const OpticalFlowImageFormatInfoNV & opticalFlowImageFormatInfo ) const;
4118
4119 //=== VK_NV_cooperative_vector ===
4120
4121 // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see
4122 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html
4123 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<CooperativeVectorPropertiesNV>>::type getCooperativeVectorPropertiesNV() const;
4124
4125 //=== VK_KHR_cooperative_matrix ===
4126
4127 // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see
4128 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html
4129 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<CooperativeMatrixPropertiesKHR>>::type getCooperativeMatrixPropertiesKHR() const;
4130
4131 //=== VK_ARM_data_graph ===
4132
4133 // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see
4134 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html
4135 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<QueueFamilyDataGraphPropertiesARM>>::type
4136 getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex ) const;
4137
4138 // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see
4139 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html
4140 VULKAN_HPP_NODISCARD QueueFamilyDataGraphProcessingEnginePropertiesARM getQueueFamilyDataGraphProcessingEnginePropertiesARM(
4141 const PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & queueFamilyDataGraphProcessingEngineInfo ) const VULKAN_HPP_NOEXCEPT;
4142
4143 //=== VK_KHR_calibrated_timestamps ===
4144
4145 // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see
4146 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html
4147 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<TimeDomainKHR>>::type getCalibrateableTimeDomainsKHR() const;
4148
4149 //=== VK_NV_cooperative_matrix2 ===
4150
4151 // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see
4152 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html
4153 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<CooperativeMatrixFlexibleDimensionsPropertiesNV>>::type
4154 getCooperativeMatrixFlexibleDimensionsPropertiesNV() const;
4155
4156 //=== VK_ARM_performance_counters_by_region ===
4157
4158 // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see
4159 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html
4160 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<std::vector<PerformanceCounterARM>, std::vector<PerformanceCounterDescriptionARM>>>::type
4161 enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex ) const;
4162
4163 private:
4164 VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {};
4165 detail::InstanceDispatcher const * m_dispatcher = nullptr;
4166 };
4167
4168 template <>
4169 struct isVulkanRAIIHandleType<PhysicalDevice>
4170 {
4171 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
4172 };
4173
4174 class PhysicalDevices : public std::vector<PhysicalDevice>
4175 {
4176 public:
4177 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
4178 PhysicalDevices( Instance const & instance )
4179 {
4180 *this = instance.enumeratePhysicalDevices();
4181 }
4182 # endif
4183
4184 PhysicalDevices( std::nullptr_t ) {}
4185
4186 PhysicalDevices() = delete;
4187 PhysicalDevices( PhysicalDevices const & ) = delete;
4188 PhysicalDevices( PhysicalDevices && rhs ) = default;
4189 PhysicalDevices & operator=( PhysicalDevices const & ) = delete;
4190 PhysicalDevices & operator=( PhysicalDevices && rhs ) = default;
4191
4192 private:
4193 PhysicalDevices( std::vector<PhysicalDevice> && rhs )
4194 {
4195 std::swap( *this, rhs );
4196 }
4197 };
4198
4199 // wrapper class for handle VkDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDevice.html
4200 class Device
4201 {
4202 public:
4203 using CType = VkDevice;
4204 using CppType = VULKAN_HPP_NAMESPACE::Device;
4205
4206 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDevice;
4207 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDevice;
4208
4209 public:
4210 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
4211 Device( PhysicalDevice const & physicalDevice, DeviceCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
4212 {
4213 *this = physicalDevice.createDevice( createInfo, allocator );
4214 }
4215 # endif
4216
4217 Device( PhysicalDevice const & physicalDevice, VkDevice device, Optional<const AllocationCallbacks> allocator = nullptr )
4218 : m_device( device ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
4219 {
4220 m_dispatcher.reset( new detail::DeviceDispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr, static_cast<VkDevice>( m_device ) ) );
4221 }
4222
4223 Device( std::nullptr_t ) {}
4224
4225 ~Device()
4226 {
4227 clear();
4228 }
4229
4230 Device() = delete;
4231 Device( Device const & ) = delete;
4232
4233 Device( Device && rhs ) VULKAN_HPP_NOEXCEPT
4234 : m_device( exchange( rhs.m_device, {} ) )
4235 , m_allocator( exchange( rhs.m_allocator, {} ) )
4236 , m_dispatcher( rhs.m_dispatcher.release() )
4237 {
4238 }
4239
4240 Device & operator=( Device const & ) = delete;
4241
4242 Device & operator=( Device && rhs ) VULKAN_HPP_NOEXCEPT
4243 {
4244 if ( this != &rhs )
4245 {
4246 std::swap( m_device, rhs.m_device );
4247 std::swap( m_allocator, rhs.m_allocator );
4248 std::swap( m_dispatcher, rhs.m_dispatcher );
4249 }
4250 return *this;
4251 }
4252
4253 VULKAN_HPP_NAMESPACE::Device const & operator*() const & VULKAN_HPP_NOEXCEPT
4254 {
4255 return m_device;
4256 }
4257
4258 VULKAN_HPP_NAMESPACE::Device const && operator*() const && VULKAN_HPP_NOEXCEPT
4259 {
4260 return std::move( m_device );
4261 }
4262
4263 operator VULKAN_HPP_NAMESPACE::Device() const VULKAN_HPP_NOEXCEPT
4264 {
4265 return m_device;
4266 }
4267
4268 void clear() VULKAN_HPP_NOEXCEPT
4269 {
4270 if ( m_device )
4271 {
4272 getDispatcher()->vkDestroyDevice( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
4273 }
4274 m_device = nullptr;
4275 m_allocator = nullptr;
4276 m_dispatcher = nullptr;
4277 }
4278
4279 VULKAN_HPP_NAMESPACE::Device release()
4280 {
4281 m_allocator = nullptr;
4282 m_dispatcher = nullptr;
4283 return exchange( m_device, nullptr );
4284 }
4285
4286 detail::DeviceDispatcher const * getDispatcher() const
4287 {
4288 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4289 return &*m_dispatcher;
4290 }
4291
4292 void swap( Device & rhs ) VULKAN_HPP_NOEXCEPT
4293 {
4294 std::swap( m_device, rhs.m_device );
4295 std::swap( m_allocator, rhs.m_allocator );
4296 std::swap( m_dispatcher, rhs.m_dispatcher );
4297 }
4298
4299 //=== VK_VERSION_1_0 ===
4300
4301 // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html
4302 VULKAN_HPP_NODISCARD PFN_VoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
4303
4304 // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html
4305 VULKAN_HPP_NODISCARD Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4306
4307 // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html
4308 typename ResultValueType<void>::type waitIdle() const;
4309
4310 // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html
4311 VULKAN_HPP_NODISCARD typename ResultValueType<DeviceMemory>::type
4312 allocateMemory( MemoryAllocateInfo const & allocateInfo,
4313 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4314
4315 // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html
4316 typename ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> const & memoryRanges ) const;
4317
4318 // wrapper function for command vkInvalidateMappedMemoryRanges, see
4319 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html
4320 typename ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> const & memoryRanges ) const;
4321
4322 // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html
4323 VULKAN_HPP_NODISCARD typename ResultValueType<Fence>::type
4324 createFence( FenceCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4325
4326 // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html
4327 typename ResultValueType<void>::type resetFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const;
4328
4329 // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html
4330 VULKAN_HPP_NODISCARD Result waitForFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences, Bool32 waitAll, uint64_t timeout ) const;
4331
4332 // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html
4333 VULKAN_HPP_NODISCARD typename ResultValueType<Semaphore>::type
4334 createSemaphore( SemaphoreCreateInfo const & createInfo,
4335 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4336
4337 // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html
4338 VULKAN_HPP_NODISCARD typename ResultValueType<QueryPool>::type
4339 createQueryPool( QueryPoolCreateInfo const & createInfo,
4340 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4341
4342 // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html
4343 VULKAN_HPP_NODISCARD typename ResultValueType<Buffer>::type
4344 createBuffer( BufferCreateInfo const & createInfo,
4345 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4346
4347 // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html
4348 VULKAN_HPP_NODISCARD typename ResultValueType<Image>::type
4349 createImage( ImageCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4350
4351 // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html
4352 VULKAN_HPP_NODISCARD typename ResultValueType<ImageView>::type
4353 createImageView( ImageViewCreateInfo const & createInfo,
4354 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4355
4356 // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html
4357 VULKAN_HPP_NODISCARD typename ResultValueType<CommandPool>::type
4358 createCommandPool( CommandPoolCreateInfo const & createInfo,
4359 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4360
4361 // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html
4362 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<CommandBuffer>>::type
4363 allocateCommandBuffers( CommandBufferAllocateInfo const & allocateInfo ) const;
4364
4365 // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html
4366 VULKAN_HPP_NODISCARD typename ResultValueType<Event>::type
4367 createEvent( EventCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4368
4369 // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html
4370 VULKAN_HPP_NODISCARD typename ResultValueType<BufferView>::type
4371 createBufferView( BufferViewCreateInfo const & createInfo,
4372 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4373
4374 // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html
4375 VULKAN_HPP_NODISCARD typename ResultValueType<ShaderModule>::type
4376 createShaderModule( ShaderModuleCreateInfo const & createInfo,
4377 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4378
4379 // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html
4380 VULKAN_HPP_NODISCARD typename ResultValueType<PipelineCache>::type
4381 createPipelineCache( PipelineCacheCreateInfo const & createInfo,
4382 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4383
4384 // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html
4385 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Pipeline>>::type
4386 createComputePipelines( Optional<const PipelineCache> const & pipelineCache,
4387 ArrayProxy<ComputePipelineCreateInfo> const & createInfos,
4388 Optional<const AllocationCallbacks> allocator = nullptr ) const;
4389
4390 // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html
4391 VULKAN_HPP_NODISCARD typename ResultValueType<Pipeline>::type
4392 createComputePipeline( Optional<const PipelineCache> const & pipelineCache,
4393 ComputePipelineCreateInfo const & createInfo,
4394 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4395
4396 // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html
4397 VULKAN_HPP_NODISCARD typename ResultValueType<PipelineLayout>::type
4398 createPipelineLayout( PipelineLayoutCreateInfo const & createInfo,
4399 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4400
4401 // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html
4402 VULKAN_HPP_NODISCARD typename ResultValueType<Sampler>::type
4403 createSampler( SamplerCreateInfo const & createInfo,
4404 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4405
4406 // wrapper function for command vkCreateDescriptorSetLayout, see
4407 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html
4408 VULKAN_HPP_NODISCARD typename ResultValueType<DescriptorSetLayout>::type
4409 createDescriptorSetLayout( DescriptorSetLayoutCreateInfo const & createInfo,
4410 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4411
4412 // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html
4413 VULKAN_HPP_NODISCARD typename ResultValueType<DescriptorPool>::type
4414 createDescriptorPool( DescriptorPoolCreateInfo const & createInfo,
4415 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4416
4417 // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html
4418 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DescriptorSet>>::type
4419 allocateDescriptorSets( DescriptorSetAllocateInfo const & allocateInfo ) const;
4420
4421 // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html
4422 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> const & descriptorWrites,
4423 ArrayProxy<const CopyDescriptorSet> const & descriptorCopies ) const VULKAN_HPP_NOEXCEPT;
4424
4425 // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html
4426 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Pipeline>>::type
4427 createGraphicsPipelines( Optional<const PipelineCache> const & pipelineCache,
4428 ArrayProxy<GraphicsPipelineCreateInfo> const & createInfos,
4429 Optional<const AllocationCallbacks> allocator = nullptr ) const;
4430
4431 // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html
4432 VULKAN_HPP_NODISCARD typename ResultValueType<Pipeline>::type
4433 createGraphicsPipeline( Optional<const PipelineCache> const & pipelineCache,
4434 GraphicsPipelineCreateInfo const & createInfo,
4435 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4436
4437 // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html
4438 VULKAN_HPP_NODISCARD typename ResultValueType<Framebuffer>::type
4439 createFramebuffer( FramebufferCreateInfo const & createInfo,
4440 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4441
4442 // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html
4443 VULKAN_HPP_NODISCARD typename ResultValueType<RenderPass>::type
4444 createRenderPass( RenderPassCreateInfo const & createInfo,
4445 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4446
4447 //=== VK_VERSION_1_1 ===
4448
4449 // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html
4450 typename ResultValueType<void>::type bindBufferMemory2( ArrayProxy<const BindBufferMemoryInfo> const & bindInfos ) const;
4451
4452 // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html
4453 typename ResultValueType<void>::type bindImageMemory2( ArrayProxy<const BindImageMemoryInfo> const & bindInfos ) const;
4454
4455 // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see
4456 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html
4457 VULKAN_HPP_NODISCARD PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( uint32_t heapIndex,
4458 uint32_t localDeviceIndex,
4459 uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
4460
4461 // wrapper function for command vkGetImageMemoryRequirements2, see
4462 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html
4463 VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4464
4465 // wrapper function for command vkGetImageMemoryRequirements2, see
4466 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html
4467 template <typename X, typename Y, typename... Z>
4468 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4469
4470 // wrapper function for command vkGetBufferMemoryRequirements2, see
4471 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html
4472 VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4473
4474 // wrapper function for command vkGetBufferMemoryRequirements2, see
4475 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html
4476 template <typename X, typename Y, typename... Z>
4477 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4478
4479 // wrapper function for command vkGetImageSparseMemoryRequirements2, see
4480 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html
4481 VULKAN_HPP_NODISCARD std::vector<SparseImageMemoryRequirements2>
4482 getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info ) const;
4483
4484 // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html
4485 VULKAN_HPP_NODISCARD Queue getQueue2( DeviceQueueInfo2 const & queueInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4486
4487 // wrapper function for command vkCreateDescriptorUpdateTemplate, see
4488 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html
4489 VULKAN_HPP_NODISCARD typename ResultValueType<DescriptorUpdateTemplate>::type
4490 createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const & createInfo,
4491 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4492
4493 // wrapper function for command vkGetDescriptorSetLayoutSupport, see
4494 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html
4495 VULKAN_HPP_NODISCARD DescriptorSetLayoutSupport
4496 getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4497
4498 // wrapper function for command vkGetDescriptorSetLayoutSupport, see
4499 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html
4500 template <typename X, typename Y, typename... Z>
4501 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
4502 getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4503
4504 // wrapper function for command vkCreateSamplerYcbcrConversion, see
4505 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html
4506 VULKAN_HPP_NODISCARD typename ResultValueType<SamplerYcbcrConversion>::type
4507 createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const & createInfo,
4508 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4509
4510 //=== VK_VERSION_1_2 ===
4511
4512 // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html
4513 VULKAN_HPP_NODISCARD Result waitSemaphores( const SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const;
4514
4515 // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html
4516 typename ResultValueType<void>::type signalSemaphore( const SemaphoreSignalInfo & signalInfo ) const;
4517
4518 // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html
4519 VULKAN_HPP_NODISCARD DeviceAddress getBufferAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4520
4521 // wrapper function for command vkGetBufferOpaqueCaptureAddress, see
4522 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html
4523 VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4524
4525 // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see
4526 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html
4527 VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddress( const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4528
4529 // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html
4530 VULKAN_HPP_NODISCARD typename ResultValueType<RenderPass>::type
4531 createRenderPass2( RenderPassCreateInfo2 const & createInfo,
4532 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4533
4534 //=== VK_VERSION_1_3 ===
4535
4536 // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html
4537 VULKAN_HPP_NODISCARD typename ResultValueType<PrivateDataSlot>::type
4538 createPrivateDataSlot( PrivateDataSlotCreateInfo const & createInfo,
4539 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4540
4541 // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html
4542 typename ResultValueType<void>::type
4543 setPrivateData( ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const;
4544
4545 // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html
4546 VULKAN_HPP_NODISCARD uint64_t getPrivateData( ObjectType objectType,
4547 uint64_t objectHandle,
4548 VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT;
4549
4550 // wrapper function for command vkGetDeviceBufferMemoryRequirements, see
4551 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html
4552 VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4553
4554 // wrapper function for command vkGetDeviceBufferMemoryRequirements, see
4555 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html
4556 template <typename X, typename Y, typename... Z>
4557 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirements( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4558
4559 // wrapper function for command vkGetDeviceImageMemoryRequirements, see
4560 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html
4561 VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4562
4563 // wrapper function for command vkGetDeviceImageMemoryRequirements, see
4564 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html
4565 template <typename X, typename Y, typename... Z>
4566 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirements( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4567
4568 // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see
4569 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html
4570 VULKAN_HPP_NODISCARD std::vector<SparseImageMemoryRequirements2> getImageSparseMemoryRequirements( const DeviceImageMemoryRequirements & info ) const;
4571
4572 //=== VK_VERSION_1_4 ===
4573
4574 // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html
4575 VULKAN_HPP_NODISCARD typename ResultValueType<void *>::type mapMemory2( const MemoryMapInfo & memoryMapInfo ) const;
4576
4577 // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html
4578 typename ResultValueType<void>::type unmapMemory2( const MemoryUnmapInfo & memoryUnmapInfo ) const;
4579
4580 // wrapper function for command vkGetDeviceImageSubresourceLayout, see
4581 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html
4582 VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayout( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT;
4583
4584 // wrapper function for command vkGetDeviceImageSubresourceLayout, see
4585 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html
4586 template <typename X, typename Y, typename... Z>
4587 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageSubresourceLayout( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT;
4588
4589 // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html
4590 typename ResultValueType<void>::type copyMemoryToImage( const CopyMemoryToImageInfo & copyMemoryToImageInfo ) const;
4591
4592 // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html
4593 typename ResultValueType<void>::type copyImageToMemory( const CopyImageToMemoryInfo & copyImageToMemoryInfo ) const;
4594
4595 // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html
4596 typename ResultValueType<void>::type copyImageToImage( const CopyImageToImageInfo & copyImageToImageInfo ) const;
4597
4598 // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html
4599 typename ResultValueType<void>::type transitionImageLayout( ArrayProxy<const HostImageLayoutTransitionInfo> const & transitions ) const;
4600
4601 // wrapper function for command vkGetRenderingAreaGranularity, see
4602 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html
4603 VULKAN_HPP_NODISCARD Extent2D getRenderingAreaGranularity( const RenderingAreaInfo & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT;
4604
4605 //=== VK_KHR_swapchain ===
4606
4607 // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html
4608 VULKAN_HPP_NODISCARD typename ResultValueType<SwapchainKHR>::type
4609 createSwapchainKHR( SwapchainCreateInfoKHR const & createInfo,
4610 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4611
4612 // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see
4613 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html
4614 VULKAN_HPP_NODISCARD typename ResultValueType<DeviceGroupPresentCapabilitiesKHR>::type getGroupPresentCapabilitiesKHR() const;
4615
4616 // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see
4617 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html
4618 VULKAN_HPP_NODISCARD typename ResultValueType<DeviceGroupPresentModeFlagsKHR>::type
4619 getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
4620
4621 // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html
4622 VULKAN_HPP_NODISCARD ResultValue<uint32_t> acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo ) const;
4623
4624 //=== VK_KHR_display_swapchain ===
4625
4626 // wrapper function for command vkCreateSharedSwapchainsKHR, see
4627 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html
4628 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<SwapchainKHR>>::type
4629 createSharedSwapchainsKHR( ArrayProxy<SwapchainCreateInfoKHR> const & createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
4630
4631 // wrapper function for command vkCreateSharedSwapchainsKHR, see
4632 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html
4633 VULKAN_HPP_NODISCARD typename ResultValueType<SwapchainKHR>::type
4634 createSharedSwapchainKHR( SwapchainCreateInfoKHR const & createInfo,
4635 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4636
4637 //=== VK_EXT_debug_marker ===
4638
4639 // wrapper function for command vkDebugMarkerSetObjectTagEXT, see
4640 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html
4641 typename ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
4642
4643 // wrapper function for command vkDebugMarkerSetObjectNameEXT, see
4644 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html
4645 typename ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
4646
4647 //=== VK_KHR_video_queue ===
4648
4649 // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html
4650 VULKAN_HPP_NODISCARD typename ResultValueType<VideoSessionKHR>::type
4651 createVideoSessionKHR( VideoSessionCreateInfoKHR const & createInfo,
4652 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4653
4654 // wrapper function for command vkCreateVideoSessionParametersKHR, see
4655 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html
4656 VULKAN_HPP_NODISCARD typename ResultValueType<VideoSessionParametersKHR>::type
4657 createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const & createInfo,
4658 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4659
4660 //=== VK_NVX_binary_import ===
4661
4662 // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html
4663 VULKAN_HPP_NODISCARD typename ResultValueType<CuModuleNVX>::type
4664 createCuModuleNVX( CuModuleCreateInfoNVX const & createInfo,
4665 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4666
4667 // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html
4668 VULKAN_HPP_NODISCARD typename ResultValueType<CuFunctionNVX>::type
4669 createCuFunctionNVX( CuFunctionCreateInfoNVX const & createInfo,
4670 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4671
4672 //=== VK_NVX_image_view_handle ===
4673
4674 // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html
4675 VULKAN_HPP_NODISCARD uint32_t getImageViewHandleNVX( const ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT;
4676
4677 // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html
4678 VULKAN_HPP_NODISCARD uint64_t getImageViewHandle64NVX( const ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT;
4679
4680 //=== VK_KHR_device_group ===
4681
4682 // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see
4683 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html
4684 VULKAN_HPP_NODISCARD PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex,
4685 uint32_t localDeviceIndex,
4686 uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
4687
4688 # if defined( VK_USE_PLATFORM_WIN32_KHR )
4689 //=== VK_KHR_external_memory_win32 ===
4690
4691 // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html
4692 VULKAN_HPP_NODISCARD typename ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
4693
4694 // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see
4695 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html
4696 VULKAN_HPP_NODISCARD typename ResultValueType<MemoryWin32HandlePropertiesKHR>::type
4697 getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle ) const;
4698 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
4699
4700 //=== VK_KHR_external_memory_fd ===
4701
4702 // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html
4703 VULKAN_HPP_NODISCARD typename ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
4704
4705 // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html
4706 VULKAN_HPP_NODISCARD typename ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType,
4707 int fd ) const;
4708
4709 # if defined( VK_USE_PLATFORM_WIN32_KHR )
4710 //=== VK_KHR_external_semaphore_win32 ===
4711
4712 // wrapper function for command vkImportSemaphoreWin32HandleKHR, see
4713 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html
4714 typename ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
4715
4716 // wrapper function for command vkGetSemaphoreWin32HandleKHR, see
4717 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html
4718 VULKAN_HPP_NODISCARD typename ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
4719 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
4720
4721 //=== VK_KHR_external_semaphore_fd ===
4722
4723 // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html
4724 typename ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
4725
4726 // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html
4727 VULKAN_HPP_NODISCARD typename ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
4728
4729 //=== VK_KHR_descriptor_update_template ===
4730
4731 // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see
4732 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html
4733 VULKAN_HPP_NODISCARD typename ResultValueType<DescriptorUpdateTemplate>::type
4734 createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const & createInfo,
4735 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4736
4737 // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see
4738 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html
4739 void
4740 destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ),
4741 Optional<const AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
4742
4743 //=== VK_EXT_display_control ===
4744
4745 // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html
4746 typename ResultValueType<void>::type displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display,
4747 const DisplayPowerInfoEXT & displayPowerInfo ) const;
4748
4749 // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html
4750 VULKAN_HPP_NODISCARD typename ResultValueType<Fence>::type
4751 registerEventEXT( DeviceEventInfoEXT const & deviceEventInfo,
4752 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4753
4754 // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html
4755 VULKAN_HPP_NODISCARD typename ResultValueType<Fence>::type
4756 registerDisplayEventEXT( DisplayKHR const & display,
4757 DisplayEventInfoEXT const & displayEventInfo,
4758 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4759
4760 //=== VK_EXT_hdr_metadata ===
4761
4762 // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html
4763 void setHdrMetadataEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains,
4764 ArrayProxy<const HdrMetadataEXT> const & metadata ) const;
4765
4766 //=== VK_KHR_create_renderpass2 ===
4767
4768 // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html
4769 VULKAN_HPP_NODISCARD typename ResultValueType<RenderPass>::type
4770 createRenderPass2KHR( RenderPassCreateInfo2 const & createInfo,
4771 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4772
4773 # if defined( VK_USE_PLATFORM_WIN32_KHR )
4774 //=== VK_KHR_external_fence_win32 ===
4775
4776 // wrapper function for command vkImportFenceWin32HandleKHR, see
4777 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html
4778 typename ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
4779
4780 // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html
4781 VULKAN_HPP_NODISCARD typename ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
4782 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
4783
4784 //=== VK_KHR_external_fence_fd ===
4785
4786 // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html
4787 typename ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
4788
4789 // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html
4790 VULKAN_HPP_NODISCARD typename ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
4791
4792 //=== VK_KHR_performance_query ===
4793
4794 // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html
4795 typename ResultValueType<void>::type acquireProfilingLockKHR( const AcquireProfilingLockInfoKHR & info ) const;
4796
4797 // wrapper function for command vkReleaseProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseProfilingLockKHR.html
4798 void releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT;
4799
4800 //=== VK_EXT_debug_utils ===
4801
4802 // wrapper function for command vkSetDebugUtilsObjectNameEXT, see
4803 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html
4804 typename ResultValueType<void>::type setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo ) const;
4805
4806 // wrapper function for command vkSetDebugUtilsObjectNameEXT, see
4807 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html
4808 template <typename HandleType>
4809 typename ResultValueType<void>::type setDebugUtilsObjectNameEXT( HandleType const & handle, std::string const & name ) const;
4810
4811 // wrapper function for command vkSetDebugUtilsObjectTagEXT, see
4812 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html
4813 typename ResultValueType<void>::type setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo ) const;
4814
4815 // wrapper function for command vkSetDebugUtilsObjectTagEXT, see
4816 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html
4817 template <typename HandleType, typename TagType>
4818 typename ResultValueType<void>::type setDebugUtilsObjectTagEXT( HandleType const & handle, uint64_t name, TagType const & tag ) const;
4819
4820 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
4821 //=== VK_ANDROID_external_memory_android_hardware_buffer ===
4822
4823 // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see
4824 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html
4825 VULKAN_HPP_NODISCARD Result getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer * buffer,
4826 AndroidHardwareBufferPropertiesANDROID * pProperties ) const VULKAN_HPP_NOEXCEPT;
4827
4828 // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see
4829 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html
4830 VULKAN_HPP_NODISCARD typename ResultValueType<AndroidHardwareBufferPropertiesANDROID>::type
4831 getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
4832
4833 // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see
4834 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html
4835 template <typename X, typename Y, typename... Z>
4836 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
4837 getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
4838
4839 // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see
4840 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html
4841 VULKAN_HPP_NODISCARD typename ResultValueType<struct AHardwareBuffer *>::type
4842 getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info ) const;
4843 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4844
4845 # if defined( VK_ENABLE_BETA_EXTENSIONS )
4846 //=== VK_AMDX_shader_enqueue ===
4847
4848 // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see
4849 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html
4850 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Pipeline>>::type
4851 createExecutionGraphPipelinesAMDX( Optional<const PipelineCache> const & pipelineCache,
4852 ArrayProxy<ExecutionGraphPipelineCreateInfoAMDX> const & createInfos,
4853 Optional<const AllocationCallbacks> allocator = nullptr ) const;
4854
4855 // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see
4856 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html
4857 VULKAN_HPP_NODISCARD typename ResultValueType<Pipeline>::type
4858 createExecutionGraphPipelineAMDX( Optional<const PipelineCache> const & pipelineCache,
4859 ExecutionGraphPipelineCreateInfoAMDX const & createInfo,
4860 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4861 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
4862
4863 //=== VK_KHR_get_memory_requirements2 ===
4864
4865 // wrapper function for command vkGetImageMemoryRequirements2KHR, see
4866 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html
4867 VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4868
4869 // wrapper function for command vkGetImageMemoryRequirements2KHR, see
4870 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html
4871 template <typename X, typename Y, typename... Z>
4872 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4873
4874 // wrapper function for command vkGetBufferMemoryRequirements2KHR, see
4875 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html
4876 VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4877
4878 // wrapper function for command vkGetBufferMemoryRequirements2KHR, see
4879 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html
4880 template <typename X, typename Y, typename... Z>
4881 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4882
4883 // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see
4884 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html
4885 VULKAN_HPP_NODISCARD std::vector<SparseImageMemoryRequirements2>
4886 getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info ) const;
4887
4888 //=== VK_KHR_acceleration_structure ===
4889
4890 // wrapper function for command vkCreateAccelerationStructureKHR, see
4891 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html
4892 VULKAN_HPP_NODISCARD typename ResultValueType<AccelerationStructureKHR>::type
4893 createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const & createInfo,
4894 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4895
4896 // wrapper function for command vkBuildAccelerationStructuresKHR, see
4897 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html
4898 VULKAN_HPP_NODISCARD Result
4899 buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
4900 ArrayProxy<const AccelerationStructureBuildGeometryInfoKHR> const & infos,
4901 ArrayProxy<const AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const;
4902
4903 // wrapper function for command vkCopyAccelerationStructureKHR, see
4904 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html
4905 VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
4906 const CopyAccelerationStructureInfoKHR & info ) const;
4907
4908 // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see
4909 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html
4910 VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
4911 const CopyAccelerationStructureToMemoryInfoKHR & info ) const;
4912
4913 // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see
4914 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html
4915 VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
4916 const CopyMemoryToAccelerationStructureInfoKHR & info ) const;
4917
4918 // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see
4919 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html
4920 template <typename DataType>
4921 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataType>>::type
4922 writeAccelerationStructuresPropertiesKHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
4923 QueryType queryType,
4924 size_t dataSize,
4925 size_t stride ) const;
4926
4927 // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see
4928 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html
4929 template <typename DataType>
4930 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type writeAccelerationStructuresPropertyKHR(
4931 ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures, QueryType queryType, size_t stride ) const;
4932
4933 // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see
4934 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html
4935 VULKAN_HPP_NODISCARD DeviceAddress getAccelerationStructureAddressKHR( const AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
4936
4937 // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see
4938 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html
4939 VULKAN_HPP_NODISCARD AccelerationStructureCompatibilityKHR
4940 getAccelerationStructureCompatibilityKHR( const AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT;
4941
4942 // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see
4943 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html
4944 VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR
4945 getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType,
4946 const AccelerationStructureBuildGeometryInfoKHR & buildInfo,
4947 ArrayProxy<const uint32_t> const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
4948
4949 //=== VK_KHR_ray_tracing_pipeline ===
4950
4951 // wrapper function for command vkCreateRayTracingPipelinesKHR, see
4952 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html
4953 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Pipeline>>::type
4954 createRayTracingPipelinesKHR( Optional<const DeferredOperationKHR> const & deferredOperation,
4955 Optional<const PipelineCache> const & pipelineCache,
4956 ArrayProxy<RayTracingPipelineCreateInfoKHR> const & createInfos,
4957 Optional<const AllocationCallbacks> allocator = nullptr ) const;
4958
4959 // wrapper function for command vkCreateRayTracingPipelinesKHR, see
4960 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html
4961 VULKAN_HPP_NODISCARD typename ResultValueType<Pipeline>::type
4962 createRayTracingPipelineKHR( Optional<const DeferredOperationKHR> const & deferredOperation,
4963 Optional<const PipelineCache> const & pipelineCache,
4964 RayTracingPipelineCreateInfoKHR const & createInfo,
4965 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4966
4967 //=== VK_KHR_sampler_ycbcr_conversion ===
4968
4969 // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see
4970 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html
4971 VULKAN_HPP_NODISCARD typename ResultValueType<SamplerYcbcrConversion>::type
4972 createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const & createInfo,
4973 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4974
4975 // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see
4976 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html
4977 void destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ),
4978 Optional<const AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
4979
4980 //=== VK_KHR_bind_memory2 ===
4981
4982 // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html
4983 typename ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfo> const & bindInfos ) const;
4984
4985 // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html
4986 typename ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfo> const & bindInfos ) const;
4987
4988 //=== VK_EXT_validation_cache ===
4989
4990 // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html
4991 VULKAN_HPP_NODISCARD typename ResultValueType<ValidationCacheEXT>::type
4992 createValidationCacheEXT( ValidationCacheCreateInfoEXT const & createInfo,
4993 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4994
4995 //=== VK_NV_ray_tracing ===
4996
4997 // wrapper function for command vkCreateAccelerationStructureNV, see
4998 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html
4999 VULKAN_HPP_NODISCARD typename ResultValueType<AccelerationStructureNV>::type
5000 createAccelerationStructureNV( AccelerationStructureCreateInfoNV const & createInfo,
5001 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5002
5003 // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see
5004 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html
5005 VULKAN_HPP_NODISCARD MemoryRequirements2KHR
5006 getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
5007
5008 // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see
5009 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html
5010 template <typename X, typename Y, typename... Z>
5011 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5012 getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
5013
5014 // wrapper function for command vkBindAccelerationStructureMemoryNV, see
5015 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html
5016 typename ResultValueType<void>::type bindAccelerationStructureMemoryNV( ArrayProxy<const BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const;
5017
5018 // wrapper function for command vkCreateRayTracingPipelinesNV, see
5019 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html
5020 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Pipeline>>::type
5021 createRayTracingPipelinesNV( Optional<const PipelineCache> const & pipelineCache,
5022 ArrayProxy<RayTracingPipelineCreateInfoNV> const & createInfos,
5023 Optional<const AllocationCallbacks> allocator = nullptr ) const;
5024
5025 // wrapper function for command vkCreateRayTracingPipelinesNV, see
5026 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html
5027 VULKAN_HPP_NODISCARD typename ResultValueType<Pipeline>::type
5028 createRayTracingPipelineNV( Optional<const PipelineCache> const & pipelineCache,
5029 RayTracingPipelineCreateInfoNV const & createInfo,
5030 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5031
5032 //=== VK_KHR_maintenance3 ===
5033
5034 // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see
5035 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html
5036 VULKAN_HPP_NODISCARD DescriptorSetLayoutSupport
5037 getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
5038
5039 // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see
5040 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html
5041 template <typename X, typename Y, typename... Z>
5042 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5043 getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
5044
5045 //=== VK_EXT_external_memory_host ===
5046
5047 // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see
5048 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html
5049 VULKAN_HPP_NODISCARD typename ResultValueType<MemoryHostPointerPropertiesEXT>::type
5050 getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void * pHostPointer ) const;
5051
5052 //=== VK_EXT_calibrated_timestamps ===
5053
5054 // wrapper function for command vkGetCalibratedTimestampsEXT, see
5055 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html
5056 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<std::vector<uint64_t>, uint64_t>>::type
5057 getCalibratedTimestampsEXT( ArrayProxy<const CalibratedTimestampInfoKHR> const & timestampInfos ) const;
5058
5059 // wrapper function for command vkGetCalibratedTimestampsEXT, see
5060 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html
5061 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<uint64_t, uint64_t>>::type
5062 getCalibratedTimestampEXT( const CalibratedTimestampInfoKHR & timestampInfo ) const;
5063
5064 //=== VK_KHR_timeline_semaphore ===
5065
5066 // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html
5067 VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( const SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const;
5068
5069 // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html
5070 typename ResultValueType<void>::type signalSemaphoreKHR( const SemaphoreSignalInfo & signalInfo ) const;
5071
5072 //=== VK_INTEL_performance_query ===
5073
5074 // wrapper function for command vkInitializePerformanceApiINTEL, see
5075 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html
5076 typename ResultValueType<void>::type initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo ) const;
5077
5078 // wrapper function for command vkUninitializePerformanceApiINTEL, see
5079 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUninitializePerformanceApiINTEL.html
5080 void uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT;
5081
5082 // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see
5083 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html
5084 VULKAN_HPP_NODISCARD typename ResultValueType<PerformanceConfigurationINTEL>::type
5085 acquirePerformanceConfigurationINTEL( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5086
5087 // wrapper function for command vkGetPerformanceParameterINTEL, see
5088 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html
5089 VULKAN_HPP_NODISCARD typename ResultValueType<PerformanceValueINTEL>::type getPerformanceParameterINTEL( PerformanceParameterTypeINTEL parameter ) const;
5090
5091 //=== VK_EXT_buffer_device_address ===
5092
5093 // wrapper function for command vkGetBufferDeviceAddressEXT, see
5094 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html
5095 VULKAN_HPP_NODISCARD DeviceAddress getBufferAddressEXT( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
5096
5097 # if defined( VK_USE_PLATFORM_WIN32_KHR )
5098 //=== VK_EXT_full_screen_exclusive ===
5099
5100 // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see
5101 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html
5102 VULKAN_HPP_NODISCARD typename ResultValueType<DeviceGroupPresentModeFlagsKHR>::type
5103 getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
5104 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
5105
5106 //=== VK_KHR_buffer_device_address ===
5107
5108 // wrapper function for command vkGetBufferDeviceAddressKHR, see
5109 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html
5110 VULKAN_HPP_NODISCARD DeviceAddress getBufferAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
5111
5112 // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see
5113 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html
5114 VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
5115
5116 // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see
5117 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html
5118 VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddressKHR( const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
5119
5120 //=== VK_KHR_deferred_host_operations ===
5121
5122 // wrapper function for command vkCreateDeferredOperationKHR, see
5123 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html
5124 VULKAN_HPP_NODISCARD typename ResultValueType<DeferredOperationKHR>::type
5125 createDeferredOperationKHR( Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5126
5127 //=== VK_KHR_pipeline_executable_properties ===
5128
5129 // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see
5130 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html
5131 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PipelineExecutablePropertiesKHR>>::type
5132 getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo ) const;
5133
5134 // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see
5135 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html
5136 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PipelineExecutableStatisticKHR>>::type
5137 getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo ) const;
5138
5139 // wrapper function for command vkGetPipelineExecutableInternalRepresentationsKHR, see
5140 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableInternalRepresentationsKHR.html
5141 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PipelineExecutableInternalRepresentationKHR>>::type
5142 getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo ) const;
5143
5144 //=== VK_EXT_host_image_copy ===
5145
5146 // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html
5147 typename ResultValueType<void>::type copyMemoryToImageEXT( const CopyMemoryToImageInfo & copyMemoryToImageInfo ) const;
5148
5149 // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html
5150 typename ResultValueType<void>::type copyImageToMemoryEXT( const CopyImageToMemoryInfo & copyImageToMemoryInfo ) const;
5151
5152 // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html
5153 typename ResultValueType<void>::type copyImageToImageEXT( const CopyImageToImageInfo & copyImageToImageInfo ) const;
5154
5155 // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html
5156 typename ResultValueType<void>::type transitionImageLayoutEXT( ArrayProxy<const HostImageLayoutTransitionInfo> const & transitions ) const;
5157
5158 //=== VK_KHR_map_memory2 ===
5159
5160 // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html
5161 VULKAN_HPP_NODISCARD typename ResultValueType<void *>::type mapMemory2KHR( const MemoryMapInfo & memoryMapInfo ) const;
5162
5163 // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html
5164 typename ResultValueType<void>::type unmapMemory2KHR( const MemoryUnmapInfo & memoryUnmapInfo ) const;
5165
5166 //=== VK_EXT_swapchain_maintenance1 ===
5167
5168 // wrapper function for command vkReleaseSwapchainImagesEXT, see
5169 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html
5170 typename ResultValueType<void>::type releaseSwapchainImagesEXT( const ReleaseSwapchainImagesInfoKHR & releaseInfo ) const;
5171
5172 //=== VK_NV_device_generated_commands ===
5173
5174 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see
5175 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html
5176 VULKAN_HPP_NODISCARD MemoryRequirements2
5177 getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
5178
5179 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see
5180 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html
5181 template <typename X, typename Y, typename... Z>
5182 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5183 getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
5184
5185 // wrapper function for command vkCreateIndirectCommandsLayoutNV, see
5186 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html
5187 VULKAN_HPP_NODISCARD typename ResultValueType<IndirectCommandsLayoutNV>::type
5188 createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const & createInfo,
5189 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5190
5191 //=== VK_EXT_private_data ===
5192
5193 // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html
5194 VULKAN_HPP_NODISCARD typename ResultValueType<PrivateDataSlot>::type
5195 createPrivateDataSlotEXT( PrivateDataSlotCreateInfo const & createInfo,
5196 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5197
5198 // wrapper function for command vkDestroyPrivateDataSlotEXT, see
5199 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html
5200 void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ),
5201 Optional<const AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
5202
5203 // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html
5204 typename ResultValueType<void>::type
5205 setPrivateDataEXT( ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const;
5206
5207 // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html
5208 VULKAN_HPP_NODISCARD uint64_t getPrivateDataEXT( ObjectType objectType,
5209 uint64_t objectHandle,
5210 VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT;
5211
5212 //=== VK_KHR_video_encode_queue ===
5213
5214 // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see
5215 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html
5216 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<VideoEncodeSessionParametersFeedbackInfoKHR, std::vector<uint8_t>>>::type
5217 getEncodedVideoSessionParametersKHR( const VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const;
5218
5219 // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see
5220 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html
5221 template <typename X, typename Y, typename... Z>
5222 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<StructureChain<X, Y, Z...>, std::vector<uint8_t>>>::type
5223 getEncodedVideoSessionParametersKHR( const VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const;
5224
5225 # if defined( VK_ENABLE_BETA_EXTENSIONS )
5226 //=== VK_NV_cuda_kernel_launch ===
5227
5228 // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html
5229 VULKAN_HPP_NODISCARD typename ResultValueType<CudaModuleNV>::type
5230 createCudaModuleNV( CudaModuleCreateInfoNV const & createInfo,
5231 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5232
5233 // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html
5234 VULKAN_HPP_NODISCARD typename ResultValueType<CudaFunctionNV>::type
5235 createCudaFunctionNV( CudaFunctionCreateInfoNV const & createInfo,
5236 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5237 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
5238
5239 # if defined( VK_USE_PLATFORM_METAL_EXT )
5240 //=== VK_EXT_metal_objects ===
5241
5242 // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html
5243 void exportMetalObjectsEXT( ExportMetalObjectsInfoEXT & metalObjectsInfo ) const VULKAN_HPP_NOEXCEPT;
5244 # endif /*VK_USE_PLATFORM_METAL_EXT*/
5245
5246 //=== VK_EXT_descriptor_buffer ===
5247
5248 // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html
5249 void getDescriptorEXT( const DescriptorGetInfoEXT & descriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT;
5250
5251 // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html
5252 template <typename DescriptorType>
5253 VULKAN_HPP_NODISCARD DescriptorType getDescriptorEXT( const DescriptorGetInfoEXT & descriptorInfo ) const VULKAN_HPP_NOEXCEPT;
5254
5255 // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see
5256 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html
5257 template <typename DataType>
5258 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5259 getBufferOpaqueCaptureDescriptorDataEXT( const BufferCaptureDescriptorDataInfoEXT & info ) const;
5260
5261 // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see
5262 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html
5263 template <typename DataType>
5264 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5265 getImageOpaqueCaptureDescriptorDataEXT( const ImageCaptureDescriptorDataInfoEXT & info ) const;
5266
5267 // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see
5268 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html
5269 template <typename DataType>
5270 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5271 getImageViewOpaqueCaptureDescriptorDataEXT( const ImageViewCaptureDescriptorDataInfoEXT & info ) const;
5272
5273 // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see
5274 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html
5275 template <typename DataType>
5276 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5277 getSamplerOpaqueCaptureDescriptorDataEXT( const SamplerCaptureDescriptorDataInfoEXT & info ) const;
5278
5279 // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see
5280 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html
5281 template <typename DataType>
5282 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5283 getAccelerationStructureOpaqueCaptureDescriptorDataEXT( const AccelerationStructureCaptureDescriptorDataInfoEXT & info ) const;
5284
5285 //=== VK_EXT_device_fault ===
5286
5287 // wrapper function for command vkGetDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultInfoEXT.html
5288 VULKAN_HPP_NODISCARD Result getFaultInfoEXT( DeviceFaultCountsEXT * pFaultCounts, DeviceFaultInfoEXT * pFaultInfo ) const VULKAN_HPP_NOEXCEPT;
5289
5290 # if defined( VK_USE_PLATFORM_FUCHSIA )
5291 //=== VK_FUCHSIA_external_memory ===
5292
5293 // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see
5294 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html
5295 VULKAN_HPP_NODISCARD typename ResultValueType<zx_handle_t>::type
5296 getMemoryZirconHandleFUCHSIA( const MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
5297
5298 // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see
5299 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html
5300 VULKAN_HPP_NODISCARD typename ResultValueType<MemoryZirconHandlePropertiesFUCHSIA>::type
5301 getMemoryZirconHandlePropertiesFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle ) const;
5302 # endif /*VK_USE_PLATFORM_FUCHSIA*/
5303
5304 # if defined( VK_USE_PLATFORM_FUCHSIA )
5305 //=== VK_FUCHSIA_external_semaphore ===
5306
5307 // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see
5308 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html
5309 typename ResultValueType<void>::type
5310 importSemaphoreZirconHandleFUCHSIA( const ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const;
5311
5312 // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see
5313 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html
5314 VULKAN_HPP_NODISCARD typename ResultValueType<zx_handle_t>::type
5315 getSemaphoreZirconHandleFUCHSIA( const SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
5316 # endif /*VK_USE_PLATFORM_FUCHSIA*/
5317
5318 # if defined( VK_USE_PLATFORM_FUCHSIA )
5319 //=== VK_FUCHSIA_buffer_collection ===
5320
5321 // wrapper function for command vkCreateBufferCollectionFUCHSIA, see
5322 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html
5323 VULKAN_HPP_NODISCARD typename ResultValueType<BufferCollectionFUCHSIA>::type
5324 createBufferCollectionFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & createInfo,
5325 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5326 # endif /*VK_USE_PLATFORM_FUCHSIA*/
5327
5328 //=== VK_NV_external_memory_rdma ===
5329
5330 // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html
5331 VULKAN_HPP_NODISCARD typename ResultValueType<RemoteAddressNV>::type
5332 getMemoryRemoteAddressNV( const MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const;
5333
5334 //=== VK_EXT_pipeline_properties ===
5335
5336 // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html
5337 VULKAN_HPP_NODISCARD typename ResultValueType<BaseOutStructure>::type getPipelinePropertiesEXT( const PipelineInfoEXT & pipelineInfo ) const;
5338
5339 //=== VK_EXT_opacity_micromap ===
5340
5341 // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html
5342 VULKAN_HPP_NODISCARD typename ResultValueType<MicromapEXT>::type
5343 createMicromapEXT( MicromapCreateInfoEXT const & createInfo,
5344 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5345
5346 // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html
5347 VULKAN_HPP_NODISCARD Result buildMicromapsEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
5348 ArrayProxy<const MicromapBuildInfoEXT> const & infos ) const;
5349
5350 // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html
5351 VULKAN_HPP_NODISCARD Result copyMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyMicromapInfoEXT & info ) const;
5352
5353 // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html
5354 VULKAN_HPP_NODISCARD Result copyMicromapToMemoryEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
5355 const CopyMicromapToMemoryInfoEXT & info ) const;
5356
5357 // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html
5358 VULKAN_HPP_NODISCARD Result copyMemoryToMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
5359 const CopyMemoryToMicromapInfoEXT & info ) const;
5360
5361 // wrapper function for command vkWriteMicromapsPropertiesEXT, see
5362 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html
5363 template <typename DataType>
5364 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataType>>::type writeMicromapsPropertiesEXT(
5365 ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps, QueryType queryType, size_t dataSize, size_t stride ) const;
5366
5367 // wrapper function for command vkWriteMicromapsPropertiesEXT, see
5368 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html
5369 template <typename DataType>
5370 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5371 writeMicromapsPropertyEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps, QueryType queryType, size_t stride ) const;
5372
5373 // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see
5374 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html
5375 VULKAN_HPP_NODISCARD AccelerationStructureCompatibilityKHR
5376 getMicromapCompatibilityEXT( const MicromapVersionInfoEXT & versionInfo ) const VULKAN_HPP_NOEXCEPT;
5377
5378 // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html
5379 VULKAN_HPP_NODISCARD MicromapBuildSizesInfoEXT getMicromapBuildSizesEXT( AccelerationStructureBuildTypeKHR buildType,
5380 const MicromapBuildInfoEXT & buildInfo ) const VULKAN_HPP_NOEXCEPT;
5381
5382 //=== VK_KHR_maintenance4 ===
5383
5384 // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see
5385 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html
5386 VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirementsKHR( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
5387
5388 // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see
5389 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html
5390 template <typename X, typename Y, typename... Z>
5391 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirementsKHR( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
5392
5393 // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see
5394 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html
5395 VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirementsKHR( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
5396
5397 // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see
5398 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html
5399 template <typename X, typename Y, typename... Z>
5400 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirementsKHR( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
5401
5402 // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see
5403 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html
5404 VULKAN_HPP_NODISCARD std::vector<SparseImageMemoryRequirements2> getImageSparseMemoryRequirementsKHR( const DeviceImageMemoryRequirements & info ) const;
5405
5406 //=== VK_VALVE_descriptor_set_host_mapping ===
5407
5408 // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see
5409 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html
5410 VULKAN_HPP_NODISCARD DescriptorSetLayoutHostMappingInfoVALVE
5411 getDescriptorSetLayoutHostMappingInfoVALVE( const DescriptorSetBindingReferenceVALVE & bindingReference ) const VULKAN_HPP_NOEXCEPT;
5412
5413 //=== VK_NV_device_generated_commands_compute ===
5414
5415 // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see
5416 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html
5417 VULKAN_HPP_NODISCARD MemoryRequirements2
5418 getPipelineIndirectMemoryRequirementsNV( const ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
5419
5420 // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see
5421 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html
5422 template <typename X, typename Y, typename... Z>
5423 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5424 getPipelineIndirectMemoryRequirementsNV( const ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
5425
5426 // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see
5427 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html
5428 VULKAN_HPP_NODISCARD DeviceAddress getPipelineIndirectAddressNV( const PipelineIndirectDeviceAddressInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
5429
5430 # if defined( VK_USE_PLATFORM_OHOS )
5431 //=== VK_OHOS_external_memory ===
5432
5433 // wrapper function for command vkGetNativeBufferPropertiesOHOS, see
5434 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html
5435 VULKAN_HPP_NODISCARD Result getNativeBufferPropertiesOHOS( const struct OH_NativeBuffer * buffer,
5436 NativeBufferPropertiesOHOS * pProperties ) const VULKAN_HPP_NOEXCEPT;
5437
5438 // wrapper function for command vkGetNativeBufferPropertiesOHOS, see
5439 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html
5440 VULKAN_HPP_NODISCARD typename ResultValueType<NativeBufferPropertiesOHOS>::type
5441 getNativeBufferPropertiesOHOS( const struct OH_NativeBuffer & buffer ) const;
5442
5443 // wrapper function for command vkGetNativeBufferPropertiesOHOS, see
5444 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html
5445 template <typename X, typename Y, typename... Z>
5446 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
5447 getNativeBufferPropertiesOHOS( const struct OH_NativeBuffer & buffer ) const;
5448
5449 // wrapper function for command vkGetMemoryNativeBufferOHOS, see
5450 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html
5451 VULKAN_HPP_NODISCARD typename ResultValueType<struct OH_NativeBuffer *>::type
5452 getMemoryNativeBufferOHOS( const MemoryGetNativeBufferInfoOHOS & info ) const;
5453 # endif /*VK_USE_PLATFORM_OHOS*/
5454
5455 //=== VK_ARM_tensors ===
5456
5457 // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html
5458 VULKAN_HPP_NODISCARD typename ResultValueType<TensorARM>::type
5459 createTensorARM( TensorCreateInfoARM const & createInfo,
5460 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5461
5462 // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html
5463 VULKAN_HPP_NODISCARD typename ResultValueType<TensorViewARM>::type
5464 createTensorViewARM( TensorViewCreateInfoARM const & createInfo,
5465 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5466
5467 // wrapper function for command vkGetTensorMemoryRequirementsARM, see
5468 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html
5469 VULKAN_HPP_NODISCARD MemoryRequirements2 getTensorMemoryRequirementsARM( const TensorMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT;
5470
5471 // wrapper function for command vkGetTensorMemoryRequirementsARM, see
5472 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html
5473 template <typename X, typename Y, typename... Z>
5474 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getTensorMemoryRequirementsARM( const TensorMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT;
5475
5476 // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html
5477 typename ResultValueType<void>::type bindTensorMemoryARM( ArrayProxy<const BindTensorMemoryInfoARM> const & bindInfos ) const;
5478
5479 // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see
5480 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html
5481 VULKAN_HPP_NODISCARD MemoryRequirements2 getTensorMemoryRequirementsARM( const DeviceTensorMemoryRequirementsARM & info ) const VULKAN_HPP_NOEXCEPT;
5482
5483 // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see
5484 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html
5485 template <typename X, typename Y, typename... Z>
5486 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5487 getTensorMemoryRequirementsARM( const DeviceTensorMemoryRequirementsARM & info ) const VULKAN_HPP_NOEXCEPT;
5488
5489 // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see
5490 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html
5491 template <typename DataType>
5492 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5493 getTensorOpaqueCaptureDescriptorDataARM( const TensorCaptureDescriptorDataInfoARM & info ) const;
5494
5495 // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see
5496 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html
5497 template <typename DataType>
5498 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type
5499 getTensorViewOpaqueCaptureDescriptorDataARM( const TensorViewCaptureDescriptorDataInfoARM & info ) const;
5500
5501 //=== VK_EXT_shader_module_identifier ===
5502
5503 // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see
5504 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html
5505 VULKAN_HPP_NODISCARD ShaderModuleIdentifierEXT
5506 getShaderModuleCreateInfoIdentifierEXT( const ShaderModuleCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
5507
5508 //=== VK_NV_optical_flow ===
5509
5510 // wrapper function for command vkCreateOpticalFlowSessionNV, see
5511 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html
5512 VULKAN_HPP_NODISCARD typename ResultValueType<OpticalFlowSessionNV>::type
5513 createOpticalFlowSessionNV( OpticalFlowSessionCreateInfoNV const & createInfo,
5514 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5515
5516 //=== VK_KHR_maintenance5 ===
5517
5518 // wrapper function for command vkGetRenderingAreaGranularityKHR, see
5519 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html
5520 VULKAN_HPP_NODISCARD Extent2D getRenderingAreaGranularityKHR( const RenderingAreaInfo & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT;
5521
5522 // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see
5523 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html
5524 VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayoutKHR( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT;
5525
5526 // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see
5527 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html
5528 template <typename X, typename Y, typename... Z>
5529 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageSubresourceLayoutKHR( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT;
5530
5531 //=== VK_AMD_anti_lag ===
5532
5533 // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html
5534 void antiLagUpdateAMD( const AntiLagDataAMD & data ) const VULKAN_HPP_NOEXCEPT;
5535
5536 //=== VK_EXT_shader_object ===
5537
5538 // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html
5539 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<ShaderEXT>>::type
5540 createShadersEXT( ArrayProxy<ShaderCreateInfoEXT> const & createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
5541
5542 // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html
5543 VULKAN_HPP_NODISCARD typename ResultValueType<ShaderEXT>::type
5544 createShaderEXT( ShaderCreateInfoEXT const & createInfo,
5545 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5546
5547 //=== VK_KHR_pipeline_binary ===
5548
5549 // wrapper function for command vkCreatePipelineBinariesKHR, see
5550 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html
5551 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<PipelineBinaryKHR>>::type
5552 createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
5553
5554 // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html
5555 VULKAN_HPP_NODISCARD typename ResultValueType<PipelineBinaryKeyKHR>::type
5556 getPipelineKeyKHR( Optional<const PipelineCreateInfoKHR> pipelineCreateInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
5557
5558 // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html
5559 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<PipelineBinaryKeyKHR, std::vector<uint8_t>>>::type
5560 getPipelineBinaryDataKHR( const PipelineBinaryDataInfoKHR & info ) const;
5561
5562 // wrapper function for command vkReleaseCapturedPipelineDataKHR, see
5563 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html
5564 typename ResultValueType<void>::type
5565 releaseCapturedPipelineDataKHR( const ReleaseCapturedPipelineDataInfoKHR & info,
5566 Optional<const AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
5567
5568 //=== VK_QCOM_tile_properties ===
5569
5570 // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see
5571 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html
5572 VULKAN_HPP_NODISCARD typename ResultValueType<TilePropertiesQCOM>::type
5573 getDynamicRenderingTilePropertiesQCOM( const RenderingInfo & renderingInfo ) const;
5574
5575 //=== VK_KHR_swapchain_maintenance1 ===
5576
5577 // wrapper function for command vkReleaseSwapchainImagesKHR, see
5578 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html
5579 typename ResultValueType<void>::type releaseSwapchainImagesKHR( const ReleaseSwapchainImagesInfoKHR & releaseInfo ) const;
5580
5581 //=== VK_NV_cooperative_vector ===
5582
5583 // wrapper function for command vkConvertCooperativeVectorMatrixNV, see
5584 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html
5585 VULKAN_HPP_NODISCARD Result convertCooperativeVectorMatrixNV( const ConvertCooperativeVectorMatrixInfoNV & info ) const;
5586
5587 //=== VK_ARM_data_graph ===
5588
5589 // wrapper function for command vkCreateDataGraphPipelinesARM, see
5590 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html
5591 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<Pipeline>>::type
5592 createDataGraphPipelinesARM( Optional<const DeferredOperationKHR> const & deferredOperation,
5593 Optional<const PipelineCache> const & pipelineCache,
5594 ArrayProxy<DataGraphPipelineCreateInfoARM> const & createInfos,
5595 Optional<const AllocationCallbacks> allocator = nullptr ) const;
5596
5597 // wrapper function for command vkCreateDataGraphPipelinesARM, see
5598 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html
5599 VULKAN_HPP_NODISCARD typename ResultValueType<Pipeline>::type
5600 createDataGraphPipelineARM( Optional<const DeferredOperationKHR> const & deferredOperation,
5601 Optional<const PipelineCache> const & pipelineCache,
5602 DataGraphPipelineCreateInfoARM const & createInfo,
5603 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5604
5605 // wrapper function for command vkCreateDataGraphPipelineSessionARM, see
5606 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html
5607 VULKAN_HPP_NODISCARD typename ResultValueType<DataGraphPipelineSessionARM>::type
5608 createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const & createInfo,
5609 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5610
5611 // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see
5612 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html
5613 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataGraphPipelineSessionBindPointRequirementARM>>::type
5614 getDataGraphPipelineSessionBindPointRequirementsARM( const DataGraphPipelineSessionBindPointRequirementsInfoARM & info ) const;
5615
5616 // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see
5617 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html
5618 VULKAN_HPP_NODISCARD MemoryRequirements2
5619 getDataGraphPipelineSessionMemoryRequirementsARM( const DataGraphPipelineSessionMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT;
5620
5621 // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see
5622 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html
5623 template <typename X, typename Y, typename... Z>
5624 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5625 getDataGraphPipelineSessionMemoryRequirementsARM( const DataGraphPipelineSessionMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT;
5626
5627 // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see
5628 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html
5629 typename ResultValueType<void>::type
5630 bindDataGraphPipelineSessionMemoryARM( ArrayProxy<const BindDataGraphPipelineSessionMemoryInfoARM> const & bindInfos ) const;
5631
5632 // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see
5633 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html
5634 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataGraphPipelinePropertyARM>>::type
5635 getDataGraphPipelineAvailablePropertiesARM( const DataGraphPipelineInfoARM & pipelineInfo ) const;
5636
5637 // wrapper function for command vkGetDataGraphPipelinePropertiesARM, see
5638 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelinePropertiesARM.html
5639 VULKAN_HPP_NODISCARD Result getDataGraphPipelinePropertiesARM( const DataGraphPipelineInfoARM * pPipelineInfo,
5640 uint32_t propertiesCount,
5641 DataGraphPipelinePropertyQueryResultARM * pProperties ) const VULKAN_HPP_NOEXCEPT;
5642
5643 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
5644 //=== VK_QNX_external_memory_screen_buffer ===
5645
5646 // wrapper function for command vkGetScreenBufferPropertiesQNX, see
5647 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html
5648 VULKAN_HPP_NODISCARD Result getScreenBufferPropertiesQNX( const struct _screen_buffer * buffer,
5649 ScreenBufferPropertiesQNX * pProperties ) const VULKAN_HPP_NOEXCEPT;
5650
5651 // wrapper function for command vkGetScreenBufferPropertiesQNX, see
5652 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html
5653 VULKAN_HPP_NODISCARD typename ResultValueType<ScreenBufferPropertiesQNX>::type getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const;
5654
5655 // wrapper function for command vkGetScreenBufferPropertiesQNX, see
5656 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html
5657 template <typename X, typename Y, typename... Z>
5658 VULKAN_HPP_NODISCARD typename ResultValueType<StructureChain<X, Y, Z...>>::type
5659 getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const;
5660 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
5661
5662 //=== VK_KHR_calibrated_timestamps ===
5663
5664 // wrapper function for command vkGetCalibratedTimestampsKHR, see
5665 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html
5666 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<std::vector<uint64_t>, uint64_t>>::type
5667 getCalibratedTimestampsKHR( ArrayProxy<const CalibratedTimestampInfoKHR> const & timestampInfos ) const;
5668
5669 // wrapper function for command vkGetCalibratedTimestampsKHR, see
5670 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html
5671 VULKAN_HPP_NODISCARD typename ResultValueType<std::pair<uint64_t, uint64_t>>::type
5672 getCalibratedTimestampKHR( const CalibratedTimestampInfoKHR & timestampInfo ) const;
5673
5674 //=== VK_NV_external_compute_queue ===
5675
5676 // wrapper function for command vkCreateExternalComputeQueueNV, see
5677 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html
5678 VULKAN_HPP_NODISCARD typename ResultValueType<ExternalComputeQueueNV>::type
5679 createExternalComputeQueueNV( ExternalComputeQueueCreateInfoNV const & createInfo,
5680 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5681
5682 //=== VK_NV_cluster_acceleration_structure ===
5683
5684 // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see
5685 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html
5686 VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR
5687 getClusterAccelerationStructureBuildSizesNV( const ClusterAccelerationStructureInputInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
5688
5689 //=== VK_NV_partitioned_acceleration_structure ===
5690
5691 // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see
5692 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html
5693 VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR
5694 getPartitionedAccelerationStructuresBuildSizesNV( const PartitionedAccelerationStructureInstancesInputNV & info ) const VULKAN_HPP_NOEXCEPT;
5695
5696 //=== VK_EXT_device_generated_commands ===
5697
5698 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see
5699 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html
5700 VULKAN_HPP_NODISCARD MemoryRequirements2
5701 getGeneratedCommandsMemoryRequirementsEXT( const GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
5702
5703 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see
5704 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html
5705 template <typename X, typename Y, typename... Z>
5706 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
5707 getGeneratedCommandsMemoryRequirementsEXT( const GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
5708
5709 // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see
5710 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html
5711 VULKAN_HPP_NODISCARD typename ResultValueType<IndirectCommandsLayoutEXT>::type
5712 createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const & createInfo,
5713 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5714
5715 // wrapper function for command vkCreateIndirectExecutionSetEXT, see
5716 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html
5717 VULKAN_HPP_NODISCARD typename ResultValueType<IndirectExecutionSetEXT>::type
5718 createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const & createInfo,
5719 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
5720
5721 # if defined( VK_USE_PLATFORM_OHOS )
5722 //=== VK_OHOS_native_buffer ===
5723
5724 // wrapper function for command vkGetSwapchainGrallocUsageOHOS, see
5725 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainGrallocUsageOHOS.html
5726 VULKAN_HPP_NODISCARD typename ResultValueType<uint64_t>::type getSwapchainGrallocUsageOHOS( Format format, ImageUsageFlags imageUsage ) const;
5727 # endif /*VK_USE_PLATFORM_OHOS*/
5728
5729 # if defined( VK_USE_PLATFORM_METAL_EXT )
5730 //=== VK_EXT_external_memory_metal ===
5731
5732 // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html
5733 VULKAN_HPP_NODISCARD typename ResultValueType<void *>::type getMemoryMetalHandleEXT( const MemoryGetMetalHandleInfoEXT & getMetalHandleInfo ) const;
5734
5735 // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see
5736 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html
5737 template <typename HandleType>
5738 VULKAN_HPP_NODISCARD typename ResultValueType<MemoryMetalHandlePropertiesEXT>::type
5739 getMemoryMetalHandlePropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, HandleType const & handle ) const;
5740 # endif /*VK_USE_PLATFORM_METAL_EXT*/
5741
5742 private:
5743 VULKAN_HPP_NAMESPACE::Device m_device = {};
5744 const AllocationCallbacks * m_allocator = {};
5745 std::unique_ptr<detail::DeviceDispatcher> m_dispatcher;
5746 };
5747
5748 template <>
5749 struct isVulkanRAIIHandleType<Device>
5750 {
5751 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
5752 };
5753
5754 // wrapper class for handle VkAccelerationStructureKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureKHR.html
5755 class AccelerationStructureKHR
5756 {
5757 public:
5758 using CType = VkAccelerationStructureKHR;
5759 using CppType = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR;
5760
5761 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureKHR;
5762 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eAccelerationStructureKHR;
5763
5764 public:
5765 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
5766 AccelerationStructureKHR( Device const & device,
5767 AccelerationStructureCreateInfoKHR const & createInfo,
5768 Optional<const AllocationCallbacks> allocator = nullptr )
5769 {
5770 *this = device.createAccelerationStructureKHR( createInfo, allocator );
5771 }
5772 # endif
5773
5774 AccelerationStructureKHR( Device const & device,
5775 VkAccelerationStructureKHR accelerationStructure,
5776 Optional<const AllocationCallbacks> allocator = nullptr )
5777 : m_device( device )
5778 , m_accelerationStructureKHR( accelerationStructure )
5779 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
5780 , m_dispatcher( device.getDispatcher() )
5781 {
5782 }
5783
5784 AccelerationStructureKHR( std::nullptr_t ) {}
5785
5786 ~AccelerationStructureKHR()
5787 {
5788 clear();
5789 }
5790
5791 AccelerationStructureKHR() = delete;
5792 AccelerationStructureKHR( AccelerationStructureKHR const & ) = delete;
5793
5794 AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
5795 : m_device( exchange( rhs.m_device, {} ) )
5796 , m_accelerationStructureKHR( exchange( rhs.m_accelerationStructureKHR, {} ) )
5797 , m_allocator( exchange( rhs.m_allocator, {} ) )
5798 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
5799 {
5800 }
5801
5802 AccelerationStructureKHR & operator=( AccelerationStructureKHR const & ) = delete;
5803
5804 AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
5805 {
5806 if ( this != &rhs )
5807 {
5808 std::swap( m_device, rhs.m_device );
5809 std::swap( m_accelerationStructureKHR, rhs.m_accelerationStructureKHR );
5810 std::swap( m_allocator, rhs.m_allocator );
5811 std::swap( m_dispatcher, rhs.m_dispatcher );
5812 }
5813 return *this;
5814 }
5815
5816 VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
5817 {
5818 return m_accelerationStructureKHR;
5819 }
5820
5821 VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
5822 {
5823 return std::move( m_accelerationStructureKHR );
5824 }
5825
5826 operator VULKAN_HPP_NAMESPACE::AccelerationStructureKHR() const VULKAN_HPP_NOEXCEPT
5827 {
5828 return m_accelerationStructureKHR;
5829 }
5830
5831 void clear() VULKAN_HPP_NOEXCEPT
5832 {
5833 if ( m_accelerationStructureKHR )
5834 {
5835 getDispatcher()->vkDestroyAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
5836 static_cast<VkAccelerationStructureKHR>( m_accelerationStructureKHR ),
5837 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
5838 }
5839 m_device = nullptr;
5840 m_accelerationStructureKHR = nullptr;
5841 m_allocator = nullptr;
5842 m_dispatcher = nullptr;
5843 }
5844
5845 VULKAN_HPP_NAMESPACE::AccelerationStructureKHR release()
5846 {
5847 m_device = nullptr;
5848 m_allocator = nullptr;
5849 m_dispatcher = nullptr;
5850 return exchange( m_accelerationStructureKHR, nullptr );
5851 }
5852
5853 VULKAN_HPP_NAMESPACE::Device getDevice() const
5854 {
5855 return m_device;
5856 }
5857
5858 detail::DeviceDispatcher const * getDispatcher() const
5859 {
5860 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5861 return m_dispatcher;
5862 }
5863
5864 void swap( AccelerationStructureKHR & rhs ) VULKAN_HPP_NOEXCEPT
5865 {
5866 std::swap( m_device, rhs.m_device );
5867 std::swap( m_accelerationStructureKHR, rhs.m_accelerationStructureKHR );
5868 std::swap( m_allocator, rhs.m_allocator );
5869 std::swap( m_dispatcher, rhs.m_dispatcher );
5870 }
5871
5872 private:
5873 VULKAN_HPP_NAMESPACE::Device m_device = {};
5874 VULKAN_HPP_NAMESPACE::AccelerationStructureKHR m_accelerationStructureKHR = {};
5875 const AllocationCallbacks * m_allocator = {};
5876 detail::DeviceDispatcher const * m_dispatcher = nullptr;
5877 };
5878
5879 template <>
5880 struct isVulkanRAIIHandleType<AccelerationStructureKHR>
5881 {
5882 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
5883 };
5884
5885 // wrapper class for handle VkAccelerationStructureNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureNV.html
5886 class AccelerationStructureNV
5887 {
5888 public:
5889 using CType = VkAccelerationStructureNV;
5890 using CppType = VULKAN_HPP_NAMESPACE::AccelerationStructureNV;
5891
5892 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureNV;
5893 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eAccelerationStructureNV;
5894
5895 public:
5896 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
5897 AccelerationStructureNV( Device const & device,
5898 AccelerationStructureCreateInfoNV const & createInfo,
5899 Optional<const AllocationCallbacks> allocator = nullptr )
5900 {
5901 *this = device.createAccelerationStructureNV( createInfo, allocator );
5902 }
5903 # endif
5904
5905 AccelerationStructureNV( Device const & device, VkAccelerationStructureNV accelerationStructure, Optional<const AllocationCallbacks> allocator = nullptr )
5906 : m_device( device )
5907 , m_accelerationStructureNV( accelerationStructure )
5908 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
5909 , m_dispatcher( device.getDispatcher() )
5910 {
5911 }
5912
5913 AccelerationStructureNV( std::nullptr_t ) {}
5914
5915 ~AccelerationStructureNV()
5916 {
5917 clear();
5918 }
5919
5920 AccelerationStructureNV() = delete;
5921 AccelerationStructureNV( AccelerationStructureNV const & ) = delete;
5922
5923 AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
5924 : m_device( exchange( rhs.m_device, {} ) )
5925 , m_accelerationStructureNV( exchange( rhs.m_accelerationStructureNV, {} ) )
5926 , m_allocator( exchange( rhs.m_allocator, {} ) )
5927 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
5928 {
5929 }
5930
5931 AccelerationStructureNV & operator=( AccelerationStructureNV const & ) = delete;
5932
5933 AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
5934 {
5935 if ( this != &rhs )
5936 {
5937 std::swap( m_device, rhs.m_device );
5938 std::swap( m_accelerationStructureNV, rhs.m_accelerationStructureNV );
5939 std::swap( m_allocator, rhs.m_allocator );
5940 std::swap( m_dispatcher, rhs.m_dispatcher );
5941 }
5942 return *this;
5943 }
5944
5945 VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & operator*() const & VULKAN_HPP_NOEXCEPT
5946 {
5947 return m_accelerationStructureNV;
5948 }
5949
5950 VULKAN_HPP_NAMESPACE::AccelerationStructureNV const && operator*() const && VULKAN_HPP_NOEXCEPT
5951 {
5952 return std::move( m_accelerationStructureNV );
5953 }
5954
5955 operator VULKAN_HPP_NAMESPACE::AccelerationStructureNV() const VULKAN_HPP_NOEXCEPT
5956 {
5957 return m_accelerationStructureNV;
5958 }
5959
5960 void clear() VULKAN_HPP_NOEXCEPT
5961 {
5962 if ( m_accelerationStructureNV )
5963 {
5964 getDispatcher()->vkDestroyAccelerationStructureNV( static_cast<VkDevice>( m_device ),
5965 static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
5966 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
5967 }
5968 m_device = nullptr;
5969 m_accelerationStructureNV = nullptr;
5970 m_allocator = nullptr;
5971 m_dispatcher = nullptr;
5972 }
5973
5974 VULKAN_HPP_NAMESPACE::AccelerationStructureNV release()
5975 {
5976 m_device = nullptr;
5977 m_allocator = nullptr;
5978 m_dispatcher = nullptr;
5979 return exchange( m_accelerationStructureNV, nullptr );
5980 }
5981
5982 VULKAN_HPP_NAMESPACE::Device getDevice() const
5983 {
5984 return m_device;
5985 }
5986
5987 detail::DeviceDispatcher const * getDispatcher() const
5988 {
5989 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5990 return m_dispatcher;
5991 }
5992
5993 void swap( AccelerationStructureNV & rhs ) VULKAN_HPP_NOEXCEPT
5994 {
5995 std::swap( m_device, rhs.m_device );
5996 std::swap( m_accelerationStructureNV, rhs.m_accelerationStructureNV );
5997 std::swap( m_allocator, rhs.m_allocator );
5998 std::swap( m_dispatcher, rhs.m_dispatcher );
5999 }
6000
6001 //=== VK_NV_ray_tracing ===
6002
6003 // wrapper function for command vkGetAccelerationStructureHandleNV, see
6004 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html
6005 template <typename DataType>
6006 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataType>>::type getHandle( size_t dataSize ) const;
6007
6008 // wrapper function for command vkGetAccelerationStructureHandleNV, see
6009 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html
6010 template <typename DataType>
6011 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type getHandle() const;
6012
6013 private:
6014 VULKAN_HPP_NAMESPACE::Device m_device = {};
6015 VULKAN_HPP_NAMESPACE::AccelerationStructureNV m_accelerationStructureNV = {};
6016 const AllocationCallbacks * m_allocator = {};
6017 detail::DeviceDispatcher const * m_dispatcher = nullptr;
6018 };
6019
6020 template <>
6021 struct isVulkanRAIIHandleType<AccelerationStructureNV>
6022 {
6023 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
6024 };
6025
6026 // wrapper class for handle VkBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuffer.html
6027 class Buffer
6028 {
6029 public:
6030 using CType = VkBuffer;
6031 using CppType = VULKAN_HPP_NAMESPACE::Buffer;
6032
6033 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBuffer;
6034 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBuffer;
6035
6036 public:
6037 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
6038 Buffer( Device const & device, BufferCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
6039 {
6040 *this = device.createBuffer( createInfo, allocator );
6041 }
6042 # endif
6043
6044 Buffer( Device const & device, VkBuffer buffer, Optional<const AllocationCallbacks> allocator = nullptr )
6045 : m_device( device ), m_buffer( buffer ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) ), m_dispatcher( device.getDispatcher() )
6046 {
6047 }
6048
6049 Buffer( std::nullptr_t ) {}
6050
6051 ~Buffer()
6052 {
6053 clear();
6054 }
6055
6056 Buffer() = delete;
6057 Buffer( Buffer const & ) = delete;
6058
6059 Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
6060 : m_device( exchange( rhs.m_device, {} ) )
6061 , m_buffer( exchange( rhs.m_buffer, {} ) )
6062 , m_allocator( exchange( rhs.m_allocator, {} ) )
6063 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
6064 {
6065 }
6066
6067 Buffer & operator=( Buffer const & ) = delete;
6068
6069 Buffer & operator=( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
6070 {
6071 if ( this != &rhs )
6072 {
6073 std::swap( m_device, rhs.m_device );
6074 std::swap( m_buffer, rhs.m_buffer );
6075 std::swap( m_allocator, rhs.m_allocator );
6076 std::swap( m_dispatcher, rhs.m_dispatcher );
6077 }
6078 return *this;
6079 }
6080
6081 VULKAN_HPP_NAMESPACE::Buffer const & operator*() const & VULKAN_HPP_NOEXCEPT
6082 {
6083 return m_buffer;
6084 }
6085
6086 VULKAN_HPP_NAMESPACE::Buffer const && operator*() const && VULKAN_HPP_NOEXCEPT
6087 {
6088 return std::move( m_buffer );
6089 }
6090
6091 operator VULKAN_HPP_NAMESPACE::Buffer() const VULKAN_HPP_NOEXCEPT
6092 {
6093 return m_buffer;
6094 }
6095
6096 void clear() VULKAN_HPP_NOEXCEPT
6097 {
6098 if ( m_buffer )
6099 {
6100 getDispatcher()->vkDestroyBuffer(
6101 static_cast<VkDevice>( m_device ), static_cast<VkBuffer>( m_buffer ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6102 }
6103 m_device = nullptr;
6104 m_buffer = nullptr;
6105 m_allocator = nullptr;
6106 m_dispatcher = nullptr;
6107 }
6108
6109 VULKAN_HPP_NAMESPACE::Buffer release()
6110 {
6111 m_device = nullptr;
6112 m_allocator = nullptr;
6113 m_dispatcher = nullptr;
6114 return exchange( m_buffer, nullptr );
6115 }
6116
6117 VULKAN_HPP_NAMESPACE::Device getDevice() const
6118 {
6119 return m_device;
6120 }
6121
6122 detail::DeviceDispatcher const * getDispatcher() const
6123 {
6124 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6125 return m_dispatcher;
6126 }
6127
6128 void swap( Buffer & rhs ) VULKAN_HPP_NOEXCEPT
6129 {
6130 std::swap( m_device, rhs.m_device );
6131 std::swap( m_buffer, rhs.m_buffer );
6132 std::swap( m_allocator, rhs.m_allocator );
6133 std::swap( m_dispatcher, rhs.m_dispatcher );
6134 }
6135
6136 //=== VK_VERSION_1_0 ===
6137
6138 // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html
6139 typename ResultValueType<void>::type bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const;
6140
6141 // wrapper function for command vkGetBufferMemoryRequirements, see
6142 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html
6143 VULKAN_HPP_NODISCARD MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
6144
6145 protected:
6146 Buffer( VULKAN_HPP_NAMESPACE::Device device,
6147 VULKAN_HPP_NAMESPACE::Buffer buffer,
6148 const AllocationCallbacks * allocator,
6149 detail::DeviceDispatcher const * dispatcher ) VULKAN_HPP_NOEXCEPT
6150 : m_device( exchange( device, {} ) )
6151 , m_buffer( exchange( buffer, {} ) )
6152 , m_allocator( exchange( allocator, {} ) )
6153 , m_dispatcher( exchange( dispatcher, nullptr ) )
6154 {
6155 }
6156
6157 private:
6158 VULKAN_HPP_NAMESPACE::Device m_device = {};
6159 VULKAN_HPP_NAMESPACE::Buffer m_buffer = {};
6160 const AllocationCallbacks * m_allocator = {};
6161 detail::DeviceDispatcher const * m_dispatcher = nullptr;
6162 };
6163
6164 template <>
6165 struct isVulkanRAIIHandleType<Buffer>
6166 {
6167 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
6168 };
6169
6170 // wrapper class for handle VkBufferCollectionFUCHSIA, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionFUCHSIA.html
6171 # if defined( VK_USE_PLATFORM_FUCHSIA )
6172 class BufferCollectionFUCHSIA
6173 {
6174 public:
6175 using CType = VkBufferCollectionFUCHSIA;
6176 using CppType = VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA;
6177
6178 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferCollectionFUCHSIA;
6179 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA;
6180
6181 public:
6182 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
6183 BufferCollectionFUCHSIA( Device const & device,
6184 BufferCollectionCreateInfoFUCHSIA const & createInfo,
6185 Optional<const AllocationCallbacks> allocator = nullptr )
6186 {
6187 *this = device.createBufferCollectionFUCHSIA( createInfo, allocator );
6188 }
6189 # endif
6190
6191 BufferCollectionFUCHSIA( Device const & device, VkBufferCollectionFUCHSIA collection, Optional<const AllocationCallbacks> allocator = nullptr )
6192 : m_device( device )
6193 , m_bufferCollectionFUCHSIA( collection )
6194 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
6195 , m_dispatcher( device.getDispatcher() )
6196 {
6197 }
6198
6199 BufferCollectionFUCHSIA( std::nullptr_t ) {}
6200
6201 ~BufferCollectionFUCHSIA()
6202 {
6203 clear();
6204 }
6205
6206 BufferCollectionFUCHSIA() = delete;
6207 BufferCollectionFUCHSIA( BufferCollectionFUCHSIA const & ) = delete;
6208
6209 BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT
6210 : m_device( exchange( rhs.m_device, {} ) )
6211 , m_bufferCollectionFUCHSIA( exchange( rhs.m_bufferCollectionFUCHSIA, {} ) )
6212 , m_allocator( exchange( rhs.m_allocator, {} ) )
6213 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
6214 {
6215 }
6216
6217 BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA const & ) = delete;
6218
6219 BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT
6220 {
6221 if ( this != &rhs )
6222 {
6223 std::swap( m_device, rhs.m_device );
6224 std::swap( m_bufferCollectionFUCHSIA, rhs.m_bufferCollectionFUCHSIA );
6225 std::swap( m_allocator, rhs.m_allocator );
6226 std::swap( m_dispatcher, rhs.m_dispatcher );
6227 }
6228 return *this;
6229 }
6230
6231 VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & operator*() const & VULKAN_HPP_NOEXCEPT
6232 {
6233 return m_bufferCollectionFUCHSIA;
6234 }
6235
6236 VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const && operator*() const && VULKAN_HPP_NOEXCEPT
6237 {
6238 return std::move( m_bufferCollectionFUCHSIA );
6239 }
6240
6241 operator VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA() const VULKAN_HPP_NOEXCEPT
6242 {
6243 return m_bufferCollectionFUCHSIA;
6244 }
6245
6246 void clear() VULKAN_HPP_NOEXCEPT
6247 {
6248 if ( m_bufferCollectionFUCHSIA )
6249 {
6250 getDispatcher()->vkDestroyBufferCollectionFUCHSIA( static_cast<VkDevice>( m_device ),
6251 static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
6252 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6253 }
6254 m_device = nullptr;
6255 m_bufferCollectionFUCHSIA = nullptr;
6256 m_allocator = nullptr;
6257 m_dispatcher = nullptr;
6258 }
6259
6260 VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA release()
6261 {
6262 m_device = nullptr;
6263 m_allocator = nullptr;
6264 m_dispatcher = nullptr;
6265 return exchange( m_bufferCollectionFUCHSIA, nullptr );
6266 }
6267
6268 VULKAN_HPP_NAMESPACE::Device getDevice() const
6269 {
6270 return m_device;
6271 }
6272
6273 detail::DeviceDispatcher const * getDispatcher() const
6274 {
6275 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6276 return m_dispatcher;
6277 }
6278
6279 void swap( BufferCollectionFUCHSIA & rhs ) VULKAN_HPP_NOEXCEPT
6280 {
6281 std::swap( m_device, rhs.m_device );
6282 std::swap( m_bufferCollectionFUCHSIA, rhs.m_bufferCollectionFUCHSIA );
6283 std::swap( m_allocator, rhs.m_allocator );
6284 std::swap( m_dispatcher, rhs.m_dispatcher );
6285 }
6286
6287 //=== VK_FUCHSIA_buffer_collection ===
6288
6289 // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see
6290 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html
6291 typename ResultValueType<void>::type setImageConstraints( const ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const;
6292
6293 // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see
6294 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html
6295 typename ResultValueType<void>::type setBufferConstraints( const BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const;
6296
6297 // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see
6298 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html
6299 VULKAN_HPP_NODISCARD typename ResultValueType<BufferCollectionPropertiesFUCHSIA>::type getProperties() const;
6300
6301 private:
6302 VULKAN_HPP_NAMESPACE::Device m_device = {};
6303 VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA m_bufferCollectionFUCHSIA = {};
6304 const AllocationCallbacks * m_allocator = {};
6305 detail::DeviceDispatcher const * m_dispatcher = nullptr;
6306 };
6307
6308 template <>
6309 struct isVulkanRAIIHandleType<BufferCollectionFUCHSIA>
6310 {
6311 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
6312 };
6313
6314 # endif /*VK_USE_PLATFORM_FUCHSIA*/
6315
6316 // wrapper class for handle VkBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferView.html
6317 class BufferView
6318 {
6319 public:
6320 using CType = VkBufferView;
6321 using CppType = VULKAN_HPP_NAMESPACE::BufferView;
6322
6323 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferView;
6324 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBufferView;
6325
6326 public:
6327 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
6328 BufferView( Device const & device, BufferViewCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
6329 {
6330 *this = device.createBufferView( createInfo, allocator );
6331 }
6332 # endif
6333
6334 BufferView( Device const & device, VkBufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr )
6335 : m_device( device )
6336 , m_bufferView( bufferView )
6337 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
6338 , m_dispatcher( device.getDispatcher() )
6339 {
6340 }
6341
6342 BufferView( std::nullptr_t ) {}
6343
6344 ~BufferView()
6345 {
6346 clear();
6347 }
6348
6349 BufferView() = delete;
6350 BufferView( BufferView const & ) = delete;
6351
6352 BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
6353 : m_device( exchange( rhs.m_device, {} ) )
6354 , m_bufferView( exchange( rhs.m_bufferView, {} ) )
6355 , m_allocator( exchange( rhs.m_allocator, {} ) )
6356 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
6357 {
6358 }
6359
6360 BufferView & operator=( BufferView const & ) = delete;
6361
6362 BufferView & operator=( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
6363 {
6364 if ( this != &rhs )
6365 {
6366 std::swap( m_device, rhs.m_device );
6367 std::swap( m_bufferView, rhs.m_bufferView );
6368 std::swap( m_allocator, rhs.m_allocator );
6369 std::swap( m_dispatcher, rhs.m_dispatcher );
6370 }
6371 return *this;
6372 }
6373
6374 VULKAN_HPP_NAMESPACE::BufferView const & operator*() const & VULKAN_HPP_NOEXCEPT
6375 {
6376 return m_bufferView;
6377 }
6378
6379 VULKAN_HPP_NAMESPACE::BufferView const && operator*() const && VULKAN_HPP_NOEXCEPT
6380 {
6381 return std::move( m_bufferView );
6382 }
6383
6384 operator VULKAN_HPP_NAMESPACE::BufferView() const VULKAN_HPP_NOEXCEPT
6385 {
6386 return m_bufferView;
6387 }
6388
6389 void clear() VULKAN_HPP_NOEXCEPT
6390 {
6391 if ( m_bufferView )
6392 {
6393 getDispatcher()->vkDestroyBufferView(
6394 static_cast<VkDevice>( m_device ), static_cast<VkBufferView>( m_bufferView ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6395 }
6396 m_device = nullptr;
6397 m_bufferView = nullptr;
6398 m_allocator = nullptr;
6399 m_dispatcher = nullptr;
6400 }
6401
6402 VULKAN_HPP_NAMESPACE::BufferView release()
6403 {
6404 m_device = nullptr;
6405 m_allocator = nullptr;
6406 m_dispatcher = nullptr;
6407 return exchange( m_bufferView, nullptr );
6408 }
6409
6410 VULKAN_HPP_NAMESPACE::Device getDevice() const
6411 {
6412 return m_device;
6413 }
6414
6415 detail::DeviceDispatcher const * getDispatcher() const
6416 {
6417 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6418 return m_dispatcher;
6419 }
6420
6421 void swap( BufferView & rhs ) VULKAN_HPP_NOEXCEPT
6422 {
6423 std::swap( m_device, rhs.m_device );
6424 std::swap( m_bufferView, rhs.m_bufferView );
6425 std::swap( m_allocator, rhs.m_allocator );
6426 std::swap( m_dispatcher, rhs.m_dispatcher );
6427 }
6428
6429 private:
6430 VULKAN_HPP_NAMESPACE::Device m_device = {};
6431 VULKAN_HPP_NAMESPACE::BufferView m_bufferView = {};
6432 const AllocationCallbacks * m_allocator = {};
6433 detail::DeviceDispatcher const * m_dispatcher = nullptr;
6434 };
6435
6436 template <>
6437 struct isVulkanRAIIHandleType<BufferView>
6438 {
6439 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
6440 };
6441
6442 // wrapper class for handle VkCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPool.html
6443 class CommandPool
6444 {
6445 public:
6446 using CType = VkCommandPool;
6447 using CppType = VULKAN_HPP_NAMESPACE::CommandPool;
6448
6449 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandPool;
6450 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCommandPool;
6451
6452 public:
6453 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
6454 CommandPool( Device const & device, CommandPoolCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
6455 {
6456 *this = device.createCommandPool( createInfo, allocator );
6457 }
6458 # endif
6459
6460 CommandPool( Device const & device, VkCommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr )
6461 : m_device( device )
6462 , m_commandPool( commandPool )
6463 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
6464 , m_dispatcher( device.getDispatcher() )
6465 {
6466 }
6467
6468 CommandPool( std::nullptr_t ) {}
6469
6470 ~CommandPool()
6471 {
6472 clear();
6473 }
6474
6475 CommandPool() = delete;
6476 CommandPool( CommandPool const & ) = delete;
6477
6478 CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
6479 : m_device( exchange( rhs.m_device, {} ) )
6480 , m_commandPool( exchange( rhs.m_commandPool, {} ) )
6481 , m_allocator( exchange( rhs.m_allocator, {} ) )
6482 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
6483 {
6484 }
6485
6486 CommandPool & operator=( CommandPool const & ) = delete;
6487
6488 CommandPool & operator=( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
6489 {
6490 if ( this != &rhs )
6491 {
6492 std::swap( m_device, rhs.m_device );
6493 std::swap( m_commandPool, rhs.m_commandPool );
6494 std::swap( m_allocator, rhs.m_allocator );
6495 std::swap( m_dispatcher, rhs.m_dispatcher );
6496 }
6497 return *this;
6498 }
6499
6500 VULKAN_HPP_NAMESPACE::CommandPool const & operator*() const & VULKAN_HPP_NOEXCEPT
6501 {
6502 return m_commandPool;
6503 }
6504
6505 VULKAN_HPP_NAMESPACE::CommandPool const && operator*() const && VULKAN_HPP_NOEXCEPT
6506 {
6507 return std::move( m_commandPool );
6508 }
6509
6510 operator VULKAN_HPP_NAMESPACE::CommandPool() const VULKAN_HPP_NOEXCEPT
6511 {
6512 return m_commandPool;
6513 }
6514
6515 void clear() VULKAN_HPP_NOEXCEPT
6516 {
6517 if ( m_commandPool )
6518 {
6519 getDispatcher()->vkDestroyCommandPool(
6520 static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6521 }
6522 m_device = nullptr;
6523 m_commandPool = nullptr;
6524 m_allocator = nullptr;
6525 m_dispatcher = nullptr;
6526 }
6527
6528 VULKAN_HPP_NAMESPACE::CommandPool release()
6529 {
6530 m_device = nullptr;
6531 m_allocator = nullptr;
6532 m_dispatcher = nullptr;
6533 return exchange( m_commandPool, nullptr );
6534 }
6535
6536 VULKAN_HPP_NAMESPACE::Device getDevice() const
6537 {
6538 return m_device;
6539 }
6540
6541 detail::DeviceDispatcher const * getDispatcher() const
6542 {
6543 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6544 return m_dispatcher;
6545 }
6546
6547 void swap( CommandPool & rhs ) VULKAN_HPP_NOEXCEPT
6548 {
6549 std::swap( m_device, rhs.m_device );
6550 std::swap( m_commandPool, rhs.m_commandPool );
6551 std::swap( m_allocator, rhs.m_allocator );
6552 std::swap( m_dispatcher, rhs.m_dispatcher );
6553 }
6554
6555 //=== VK_VERSION_1_0 ===
6556
6557 // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html
6558 typename ResultValueType<void>::type reset( CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
6559
6560 //=== VK_VERSION_1_1 ===
6561
6562 // wrapper function for command vkTrimCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPool.html
6563 void trim( CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6564
6565 //=== VK_KHR_maintenance1 ===
6566
6567 // wrapper function for command vkTrimCommandPoolKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPoolKHR.html
6568 void trimKHR( CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6569
6570 private:
6571 VULKAN_HPP_NAMESPACE::Device m_device = {};
6572 VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {};
6573 const AllocationCallbacks * m_allocator = {};
6574 detail::DeviceDispatcher const * m_dispatcher = nullptr;
6575 };
6576
6577 template <>
6578 struct isVulkanRAIIHandleType<CommandPool>
6579 {
6580 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
6581 };
6582
6583 // wrapper class for handle VkCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBuffer.html
6584 class CommandBuffer
6585 {
6586 public:
6587 using CType = VkCommandBuffer;
6588 using CppType = VULKAN_HPP_NAMESPACE::CommandBuffer;
6589
6590 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandBuffer;
6591 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCommandBuffer;
6592
6593 public:
6594 CommandBuffer( Device const & device, VkCommandBuffer commandBuffer, VkCommandPool commandPool )
6595 : m_device( device ), m_commandPool( commandPool ), m_commandBuffer( commandBuffer ), m_dispatcher( device.getDispatcher() )
6596 {
6597 }
6598
6599 CommandBuffer( std::nullptr_t ) {}
6600
6601 ~CommandBuffer()
6602 {
6603 clear();
6604 }
6605
6606 CommandBuffer() = delete;
6607 CommandBuffer( CommandBuffer const & ) = delete;
6608
6609 CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
6610 : m_device( exchange( rhs.m_device, {} ) )
6611 , m_commandPool( exchange( rhs.m_commandPool, {} ) )
6612 , m_commandBuffer( exchange( rhs.m_commandBuffer, {} ) )
6613 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
6614 {
6615 }
6616
6617 CommandBuffer & operator=( CommandBuffer const & ) = delete;
6618
6619 CommandBuffer & operator=( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
6620 {
6621 if ( this != &rhs )
6622 {
6623 std::swap( m_device, rhs.m_device );
6624 std::swap( m_commandPool, rhs.m_commandPool );
6625 std::swap( m_commandBuffer, rhs.m_commandBuffer );
6626 std::swap( m_dispatcher, rhs.m_dispatcher );
6627 }
6628 return *this;
6629 }
6630
6631 VULKAN_HPP_NAMESPACE::CommandBuffer const & operator*() const & VULKAN_HPP_NOEXCEPT
6632 {
6633 return m_commandBuffer;
6634 }
6635
6636 VULKAN_HPP_NAMESPACE::CommandBuffer const && operator*() const && VULKAN_HPP_NOEXCEPT
6637 {
6638 return std::move( m_commandBuffer );
6639 }
6640
6641 operator VULKAN_HPP_NAMESPACE::CommandBuffer() const VULKAN_HPP_NOEXCEPT
6642 {
6643 return m_commandBuffer;
6644 }
6645
6646 void clear() VULKAN_HPP_NOEXCEPT
6647 {
6648 if ( m_commandBuffer )
6649 {
6650 getDispatcher()->vkFreeCommandBuffers(
6651 static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), 1, reinterpret_cast<VkCommandBuffer const *>( &m_commandBuffer ) );
6652 }
6653 m_device = nullptr;
6654 m_commandPool = nullptr;
6655 m_commandBuffer = nullptr;
6656 m_dispatcher = nullptr;
6657 }
6658
6659 VULKAN_HPP_NAMESPACE::CommandBuffer release()
6660 {
6661 m_device = nullptr;
6662 m_commandPool = nullptr;
6663 m_dispatcher = nullptr;
6664 return exchange( m_commandBuffer, nullptr );
6665 }
6666
6667 VULKAN_HPP_NAMESPACE::Device getDevice() const
6668 {
6669 return m_device;
6670 }
6671
6672 detail::DeviceDispatcher const * getDispatcher() const
6673 {
6674 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6675 return m_dispatcher;
6676 }
6677
6678 void swap( CommandBuffer & rhs ) VULKAN_HPP_NOEXCEPT
6679 {
6680 std::swap( m_device, rhs.m_device );
6681 std::swap( m_commandPool, rhs.m_commandPool );
6682 std::swap( m_commandBuffer, rhs.m_commandBuffer );
6683 std::swap( m_dispatcher, rhs.m_dispatcher );
6684 }
6685
6686 //=== VK_VERSION_1_0 ===
6687
6688 // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html
6689 typename ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
6690
6691 // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html
6692 typename ResultValueType<void>::type end() const;
6693
6694 // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html
6695 typename ResultValueType<void>::type reset( CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
6696
6697 // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html
6698 void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer,
6699 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
6700 ArrayProxy<const BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
6701
6702 // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html
6703 void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage,
6704 ImageLayout srcImageLayout,
6705 VULKAN_HPP_NAMESPACE::Image dstImage,
6706 ImageLayout dstImageLayout,
6707 ArrayProxy<const ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
6708
6709 // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html
6710 void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer,
6711 VULKAN_HPP_NAMESPACE::Image dstImage,
6712 ImageLayout dstImageLayout,
6713 ArrayProxy<const BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
6714
6715 // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html
6716 void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage,
6717 ImageLayout srcImageLayout,
6718 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
6719 ArrayProxy<const BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
6720
6721 // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html
6722 template <typename DataType>
6723 void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const DataType> const & data ) const VULKAN_HPP_NOEXCEPT;
6724
6725 // wrapper function for command vkCmdFillBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillBuffer.html
6726 void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const VULKAN_HPP_NOEXCEPT;
6727
6728 // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html
6729 void pipelineBarrier( PipelineStageFlags srcStageMask,
6730 PipelineStageFlags dstStageMask,
6731 DependencyFlags dependencyFlags,
6732 ArrayProxy<const MemoryBarrier> const & memoryBarriers,
6733 ArrayProxy<const BufferMemoryBarrier> const & bufferMemoryBarriers,
6734 ArrayProxy<const ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT;
6735
6736 // wrapper function for command vkCmdBeginQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQuery.html
6737 void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
6738 uint32_t query,
6739 QueryControlFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6740
6741 // wrapper function for command vkCmdEndQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQuery.html
6742 void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
6743
6744 // wrapper function for command vkCmdResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetQueryPool.html
6745 void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
6746
6747 // wrapper function for command vkCmdWriteTimestamp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp.html
6748 void writeTimestamp( PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
6749
6750 // wrapper function for command vkCmdCopyQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResults.html
6751 void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
6752 uint32_t firstQuery,
6753 uint32_t queryCount,
6754 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
6755 DeviceSize dstOffset,
6756 DeviceSize stride,
6757 QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6758
6759 // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html
6760 void executeCommands( ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const VULKAN_HPP_NOEXCEPT;
6761
6762 // wrapper function for command vkCmdBindPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipeline.html
6763 void bindPipeline( PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT;
6764
6765 // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html
6766 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint,
6767 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
6768 uint32_t firstSet,
6769 ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
6770 ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT;
6771
6772 // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html
6773 void clearColorImage( VULKAN_HPP_NAMESPACE::Image image,
6774 ImageLayout imageLayout,
6775 const ClearColorValue & color,
6776 ArrayProxy<const ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT;
6777
6778 // wrapper function for command vkCmdDispatch, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatch.html
6779 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
6780
6781 // wrapper function for command vkCmdDispatchIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect.html
6782 void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT;
6783
6784 // wrapper function for command vkCmdSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent.html
6785 void setEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6786
6787 // wrapper function for command vkCmdResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent.html
6788 void resetEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6789
6790 // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html
6791 void waitEvents( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,
6792 PipelineStageFlags srcStageMask,
6793 PipelineStageFlags dstStageMask,
6794 ArrayProxy<const MemoryBarrier> const & memoryBarriers,
6795 ArrayProxy<const BufferMemoryBarrier> const & bufferMemoryBarriers,
6796 ArrayProxy<const ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT;
6797
6798 // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html
6799 template <typename ValuesType>
6800 void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout,
6801 ShaderStageFlags stageFlags,
6802 uint32_t offset,
6803 ArrayProxy<const ValuesType> const & values ) const VULKAN_HPP_NOEXCEPT;
6804
6805 // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html
6806 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
6807
6808 // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html
6809 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
6810
6811 // wrapper function for command vkCmdSetLineWidth, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineWidth.html
6812 void setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT;
6813
6814 // wrapper function for command vkCmdSetDepthBias, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias.html
6815 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT;
6816
6817 // wrapper function for command vkCmdSetBlendConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetBlendConstants.html
6818 void setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT;
6819
6820 // wrapper function for command vkCmdSetDepthBounds, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBounds.html
6821 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT;
6822
6823 // wrapper function for command vkCmdSetStencilCompareMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilCompareMask.html
6824 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT;
6825
6826 // wrapper function for command vkCmdSetStencilWriteMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilWriteMask.html
6827 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT;
6828
6829 // wrapper function for command vkCmdSetStencilReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilReference.html
6830 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT;
6831
6832 // wrapper function for command vkCmdBindIndexBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer.html
6833 void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, IndexType indexType ) const VULKAN_HPP_NOEXCEPT;
6834
6835 // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html
6836 void bindVertexBuffers( uint32_t firstBinding,
6837 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
6838 ArrayProxy<const DeviceSize> const & offsets ) const;
6839
6840 // wrapper function for command vkCmdDraw, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDraw.html
6841 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
6842
6843 // wrapper function for command vkCmdDrawIndexed, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexed.html
6844 void
6845 drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
6846
6847 // wrapper function for command vkCmdDrawIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect.html
6848 void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
6849
6850 // wrapper function for command vkCmdDrawIndexedIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect.html
6851 void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
6852
6853 // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html
6854 void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage,
6855 ImageLayout srcImageLayout,
6856 VULKAN_HPP_NAMESPACE::Image dstImage,
6857 ImageLayout dstImageLayout,
6858 ArrayProxy<const ImageBlit> const & regions,
6859 Filter filter ) const VULKAN_HPP_NOEXCEPT;
6860
6861 // wrapper function for command vkCmdClearDepthStencilImage, see
6862 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html
6863 void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image,
6864 ImageLayout imageLayout,
6865 const ClearDepthStencilValue & depthStencil,
6866 ArrayProxy<const ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT;
6867
6868 // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html
6869 void clearAttachments( ArrayProxy<const ClearAttachment> const & attachments, ArrayProxy<const ClearRect> const & rects ) const VULKAN_HPP_NOEXCEPT;
6870
6871 // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html
6872 void resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage,
6873 ImageLayout srcImageLayout,
6874 VULKAN_HPP_NAMESPACE::Image dstImage,
6875 ImageLayout dstImageLayout,
6876 ArrayProxy<const ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT;
6877
6878 // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html
6879 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const VULKAN_HPP_NOEXCEPT;
6880
6881 // wrapper function for command vkCmdNextSubpass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass.html
6882 void nextSubpass( SubpassContents contents ) const VULKAN_HPP_NOEXCEPT;
6883
6884 // wrapper function for command vkCmdEndRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass.html
6885 void endRenderPass() const VULKAN_HPP_NOEXCEPT;
6886
6887 //=== VK_VERSION_1_1 ===
6888
6889 // wrapper function for command vkCmdSetDeviceMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMask.html
6890 void setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
6891
6892 // wrapper function for command vkCmdDispatchBase, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBase.html
6893 void dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
6894 VULKAN_HPP_NOEXCEPT;
6895
6896 //=== VK_VERSION_1_2 ===
6897
6898 // wrapper function for command vkCmdDrawIndirectCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount.html
6899 void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer,
6900 DeviceSize offset,
6901 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
6902 DeviceSize countBufferOffset,
6903 uint32_t maxDrawCount,
6904 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
6905
6906 // wrapper function for command vkCmdDrawIndexedIndirectCount, see
6907 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount.html
6908 void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer,
6909 DeviceSize offset,
6910 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
6911 DeviceSize countBufferOffset,
6912 uint32_t maxDrawCount,
6913 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
6914
6915 // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html
6916 void beginRenderPass2( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
6917
6918 // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html
6919 void nextSubpass2( const SubpassBeginInfo & subpassBeginInfo, const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
6920
6921 // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html
6922 void endRenderPass2( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
6923
6924 //=== VK_VERSION_1_3 ===
6925
6926 // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html
6927 void pipelineBarrier2( const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
6928
6929 // wrapper function for command vkCmdWriteTimestamp2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2.html
6930 void writeTimestamp2( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
6931
6932 // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html
6933 void copyBuffer2( const CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT;
6934
6935 // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html
6936 void copyImage2( const CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT;
6937
6938 // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html
6939 void copyBufferToImage2( const CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT;
6940
6941 // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html
6942 void copyImageToBuffer2( const CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT;
6943
6944 // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html
6945 void setEvent2( VULKAN_HPP_NAMESPACE::Event event, const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
6946
6947 // wrapper function for command vkCmdResetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2.html
6948 void resetEvent2( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6949
6950 // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html
6951 void waitEvents2( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events, ArrayProxy<const DependencyInfo> const & dependencyInfos ) const;
6952
6953 // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html
6954 void blitImage2( const BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT;
6955
6956 // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html
6957 void resolveImage2( const ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT;
6958
6959 // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html
6960 void beginRendering( const RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT;
6961
6962 // wrapper function for command vkCmdEndRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering.html
6963 void endRendering() const VULKAN_HPP_NOEXCEPT;
6964
6965 // wrapper function for command vkCmdSetCullMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullMode.html
6966 void setCullMode( CullModeFlags cullMode VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
6967
6968 // wrapper function for command vkCmdSetFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFace.html
6969 void setFrontFace( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT;
6970
6971 // wrapper function for command vkCmdSetPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopology.html
6972 void setPrimitiveTopology( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT;
6973
6974 // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html
6975 void setViewportWithCount( ArrayProxy<const Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
6976
6977 // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html
6978 void setScissorWithCount( ArrayProxy<const Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
6979
6980 // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html
6981 void bindVertexBuffers2( uint32_t firstBinding,
6982 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
6983 ArrayProxy<const DeviceSize> const & offsets,
6984 ArrayProxy<const DeviceSize> const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ),
6985 ArrayProxy<const DeviceSize> const & strides VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
6986
6987 // wrapper function for command vkCmdSetDepthTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnable.html
6988 void setDepthTestEnable( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT;
6989
6990 // wrapper function for command vkCmdSetDepthWriteEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnable.html
6991 void setDepthWriteEnable( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT;
6992
6993 // wrapper function for command vkCmdSetDepthCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOp.html
6994 void setDepthCompareOp( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT;
6995
6996 // wrapper function for command vkCmdSetDepthBoundsTestEnable, see
6997 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnable.html
6998 void setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT;
6999
7000 // wrapper function for command vkCmdSetStencilTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnable.html
7001 void setStencilTestEnable( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT;
7002
7003 // wrapper function for command vkCmdSetStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOp.html
7004 void setStencilOp( StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT;
7005
7006 // wrapper function for command vkCmdSetRasterizerDiscardEnable, see
7007 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnable.html
7008 void setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT;
7009
7010 // wrapper function for command vkCmdSetDepthBiasEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnable.html
7011 void setDepthBiasEnable( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT;
7012
7013 // wrapper function for command vkCmdSetPrimitiveRestartEnable, see
7014 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnable.html
7015 void setPrimitiveRestartEnable( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT;
7016
7017 //=== VK_VERSION_1_4 ===
7018
7019 // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html
7020 void pushDescriptorSet( PipelineBindPoint pipelineBindPoint,
7021 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
7022 uint32_t set,
7023 ArrayProxy<const WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT;
7024
7025 // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see
7026 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html
7027 template <typename DataType>
7028 void pushDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
7029 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
7030 uint32_t set,
7031 DataType const & data ) const VULKAN_HPP_NOEXCEPT;
7032
7033 // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html
7034 void bindDescriptorSets2( const BindDescriptorSetsInfo & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT;
7035
7036 // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html
7037 void pushConstants2( const PushConstantsInfo & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT;
7038
7039 // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html
7040 void pushDescriptorSet2( const PushDescriptorSetInfo & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT;
7041
7042 // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see
7043 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html
7044 void pushDescriptorSetWithTemplate2( const PushDescriptorSetWithTemplateInfo & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT;
7045
7046 // wrapper function for command vkCmdSetLineStipple, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStipple.html
7047 void setLineStipple( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
7048
7049 // wrapper function for command vkCmdBindIndexBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2.html
7050 void bindIndexBuffer2( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType ) const VULKAN_HPP_NOEXCEPT;
7051
7052 // wrapper function for command vkCmdSetRenderingAttachmentLocations, see
7053 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html
7054 void setRenderingAttachmentLocations( const RenderingAttachmentLocationInfo & locationInfo ) const VULKAN_HPP_NOEXCEPT;
7055
7056 // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see
7057 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html
7058 void setRenderingInputAttachmentIndices( const RenderingInputAttachmentIndexInfo & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT;
7059
7060 //=== VK_EXT_debug_marker ===
7061
7062 // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html
7063 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT;
7064
7065 // wrapper function for command vkCmdDebugMarkerEndEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerEndEXT.html
7066 void debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT;
7067
7068 // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html
7069 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT;
7070
7071 //=== VK_KHR_video_queue ===
7072
7073 // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html
7074 void beginVideoCodingKHR( const VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT;
7075
7076 // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html
7077 void endVideoCodingKHR( const VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT;
7078
7079 // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html
7080 void controlVideoCodingKHR( const VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT;
7081
7082 //=== VK_KHR_video_decode_queue ===
7083
7084 // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html
7085 void decodeVideoKHR( const VideoDecodeInfoKHR & decodeInfo ) const VULKAN_HPP_NOEXCEPT;
7086
7087 //=== VK_EXT_transform_feedback ===
7088
7089 // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see
7090 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html
7091 void bindTransformFeedbackBuffersEXT( uint32_t firstBinding,
7092 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
7093 ArrayProxy<const DeviceSize> const & offsets,
7094 ArrayProxy<const DeviceSize> const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
7095
7096 // wrapper function for command vkCmdBeginTransformFeedbackEXT, see
7097 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html
7098 void beginTransformFeedbackEXT( uint32_t firstCounterBuffer,
7099 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
7100 ArrayProxy<const DeviceSize> const & counterBufferOffsets VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
7101
7102 // wrapper function for command vkCmdEndTransformFeedbackEXT, see
7103 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html
7104 void endTransformFeedbackEXT( uint32_t firstCounterBuffer,
7105 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
7106 ArrayProxy<const DeviceSize> const & counterBufferOffsets VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
7107
7108 // wrapper function for command vkCmdBeginQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQueryIndexedEXT.html
7109 void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, QueryControlFlags flags, uint32_t index ) const VULKAN_HPP_NOEXCEPT;
7110
7111 // wrapper function for command vkCmdEndQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQueryIndexedEXT.html
7112 void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT;
7113
7114 // wrapper function for command vkCmdDrawIndirectByteCountEXT, see
7115 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCountEXT.html
7116 void drawIndirectByteCountEXT( uint32_t instanceCount,
7117 uint32_t firstInstance,
7118 VULKAN_HPP_NAMESPACE::Buffer counterBuffer,
7119 DeviceSize counterBufferOffset,
7120 uint32_t counterOffset,
7121 uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT;
7122
7123 //=== VK_NVX_binary_import ===
7124
7125 // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html
7126 void cuLaunchKernelNVX( const CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT;
7127
7128 //=== VK_AMD_draw_indirect_count ===
7129
7130 // wrapper function for command vkCmdDrawIndirectCountAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountAMD.html
7131 void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer,
7132 DeviceSize offset,
7133 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
7134 DeviceSize countBufferOffset,
7135 uint32_t maxDrawCount,
7136 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7137
7138 // wrapper function for command vkCmdDrawIndexedIndirectCountAMD, see
7139 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountAMD.html
7140 void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer,
7141 DeviceSize offset,
7142 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
7143 DeviceSize countBufferOffset,
7144 uint32_t maxDrawCount,
7145 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7146
7147 //=== VK_KHR_dynamic_rendering ===
7148
7149 // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html
7150 void beginRenderingKHR( const RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT;
7151
7152 // wrapper function for command vkCmdEndRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderingKHR.html
7153 void endRenderingKHR() const VULKAN_HPP_NOEXCEPT;
7154
7155 //=== VK_KHR_device_group ===
7156
7157 // wrapper function for command vkCmdSetDeviceMaskKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMaskKHR.html
7158 void setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
7159
7160 // wrapper function for command vkCmdDispatchBaseKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBaseKHR.html
7161 void dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ )
7162 const VULKAN_HPP_NOEXCEPT;
7163
7164 //=== VK_KHR_push_descriptor ===
7165
7166 // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html
7167 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint,
7168 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
7169 uint32_t set,
7170 ArrayProxy<const WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT;
7171
7172 // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see
7173 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html
7174 template <typename DataType>
7175 void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
7176 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
7177 uint32_t set,
7178 DataType const & data ) const VULKAN_HPP_NOEXCEPT;
7179
7180 //=== VK_EXT_conditional_rendering ===
7181
7182 // wrapper function for command vkCmdBeginConditionalRenderingEXT, see
7183 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html
7184 void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT;
7185
7186 // wrapper function for command vkCmdEndConditionalRenderingEXT, see
7187 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndConditionalRenderingEXT.html
7188 void endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT;
7189
7190 //=== VK_NV_clip_space_w_scaling ===
7191
7192 // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html
7193 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT;
7194
7195 //=== VK_EXT_discard_rectangles ===
7196
7197 // wrapper function for command vkCmdSetDiscardRectangleEXT, see
7198 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html
7199 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> const & discardRectangles ) const VULKAN_HPP_NOEXCEPT;
7200
7201 // wrapper function for command vkCmdSetDiscardRectangleEnableEXT, see
7202 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEnableEXT.html
7203 void setDiscardRectangleEnableEXT( Bool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT;
7204
7205 // wrapper function for command vkCmdSetDiscardRectangleModeEXT, see
7206 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleModeEXT.html
7207 void setDiscardRectangleModeEXT( DiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT;
7208
7209 //=== VK_KHR_create_renderpass2 ===
7210
7211 // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html
7212 void beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
7213
7214 // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html
7215 void nextSubpass2KHR( const SubpassBeginInfo & subpassBeginInfo, const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
7216
7217 // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html
7218 void endRenderPass2KHR( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
7219
7220 //=== VK_EXT_debug_utils ===
7221
7222 // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see
7223 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html
7224 void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
7225
7226 // wrapper function for command vkCmdEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndDebugUtilsLabelEXT.html
7227 void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
7228
7229 // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see
7230 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html
7231 void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
7232
7233 # if defined( VK_ENABLE_BETA_EXTENSIONS )
7234 //=== VK_AMDX_shader_enqueue ===
7235
7236 // wrapper function for command vkCmdInitializeGraphScratchMemoryAMDX, see
7237 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInitializeGraphScratchMemoryAMDX.html
7238 void initializeGraphScratchMemoryAMDX( VULKAN_HPP_NAMESPACE::Pipeline executionGraph,
7239 DeviceAddress scratch,
7240 DeviceSize scratchSize ) const VULKAN_HPP_NOEXCEPT;
7241
7242 // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html
7243 void dispatchGraphAMDX( DeviceAddress scratch, DeviceSize scratchSize, const DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT;
7244
7245 // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see
7246 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html
7247 void dispatchGraphIndirectAMDX( DeviceAddress scratch, DeviceSize scratchSize, const DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT;
7248
7249 // wrapper function for command vkCmdDispatchGraphIndirectCountAMDX, see
7250 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectCountAMDX.html
7251 void dispatchGraphIndirectCountAMDX( DeviceAddress scratch, DeviceSize scratchSize, DeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT;
7252 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
7253
7254 //=== VK_EXT_sample_locations ===
7255
7256 // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html
7257 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT;
7258
7259 //=== VK_KHR_acceleration_structure ===
7260
7261 // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see
7262 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html
7263 void buildAccelerationStructuresKHR( ArrayProxy<const AccelerationStructureBuildGeometryInfoKHR> const & infos,
7264 ArrayProxy<const AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const;
7265
7266 // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see
7267 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html
7268 void buildAccelerationStructuresIndirectKHR( ArrayProxy<const AccelerationStructureBuildGeometryInfoKHR> const & infos,
7269 ArrayProxy<const DeviceAddress> const & indirectDeviceAddresses,
7270 ArrayProxy<const uint32_t> const & indirectStrides,
7271 ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts ) const;
7272
7273 // wrapper function for command vkCmdCopyAccelerationStructureKHR, see
7274 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html
7275 void copyAccelerationStructureKHR( const CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
7276
7277 // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see
7278 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html
7279 void copyAccelerationStructureToMemoryKHR( const CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
7280
7281 // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see
7282 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html
7283 void copyMemoryToAccelerationStructureKHR( const CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
7284
7285 // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see
7286 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html
7287 void writeAccelerationStructuresPropertiesKHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
7288 QueryType queryType,
7289 VULKAN_HPP_NAMESPACE::QueryPool queryPool,
7290 uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT;
7291
7292 //=== VK_KHR_ray_tracing_pipeline ===
7293
7294 // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html
7295 void traceRaysKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
7296 const StridedDeviceAddressRegionKHR & missShaderBindingTable,
7297 const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
7298 const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
7299 uint32_t width,
7300 uint32_t height,
7301 uint32_t depth ) const VULKAN_HPP_NOEXCEPT;
7302
7303 // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html
7304 void traceRaysIndirectKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
7305 const StridedDeviceAddressRegionKHR & missShaderBindingTable,
7306 const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
7307 const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
7308 DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT;
7309
7310 // wrapper function for command vkCmdSetRayTracingPipelineStackSizeKHR, see
7311 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRayTracingPipelineStackSizeKHR.html
7312 void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT;
7313
7314 //=== VK_NV_shading_rate_image ===
7315
7316 // wrapper function for command vkCmdBindShadingRateImageNV, see
7317 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadingRateImageNV.html
7318 void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
7319
7320 // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see
7321 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html
7322 void setViewportShadingRatePaletteNV( uint32_t firstViewport,
7323 ArrayProxy<const ShadingRatePaletteNV> const & shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT;
7324
7325 // wrapper function for command vkCmdSetCoarseSampleOrderNV, see
7326 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html
7327 void setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType,
7328 ArrayProxy<const CoarseSampleOrderCustomNV> const & customSampleOrders ) const VULKAN_HPP_NOEXCEPT;
7329
7330 //=== VK_NV_ray_tracing ===
7331
7332 // wrapper function for command vkCmdBuildAccelerationStructureNV, see
7333 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html
7334 void buildAccelerationStructureNV( const AccelerationStructureInfoNV & info,
7335 VULKAN_HPP_NAMESPACE::Buffer instanceData,
7336 DeviceSize instanceOffset,
7337 Bool32 update,
7338 VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,
7339 VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,
7340 VULKAN_HPP_NAMESPACE::Buffer scratch,
7341 DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT;
7342
7343 // wrapper function for command vkCmdCopyAccelerationStructureNV, see
7344 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureNV.html
7345 void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,
7346 VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,
7347 CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT;
7348
7349 // wrapper function for command vkCmdTraceRaysNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysNV.html
7350 void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer,
7351 DeviceSize raygenShaderBindingOffset,
7352 VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer,
7353 DeviceSize missShaderBindingOffset,
7354 DeviceSize missShaderBindingStride,
7355 VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer,
7356 DeviceSize hitShaderBindingOffset,
7357 DeviceSize hitShaderBindingStride,
7358 VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer,
7359 DeviceSize callableShaderBindingOffset,
7360 DeviceSize callableShaderBindingStride,
7361 uint32_t width,
7362 uint32_t height,
7363 uint32_t depth ) const VULKAN_HPP_NOEXCEPT;
7364
7365 // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see
7366 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html
7367 void writeAccelerationStructuresPropertiesNV( ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
7368 QueryType queryType,
7369 VULKAN_HPP_NAMESPACE::QueryPool queryPool,
7370 uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT;
7371
7372 //=== VK_KHR_draw_indirect_count ===
7373
7374 // wrapper function for command vkCmdDrawIndirectCountKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountKHR.html
7375 void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer,
7376 DeviceSize offset,
7377 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
7378 DeviceSize countBufferOffset,
7379 uint32_t maxDrawCount,
7380 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7381
7382 // wrapper function for command vkCmdDrawIndexedIndirectCountKHR, see
7383 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountKHR.html
7384 void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer,
7385 DeviceSize offset,
7386 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
7387 DeviceSize countBufferOffset,
7388 uint32_t maxDrawCount,
7389 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7390
7391 //=== VK_AMD_buffer_marker ===
7392
7393 // wrapper function for command vkCmdWriteBufferMarkerAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarkerAMD.html
7394 void writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage,
7395 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
7396 DeviceSize dstOffset,
7397 uint32_t marker ) const VULKAN_HPP_NOEXCEPT;
7398
7399 // wrapper function for command vkCmdWriteBufferMarker2AMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarker2AMD.html
7400 void writeBufferMarker2AMD( PipelineStageFlags2 stage,
7401 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
7402 DeviceSize dstOffset,
7403 uint32_t marker ) const VULKAN_HPP_NOEXCEPT;
7404
7405 //=== VK_NV_mesh_shader ===
7406
7407 // wrapper function for command vkCmdDrawMeshTasksNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksNV.html
7408 void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT;
7409
7410 // wrapper function for command vkCmdDrawMeshTasksIndirectNV, see
7411 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectNV.html
7412 void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7413
7414 // wrapper function for command vkCmdDrawMeshTasksIndirectCountNV, see
7415 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountNV.html
7416 void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer,
7417 DeviceSize offset,
7418 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
7419 DeviceSize countBufferOffset,
7420 uint32_t maxDrawCount,
7421 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7422
7423 //=== VK_NV_scissor_exclusive ===
7424
7425 // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see
7426 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html
7427 void setExclusiveScissorEnableNV( uint32_t firstExclusiveScissor, ArrayProxy<const Bool32> const & exclusiveScissorEnables ) const VULKAN_HPP_NOEXCEPT;
7428
7429 // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html
7430 void setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy<const Rect2D> const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT;
7431
7432 //=== VK_NV_device_diagnostic_checkpoints ===
7433
7434 // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html
7435 template <typename CheckpointMarkerType>
7436 void setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT;
7437
7438 //=== VK_INTEL_performance_query ===
7439
7440 // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see
7441 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html
7442 typename ResultValueType<void>::type setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo ) const;
7443
7444 // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see
7445 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html
7446 typename ResultValueType<void>::type setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo ) const;
7447
7448 // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see
7449 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html
7450 typename ResultValueType<void>::type setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo ) const;
7451
7452 //=== VK_KHR_fragment_shading_rate ===
7453
7454 // wrapper function for command vkCmdSetFragmentShadingRateKHR, see
7455 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html
7456 void setFragmentShadingRateKHR( const Extent2D & fragmentSize, const FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
7457
7458 //=== VK_KHR_dynamic_rendering_local_read ===
7459
7460 // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see
7461 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html
7462 void setRenderingAttachmentLocationsKHR( const RenderingAttachmentLocationInfo & locationInfo ) const VULKAN_HPP_NOEXCEPT;
7463
7464 // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see
7465 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html
7466 void setRenderingInputAttachmentIndicesKHR( const RenderingInputAttachmentIndexInfo & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT;
7467
7468 //=== VK_EXT_line_rasterization ===
7469
7470 // wrapper function for command vkCmdSetLineStippleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEXT.html
7471 void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
7472
7473 //=== VK_EXT_extended_dynamic_state ===
7474
7475 // wrapper function for command vkCmdSetCullModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullModeEXT.html
7476 void setCullModeEXT( CullModeFlags cullMode VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
7477
7478 // wrapper function for command vkCmdSetFrontFaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFaceEXT.html
7479 void setFrontFaceEXT( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT;
7480
7481 // wrapper function for command vkCmdSetPrimitiveTopologyEXT, see
7482 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopologyEXT.html
7483 void setPrimitiveTopologyEXT( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT;
7484
7485 // wrapper function for command vkCmdSetViewportWithCountEXT, see
7486 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html
7487 void setViewportWithCountEXT( ArrayProxy<const Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
7488
7489 // wrapper function for command vkCmdSetScissorWithCountEXT, see
7490 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html
7491 void setScissorWithCountEXT( ArrayProxy<const Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
7492
7493 // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html
7494 void bindVertexBuffers2EXT( uint32_t firstBinding,
7495 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
7496 ArrayProxy<const DeviceSize> const & offsets,
7497 ArrayProxy<const DeviceSize> const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ),
7498 ArrayProxy<const DeviceSize> const & strides VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
7499
7500 // wrapper function for command vkCmdSetDepthTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnableEXT.html
7501 void setDepthTestEnableEXT( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT;
7502
7503 // wrapper function for command vkCmdSetDepthWriteEnableEXT, see
7504 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnableEXT.html
7505 void setDepthWriteEnableEXT( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT;
7506
7507 // wrapper function for command vkCmdSetDepthCompareOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOpEXT.html
7508 void setDepthCompareOpEXT( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT;
7509
7510 // wrapper function for command vkCmdSetDepthBoundsTestEnableEXT, see
7511 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnableEXT.html
7512 void setDepthBoundsTestEnableEXT( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT;
7513
7514 // wrapper function for command vkCmdSetStencilTestEnableEXT, see
7515 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnableEXT.html
7516 void setStencilTestEnableEXT( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT;
7517
7518 // wrapper function for command vkCmdSetStencilOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOpEXT.html
7519 void
7520 setStencilOpEXT( StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT;
7521
7522 //=== VK_NV_device_generated_commands ===
7523
7524 // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see
7525 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html
7526 void preprocessGeneratedCommandsNV( const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
7527
7528 // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see
7529 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html
7530 void executeGeneratedCommandsNV( Bool32 isPreprocessed, const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
7531
7532 // wrapper function for command vkCmdBindPipelineShaderGroupNV, see
7533 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipelineShaderGroupNV.html
7534 void bindPipelineShaderGroupNV( PipelineBindPoint pipelineBindPoint,
7535 VULKAN_HPP_NAMESPACE::Pipeline pipeline,
7536 uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT;
7537
7538 //=== VK_EXT_depth_bias_control ===
7539
7540 // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html
7541 void setDepthBias2EXT( const DepthBiasInfoEXT & depthBiasInfo ) const VULKAN_HPP_NOEXCEPT;
7542
7543 //=== VK_KHR_video_encode_queue ===
7544
7545 // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html
7546 void encodeVideoKHR( const VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT;
7547
7548 # if defined( VK_ENABLE_BETA_EXTENSIONS )
7549 //=== VK_NV_cuda_kernel_launch ===
7550
7551 // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html
7552 void cudaLaunchKernelNV( const CudaLaunchInfoNV & launchInfo ) const VULKAN_HPP_NOEXCEPT;
7553 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
7554
7555 //=== VK_QCOM_tile_shading ===
7556
7557 // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html
7558 void dispatchTileQCOM( const DispatchTileInfoQCOM & dispatchTileInfo ) const VULKAN_HPP_NOEXCEPT;
7559
7560 // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see
7561 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html
7562 void beginPerTileExecutionQCOM( const PerTileBeginInfoQCOM & perTileBeginInfo ) const VULKAN_HPP_NOEXCEPT;
7563
7564 // wrapper function for command vkCmdEndPerTileExecutionQCOM, see
7565 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html
7566 void endPerTileExecutionQCOM( const PerTileEndInfoQCOM & perTileEndInfo ) const VULKAN_HPP_NOEXCEPT;
7567
7568 //=== VK_KHR_synchronization2 ===
7569
7570 // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html
7571 void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
7572
7573 // wrapper function for command vkCmdResetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2KHR.html
7574 void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
7575
7576 // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html
7577 void waitEvents2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events, ArrayProxy<const DependencyInfo> const & dependencyInfos ) const;
7578
7579 // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html
7580 void pipelineBarrier2KHR( const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
7581
7582 // wrapper function for command vkCmdWriteTimestamp2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2KHR.html
7583 void writeTimestamp2KHR( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
7584
7585 //=== VK_EXT_descriptor_buffer ===
7586
7587 // wrapper function for command vkCmdBindDescriptorBuffersEXT, see
7588 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html
7589 void bindDescriptorBuffersEXT( ArrayProxy<const DescriptorBufferBindingInfoEXT> const & bindingInfos ) const VULKAN_HPP_NOEXCEPT;
7590
7591 // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see
7592 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html
7593 void setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint,
7594 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
7595 uint32_t firstSet,
7596 ArrayProxy<const uint32_t> const & bufferIndices,
7597 ArrayProxy<const DeviceSize> const & offsets ) const;
7598
7599 // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplersEXT, see
7600 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html
7601 void bindDescriptorBufferEmbeddedSamplersEXT( PipelineBindPoint pipelineBindPoint,
7602 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
7603 uint32_t set ) const VULKAN_HPP_NOEXCEPT;
7604
7605 //=== VK_NV_fragment_shading_rate_enums ===
7606
7607 // wrapper function for command vkCmdSetFragmentShadingRateEnumNV, see
7608 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateEnumNV.html
7609 void setFragmentShadingRateEnumNV( FragmentShadingRateNV shadingRate, const FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
7610
7611 //=== VK_EXT_mesh_shader ===
7612
7613 // wrapper function for command vkCmdDrawMeshTasksEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksEXT.html
7614 void drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
7615
7616 // wrapper function for command vkCmdDrawMeshTasksIndirectEXT, see
7617 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectEXT.html
7618 void drawMeshTasksIndirectEXT( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7619
7620 // wrapper function for command vkCmdDrawMeshTasksIndirectCountEXT, see
7621 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html
7622 void drawMeshTasksIndirectCountEXT( VULKAN_HPP_NAMESPACE::Buffer buffer,
7623 DeviceSize offset,
7624 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
7625 DeviceSize countBufferOffset,
7626 uint32_t maxDrawCount,
7627 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7628
7629 //=== VK_KHR_copy_commands2 ===
7630
7631 // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html
7632 void copyBuffer2KHR( const CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT;
7633
7634 // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html
7635 void copyImage2KHR( const CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT;
7636
7637 // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html
7638 void copyBufferToImage2KHR( const CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT;
7639
7640 // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html
7641 void copyImageToBuffer2KHR( const CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT;
7642
7643 // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html
7644 void blitImage2KHR( const BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT;
7645
7646 // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html
7647 void resolveImage2KHR( const ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT;
7648
7649 //=== VK_EXT_vertex_input_dynamic_state ===
7650
7651 // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html
7652 void setVertexInputEXT( ArrayProxy<const VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,
7653 ArrayProxy<const VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT;
7654
7655 //=== VK_HUAWEI_subpass_shading ===
7656
7657 // wrapper function for command vkCmdSubpassShadingHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSubpassShadingHUAWEI.html
7658 void subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT;
7659
7660 //=== VK_HUAWEI_invocation_mask ===
7661
7662 // wrapper function for command vkCmdBindInvocationMaskHUAWEI, see
7663 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindInvocationMaskHUAWEI.html
7664 void bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
7665
7666 //=== VK_EXT_extended_dynamic_state2 ===
7667
7668 // wrapper function for command vkCmdSetPatchControlPointsEXT, see
7669 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPatchControlPointsEXT.html
7670 void setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT;
7671
7672 // wrapper function for command vkCmdSetRasterizerDiscardEnableEXT, see
7673 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnableEXT.html
7674 void setRasterizerDiscardEnableEXT( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT;
7675
7676 // wrapper function for command vkCmdSetDepthBiasEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnableEXT.html
7677 void setDepthBiasEnableEXT( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT;
7678
7679 // wrapper function for command vkCmdSetLogicOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEXT.html
7680 void setLogicOpEXT( LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT;
7681
7682 // wrapper function for command vkCmdSetPrimitiveRestartEnableEXT, see
7683 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnableEXT.html
7684 void setPrimitiveRestartEnableEXT( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT;
7685
7686 //=== VK_EXT_color_write_enable ===
7687
7688 // wrapper function for command vkCmdSetColorWriteEnableEXT, see
7689 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html
7690 void setColorWriteEnableEXT( ArrayProxy<const Bool32> const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT;
7691
7692 //=== VK_KHR_ray_tracing_maintenance1 ===
7693
7694 // wrapper function for command vkCmdTraceRaysIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirect2KHR.html
7695 void traceRaysIndirect2KHR( DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT;
7696
7697 //=== VK_EXT_multi_draw ===
7698
7699 // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html
7700 void
7701 drawMultiEXT( StridedArrayProxy<const MultiDrawInfoEXT> const & vertexInfo, uint32_t instanceCount, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
7702
7703 // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html
7704 void drawMultiIndexedEXT( StridedArrayProxy<const MultiDrawIndexedInfoEXT> const & indexInfo,
7705 uint32_t instanceCount,
7706 uint32_t firstInstance,
7707 Optional<const int32_t> vertexOffset VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
7708
7709 //=== VK_EXT_opacity_micromap ===
7710
7711 // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html
7712 void buildMicromapsEXT( ArrayProxy<const MicromapBuildInfoEXT> const & infos ) const VULKAN_HPP_NOEXCEPT;
7713
7714 // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html
7715 void copyMicromapEXT( const CopyMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
7716
7717 // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see
7718 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html
7719 void copyMicromapToMemoryEXT( const CopyMicromapToMemoryInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
7720
7721 // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see
7722 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html
7723 void copyMemoryToMicromapEXT( const CopyMemoryToMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
7724
7725 // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see
7726 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html
7727 void writeMicromapsPropertiesEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
7728 QueryType queryType,
7729 VULKAN_HPP_NAMESPACE::QueryPool queryPool,
7730 uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT;
7731
7732 //=== VK_HUAWEI_cluster_culling_shader ===
7733
7734 // wrapper function for command vkCmdDrawClusterHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterHUAWEI.html
7735 void drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
7736
7737 // wrapper function for command vkCmdDrawClusterIndirectHUAWEI, see
7738 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterIndirectHUAWEI.html
7739 void drawClusterIndirectHUAWEI( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT;
7740
7741 //=== VK_NV_copy_memory_indirect ===
7742
7743 // wrapper function for command vkCmdCopyMemoryIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectNV.html
7744 void copyMemoryIndirectNV( DeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7745
7746 // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see
7747 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html
7748 void copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress,
7749 uint32_t stride,
7750 VULKAN_HPP_NAMESPACE::Image dstImage,
7751 ImageLayout dstImageLayout,
7752 ArrayProxy<const ImageSubresourceLayers> const & imageSubresources ) const VULKAN_HPP_NOEXCEPT;
7753
7754 //=== VK_NV_memory_decompression ===
7755
7756 // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html
7757 void decompressMemoryNV( ArrayProxy<const DecompressMemoryRegionNV> const & decompressMemoryRegions ) const VULKAN_HPP_NOEXCEPT;
7758
7759 // wrapper function for command vkCmdDecompressMemoryIndirectCountNV, see
7760 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountNV.html
7761 void decompressMemoryIndirectCountNV( DeviceAddress indirectCommandsAddress,
7762 DeviceAddress indirectCommandsCountAddress,
7763 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7764
7765 //=== VK_NV_device_generated_commands_compute ===
7766
7767 // wrapper function for command vkCmdUpdatePipelineIndirectBufferNV, see
7768 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdatePipelineIndirectBufferNV.html
7769 void updatePipelineIndirectBufferNV( PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT;
7770
7771 //=== VK_EXT_extended_dynamic_state3 ===
7772
7773 // wrapper function for command vkCmdSetDepthClampEnableEXT, see
7774 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampEnableEXT.html
7775 void setDepthClampEnableEXT( Bool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT;
7776
7777 // wrapper function for command vkCmdSetPolygonModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPolygonModeEXT.html
7778 void setPolygonModeEXT( PolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT;
7779
7780 // wrapper function for command vkCmdSetRasterizationSamplesEXT, see
7781 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationSamplesEXT.html
7782 void setRasterizationSamplesEXT( SampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT;
7783
7784 // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html
7785 void setSampleMaskEXT( SampleCountFlagBits samples, ArrayProxy<const SampleMask> const & sampleMask VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const;
7786
7787 // wrapper function for command vkCmdSetAlphaToCoverageEnableEXT, see
7788 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToCoverageEnableEXT.html
7789 void setAlphaToCoverageEnableEXT( Bool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT;
7790
7791 // wrapper function for command vkCmdSetAlphaToOneEnableEXT, see
7792 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToOneEnableEXT.html
7793 void setAlphaToOneEnableEXT( Bool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT;
7794
7795 // wrapper function for command vkCmdSetLogicOpEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEnableEXT.html
7796 void setLogicOpEnableEXT( Bool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT;
7797
7798 // wrapper function for command vkCmdSetColorBlendEnableEXT, see
7799 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html
7800 void setColorBlendEnableEXT( uint32_t firstAttachment, ArrayProxy<const Bool32> const & colorBlendEnables ) const VULKAN_HPP_NOEXCEPT;
7801
7802 // wrapper function for command vkCmdSetColorBlendEquationEXT, see
7803 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html
7804 void setColorBlendEquationEXT( uint32_t firstAttachment, ArrayProxy<const ColorBlendEquationEXT> const & colorBlendEquations ) const VULKAN_HPP_NOEXCEPT;
7805
7806 // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html
7807 void setColorWriteMaskEXT( uint32_t firstAttachment, ArrayProxy<const ColorComponentFlags> const & colorWriteMasks ) const VULKAN_HPP_NOEXCEPT;
7808
7809 // wrapper function for command vkCmdSetTessellationDomainOriginEXT, see
7810 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetTessellationDomainOriginEXT.html
7811 void setTessellationDomainOriginEXT( TessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT;
7812
7813 // wrapper function for command vkCmdSetRasterizationStreamEXT, see
7814 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationStreamEXT.html
7815 void setRasterizationStreamEXT( uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT;
7816
7817 // wrapper function for command vkCmdSetConservativeRasterizationModeEXT, see
7818 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetConservativeRasterizationModeEXT.html
7819 void setConservativeRasterizationModeEXT( ConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT;
7820
7821 // wrapper function for command vkCmdSetExtraPrimitiveOverestimationSizeEXT, see
7822 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExtraPrimitiveOverestimationSizeEXT.html
7823 void setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT;
7824
7825 // wrapper function for command vkCmdSetDepthClipEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipEnableEXT.html
7826 void setDepthClipEnableEXT( Bool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT;
7827
7828 // wrapper function for command vkCmdSetSampleLocationsEnableEXT, see
7829 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEnableEXT.html
7830 void setSampleLocationsEnableEXT( Bool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT;
7831
7832 // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see
7833 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html
7834 void setColorBlendAdvancedEXT( uint32_t firstAttachment, ArrayProxy<const ColorBlendAdvancedEXT> const & colorBlendAdvanced ) const VULKAN_HPP_NOEXCEPT;
7835
7836 // wrapper function for command vkCmdSetProvokingVertexModeEXT, see
7837 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetProvokingVertexModeEXT.html
7838 void setProvokingVertexModeEXT( ProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT;
7839
7840 // wrapper function for command vkCmdSetLineRasterizationModeEXT, see
7841 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineRasterizationModeEXT.html
7842 void setLineRasterizationModeEXT( LineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT;
7843
7844 // wrapper function for command vkCmdSetLineStippleEnableEXT, see
7845 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEnableEXT.html
7846 void setLineStippleEnableEXT( Bool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT;
7847
7848 // wrapper function for command vkCmdSetDepthClipNegativeOneToOneEXT, see
7849 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipNegativeOneToOneEXT.html
7850 void setDepthClipNegativeOneToOneEXT( Bool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT;
7851
7852 // wrapper function for command vkCmdSetViewportWScalingEnableNV, see
7853 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingEnableNV.html
7854 void setViewportWScalingEnableNV( Bool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT;
7855
7856 // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html
7857 void setViewportSwizzleNV( uint32_t firstViewport, ArrayProxy<const ViewportSwizzleNV> const & viewportSwizzles ) const VULKAN_HPP_NOEXCEPT;
7858
7859 // wrapper function for command vkCmdSetCoverageToColorEnableNV, see
7860 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorEnableNV.html
7861 void setCoverageToColorEnableNV( Bool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT;
7862
7863 // wrapper function for command vkCmdSetCoverageToColorLocationNV, see
7864 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorLocationNV.html
7865 void setCoverageToColorLocationNV( uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT;
7866
7867 // wrapper function for command vkCmdSetCoverageModulationModeNV, see
7868 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationModeNV.html
7869 void setCoverageModulationModeNV( CoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT;
7870
7871 // wrapper function for command vkCmdSetCoverageModulationTableEnableNV, see
7872 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableEnableNV.html
7873 void setCoverageModulationTableEnableNV( Bool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT;
7874
7875 // wrapper function for command vkCmdSetCoverageModulationTableNV, see
7876 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html
7877 void setCoverageModulationTableNV( ArrayProxy<const float> const & coverageModulationTable ) const VULKAN_HPP_NOEXCEPT;
7878
7879 // wrapper function for command vkCmdSetShadingRateImageEnableNV, see
7880 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetShadingRateImageEnableNV.html
7881 void setShadingRateImageEnableNV( Bool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT;
7882
7883 // wrapper function for command vkCmdSetRepresentativeFragmentTestEnableNV, see
7884 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRepresentativeFragmentTestEnableNV.html
7885 void setRepresentativeFragmentTestEnableNV( Bool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT;
7886
7887 // wrapper function for command vkCmdSetCoverageReductionModeNV, see
7888 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageReductionModeNV.html
7889 void setCoverageReductionModeNV( CoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT;
7890
7891 //=== VK_ARM_tensors ===
7892
7893 // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html
7894 void copyTensorARM( const CopyTensorInfoARM & copyTensorInfo ) const VULKAN_HPP_NOEXCEPT;
7895
7896 //=== VK_NV_optical_flow ===
7897
7898 // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html
7899 void opticalFlowExecuteNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session, const OpticalFlowExecuteInfoNV & executeInfo ) const VULKAN_HPP_NOEXCEPT;
7900
7901 //=== VK_KHR_maintenance5 ===
7902
7903 // wrapper function for command vkCmdBindIndexBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2KHR.html
7904 void bindIndexBuffer2KHR( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType ) const VULKAN_HPP_NOEXCEPT;
7905
7906 //=== VK_EXT_shader_object ===
7907
7908 // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html
7909 void bindShadersEXT( ArrayProxy<const ShaderStageFlagBits> const & stages, ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders ) const;
7910
7911 // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html
7912 void setDepthClampRangeEXT( DepthClampModeEXT depthClampMode,
7913 Optional<const DepthClampRangeEXT> depthClampRange VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
7914
7915 //=== VK_NV_cooperative_vector ===
7916
7917 // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see
7918 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html
7919 void convertCooperativeVectorMatrixNV( ArrayProxy<const ConvertCooperativeVectorMatrixInfoNV> const & infos ) const VULKAN_HPP_NOEXCEPT;
7920
7921 //=== VK_ARM_data_graph ===
7922
7923 // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html
7924 void dispatchDataGraphARM( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM session,
7925 Optional<const DataGraphPipelineDispatchInfoARM> info VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
7926
7927 //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
7928
7929 // wrapper function for command vkCmdSetAttachmentFeedbackLoopEnableEXT, see
7930 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAttachmentFeedbackLoopEnableEXT.html
7931 void setAttachmentFeedbackLoopEnableEXT( ImageAspectFlags aspectMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT;
7932
7933 //=== VK_KHR_line_rasterization ===
7934
7935 // wrapper function for command vkCmdSetLineStippleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleKHR.html
7936 void setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
7937
7938 //=== VK_KHR_maintenance6 ===
7939
7940 // wrapper function for command vkCmdBindDescriptorSets2KHR, see
7941 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html
7942 void bindDescriptorSets2KHR( const BindDescriptorSetsInfo & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT;
7943
7944 // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html
7945 void pushConstants2KHR( const PushConstantsInfo & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT;
7946
7947 // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html
7948 void pushDescriptorSet2KHR( const PushDescriptorSetInfo & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT;
7949
7950 // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see
7951 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html
7952 void pushDescriptorSetWithTemplate2KHR( const PushDescriptorSetWithTemplateInfo & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT;
7953
7954 // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see
7955 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html
7956 void setDescriptorBufferOffsets2EXT( const SetDescriptorBufferOffsetsInfoEXT & setDescriptorBufferOffsetsInfo ) const VULKAN_HPP_NOEXCEPT;
7957
7958 // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see
7959 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html
7960 void bindDescriptorBufferEmbeddedSamplers2EXT( const BindDescriptorBufferEmbeddedSamplersInfoEXT & bindDescriptorBufferEmbeddedSamplersInfo ) const
7961 VULKAN_HPP_NOEXCEPT;
7962
7963 //=== VK_QCOM_tile_memory_heap ===
7964
7965 // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html
7966 void bindTileMemoryQCOM( Optional<const TileMemoryBindInfoQCOM> tileMemoryBindInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
7967
7968 //=== VK_KHR_copy_memory_indirect ===
7969
7970 // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html
7971 void copyMemoryIndirectKHR( const CopyMemoryIndirectInfoKHR & copyMemoryIndirectInfo ) const VULKAN_HPP_NOEXCEPT;
7972
7973 // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see
7974 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html
7975 void copyMemoryToImageIndirectKHR( const CopyMemoryToImageIndirectInfoKHR & copyMemoryToImageIndirectInfo ) const VULKAN_HPP_NOEXCEPT;
7976
7977 //=== VK_EXT_memory_decompression ===
7978
7979 // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html
7980 void decompressMemoryEXT( const DecompressMemoryInfoEXT & decompressMemoryInfoEXT ) const VULKAN_HPP_NOEXCEPT;
7981
7982 // wrapper function for command vkCmdDecompressMemoryIndirectCountEXT, see
7983 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountEXT.html
7984 void decompressMemoryIndirectCountEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod,
7985 DeviceAddress indirectCommandsAddress,
7986 DeviceAddress indirectCommandsCountAddress,
7987 uint32_t maxDecompressionCount,
7988 uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
7989
7990 //=== VK_NV_cluster_acceleration_structure ===
7991
7992 // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see
7993 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html
7994 void buildClusterAccelerationStructureIndirectNV( const ClusterAccelerationStructureCommandsInfoNV & commandInfos ) const VULKAN_HPP_NOEXCEPT;
7995
7996 //=== VK_NV_partitioned_acceleration_structure ===
7997
7998 // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see
7999 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html
8000 void buildPartitionedAccelerationStructuresNV( const BuildPartitionedAccelerationStructureInfoNV & buildInfo ) const VULKAN_HPP_NOEXCEPT;
8001
8002 //=== VK_EXT_device_generated_commands ===
8003
8004 // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see
8005 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html
8006 void preprocessGeneratedCommandsEXT( const GeneratedCommandsInfoEXT & generatedCommandsInfo,
8007 VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT;
8008
8009 // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see
8010 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html
8011 void executeGeneratedCommandsEXT( Bool32 isPreprocessed, const GeneratedCommandsInfoEXT & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
8012
8013 //=== VK_EXT_fragment_density_map_offset ===
8014
8015 // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html
8016 void endRendering2EXT( Optional<const RenderingEndInfoKHR> renderingEndInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
8017
8018 //=== VK_EXT_custom_resolve ===
8019
8020 // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html
8021 void beginCustomResolveEXT( Optional<const BeginCustomResolveInfoEXT> beginCustomResolveInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const
8022 VULKAN_HPP_NOEXCEPT;
8023
8024 //=== VK_KHR_maintenance10 ===
8025
8026 // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html
8027 void endRendering2KHR( Optional<const RenderingEndInfoKHR> renderingEndInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT;
8028
8029 private:
8030 VULKAN_HPP_NAMESPACE::Device m_device = {};
8031 VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {};
8032 VULKAN_HPP_NAMESPACE::CommandBuffer m_commandBuffer = {};
8033 detail::DeviceDispatcher const * m_dispatcher = nullptr;
8034 };
8035
8036 template <>
8037 struct isVulkanRAIIHandleType<CommandBuffer>
8038 {
8039 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8040 };
8041
8042 class CommandBuffers : public std::vector<CommandBuffer>
8043 {
8044 public:
8045 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8046 CommandBuffers( Device const & device, CommandBufferAllocateInfo const & allocateInfo )
8047 {
8048 *this = device.allocateCommandBuffers( allocateInfo );
8049 }
8050 # endif
8051
8052 CommandBuffers( std::nullptr_t ) {}
8053
8054 CommandBuffers() = delete;
8055 CommandBuffers( CommandBuffers const & ) = delete;
8056 CommandBuffers( CommandBuffers && rhs ) = default;
8057 CommandBuffers & operator=( CommandBuffers const & ) = delete;
8058 CommandBuffers & operator=( CommandBuffers && rhs ) = default;
8059
8060 private:
8061 CommandBuffers( std::vector<CommandBuffer> && rhs )
8062 {
8063 std::swap( *this, rhs );
8064 }
8065 };
8066
8067 // wrapper class for handle VkCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuFunctionNVX.html
8068 class CuFunctionNVX
8069 {
8070 public:
8071 using CType = VkCuFunctionNVX;
8072 using CppType = VULKAN_HPP_NAMESPACE::CuFunctionNVX;
8073
8074 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCuFunctionNVX;
8075 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCuFunctionNVX;
8076
8077 public:
8078 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8079 CuFunctionNVX( Device const & device, CuFunctionCreateInfoNVX const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
8080 {
8081 *this = device.createCuFunctionNVX( createInfo, allocator );
8082 }
8083 # endif
8084
8085 CuFunctionNVX( Device const & device, VkCuFunctionNVX function, Optional<const AllocationCallbacks> allocator = nullptr )
8086 : m_device( device )
8087 , m_cuFunctionNVX( function )
8088 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8089 , m_dispatcher( device.getDispatcher() )
8090 {
8091 }
8092
8093 CuFunctionNVX( std::nullptr_t ) {}
8094
8095 ~CuFunctionNVX()
8096 {
8097 clear();
8098 }
8099
8100 CuFunctionNVX() = delete;
8101 CuFunctionNVX( CuFunctionNVX const & ) = delete;
8102
8103 CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
8104 : m_device( exchange( rhs.m_device, {} ) )
8105 , m_cuFunctionNVX( exchange( rhs.m_cuFunctionNVX, {} ) )
8106 , m_allocator( exchange( rhs.m_allocator, {} ) )
8107 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8108 {
8109 }
8110
8111 CuFunctionNVX & operator=( CuFunctionNVX const & ) = delete;
8112
8113 CuFunctionNVX & operator=( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
8114 {
8115 if ( this != &rhs )
8116 {
8117 std::swap( m_device, rhs.m_device );
8118 std::swap( m_cuFunctionNVX, rhs.m_cuFunctionNVX );
8119 std::swap( m_allocator, rhs.m_allocator );
8120 std::swap( m_dispatcher, rhs.m_dispatcher );
8121 }
8122 return *this;
8123 }
8124
8125 VULKAN_HPP_NAMESPACE::CuFunctionNVX const & operator*() const & VULKAN_HPP_NOEXCEPT
8126 {
8127 return m_cuFunctionNVX;
8128 }
8129
8130 VULKAN_HPP_NAMESPACE::CuFunctionNVX const && operator*() const && VULKAN_HPP_NOEXCEPT
8131 {
8132 return std::move( m_cuFunctionNVX );
8133 }
8134
8135 operator VULKAN_HPP_NAMESPACE::CuFunctionNVX() const VULKAN_HPP_NOEXCEPT
8136 {
8137 return m_cuFunctionNVX;
8138 }
8139
8140 void clear() VULKAN_HPP_NOEXCEPT
8141 {
8142 if ( m_cuFunctionNVX )
8143 {
8144 getDispatcher()->vkDestroyCuFunctionNVX( static_cast<VkDevice>( m_device ),
8145 static_cast<VkCuFunctionNVX>( m_cuFunctionNVX ),
8146 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8147 }
8148 m_device = nullptr;
8149 m_cuFunctionNVX = nullptr;
8150 m_allocator = nullptr;
8151 m_dispatcher = nullptr;
8152 }
8153
8154 VULKAN_HPP_NAMESPACE::CuFunctionNVX release()
8155 {
8156 m_device = nullptr;
8157 m_allocator = nullptr;
8158 m_dispatcher = nullptr;
8159 return exchange( m_cuFunctionNVX, nullptr );
8160 }
8161
8162 VULKAN_HPP_NAMESPACE::Device getDevice() const
8163 {
8164 return m_device;
8165 }
8166
8167 detail::DeviceDispatcher const * getDispatcher() const
8168 {
8169 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8170 return m_dispatcher;
8171 }
8172
8173 void swap( CuFunctionNVX & rhs ) VULKAN_HPP_NOEXCEPT
8174 {
8175 std::swap( m_device, rhs.m_device );
8176 std::swap( m_cuFunctionNVX, rhs.m_cuFunctionNVX );
8177 std::swap( m_allocator, rhs.m_allocator );
8178 std::swap( m_dispatcher, rhs.m_dispatcher );
8179 }
8180
8181 private:
8182 VULKAN_HPP_NAMESPACE::Device m_device = {};
8183 VULKAN_HPP_NAMESPACE::CuFunctionNVX m_cuFunctionNVX = {};
8184 const AllocationCallbacks * m_allocator = {};
8185 detail::DeviceDispatcher const * m_dispatcher = nullptr;
8186 };
8187
8188 template <>
8189 struct isVulkanRAIIHandleType<CuFunctionNVX>
8190 {
8191 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8192 };
8193
8194 // wrapper class for handle VkCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuModuleNVX.html
8195 class CuModuleNVX
8196 {
8197 public:
8198 using CType = VkCuModuleNVX;
8199 using CppType = VULKAN_HPP_NAMESPACE::CuModuleNVX;
8200
8201 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCuModuleNVX;
8202 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCuModuleNVX;
8203
8204 public:
8205 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8206 CuModuleNVX( Device const & device, CuModuleCreateInfoNVX const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
8207 {
8208 *this = device.createCuModuleNVX( createInfo, allocator );
8209 }
8210 # endif
8211
8212 CuModuleNVX( Device const & device, VkCuModuleNVX module, Optional<const AllocationCallbacks> allocator = nullptr )
8213 : m_device( device )
8214 , m_cuModuleNVX( module )
8215 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8216 , m_dispatcher( device.getDispatcher() )
8217 {
8218 }
8219
8220 CuModuleNVX( std::nullptr_t ) {}
8221
8222 ~CuModuleNVX()
8223 {
8224 clear();
8225 }
8226
8227 CuModuleNVX() = delete;
8228 CuModuleNVX( CuModuleNVX const & ) = delete;
8229
8230 CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
8231 : m_device( exchange( rhs.m_device, {} ) )
8232 , m_cuModuleNVX( exchange( rhs.m_cuModuleNVX, {} ) )
8233 , m_allocator( exchange( rhs.m_allocator, {} ) )
8234 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8235 {
8236 }
8237
8238 CuModuleNVX & operator=( CuModuleNVX const & ) = delete;
8239
8240 CuModuleNVX & operator=( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
8241 {
8242 if ( this != &rhs )
8243 {
8244 std::swap( m_device, rhs.m_device );
8245 std::swap( m_cuModuleNVX, rhs.m_cuModuleNVX );
8246 std::swap( m_allocator, rhs.m_allocator );
8247 std::swap( m_dispatcher, rhs.m_dispatcher );
8248 }
8249 return *this;
8250 }
8251
8252 VULKAN_HPP_NAMESPACE::CuModuleNVX const & operator*() const & VULKAN_HPP_NOEXCEPT
8253 {
8254 return m_cuModuleNVX;
8255 }
8256
8257 VULKAN_HPP_NAMESPACE::CuModuleNVX const && operator*() const && VULKAN_HPP_NOEXCEPT
8258 {
8259 return std::move( m_cuModuleNVX );
8260 }
8261
8262 operator VULKAN_HPP_NAMESPACE::CuModuleNVX() const VULKAN_HPP_NOEXCEPT
8263 {
8264 return m_cuModuleNVX;
8265 }
8266
8267 void clear() VULKAN_HPP_NOEXCEPT
8268 {
8269 if ( m_cuModuleNVX )
8270 {
8271 getDispatcher()->vkDestroyCuModuleNVX(
8272 static_cast<VkDevice>( m_device ), static_cast<VkCuModuleNVX>( m_cuModuleNVX ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8273 }
8274 m_device = nullptr;
8275 m_cuModuleNVX = nullptr;
8276 m_allocator = nullptr;
8277 m_dispatcher = nullptr;
8278 }
8279
8280 VULKAN_HPP_NAMESPACE::CuModuleNVX release()
8281 {
8282 m_device = nullptr;
8283 m_allocator = nullptr;
8284 m_dispatcher = nullptr;
8285 return exchange( m_cuModuleNVX, nullptr );
8286 }
8287
8288 VULKAN_HPP_NAMESPACE::Device getDevice() const
8289 {
8290 return m_device;
8291 }
8292
8293 detail::DeviceDispatcher const * getDispatcher() const
8294 {
8295 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8296 return m_dispatcher;
8297 }
8298
8299 void swap( CuModuleNVX & rhs ) VULKAN_HPP_NOEXCEPT
8300 {
8301 std::swap( m_device, rhs.m_device );
8302 std::swap( m_cuModuleNVX, rhs.m_cuModuleNVX );
8303 std::swap( m_allocator, rhs.m_allocator );
8304 std::swap( m_dispatcher, rhs.m_dispatcher );
8305 }
8306
8307 private:
8308 VULKAN_HPP_NAMESPACE::Device m_device = {};
8309 VULKAN_HPP_NAMESPACE::CuModuleNVX m_cuModuleNVX = {};
8310 const AllocationCallbacks * m_allocator = {};
8311 detail::DeviceDispatcher const * m_dispatcher = nullptr;
8312 };
8313
8314 template <>
8315 struct isVulkanRAIIHandleType<CuModuleNVX>
8316 {
8317 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8318 };
8319
8320 // wrapper class for handle VkCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaFunctionNV.html
8321 # if defined( VK_ENABLE_BETA_EXTENSIONS )
8322 class CudaFunctionNV
8323 {
8324 public:
8325 using CType = VkCudaFunctionNV;
8326 using CppType = VULKAN_HPP_NAMESPACE::CudaFunctionNV;
8327
8328 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCudaFunctionNV;
8329 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCudaFunctionNV;
8330
8331 public:
8332 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8333 CudaFunctionNV( Device const & device, CudaFunctionCreateInfoNV const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
8334 {
8335 *this = device.createCudaFunctionNV( createInfo, allocator );
8336 }
8337 # endif
8338
8339 CudaFunctionNV( Device const & device, VkCudaFunctionNV function, Optional<const AllocationCallbacks> allocator = nullptr )
8340 : m_device( device )
8341 , m_cudaFunctionNV( function )
8342 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8343 , m_dispatcher( device.getDispatcher() )
8344 {
8345 }
8346
8347 CudaFunctionNV( std::nullptr_t ) {}
8348
8349 ~CudaFunctionNV()
8350 {
8351 clear();
8352 }
8353
8354 CudaFunctionNV() = delete;
8355 CudaFunctionNV( CudaFunctionNV const & ) = delete;
8356
8357 CudaFunctionNV( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT
8358 : m_device( exchange( rhs.m_device, {} ) )
8359 , m_cudaFunctionNV( exchange( rhs.m_cudaFunctionNV, {} ) )
8360 , m_allocator( exchange( rhs.m_allocator, {} ) )
8361 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8362 {
8363 }
8364
8365 CudaFunctionNV & operator=( CudaFunctionNV const & ) = delete;
8366
8367 CudaFunctionNV & operator=( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT
8368 {
8369 if ( this != &rhs )
8370 {
8371 std::swap( m_device, rhs.m_device );
8372 std::swap( m_cudaFunctionNV, rhs.m_cudaFunctionNV );
8373 std::swap( m_allocator, rhs.m_allocator );
8374 std::swap( m_dispatcher, rhs.m_dispatcher );
8375 }
8376 return *this;
8377 }
8378
8379 VULKAN_HPP_NAMESPACE::CudaFunctionNV const & operator*() const & VULKAN_HPP_NOEXCEPT
8380 {
8381 return m_cudaFunctionNV;
8382 }
8383
8384 VULKAN_HPP_NAMESPACE::CudaFunctionNV const && operator*() const && VULKAN_HPP_NOEXCEPT
8385 {
8386 return std::move( m_cudaFunctionNV );
8387 }
8388
8389 operator VULKAN_HPP_NAMESPACE::CudaFunctionNV() const VULKAN_HPP_NOEXCEPT
8390 {
8391 return m_cudaFunctionNV;
8392 }
8393
8394 void clear() VULKAN_HPP_NOEXCEPT
8395 {
8396 if ( m_cudaFunctionNV )
8397 {
8398 getDispatcher()->vkDestroyCudaFunctionNV( static_cast<VkDevice>( m_device ),
8399 static_cast<VkCudaFunctionNV>( m_cudaFunctionNV ),
8400 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8401 }
8402 m_device = nullptr;
8403 m_cudaFunctionNV = nullptr;
8404 m_allocator = nullptr;
8405 m_dispatcher = nullptr;
8406 }
8407
8408 VULKAN_HPP_NAMESPACE::CudaFunctionNV release()
8409 {
8410 m_device = nullptr;
8411 m_allocator = nullptr;
8412 m_dispatcher = nullptr;
8413 return exchange( m_cudaFunctionNV, nullptr );
8414 }
8415
8416 VULKAN_HPP_NAMESPACE::Device getDevice() const
8417 {
8418 return m_device;
8419 }
8420
8421 detail::DeviceDispatcher const * getDispatcher() const
8422 {
8423 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8424 return m_dispatcher;
8425 }
8426
8427 void swap( CudaFunctionNV & rhs ) VULKAN_HPP_NOEXCEPT
8428 {
8429 std::swap( m_device, rhs.m_device );
8430 std::swap( m_cudaFunctionNV, rhs.m_cudaFunctionNV );
8431 std::swap( m_allocator, rhs.m_allocator );
8432 std::swap( m_dispatcher, rhs.m_dispatcher );
8433 }
8434
8435 private:
8436 VULKAN_HPP_NAMESPACE::Device m_device = {};
8437 VULKAN_HPP_NAMESPACE::CudaFunctionNV m_cudaFunctionNV = {};
8438 const AllocationCallbacks * m_allocator = {};
8439 detail::DeviceDispatcher const * m_dispatcher = nullptr;
8440 };
8441
8442 template <>
8443 struct isVulkanRAIIHandleType<CudaFunctionNV>
8444 {
8445 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8446 };
8447
8448 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
8449
8450 // wrapper class for handle VkCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaModuleNV.html
8451 # if defined( VK_ENABLE_BETA_EXTENSIONS )
8452 class CudaModuleNV
8453 {
8454 public:
8455 using CType = VkCudaModuleNV;
8456 using CppType = VULKAN_HPP_NAMESPACE::CudaModuleNV;
8457
8458 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCudaModuleNV;
8459 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCudaModuleNV;
8460
8461 public:
8462 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8463 CudaModuleNV( Device const & device, CudaModuleCreateInfoNV const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
8464 {
8465 *this = device.createCudaModuleNV( createInfo, allocator );
8466 }
8467 # endif
8468
8469 CudaModuleNV( Device const & device, VkCudaModuleNV module, Optional<const AllocationCallbacks> allocator = nullptr )
8470 : m_device( device )
8471 , m_cudaModuleNV( module )
8472 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8473 , m_dispatcher( device.getDispatcher() )
8474 {
8475 }
8476
8477 CudaModuleNV( std::nullptr_t ) {}
8478
8479 ~CudaModuleNV()
8480 {
8481 clear();
8482 }
8483
8484 CudaModuleNV() = delete;
8485 CudaModuleNV( CudaModuleNV const & ) = delete;
8486
8487 CudaModuleNV( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT
8488 : m_device( exchange( rhs.m_device, {} ) )
8489 , m_cudaModuleNV( exchange( rhs.m_cudaModuleNV, {} ) )
8490 , m_allocator( exchange( rhs.m_allocator, {} ) )
8491 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8492 {
8493 }
8494
8495 CudaModuleNV & operator=( CudaModuleNV const & ) = delete;
8496
8497 CudaModuleNV & operator=( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT
8498 {
8499 if ( this != &rhs )
8500 {
8501 std::swap( m_device, rhs.m_device );
8502 std::swap( m_cudaModuleNV, rhs.m_cudaModuleNV );
8503 std::swap( m_allocator, rhs.m_allocator );
8504 std::swap( m_dispatcher, rhs.m_dispatcher );
8505 }
8506 return *this;
8507 }
8508
8509 VULKAN_HPP_NAMESPACE::CudaModuleNV const & operator*() const & VULKAN_HPP_NOEXCEPT
8510 {
8511 return m_cudaModuleNV;
8512 }
8513
8514 VULKAN_HPP_NAMESPACE::CudaModuleNV const && operator*() const && VULKAN_HPP_NOEXCEPT
8515 {
8516 return std::move( m_cudaModuleNV );
8517 }
8518
8519 operator VULKAN_HPP_NAMESPACE::CudaModuleNV() const VULKAN_HPP_NOEXCEPT
8520 {
8521 return m_cudaModuleNV;
8522 }
8523
8524 void clear() VULKAN_HPP_NOEXCEPT
8525 {
8526 if ( m_cudaModuleNV )
8527 {
8528 getDispatcher()->vkDestroyCudaModuleNV(
8529 static_cast<VkDevice>( m_device ), static_cast<VkCudaModuleNV>( m_cudaModuleNV ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8530 }
8531 m_device = nullptr;
8532 m_cudaModuleNV = nullptr;
8533 m_allocator = nullptr;
8534 m_dispatcher = nullptr;
8535 }
8536
8537 VULKAN_HPP_NAMESPACE::CudaModuleNV release()
8538 {
8539 m_device = nullptr;
8540 m_allocator = nullptr;
8541 m_dispatcher = nullptr;
8542 return exchange( m_cudaModuleNV, nullptr );
8543 }
8544
8545 VULKAN_HPP_NAMESPACE::Device getDevice() const
8546 {
8547 return m_device;
8548 }
8549
8550 detail::DeviceDispatcher const * getDispatcher() const
8551 {
8552 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8553 return m_dispatcher;
8554 }
8555
8556 void swap( CudaModuleNV & rhs ) VULKAN_HPP_NOEXCEPT
8557 {
8558 std::swap( m_device, rhs.m_device );
8559 std::swap( m_cudaModuleNV, rhs.m_cudaModuleNV );
8560 std::swap( m_allocator, rhs.m_allocator );
8561 std::swap( m_dispatcher, rhs.m_dispatcher );
8562 }
8563
8564 //=== VK_NV_cuda_kernel_launch ===
8565
8566 // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html
8567 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<uint8_t>>::type getCache() const;
8568
8569 private:
8570 VULKAN_HPP_NAMESPACE::Device m_device = {};
8571 VULKAN_HPP_NAMESPACE::CudaModuleNV m_cudaModuleNV = {};
8572 const AllocationCallbacks * m_allocator = {};
8573 detail::DeviceDispatcher const * m_dispatcher = nullptr;
8574 };
8575
8576 template <>
8577 struct isVulkanRAIIHandleType<CudaModuleNV>
8578 {
8579 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8580 };
8581
8582 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
8583
8584 // wrapper class for handle VkDataGraphPipelineSessionARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionARM.html
8585 class DataGraphPipelineSessionARM
8586 {
8587 public:
8588 using CType = VkDataGraphPipelineSessionARM;
8589 using CppType = VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM;
8590
8591 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDataGraphPipelineSessionARM;
8592 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
8593
8594 public:
8595 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8596 DataGraphPipelineSessionARM( Device const & device,
8597 DataGraphPipelineSessionCreateInfoARM const & createInfo,
8598 Optional<const AllocationCallbacks> allocator = nullptr )
8599 {
8600 *this = device.createDataGraphPipelineSessionARM( createInfo, allocator );
8601 }
8602 # endif
8603
8604 DataGraphPipelineSessionARM( Device const & device, VkDataGraphPipelineSessionARM session, Optional<const AllocationCallbacks> allocator = nullptr )
8605 : m_device( device )
8606 , m_dataGraphPipelineSessionARM( session )
8607 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8608 , m_dispatcher( device.getDispatcher() )
8609 {
8610 }
8611
8612 DataGraphPipelineSessionARM( std::nullptr_t ) {}
8613
8614 ~DataGraphPipelineSessionARM()
8615 {
8616 clear();
8617 }
8618
8619 DataGraphPipelineSessionARM() = delete;
8620 DataGraphPipelineSessionARM( DataGraphPipelineSessionARM const & ) = delete;
8621
8622 DataGraphPipelineSessionARM( DataGraphPipelineSessionARM && rhs ) VULKAN_HPP_NOEXCEPT
8623 : m_device( exchange( rhs.m_device, {} ) )
8624 , m_dataGraphPipelineSessionARM( exchange( rhs.m_dataGraphPipelineSessionARM, {} ) )
8625 , m_allocator( exchange( rhs.m_allocator, {} ) )
8626 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8627 {
8628 }
8629
8630 DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM const & ) = delete;
8631
8632 DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM && rhs ) VULKAN_HPP_NOEXCEPT
8633 {
8634 if ( this != &rhs )
8635 {
8636 std::swap( m_device, rhs.m_device );
8637 std::swap( m_dataGraphPipelineSessionARM, rhs.m_dataGraphPipelineSessionARM );
8638 std::swap( m_allocator, rhs.m_allocator );
8639 std::swap( m_dispatcher, rhs.m_dispatcher );
8640 }
8641 return *this;
8642 }
8643
8644 VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM const & operator*() const & VULKAN_HPP_NOEXCEPT
8645 {
8646 return m_dataGraphPipelineSessionARM;
8647 }
8648
8649 VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM const && operator*() const && VULKAN_HPP_NOEXCEPT
8650 {
8651 return std::move( m_dataGraphPipelineSessionARM );
8652 }
8653
8654 operator VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM() const VULKAN_HPP_NOEXCEPT
8655 {
8656 return m_dataGraphPipelineSessionARM;
8657 }
8658
8659 void clear() VULKAN_HPP_NOEXCEPT
8660 {
8661 if ( m_dataGraphPipelineSessionARM )
8662 {
8663 getDispatcher()->vkDestroyDataGraphPipelineSessionARM( static_cast<VkDevice>( m_device ),
8664 static_cast<VkDataGraphPipelineSessionARM>( m_dataGraphPipelineSessionARM ),
8665 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8666 }
8667 m_device = nullptr;
8668 m_dataGraphPipelineSessionARM = nullptr;
8669 m_allocator = nullptr;
8670 m_dispatcher = nullptr;
8671 }
8672
8673 VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM release()
8674 {
8675 m_device = nullptr;
8676 m_allocator = nullptr;
8677 m_dispatcher = nullptr;
8678 return exchange( m_dataGraphPipelineSessionARM, nullptr );
8679 }
8680
8681 VULKAN_HPP_NAMESPACE::Device getDevice() const
8682 {
8683 return m_device;
8684 }
8685
8686 detail::DeviceDispatcher const * getDispatcher() const
8687 {
8688 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8689 return m_dispatcher;
8690 }
8691
8692 void swap( DataGraphPipelineSessionARM & rhs ) VULKAN_HPP_NOEXCEPT
8693 {
8694 std::swap( m_device, rhs.m_device );
8695 std::swap( m_dataGraphPipelineSessionARM, rhs.m_dataGraphPipelineSessionARM );
8696 std::swap( m_allocator, rhs.m_allocator );
8697 std::swap( m_dispatcher, rhs.m_dispatcher );
8698 }
8699
8700 private:
8701 VULKAN_HPP_NAMESPACE::Device m_device = {};
8702 VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM m_dataGraphPipelineSessionARM = {};
8703 const AllocationCallbacks * m_allocator = {};
8704 detail::DeviceDispatcher const * m_dispatcher = nullptr;
8705 };
8706
8707 template <>
8708 struct isVulkanRAIIHandleType<DataGraphPipelineSessionARM>
8709 {
8710 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8711 };
8712
8713 // wrapper class for handle VkDebugReportCallbackEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportCallbackEXT.html
8714 class DebugReportCallbackEXT
8715 {
8716 public:
8717 using CType = VkDebugReportCallbackEXT;
8718 using CppType = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT;
8719
8720 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugReportCallbackEXT;
8721 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDebugReportCallbackEXT;
8722
8723 public:
8724 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8725 DebugReportCallbackEXT( Instance const & instance,
8726 DebugReportCallbackCreateInfoEXT const & createInfo,
8727 Optional<const AllocationCallbacks> allocator = nullptr )
8728 {
8729 *this = instance.createDebugReportCallbackEXT( createInfo, allocator );
8730 }
8731 # endif
8732
8733 DebugReportCallbackEXT( Instance const & instance, VkDebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr )
8734 : m_instance( instance )
8735 , m_debugReportCallbackEXT( callback )
8736 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8737 , m_dispatcher( instance.getDispatcher() )
8738 {
8739 }
8740
8741 DebugReportCallbackEXT( std::nullptr_t ) {}
8742
8743 ~DebugReportCallbackEXT()
8744 {
8745 clear();
8746 }
8747
8748 DebugReportCallbackEXT() = delete;
8749 DebugReportCallbackEXT( DebugReportCallbackEXT const & ) = delete;
8750
8751 DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
8752 : m_instance( exchange( rhs.m_instance, {} ) )
8753 , m_debugReportCallbackEXT( exchange( rhs.m_debugReportCallbackEXT, {} ) )
8754 , m_allocator( exchange( rhs.m_allocator, {} ) )
8755 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8756 {
8757 }
8758
8759 DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & ) = delete;
8760
8761 DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
8762 {
8763 if ( this != &rhs )
8764 {
8765 std::swap( m_instance, rhs.m_instance );
8766 std::swap( m_debugReportCallbackEXT, rhs.m_debugReportCallbackEXT );
8767 std::swap( m_allocator, rhs.m_allocator );
8768 std::swap( m_dispatcher, rhs.m_dispatcher );
8769 }
8770 return *this;
8771 }
8772
8773 VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
8774 {
8775 return m_debugReportCallbackEXT;
8776 }
8777
8778 VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
8779 {
8780 return std::move( m_debugReportCallbackEXT );
8781 }
8782
8783 operator VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT() const VULKAN_HPP_NOEXCEPT
8784 {
8785 return m_debugReportCallbackEXT;
8786 }
8787
8788 void clear() VULKAN_HPP_NOEXCEPT
8789 {
8790 if ( m_debugReportCallbackEXT )
8791 {
8792 getDispatcher()->vkDestroyDebugReportCallbackEXT( static_cast<VkInstance>( m_instance ),
8793 static_cast<VkDebugReportCallbackEXT>( m_debugReportCallbackEXT ),
8794 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8795 }
8796 m_instance = nullptr;
8797 m_debugReportCallbackEXT = nullptr;
8798 m_allocator = nullptr;
8799 m_dispatcher = nullptr;
8800 }
8801
8802 VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT release()
8803 {
8804 m_instance = nullptr;
8805 m_allocator = nullptr;
8806 m_dispatcher = nullptr;
8807 return exchange( m_debugReportCallbackEXT, nullptr );
8808 }
8809
8810 VULKAN_HPP_NAMESPACE::Instance getInstance() const
8811 {
8812 return m_instance;
8813 }
8814
8815 detail::InstanceDispatcher const * getDispatcher() const
8816 {
8817 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8818 return m_dispatcher;
8819 }
8820
8821 void swap( DebugReportCallbackEXT & rhs ) VULKAN_HPP_NOEXCEPT
8822 {
8823 std::swap( m_instance, rhs.m_instance );
8824 std::swap( m_debugReportCallbackEXT, rhs.m_debugReportCallbackEXT );
8825 std::swap( m_allocator, rhs.m_allocator );
8826 std::swap( m_dispatcher, rhs.m_dispatcher );
8827 }
8828
8829 private:
8830 VULKAN_HPP_NAMESPACE::Instance m_instance = {};
8831 VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT m_debugReportCallbackEXT = {};
8832 const AllocationCallbacks * m_allocator = {};
8833 detail::InstanceDispatcher const * m_dispatcher = nullptr;
8834 };
8835
8836 template <>
8837 struct isVulkanRAIIHandleType<DebugReportCallbackEXT>
8838 {
8839 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8840 };
8841
8842 // wrapper class for handle VkDebugUtilsMessengerEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerEXT.html
8843 class DebugUtilsMessengerEXT
8844 {
8845 public:
8846 using CType = VkDebugUtilsMessengerEXT;
8847 using CppType = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT;
8848
8849 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugUtilsMessengerEXT;
8850 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
8851
8852 public:
8853 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8854 DebugUtilsMessengerEXT( Instance const & instance,
8855 DebugUtilsMessengerCreateInfoEXT const & createInfo,
8856 Optional<const AllocationCallbacks> allocator = nullptr )
8857 {
8858 *this = instance.createDebugUtilsMessengerEXT( createInfo, allocator );
8859 }
8860 # endif
8861
8862 DebugUtilsMessengerEXT( Instance const & instance, VkDebugUtilsMessengerEXT messenger, Optional<const AllocationCallbacks> allocator = nullptr )
8863 : m_instance( instance )
8864 , m_debugUtilsMessengerEXT( messenger )
8865 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8866 , m_dispatcher( instance.getDispatcher() )
8867 {
8868 }
8869
8870 DebugUtilsMessengerEXT( std::nullptr_t ) {}
8871
8872 ~DebugUtilsMessengerEXT()
8873 {
8874 clear();
8875 }
8876
8877 DebugUtilsMessengerEXT() = delete;
8878 DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & ) = delete;
8879
8880 DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
8881 : m_instance( exchange( rhs.m_instance, {} ) )
8882 , m_debugUtilsMessengerEXT( exchange( rhs.m_debugUtilsMessengerEXT, {} ) )
8883 , m_allocator( exchange( rhs.m_allocator, {} ) )
8884 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
8885 {
8886 }
8887
8888 DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & ) = delete;
8889
8890 DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
8891 {
8892 if ( this != &rhs )
8893 {
8894 std::swap( m_instance, rhs.m_instance );
8895 std::swap( m_debugUtilsMessengerEXT, rhs.m_debugUtilsMessengerEXT );
8896 std::swap( m_allocator, rhs.m_allocator );
8897 std::swap( m_dispatcher, rhs.m_dispatcher );
8898 }
8899 return *this;
8900 }
8901
8902 VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
8903 {
8904 return m_debugUtilsMessengerEXT;
8905 }
8906
8907 VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
8908 {
8909 return std::move( m_debugUtilsMessengerEXT );
8910 }
8911
8912 operator VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT() const VULKAN_HPP_NOEXCEPT
8913 {
8914 return m_debugUtilsMessengerEXT;
8915 }
8916
8917 void clear() VULKAN_HPP_NOEXCEPT
8918 {
8919 if ( m_debugUtilsMessengerEXT )
8920 {
8921 getDispatcher()->vkDestroyDebugUtilsMessengerEXT( static_cast<VkInstance>( m_instance ),
8922 static_cast<VkDebugUtilsMessengerEXT>( m_debugUtilsMessengerEXT ),
8923 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8924 }
8925 m_instance = nullptr;
8926 m_debugUtilsMessengerEXT = nullptr;
8927 m_allocator = nullptr;
8928 m_dispatcher = nullptr;
8929 }
8930
8931 VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT release()
8932 {
8933 m_instance = nullptr;
8934 m_allocator = nullptr;
8935 m_dispatcher = nullptr;
8936 return exchange( m_debugUtilsMessengerEXT, nullptr );
8937 }
8938
8939 VULKAN_HPP_NAMESPACE::Instance getInstance() const
8940 {
8941 return m_instance;
8942 }
8943
8944 detail::InstanceDispatcher const * getDispatcher() const
8945 {
8946 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8947 return m_dispatcher;
8948 }
8949
8950 void swap( DebugUtilsMessengerEXT & rhs ) VULKAN_HPP_NOEXCEPT
8951 {
8952 std::swap( m_instance, rhs.m_instance );
8953 std::swap( m_debugUtilsMessengerEXT, rhs.m_debugUtilsMessengerEXT );
8954 std::swap( m_allocator, rhs.m_allocator );
8955 std::swap( m_dispatcher, rhs.m_dispatcher );
8956 }
8957
8958 private:
8959 VULKAN_HPP_NAMESPACE::Instance m_instance = {};
8960 VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT m_debugUtilsMessengerEXT = {};
8961 const AllocationCallbacks * m_allocator = {};
8962 detail::InstanceDispatcher const * m_dispatcher = nullptr;
8963 };
8964
8965 template <>
8966 struct isVulkanRAIIHandleType<DebugUtilsMessengerEXT>
8967 {
8968 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
8969 };
8970
8971 // wrapper class for handle VkDeferredOperationKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeferredOperationKHR.html
8972 class DeferredOperationKHR
8973 {
8974 public:
8975 using CType = VkDeferredOperationKHR;
8976 using CppType = VULKAN_HPP_NAMESPACE::DeferredOperationKHR;
8977
8978 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeferredOperationKHR;
8979 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
8980
8981 public:
8982 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
8983 DeferredOperationKHR( Device const & device, Optional<const AllocationCallbacks> allocator = nullptr )
8984 {
8985 *this = device.createDeferredOperationKHR( allocator );
8986 }
8987 # endif
8988
8989 DeferredOperationKHR( Device const & device, VkDeferredOperationKHR operation, Optional<const AllocationCallbacks> allocator = nullptr )
8990 : m_device( device )
8991 , m_deferredOperationKHR( operation )
8992 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
8993 , m_dispatcher( device.getDispatcher() )
8994 {
8995 }
8996
8997 DeferredOperationKHR( std::nullptr_t ) {}
8998
8999 ~DeferredOperationKHR()
9000 {
9001 clear();
9002 }
9003
9004 DeferredOperationKHR() = delete;
9005 DeferredOperationKHR( DeferredOperationKHR const & ) = delete;
9006
9007 DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
9008 : m_device( exchange( rhs.m_device, {} ) )
9009 , m_deferredOperationKHR( exchange( rhs.m_deferredOperationKHR, {} ) )
9010 , m_allocator( exchange( rhs.m_allocator, {} ) )
9011 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9012 {
9013 }
9014
9015 DeferredOperationKHR & operator=( DeferredOperationKHR const & ) = delete;
9016
9017 DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
9018 {
9019 if ( this != &rhs )
9020 {
9021 std::swap( m_device, rhs.m_device );
9022 std::swap( m_deferredOperationKHR, rhs.m_deferredOperationKHR );
9023 std::swap( m_allocator, rhs.m_allocator );
9024 std::swap( m_dispatcher, rhs.m_dispatcher );
9025 }
9026 return *this;
9027 }
9028
9029 VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
9030 {
9031 return m_deferredOperationKHR;
9032 }
9033
9034 VULKAN_HPP_NAMESPACE::DeferredOperationKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
9035 {
9036 return std::move( m_deferredOperationKHR );
9037 }
9038
9039 operator VULKAN_HPP_NAMESPACE::DeferredOperationKHR() const VULKAN_HPP_NOEXCEPT
9040 {
9041 return m_deferredOperationKHR;
9042 }
9043
9044 void clear() VULKAN_HPP_NOEXCEPT
9045 {
9046 if ( m_deferredOperationKHR )
9047 {
9048 getDispatcher()->vkDestroyDeferredOperationKHR( static_cast<VkDevice>( m_device ),
9049 static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ),
9050 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9051 }
9052 m_device = nullptr;
9053 m_deferredOperationKHR = nullptr;
9054 m_allocator = nullptr;
9055 m_dispatcher = nullptr;
9056 }
9057
9058 VULKAN_HPP_NAMESPACE::DeferredOperationKHR release()
9059 {
9060 m_device = nullptr;
9061 m_allocator = nullptr;
9062 m_dispatcher = nullptr;
9063 return exchange( m_deferredOperationKHR, nullptr );
9064 }
9065
9066 VULKAN_HPP_NAMESPACE::Device getDevice() const
9067 {
9068 return m_device;
9069 }
9070
9071 detail::DeviceDispatcher const * getDispatcher() const
9072 {
9073 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9074 return m_dispatcher;
9075 }
9076
9077 void swap( DeferredOperationKHR & rhs ) VULKAN_HPP_NOEXCEPT
9078 {
9079 std::swap( m_device, rhs.m_device );
9080 std::swap( m_deferredOperationKHR, rhs.m_deferredOperationKHR );
9081 std::swap( m_allocator, rhs.m_allocator );
9082 std::swap( m_dispatcher, rhs.m_dispatcher );
9083 }
9084
9085 //=== VK_KHR_deferred_host_operations ===
9086
9087 // wrapper function for command vkGetDeferredOperationMaxConcurrencyKHR, see
9088 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationMaxConcurrencyKHR.html
9089 VULKAN_HPP_NODISCARD uint32_t getMaxConcurrency() const VULKAN_HPP_NOEXCEPT;
9090
9091 // wrapper function for command vkGetDeferredOperationResultKHR, see
9092 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html
9093 VULKAN_HPP_NODISCARD Result getResult() const;
9094
9095 // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html
9096 VULKAN_HPP_NODISCARD Result join() const;
9097
9098 private:
9099 VULKAN_HPP_NAMESPACE::Device m_device = {};
9100 VULKAN_HPP_NAMESPACE::DeferredOperationKHR m_deferredOperationKHR = {};
9101 const AllocationCallbacks * m_allocator = {};
9102 detail::DeviceDispatcher const * m_dispatcher = nullptr;
9103 };
9104
9105 template <>
9106 struct isVulkanRAIIHandleType<DeferredOperationKHR>
9107 {
9108 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9109 };
9110
9111 // wrapper class for handle VkDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPool.html
9112 class DescriptorPool
9113 {
9114 public:
9115 using CType = VkDescriptorPool;
9116 using CppType = VULKAN_HPP_NAMESPACE::DescriptorPool;
9117
9118 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorPool;
9119 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorPool;
9120
9121 public:
9122 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9123 DescriptorPool( Device const & device, DescriptorPoolCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
9124 {
9125 *this = device.createDescriptorPool( createInfo, allocator );
9126 }
9127 # endif
9128
9129 DescriptorPool( Device const & device, VkDescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr )
9130 : m_device( device )
9131 , m_descriptorPool( descriptorPool )
9132 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
9133 , m_dispatcher( device.getDispatcher() )
9134 {
9135 }
9136
9137 DescriptorPool( std::nullptr_t ) {}
9138
9139 ~DescriptorPool()
9140 {
9141 clear();
9142 }
9143
9144 DescriptorPool() = delete;
9145 DescriptorPool( DescriptorPool const & ) = delete;
9146
9147 DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
9148 : m_device( exchange( rhs.m_device, {} ) )
9149 , m_descriptorPool( exchange( rhs.m_descriptorPool, {} ) )
9150 , m_allocator( exchange( rhs.m_allocator, {} ) )
9151 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9152 {
9153 }
9154
9155 DescriptorPool & operator=( DescriptorPool const & ) = delete;
9156
9157 DescriptorPool & operator=( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
9158 {
9159 if ( this != &rhs )
9160 {
9161 std::swap( m_device, rhs.m_device );
9162 std::swap( m_descriptorPool, rhs.m_descriptorPool );
9163 std::swap( m_allocator, rhs.m_allocator );
9164 std::swap( m_dispatcher, rhs.m_dispatcher );
9165 }
9166 return *this;
9167 }
9168
9169 VULKAN_HPP_NAMESPACE::DescriptorPool const & operator*() const & VULKAN_HPP_NOEXCEPT
9170 {
9171 return m_descriptorPool;
9172 }
9173
9174 VULKAN_HPP_NAMESPACE::DescriptorPool const && operator*() const && VULKAN_HPP_NOEXCEPT
9175 {
9176 return std::move( m_descriptorPool );
9177 }
9178
9179 operator VULKAN_HPP_NAMESPACE::DescriptorPool() const VULKAN_HPP_NOEXCEPT
9180 {
9181 return m_descriptorPool;
9182 }
9183
9184 void clear() VULKAN_HPP_NOEXCEPT
9185 {
9186 if ( m_descriptorPool )
9187 {
9188 getDispatcher()->vkDestroyDescriptorPool( static_cast<VkDevice>( m_device ),
9189 static_cast<VkDescriptorPool>( m_descriptorPool ),
9190 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9191 }
9192 m_device = nullptr;
9193 m_descriptorPool = nullptr;
9194 m_allocator = nullptr;
9195 m_dispatcher = nullptr;
9196 }
9197
9198 VULKAN_HPP_NAMESPACE::DescriptorPool release()
9199 {
9200 m_device = nullptr;
9201 m_allocator = nullptr;
9202 m_dispatcher = nullptr;
9203 return exchange( m_descriptorPool, nullptr );
9204 }
9205
9206 VULKAN_HPP_NAMESPACE::Device getDevice() const
9207 {
9208 return m_device;
9209 }
9210
9211 detail::DeviceDispatcher const * getDispatcher() const
9212 {
9213 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9214 return m_dispatcher;
9215 }
9216
9217 void swap( DescriptorPool & rhs ) VULKAN_HPP_NOEXCEPT
9218 {
9219 std::swap( m_device, rhs.m_device );
9220 std::swap( m_descriptorPool, rhs.m_descriptorPool );
9221 std::swap( m_allocator, rhs.m_allocator );
9222 std::swap( m_dispatcher, rhs.m_dispatcher );
9223 }
9224
9225 //=== VK_VERSION_1_0 ===
9226
9227 // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html
9228 typename ResultValueType<void>::type reset( DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
9229
9230 private:
9231 VULKAN_HPP_NAMESPACE::Device m_device = {};
9232 VULKAN_HPP_NAMESPACE::DescriptorPool m_descriptorPool = {};
9233 const AllocationCallbacks * m_allocator = {};
9234 detail::DeviceDispatcher const * m_dispatcher = nullptr;
9235 };
9236
9237 template <>
9238 struct isVulkanRAIIHandleType<DescriptorPool>
9239 {
9240 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9241 };
9242
9243 // wrapper class for handle VkDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSet.html
9244 class DescriptorSet
9245 {
9246 public:
9247 using CType = VkDescriptorSet;
9248 using CppType = VULKAN_HPP_NAMESPACE::DescriptorSet;
9249
9250 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSet;
9251 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorSet;
9252
9253 public:
9254 DescriptorSet( Device const & device, VkDescriptorSet descriptorSet, VkDescriptorPool descriptorPool )
9255 : m_device( device ), m_descriptorPool( descriptorPool ), m_descriptorSet( descriptorSet ), m_dispatcher( device.getDispatcher() )
9256 {
9257 }
9258
9259 DescriptorSet( std::nullptr_t ) {}
9260
9261 ~DescriptorSet()
9262 {
9263 clear();
9264 }
9265
9266 DescriptorSet() = delete;
9267 DescriptorSet( DescriptorSet const & ) = delete;
9268
9269 DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
9270 : m_device( exchange( rhs.m_device, {} ) )
9271 , m_descriptorPool( exchange( rhs.m_descriptorPool, {} ) )
9272 , m_descriptorSet( exchange( rhs.m_descriptorSet, {} ) )
9273 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9274 {
9275 }
9276
9277 DescriptorSet & operator=( DescriptorSet const & ) = delete;
9278
9279 DescriptorSet & operator=( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
9280 {
9281 if ( this != &rhs )
9282 {
9283 std::swap( m_device, rhs.m_device );
9284 std::swap( m_descriptorPool, rhs.m_descriptorPool );
9285 std::swap( m_descriptorSet, rhs.m_descriptorSet );
9286 std::swap( m_dispatcher, rhs.m_dispatcher );
9287 }
9288 return *this;
9289 }
9290
9291 VULKAN_HPP_NAMESPACE::DescriptorSet const & operator*() const & VULKAN_HPP_NOEXCEPT
9292 {
9293 return m_descriptorSet;
9294 }
9295
9296 VULKAN_HPP_NAMESPACE::DescriptorSet const && operator*() const && VULKAN_HPP_NOEXCEPT
9297 {
9298 return std::move( m_descriptorSet );
9299 }
9300
9301 operator VULKAN_HPP_NAMESPACE::DescriptorSet() const VULKAN_HPP_NOEXCEPT
9302 {
9303 return m_descriptorSet;
9304 }
9305
9306 void clear() VULKAN_HPP_NOEXCEPT
9307 {
9308 if ( m_descriptorSet )
9309 {
9310 getDispatcher()->vkFreeDescriptorSets( static_cast<VkDevice>( m_device ),
9311 static_cast<VkDescriptorPool>( m_descriptorPool ),
9312 1,
9313 reinterpret_cast<VkDescriptorSet const *>( &m_descriptorSet ) );
9314 }
9315 m_device = nullptr;
9316 m_descriptorPool = nullptr;
9317 m_descriptorSet = nullptr;
9318 m_dispatcher = nullptr;
9319 }
9320
9321 VULKAN_HPP_NAMESPACE::DescriptorSet release()
9322 {
9323 m_device = nullptr;
9324 m_descriptorPool = nullptr;
9325 m_dispatcher = nullptr;
9326 return exchange( m_descriptorSet, nullptr );
9327 }
9328
9329 VULKAN_HPP_NAMESPACE::Device getDevice() const
9330 {
9331 return m_device;
9332 }
9333
9334 detail::DeviceDispatcher const * getDispatcher() const
9335 {
9336 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9337 return m_dispatcher;
9338 }
9339
9340 void swap( DescriptorSet & rhs ) VULKAN_HPP_NOEXCEPT
9341 {
9342 std::swap( m_device, rhs.m_device );
9343 std::swap( m_descriptorPool, rhs.m_descriptorPool );
9344 std::swap( m_descriptorSet, rhs.m_descriptorSet );
9345 std::swap( m_dispatcher, rhs.m_dispatcher );
9346 }
9347
9348 //=== VK_VERSION_1_1 ===
9349
9350 // wrapper function for command vkUpdateDescriptorSetWithTemplate, see
9351 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html
9352 template <typename DataType>
9353 void updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data ) const VULKAN_HPP_NOEXCEPT;
9354
9355 //=== VK_KHR_descriptor_update_template ===
9356
9357 // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see
9358 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html
9359 template <typename DataType>
9360 void updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data ) const VULKAN_HPP_NOEXCEPT;
9361
9362 //=== VK_VALVE_descriptor_set_host_mapping ===
9363
9364 // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see
9365 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html
9366 VULKAN_HPP_NODISCARD void * getHostMappingVALVE() const VULKAN_HPP_NOEXCEPT;
9367
9368 private:
9369 VULKAN_HPP_NAMESPACE::Device m_device = {};
9370 VULKAN_HPP_NAMESPACE::DescriptorPool m_descriptorPool = {};
9371 VULKAN_HPP_NAMESPACE::DescriptorSet m_descriptorSet = {};
9372 detail::DeviceDispatcher const * m_dispatcher = nullptr;
9373 };
9374
9375 template <>
9376 struct isVulkanRAIIHandleType<DescriptorSet>
9377 {
9378 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9379 };
9380
9381 class DescriptorSets : public std::vector<DescriptorSet>
9382 {
9383 public:
9384 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9385 DescriptorSets( Device const & device, DescriptorSetAllocateInfo const & allocateInfo )
9386 {
9387 *this = device.allocateDescriptorSets( allocateInfo );
9388 }
9389 # endif
9390
9391 DescriptorSets( std::nullptr_t ) {}
9392
9393 DescriptorSets() = delete;
9394 DescriptorSets( DescriptorSets const & ) = delete;
9395 DescriptorSets( DescriptorSets && rhs ) = default;
9396 DescriptorSets & operator=( DescriptorSets const & ) = delete;
9397 DescriptorSets & operator=( DescriptorSets && rhs ) = default;
9398
9399 private:
9400 DescriptorSets( std::vector<DescriptorSet> && rhs )
9401 {
9402 std::swap( *this, rhs );
9403 }
9404 };
9405
9406 // wrapper class for handle VkDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayout.html
9407 class DescriptorSetLayout
9408 {
9409 public:
9410 using CType = VkDescriptorSetLayout;
9411 using CppType = VULKAN_HPP_NAMESPACE::DescriptorSetLayout;
9412
9413 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSetLayout;
9414 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorSetLayout;
9415
9416 public:
9417 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9418 DescriptorSetLayout( Device const & device, DescriptorSetLayoutCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
9419 {
9420 *this = device.createDescriptorSetLayout( createInfo, allocator );
9421 }
9422 # endif
9423
9424 DescriptorSetLayout( Device const & device, VkDescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr )
9425 : m_device( device )
9426 , m_descriptorSetLayout( descriptorSetLayout )
9427 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
9428 , m_dispatcher( device.getDispatcher() )
9429 {
9430 }
9431
9432 DescriptorSetLayout( std::nullptr_t ) {}
9433
9434 ~DescriptorSetLayout()
9435 {
9436 clear();
9437 }
9438
9439 DescriptorSetLayout() = delete;
9440 DescriptorSetLayout( DescriptorSetLayout const & ) = delete;
9441
9442 DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
9443 : m_device( exchange( rhs.m_device, {} ) )
9444 , m_descriptorSetLayout( exchange( rhs.m_descriptorSetLayout, {} ) )
9445 , m_allocator( exchange( rhs.m_allocator, {} ) )
9446 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9447 {
9448 }
9449
9450 DescriptorSetLayout & operator=( DescriptorSetLayout const & ) = delete;
9451
9452 DescriptorSetLayout & operator=( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
9453 {
9454 if ( this != &rhs )
9455 {
9456 std::swap( m_device, rhs.m_device );
9457 std::swap( m_descriptorSetLayout, rhs.m_descriptorSetLayout );
9458 std::swap( m_allocator, rhs.m_allocator );
9459 std::swap( m_dispatcher, rhs.m_dispatcher );
9460 }
9461 return *this;
9462 }
9463
9464 VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & operator*() const & VULKAN_HPP_NOEXCEPT
9465 {
9466 return m_descriptorSetLayout;
9467 }
9468
9469 VULKAN_HPP_NAMESPACE::DescriptorSetLayout const && operator*() const && VULKAN_HPP_NOEXCEPT
9470 {
9471 return std::move( m_descriptorSetLayout );
9472 }
9473
9474 operator VULKAN_HPP_NAMESPACE::DescriptorSetLayout() const VULKAN_HPP_NOEXCEPT
9475 {
9476 return m_descriptorSetLayout;
9477 }
9478
9479 void clear() VULKAN_HPP_NOEXCEPT
9480 {
9481 if ( m_descriptorSetLayout )
9482 {
9483 getDispatcher()->vkDestroyDescriptorSetLayout( static_cast<VkDevice>( m_device ),
9484 static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ),
9485 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9486 }
9487 m_device = nullptr;
9488 m_descriptorSetLayout = nullptr;
9489 m_allocator = nullptr;
9490 m_dispatcher = nullptr;
9491 }
9492
9493 VULKAN_HPP_NAMESPACE::DescriptorSetLayout release()
9494 {
9495 m_device = nullptr;
9496 m_allocator = nullptr;
9497 m_dispatcher = nullptr;
9498 return exchange( m_descriptorSetLayout, nullptr );
9499 }
9500
9501 VULKAN_HPP_NAMESPACE::Device getDevice() const
9502 {
9503 return m_device;
9504 }
9505
9506 detail::DeviceDispatcher const * getDispatcher() const
9507 {
9508 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9509 return m_dispatcher;
9510 }
9511
9512 void swap( DescriptorSetLayout & rhs ) VULKAN_HPP_NOEXCEPT
9513 {
9514 std::swap( m_device, rhs.m_device );
9515 std::swap( m_descriptorSetLayout, rhs.m_descriptorSetLayout );
9516 std::swap( m_allocator, rhs.m_allocator );
9517 std::swap( m_dispatcher, rhs.m_dispatcher );
9518 }
9519
9520 //=== VK_EXT_descriptor_buffer ===
9521
9522 // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see
9523 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html
9524 VULKAN_HPP_NODISCARD DeviceSize getSizeEXT() const VULKAN_HPP_NOEXCEPT;
9525
9526 // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see
9527 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html
9528 VULKAN_HPP_NODISCARD DeviceSize getBindingOffsetEXT( uint32_t binding ) const VULKAN_HPP_NOEXCEPT;
9529
9530 private:
9531 VULKAN_HPP_NAMESPACE::Device m_device = {};
9532 VULKAN_HPP_NAMESPACE::DescriptorSetLayout m_descriptorSetLayout = {};
9533 const AllocationCallbacks * m_allocator = {};
9534 detail::DeviceDispatcher const * m_dispatcher = nullptr;
9535 };
9536
9537 template <>
9538 struct isVulkanRAIIHandleType<DescriptorSetLayout>
9539 {
9540 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9541 };
9542
9543 // wrapper class for handle VkDescriptorUpdateTemplate, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplate.html
9544 class DescriptorUpdateTemplate
9545 {
9546 public:
9547 using CType = VkDescriptorUpdateTemplate;
9548 using CppType = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate;
9549
9550 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorUpdateTemplate;
9551 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorUpdateTemplate;
9552
9553 public:
9554 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9555 DescriptorUpdateTemplate( Device const & device,
9556 DescriptorUpdateTemplateCreateInfo const & createInfo,
9557 Optional<const AllocationCallbacks> allocator = nullptr )
9558 {
9559 *this = device.createDescriptorUpdateTemplate( createInfo, allocator );
9560 }
9561 # endif
9562
9563 DescriptorUpdateTemplate( Device const & device,
9564 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9565 Optional<const AllocationCallbacks> allocator = nullptr )
9566 : m_device( device )
9567 , m_descriptorUpdateTemplate( descriptorUpdateTemplate )
9568 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
9569 , m_dispatcher( device.getDispatcher() )
9570 {
9571 }
9572
9573 DescriptorUpdateTemplate( std::nullptr_t ) {}
9574
9575 ~DescriptorUpdateTemplate()
9576 {
9577 clear();
9578 }
9579
9580 DescriptorUpdateTemplate() = delete;
9581 DescriptorUpdateTemplate( DescriptorUpdateTemplate const & ) = delete;
9582
9583 DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
9584 : m_device( exchange( rhs.m_device, {} ) )
9585 , m_descriptorUpdateTemplate( exchange( rhs.m_descriptorUpdateTemplate, {} ) )
9586 , m_allocator( exchange( rhs.m_allocator, {} ) )
9587 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9588 {
9589 }
9590
9591 DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & ) = delete;
9592
9593 DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
9594 {
9595 if ( this != &rhs )
9596 {
9597 std::swap( m_device, rhs.m_device );
9598 std::swap( m_descriptorUpdateTemplate, rhs.m_descriptorUpdateTemplate );
9599 std::swap( m_allocator, rhs.m_allocator );
9600 std::swap( m_dispatcher, rhs.m_dispatcher );
9601 }
9602 return *this;
9603 }
9604
9605 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & operator*() const & VULKAN_HPP_NOEXCEPT
9606 {
9607 return m_descriptorUpdateTemplate;
9608 }
9609
9610 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const && operator*() const && VULKAN_HPP_NOEXCEPT
9611 {
9612 return std::move( m_descriptorUpdateTemplate );
9613 }
9614
9615 operator VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate() const VULKAN_HPP_NOEXCEPT
9616 {
9617 return m_descriptorUpdateTemplate;
9618 }
9619
9620 void clear() VULKAN_HPP_NOEXCEPT
9621 {
9622 if ( m_descriptorUpdateTemplate )
9623 {
9624 getDispatcher()->vkDestroyDescriptorUpdateTemplate( static_cast<VkDevice>( m_device ),
9625 static_cast<VkDescriptorUpdateTemplate>( m_descriptorUpdateTemplate ),
9626 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9627 }
9628 m_device = nullptr;
9629 m_descriptorUpdateTemplate = nullptr;
9630 m_allocator = nullptr;
9631 m_dispatcher = nullptr;
9632 }
9633
9634 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate release()
9635 {
9636 m_device = nullptr;
9637 m_allocator = nullptr;
9638 m_dispatcher = nullptr;
9639 return exchange( m_descriptorUpdateTemplate, nullptr );
9640 }
9641
9642 VULKAN_HPP_NAMESPACE::Device getDevice() const
9643 {
9644 return m_device;
9645 }
9646
9647 detail::DeviceDispatcher const * getDispatcher() const
9648 {
9649 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9650 return m_dispatcher;
9651 }
9652
9653 void swap( DescriptorUpdateTemplate & rhs ) VULKAN_HPP_NOEXCEPT
9654 {
9655 std::swap( m_device, rhs.m_device );
9656 std::swap( m_descriptorUpdateTemplate, rhs.m_descriptorUpdateTemplate );
9657 std::swap( m_allocator, rhs.m_allocator );
9658 std::swap( m_dispatcher, rhs.m_dispatcher );
9659 }
9660
9661 private:
9662 VULKAN_HPP_NAMESPACE::Device m_device = {};
9663 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate m_descriptorUpdateTemplate = {};
9664 const AllocationCallbacks * m_allocator = {};
9665 detail::DeviceDispatcher const * m_dispatcher = nullptr;
9666 };
9667
9668 template <>
9669 struct isVulkanRAIIHandleType<DescriptorUpdateTemplate>
9670 {
9671 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9672 };
9673
9674 // wrapper class for handle VkDeviceMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemory.html
9675 class DeviceMemory
9676 {
9677 public:
9678 using CType = VkDeviceMemory;
9679 using CppType = VULKAN_HPP_NAMESPACE::DeviceMemory;
9680
9681 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeviceMemory;
9682 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDeviceMemory;
9683
9684 public:
9685 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9686 DeviceMemory( Device const & device, MemoryAllocateInfo const & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr )
9687 {
9688 *this = device.allocateMemory( allocateInfo, allocator );
9689 }
9690 # endif
9691
9692 DeviceMemory( Device const & device, VkDeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr )
9693 : m_device( device )
9694 , m_deviceMemory( memory )
9695 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
9696 , m_dispatcher( device.getDispatcher() )
9697 {
9698 }
9699
9700 DeviceMemory( std::nullptr_t ) {}
9701
9702 ~DeviceMemory()
9703 {
9704 clear();
9705 }
9706
9707 DeviceMemory() = delete;
9708 DeviceMemory( DeviceMemory const & ) = delete;
9709
9710 DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
9711 : m_device( exchange( rhs.m_device, {} ) )
9712 , m_deviceMemory( exchange( rhs.m_deviceMemory, {} ) )
9713 , m_allocator( exchange( rhs.m_allocator, {} ) )
9714 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9715 {
9716 }
9717
9718 DeviceMemory & operator=( DeviceMemory const & ) = delete;
9719
9720 DeviceMemory & operator=( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
9721 {
9722 if ( this != &rhs )
9723 {
9724 std::swap( m_device, rhs.m_device );
9725 std::swap( m_deviceMemory, rhs.m_deviceMemory );
9726 std::swap( m_allocator, rhs.m_allocator );
9727 std::swap( m_dispatcher, rhs.m_dispatcher );
9728 }
9729 return *this;
9730 }
9731
9732 VULKAN_HPP_NAMESPACE::DeviceMemory const & operator*() const & VULKAN_HPP_NOEXCEPT
9733 {
9734 return m_deviceMemory;
9735 }
9736
9737 VULKAN_HPP_NAMESPACE::DeviceMemory const && operator*() const && VULKAN_HPP_NOEXCEPT
9738 {
9739 return std::move( m_deviceMemory );
9740 }
9741
9742 operator VULKAN_HPP_NAMESPACE::DeviceMemory() const VULKAN_HPP_NOEXCEPT
9743 {
9744 return m_deviceMemory;
9745 }
9746
9747 void clear() VULKAN_HPP_NOEXCEPT
9748 {
9749 if ( m_deviceMemory )
9750 {
9751 getDispatcher()->vkFreeMemory(
9752 static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_deviceMemory ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9753 }
9754 m_device = nullptr;
9755 m_deviceMemory = nullptr;
9756 m_allocator = nullptr;
9757 m_dispatcher = nullptr;
9758 }
9759
9760 VULKAN_HPP_NAMESPACE::DeviceMemory release()
9761 {
9762 m_device = nullptr;
9763 m_allocator = nullptr;
9764 m_dispatcher = nullptr;
9765 return exchange( m_deviceMemory, nullptr );
9766 }
9767
9768 VULKAN_HPP_NAMESPACE::Device getDevice() const
9769 {
9770 return m_device;
9771 }
9772
9773 detail::DeviceDispatcher const * getDispatcher() const
9774 {
9775 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9776 return m_dispatcher;
9777 }
9778
9779 void swap( DeviceMemory & rhs ) VULKAN_HPP_NOEXCEPT
9780 {
9781 std::swap( m_device, rhs.m_device );
9782 std::swap( m_deviceMemory, rhs.m_deviceMemory );
9783 std::swap( m_allocator, rhs.m_allocator );
9784 std::swap( m_dispatcher, rhs.m_dispatcher );
9785 }
9786
9787 //=== VK_VERSION_1_0 ===
9788
9789 // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html
9790 VULKAN_HPP_NODISCARD typename ResultValueType<void *>::type
9791 mapMemory( DeviceSize offset, DeviceSize size, MemoryMapFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
9792
9793 // wrapper function for command vkUnmapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory.html
9794 void unmapMemory() const VULKAN_HPP_NOEXCEPT;
9795
9796 // wrapper function for command vkGetDeviceMemoryCommitment, see
9797 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html
9798 VULKAN_HPP_NODISCARD DeviceSize getCommitment() const VULKAN_HPP_NOEXCEPT;
9799
9800 # if defined( VK_USE_PLATFORM_WIN32_KHR )
9801 //=== VK_NV_external_memory_win32 ===
9802
9803 // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html
9804 VULKAN_HPP_NODISCARD typename ResultValueType<HANDLE>::type getMemoryWin32HandleNV( ExternalMemoryHandleTypeFlagsNV handleType ) const;
9805 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
9806
9807 //=== VK_EXT_pageable_device_local_memory ===
9808
9809 // wrapper function for command vkSetDeviceMemoryPriorityEXT, see
9810 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDeviceMemoryPriorityEXT.html
9811 void setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT;
9812
9813 private:
9814 VULKAN_HPP_NAMESPACE::Device m_device = {};
9815 VULKAN_HPP_NAMESPACE::DeviceMemory m_deviceMemory = {};
9816 const AllocationCallbacks * m_allocator = {};
9817 detail::DeviceDispatcher const * m_dispatcher = nullptr;
9818 };
9819
9820 template <>
9821 struct isVulkanRAIIHandleType<DeviceMemory>
9822 {
9823 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9824 };
9825
9826 // wrapper class for handle VkDisplayKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayKHR.html
9827 class DisplayKHR
9828 {
9829 public:
9830 using CType = VkDisplayKHR;
9831 using CppType = VULKAN_HPP_NAMESPACE::DisplayKHR;
9832
9833 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayKHR;
9834 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDisplayKHR;
9835
9836 public:
9837 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9838 DisplayKHR( PhysicalDevice const & physicalDevice, int32_t drmFd, uint32_t connectorId )
9839 {
9840 *this = physicalDevice.getDrmDisplayEXT( drmFd, connectorId );
9841 }
9842 # endif
9843
9844 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9845 # if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
9846 DisplayKHR( PhysicalDevice const & physicalDevice, Display & dpy, RROutput rrOutput )
9847 {
9848 *this = physicalDevice.getRandROutputDisplayEXT( dpy, rrOutput );
9849 }
9850 # endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
9851 # endif
9852
9853 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9854 # if defined( VK_USE_PLATFORM_WIN32_KHR )
9855 DisplayKHR( PhysicalDevice const & physicalDevice, uint32_t deviceRelativeId )
9856 {
9857 *this = physicalDevice.getWinrtDisplayNV( deviceRelativeId );
9858 }
9859 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
9860 # endif
9861
9862 DisplayKHR( PhysicalDevice const & physicalDevice, VkDisplayKHR display )
9863 : m_physicalDevice( physicalDevice ), m_displayKHR( display ), m_dispatcher( physicalDevice.getDispatcher() )
9864 {
9865 }
9866
9867 DisplayKHR( std::nullptr_t ) {}
9868
9869 ~DisplayKHR()
9870 {
9871 clear();
9872 }
9873
9874 DisplayKHR() = delete;
9875 DisplayKHR( DisplayKHR const & ) = delete;
9876
9877 DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
9878 : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) )
9879 , m_displayKHR( exchange( rhs.m_displayKHR, {} ) )
9880 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
9881 {
9882 }
9883
9884 DisplayKHR & operator=( DisplayKHR const & ) = delete;
9885
9886 DisplayKHR & operator=( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
9887 {
9888 if ( this != &rhs )
9889 {
9890 std::swap( m_physicalDevice, rhs.m_physicalDevice );
9891 std::swap( m_displayKHR, rhs.m_displayKHR );
9892 std::swap( m_dispatcher, rhs.m_dispatcher );
9893 }
9894 return *this;
9895 }
9896
9897 VULKAN_HPP_NAMESPACE::DisplayKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
9898 {
9899 return m_displayKHR;
9900 }
9901
9902 VULKAN_HPP_NAMESPACE::DisplayKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
9903 {
9904 return std::move( m_displayKHR );
9905 }
9906
9907 operator VULKAN_HPP_NAMESPACE::DisplayKHR() const VULKAN_HPP_NOEXCEPT
9908 {
9909 return m_displayKHR;
9910 }
9911
9912 void clear() VULKAN_HPP_NOEXCEPT
9913 {
9914 if ( m_displayKHR )
9915 {
9916 getDispatcher()->vkReleaseDisplayEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ) );
9917 }
9918 m_physicalDevice = nullptr;
9919 m_displayKHR = nullptr;
9920 m_dispatcher = nullptr;
9921 }
9922
9923 VULKAN_HPP_NAMESPACE::DisplayKHR release()
9924 {
9925 m_physicalDevice = nullptr;
9926 m_dispatcher = nullptr;
9927 return exchange( m_displayKHR, nullptr );
9928 }
9929
9930 VULKAN_HPP_NAMESPACE::PhysicalDevice getPhysicalDevice() const
9931 {
9932 return m_physicalDevice;
9933 }
9934
9935 detail::InstanceDispatcher const * getDispatcher() const
9936 {
9937 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9938 return m_dispatcher;
9939 }
9940
9941 void swap( DisplayKHR & rhs ) VULKAN_HPP_NOEXCEPT
9942 {
9943 std::swap( m_physicalDevice, rhs.m_physicalDevice );
9944 std::swap( m_displayKHR, rhs.m_displayKHR );
9945 std::swap( m_dispatcher, rhs.m_dispatcher );
9946 }
9947
9948 //=== VK_KHR_display ===
9949
9950 // wrapper function for command vkGetDisplayModePropertiesKHR, see
9951 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html
9952 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayModePropertiesKHR>>::type getModeProperties() const;
9953
9954 // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html
9955 VULKAN_HPP_NODISCARD typename ResultValueType<DisplayModeKHR>::type
9956 createMode( DisplayModeCreateInfoKHR const & createInfo,
9957 Optional<const AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
9958
9959 //=== VK_KHR_get_display_properties2 ===
9960
9961 // wrapper function for command vkGetDisplayModeProperties2KHR, see
9962 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html
9963 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DisplayModeProperties2KHR>>::type getModeProperties2() const;
9964
9965 // wrapper function for command vkGetDisplayModeProperties2KHR, see
9966 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html
9967 template <typename StructureChain>
9968 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<StructureChain>>::type getModeProperties2() const;
9969
9970 # if defined( VK_USE_PLATFORM_WIN32_KHR )
9971 //=== VK_NV_acquire_winrt_display ===
9972
9973 // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html
9974 typename ResultValueType<void>::type acquireWinrtNV() const;
9975 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
9976
9977 private:
9978 VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {};
9979 VULKAN_HPP_NAMESPACE::DisplayKHR m_displayKHR = {};
9980 detail::InstanceDispatcher const * m_dispatcher = nullptr;
9981 };
9982
9983 template <>
9984 struct isVulkanRAIIHandleType<DisplayKHR>
9985 {
9986 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
9987 };
9988
9989 class DisplayKHRs : public std::vector<DisplayKHR>
9990 {
9991 public:
9992 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
9993 DisplayKHRs( PhysicalDevice const & physicalDevice, uint32_t planeIndex )
9994 {
9995 *this = physicalDevice.getDisplayPlaneSupportedDisplaysKHR( planeIndex );
9996 }
9997 # endif
9998
9999 DisplayKHRs( std::nullptr_t ) {}
10000
10001 DisplayKHRs() = delete;
10002 DisplayKHRs( DisplayKHRs const & ) = delete;
10003 DisplayKHRs( DisplayKHRs && rhs ) = default;
10004 DisplayKHRs & operator=( DisplayKHRs const & ) = delete;
10005 DisplayKHRs & operator=( DisplayKHRs && rhs ) = default;
10006
10007 private:
10008 DisplayKHRs( std::vector<DisplayKHR> && rhs )
10009 {
10010 std::swap( *this, rhs );
10011 }
10012 };
10013
10014 // wrapper class for handle VkDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeKHR.html
10015 class DisplayModeKHR
10016 {
10017 public:
10018 using CType = VkDisplayModeKHR;
10019 using CppType = VULKAN_HPP_NAMESPACE::DisplayModeKHR;
10020
10021 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayModeKHR;
10022 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDisplayModeKHR;
10023
10024 public:
10025 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10026 DisplayModeKHR( DisplayKHR const & display, DisplayModeCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10027 {
10028 *this = display.createMode( createInfo, allocator );
10029 }
10030 # endif
10031
10032 DisplayModeKHR( DisplayKHR const & display, VkDisplayModeKHR displayModeKHR )
10033 : m_physicalDevice( display.getPhysicalDevice() ), m_displayModeKHR( displayModeKHR ), m_dispatcher( display.getDispatcher() )
10034 {
10035 }
10036
10037 DisplayModeKHR( std::nullptr_t ) {}
10038
10039 ~DisplayModeKHR()
10040 {
10041 clear();
10042 }
10043
10044 DisplayModeKHR() = delete;
10045
10046 DisplayModeKHR( DisplayModeKHR const & rhs ) : m_displayModeKHR( rhs.m_displayModeKHR ), m_dispatcher( rhs.m_dispatcher ) {}
10047
10048 DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
10049 : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) )
10050 , m_displayModeKHR( exchange( rhs.m_displayModeKHR, {} ) )
10051 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10052 {
10053 }
10054
10055 DisplayModeKHR & operator=( DisplayModeKHR const & rhs )
10056 {
10057 m_displayModeKHR = rhs.m_displayModeKHR;
10058 m_dispatcher = rhs.m_dispatcher;
10059 return *this;
10060 }
10061
10062 DisplayModeKHR & operator=( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
10063 {
10064 if ( this != &rhs )
10065 {
10066 std::swap( m_physicalDevice, rhs.m_physicalDevice );
10067 std::swap( m_displayModeKHR, rhs.m_displayModeKHR );
10068 std::swap( m_dispatcher, rhs.m_dispatcher );
10069 }
10070 return *this;
10071 }
10072
10073 VULKAN_HPP_NAMESPACE::DisplayModeKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
10074 {
10075 return m_displayModeKHR;
10076 }
10077
10078 VULKAN_HPP_NAMESPACE::DisplayModeKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
10079 {
10080 return std::move( m_displayModeKHR );
10081 }
10082
10083 operator VULKAN_HPP_NAMESPACE::DisplayModeKHR() const VULKAN_HPP_NOEXCEPT
10084 {
10085 return m_displayModeKHR;
10086 }
10087
10088 void clear() VULKAN_HPP_NOEXCEPT
10089 {
10090 m_physicalDevice = nullptr;
10091 m_displayModeKHR = nullptr;
10092 m_dispatcher = nullptr;
10093 }
10094
10095 VULKAN_HPP_NAMESPACE::DisplayModeKHR release()
10096 {
10097 m_physicalDevice = nullptr;
10098 m_dispatcher = nullptr;
10099 return exchange( m_displayModeKHR, nullptr );
10100 }
10101
10102 detail::InstanceDispatcher const * getDispatcher() const
10103 {
10104 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10105 return m_dispatcher;
10106 }
10107
10108 void swap( DisplayModeKHR & rhs ) VULKAN_HPP_NOEXCEPT
10109 {
10110 std::swap( m_physicalDevice, rhs.m_physicalDevice );
10111 std::swap( m_displayModeKHR, rhs.m_displayModeKHR );
10112 std::swap( m_dispatcher, rhs.m_dispatcher );
10113 }
10114
10115 //=== VK_KHR_display ===
10116
10117 // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see
10118 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html
10119 VULKAN_HPP_NODISCARD typename ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilities( uint32_t planeIndex ) const;
10120
10121 private:
10122 VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {};
10123 VULKAN_HPP_NAMESPACE::DisplayModeKHR m_displayModeKHR = {};
10124 detail::InstanceDispatcher const * m_dispatcher = nullptr;
10125 };
10126
10127 template <>
10128 struct isVulkanRAIIHandleType<DisplayModeKHR>
10129 {
10130 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
10131 };
10132
10133 // wrapper class for handle VkEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkEvent.html
10134 class Event
10135 {
10136 public:
10137 using CType = VkEvent;
10138 using CppType = VULKAN_HPP_NAMESPACE::Event;
10139
10140 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eEvent;
10141 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eEvent;
10142
10143 public:
10144 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10145 Event( Device const & device, EventCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10146 {
10147 *this = device.createEvent( createInfo, allocator );
10148 }
10149 # endif
10150
10151 Event( Device const & device, VkEvent event, Optional<const AllocationCallbacks> allocator = nullptr )
10152 : m_device( device ), m_event( event ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) ), m_dispatcher( device.getDispatcher() )
10153 {
10154 }
10155
10156 Event( std::nullptr_t ) {}
10157
10158 ~Event()
10159 {
10160 clear();
10161 }
10162
10163 Event() = delete;
10164 Event( Event const & ) = delete;
10165
10166 Event( Event && rhs ) VULKAN_HPP_NOEXCEPT
10167 : m_device( exchange( rhs.m_device, {} ) )
10168 , m_event( exchange( rhs.m_event, {} ) )
10169 , m_allocator( exchange( rhs.m_allocator, {} ) )
10170 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10171 {
10172 }
10173
10174 Event & operator=( Event const & ) = delete;
10175
10176 Event & operator=( Event && rhs ) VULKAN_HPP_NOEXCEPT
10177 {
10178 if ( this != &rhs )
10179 {
10180 std::swap( m_device, rhs.m_device );
10181 std::swap( m_event, rhs.m_event );
10182 std::swap( m_allocator, rhs.m_allocator );
10183 std::swap( m_dispatcher, rhs.m_dispatcher );
10184 }
10185 return *this;
10186 }
10187
10188 VULKAN_HPP_NAMESPACE::Event const & operator*() const & VULKAN_HPP_NOEXCEPT
10189 {
10190 return m_event;
10191 }
10192
10193 VULKAN_HPP_NAMESPACE::Event const && operator*() const && VULKAN_HPP_NOEXCEPT
10194 {
10195 return std::move( m_event );
10196 }
10197
10198 operator VULKAN_HPP_NAMESPACE::Event() const VULKAN_HPP_NOEXCEPT
10199 {
10200 return m_event;
10201 }
10202
10203 void clear() VULKAN_HPP_NOEXCEPT
10204 {
10205 if ( m_event )
10206 {
10207 getDispatcher()->vkDestroyEvent(
10208 static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10209 }
10210 m_device = nullptr;
10211 m_event = nullptr;
10212 m_allocator = nullptr;
10213 m_dispatcher = nullptr;
10214 }
10215
10216 VULKAN_HPP_NAMESPACE::Event release()
10217 {
10218 m_device = nullptr;
10219 m_allocator = nullptr;
10220 m_dispatcher = nullptr;
10221 return exchange( m_event, nullptr );
10222 }
10223
10224 VULKAN_HPP_NAMESPACE::Device getDevice() const
10225 {
10226 return m_device;
10227 }
10228
10229 detail::DeviceDispatcher const * getDispatcher() const
10230 {
10231 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10232 return m_dispatcher;
10233 }
10234
10235 void swap( Event & rhs ) VULKAN_HPP_NOEXCEPT
10236 {
10237 std::swap( m_device, rhs.m_device );
10238 std::swap( m_event, rhs.m_event );
10239 std::swap( m_allocator, rhs.m_allocator );
10240 std::swap( m_dispatcher, rhs.m_dispatcher );
10241 }
10242
10243 //=== VK_VERSION_1_0 ===
10244
10245 // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html
10246 VULKAN_HPP_NODISCARD Result getStatus() const;
10247
10248 // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html
10249 typename ResultValueType<void>::type set() const;
10250
10251 // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html
10252 typename ResultValueType<void>::type reset() const;
10253
10254 private:
10255 VULKAN_HPP_NAMESPACE::Device m_device = {};
10256 VULKAN_HPP_NAMESPACE::Event m_event = {};
10257 const AllocationCallbacks * m_allocator = {};
10258 detail::DeviceDispatcher const * m_dispatcher = nullptr;
10259 };
10260
10261 template <>
10262 struct isVulkanRAIIHandleType<Event>
10263 {
10264 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
10265 };
10266
10267 // wrapper class for handle VkExternalComputeQueueNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueNV.html
10268 class ExternalComputeQueueNV
10269 {
10270 public:
10271 using CType = VkExternalComputeQueueNV;
10272 using CppType = VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV;
10273
10274 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eExternalComputeQueueNV;
10275 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
10276
10277 public:
10278 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10279 ExternalComputeQueueNV( Device const & device,
10280 ExternalComputeQueueCreateInfoNV const & createInfo,
10281 Optional<const AllocationCallbacks> allocator = nullptr )
10282 {
10283 *this = device.createExternalComputeQueueNV( createInfo, allocator );
10284 }
10285 # endif
10286
10287 ExternalComputeQueueNV( Device const & device, VkExternalComputeQueueNV externalQueue, Optional<const AllocationCallbacks> allocator = nullptr )
10288 : m_device( device )
10289 , m_externalComputeQueueNV( externalQueue )
10290 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
10291 , m_dispatcher( device.getDispatcher() )
10292 {
10293 }
10294
10295 ExternalComputeQueueNV( std::nullptr_t ) {}
10296
10297 ~ExternalComputeQueueNV()
10298 {
10299 clear();
10300 }
10301
10302 ExternalComputeQueueNV() = delete;
10303 ExternalComputeQueueNV( ExternalComputeQueueNV const & ) = delete;
10304
10305 ExternalComputeQueueNV( ExternalComputeQueueNV && rhs ) VULKAN_HPP_NOEXCEPT
10306 : m_device( exchange( rhs.m_device, {} ) )
10307 , m_externalComputeQueueNV( exchange( rhs.m_externalComputeQueueNV, {} ) )
10308 , m_allocator( exchange( rhs.m_allocator, {} ) )
10309 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10310 {
10311 }
10312
10313 ExternalComputeQueueNV & operator=( ExternalComputeQueueNV const & ) = delete;
10314
10315 ExternalComputeQueueNV & operator=( ExternalComputeQueueNV && rhs ) VULKAN_HPP_NOEXCEPT
10316 {
10317 if ( this != &rhs )
10318 {
10319 std::swap( m_device, rhs.m_device );
10320 std::swap( m_externalComputeQueueNV, rhs.m_externalComputeQueueNV );
10321 std::swap( m_allocator, rhs.m_allocator );
10322 std::swap( m_dispatcher, rhs.m_dispatcher );
10323 }
10324 return *this;
10325 }
10326
10327 VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV const & operator*() const & VULKAN_HPP_NOEXCEPT
10328 {
10329 return m_externalComputeQueueNV;
10330 }
10331
10332 VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV const && operator*() const && VULKAN_HPP_NOEXCEPT
10333 {
10334 return std::move( m_externalComputeQueueNV );
10335 }
10336
10337 operator VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV() const VULKAN_HPP_NOEXCEPT
10338 {
10339 return m_externalComputeQueueNV;
10340 }
10341
10342 void clear() VULKAN_HPP_NOEXCEPT
10343 {
10344 if ( m_externalComputeQueueNV )
10345 {
10346 getDispatcher()->vkDestroyExternalComputeQueueNV( static_cast<VkDevice>( m_device ),
10347 static_cast<VkExternalComputeQueueNV>( m_externalComputeQueueNV ),
10348 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10349 }
10350 m_device = nullptr;
10351 m_externalComputeQueueNV = nullptr;
10352 m_allocator = nullptr;
10353 m_dispatcher = nullptr;
10354 }
10355
10356 VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV release()
10357 {
10358 m_device = nullptr;
10359 m_allocator = nullptr;
10360 m_dispatcher = nullptr;
10361 return exchange( m_externalComputeQueueNV, nullptr );
10362 }
10363
10364 VULKAN_HPP_NAMESPACE::Device getDevice() const
10365 {
10366 return m_device;
10367 }
10368
10369 detail::DeviceDispatcher const * getDispatcher() const
10370 {
10371 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10372 return m_dispatcher;
10373 }
10374
10375 void swap( ExternalComputeQueueNV & rhs ) VULKAN_HPP_NOEXCEPT
10376 {
10377 std::swap( m_device, rhs.m_device );
10378 std::swap( m_externalComputeQueueNV, rhs.m_externalComputeQueueNV );
10379 std::swap( m_allocator, rhs.m_allocator );
10380 std::swap( m_dispatcher, rhs.m_dispatcher );
10381 }
10382
10383 //=== VK_NV_external_compute_queue ===
10384
10385 // wrapper function for command vkGetExternalComputeQueueDataNV, see
10386 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html
10387 template <typename DataType>
10388 VULKAN_HPP_NODISCARD std::pair<ExternalComputeQueueDataParamsNV, DataType> getData() const VULKAN_HPP_NOEXCEPT;
10389
10390 private:
10391 VULKAN_HPP_NAMESPACE::Device m_device = {};
10392 VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV m_externalComputeQueueNV = {};
10393 const AllocationCallbacks * m_allocator = {};
10394 detail::DeviceDispatcher const * m_dispatcher = nullptr;
10395 };
10396
10397 template <>
10398 struct isVulkanRAIIHandleType<ExternalComputeQueueNV>
10399 {
10400 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
10401 };
10402
10403 // wrapper class for handle VkFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFence.html
10404 class Fence
10405 {
10406 public:
10407 using CType = VkFence;
10408 using CppType = VULKAN_HPP_NAMESPACE::Fence;
10409
10410 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFence;
10411 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eFence;
10412
10413 public:
10414 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10415 Fence( Device const & device, FenceCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10416 {
10417 *this = device.createFence( createInfo, allocator );
10418 }
10419 # endif
10420
10421 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10422 Fence( Device const & device, DeviceEventInfoEXT const & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10423 {
10424 *this = device.registerEventEXT( deviceEventInfo, allocator );
10425 }
10426 # endif
10427
10428 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10429 Fence( Device const & device,
10430 DisplayKHR const & display,
10431 DisplayEventInfoEXT const & displayEventInfo,
10432 Optional<const AllocationCallbacks> allocator = nullptr )
10433 {
10434 *this = device.registerDisplayEventEXT( display, displayEventInfo, allocator );
10435 }
10436 # endif
10437
10438 Fence( Device const & device, VkFence fence, Optional<const AllocationCallbacks> allocator = nullptr )
10439 : m_device( device ), m_fence( fence ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) ), m_dispatcher( device.getDispatcher() )
10440 {
10441 }
10442
10443 Fence( std::nullptr_t ) {}
10444
10445 ~Fence()
10446 {
10447 clear();
10448 }
10449
10450 Fence() = delete;
10451 Fence( Fence const & ) = delete;
10452
10453 Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT
10454 : m_device( exchange( rhs.m_device, {} ) )
10455 , m_fence( exchange( rhs.m_fence, {} ) )
10456 , m_allocator( exchange( rhs.m_allocator, {} ) )
10457 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10458 {
10459 }
10460
10461 Fence & operator=( Fence const & ) = delete;
10462
10463 Fence & operator=( Fence && rhs ) VULKAN_HPP_NOEXCEPT
10464 {
10465 if ( this != &rhs )
10466 {
10467 std::swap( m_device, rhs.m_device );
10468 std::swap( m_fence, rhs.m_fence );
10469 std::swap( m_allocator, rhs.m_allocator );
10470 std::swap( m_dispatcher, rhs.m_dispatcher );
10471 }
10472 return *this;
10473 }
10474
10475 VULKAN_HPP_NAMESPACE::Fence const & operator*() const & VULKAN_HPP_NOEXCEPT
10476 {
10477 return m_fence;
10478 }
10479
10480 VULKAN_HPP_NAMESPACE::Fence const && operator*() const && VULKAN_HPP_NOEXCEPT
10481 {
10482 return std::move( m_fence );
10483 }
10484
10485 operator VULKAN_HPP_NAMESPACE::Fence() const VULKAN_HPP_NOEXCEPT
10486 {
10487 return m_fence;
10488 }
10489
10490 void clear() VULKAN_HPP_NOEXCEPT
10491 {
10492 if ( m_fence )
10493 {
10494 getDispatcher()->vkDestroyFence(
10495 static_cast<VkDevice>( m_device ), static_cast<VkFence>( m_fence ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10496 }
10497 m_device = nullptr;
10498 m_fence = nullptr;
10499 m_allocator = nullptr;
10500 m_dispatcher = nullptr;
10501 }
10502
10503 VULKAN_HPP_NAMESPACE::Fence release()
10504 {
10505 m_device = nullptr;
10506 m_allocator = nullptr;
10507 m_dispatcher = nullptr;
10508 return exchange( m_fence, nullptr );
10509 }
10510
10511 VULKAN_HPP_NAMESPACE::Device getDevice() const
10512 {
10513 return m_device;
10514 }
10515
10516 detail::DeviceDispatcher const * getDispatcher() const
10517 {
10518 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10519 return m_dispatcher;
10520 }
10521
10522 void swap( Fence & rhs ) VULKAN_HPP_NOEXCEPT
10523 {
10524 std::swap( m_device, rhs.m_device );
10525 std::swap( m_fence, rhs.m_fence );
10526 std::swap( m_allocator, rhs.m_allocator );
10527 std::swap( m_dispatcher, rhs.m_dispatcher );
10528 }
10529
10530 //=== VK_VERSION_1_0 ===
10531
10532 // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html
10533 VULKAN_HPP_NODISCARD Result getStatus() const;
10534
10535 private:
10536 VULKAN_HPP_NAMESPACE::Device m_device = {};
10537 VULKAN_HPP_NAMESPACE::Fence m_fence = {};
10538 const AllocationCallbacks * m_allocator = {};
10539 detail::DeviceDispatcher const * m_dispatcher = nullptr;
10540 };
10541
10542 template <>
10543 struct isVulkanRAIIHandleType<Fence>
10544 {
10545 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
10546 };
10547
10548 // wrapper class for handle VkFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebuffer.html
10549 class Framebuffer
10550 {
10551 public:
10552 using CType = VkFramebuffer;
10553 using CppType = VULKAN_HPP_NAMESPACE::Framebuffer;
10554
10555 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFramebuffer;
10556 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eFramebuffer;
10557
10558 public:
10559 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10560 Framebuffer( Device const & device, FramebufferCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10561 {
10562 *this = device.createFramebuffer( createInfo, allocator );
10563 }
10564 # endif
10565
10566 Framebuffer( Device const & device, VkFramebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr )
10567 : m_device( device )
10568 , m_framebuffer( framebuffer )
10569 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
10570 , m_dispatcher( device.getDispatcher() )
10571 {
10572 }
10573
10574 Framebuffer( std::nullptr_t ) {}
10575
10576 ~Framebuffer()
10577 {
10578 clear();
10579 }
10580
10581 Framebuffer() = delete;
10582 Framebuffer( Framebuffer const & ) = delete;
10583
10584 Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
10585 : m_device( exchange( rhs.m_device, {} ) )
10586 , m_framebuffer( exchange( rhs.m_framebuffer, {} ) )
10587 , m_allocator( exchange( rhs.m_allocator, {} ) )
10588 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10589 {
10590 }
10591
10592 Framebuffer & operator=( Framebuffer const & ) = delete;
10593
10594 Framebuffer & operator=( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
10595 {
10596 if ( this != &rhs )
10597 {
10598 std::swap( m_device, rhs.m_device );
10599 std::swap( m_framebuffer, rhs.m_framebuffer );
10600 std::swap( m_allocator, rhs.m_allocator );
10601 std::swap( m_dispatcher, rhs.m_dispatcher );
10602 }
10603 return *this;
10604 }
10605
10606 VULKAN_HPP_NAMESPACE::Framebuffer const & operator*() const & VULKAN_HPP_NOEXCEPT
10607 {
10608 return m_framebuffer;
10609 }
10610
10611 VULKAN_HPP_NAMESPACE::Framebuffer const && operator*() const && VULKAN_HPP_NOEXCEPT
10612 {
10613 return std::move( m_framebuffer );
10614 }
10615
10616 operator VULKAN_HPP_NAMESPACE::Framebuffer() const VULKAN_HPP_NOEXCEPT
10617 {
10618 return m_framebuffer;
10619 }
10620
10621 void clear() VULKAN_HPP_NOEXCEPT
10622 {
10623 if ( m_framebuffer )
10624 {
10625 getDispatcher()->vkDestroyFramebuffer(
10626 static_cast<VkDevice>( m_device ), static_cast<VkFramebuffer>( m_framebuffer ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10627 }
10628 m_device = nullptr;
10629 m_framebuffer = nullptr;
10630 m_allocator = nullptr;
10631 m_dispatcher = nullptr;
10632 }
10633
10634 VULKAN_HPP_NAMESPACE::Framebuffer release()
10635 {
10636 m_device = nullptr;
10637 m_allocator = nullptr;
10638 m_dispatcher = nullptr;
10639 return exchange( m_framebuffer, nullptr );
10640 }
10641
10642 VULKAN_HPP_NAMESPACE::Device getDevice() const
10643 {
10644 return m_device;
10645 }
10646
10647 detail::DeviceDispatcher const * getDispatcher() const
10648 {
10649 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10650 return m_dispatcher;
10651 }
10652
10653 void swap( Framebuffer & rhs ) VULKAN_HPP_NOEXCEPT
10654 {
10655 std::swap( m_device, rhs.m_device );
10656 std::swap( m_framebuffer, rhs.m_framebuffer );
10657 std::swap( m_allocator, rhs.m_allocator );
10658 std::swap( m_dispatcher, rhs.m_dispatcher );
10659 }
10660
10661 //=== VK_QCOM_tile_properties ===
10662
10663 // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see
10664 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html
10665 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<TilePropertiesQCOM>>::type getTilePropertiesQCOM() const;
10666
10667 private:
10668 VULKAN_HPP_NAMESPACE::Device m_device = {};
10669 VULKAN_HPP_NAMESPACE::Framebuffer m_framebuffer = {};
10670 const AllocationCallbacks * m_allocator = {};
10671 detail::DeviceDispatcher const * m_dispatcher = nullptr;
10672 };
10673
10674 template <>
10675 struct isVulkanRAIIHandleType<Framebuffer>
10676 {
10677 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
10678 };
10679
10680 // wrapper class for handle VkImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImage.html
10681 class Image
10682 {
10683 public:
10684 using CType = VkImage;
10685 using CppType = VULKAN_HPP_NAMESPACE::Image;
10686
10687 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImage;
10688 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eImage;
10689
10690 public:
10691 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10692 Image( Device const & device, ImageCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10693 {
10694 *this = device.createImage( createInfo, allocator );
10695 }
10696 # endif
10697
10698 Image( Device const & device, VkImage image, Optional<const AllocationCallbacks> allocator = nullptr )
10699 : m_device( device ), m_image( image ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) ), m_dispatcher( device.getDispatcher() )
10700 {
10701 }
10702
10703 Image( std::nullptr_t ) {}
10704
10705 ~Image()
10706 {
10707 clear();
10708 }
10709
10710 Image() = delete;
10711 Image( Image const & ) = delete;
10712
10713 Image( Image && rhs ) VULKAN_HPP_NOEXCEPT
10714 : m_device( exchange( rhs.m_device, {} ) )
10715 , m_image( exchange( rhs.m_image, {} ) )
10716 , m_allocator( exchange( rhs.m_allocator, {} ) )
10717 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10718 {
10719 }
10720
10721 Image & operator=( Image const & ) = delete;
10722
10723 Image & operator=( Image && rhs ) VULKAN_HPP_NOEXCEPT
10724 {
10725 if ( this != &rhs )
10726 {
10727 std::swap( m_device, rhs.m_device );
10728 std::swap( m_image, rhs.m_image );
10729 std::swap( m_allocator, rhs.m_allocator );
10730 std::swap( m_dispatcher, rhs.m_dispatcher );
10731 }
10732 return *this;
10733 }
10734
10735 VULKAN_HPP_NAMESPACE::Image const & operator*() const & VULKAN_HPP_NOEXCEPT
10736 {
10737 return m_image;
10738 }
10739
10740 VULKAN_HPP_NAMESPACE::Image const && operator*() const && VULKAN_HPP_NOEXCEPT
10741 {
10742 return std::move( m_image );
10743 }
10744
10745 operator VULKAN_HPP_NAMESPACE::Image() const VULKAN_HPP_NOEXCEPT
10746 {
10747 return m_image;
10748 }
10749
10750 void clear() VULKAN_HPP_NOEXCEPT
10751 {
10752 if ( m_image )
10753 {
10754 getDispatcher()->vkDestroyImage(
10755 static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10756 }
10757 m_device = nullptr;
10758 m_image = nullptr;
10759 m_allocator = nullptr;
10760 m_dispatcher = nullptr;
10761 }
10762
10763 VULKAN_HPP_NAMESPACE::Image release()
10764 {
10765 m_device = nullptr;
10766 m_allocator = nullptr;
10767 m_dispatcher = nullptr;
10768 return exchange( m_image, nullptr );
10769 }
10770
10771 VULKAN_HPP_NAMESPACE::Device getDevice() const
10772 {
10773 return m_device;
10774 }
10775
10776 detail::DeviceDispatcher const * getDispatcher() const
10777 {
10778 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10779 return m_dispatcher;
10780 }
10781
10782 void swap( Image & rhs ) VULKAN_HPP_NOEXCEPT
10783 {
10784 std::swap( m_device, rhs.m_device );
10785 std::swap( m_image, rhs.m_image );
10786 std::swap( m_allocator, rhs.m_allocator );
10787 std::swap( m_dispatcher, rhs.m_dispatcher );
10788 }
10789
10790 //=== VK_VERSION_1_0 ===
10791
10792 // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html
10793 typename ResultValueType<void>::type bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const;
10794
10795 // wrapper function for command vkGetImageMemoryRequirements, see
10796 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html
10797 VULKAN_HPP_NODISCARD MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
10798
10799 // wrapper function for command vkGetImageSparseMemoryRequirements, see
10800 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html
10801 VULKAN_HPP_NODISCARD std::vector<SparseImageMemoryRequirements> getSparseMemoryRequirements() const;
10802
10803 // wrapper function for command vkGetImageSubresourceLayout, see
10804 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html
10805 VULKAN_HPP_NODISCARD SubresourceLayout getSubresourceLayout( const ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT;
10806
10807 //=== VK_VERSION_1_4 ===
10808
10809 // wrapper function for command vkGetImageSubresourceLayout2, see
10810 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html
10811 VULKAN_HPP_NODISCARD SubresourceLayout2 getSubresourceLayout2( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT;
10812
10813 // wrapper function for command vkGetImageSubresourceLayout2, see
10814 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html
10815 template <typename X, typename Y, typename... Z>
10816 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getSubresourceLayout2( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT;
10817
10818 //=== VK_EXT_image_drm_format_modifier ===
10819
10820 // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see
10821 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html
10822 VULKAN_HPP_NODISCARD typename ResultValueType<ImageDrmFormatModifierPropertiesEXT>::type getDrmFormatModifierPropertiesEXT() const;
10823
10824 //=== VK_EXT_host_image_copy ===
10825
10826 // wrapper function for command vkGetImageSubresourceLayout2EXT, see
10827 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html
10828 VULKAN_HPP_NODISCARD SubresourceLayout2 getSubresourceLayout2EXT( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT;
10829
10830 // wrapper function for command vkGetImageSubresourceLayout2EXT, see
10831 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html
10832 template <typename X, typename Y, typename... Z>
10833 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getSubresourceLayout2EXT( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT;
10834
10835 //=== VK_KHR_maintenance5 ===
10836
10837 // wrapper function for command vkGetImageSubresourceLayout2KHR, see
10838 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html
10839 VULKAN_HPP_NODISCARD SubresourceLayout2 getSubresourceLayout2KHR( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT;
10840
10841 // wrapper function for command vkGetImageSubresourceLayout2KHR, see
10842 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html
10843 template <typename X, typename Y, typename... Z>
10844 VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getSubresourceLayout2KHR( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT;
10845
10846 # if defined( VK_USE_PLATFORM_OHOS )
10847 //=== VK_OHOS_native_buffer ===
10848
10849 // wrapper function for command vkAcquireImageOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireImageOHOS.html
10850 typename ResultValueType<void>::type acquireOHOS( int32_t nativeFenceFd,
10851 VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ),
10852 VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
10853 # endif /*VK_USE_PLATFORM_OHOS*/
10854
10855 protected:
10856 Image( VULKAN_HPP_NAMESPACE::Device device,
10857 VULKAN_HPP_NAMESPACE::Image image,
10858 const AllocationCallbacks * allocator,
10859 detail::DeviceDispatcher const * dispatcher ) VULKAN_HPP_NOEXCEPT
10860 : m_device( exchange( device, {} ) )
10861 , m_image( exchange( image, {} ) )
10862 , m_allocator( exchange( allocator, {} ) )
10863 , m_dispatcher( exchange( dispatcher, nullptr ) )
10864 {
10865 }
10866
10867 private:
10868 VULKAN_HPP_NAMESPACE::Device m_device = {};
10869 VULKAN_HPP_NAMESPACE::Image m_image = {};
10870 const AllocationCallbacks * m_allocator = {};
10871 detail::DeviceDispatcher const * m_dispatcher = nullptr;
10872 };
10873
10874 template <>
10875 struct isVulkanRAIIHandleType<Image>
10876 {
10877 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
10878 };
10879
10880 // wrapper class for handle VkImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageView.html
10881 class ImageView
10882 {
10883 public:
10884 using CType = VkImageView;
10885 using CppType = VULKAN_HPP_NAMESPACE::ImageView;
10886
10887 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImageView;
10888 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eImageView;
10889
10890 public:
10891 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
10892 ImageView( Device const & device, ImageViewCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
10893 {
10894 *this = device.createImageView( createInfo, allocator );
10895 }
10896 # endif
10897
10898 ImageView( Device const & device, VkImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr )
10899 : m_device( device )
10900 , m_imageView( imageView )
10901 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
10902 , m_dispatcher( device.getDispatcher() )
10903 {
10904 }
10905
10906 ImageView( std::nullptr_t ) {}
10907
10908 ~ImageView()
10909 {
10910 clear();
10911 }
10912
10913 ImageView() = delete;
10914 ImageView( ImageView const & ) = delete;
10915
10916 ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
10917 : m_device( exchange( rhs.m_device, {} ) )
10918 , m_imageView( exchange( rhs.m_imageView, {} ) )
10919 , m_allocator( exchange( rhs.m_allocator, {} ) )
10920 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
10921 {
10922 }
10923
10924 ImageView & operator=( ImageView const & ) = delete;
10925
10926 ImageView & operator=( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
10927 {
10928 if ( this != &rhs )
10929 {
10930 std::swap( m_device, rhs.m_device );
10931 std::swap( m_imageView, rhs.m_imageView );
10932 std::swap( m_allocator, rhs.m_allocator );
10933 std::swap( m_dispatcher, rhs.m_dispatcher );
10934 }
10935 return *this;
10936 }
10937
10938 VULKAN_HPP_NAMESPACE::ImageView const & operator*() const & VULKAN_HPP_NOEXCEPT
10939 {
10940 return m_imageView;
10941 }
10942
10943 VULKAN_HPP_NAMESPACE::ImageView const && operator*() const && VULKAN_HPP_NOEXCEPT
10944 {
10945 return std::move( m_imageView );
10946 }
10947
10948 operator VULKAN_HPP_NAMESPACE::ImageView() const VULKAN_HPP_NOEXCEPT
10949 {
10950 return m_imageView;
10951 }
10952
10953 void clear() VULKAN_HPP_NOEXCEPT
10954 {
10955 if ( m_imageView )
10956 {
10957 getDispatcher()->vkDestroyImageView(
10958 static_cast<VkDevice>( m_device ), static_cast<VkImageView>( m_imageView ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10959 }
10960 m_device = nullptr;
10961 m_imageView = nullptr;
10962 m_allocator = nullptr;
10963 m_dispatcher = nullptr;
10964 }
10965
10966 VULKAN_HPP_NAMESPACE::ImageView release()
10967 {
10968 m_device = nullptr;
10969 m_allocator = nullptr;
10970 m_dispatcher = nullptr;
10971 return exchange( m_imageView, nullptr );
10972 }
10973
10974 VULKAN_HPP_NAMESPACE::Device getDevice() const
10975 {
10976 return m_device;
10977 }
10978
10979 detail::DeviceDispatcher const * getDispatcher() const
10980 {
10981 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10982 return m_dispatcher;
10983 }
10984
10985 void swap( ImageView & rhs ) VULKAN_HPP_NOEXCEPT
10986 {
10987 std::swap( m_device, rhs.m_device );
10988 std::swap( m_imageView, rhs.m_imageView );
10989 std::swap( m_allocator, rhs.m_allocator );
10990 std::swap( m_dispatcher, rhs.m_dispatcher );
10991 }
10992
10993 //=== VK_NVX_image_view_handle ===
10994
10995 // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html
10996 VULKAN_HPP_NODISCARD typename ResultValueType<ImageViewAddressPropertiesNVX>::type getAddressNVX() const;
10997
10998 private:
10999 VULKAN_HPP_NAMESPACE::Device m_device = {};
11000 VULKAN_HPP_NAMESPACE::ImageView m_imageView = {};
11001 const AllocationCallbacks * m_allocator = {};
11002 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11003 };
11004
11005 template <>
11006 struct isVulkanRAIIHandleType<ImageView>
11007 {
11008 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11009 };
11010
11011 // wrapper class for handle VkIndirectCommandsLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutEXT.html
11012 class IndirectCommandsLayoutEXT
11013 {
11014 public:
11015 using CType = VkIndirectCommandsLayoutEXT;
11016 using CppType = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT;
11017
11018 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutEXT;
11019 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
11020
11021 public:
11022 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11023 IndirectCommandsLayoutEXT( Device const & device,
11024 IndirectCommandsLayoutCreateInfoEXT const & createInfo,
11025 Optional<const AllocationCallbacks> allocator = nullptr )
11026 {
11027 *this = device.createIndirectCommandsLayoutEXT( createInfo, allocator );
11028 }
11029 # endif
11030
11031 IndirectCommandsLayoutEXT( Device const & device,
11032 VkIndirectCommandsLayoutEXT indirectCommandsLayout,
11033 Optional<const AllocationCallbacks> allocator = nullptr )
11034 : m_device( device )
11035 , m_indirectCommandsLayoutEXT( indirectCommandsLayout )
11036 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
11037 , m_dispatcher( device.getDispatcher() )
11038 {
11039 }
11040
11041 IndirectCommandsLayoutEXT( std::nullptr_t ) {}
11042
11043 ~IndirectCommandsLayoutEXT()
11044 {
11045 clear();
11046 }
11047
11048 IndirectCommandsLayoutEXT() = delete;
11049 IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT const & ) = delete;
11050
11051 IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT
11052 : m_device( exchange( rhs.m_device, {} ) )
11053 , m_indirectCommandsLayoutEXT( exchange( rhs.m_indirectCommandsLayoutEXT, {} ) )
11054 , m_allocator( exchange( rhs.m_allocator, {} ) )
11055 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11056 {
11057 }
11058
11059 IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT const & ) = delete;
11060
11061 IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT
11062 {
11063 if ( this != &rhs )
11064 {
11065 std::swap( m_device, rhs.m_device );
11066 std::swap( m_indirectCommandsLayoutEXT, rhs.m_indirectCommandsLayoutEXT );
11067 std::swap( m_allocator, rhs.m_allocator );
11068 std::swap( m_dispatcher, rhs.m_dispatcher );
11069 }
11070 return *this;
11071 }
11072
11073 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
11074 {
11075 return m_indirectCommandsLayoutEXT;
11076 }
11077
11078 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
11079 {
11080 return std::move( m_indirectCommandsLayoutEXT );
11081 }
11082
11083 operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT() const VULKAN_HPP_NOEXCEPT
11084 {
11085 return m_indirectCommandsLayoutEXT;
11086 }
11087
11088 void clear() VULKAN_HPP_NOEXCEPT
11089 {
11090 if ( m_indirectCommandsLayoutEXT )
11091 {
11092 getDispatcher()->vkDestroyIndirectCommandsLayoutEXT( static_cast<VkDevice>( m_device ),
11093 static_cast<VkIndirectCommandsLayoutEXT>( m_indirectCommandsLayoutEXT ),
11094 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11095 }
11096 m_device = nullptr;
11097 m_indirectCommandsLayoutEXT = nullptr;
11098 m_allocator = nullptr;
11099 m_dispatcher = nullptr;
11100 }
11101
11102 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT release()
11103 {
11104 m_device = nullptr;
11105 m_allocator = nullptr;
11106 m_dispatcher = nullptr;
11107 return exchange( m_indirectCommandsLayoutEXT, nullptr );
11108 }
11109
11110 VULKAN_HPP_NAMESPACE::Device getDevice() const
11111 {
11112 return m_device;
11113 }
11114
11115 detail::DeviceDispatcher const * getDispatcher() const
11116 {
11117 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11118 return m_dispatcher;
11119 }
11120
11121 void swap( IndirectCommandsLayoutEXT & rhs ) VULKAN_HPP_NOEXCEPT
11122 {
11123 std::swap( m_device, rhs.m_device );
11124 std::swap( m_indirectCommandsLayoutEXT, rhs.m_indirectCommandsLayoutEXT );
11125 std::swap( m_allocator, rhs.m_allocator );
11126 std::swap( m_dispatcher, rhs.m_dispatcher );
11127 }
11128
11129 private:
11130 VULKAN_HPP_NAMESPACE::Device m_device = {};
11131 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT m_indirectCommandsLayoutEXT = {};
11132 const AllocationCallbacks * m_allocator = {};
11133 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11134 };
11135
11136 template <>
11137 struct isVulkanRAIIHandleType<IndirectCommandsLayoutEXT>
11138 {
11139 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11140 };
11141
11142 // wrapper class for handle VkIndirectCommandsLayoutNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutNV.html
11143 class IndirectCommandsLayoutNV
11144 {
11145 public:
11146 using CType = VkIndirectCommandsLayoutNV;
11147 using CppType = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV;
11148
11149 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutNV;
11150 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
11151
11152 public:
11153 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11154 IndirectCommandsLayoutNV( Device const & device,
11155 IndirectCommandsLayoutCreateInfoNV const & createInfo,
11156 Optional<const AllocationCallbacks> allocator = nullptr )
11157 {
11158 *this = device.createIndirectCommandsLayoutNV( createInfo, allocator );
11159 }
11160 # endif
11161
11162 IndirectCommandsLayoutNV( Device const & device,
11163 VkIndirectCommandsLayoutNV indirectCommandsLayout,
11164 Optional<const AllocationCallbacks> allocator = nullptr )
11165 : m_device( device )
11166 , m_indirectCommandsLayoutNV( indirectCommandsLayout )
11167 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
11168 , m_dispatcher( device.getDispatcher() )
11169 {
11170 }
11171
11172 IndirectCommandsLayoutNV( std::nullptr_t ) {}
11173
11174 ~IndirectCommandsLayoutNV()
11175 {
11176 clear();
11177 }
11178
11179 IndirectCommandsLayoutNV() = delete;
11180 IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & ) = delete;
11181
11182 IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
11183 : m_device( exchange( rhs.m_device, {} ) )
11184 , m_indirectCommandsLayoutNV( exchange( rhs.m_indirectCommandsLayoutNV, {} ) )
11185 , m_allocator( exchange( rhs.m_allocator, {} ) )
11186 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11187 {
11188 }
11189
11190 IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & ) = delete;
11191
11192 IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
11193 {
11194 if ( this != &rhs )
11195 {
11196 std::swap( m_device, rhs.m_device );
11197 std::swap( m_indirectCommandsLayoutNV, rhs.m_indirectCommandsLayoutNV );
11198 std::swap( m_allocator, rhs.m_allocator );
11199 std::swap( m_dispatcher, rhs.m_dispatcher );
11200 }
11201 return *this;
11202 }
11203
11204 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & operator*() const & VULKAN_HPP_NOEXCEPT
11205 {
11206 return m_indirectCommandsLayoutNV;
11207 }
11208
11209 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const && operator*() const && VULKAN_HPP_NOEXCEPT
11210 {
11211 return std::move( m_indirectCommandsLayoutNV );
11212 }
11213
11214 operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV() const VULKAN_HPP_NOEXCEPT
11215 {
11216 return m_indirectCommandsLayoutNV;
11217 }
11218
11219 void clear() VULKAN_HPP_NOEXCEPT
11220 {
11221 if ( m_indirectCommandsLayoutNV )
11222 {
11223 getDispatcher()->vkDestroyIndirectCommandsLayoutNV( static_cast<VkDevice>( m_device ),
11224 static_cast<VkIndirectCommandsLayoutNV>( m_indirectCommandsLayoutNV ),
11225 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11226 }
11227 m_device = nullptr;
11228 m_indirectCommandsLayoutNV = nullptr;
11229 m_allocator = nullptr;
11230 m_dispatcher = nullptr;
11231 }
11232
11233 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV release()
11234 {
11235 m_device = nullptr;
11236 m_allocator = nullptr;
11237 m_dispatcher = nullptr;
11238 return exchange( m_indirectCommandsLayoutNV, nullptr );
11239 }
11240
11241 VULKAN_HPP_NAMESPACE::Device getDevice() const
11242 {
11243 return m_device;
11244 }
11245
11246 detail::DeviceDispatcher const * getDispatcher() const
11247 {
11248 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11249 return m_dispatcher;
11250 }
11251
11252 void swap( IndirectCommandsLayoutNV & rhs ) VULKAN_HPP_NOEXCEPT
11253 {
11254 std::swap( m_device, rhs.m_device );
11255 std::swap( m_indirectCommandsLayoutNV, rhs.m_indirectCommandsLayoutNV );
11256 std::swap( m_allocator, rhs.m_allocator );
11257 std::swap( m_dispatcher, rhs.m_dispatcher );
11258 }
11259
11260 private:
11261 VULKAN_HPP_NAMESPACE::Device m_device = {};
11262 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV m_indirectCommandsLayoutNV = {};
11263 const AllocationCallbacks * m_allocator = {};
11264 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11265 };
11266
11267 template <>
11268 struct isVulkanRAIIHandleType<IndirectCommandsLayoutNV>
11269 {
11270 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11271 };
11272
11273 // wrapper class for handle VkIndirectExecutionSetEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetEXT.html
11274 class IndirectExecutionSetEXT
11275 {
11276 public:
11277 using CType = VkIndirectExecutionSetEXT;
11278 using CppType = VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT;
11279
11280 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectExecutionSetEXT;
11281 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
11282
11283 public:
11284 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11285 IndirectExecutionSetEXT( Device const & device,
11286 IndirectExecutionSetCreateInfoEXT const & createInfo,
11287 Optional<const AllocationCallbacks> allocator = nullptr )
11288 {
11289 *this = device.createIndirectExecutionSetEXT( createInfo, allocator );
11290 }
11291 # endif
11292
11293 IndirectExecutionSetEXT( Device const & device, VkIndirectExecutionSetEXT indirectExecutionSet, Optional<const AllocationCallbacks> allocator = nullptr )
11294 : m_device( device )
11295 , m_indirectExecutionSetEXT( indirectExecutionSet )
11296 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
11297 , m_dispatcher( device.getDispatcher() )
11298 {
11299 }
11300
11301 IndirectExecutionSetEXT( std::nullptr_t ) {}
11302
11303 ~IndirectExecutionSetEXT()
11304 {
11305 clear();
11306 }
11307
11308 IndirectExecutionSetEXT() = delete;
11309 IndirectExecutionSetEXT( IndirectExecutionSetEXT const & ) = delete;
11310
11311 IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT
11312 : m_device( exchange( rhs.m_device, {} ) )
11313 , m_indirectExecutionSetEXT( exchange( rhs.m_indirectExecutionSetEXT, {} ) )
11314 , m_allocator( exchange( rhs.m_allocator, {} ) )
11315 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11316 {
11317 }
11318
11319 IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT const & ) = delete;
11320
11321 IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT
11322 {
11323 if ( this != &rhs )
11324 {
11325 std::swap( m_device, rhs.m_device );
11326 std::swap( m_indirectExecutionSetEXT, rhs.m_indirectExecutionSetEXT );
11327 std::swap( m_allocator, rhs.m_allocator );
11328 std::swap( m_dispatcher, rhs.m_dispatcher );
11329 }
11330 return *this;
11331 }
11332
11333 VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
11334 {
11335 return m_indirectExecutionSetEXT;
11336 }
11337
11338 VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
11339 {
11340 return std::move( m_indirectExecutionSetEXT );
11341 }
11342
11343 operator VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT() const VULKAN_HPP_NOEXCEPT
11344 {
11345 return m_indirectExecutionSetEXT;
11346 }
11347
11348 void clear() VULKAN_HPP_NOEXCEPT
11349 {
11350 if ( m_indirectExecutionSetEXT )
11351 {
11352 getDispatcher()->vkDestroyIndirectExecutionSetEXT( static_cast<VkDevice>( m_device ),
11353 static_cast<VkIndirectExecutionSetEXT>( m_indirectExecutionSetEXT ),
11354 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11355 }
11356 m_device = nullptr;
11357 m_indirectExecutionSetEXT = nullptr;
11358 m_allocator = nullptr;
11359 m_dispatcher = nullptr;
11360 }
11361
11362 VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT release()
11363 {
11364 m_device = nullptr;
11365 m_allocator = nullptr;
11366 m_dispatcher = nullptr;
11367 return exchange( m_indirectExecutionSetEXT, nullptr );
11368 }
11369
11370 VULKAN_HPP_NAMESPACE::Device getDevice() const
11371 {
11372 return m_device;
11373 }
11374
11375 detail::DeviceDispatcher const * getDispatcher() const
11376 {
11377 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11378 return m_dispatcher;
11379 }
11380
11381 void swap( IndirectExecutionSetEXT & rhs ) VULKAN_HPP_NOEXCEPT
11382 {
11383 std::swap( m_device, rhs.m_device );
11384 std::swap( m_indirectExecutionSetEXT, rhs.m_indirectExecutionSetEXT );
11385 std::swap( m_allocator, rhs.m_allocator );
11386 std::swap( m_dispatcher, rhs.m_dispatcher );
11387 }
11388
11389 //=== VK_EXT_device_generated_commands ===
11390
11391 // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see
11392 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html
11393 void updatePipeline( ArrayProxy<const WriteIndirectExecutionSetPipelineEXT> const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT;
11394
11395 // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see
11396 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html
11397 void updateShader( ArrayProxy<const WriteIndirectExecutionSetShaderEXT> const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT;
11398
11399 private:
11400 VULKAN_HPP_NAMESPACE::Device m_device = {};
11401 VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT m_indirectExecutionSetEXT = {};
11402 const AllocationCallbacks * m_allocator = {};
11403 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11404 };
11405
11406 template <>
11407 struct isVulkanRAIIHandleType<IndirectExecutionSetEXT>
11408 {
11409 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11410 };
11411
11412 // wrapper class for handle VkMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapEXT.html
11413 class MicromapEXT
11414 {
11415 public:
11416 using CType = VkMicromapEXT;
11417 using CppType = VULKAN_HPP_NAMESPACE::MicromapEXT;
11418
11419 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eMicromapEXT;
11420 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
11421
11422 public:
11423 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11424 MicromapEXT( Device const & device, MicromapCreateInfoEXT const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
11425 {
11426 *this = device.createMicromapEXT( createInfo, allocator );
11427 }
11428 # endif
11429
11430 MicromapEXT( Device const & device, VkMicromapEXT micromap, Optional<const AllocationCallbacks> allocator = nullptr )
11431 : m_device( device )
11432 , m_micromapEXT( micromap )
11433 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
11434 , m_dispatcher( device.getDispatcher() )
11435 {
11436 }
11437
11438 MicromapEXT( std::nullptr_t ) {}
11439
11440 ~MicromapEXT()
11441 {
11442 clear();
11443 }
11444
11445 MicromapEXT() = delete;
11446 MicromapEXT( MicromapEXT const & ) = delete;
11447
11448 MicromapEXT( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT
11449 : m_device( exchange( rhs.m_device, {} ) )
11450 , m_micromapEXT( exchange( rhs.m_micromapEXT, {} ) )
11451 , m_allocator( exchange( rhs.m_allocator, {} ) )
11452 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11453 {
11454 }
11455
11456 MicromapEXT & operator=( MicromapEXT const & ) = delete;
11457
11458 MicromapEXT & operator=( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT
11459 {
11460 if ( this != &rhs )
11461 {
11462 std::swap( m_device, rhs.m_device );
11463 std::swap( m_micromapEXT, rhs.m_micromapEXT );
11464 std::swap( m_allocator, rhs.m_allocator );
11465 std::swap( m_dispatcher, rhs.m_dispatcher );
11466 }
11467 return *this;
11468 }
11469
11470 VULKAN_HPP_NAMESPACE::MicromapEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
11471 {
11472 return m_micromapEXT;
11473 }
11474
11475 VULKAN_HPP_NAMESPACE::MicromapEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
11476 {
11477 return std::move( m_micromapEXT );
11478 }
11479
11480 operator VULKAN_HPP_NAMESPACE::MicromapEXT() const VULKAN_HPP_NOEXCEPT
11481 {
11482 return m_micromapEXT;
11483 }
11484
11485 void clear() VULKAN_HPP_NOEXCEPT
11486 {
11487 if ( m_micromapEXT )
11488 {
11489 getDispatcher()->vkDestroyMicromapEXT(
11490 static_cast<VkDevice>( m_device ), static_cast<VkMicromapEXT>( m_micromapEXT ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11491 }
11492 m_device = nullptr;
11493 m_micromapEXT = nullptr;
11494 m_allocator = nullptr;
11495 m_dispatcher = nullptr;
11496 }
11497
11498 VULKAN_HPP_NAMESPACE::MicromapEXT release()
11499 {
11500 m_device = nullptr;
11501 m_allocator = nullptr;
11502 m_dispatcher = nullptr;
11503 return exchange( m_micromapEXT, nullptr );
11504 }
11505
11506 VULKAN_HPP_NAMESPACE::Device getDevice() const
11507 {
11508 return m_device;
11509 }
11510
11511 detail::DeviceDispatcher const * getDispatcher() const
11512 {
11513 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11514 return m_dispatcher;
11515 }
11516
11517 void swap( MicromapEXT & rhs ) VULKAN_HPP_NOEXCEPT
11518 {
11519 std::swap( m_device, rhs.m_device );
11520 std::swap( m_micromapEXT, rhs.m_micromapEXT );
11521 std::swap( m_allocator, rhs.m_allocator );
11522 std::swap( m_dispatcher, rhs.m_dispatcher );
11523 }
11524
11525 private:
11526 VULKAN_HPP_NAMESPACE::Device m_device = {};
11527 VULKAN_HPP_NAMESPACE::MicromapEXT m_micromapEXT = {};
11528 const AllocationCallbacks * m_allocator = {};
11529 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11530 };
11531
11532 template <>
11533 struct isVulkanRAIIHandleType<MicromapEXT>
11534 {
11535 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11536 };
11537
11538 // wrapper class for handle VkOpticalFlowSessionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionNV.html
11539 class OpticalFlowSessionNV
11540 {
11541 public:
11542 using CType = VkOpticalFlowSessionNV;
11543 using CppType = VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV;
11544
11545 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eOpticalFlowSessionNV;
11546 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
11547
11548 public:
11549 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11550 OpticalFlowSessionNV( Device const & device, OpticalFlowSessionCreateInfoNV const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
11551 {
11552 *this = device.createOpticalFlowSessionNV( createInfo, allocator );
11553 }
11554 # endif
11555
11556 OpticalFlowSessionNV( Device const & device, VkOpticalFlowSessionNV session, Optional<const AllocationCallbacks> allocator = nullptr )
11557 : m_device( device )
11558 , m_opticalFlowSessionNV( session )
11559 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
11560 , m_dispatcher( device.getDispatcher() )
11561 {
11562 }
11563
11564 OpticalFlowSessionNV( std::nullptr_t ) {}
11565
11566 ~OpticalFlowSessionNV()
11567 {
11568 clear();
11569 }
11570
11571 OpticalFlowSessionNV() = delete;
11572 OpticalFlowSessionNV( OpticalFlowSessionNV const & ) = delete;
11573
11574 OpticalFlowSessionNV( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT
11575 : m_device( exchange( rhs.m_device, {} ) )
11576 , m_opticalFlowSessionNV( exchange( rhs.m_opticalFlowSessionNV, {} ) )
11577 , m_allocator( exchange( rhs.m_allocator, {} ) )
11578 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11579 {
11580 }
11581
11582 OpticalFlowSessionNV & operator=( OpticalFlowSessionNV const & ) = delete;
11583
11584 OpticalFlowSessionNV & operator=( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT
11585 {
11586 if ( this != &rhs )
11587 {
11588 std::swap( m_device, rhs.m_device );
11589 std::swap( m_opticalFlowSessionNV, rhs.m_opticalFlowSessionNV );
11590 std::swap( m_allocator, rhs.m_allocator );
11591 std::swap( m_dispatcher, rhs.m_dispatcher );
11592 }
11593 return *this;
11594 }
11595
11596 VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const & operator*() const & VULKAN_HPP_NOEXCEPT
11597 {
11598 return m_opticalFlowSessionNV;
11599 }
11600
11601 VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const && operator*() const && VULKAN_HPP_NOEXCEPT
11602 {
11603 return std::move( m_opticalFlowSessionNV );
11604 }
11605
11606 operator VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV() const VULKAN_HPP_NOEXCEPT
11607 {
11608 return m_opticalFlowSessionNV;
11609 }
11610
11611 void clear() VULKAN_HPP_NOEXCEPT
11612 {
11613 if ( m_opticalFlowSessionNV )
11614 {
11615 getDispatcher()->vkDestroyOpticalFlowSessionNV( static_cast<VkDevice>( m_device ),
11616 static_cast<VkOpticalFlowSessionNV>( m_opticalFlowSessionNV ),
11617 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11618 }
11619 m_device = nullptr;
11620 m_opticalFlowSessionNV = nullptr;
11621 m_allocator = nullptr;
11622 m_dispatcher = nullptr;
11623 }
11624
11625 VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV release()
11626 {
11627 m_device = nullptr;
11628 m_allocator = nullptr;
11629 m_dispatcher = nullptr;
11630 return exchange( m_opticalFlowSessionNV, nullptr );
11631 }
11632
11633 VULKAN_HPP_NAMESPACE::Device getDevice() const
11634 {
11635 return m_device;
11636 }
11637
11638 detail::DeviceDispatcher const * getDispatcher() const
11639 {
11640 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11641 return m_dispatcher;
11642 }
11643
11644 void swap( OpticalFlowSessionNV & rhs ) VULKAN_HPP_NOEXCEPT
11645 {
11646 std::swap( m_device, rhs.m_device );
11647 std::swap( m_opticalFlowSessionNV, rhs.m_opticalFlowSessionNV );
11648 std::swap( m_allocator, rhs.m_allocator );
11649 std::swap( m_dispatcher, rhs.m_dispatcher );
11650 }
11651
11652 //=== VK_NV_optical_flow ===
11653
11654 // wrapper function for command vkBindOpticalFlowSessionImageNV, see
11655 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html
11656 typename ResultValueType<void>::type
11657 bindImage( OpticalFlowSessionBindingPointNV bindingPoint, VULKAN_HPP_NAMESPACE::ImageView view, ImageLayout layout ) const;
11658
11659 private:
11660 VULKAN_HPP_NAMESPACE::Device m_device = {};
11661 VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV m_opticalFlowSessionNV = {};
11662 const AllocationCallbacks * m_allocator = {};
11663 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11664 };
11665
11666 template <>
11667 struct isVulkanRAIIHandleType<OpticalFlowSessionNV>
11668 {
11669 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11670 };
11671
11672 // wrapper class for handle VkPerformanceConfigurationINTEL, see
11673 // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceConfigurationINTEL.html
11674 class PerformanceConfigurationINTEL
11675 {
11676 public:
11677 using CType = VkPerformanceConfigurationINTEL;
11678 using CppType = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL;
11679
11680 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePerformanceConfigurationINTEL;
11681 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
11682
11683 public:
11684 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11685 PerformanceConfigurationINTEL( Device const & device, PerformanceConfigurationAcquireInfoINTEL const & acquireInfo )
11686 {
11687 *this = device.acquirePerformanceConfigurationINTEL( acquireInfo );
11688 }
11689 # endif
11690
11691 PerformanceConfigurationINTEL( Device const & device, VkPerformanceConfigurationINTEL configuration )
11692 : m_device( device ), m_performanceConfigurationINTEL( configuration ), m_dispatcher( device.getDispatcher() )
11693 {
11694 }
11695
11696 PerformanceConfigurationINTEL( std::nullptr_t ) {}
11697
11698 ~PerformanceConfigurationINTEL()
11699 {
11700 clear();
11701 }
11702
11703 PerformanceConfigurationINTEL() = delete;
11704 PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & ) = delete;
11705
11706 PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
11707 : m_device( exchange( rhs.m_device, {} ) )
11708 , m_performanceConfigurationINTEL( exchange( rhs.m_performanceConfigurationINTEL, {} ) )
11709 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11710 {
11711 }
11712
11713 PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & ) = delete;
11714
11715 PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
11716 {
11717 if ( this != &rhs )
11718 {
11719 std::swap( m_device, rhs.m_device );
11720 std::swap( m_performanceConfigurationINTEL, rhs.m_performanceConfigurationINTEL );
11721 std::swap( m_dispatcher, rhs.m_dispatcher );
11722 }
11723 return *this;
11724 }
11725
11726 VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & operator*() const & VULKAN_HPP_NOEXCEPT
11727 {
11728 return m_performanceConfigurationINTEL;
11729 }
11730
11731 VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const && operator*() const && VULKAN_HPP_NOEXCEPT
11732 {
11733 return std::move( m_performanceConfigurationINTEL );
11734 }
11735
11736 operator VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL() const VULKAN_HPP_NOEXCEPT
11737 {
11738 return m_performanceConfigurationINTEL;
11739 }
11740
11741 void clear() VULKAN_HPP_NOEXCEPT
11742 {
11743 if ( m_performanceConfigurationINTEL )
11744 {
11745 getDispatcher()->vkReleasePerformanceConfigurationINTEL( static_cast<VkDevice>( m_device ),
11746 static_cast<VkPerformanceConfigurationINTEL>( m_performanceConfigurationINTEL ) );
11747 }
11748 m_device = nullptr;
11749 m_performanceConfigurationINTEL = nullptr;
11750 m_dispatcher = nullptr;
11751 }
11752
11753 VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL release()
11754 {
11755 m_device = nullptr;
11756 m_dispatcher = nullptr;
11757 return exchange( m_performanceConfigurationINTEL, nullptr );
11758 }
11759
11760 VULKAN_HPP_NAMESPACE::Device getDevice() const
11761 {
11762 return m_device;
11763 }
11764
11765 detail::DeviceDispatcher const * getDispatcher() const
11766 {
11767 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11768 return m_dispatcher;
11769 }
11770
11771 void swap( PerformanceConfigurationINTEL & rhs ) VULKAN_HPP_NOEXCEPT
11772 {
11773 std::swap( m_device, rhs.m_device );
11774 std::swap( m_performanceConfigurationINTEL, rhs.m_performanceConfigurationINTEL );
11775 std::swap( m_dispatcher, rhs.m_dispatcher );
11776 }
11777
11778 private:
11779 VULKAN_HPP_NAMESPACE::Device m_device = {};
11780 VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL m_performanceConfigurationINTEL = {};
11781 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11782 };
11783
11784 template <>
11785 struct isVulkanRAIIHandleType<PerformanceConfigurationINTEL>
11786 {
11787 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11788 };
11789
11790 // wrapper class for handle VkPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCache.html
11791 class PipelineCache
11792 {
11793 public:
11794 using CType = VkPipelineCache;
11795 using CppType = VULKAN_HPP_NAMESPACE::PipelineCache;
11796
11797 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineCache;
11798 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipelineCache;
11799
11800 public:
11801 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11802 PipelineCache( Device const & device, PipelineCacheCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
11803 {
11804 *this = device.createPipelineCache( createInfo, allocator );
11805 }
11806 # endif
11807
11808 PipelineCache( Device const & device, VkPipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr )
11809 : m_device( device )
11810 , m_pipelineCache( pipelineCache )
11811 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
11812 , m_dispatcher( device.getDispatcher() )
11813 {
11814 }
11815
11816 PipelineCache( std::nullptr_t ) {}
11817
11818 ~PipelineCache()
11819 {
11820 clear();
11821 }
11822
11823 PipelineCache() = delete;
11824 PipelineCache( PipelineCache const & ) = delete;
11825
11826 PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
11827 : m_device( exchange( rhs.m_device, {} ) )
11828 , m_pipelineCache( exchange( rhs.m_pipelineCache, {} ) )
11829 , m_allocator( exchange( rhs.m_allocator, {} ) )
11830 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
11831 {
11832 }
11833
11834 PipelineCache & operator=( PipelineCache const & ) = delete;
11835
11836 PipelineCache & operator=( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
11837 {
11838 if ( this != &rhs )
11839 {
11840 std::swap( m_device, rhs.m_device );
11841 std::swap( m_pipelineCache, rhs.m_pipelineCache );
11842 std::swap( m_allocator, rhs.m_allocator );
11843 std::swap( m_dispatcher, rhs.m_dispatcher );
11844 }
11845 return *this;
11846 }
11847
11848 VULKAN_HPP_NAMESPACE::PipelineCache const & operator*() const & VULKAN_HPP_NOEXCEPT
11849 {
11850 return m_pipelineCache;
11851 }
11852
11853 VULKAN_HPP_NAMESPACE::PipelineCache const && operator*() const && VULKAN_HPP_NOEXCEPT
11854 {
11855 return std::move( m_pipelineCache );
11856 }
11857
11858 operator VULKAN_HPP_NAMESPACE::PipelineCache() const VULKAN_HPP_NOEXCEPT
11859 {
11860 return m_pipelineCache;
11861 }
11862
11863 void clear() VULKAN_HPP_NOEXCEPT
11864 {
11865 if ( m_pipelineCache )
11866 {
11867 getDispatcher()->vkDestroyPipelineCache( static_cast<VkDevice>( m_device ),
11868 static_cast<VkPipelineCache>( m_pipelineCache ),
11869 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11870 }
11871 m_device = nullptr;
11872 m_pipelineCache = nullptr;
11873 m_allocator = nullptr;
11874 m_dispatcher = nullptr;
11875 }
11876
11877 VULKAN_HPP_NAMESPACE::PipelineCache release()
11878 {
11879 m_device = nullptr;
11880 m_allocator = nullptr;
11881 m_dispatcher = nullptr;
11882 return exchange( m_pipelineCache, nullptr );
11883 }
11884
11885 VULKAN_HPP_NAMESPACE::Device getDevice() const
11886 {
11887 return m_device;
11888 }
11889
11890 detail::DeviceDispatcher const * getDispatcher() const
11891 {
11892 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11893 return m_dispatcher;
11894 }
11895
11896 void swap( PipelineCache & rhs ) VULKAN_HPP_NOEXCEPT
11897 {
11898 std::swap( m_device, rhs.m_device );
11899 std::swap( m_pipelineCache, rhs.m_pipelineCache );
11900 std::swap( m_allocator, rhs.m_allocator );
11901 std::swap( m_dispatcher, rhs.m_dispatcher );
11902 }
11903
11904 //=== VK_VERSION_1_0 ===
11905
11906 // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html
11907 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<uint8_t>>::type getData() const;
11908
11909 // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html
11910 typename ResultValueType<void>::type merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const;
11911
11912 private:
11913 VULKAN_HPP_NAMESPACE::Device m_device = {};
11914 VULKAN_HPP_NAMESPACE::PipelineCache m_pipelineCache = {};
11915 const AllocationCallbacks * m_allocator = {};
11916 detail::DeviceDispatcher const * m_dispatcher = nullptr;
11917 };
11918
11919 template <>
11920 struct isVulkanRAIIHandleType<PipelineCache>
11921 {
11922 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
11923 };
11924
11925 // wrapper class for handle VkPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipeline.html
11926 class Pipeline
11927 {
11928 public:
11929 using CType = VkPipeline;
11930 using CppType = VULKAN_HPP_NAMESPACE::Pipeline;
11931
11932 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipeline;
11933 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipeline;
11934
11935 public:
11936 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11937 Pipeline( Device const & device,
11938 Optional<const PipelineCache> const & pipelineCache,
11939 ComputePipelineCreateInfo const & createInfo,
11940 Optional<const AllocationCallbacks> allocator = nullptr )
11941 {
11942 *this = device.createComputePipeline( pipelineCache, createInfo, allocator );
11943 }
11944 # endif
11945
11946 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11947 Pipeline( Device const & device,
11948 Optional<const DeferredOperationKHR> const & deferredOperation,
11949 Optional<const PipelineCache> const & pipelineCache,
11950 DataGraphPipelineCreateInfoARM const & createInfo,
11951 Optional<const AllocationCallbacks> allocator = nullptr )
11952 {
11953 *this = device.createDataGraphPipelineARM( deferredOperation, pipelineCache, createInfo, allocator );
11954 }
11955 # endif
11956
11957 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11958 # if defined( VK_ENABLE_BETA_EXTENSIONS )
11959 Pipeline( Device const & device,
11960 Optional<const PipelineCache> const & pipelineCache,
11961 ExecutionGraphPipelineCreateInfoAMDX const & createInfo,
11962 Optional<const AllocationCallbacks> allocator = nullptr )
11963 {
11964 *this = device.createExecutionGraphPipelineAMDX( pipelineCache, createInfo, allocator );
11965 }
11966 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
11967 # endif
11968
11969 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11970 Pipeline( Device const & device,
11971 Optional<const PipelineCache> const & pipelineCache,
11972 GraphicsPipelineCreateInfo const & createInfo,
11973 Optional<const AllocationCallbacks> allocator = nullptr )
11974 {
11975 *this = device.createGraphicsPipeline( pipelineCache, createInfo, allocator );
11976 }
11977 # endif
11978
11979 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11980 Pipeline( Device const & device,
11981 Optional<const DeferredOperationKHR> const & deferredOperation,
11982 Optional<const PipelineCache> const & pipelineCache,
11983 RayTracingPipelineCreateInfoKHR const & createInfo,
11984 Optional<const AllocationCallbacks> allocator = nullptr )
11985 {
11986 *this = device.createRayTracingPipelineKHR( deferredOperation, pipelineCache, createInfo, allocator );
11987 }
11988 # endif
11989
11990 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
11991 Pipeline( Device const & device,
11992 Optional<const PipelineCache> const & pipelineCache,
11993 RayTracingPipelineCreateInfoNV const & createInfo,
11994 Optional<const AllocationCallbacks> allocator = nullptr )
11995 {
11996 *this = device.createRayTracingPipelineNV( pipelineCache, createInfo, allocator );
11997 }
11998 # endif
11999
12000 Pipeline( Device const & device, VkPipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr, Result successCode = Result::eSuccess )
12001 : m_device( device )
12002 , m_pipeline( pipeline )
12003 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
12004 , m_constructorSuccessCode( successCode )
12005 , m_dispatcher( device.getDispatcher() )
12006 {
12007 }
12008
12009 Pipeline( std::nullptr_t ) {}
12010
12011 ~Pipeline()
12012 {
12013 clear();
12014 }
12015
12016 Pipeline() = delete;
12017 Pipeline( Pipeline const & ) = delete;
12018
12019 Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
12020 : m_device( exchange( rhs.m_device, {} ) )
12021 , m_pipeline( exchange( rhs.m_pipeline, {} ) )
12022 , m_allocator( exchange( rhs.m_allocator, {} ) )
12023 , m_constructorSuccessCode( exchange( rhs.m_constructorSuccessCode, {} ) )
12024 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
12025 {
12026 }
12027
12028 Pipeline & operator=( Pipeline const & ) = delete;
12029
12030 Pipeline & operator=( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
12031 {
12032 if ( this != &rhs )
12033 {
12034 std::swap( m_device, rhs.m_device );
12035 std::swap( m_pipeline, rhs.m_pipeline );
12036 std::swap( m_allocator, rhs.m_allocator );
12037 std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
12038 std::swap( m_dispatcher, rhs.m_dispatcher );
12039 }
12040 return *this;
12041 }
12042
12043 VULKAN_HPP_NAMESPACE::Pipeline const & operator*() const & VULKAN_HPP_NOEXCEPT
12044 {
12045 return m_pipeline;
12046 }
12047
12048 VULKAN_HPP_NAMESPACE::Pipeline const && operator*() const && VULKAN_HPP_NOEXCEPT
12049 {
12050 return std::move( m_pipeline );
12051 }
12052
12053 operator VULKAN_HPP_NAMESPACE::Pipeline() const VULKAN_HPP_NOEXCEPT
12054 {
12055 return m_pipeline;
12056 }
12057
12058 void clear() VULKAN_HPP_NOEXCEPT
12059 {
12060 if ( m_pipeline )
12061 {
12062 getDispatcher()->vkDestroyPipeline(
12063 static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
12064 }
12065 m_device = nullptr;
12066 m_pipeline = nullptr;
12067 m_allocator = nullptr;
12068 m_constructorSuccessCode = Result::eErrorUnknown;
12069 m_dispatcher = nullptr;
12070 }
12071
12072 VULKAN_HPP_NAMESPACE::Pipeline release()
12073 {
12074 m_device = nullptr;
12075 m_allocator = nullptr;
12076 m_constructorSuccessCode = Result::eErrorUnknown;
12077 m_dispatcher = nullptr;
12078 return exchange( m_pipeline, nullptr );
12079 }
12080
12081 Result getConstructorSuccessCode() const
12082 {
12083 return m_constructorSuccessCode;
12084 }
12085
12086 VULKAN_HPP_NAMESPACE::Device getDevice() const
12087 {
12088 return m_device;
12089 }
12090
12091 detail::DeviceDispatcher const * getDispatcher() const
12092 {
12093 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
12094 return m_dispatcher;
12095 }
12096
12097 void swap( Pipeline & rhs ) VULKAN_HPP_NOEXCEPT
12098 {
12099 std::swap( m_device, rhs.m_device );
12100 std::swap( m_pipeline, rhs.m_pipeline );
12101 std::swap( m_allocator, rhs.m_allocator );
12102 std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
12103 std::swap( m_dispatcher, rhs.m_dispatcher );
12104 }
12105
12106 //=== VK_AMD_shader_info ===
12107
12108 // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html
12109 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<uint8_t>>::type getShaderInfoAMD( ShaderStageFlagBits shaderStage,
12110 ShaderInfoTypeAMD infoType ) const;
12111
12112 # if defined( VK_ENABLE_BETA_EXTENSIONS )
12113 //=== VK_AMDX_shader_enqueue ===
12114
12115 // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see
12116 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html
12117 VULKAN_HPP_NODISCARD typename ResultValueType<ExecutionGraphPipelineScratchSizeAMDX>::type getExecutionGraphScratchSizeAMDX() const;
12118
12119 // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see
12120 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html
12121 VULKAN_HPP_NODISCARD typename ResultValueType<uint32_t>::type
12122 getExecutionGraphNodeIndexAMDX( const PipelineShaderStageNodeCreateInfoAMDX & nodeInfo ) const;
12123 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
12124
12125 //=== VK_KHR_ray_tracing_pipeline ===
12126
12127 // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see
12128 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html
12129 template <typename DataType>
12130 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataType>>::type
12131 getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
12132
12133 // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see
12134 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html
12135 template <typename DataType>
12136 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const;
12137
12138 // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see
12139 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html
12140 template <typename DataType>
12141 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataType>>::type
12142 getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
12143
12144 // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see
12145 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html
12146 template <typename DataType>
12147 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup,
12148 uint32_t groupCount ) const;
12149
12150 // wrapper function for command vkGetRayTracingShaderGroupStackSizeKHR, see
12151 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupStackSizeKHR.html
12152 VULKAN_HPP_NODISCARD DeviceSize getRayTracingShaderGroupStackSizeKHR( uint32_t group, ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT;
12153
12154 //=== VK_NV_ray_tracing ===
12155
12156 // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see
12157 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html
12158 template <typename DataType>
12159 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<DataType>>::type
12160 getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
12161
12162 // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see
12163 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html
12164 template <typename DataType>
12165 VULKAN_HPP_NODISCARD typename ResultValueType<DataType>::type getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const;
12166
12167 // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html
12168 typename ResultValueType<void>::type compileDeferredNV( uint32_t shader ) const;
12169
12170 private:
12171 VULKAN_HPP_NAMESPACE::Device m_device = {};
12172 VULKAN_HPP_NAMESPACE::Pipeline m_pipeline = {};
12173 const AllocationCallbacks * m_allocator = {};
12174 Result m_constructorSuccessCode = Result::eErrorUnknown;
12175 detail::DeviceDispatcher const * m_dispatcher = nullptr;
12176 };
12177
12178 template <>
12179 struct isVulkanRAIIHandleType<Pipeline>
12180 {
12181 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
12182 };
12183
12184 class Pipelines : public std::vector<Pipeline>
12185 {
12186 public:
12187 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12188 Pipelines( Device const & device,
12189 Optional<const PipelineCache> const & pipelineCache,
12190 ArrayProxy<ComputePipelineCreateInfo> const & createInfos,
12191 Optional<const AllocationCallbacks> allocator = nullptr )
12192 {
12193 *this = device.createComputePipelines( pipelineCache, createInfos, allocator );
12194 }
12195 # endif
12196
12197 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12198 Pipelines( Device const & device,
12199 Optional<const DeferredOperationKHR> const & deferredOperation,
12200 Optional<const PipelineCache> const & pipelineCache,
12201 ArrayProxy<DataGraphPipelineCreateInfoARM> const & createInfos,
12202 Optional<const AllocationCallbacks> allocator = nullptr )
12203 {
12204 *this = device.createDataGraphPipelinesARM( deferredOperation, pipelineCache, createInfos, allocator );
12205 }
12206 # endif
12207
12208 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12209 # if defined( VK_ENABLE_BETA_EXTENSIONS )
12210 Pipelines( Device const & device,
12211 Optional<const PipelineCache> const & pipelineCache,
12212 ArrayProxy<ExecutionGraphPipelineCreateInfoAMDX> const & createInfos,
12213 Optional<const AllocationCallbacks> allocator = nullptr )
12214 {
12215 *this = device.createExecutionGraphPipelinesAMDX( pipelineCache, createInfos, allocator );
12216 }
12217 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
12218 # endif
12219
12220 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12221 Pipelines( Device const & device,
12222 Optional<const PipelineCache> const & pipelineCache,
12223 ArrayProxy<GraphicsPipelineCreateInfo> const & createInfos,
12224 Optional<const AllocationCallbacks> allocator = nullptr )
12225 {
12226 *this = device.createGraphicsPipelines( pipelineCache, createInfos, allocator );
12227 }
12228 # endif
12229
12230 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12231 Pipelines( Device const & device,
12232 Optional<const DeferredOperationKHR> const & deferredOperation,
12233 Optional<const PipelineCache> const & pipelineCache,
12234 ArrayProxy<RayTracingPipelineCreateInfoKHR> const & createInfos,
12235 Optional<const AllocationCallbacks> allocator = nullptr )
12236 {
12237 *this = device.createRayTracingPipelinesKHR( deferredOperation, pipelineCache, createInfos, allocator );
12238 }
12239 # endif
12240
12241 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12242 Pipelines( Device const & device,
12243 Optional<const PipelineCache> const & pipelineCache,
12244 ArrayProxy<RayTracingPipelineCreateInfoNV> const & createInfos,
12245 Optional<const AllocationCallbacks> allocator = nullptr )
12246 {
12247 *this = device.createRayTracingPipelinesNV( pipelineCache, createInfos, allocator );
12248 }
12249 # endif
12250
12251 Pipelines( std::nullptr_t ) {}
12252
12253 Pipelines() = delete;
12254 Pipelines( Pipelines const & ) = delete;
12255 Pipelines( Pipelines && rhs ) = default;
12256 Pipelines & operator=( Pipelines const & ) = delete;
12257 Pipelines & operator=( Pipelines && rhs ) = default;
12258
12259 private:
12260 Pipelines( std::vector<Pipeline> && rhs )
12261 {
12262 std::swap( *this, rhs );
12263 }
12264 };
12265
12266 // wrapper class for handle VkPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryKHR.html
12267 class PipelineBinaryKHR
12268 {
12269 public:
12270 using CType = VkPipelineBinaryKHR;
12271 using CppType = VULKAN_HPP_NAMESPACE::PipelineBinaryKHR;
12272
12273 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineBinaryKHR;
12274 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
12275
12276 public:
12277 PipelineBinaryKHR( Device const & device,
12278 VkPipelineBinaryKHR pipelineBinary,
12279 Optional<const AllocationCallbacks> allocator = nullptr,
12280 Result successCode = Result::eSuccess )
12281 : m_device( device )
12282 , m_pipelineBinaryKHR( pipelineBinary )
12283 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
12284 , m_constructorSuccessCode( successCode )
12285 , m_dispatcher( device.getDispatcher() )
12286 {
12287 }
12288
12289 PipelineBinaryKHR( std::nullptr_t ) {}
12290
12291 ~PipelineBinaryKHR()
12292 {
12293 clear();
12294 }
12295
12296 PipelineBinaryKHR() = delete;
12297 PipelineBinaryKHR( PipelineBinaryKHR const & ) = delete;
12298
12299 PipelineBinaryKHR( PipelineBinaryKHR && rhs ) VULKAN_HPP_NOEXCEPT
12300 : m_device( exchange( rhs.m_device, {} ) )
12301 , m_pipelineBinaryKHR( exchange( rhs.m_pipelineBinaryKHR, {} ) )
12302 , m_allocator( exchange( rhs.m_allocator, {} ) )
12303 , m_constructorSuccessCode( exchange( rhs.m_constructorSuccessCode, {} ) )
12304 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
12305 {
12306 }
12307
12308 PipelineBinaryKHR & operator=( PipelineBinaryKHR const & ) = delete;
12309
12310 PipelineBinaryKHR & operator=( PipelineBinaryKHR && rhs ) VULKAN_HPP_NOEXCEPT
12311 {
12312 if ( this != &rhs )
12313 {
12314 std::swap( m_device, rhs.m_device );
12315 std::swap( m_pipelineBinaryKHR, rhs.m_pipelineBinaryKHR );
12316 std::swap( m_allocator, rhs.m_allocator );
12317 std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
12318 std::swap( m_dispatcher, rhs.m_dispatcher );
12319 }
12320 return *this;
12321 }
12322
12323 VULKAN_HPP_NAMESPACE::PipelineBinaryKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
12324 {
12325 return m_pipelineBinaryKHR;
12326 }
12327
12328 VULKAN_HPP_NAMESPACE::PipelineBinaryKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
12329 {
12330 return std::move( m_pipelineBinaryKHR );
12331 }
12332
12333 operator VULKAN_HPP_NAMESPACE::PipelineBinaryKHR() const VULKAN_HPP_NOEXCEPT
12334 {
12335 return m_pipelineBinaryKHR;
12336 }
12337
12338 void clear() VULKAN_HPP_NOEXCEPT
12339 {
12340 if ( m_pipelineBinaryKHR )
12341 {
12342 getDispatcher()->vkDestroyPipelineBinaryKHR( static_cast<VkDevice>( m_device ),
12343 static_cast<VkPipelineBinaryKHR>( m_pipelineBinaryKHR ),
12344 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
12345 }
12346 m_device = nullptr;
12347 m_pipelineBinaryKHR = nullptr;
12348 m_allocator = nullptr;
12349 m_constructorSuccessCode = Result::eErrorUnknown;
12350 m_dispatcher = nullptr;
12351 }
12352
12353 VULKAN_HPP_NAMESPACE::PipelineBinaryKHR release()
12354 {
12355 m_device = nullptr;
12356 m_allocator = nullptr;
12357 m_constructorSuccessCode = Result::eErrorUnknown;
12358 m_dispatcher = nullptr;
12359 return exchange( m_pipelineBinaryKHR, nullptr );
12360 }
12361
12362 Result getConstructorSuccessCode() const
12363 {
12364 return m_constructorSuccessCode;
12365 }
12366
12367 VULKAN_HPP_NAMESPACE::Device getDevice() const
12368 {
12369 return m_device;
12370 }
12371
12372 detail::DeviceDispatcher const * getDispatcher() const
12373 {
12374 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
12375 return m_dispatcher;
12376 }
12377
12378 void swap( PipelineBinaryKHR & rhs ) VULKAN_HPP_NOEXCEPT
12379 {
12380 std::swap( m_device, rhs.m_device );
12381 std::swap( m_pipelineBinaryKHR, rhs.m_pipelineBinaryKHR );
12382 std::swap( m_allocator, rhs.m_allocator );
12383 std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
12384 std::swap( m_dispatcher, rhs.m_dispatcher );
12385 }
12386
12387 private:
12388 VULKAN_HPP_NAMESPACE::Device m_device = {};
12389 VULKAN_HPP_NAMESPACE::PipelineBinaryKHR m_pipelineBinaryKHR = {};
12390 const AllocationCallbacks * m_allocator = {};
12391 Result m_constructorSuccessCode = Result::eErrorUnknown;
12392 detail::DeviceDispatcher const * m_dispatcher = nullptr;
12393 };
12394
12395 template <>
12396 struct isVulkanRAIIHandleType<PipelineBinaryKHR>
12397 {
12398 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
12399 };
12400
12401 class PipelineBinaryKHRs : public std::vector<PipelineBinaryKHR>
12402 {
12403 public:
12404 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12405 PipelineBinaryKHRs( Device const & device, PipelineBinaryCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
12406 {
12407 *this = device.createPipelineBinariesKHR( createInfo, allocator );
12408 }
12409 # endif
12410
12411 PipelineBinaryKHRs( std::nullptr_t ) {}
12412
12413 PipelineBinaryKHRs() = delete;
12414 PipelineBinaryKHRs( PipelineBinaryKHRs const & ) = delete;
12415 PipelineBinaryKHRs( PipelineBinaryKHRs && rhs ) = default;
12416 PipelineBinaryKHRs & operator=( PipelineBinaryKHRs const & ) = delete;
12417 PipelineBinaryKHRs & operator=( PipelineBinaryKHRs && rhs ) = default;
12418
12419 private:
12420 PipelineBinaryKHRs( std::vector<PipelineBinaryKHR> && rhs )
12421 {
12422 std::swap( *this, rhs );
12423 }
12424 };
12425
12426 // wrapper class for handle VkPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayout.html
12427 class PipelineLayout
12428 {
12429 public:
12430 using CType = VkPipelineLayout;
12431 using CppType = VULKAN_HPP_NAMESPACE::PipelineLayout;
12432
12433 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineLayout;
12434 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipelineLayout;
12435
12436 public:
12437 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12438 PipelineLayout( Device const & device, PipelineLayoutCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
12439 {
12440 *this = device.createPipelineLayout( createInfo, allocator );
12441 }
12442 # endif
12443
12444 PipelineLayout( Device const & device, VkPipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr )
12445 : m_device( device )
12446 , m_pipelineLayout( pipelineLayout )
12447 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
12448 , m_dispatcher( device.getDispatcher() )
12449 {
12450 }
12451
12452 PipelineLayout( std::nullptr_t ) {}
12453
12454 ~PipelineLayout()
12455 {
12456 clear();
12457 }
12458
12459 PipelineLayout() = delete;
12460 PipelineLayout( PipelineLayout const & ) = delete;
12461
12462 PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
12463 : m_device( exchange( rhs.m_device, {} ) )
12464 , m_pipelineLayout( exchange( rhs.m_pipelineLayout, {} ) )
12465 , m_allocator( exchange( rhs.m_allocator, {} ) )
12466 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
12467 {
12468 }
12469
12470 PipelineLayout & operator=( PipelineLayout const & ) = delete;
12471
12472 PipelineLayout & operator=( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
12473 {
12474 if ( this != &rhs )
12475 {
12476 std::swap( m_device, rhs.m_device );
12477 std::swap( m_pipelineLayout, rhs.m_pipelineLayout );
12478 std::swap( m_allocator, rhs.m_allocator );
12479 std::swap( m_dispatcher, rhs.m_dispatcher );
12480 }
12481 return *this;
12482 }
12483
12484 VULKAN_HPP_NAMESPACE::PipelineLayout const & operator*() const & VULKAN_HPP_NOEXCEPT
12485 {
12486 return m_pipelineLayout;
12487 }
12488
12489 VULKAN_HPP_NAMESPACE::PipelineLayout const && operator*() const && VULKAN_HPP_NOEXCEPT
12490 {
12491 return std::move( m_pipelineLayout );
12492 }
12493
12494 operator VULKAN_HPP_NAMESPACE::PipelineLayout() const VULKAN_HPP_NOEXCEPT
12495 {
12496 return m_pipelineLayout;
12497 }
12498
12499 void clear() VULKAN_HPP_NOEXCEPT
12500 {
12501 if ( m_pipelineLayout )
12502 {
12503 getDispatcher()->vkDestroyPipelineLayout( static_cast<VkDevice>( m_device ),
12504 static_cast<VkPipelineLayout>( m_pipelineLayout ),
12505 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
12506 }
12507 m_device = nullptr;
12508 m_pipelineLayout = nullptr;
12509 m_allocator = nullptr;
12510 m_dispatcher = nullptr;
12511 }
12512
12513 VULKAN_HPP_NAMESPACE::PipelineLayout release()
12514 {
12515 m_device = nullptr;
12516 m_allocator = nullptr;
12517 m_dispatcher = nullptr;
12518 return exchange( m_pipelineLayout, nullptr );
12519 }
12520
12521 VULKAN_HPP_NAMESPACE::Device getDevice() const
12522 {
12523 return m_device;
12524 }
12525
12526 detail::DeviceDispatcher const * getDispatcher() const
12527 {
12528 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
12529 return m_dispatcher;
12530 }
12531
12532 void swap( PipelineLayout & rhs ) VULKAN_HPP_NOEXCEPT
12533 {
12534 std::swap( m_device, rhs.m_device );
12535 std::swap( m_pipelineLayout, rhs.m_pipelineLayout );
12536 std::swap( m_allocator, rhs.m_allocator );
12537 std::swap( m_dispatcher, rhs.m_dispatcher );
12538 }
12539
12540 private:
12541 VULKAN_HPP_NAMESPACE::Device m_device = {};
12542 VULKAN_HPP_NAMESPACE::PipelineLayout m_pipelineLayout = {};
12543 const AllocationCallbacks * m_allocator = {};
12544 detail::DeviceDispatcher const * m_dispatcher = nullptr;
12545 };
12546
12547 template <>
12548 struct isVulkanRAIIHandleType<PipelineLayout>
12549 {
12550 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
12551 };
12552
12553 // wrapper class for handle VkPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlot.html
12554 class PrivateDataSlot
12555 {
12556 public:
12557 using CType = VkPrivateDataSlot;
12558 using CppType = VULKAN_HPP_NAMESPACE::PrivateDataSlot;
12559
12560 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePrivateDataSlot;
12561 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
12562
12563 public:
12564 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12565 PrivateDataSlot( Device const & device, PrivateDataSlotCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
12566 {
12567 *this = device.createPrivateDataSlot( createInfo, allocator );
12568 }
12569 # endif
12570
12571 PrivateDataSlot( Device const & device, VkPrivateDataSlot privateDataSlot, Optional<const AllocationCallbacks> allocator = nullptr )
12572 : m_device( device )
12573 , m_privateDataSlot( privateDataSlot )
12574 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
12575 , m_dispatcher( device.getDispatcher() )
12576 {
12577 }
12578
12579 PrivateDataSlot( std::nullptr_t ) {}
12580
12581 ~PrivateDataSlot()
12582 {
12583 clear();
12584 }
12585
12586 PrivateDataSlot() = delete;
12587 PrivateDataSlot( PrivateDataSlot const & ) = delete;
12588
12589 PrivateDataSlot( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT
12590 : m_device( exchange( rhs.m_device, {} ) )
12591 , m_privateDataSlot( exchange( rhs.m_privateDataSlot, {} ) )
12592 , m_allocator( exchange( rhs.m_allocator, {} ) )
12593 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
12594 {
12595 }
12596
12597 PrivateDataSlot & operator=( PrivateDataSlot const & ) = delete;
12598
12599 PrivateDataSlot & operator=( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT
12600 {
12601 if ( this != &rhs )
12602 {
12603 std::swap( m_device, rhs.m_device );
12604 std::swap( m_privateDataSlot, rhs.m_privateDataSlot );
12605 std::swap( m_allocator, rhs.m_allocator );
12606 std::swap( m_dispatcher, rhs.m_dispatcher );
12607 }
12608 return *this;
12609 }
12610
12611 VULKAN_HPP_NAMESPACE::PrivateDataSlot const & operator*() const & VULKAN_HPP_NOEXCEPT
12612 {
12613 return m_privateDataSlot;
12614 }
12615
12616 VULKAN_HPP_NAMESPACE::PrivateDataSlot const && operator*() const && VULKAN_HPP_NOEXCEPT
12617 {
12618 return std::move( m_privateDataSlot );
12619 }
12620
12621 operator VULKAN_HPP_NAMESPACE::PrivateDataSlot() const VULKAN_HPP_NOEXCEPT
12622 {
12623 return m_privateDataSlot;
12624 }
12625
12626 void clear() VULKAN_HPP_NOEXCEPT
12627 {
12628 if ( m_privateDataSlot )
12629 {
12630 getDispatcher()->vkDestroyPrivateDataSlot( static_cast<VkDevice>( m_device ),
12631 static_cast<VkPrivateDataSlot>( m_privateDataSlot ),
12632 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
12633 }
12634 m_device = nullptr;
12635 m_privateDataSlot = nullptr;
12636 m_allocator = nullptr;
12637 m_dispatcher = nullptr;
12638 }
12639
12640 VULKAN_HPP_NAMESPACE::PrivateDataSlot release()
12641 {
12642 m_device = nullptr;
12643 m_allocator = nullptr;
12644 m_dispatcher = nullptr;
12645 return exchange( m_privateDataSlot, nullptr );
12646 }
12647
12648 VULKAN_HPP_NAMESPACE::Device getDevice() const
12649 {
12650 return m_device;
12651 }
12652
12653 detail::DeviceDispatcher const * getDispatcher() const
12654 {
12655 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
12656 return m_dispatcher;
12657 }
12658
12659 void swap( PrivateDataSlot & rhs ) VULKAN_HPP_NOEXCEPT
12660 {
12661 std::swap( m_device, rhs.m_device );
12662 std::swap( m_privateDataSlot, rhs.m_privateDataSlot );
12663 std::swap( m_allocator, rhs.m_allocator );
12664 std::swap( m_dispatcher, rhs.m_dispatcher );
12665 }
12666
12667 private:
12668 VULKAN_HPP_NAMESPACE::Device m_device = {};
12669 VULKAN_HPP_NAMESPACE::PrivateDataSlot m_privateDataSlot = {};
12670 const AllocationCallbacks * m_allocator = {};
12671 detail::DeviceDispatcher const * m_dispatcher = nullptr;
12672 };
12673
12674 template <>
12675 struct isVulkanRAIIHandleType<PrivateDataSlot>
12676 {
12677 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
12678 };
12679
12680 // wrapper class for handle VkQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPool.html
12681 class QueryPool
12682 {
12683 public:
12684 using CType = VkQueryPool;
12685 using CppType = VULKAN_HPP_NAMESPACE::QueryPool;
12686
12687 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueryPool;
12688 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eQueryPool;
12689
12690 public:
12691 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12692 QueryPool( Device const & device, QueryPoolCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
12693 {
12694 *this = device.createQueryPool( createInfo, allocator );
12695 }
12696 # endif
12697
12698 QueryPool( Device const & device, VkQueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr )
12699 : m_device( device )
12700 , m_queryPool( queryPool )
12701 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
12702 , m_dispatcher( device.getDispatcher() )
12703 {
12704 }
12705
12706 QueryPool( std::nullptr_t ) {}
12707
12708 ~QueryPool()
12709 {
12710 clear();
12711 }
12712
12713 QueryPool() = delete;
12714 QueryPool( QueryPool const & ) = delete;
12715
12716 QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
12717 : m_device( exchange( rhs.m_device, {} ) )
12718 , m_queryPool( exchange( rhs.m_queryPool, {} ) )
12719 , m_allocator( exchange( rhs.m_allocator, {} ) )
12720 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
12721 {
12722 }
12723
12724 QueryPool & operator=( QueryPool const & ) = delete;
12725
12726 QueryPool & operator=( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
12727 {
12728 if ( this != &rhs )
12729 {
12730 std::swap( m_device, rhs.m_device );
12731 std::swap( m_queryPool, rhs.m_queryPool );
12732 std::swap( m_allocator, rhs.m_allocator );
12733 std::swap( m_dispatcher, rhs.m_dispatcher );
12734 }
12735 return *this;
12736 }
12737
12738 VULKAN_HPP_NAMESPACE::QueryPool const & operator*() const & VULKAN_HPP_NOEXCEPT
12739 {
12740 return m_queryPool;
12741 }
12742
12743 VULKAN_HPP_NAMESPACE::QueryPool const && operator*() const && VULKAN_HPP_NOEXCEPT
12744 {
12745 return std::move( m_queryPool );
12746 }
12747
12748 operator VULKAN_HPP_NAMESPACE::QueryPool() const VULKAN_HPP_NOEXCEPT
12749 {
12750 return m_queryPool;
12751 }
12752
12753 void clear() VULKAN_HPP_NOEXCEPT
12754 {
12755 if ( m_queryPool )
12756 {
12757 getDispatcher()->vkDestroyQueryPool(
12758 static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
12759 }
12760 m_device = nullptr;
12761 m_queryPool = nullptr;
12762 m_allocator = nullptr;
12763 m_dispatcher = nullptr;
12764 }
12765
12766 VULKAN_HPP_NAMESPACE::QueryPool release()
12767 {
12768 m_device = nullptr;
12769 m_allocator = nullptr;
12770 m_dispatcher = nullptr;
12771 return exchange( m_queryPool, nullptr );
12772 }
12773
12774 VULKAN_HPP_NAMESPACE::Device getDevice() const
12775 {
12776 return m_device;
12777 }
12778
12779 detail::DeviceDispatcher const * getDispatcher() const
12780 {
12781 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
12782 return m_dispatcher;
12783 }
12784
12785 void swap( QueryPool & rhs ) VULKAN_HPP_NOEXCEPT
12786 {
12787 std::swap( m_device, rhs.m_device );
12788 std::swap( m_queryPool, rhs.m_queryPool );
12789 std::swap( m_allocator, rhs.m_allocator );
12790 std::swap( m_dispatcher, rhs.m_dispatcher );
12791 }
12792
12793 //=== VK_VERSION_1_0 ===
12794
12795 // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html
12796 template <typename DataType>
12797 VULKAN_HPP_NODISCARD ResultValue<std::vector<DataType>> getResults(
12798 uint32_t firstQuery, uint32_t queryCount, size_t dataSize, DeviceSize stride, QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
12799
12800 // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html
12801 template <typename DataType>
12802 VULKAN_HPP_NODISCARD ResultValue<DataType>
12803 getResult( uint32_t firstQuery, uint32_t queryCount, DeviceSize stride, QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
12804
12805 //=== VK_VERSION_1_2 ===
12806
12807 // wrapper function for command vkResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPool.html
12808 void reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
12809
12810 //=== VK_EXT_host_query_reset ===
12811
12812 // wrapper function for command vkResetQueryPoolEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPoolEXT.html
12813 void resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
12814
12815 private:
12816 VULKAN_HPP_NAMESPACE::Device m_device = {};
12817 VULKAN_HPP_NAMESPACE::QueryPool m_queryPool = {};
12818 const AllocationCallbacks * m_allocator = {};
12819 detail::DeviceDispatcher const * m_dispatcher = nullptr;
12820 };
12821
12822 template <>
12823 struct isVulkanRAIIHandleType<QueryPool>
12824 {
12825 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
12826 };
12827
12828 // wrapper class for handle VkQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueue.html
12829 class Queue
12830 {
12831 public:
12832 using CType = VkQueue;
12833 using CppType = VULKAN_HPP_NAMESPACE::Queue;
12834
12835 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueue;
12836 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eQueue;
12837
12838 public:
12839 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12840 Queue( Device const & device, uint32_t queueFamilyIndex, uint32_t queueIndex )
12841 {
12842 *this = device.getQueue( queueFamilyIndex, queueIndex );
12843 }
12844 # endif
12845
12846 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
12847 Queue( Device const & device, DeviceQueueInfo2 const & queueInfo )
12848 {
12849 *this = device.getQueue2( queueInfo );
12850 }
12851 # endif
12852
12853 Queue( Device const & device, VkQueue queue ) : m_queue( queue ), m_dispatcher( device.getDispatcher() ) {}
12854
12855 Queue( std::nullptr_t ) {}
12856
12857 ~Queue()
12858 {
12859 clear();
12860 }
12861
12862 Queue() = delete;
12863
12864 Queue( Queue const & rhs ) : m_queue( rhs.m_queue ), m_dispatcher( rhs.m_dispatcher ) {}
12865
12866 Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT
12867 : m_queue( exchange( rhs.m_queue, {} ) )
12868 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
12869 {
12870 }
12871
12872 Queue & operator=( Queue const & rhs )
12873 {
12874 m_queue = rhs.m_queue;
12875 m_dispatcher = rhs.m_dispatcher;
12876 return *this;
12877 }
12878
12879 Queue & operator=( Queue && rhs ) VULKAN_HPP_NOEXCEPT
12880 {
12881 if ( this != &rhs )
12882 {
12883 std::swap( m_queue, rhs.m_queue );
12884 std::swap( m_dispatcher, rhs.m_dispatcher );
12885 }
12886 return *this;
12887 }
12888
12889 VULKAN_HPP_NAMESPACE::Queue const & operator*() const & VULKAN_HPP_NOEXCEPT
12890 {
12891 return m_queue;
12892 }
12893
12894 VULKAN_HPP_NAMESPACE::Queue const && operator*() const && VULKAN_HPP_NOEXCEPT
12895 {
12896 return std::move( m_queue );
12897 }
12898
12899 operator VULKAN_HPP_NAMESPACE::Queue() const VULKAN_HPP_NOEXCEPT
12900 {
12901 return m_queue;
12902 }
12903
12904 void clear() VULKAN_HPP_NOEXCEPT
12905 {
12906 m_queue = nullptr;
12907 m_dispatcher = nullptr;
12908 }
12909
12910 VULKAN_HPP_NAMESPACE::Queue release()
12911 {
12912 m_dispatcher = nullptr;
12913 return exchange( m_queue, nullptr );
12914 }
12915
12916 detail::DeviceDispatcher const * getDispatcher() const
12917 {
12918 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
12919 return m_dispatcher;
12920 }
12921
12922 void swap( Queue & rhs ) VULKAN_HPP_NOEXCEPT
12923 {
12924 std::swap( m_queue, rhs.m_queue );
12925 std::swap( m_dispatcher, rhs.m_dispatcher );
12926 }
12927
12928 //=== VK_VERSION_1_0 ===
12929
12930 // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html
12931 typename ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> const & submits,
12932 VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
12933
12934 // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html
12935 typename ResultValueType<void>::type waitIdle() const;
12936
12937 // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html
12938 typename ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> const & bindInfo,
12939 VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
12940
12941 //=== VK_VERSION_1_3 ===
12942
12943 // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html
12944 typename ResultValueType<void>::type submit2( ArrayProxy<const SubmitInfo2> const & submits,
12945 VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
12946
12947 //=== VK_KHR_swapchain ===
12948
12949 // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html
12950 VULKAN_HPP_NODISCARD Result presentKHR( const PresentInfoKHR & presentInfo ) const;
12951
12952 //=== VK_EXT_debug_utils ===
12953
12954 // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see
12955 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html
12956 void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
12957
12958 // wrapper function for command vkQueueEndDebugUtilsLabelEXT, see
12959 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueEndDebugUtilsLabelEXT.html
12960 void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
12961
12962 // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see
12963 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html
12964 void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
12965
12966 //=== VK_NV_device_diagnostic_checkpoints ===
12967
12968 // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html
12969 VULKAN_HPP_NODISCARD std::vector<CheckpointDataNV> getCheckpointDataNV() const;
12970
12971 // wrapper function for command vkGetQueueCheckpointData2NV, see
12972 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html
12973 VULKAN_HPP_NODISCARD std::vector<CheckpointData2NV> getCheckpointData2NV() const;
12974
12975 //=== VK_INTEL_performance_query ===
12976
12977 // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see
12978 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html
12979 typename ResultValueType<void>::type setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const;
12980
12981 //=== VK_KHR_synchronization2 ===
12982
12983 // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html
12984 typename ResultValueType<void>::type submit2KHR( ArrayProxy<const SubmitInfo2> const & submits,
12985 VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
12986
12987 //=== VK_NV_low_latency2 ===
12988
12989 // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html
12990 void notifyOutOfBandNV( const OutOfBandQueueTypeInfoNV & queueTypeInfo ) const VULKAN_HPP_NOEXCEPT;
12991
12992 # if defined( VK_USE_PLATFORM_OHOS )
12993 //=== VK_OHOS_native_buffer ===
12994
12995 // wrapper function for command vkQueueSignalReleaseImageOHOS, see
12996 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSignalReleaseImageOHOS.html
12997 VULKAN_HPP_NODISCARD typename ResultValueType<int32_t>::type
12998 signalReleaseImageOHOS( ArrayProxy<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores, VULKAN_HPP_NAMESPACE::Image image ) const;
12999 # endif /*VK_USE_PLATFORM_OHOS*/
13000
13001 private:
13002 VULKAN_HPP_NAMESPACE::Queue m_queue = {};
13003 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13004 };
13005
13006 template <>
13007 struct isVulkanRAIIHandleType<Queue>
13008 {
13009 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13010 };
13011
13012 // wrapper class for handle VkRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPass.html
13013 class RenderPass
13014 {
13015 public:
13016 using CType = VkRenderPass;
13017 using CppType = VULKAN_HPP_NAMESPACE::RenderPass;
13018
13019 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eRenderPass;
13020 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eRenderPass;
13021
13022 public:
13023 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13024 RenderPass( Device const & device, RenderPassCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13025 {
13026 *this = device.createRenderPass( createInfo, allocator );
13027 }
13028 # endif
13029
13030 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13031 RenderPass( Device const & device, RenderPassCreateInfo2 const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13032 {
13033 *this = device.createRenderPass2( createInfo, allocator );
13034 }
13035 # endif
13036
13037 RenderPass( Device const & device, VkRenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr )
13038 : m_device( device )
13039 , m_renderPass( renderPass )
13040 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
13041 , m_dispatcher( device.getDispatcher() )
13042 {
13043 }
13044
13045 RenderPass( std::nullptr_t ) {}
13046
13047 ~RenderPass()
13048 {
13049 clear();
13050 }
13051
13052 RenderPass() = delete;
13053 RenderPass( RenderPass const & ) = delete;
13054
13055 RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
13056 : m_device( exchange( rhs.m_device, {} ) )
13057 , m_renderPass( exchange( rhs.m_renderPass, {} ) )
13058 , m_allocator( exchange( rhs.m_allocator, {} ) )
13059 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
13060 {
13061 }
13062
13063 RenderPass & operator=( RenderPass const & ) = delete;
13064
13065 RenderPass & operator=( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
13066 {
13067 if ( this != &rhs )
13068 {
13069 std::swap( m_device, rhs.m_device );
13070 std::swap( m_renderPass, rhs.m_renderPass );
13071 std::swap( m_allocator, rhs.m_allocator );
13072 std::swap( m_dispatcher, rhs.m_dispatcher );
13073 }
13074 return *this;
13075 }
13076
13077 VULKAN_HPP_NAMESPACE::RenderPass const & operator*() const & VULKAN_HPP_NOEXCEPT
13078 {
13079 return m_renderPass;
13080 }
13081
13082 VULKAN_HPP_NAMESPACE::RenderPass const && operator*() const && VULKAN_HPP_NOEXCEPT
13083 {
13084 return std::move( m_renderPass );
13085 }
13086
13087 operator VULKAN_HPP_NAMESPACE::RenderPass() const VULKAN_HPP_NOEXCEPT
13088 {
13089 return m_renderPass;
13090 }
13091
13092 void clear() VULKAN_HPP_NOEXCEPT
13093 {
13094 if ( m_renderPass )
13095 {
13096 getDispatcher()->vkDestroyRenderPass(
13097 static_cast<VkDevice>( m_device ), static_cast<VkRenderPass>( m_renderPass ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
13098 }
13099 m_device = nullptr;
13100 m_renderPass = nullptr;
13101 m_allocator = nullptr;
13102 m_dispatcher = nullptr;
13103 }
13104
13105 VULKAN_HPP_NAMESPACE::RenderPass release()
13106 {
13107 m_device = nullptr;
13108 m_allocator = nullptr;
13109 m_dispatcher = nullptr;
13110 return exchange( m_renderPass, nullptr );
13111 }
13112
13113 VULKAN_HPP_NAMESPACE::Device getDevice() const
13114 {
13115 return m_device;
13116 }
13117
13118 detail::DeviceDispatcher const * getDispatcher() const
13119 {
13120 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
13121 return m_dispatcher;
13122 }
13123
13124 void swap( RenderPass & rhs ) VULKAN_HPP_NOEXCEPT
13125 {
13126 std::swap( m_device, rhs.m_device );
13127 std::swap( m_renderPass, rhs.m_renderPass );
13128 std::swap( m_allocator, rhs.m_allocator );
13129 std::swap( m_dispatcher, rhs.m_dispatcher );
13130 }
13131
13132 //=== VK_VERSION_1_0 ===
13133
13134 // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html
13135 VULKAN_HPP_NODISCARD Extent2D getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT;
13136
13137 //=== VK_HUAWEI_subpass_shading ===
13138
13139 // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see
13140 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html
13141 VULKAN_HPP_NODISCARD typename ResultValueType<Extent2D>::type getSubpassShadingMaxWorkgroupSizeHUAWEI() const;
13142
13143 private:
13144 VULKAN_HPP_NAMESPACE::Device m_device = {};
13145 VULKAN_HPP_NAMESPACE::RenderPass m_renderPass = {};
13146 const AllocationCallbacks * m_allocator = {};
13147 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13148 };
13149
13150 template <>
13151 struct isVulkanRAIIHandleType<RenderPass>
13152 {
13153 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13154 };
13155
13156 // wrapper class for handle VkSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampler.html
13157 class Sampler
13158 {
13159 public:
13160 using CType = VkSampler;
13161 using CppType = VULKAN_HPP_NAMESPACE::Sampler;
13162
13163 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSampler;
13164 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSampler;
13165
13166 public:
13167 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13168 Sampler( Device const & device, SamplerCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13169 {
13170 *this = device.createSampler( createInfo, allocator );
13171 }
13172 # endif
13173
13174 Sampler( Device const & device, VkSampler sampler, Optional<const AllocationCallbacks> allocator = nullptr )
13175 : m_device( device ), m_sampler( sampler ), m_allocator( static_cast<const AllocationCallbacks *>( allocator ) ), m_dispatcher( device.getDispatcher() )
13176 {
13177 }
13178
13179 Sampler( std::nullptr_t ) {}
13180
13181 ~Sampler()
13182 {
13183 clear();
13184 }
13185
13186 Sampler() = delete;
13187 Sampler( Sampler const & ) = delete;
13188
13189 Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
13190 : m_device( exchange( rhs.m_device, {} ) )
13191 , m_sampler( exchange( rhs.m_sampler, {} ) )
13192 , m_allocator( exchange( rhs.m_allocator, {} ) )
13193 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
13194 {
13195 }
13196
13197 Sampler & operator=( Sampler const & ) = delete;
13198
13199 Sampler & operator=( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
13200 {
13201 if ( this != &rhs )
13202 {
13203 std::swap( m_device, rhs.m_device );
13204 std::swap( m_sampler, rhs.m_sampler );
13205 std::swap( m_allocator, rhs.m_allocator );
13206 std::swap( m_dispatcher, rhs.m_dispatcher );
13207 }
13208 return *this;
13209 }
13210
13211 VULKAN_HPP_NAMESPACE::Sampler const & operator*() const & VULKAN_HPP_NOEXCEPT
13212 {
13213 return m_sampler;
13214 }
13215
13216 VULKAN_HPP_NAMESPACE::Sampler const && operator*() const && VULKAN_HPP_NOEXCEPT
13217 {
13218 return std::move( m_sampler );
13219 }
13220
13221 operator VULKAN_HPP_NAMESPACE::Sampler() const VULKAN_HPP_NOEXCEPT
13222 {
13223 return m_sampler;
13224 }
13225
13226 void clear() VULKAN_HPP_NOEXCEPT
13227 {
13228 if ( m_sampler )
13229 {
13230 getDispatcher()->vkDestroySampler(
13231 static_cast<VkDevice>( m_device ), static_cast<VkSampler>( m_sampler ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
13232 }
13233 m_device = nullptr;
13234 m_sampler = nullptr;
13235 m_allocator = nullptr;
13236 m_dispatcher = nullptr;
13237 }
13238
13239 VULKAN_HPP_NAMESPACE::Sampler release()
13240 {
13241 m_device = nullptr;
13242 m_allocator = nullptr;
13243 m_dispatcher = nullptr;
13244 return exchange( m_sampler, nullptr );
13245 }
13246
13247 VULKAN_HPP_NAMESPACE::Device getDevice() const
13248 {
13249 return m_device;
13250 }
13251
13252 detail::DeviceDispatcher const * getDispatcher() const
13253 {
13254 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
13255 return m_dispatcher;
13256 }
13257
13258 void swap( Sampler & rhs ) VULKAN_HPP_NOEXCEPT
13259 {
13260 std::swap( m_device, rhs.m_device );
13261 std::swap( m_sampler, rhs.m_sampler );
13262 std::swap( m_allocator, rhs.m_allocator );
13263 std::swap( m_dispatcher, rhs.m_dispatcher );
13264 }
13265
13266 private:
13267 VULKAN_HPP_NAMESPACE::Device m_device = {};
13268 VULKAN_HPP_NAMESPACE::Sampler m_sampler = {};
13269 const AllocationCallbacks * m_allocator = {};
13270 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13271 };
13272
13273 template <>
13274 struct isVulkanRAIIHandleType<Sampler>
13275 {
13276 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13277 };
13278
13279 // wrapper class for handle VkSamplerYcbcrConversion, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversion.html
13280 class SamplerYcbcrConversion
13281 {
13282 public:
13283 using CType = VkSamplerYcbcrConversion;
13284 using CppType = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion;
13285
13286 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSamplerYcbcrConversion;
13287 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSamplerYcbcrConversion;
13288
13289 public:
13290 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13291 SamplerYcbcrConversion( Device const & device,
13292 SamplerYcbcrConversionCreateInfo const & createInfo,
13293 Optional<const AllocationCallbacks> allocator = nullptr )
13294 {
13295 *this = device.createSamplerYcbcrConversion( createInfo, allocator );
13296 }
13297 # endif
13298
13299 SamplerYcbcrConversion( Device const & device, VkSamplerYcbcrConversion ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr )
13300 : m_device( device )
13301 , m_samplerYcbcrConversion( ycbcrConversion )
13302 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
13303 , m_dispatcher( device.getDispatcher() )
13304 {
13305 }
13306
13307 SamplerYcbcrConversion( std::nullptr_t ) {}
13308
13309 ~SamplerYcbcrConversion()
13310 {
13311 clear();
13312 }
13313
13314 SamplerYcbcrConversion() = delete;
13315 SamplerYcbcrConversion( SamplerYcbcrConversion const & ) = delete;
13316
13317 SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
13318 : m_device( exchange( rhs.m_device, {} ) )
13319 , m_samplerYcbcrConversion( exchange( rhs.m_samplerYcbcrConversion, {} ) )
13320 , m_allocator( exchange( rhs.m_allocator, {} ) )
13321 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
13322 {
13323 }
13324
13325 SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & ) = delete;
13326
13327 SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
13328 {
13329 if ( this != &rhs )
13330 {
13331 std::swap( m_device, rhs.m_device );
13332 std::swap( m_samplerYcbcrConversion, rhs.m_samplerYcbcrConversion );
13333 std::swap( m_allocator, rhs.m_allocator );
13334 std::swap( m_dispatcher, rhs.m_dispatcher );
13335 }
13336 return *this;
13337 }
13338
13339 VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & operator*() const & VULKAN_HPP_NOEXCEPT
13340 {
13341 return m_samplerYcbcrConversion;
13342 }
13343
13344 VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const && operator*() const && VULKAN_HPP_NOEXCEPT
13345 {
13346 return std::move( m_samplerYcbcrConversion );
13347 }
13348
13349 operator VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion() const VULKAN_HPP_NOEXCEPT
13350 {
13351 return m_samplerYcbcrConversion;
13352 }
13353
13354 void clear() VULKAN_HPP_NOEXCEPT
13355 {
13356 if ( m_samplerYcbcrConversion )
13357 {
13358 getDispatcher()->vkDestroySamplerYcbcrConversion( static_cast<VkDevice>( m_device ),
13359 static_cast<VkSamplerYcbcrConversion>( m_samplerYcbcrConversion ),
13360 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
13361 }
13362 m_device = nullptr;
13363 m_samplerYcbcrConversion = nullptr;
13364 m_allocator = nullptr;
13365 m_dispatcher = nullptr;
13366 }
13367
13368 VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion release()
13369 {
13370 m_device = nullptr;
13371 m_allocator = nullptr;
13372 m_dispatcher = nullptr;
13373 return exchange( m_samplerYcbcrConversion, nullptr );
13374 }
13375
13376 VULKAN_HPP_NAMESPACE::Device getDevice() const
13377 {
13378 return m_device;
13379 }
13380
13381 detail::DeviceDispatcher const * getDispatcher() const
13382 {
13383 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
13384 return m_dispatcher;
13385 }
13386
13387 void swap( SamplerYcbcrConversion & rhs ) VULKAN_HPP_NOEXCEPT
13388 {
13389 std::swap( m_device, rhs.m_device );
13390 std::swap( m_samplerYcbcrConversion, rhs.m_samplerYcbcrConversion );
13391 std::swap( m_allocator, rhs.m_allocator );
13392 std::swap( m_dispatcher, rhs.m_dispatcher );
13393 }
13394
13395 private:
13396 VULKAN_HPP_NAMESPACE::Device m_device = {};
13397 VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion m_samplerYcbcrConversion = {};
13398 const AllocationCallbacks * m_allocator = {};
13399 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13400 };
13401
13402 template <>
13403 struct isVulkanRAIIHandleType<SamplerYcbcrConversion>
13404 {
13405 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13406 };
13407
13408 // wrapper class for handle VkSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphore.html
13409 class Semaphore
13410 {
13411 public:
13412 using CType = VkSemaphore;
13413 using CppType = VULKAN_HPP_NAMESPACE::Semaphore;
13414
13415 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSemaphore;
13416 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSemaphore;
13417
13418 public:
13419 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13420 Semaphore( Device const & device, SemaphoreCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13421 {
13422 *this = device.createSemaphore( createInfo, allocator );
13423 }
13424 # endif
13425
13426 Semaphore( Device const & device, VkSemaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr )
13427 : m_device( device )
13428 , m_semaphore( semaphore )
13429 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
13430 , m_dispatcher( device.getDispatcher() )
13431 {
13432 }
13433
13434 Semaphore( std::nullptr_t ) {}
13435
13436 ~Semaphore()
13437 {
13438 clear();
13439 }
13440
13441 Semaphore() = delete;
13442 Semaphore( Semaphore const & ) = delete;
13443
13444 Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
13445 : m_device( exchange( rhs.m_device, {} ) )
13446 , m_semaphore( exchange( rhs.m_semaphore, {} ) )
13447 , m_allocator( exchange( rhs.m_allocator, {} ) )
13448 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
13449 {
13450 }
13451
13452 Semaphore & operator=( Semaphore const & ) = delete;
13453
13454 Semaphore & operator=( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
13455 {
13456 if ( this != &rhs )
13457 {
13458 std::swap( m_device, rhs.m_device );
13459 std::swap( m_semaphore, rhs.m_semaphore );
13460 std::swap( m_allocator, rhs.m_allocator );
13461 std::swap( m_dispatcher, rhs.m_dispatcher );
13462 }
13463 return *this;
13464 }
13465
13466 VULKAN_HPP_NAMESPACE::Semaphore const & operator*() const & VULKAN_HPP_NOEXCEPT
13467 {
13468 return m_semaphore;
13469 }
13470
13471 VULKAN_HPP_NAMESPACE::Semaphore const && operator*() const && VULKAN_HPP_NOEXCEPT
13472 {
13473 return std::move( m_semaphore );
13474 }
13475
13476 operator VULKAN_HPP_NAMESPACE::Semaphore() const VULKAN_HPP_NOEXCEPT
13477 {
13478 return m_semaphore;
13479 }
13480
13481 void clear() VULKAN_HPP_NOEXCEPT
13482 {
13483 if ( m_semaphore )
13484 {
13485 getDispatcher()->vkDestroySemaphore(
13486 static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
13487 }
13488 m_device = nullptr;
13489 m_semaphore = nullptr;
13490 m_allocator = nullptr;
13491 m_dispatcher = nullptr;
13492 }
13493
13494 VULKAN_HPP_NAMESPACE::Semaphore release()
13495 {
13496 m_device = nullptr;
13497 m_allocator = nullptr;
13498 m_dispatcher = nullptr;
13499 return exchange( m_semaphore, nullptr );
13500 }
13501
13502 VULKAN_HPP_NAMESPACE::Device getDevice() const
13503 {
13504 return m_device;
13505 }
13506
13507 detail::DeviceDispatcher const * getDispatcher() const
13508 {
13509 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
13510 return m_dispatcher;
13511 }
13512
13513 void swap( Semaphore & rhs ) VULKAN_HPP_NOEXCEPT
13514 {
13515 std::swap( m_device, rhs.m_device );
13516 std::swap( m_semaphore, rhs.m_semaphore );
13517 std::swap( m_allocator, rhs.m_allocator );
13518 std::swap( m_dispatcher, rhs.m_dispatcher );
13519 }
13520
13521 //=== VK_VERSION_1_2 ===
13522
13523 // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html
13524 VULKAN_HPP_NODISCARD typename ResultValueType<uint64_t>::type getCounterValue() const;
13525
13526 //=== VK_KHR_timeline_semaphore ===
13527
13528 // wrapper function for command vkGetSemaphoreCounterValueKHR, see
13529 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html
13530 VULKAN_HPP_NODISCARD typename ResultValueType<uint64_t>::type getCounterValueKHR() const;
13531
13532 private:
13533 VULKAN_HPP_NAMESPACE::Device m_device = {};
13534 VULKAN_HPP_NAMESPACE::Semaphore m_semaphore = {};
13535 const AllocationCallbacks * m_allocator = {};
13536 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13537 };
13538
13539 template <>
13540 struct isVulkanRAIIHandleType<Semaphore>
13541 {
13542 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13543 };
13544
13545 // wrapper class for handle VkShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderEXT.html
13546 class ShaderEXT
13547 {
13548 public:
13549 using CType = VkShaderEXT;
13550 using CppType = VULKAN_HPP_NAMESPACE::ShaderEXT;
13551
13552 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderEXT;
13553 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
13554
13555 public:
13556 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13557 ShaderEXT( Device const & device, ShaderCreateInfoEXT const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13558 {
13559 *this = device.createShaderEXT( createInfo, allocator );
13560 }
13561 # endif
13562
13563 ShaderEXT( Device const & device, VkShaderEXT shader, Optional<const AllocationCallbacks> allocator = nullptr, Result successCode = Result::eSuccess )
13564 : m_device( device )
13565 , m_shaderEXT( shader )
13566 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
13567 , m_constructorSuccessCode( successCode )
13568 , m_dispatcher( device.getDispatcher() )
13569 {
13570 }
13571
13572 ShaderEXT( std::nullptr_t ) {}
13573
13574 ~ShaderEXT()
13575 {
13576 clear();
13577 }
13578
13579 ShaderEXT() = delete;
13580 ShaderEXT( ShaderEXT const & ) = delete;
13581
13582 ShaderEXT( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT
13583 : m_device( exchange( rhs.m_device, {} ) )
13584 , m_shaderEXT( exchange( rhs.m_shaderEXT, {} ) )
13585 , m_allocator( exchange( rhs.m_allocator, {} ) )
13586 , m_constructorSuccessCode( exchange( rhs.m_constructorSuccessCode, {} ) )
13587 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
13588 {
13589 }
13590
13591 ShaderEXT & operator=( ShaderEXT const & ) = delete;
13592
13593 ShaderEXT & operator=( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT
13594 {
13595 if ( this != &rhs )
13596 {
13597 std::swap( m_device, rhs.m_device );
13598 std::swap( m_shaderEXT, rhs.m_shaderEXT );
13599 std::swap( m_allocator, rhs.m_allocator );
13600 std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
13601 std::swap( m_dispatcher, rhs.m_dispatcher );
13602 }
13603 return *this;
13604 }
13605
13606 VULKAN_HPP_NAMESPACE::ShaderEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
13607 {
13608 return m_shaderEXT;
13609 }
13610
13611 VULKAN_HPP_NAMESPACE::ShaderEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
13612 {
13613 return std::move( m_shaderEXT );
13614 }
13615
13616 operator VULKAN_HPP_NAMESPACE::ShaderEXT() const VULKAN_HPP_NOEXCEPT
13617 {
13618 return m_shaderEXT;
13619 }
13620
13621 void clear() VULKAN_HPP_NOEXCEPT
13622 {
13623 if ( m_shaderEXT )
13624 {
13625 getDispatcher()->vkDestroyShaderEXT(
13626 static_cast<VkDevice>( m_device ), static_cast<VkShaderEXT>( m_shaderEXT ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
13627 }
13628 m_device = nullptr;
13629 m_shaderEXT = nullptr;
13630 m_allocator = nullptr;
13631 m_constructorSuccessCode = Result::eErrorUnknown;
13632 m_dispatcher = nullptr;
13633 }
13634
13635 VULKAN_HPP_NAMESPACE::ShaderEXT release()
13636 {
13637 m_device = nullptr;
13638 m_allocator = nullptr;
13639 m_constructorSuccessCode = Result::eErrorUnknown;
13640 m_dispatcher = nullptr;
13641 return exchange( m_shaderEXT, nullptr );
13642 }
13643
13644 Result getConstructorSuccessCode() const
13645 {
13646 return m_constructorSuccessCode;
13647 }
13648
13649 VULKAN_HPP_NAMESPACE::Device getDevice() const
13650 {
13651 return m_device;
13652 }
13653
13654 detail::DeviceDispatcher const * getDispatcher() const
13655 {
13656 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
13657 return m_dispatcher;
13658 }
13659
13660 void swap( ShaderEXT & rhs ) VULKAN_HPP_NOEXCEPT
13661 {
13662 std::swap( m_device, rhs.m_device );
13663 std::swap( m_shaderEXT, rhs.m_shaderEXT );
13664 std::swap( m_allocator, rhs.m_allocator );
13665 std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
13666 std::swap( m_dispatcher, rhs.m_dispatcher );
13667 }
13668
13669 //=== VK_EXT_shader_object ===
13670
13671 // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html
13672 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<uint8_t>>::type getBinaryData() const;
13673
13674 private:
13675 VULKAN_HPP_NAMESPACE::Device m_device = {};
13676 VULKAN_HPP_NAMESPACE::ShaderEXT m_shaderEXT = {};
13677 const AllocationCallbacks * m_allocator = {};
13678 Result m_constructorSuccessCode = Result::eErrorUnknown;
13679 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13680 };
13681
13682 template <>
13683 struct isVulkanRAIIHandleType<ShaderEXT>
13684 {
13685 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13686 };
13687
13688 class ShaderEXTs : public std::vector<ShaderEXT>
13689 {
13690 public:
13691 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13692 ShaderEXTs( Device const & device, ArrayProxy<ShaderCreateInfoEXT> const & createInfos, Optional<const AllocationCallbacks> allocator = nullptr )
13693 {
13694 *this = device.createShadersEXT( createInfos, allocator );
13695 }
13696 # endif
13697
13698 ShaderEXTs( std::nullptr_t ) {}
13699
13700 ShaderEXTs() = delete;
13701 ShaderEXTs( ShaderEXTs const & ) = delete;
13702 ShaderEXTs( ShaderEXTs && rhs ) = default;
13703 ShaderEXTs & operator=( ShaderEXTs const & ) = delete;
13704 ShaderEXTs & operator=( ShaderEXTs && rhs ) = default;
13705
13706 private:
13707 ShaderEXTs( std::vector<ShaderEXT> && rhs )
13708 {
13709 std::swap( *this, rhs );
13710 }
13711 };
13712
13713 // wrapper class for handle VkShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModule.html
13714 class ShaderModule
13715 {
13716 public:
13717 using CType = VkShaderModule;
13718 using CppType = VULKAN_HPP_NAMESPACE::ShaderModule;
13719
13720 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderModule;
13721 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eShaderModule;
13722
13723 public:
13724 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13725 ShaderModule( Device const & device, ShaderModuleCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13726 {
13727 *this = device.createShaderModule( createInfo, allocator );
13728 }
13729 # endif
13730
13731 ShaderModule( Device const & device, VkShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr )
13732 : m_device( device )
13733 , m_shaderModule( shaderModule )
13734 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
13735 , m_dispatcher( device.getDispatcher() )
13736 {
13737 }
13738
13739 ShaderModule( std::nullptr_t ) {}
13740
13741 ~ShaderModule()
13742 {
13743 clear();
13744 }
13745
13746 ShaderModule() = delete;
13747 ShaderModule( ShaderModule const & ) = delete;
13748
13749 ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
13750 : m_device( exchange( rhs.m_device, {} ) )
13751 , m_shaderModule( exchange( rhs.m_shaderModule, {} ) )
13752 , m_allocator( exchange( rhs.m_allocator, {} ) )
13753 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
13754 {
13755 }
13756
13757 ShaderModule & operator=( ShaderModule const & ) = delete;
13758
13759 ShaderModule & operator=( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
13760 {
13761 if ( this != &rhs )
13762 {
13763 std::swap( m_device, rhs.m_device );
13764 std::swap( m_shaderModule, rhs.m_shaderModule );
13765 std::swap( m_allocator, rhs.m_allocator );
13766 std::swap( m_dispatcher, rhs.m_dispatcher );
13767 }
13768 return *this;
13769 }
13770
13771 VULKAN_HPP_NAMESPACE::ShaderModule const & operator*() const & VULKAN_HPP_NOEXCEPT
13772 {
13773 return m_shaderModule;
13774 }
13775
13776 VULKAN_HPP_NAMESPACE::ShaderModule const && operator*() const && VULKAN_HPP_NOEXCEPT
13777 {
13778 return std::move( m_shaderModule );
13779 }
13780
13781 operator VULKAN_HPP_NAMESPACE::ShaderModule() const VULKAN_HPP_NOEXCEPT
13782 {
13783 return m_shaderModule;
13784 }
13785
13786 void clear() VULKAN_HPP_NOEXCEPT
13787 {
13788 if ( m_shaderModule )
13789 {
13790 getDispatcher()->vkDestroyShaderModule(
13791 static_cast<VkDevice>( m_device ), static_cast<VkShaderModule>( m_shaderModule ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
13792 }
13793 m_device = nullptr;
13794 m_shaderModule = nullptr;
13795 m_allocator = nullptr;
13796 m_dispatcher = nullptr;
13797 }
13798
13799 VULKAN_HPP_NAMESPACE::ShaderModule release()
13800 {
13801 m_device = nullptr;
13802 m_allocator = nullptr;
13803 m_dispatcher = nullptr;
13804 return exchange( m_shaderModule, nullptr );
13805 }
13806
13807 VULKAN_HPP_NAMESPACE::Device getDevice() const
13808 {
13809 return m_device;
13810 }
13811
13812 detail::DeviceDispatcher const * getDispatcher() const
13813 {
13814 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
13815 return m_dispatcher;
13816 }
13817
13818 void swap( ShaderModule & rhs ) VULKAN_HPP_NOEXCEPT
13819 {
13820 std::swap( m_device, rhs.m_device );
13821 std::swap( m_shaderModule, rhs.m_shaderModule );
13822 std::swap( m_allocator, rhs.m_allocator );
13823 std::swap( m_dispatcher, rhs.m_dispatcher );
13824 }
13825
13826 //=== VK_EXT_shader_module_identifier ===
13827
13828 // wrapper function for command vkGetShaderModuleIdentifierEXT, see
13829 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html
13830 VULKAN_HPP_NODISCARD ShaderModuleIdentifierEXT getIdentifierEXT() const VULKAN_HPP_NOEXCEPT;
13831
13832 private:
13833 VULKAN_HPP_NAMESPACE::Device m_device = {};
13834 VULKAN_HPP_NAMESPACE::ShaderModule m_shaderModule = {};
13835 const AllocationCallbacks * m_allocator = {};
13836 detail::DeviceDispatcher const * m_dispatcher = nullptr;
13837 };
13838
13839 template <>
13840 struct isVulkanRAIIHandleType<ShaderModule>
13841 {
13842 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
13843 };
13844
13845 // wrapper class for handle VkSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceKHR.html
13846 class SurfaceKHR
13847 {
13848 public:
13849 using CType = VkSurfaceKHR;
13850 using CppType = VULKAN_HPP_NAMESPACE::SurfaceKHR;
13851
13852 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSurfaceKHR;
13853 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSurfaceKHR;
13854
13855 public:
13856 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13857 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
13858 SurfaceKHR( Instance const & instance, AndroidSurfaceCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13859 {
13860 *this = instance.createAndroidSurfaceKHR( createInfo, allocator );
13861 }
13862 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
13863 # endif
13864
13865 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13866 # if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
13867 SurfaceKHR( Instance const & instance, DirectFBSurfaceCreateInfoEXT const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13868 {
13869 *this = instance.createDirectFBSurfaceEXT( createInfo, allocator );
13870 }
13871 # endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
13872 # endif
13873
13874 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13875 SurfaceKHR( Instance const & instance, DisplaySurfaceCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13876 {
13877 *this = instance.createDisplayPlaneSurfaceKHR( createInfo, allocator );
13878 }
13879 # endif
13880
13881 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13882 SurfaceKHR( Instance const & instance, HeadlessSurfaceCreateInfoEXT const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13883 {
13884 *this = instance.createHeadlessSurfaceEXT( createInfo, allocator );
13885 }
13886 # endif
13887
13888 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13889 # if defined( VK_USE_PLATFORM_IOS_MVK )
13890 SurfaceKHR( Instance const & instance, IOSSurfaceCreateInfoMVK const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13891 {
13892 *this = instance.createIOSSurfaceMVK( createInfo, allocator );
13893 }
13894 # endif /*VK_USE_PLATFORM_IOS_MVK*/
13895 # endif
13896
13897 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13898 # if defined( VK_USE_PLATFORM_FUCHSIA )
13899 SurfaceKHR( Instance const & instance, ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13900 {
13901 *this = instance.createImagePipeSurfaceFUCHSIA( createInfo, allocator );
13902 }
13903 # endif /*VK_USE_PLATFORM_FUCHSIA*/
13904 # endif
13905
13906 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13907 # if defined( VK_USE_PLATFORM_MACOS_MVK )
13908 SurfaceKHR( Instance const & instance, MacOSSurfaceCreateInfoMVK const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13909 {
13910 *this = instance.createMacOSSurfaceMVK( createInfo, allocator );
13911 }
13912 # endif /*VK_USE_PLATFORM_MACOS_MVK*/
13913 # endif
13914
13915 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13916 # if defined( VK_USE_PLATFORM_METAL_EXT )
13917 SurfaceKHR( Instance const & instance, MetalSurfaceCreateInfoEXT const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13918 {
13919 *this = instance.createMetalSurfaceEXT( createInfo, allocator );
13920 }
13921 # endif /*VK_USE_PLATFORM_METAL_EXT*/
13922 # endif
13923
13924 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13925 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
13926 SurfaceKHR( Instance const & instance, ScreenSurfaceCreateInfoQNX const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13927 {
13928 *this = instance.createScreenSurfaceQNX( createInfo, allocator );
13929 }
13930 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
13931 # endif
13932
13933 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13934 # if defined( VK_USE_PLATFORM_GGP )
13935 SurfaceKHR( Instance const & instance, StreamDescriptorSurfaceCreateInfoGGP const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13936 {
13937 *this = instance.createStreamDescriptorSurfaceGGP( createInfo, allocator );
13938 }
13939 # endif /*VK_USE_PLATFORM_GGP*/
13940 # endif
13941
13942 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13943 # if defined( VK_USE_PLATFORM_OHOS )
13944 SurfaceKHR( Instance const & instance, SurfaceCreateInfoOHOS const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13945 {
13946 *this = instance.createSurfaceOHOS( createInfo, allocator );
13947 }
13948 # endif /*VK_USE_PLATFORM_OHOS*/
13949 # endif
13950
13951 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13952 # if defined( VK_USE_PLATFORM_VI_NN )
13953 SurfaceKHR( Instance const & instance, ViSurfaceCreateInfoNN const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13954 {
13955 *this = instance.createViSurfaceNN( createInfo, allocator );
13956 }
13957 # endif /*VK_USE_PLATFORM_VI_NN*/
13958 # endif
13959
13960 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13961 # if defined( VK_USE_PLATFORM_WAYLAND_KHR )
13962 SurfaceKHR( Instance const & instance, WaylandSurfaceCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13963 {
13964 *this = instance.createWaylandSurfaceKHR( createInfo, allocator );
13965 }
13966 # endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
13967 # endif
13968
13969 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13970 # if defined( VK_USE_PLATFORM_WIN32_KHR )
13971 SurfaceKHR( Instance const & instance, Win32SurfaceCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13972 {
13973 *this = instance.createWin32SurfaceKHR( createInfo, allocator );
13974 }
13975 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
13976 # endif
13977
13978 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13979 # if defined( VK_USE_PLATFORM_XCB_KHR )
13980 SurfaceKHR( Instance const & instance, XcbSurfaceCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13981 {
13982 *this = instance.createXcbSurfaceKHR( createInfo, allocator );
13983 }
13984 # endif /*VK_USE_PLATFORM_XCB_KHR*/
13985 # endif
13986
13987 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
13988 # if defined( VK_USE_PLATFORM_XLIB_KHR )
13989 SurfaceKHR( Instance const & instance, XlibSurfaceCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
13990 {
13991 *this = instance.createXlibSurfaceKHR( createInfo, allocator );
13992 }
13993 # endif /*VK_USE_PLATFORM_XLIB_KHR*/
13994 # endif
13995
13996 SurfaceKHR( Instance const & instance, VkSurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr )
13997 : m_instance( instance )
13998 , m_surfaceKHR( surface )
13999 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14000 , m_dispatcher( instance.getDispatcher() )
14001 {
14002 }
14003
14004 SurfaceKHR( std::nullptr_t ) {}
14005
14006 ~SurfaceKHR()
14007 {
14008 clear();
14009 }
14010
14011 SurfaceKHR() = delete;
14012 SurfaceKHR( SurfaceKHR const & ) = delete;
14013
14014 SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
14015 : m_instance( exchange( rhs.m_instance, {} ) )
14016 , m_surfaceKHR( exchange( rhs.m_surfaceKHR, {} ) )
14017 , m_allocator( exchange( rhs.m_allocator, {} ) )
14018 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14019 {
14020 }
14021
14022 SurfaceKHR & operator=( SurfaceKHR const & ) = delete;
14023
14024 SurfaceKHR & operator=( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
14025 {
14026 if ( this != &rhs )
14027 {
14028 std::swap( m_instance, rhs.m_instance );
14029 std::swap( m_surfaceKHR, rhs.m_surfaceKHR );
14030 std::swap( m_allocator, rhs.m_allocator );
14031 std::swap( m_dispatcher, rhs.m_dispatcher );
14032 }
14033 return *this;
14034 }
14035
14036 VULKAN_HPP_NAMESPACE::SurfaceKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
14037 {
14038 return m_surfaceKHR;
14039 }
14040
14041 VULKAN_HPP_NAMESPACE::SurfaceKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
14042 {
14043 return std::move( m_surfaceKHR );
14044 }
14045
14046 operator VULKAN_HPP_NAMESPACE::SurfaceKHR() const VULKAN_HPP_NOEXCEPT
14047 {
14048 return m_surfaceKHR;
14049 }
14050
14051 void clear() VULKAN_HPP_NOEXCEPT
14052 {
14053 if ( m_surfaceKHR )
14054 {
14055 getDispatcher()->vkDestroySurfaceKHR(
14056 static_cast<VkInstance>( m_instance ), static_cast<VkSurfaceKHR>( m_surfaceKHR ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14057 }
14058 m_instance = nullptr;
14059 m_surfaceKHR = nullptr;
14060 m_allocator = nullptr;
14061 m_dispatcher = nullptr;
14062 }
14063
14064 VULKAN_HPP_NAMESPACE::SurfaceKHR release()
14065 {
14066 m_instance = nullptr;
14067 m_allocator = nullptr;
14068 m_dispatcher = nullptr;
14069 return exchange( m_surfaceKHR, nullptr );
14070 }
14071
14072 VULKAN_HPP_NAMESPACE::Instance getInstance() const
14073 {
14074 return m_instance;
14075 }
14076
14077 detail::InstanceDispatcher const * getDispatcher() const
14078 {
14079 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14080 return m_dispatcher;
14081 }
14082
14083 void swap( SurfaceKHR & rhs ) VULKAN_HPP_NOEXCEPT
14084 {
14085 std::swap( m_instance, rhs.m_instance );
14086 std::swap( m_surfaceKHR, rhs.m_surfaceKHR );
14087 std::swap( m_allocator, rhs.m_allocator );
14088 std::swap( m_dispatcher, rhs.m_dispatcher );
14089 }
14090
14091 private:
14092 VULKAN_HPP_NAMESPACE::Instance m_instance = {};
14093 VULKAN_HPP_NAMESPACE::SurfaceKHR m_surfaceKHR = {};
14094 const AllocationCallbacks * m_allocator = {};
14095 detail::InstanceDispatcher const * m_dispatcher = nullptr;
14096 };
14097
14098 template <>
14099 struct isVulkanRAIIHandleType<SurfaceKHR>
14100 {
14101 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14102 };
14103
14104 // wrapper class for handle VkSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainKHR.html
14105 class SwapchainKHR
14106 {
14107 public:
14108 using CType = VkSwapchainKHR;
14109 using CppType = VULKAN_HPP_NAMESPACE::SwapchainKHR;
14110
14111 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSwapchainKHR;
14112 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSwapchainKHR;
14113
14114 public:
14115 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14116 SwapchainKHR( Device const & device, SwapchainCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
14117 {
14118 *this = device.createSwapchainKHR( createInfo, allocator );
14119 }
14120 # endif
14121
14122 SwapchainKHR( Device const & device, VkSwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr )
14123 : m_device( device )
14124 , m_swapchainKHR( swapchain )
14125 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14126 , m_dispatcher( device.getDispatcher() )
14127 {
14128 }
14129
14130 SwapchainKHR( std::nullptr_t ) {}
14131
14132 ~SwapchainKHR()
14133 {
14134 clear();
14135 }
14136
14137 SwapchainKHR() = delete;
14138 SwapchainKHR( SwapchainKHR const & ) = delete;
14139
14140 SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
14141 : m_device( exchange( rhs.m_device, {} ) )
14142 , m_swapchainKHR( exchange( rhs.m_swapchainKHR, {} ) )
14143 , m_allocator( exchange( rhs.m_allocator, {} ) )
14144 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14145 {
14146 }
14147
14148 SwapchainKHR & operator=( SwapchainKHR const & ) = delete;
14149
14150 SwapchainKHR & operator=( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
14151 {
14152 if ( this != &rhs )
14153 {
14154 std::swap( m_device, rhs.m_device );
14155 std::swap( m_swapchainKHR, rhs.m_swapchainKHR );
14156 std::swap( m_allocator, rhs.m_allocator );
14157 std::swap( m_dispatcher, rhs.m_dispatcher );
14158 }
14159 return *this;
14160 }
14161
14162 VULKAN_HPP_NAMESPACE::SwapchainKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
14163 {
14164 return m_swapchainKHR;
14165 }
14166
14167 VULKAN_HPP_NAMESPACE::SwapchainKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
14168 {
14169 return std::move( m_swapchainKHR );
14170 }
14171
14172 operator VULKAN_HPP_NAMESPACE::SwapchainKHR() const VULKAN_HPP_NOEXCEPT
14173 {
14174 return m_swapchainKHR;
14175 }
14176
14177 void clear() VULKAN_HPP_NOEXCEPT
14178 {
14179 if ( m_swapchainKHR )
14180 {
14181 getDispatcher()->vkDestroySwapchainKHR(
14182 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14183 }
14184 m_device = nullptr;
14185 m_swapchainKHR = nullptr;
14186 m_allocator = nullptr;
14187 m_dispatcher = nullptr;
14188 }
14189
14190 VULKAN_HPP_NAMESPACE::SwapchainKHR release()
14191 {
14192 m_device = nullptr;
14193 m_allocator = nullptr;
14194 m_dispatcher = nullptr;
14195 return exchange( m_swapchainKHR, nullptr );
14196 }
14197
14198 VULKAN_HPP_NAMESPACE::Device getDevice() const
14199 {
14200 return m_device;
14201 }
14202
14203 detail::DeviceDispatcher const * getDispatcher() const
14204 {
14205 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14206 return m_dispatcher;
14207 }
14208
14209 void swap( SwapchainKHR & rhs ) VULKAN_HPP_NOEXCEPT
14210 {
14211 std::swap( m_device, rhs.m_device );
14212 std::swap( m_swapchainKHR, rhs.m_swapchainKHR );
14213 std::swap( m_allocator, rhs.m_allocator );
14214 std::swap( m_dispatcher, rhs.m_dispatcher );
14215 }
14216
14217 //=== VK_KHR_swapchain ===
14218
14219 // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html
14220 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<VULKAN_HPP_NAMESPACE::Image>>::type getImages() const;
14221
14222 // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html
14223 VULKAN_HPP_NODISCARD ResultValue<uint32_t> acquireNextImage( uint64_t timeout,
14224 VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ),
14225 VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const;
14226
14227 //=== VK_EXT_display_control ===
14228
14229 // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html
14230 VULKAN_HPP_NODISCARD
14231 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
14232 ResultValue<uint64_t>
14233 # else
14234 typename ResultValueType<uint64_t>::type
14235 # endif
14236 getCounterEXT( SurfaceCounterFlagBitsEXT counter ) const;
14237
14238 //=== VK_GOOGLE_display_timing ===
14239
14240 // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see
14241 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html
14242 VULKAN_HPP_NODISCARD typename ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE() const;
14243
14244 // wrapper function for command vkGetPastPresentationTimingGOOGLE, see
14245 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html
14246 VULKAN_HPP_NODISCARD
14247 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
14248 ResultValue<std::vector<PastPresentationTimingGOOGLE>>
14249 # else
14250 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE>>::type
14251 # endif
14252 getPastPresentationTimingGOOGLE() const;
14253
14254 //=== VK_KHR_shared_presentable_image ===
14255
14256 // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html
14257 VULKAN_HPP_NODISCARD Result getStatus() const;
14258
14259 //=== VK_AMD_display_native_hdr ===
14260
14261 // wrapper function for command vkSetLocalDimmingAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLocalDimmingAMD.html
14262 void setLocalDimmingAMD( Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT;
14263
14264 //=== VK_KHR_present_wait ===
14265
14266 // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html
14267 VULKAN_HPP_NODISCARD Result waitForPresent( uint64_t presentId, uint64_t timeout ) const;
14268
14269 # if defined( VK_USE_PLATFORM_WIN32_KHR )
14270 //=== VK_EXT_full_screen_exclusive ===
14271
14272 // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see
14273 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html
14274 typename ResultValueType<void>::type acquireFullScreenExclusiveModeEXT() const;
14275
14276 // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see
14277 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html
14278 typename ResultValueType<void>::type releaseFullScreenExclusiveModeEXT() const;
14279 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
14280
14281 //=== VK_KHR_present_wait2 ===
14282
14283 // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html
14284 VULKAN_HPP_NODISCARD Result waitForPresent2( const PresentWait2InfoKHR & presentWait2Info ) const;
14285
14286 //=== VK_NV_low_latency2 ===
14287
14288 // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html
14289 typename ResultValueType<void>::type setLatencySleepModeNV( const LatencySleepModeInfoNV & sleepModeInfo ) const;
14290
14291 // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html
14292 typename ResultValueType<void>::type latencySleepNV( const LatencySleepInfoNV & sleepInfo ) const;
14293
14294 // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html
14295 void setLatencyMarkerNV( const SetLatencyMarkerInfoNV & latencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT;
14296
14297 // wrapper function for command vkGetLatencyTimingsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetLatencyTimingsNV.html
14298 VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> getLatencyTimingsNV() const;
14299
14300 private:
14301 VULKAN_HPP_NAMESPACE::Device m_device = {};
14302 VULKAN_HPP_NAMESPACE::SwapchainKHR m_swapchainKHR = {};
14303 const AllocationCallbacks * m_allocator = {};
14304 detail::DeviceDispatcher const * m_dispatcher = nullptr;
14305 };
14306
14307 template <>
14308 struct isVulkanRAIIHandleType<SwapchainKHR>
14309 {
14310 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14311 };
14312
14313 class SwapchainKHRs : public std::vector<SwapchainKHR>
14314 {
14315 public:
14316 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14317 SwapchainKHRs( Device const & device, ArrayProxy<SwapchainCreateInfoKHR> const & createInfos, Optional<const AllocationCallbacks> allocator = nullptr )
14318 {
14319 *this = device.createSharedSwapchainsKHR( createInfos, allocator );
14320 }
14321 # endif
14322
14323 SwapchainKHRs( std::nullptr_t ) {}
14324
14325 SwapchainKHRs() = delete;
14326 SwapchainKHRs( SwapchainKHRs const & ) = delete;
14327 SwapchainKHRs( SwapchainKHRs && rhs ) = default;
14328 SwapchainKHRs & operator=( SwapchainKHRs const & ) = delete;
14329 SwapchainKHRs & operator=( SwapchainKHRs && rhs ) = default;
14330
14331 private:
14332 SwapchainKHRs( std::vector<SwapchainKHR> && rhs )
14333 {
14334 std::swap( *this, rhs );
14335 }
14336 };
14337
14338 // wrapper class for handle VkTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorARM.html
14339 class TensorARM
14340 {
14341 public:
14342 using CType = VkTensorARM;
14343 using CppType = VULKAN_HPP_NAMESPACE::TensorARM;
14344
14345 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eTensorARM;
14346 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
14347
14348 public:
14349 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14350 TensorARM( Device const & device, TensorCreateInfoARM const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
14351 {
14352 *this = device.createTensorARM( createInfo, allocator );
14353 }
14354 # endif
14355
14356 TensorARM( Device const & device, VkTensorARM tensor, Optional<const AllocationCallbacks> allocator = nullptr )
14357 : m_device( device )
14358 , m_tensorARM( tensor )
14359 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14360 , m_dispatcher( device.getDispatcher() )
14361 {
14362 }
14363
14364 TensorARM( std::nullptr_t ) {}
14365
14366 ~TensorARM()
14367 {
14368 clear();
14369 }
14370
14371 TensorARM() = delete;
14372 TensorARM( TensorARM const & ) = delete;
14373
14374 TensorARM( TensorARM && rhs ) VULKAN_HPP_NOEXCEPT
14375 : m_device( exchange( rhs.m_device, {} ) )
14376 , m_tensorARM( exchange( rhs.m_tensorARM, {} ) )
14377 , m_allocator( exchange( rhs.m_allocator, {} ) )
14378 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14379 {
14380 }
14381
14382 TensorARM & operator=( TensorARM const & ) = delete;
14383
14384 TensorARM & operator=( TensorARM && rhs ) VULKAN_HPP_NOEXCEPT
14385 {
14386 if ( this != &rhs )
14387 {
14388 std::swap( m_device, rhs.m_device );
14389 std::swap( m_tensorARM, rhs.m_tensorARM );
14390 std::swap( m_allocator, rhs.m_allocator );
14391 std::swap( m_dispatcher, rhs.m_dispatcher );
14392 }
14393 return *this;
14394 }
14395
14396 VULKAN_HPP_NAMESPACE::TensorARM const & operator*() const & VULKAN_HPP_NOEXCEPT
14397 {
14398 return m_tensorARM;
14399 }
14400
14401 VULKAN_HPP_NAMESPACE::TensorARM const && operator*() const && VULKAN_HPP_NOEXCEPT
14402 {
14403 return std::move( m_tensorARM );
14404 }
14405
14406 operator VULKAN_HPP_NAMESPACE::TensorARM() const VULKAN_HPP_NOEXCEPT
14407 {
14408 return m_tensorARM;
14409 }
14410
14411 void clear() VULKAN_HPP_NOEXCEPT
14412 {
14413 if ( m_tensorARM )
14414 {
14415 getDispatcher()->vkDestroyTensorARM(
14416 static_cast<VkDevice>( m_device ), static_cast<VkTensorARM>( m_tensorARM ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14417 }
14418 m_device = nullptr;
14419 m_tensorARM = nullptr;
14420 m_allocator = nullptr;
14421 m_dispatcher = nullptr;
14422 }
14423
14424 VULKAN_HPP_NAMESPACE::TensorARM release()
14425 {
14426 m_device = nullptr;
14427 m_allocator = nullptr;
14428 m_dispatcher = nullptr;
14429 return exchange( m_tensorARM, nullptr );
14430 }
14431
14432 VULKAN_HPP_NAMESPACE::Device getDevice() const
14433 {
14434 return m_device;
14435 }
14436
14437 detail::DeviceDispatcher const * getDispatcher() const
14438 {
14439 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14440 return m_dispatcher;
14441 }
14442
14443 void swap( TensorARM & rhs ) VULKAN_HPP_NOEXCEPT
14444 {
14445 std::swap( m_device, rhs.m_device );
14446 std::swap( m_tensorARM, rhs.m_tensorARM );
14447 std::swap( m_allocator, rhs.m_allocator );
14448 std::swap( m_dispatcher, rhs.m_dispatcher );
14449 }
14450
14451 private:
14452 VULKAN_HPP_NAMESPACE::Device m_device = {};
14453 VULKAN_HPP_NAMESPACE::TensorARM m_tensorARM = {};
14454 const AllocationCallbacks * m_allocator = {};
14455 detail::DeviceDispatcher const * m_dispatcher = nullptr;
14456 };
14457
14458 template <>
14459 struct isVulkanRAIIHandleType<TensorARM>
14460 {
14461 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14462 };
14463
14464 // wrapper class for handle VkTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewARM.html
14465 class TensorViewARM
14466 {
14467 public:
14468 using CType = VkTensorViewARM;
14469 using CppType = VULKAN_HPP_NAMESPACE::TensorViewARM;
14470
14471 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eTensorViewARM;
14472 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
14473
14474 public:
14475 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14476 TensorViewARM( Device const & device, TensorViewCreateInfoARM const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
14477 {
14478 *this = device.createTensorViewARM( createInfo, allocator );
14479 }
14480 # endif
14481
14482 TensorViewARM( Device const & device, VkTensorViewARM tensorView, Optional<const AllocationCallbacks> allocator = nullptr )
14483 : m_device( device )
14484 , m_tensorViewARM( tensorView )
14485 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14486 , m_dispatcher( device.getDispatcher() )
14487 {
14488 }
14489
14490 TensorViewARM( std::nullptr_t ) {}
14491
14492 ~TensorViewARM()
14493 {
14494 clear();
14495 }
14496
14497 TensorViewARM() = delete;
14498 TensorViewARM( TensorViewARM const & ) = delete;
14499
14500 TensorViewARM( TensorViewARM && rhs ) VULKAN_HPP_NOEXCEPT
14501 : m_device( exchange( rhs.m_device, {} ) )
14502 , m_tensorViewARM( exchange( rhs.m_tensorViewARM, {} ) )
14503 , m_allocator( exchange( rhs.m_allocator, {} ) )
14504 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14505 {
14506 }
14507
14508 TensorViewARM & operator=( TensorViewARM const & ) = delete;
14509
14510 TensorViewARM & operator=( TensorViewARM && rhs ) VULKAN_HPP_NOEXCEPT
14511 {
14512 if ( this != &rhs )
14513 {
14514 std::swap( m_device, rhs.m_device );
14515 std::swap( m_tensorViewARM, rhs.m_tensorViewARM );
14516 std::swap( m_allocator, rhs.m_allocator );
14517 std::swap( m_dispatcher, rhs.m_dispatcher );
14518 }
14519 return *this;
14520 }
14521
14522 VULKAN_HPP_NAMESPACE::TensorViewARM const & operator*() const & VULKAN_HPP_NOEXCEPT
14523 {
14524 return m_tensorViewARM;
14525 }
14526
14527 VULKAN_HPP_NAMESPACE::TensorViewARM const && operator*() const && VULKAN_HPP_NOEXCEPT
14528 {
14529 return std::move( m_tensorViewARM );
14530 }
14531
14532 operator VULKAN_HPP_NAMESPACE::TensorViewARM() const VULKAN_HPP_NOEXCEPT
14533 {
14534 return m_tensorViewARM;
14535 }
14536
14537 void clear() VULKAN_HPP_NOEXCEPT
14538 {
14539 if ( m_tensorViewARM )
14540 {
14541 getDispatcher()->vkDestroyTensorViewARM( static_cast<VkDevice>( m_device ),
14542 static_cast<VkTensorViewARM>( m_tensorViewARM ),
14543 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14544 }
14545 m_device = nullptr;
14546 m_tensorViewARM = nullptr;
14547 m_allocator = nullptr;
14548 m_dispatcher = nullptr;
14549 }
14550
14551 VULKAN_HPP_NAMESPACE::TensorViewARM release()
14552 {
14553 m_device = nullptr;
14554 m_allocator = nullptr;
14555 m_dispatcher = nullptr;
14556 return exchange( m_tensorViewARM, nullptr );
14557 }
14558
14559 VULKAN_HPP_NAMESPACE::Device getDevice() const
14560 {
14561 return m_device;
14562 }
14563
14564 detail::DeviceDispatcher const * getDispatcher() const
14565 {
14566 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14567 return m_dispatcher;
14568 }
14569
14570 void swap( TensorViewARM & rhs ) VULKAN_HPP_NOEXCEPT
14571 {
14572 std::swap( m_device, rhs.m_device );
14573 std::swap( m_tensorViewARM, rhs.m_tensorViewARM );
14574 std::swap( m_allocator, rhs.m_allocator );
14575 std::swap( m_dispatcher, rhs.m_dispatcher );
14576 }
14577
14578 private:
14579 VULKAN_HPP_NAMESPACE::Device m_device = {};
14580 VULKAN_HPP_NAMESPACE::TensorViewARM m_tensorViewARM = {};
14581 const AllocationCallbacks * m_allocator = {};
14582 detail::DeviceDispatcher const * m_dispatcher = nullptr;
14583 };
14584
14585 template <>
14586 struct isVulkanRAIIHandleType<TensorViewARM>
14587 {
14588 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14589 };
14590
14591 // wrapper class for handle VkValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheEXT.html
14592 class ValidationCacheEXT
14593 {
14594 public:
14595 using CType = VkValidationCacheEXT;
14596 using CppType = VULKAN_HPP_NAMESPACE::ValidationCacheEXT;
14597
14598 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eValidationCacheEXT;
14599 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eValidationCacheEXT;
14600
14601 public:
14602 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14603 ValidationCacheEXT( Device const & device, ValidationCacheCreateInfoEXT const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
14604 {
14605 *this = device.createValidationCacheEXT( createInfo, allocator );
14606 }
14607 # endif
14608
14609 ValidationCacheEXT( Device const & device, VkValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr )
14610 : m_device( device )
14611 , m_validationCacheEXT( validationCache )
14612 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14613 , m_dispatcher( device.getDispatcher() )
14614 {
14615 }
14616
14617 ValidationCacheEXT( std::nullptr_t ) {}
14618
14619 ~ValidationCacheEXT()
14620 {
14621 clear();
14622 }
14623
14624 ValidationCacheEXT() = delete;
14625 ValidationCacheEXT( ValidationCacheEXT const & ) = delete;
14626
14627 ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
14628 : m_device( exchange( rhs.m_device, {} ) )
14629 , m_validationCacheEXT( exchange( rhs.m_validationCacheEXT, {} ) )
14630 , m_allocator( exchange( rhs.m_allocator, {} ) )
14631 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14632 {
14633 }
14634
14635 ValidationCacheEXT & operator=( ValidationCacheEXT const & ) = delete;
14636
14637 ValidationCacheEXT & operator=( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
14638 {
14639 if ( this != &rhs )
14640 {
14641 std::swap( m_device, rhs.m_device );
14642 std::swap( m_validationCacheEXT, rhs.m_validationCacheEXT );
14643 std::swap( m_allocator, rhs.m_allocator );
14644 std::swap( m_dispatcher, rhs.m_dispatcher );
14645 }
14646 return *this;
14647 }
14648
14649 VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & operator*() const & VULKAN_HPP_NOEXCEPT
14650 {
14651 return m_validationCacheEXT;
14652 }
14653
14654 VULKAN_HPP_NAMESPACE::ValidationCacheEXT const && operator*() const && VULKAN_HPP_NOEXCEPT
14655 {
14656 return std::move( m_validationCacheEXT );
14657 }
14658
14659 operator VULKAN_HPP_NAMESPACE::ValidationCacheEXT() const VULKAN_HPP_NOEXCEPT
14660 {
14661 return m_validationCacheEXT;
14662 }
14663
14664 void clear() VULKAN_HPP_NOEXCEPT
14665 {
14666 if ( m_validationCacheEXT )
14667 {
14668 getDispatcher()->vkDestroyValidationCacheEXT( static_cast<VkDevice>( m_device ),
14669 static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
14670 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14671 }
14672 m_device = nullptr;
14673 m_validationCacheEXT = nullptr;
14674 m_allocator = nullptr;
14675 m_dispatcher = nullptr;
14676 }
14677
14678 VULKAN_HPP_NAMESPACE::ValidationCacheEXT release()
14679 {
14680 m_device = nullptr;
14681 m_allocator = nullptr;
14682 m_dispatcher = nullptr;
14683 return exchange( m_validationCacheEXT, nullptr );
14684 }
14685
14686 VULKAN_HPP_NAMESPACE::Device getDevice() const
14687 {
14688 return m_device;
14689 }
14690
14691 detail::DeviceDispatcher const * getDispatcher() const
14692 {
14693 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14694 return m_dispatcher;
14695 }
14696
14697 void swap( ValidationCacheEXT & rhs ) VULKAN_HPP_NOEXCEPT
14698 {
14699 std::swap( m_device, rhs.m_device );
14700 std::swap( m_validationCacheEXT, rhs.m_validationCacheEXT );
14701 std::swap( m_allocator, rhs.m_allocator );
14702 std::swap( m_dispatcher, rhs.m_dispatcher );
14703 }
14704
14705 //=== VK_EXT_validation_cache ===
14706
14707 // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html
14708 typename ResultValueType<void>::type merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const;
14709
14710 // wrapper function for command vkGetValidationCacheDataEXT, see
14711 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html
14712 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<uint8_t>>::type getData() const;
14713
14714 private:
14715 VULKAN_HPP_NAMESPACE::Device m_device = {};
14716 VULKAN_HPP_NAMESPACE::ValidationCacheEXT m_validationCacheEXT = {};
14717 const AllocationCallbacks * m_allocator = {};
14718 detail::DeviceDispatcher const * m_dispatcher = nullptr;
14719 };
14720
14721 template <>
14722 struct isVulkanRAIIHandleType<ValidationCacheEXT>
14723 {
14724 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14725 };
14726
14727 // wrapper class for handle VkVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionKHR.html
14728 class VideoSessionKHR
14729 {
14730 public:
14731 using CType = VkVideoSessionKHR;
14732 using CppType = VULKAN_HPP_NAMESPACE::VideoSessionKHR;
14733
14734 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eVideoSessionKHR;
14735 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
14736
14737 public:
14738 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14739 VideoSessionKHR( Device const & device, VideoSessionCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator = nullptr )
14740 {
14741 *this = device.createVideoSessionKHR( createInfo, allocator );
14742 }
14743 # endif
14744
14745 VideoSessionKHR( Device const & device, VkVideoSessionKHR videoSession, Optional<const AllocationCallbacks> allocator = nullptr )
14746 : m_device( device )
14747 , m_videoSessionKHR( videoSession )
14748 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14749 , m_dispatcher( device.getDispatcher() )
14750 {
14751 }
14752
14753 VideoSessionKHR( std::nullptr_t ) {}
14754
14755 ~VideoSessionKHR()
14756 {
14757 clear();
14758 }
14759
14760 VideoSessionKHR() = delete;
14761 VideoSessionKHR( VideoSessionKHR const & ) = delete;
14762
14763 VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
14764 : m_device( exchange( rhs.m_device, {} ) )
14765 , m_videoSessionKHR( exchange( rhs.m_videoSessionKHR, {} ) )
14766 , m_allocator( exchange( rhs.m_allocator, {} ) )
14767 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14768 {
14769 }
14770
14771 VideoSessionKHR & operator=( VideoSessionKHR const & ) = delete;
14772
14773 VideoSessionKHR & operator=( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
14774 {
14775 if ( this != &rhs )
14776 {
14777 std::swap( m_device, rhs.m_device );
14778 std::swap( m_videoSessionKHR, rhs.m_videoSessionKHR );
14779 std::swap( m_allocator, rhs.m_allocator );
14780 std::swap( m_dispatcher, rhs.m_dispatcher );
14781 }
14782 return *this;
14783 }
14784
14785 VULKAN_HPP_NAMESPACE::VideoSessionKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
14786 {
14787 return m_videoSessionKHR;
14788 }
14789
14790 VULKAN_HPP_NAMESPACE::VideoSessionKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
14791 {
14792 return std::move( m_videoSessionKHR );
14793 }
14794
14795 operator VULKAN_HPP_NAMESPACE::VideoSessionKHR() const VULKAN_HPP_NOEXCEPT
14796 {
14797 return m_videoSessionKHR;
14798 }
14799
14800 void clear() VULKAN_HPP_NOEXCEPT
14801 {
14802 if ( m_videoSessionKHR )
14803 {
14804 getDispatcher()->vkDestroyVideoSessionKHR( static_cast<VkDevice>( m_device ),
14805 static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
14806 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14807 }
14808 m_device = nullptr;
14809 m_videoSessionKHR = nullptr;
14810 m_allocator = nullptr;
14811 m_dispatcher = nullptr;
14812 }
14813
14814 VULKAN_HPP_NAMESPACE::VideoSessionKHR release()
14815 {
14816 m_device = nullptr;
14817 m_allocator = nullptr;
14818 m_dispatcher = nullptr;
14819 return exchange( m_videoSessionKHR, nullptr );
14820 }
14821
14822 VULKAN_HPP_NAMESPACE::Device getDevice() const
14823 {
14824 return m_device;
14825 }
14826
14827 detail::DeviceDispatcher const * getDispatcher() const
14828 {
14829 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14830 return m_dispatcher;
14831 }
14832
14833 void swap( VideoSessionKHR & rhs ) VULKAN_HPP_NOEXCEPT
14834 {
14835 std::swap( m_device, rhs.m_device );
14836 std::swap( m_videoSessionKHR, rhs.m_videoSessionKHR );
14837 std::swap( m_allocator, rhs.m_allocator );
14838 std::swap( m_dispatcher, rhs.m_dispatcher );
14839 }
14840
14841 //=== VK_KHR_video_queue ===
14842
14843 // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see
14844 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html
14845 VULKAN_HPP_NODISCARD typename ResultValueType<std::vector<VideoSessionMemoryRequirementsKHR>>::type getMemoryRequirements() const;
14846
14847 // wrapper function for command vkBindVideoSessionMemoryKHR, see
14848 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html
14849 typename ResultValueType<void>::type bindMemory( ArrayProxy<const BindVideoSessionMemoryInfoKHR> const & bindSessionMemoryInfos ) const;
14850
14851 private:
14852 VULKAN_HPP_NAMESPACE::Device m_device = {};
14853 VULKAN_HPP_NAMESPACE::VideoSessionKHR m_videoSessionKHR = {};
14854 const AllocationCallbacks * m_allocator = {};
14855 detail::DeviceDispatcher const * m_dispatcher = nullptr;
14856 };
14857
14858 template <>
14859 struct isVulkanRAIIHandleType<VideoSessionKHR>
14860 {
14861 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14862 };
14863
14864 // wrapper class for handle VkVideoSessionParametersKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersKHR.html
14865 class VideoSessionParametersKHR
14866 {
14867 public:
14868 using CType = VkVideoSessionParametersKHR;
14869 using CppType = VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR;
14870
14871 static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eVideoSessionParametersKHR;
14872 static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown;
14873
14874 public:
14875 # if !defined( VULKAN_HPP_NO_EXCEPTIONS )
14876 VideoSessionParametersKHR( Device const & device,
14877 VideoSessionParametersCreateInfoKHR const & createInfo,
14878 Optional<const AllocationCallbacks> allocator = nullptr )
14879 {
14880 *this = device.createVideoSessionParametersKHR( createInfo, allocator );
14881 }
14882 # endif
14883
14884 VideoSessionParametersKHR( Device const & device,
14885 VkVideoSessionParametersKHR videoSessionParameters,
14886 Optional<const AllocationCallbacks> allocator = nullptr )
14887 : m_device( device )
14888 , m_videoSessionParametersKHR( videoSessionParameters )
14889 , m_allocator( static_cast<const AllocationCallbacks *>( allocator ) )
14890 , m_dispatcher( device.getDispatcher() )
14891 {
14892 }
14893
14894 VideoSessionParametersKHR( std::nullptr_t ) {}
14895
14896 ~VideoSessionParametersKHR()
14897 {
14898 clear();
14899 }
14900
14901 VideoSessionParametersKHR() = delete;
14902 VideoSessionParametersKHR( VideoSessionParametersKHR const & ) = delete;
14903
14904 VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
14905 : m_device( exchange( rhs.m_device, {} ) )
14906 , m_videoSessionParametersKHR( exchange( rhs.m_videoSessionParametersKHR, {} ) )
14907 , m_allocator( exchange( rhs.m_allocator, {} ) )
14908 , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) )
14909 {
14910 }
14911
14912 VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & ) = delete;
14913
14914 VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
14915 {
14916 if ( this != &rhs )
14917 {
14918 std::swap( m_device, rhs.m_device );
14919 std::swap( m_videoSessionParametersKHR, rhs.m_videoSessionParametersKHR );
14920 std::swap( m_allocator, rhs.m_allocator );
14921 std::swap( m_dispatcher, rhs.m_dispatcher );
14922 }
14923 return *this;
14924 }
14925
14926 VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & operator*() const & VULKAN_HPP_NOEXCEPT
14927 {
14928 return m_videoSessionParametersKHR;
14929 }
14930
14931 VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const && operator*() const && VULKAN_HPP_NOEXCEPT
14932 {
14933 return std::move( m_videoSessionParametersKHR );
14934 }
14935
14936 operator VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR() const VULKAN_HPP_NOEXCEPT
14937 {
14938 return m_videoSessionParametersKHR;
14939 }
14940
14941 void clear() VULKAN_HPP_NOEXCEPT
14942 {
14943 if ( m_videoSessionParametersKHR )
14944 {
14945 getDispatcher()->vkDestroyVideoSessionParametersKHR( static_cast<VkDevice>( m_device ),
14946 static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ),
14947 reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
14948 }
14949 m_device = nullptr;
14950 m_videoSessionParametersKHR = nullptr;
14951 m_allocator = nullptr;
14952 m_dispatcher = nullptr;
14953 }
14954
14955 VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR release()
14956 {
14957 m_device = nullptr;
14958 m_allocator = nullptr;
14959 m_dispatcher = nullptr;
14960 return exchange( m_videoSessionParametersKHR, nullptr );
14961 }
14962
14963 VULKAN_HPP_NAMESPACE::Device getDevice() const
14964 {
14965 return m_device;
14966 }
14967
14968 detail::DeviceDispatcher const * getDispatcher() const
14969 {
14970 VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
14971 return m_dispatcher;
14972 }
14973
14974 void swap( VideoSessionParametersKHR & rhs ) VULKAN_HPP_NOEXCEPT
14975 {
14976 std::swap( m_device, rhs.m_device );
14977 std::swap( m_videoSessionParametersKHR, rhs.m_videoSessionParametersKHR );
14978 std::swap( m_allocator, rhs.m_allocator );
14979 std::swap( m_dispatcher, rhs.m_dispatcher );
14980 }
14981
14982 //=== VK_KHR_video_queue ===
14983
14984 // wrapper function for command vkUpdateVideoSessionParametersKHR, see
14985 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html
14986 typename ResultValueType<void>::type update( const VideoSessionParametersUpdateInfoKHR & updateInfo ) const;
14987
14988 private:
14989 VULKAN_HPP_NAMESPACE::Device m_device = {};
14990 VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR m_videoSessionParametersKHR = {};
14991 const AllocationCallbacks * m_allocator = {};
14992 detail::DeviceDispatcher const * m_dispatcher = nullptr;
14993 };
14994
14995 template <>
14996 struct isVulkanRAIIHandleType<VideoSessionParametersKHR>
14997 {
14998 static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true;
14999 };
15000
15001 // operators to compare VULKAN_HPP_NAMESPACE::raii-handles
15002 # if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15003 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15004 auto operator<=>( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT
15005 {
15006 return *a <=> *b;
15007 }
15008 # else
15009 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15010 bool operator<( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT
15011 {
15012 return *a < *b;
15013 }
15014 # endif
15015
15016 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15017 bool operator==( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT
15018 {
15019 return *a == *b;
15020 }
15021
15022 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15023 bool operator!=( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT
15024 {
15025 return *a != *b;
15026 }
15027
15028 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15029 bool operator==( const T & v, std::nullptr_t ) VULKAN_HPP_NOEXCEPT
15030 {
15031 return !*v;
15032 }
15033
15034 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15035 bool operator==( std::nullptr_t, const T & v ) VULKAN_HPP_NOEXCEPT
15036 {
15037 return !*v;
15038 }
15039
15040 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15041 bool operator!=( const T & v, std::nullptr_t ) VULKAN_HPP_NOEXCEPT
15042 {
15043 return *v;
15044 }
15045
15046 template <typename T, typename std::enable_if<isVulkanRAIIHandleType<T>::value, bool>::type = 0>
15047 bool operator!=( std::nullptr_t, const T & v ) VULKAN_HPP_NOEXCEPT
15048 {
15049 return *v;
15050 }
15051
15052 //===========================
15053 //=== COMMAND Definitions ===
15054 //===========================
15055
15056 //=== VK_VERSION_1_0 ===
15057
15058 // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html
15059 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Instance>::type
15060 Context::createInstance( InstanceCreateInfo const & createInfo,
15061 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15062 {
15063 VULKAN_HPP_NAMESPACE::Instance instance;
15064 Result result = static_cast<Result>( getDispatcher()->vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo *>( &createInfo ),
15065 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15066 reinterpret_cast<VkInstance *>( &instance ) ) );
15067 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::createInstance" );
15068 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Instance( *this, *reinterpret_cast<VkInstance *>( &instance ), allocator ) );
15069 }
15070
15071 // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html
15072 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice>>::type Instance::enumeratePhysicalDevices() const
15073 {
15074 std::vector<VULKAN_HPP_NAMESPACE::PhysicalDevice> physicalDevices;
15075 uint32_t physicalDeviceCount;
15076 Result result;
15077 do
15078 {
15079 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDevices( static_cast<VkInstance>( m_instance ), &physicalDeviceCount, nullptr ) );
15080 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
15081 {
15082 physicalDevices.resize( physicalDeviceCount );
15083 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDevices(
15084 static_cast<VkInstance>( m_instance ), &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice *>( physicalDevices.data() ) ) );
15085 }
15086 } while ( result == Result::eIncomplete );
15087 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::enumeratePhysicalDevices" );
15088 std::vector<PhysicalDevice> physicalDevicesRAII;
15089 if ( result == Result::eSuccess )
15090 {
15091 physicalDevicesRAII.reserve( physicalDevices.size() );
15092 for ( auto & physicalDevice : physicalDevices )
15093 {
15094 physicalDevicesRAII.emplace_back( *this, *reinterpret_cast<VkPhysicalDevice *>( &physicalDevice ) );
15095 }
15096 }
15097 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( physicalDevicesRAII ) );
15098 }
15099
15100 // wrapper function for command vkGetPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html
15101 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const VULKAN_HPP_NOEXCEPT
15102 {
15103 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures && "Function <vkGetPhysicalDeviceFeatures> requires <VK_VERSION_1_0>" );
15104
15105 PhysicalDeviceFeatures features;
15106 getDispatcher()->vkGetPhysicalDeviceFeatures( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15107 reinterpret_cast<VkPhysicalDeviceFeatures *>( &features ) );
15108
15109 return features;
15110 }
15111
15112 // wrapper function for command vkGetPhysicalDeviceFormatProperties, see
15113 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html
15114 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const VULKAN_HPP_NOEXCEPT
15115 {
15116 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties && "Function <vkGetPhysicalDeviceFormatProperties> requires <VK_VERSION_1_0>" );
15117
15118 FormatProperties formatProperties;
15119 getDispatcher()->vkGetPhysicalDeviceFormatProperties(
15120 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties *>( &formatProperties ) );
15121
15122 return formatProperties;
15123 }
15124
15125 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see
15126 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html
15127 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ImageFormatProperties>::type
15128 PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
15129 {
15130 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties &&
15131 "Function <vkGetPhysicalDeviceImageFormatProperties> requires <VK_VERSION_1_0>" );
15132
15133 ImageFormatProperties imageFormatProperties;
15134 Result result = static_cast<Result>(
15135 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15136 static_cast<VkFormat>( format ),
15137 static_cast<VkImageType>( type ),
15138 static_cast<VkImageTiling>( tiling ),
15139 static_cast<VkImageUsageFlags>( usage ),
15140 static_cast<VkImageCreateFlags>( flags ),
15141 reinterpret_cast<VkImageFormatProperties *>( &imageFormatProperties ) ) );
15142 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" );
15143
15144 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) );
15145 }
15146
15147 // wrapper function for command vkGetPhysicalDeviceProperties, see
15148 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html
15149 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const VULKAN_HPP_NOEXCEPT
15150 {
15151 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties && "Function <vkGetPhysicalDeviceProperties> requires <VK_VERSION_1_0>" );
15152
15153 PhysicalDeviceProperties properties;
15154 getDispatcher()->vkGetPhysicalDeviceProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15155 reinterpret_cast<VkPhysicalDeviceProperties *>( &properties ) );
15156
15157 return properties;
15158 }
15159
15160 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see
15161 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html
15162 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<QueueFamilyProperties> PhysicalDevice::getQueueFamilyProperties() const
15163 {
15164 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties &&
15165 "Function <vkGetPhysicalDeviceQueueFamilyProperties> requires <VK_VERSION_1_0>" );
15166
15167 std::vector<QueueFamilyProperties> queueFamilyProperties;
15168 uint32_t queueFamilyPropertyCount;
15169 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
15170 queueFamilyProperties.resize( queueFamilyPropertyCount );
15171 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15172 &queueFamilyPropertyCount,
15173 reinterpret_cast<VkQueueFamilyProperties *>( queueFamilyProperties.data() ) );
15174
15175 VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
15176 if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
15177 {
15178 queueFamilyProperties.resize( queueFamilyPropertyCount );
15179 }
15180 return queueFamilyProperties;
15181 }
15182
15183 // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see
15184 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html
15185 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const VULKAN_HPP_NOEXCEPT
15186 {
15187 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties && "Function <vkGetPhysicalDeviceMemoryProperties> requires <VK_VERSION_1_0>" );
15188
15189 PhysicalDeviceMemoryProperties memoryProperties;
15190 getDispatcher()->vkGetPhysicalDeviceMemoryProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15191 reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( &memoryProperties ) );
15192
15193 return memoryProperties;
15194 }
15195
15196 // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html
15197 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_VoidFunction Instance::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
15198 {
15199 VULKAN_HPP_ASSERT( getDispatcher()->vkGetInstanceProcAddr && "Function <vkGetInstanceProcAddr> requires <VK_VERSION_1_0>" );
15200
15201 PFN_vkVoidFunction result = getDispatcher()->vkGetInstanceProcAddr( static_cast<VkInstance>( m_instance ), name.c_str() );
15202
15203 return result;
15204 }
15205
15206 // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html
15207 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_VoidFunction Device::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
15208 {
15209 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceProcAddr && "Function <vkGetDeviceProcAddr> requires <VK_VERSION_1_0>" );
15210
15211 PFN_vkVoidFunction result = getDispatcher()->vkGetDeviceProcAddr( static_cast<VkDevice>( m_device ), name.c_str() );
15212
15213 return result;
15214 }
15215
15216 // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html
15217 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Device>::type
15218 PhysicalDevice::createDevice( DeviceCreateInfo const & createInfo,
15219 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15220 {
15221 VULKAN_HPP_NAMESPACE::Device device;
15222 Result result = static_cast<Result>( getDispatcher()->vkCreateDevice( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15223 reinterpret_cast<const VkDeviceCreateInfo *>( &createInfo ),
15224 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15225 reinterpret_cast<VkDevice *>( &device ) ) );
15226 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::createDevice" );
15227 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Device( *this, *reinterpret_cast<VkDevice *>( &device ), allocator ) );
15228 }
15229
15230 // wrapper function for command vkEnumerateInstanceExtensionProperties, see
15231 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html
15232 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties>>::type
15233 Context::enumerateInstanceExtensionProperties( Optional<const std::string> layerName ) const
15234 {
15235 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceExtensionProperties &&
15236 "Function <vkEnumerateInstanceExtensionProperties> requires <VK_VERSION_1_0>" );
15237
15238 std::vector<ExtensionProperties> properties;
15239 uint32_t propertyCount;
15240 Result result;
15241 do
15242 {
15243 result =
15244 static_cast<Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
15245 if ( ( result == Result::eSuccess ) && propertyCount )
15246 {
15247 properties.resize( propertyCount );
15248 result = static_cast<Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties(
15249 layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
15250 }
15251 } while ( result == Result::eIncomplete );
15252 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::enumerateInstanceExtensionProperties" );
15253 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15254 if ( propertyCount < properties.size() )
15255 {
15256 properties.resize( propertyCount );
15257 }
15258 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
15259 }
15260
15261 // wrapper function for command vkEnumerateDeviceExtensionProperties, see
15262 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html
15263 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties>>::type
15264 PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
15265 {
15266 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateDeviceExtensionProperties && "Function <vkEnumerateDeviceExtensionProperties> requires <VK_VERSION_1_0>" );
15267
15268 std::vector<ExtensionProperties> properties;
15269 uint32_t propertyCount;
15270 Result result;
15271 do
15272 {
15273 result = static_cast<Result>( getDispatcher()->vkEnumerateDeviceExtensionProperties(
15274 static_cast<VkPhysicalDevice>( m_physicalDevice ), layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
15275 if ( ( result == Result::eSuccess ) && propertyCount )
15276 {
15277 properties.resize( propertyCount );
15278 result =
15279 static_cast<Result>( getDispatcher()->vkEnumerateDeviceExtensionProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15280 layerName ? layerName->c_str() : nullptr,
15281 &propertyCount,
15282 reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
15283 }
15284 } while ( result == Result::eIncomplete );
15285 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" );
15286 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15287 if ( propertyCount < properties.size() )
15288 {
15289 properties.resize( propertyCount );
15290 }
15291 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
15292 }
15293
15294 // wrapper function for command vkEnumerateInstanceLayerProperties, see
15295 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html
15296 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties>>::type Context::enumerateInstanceLayerProperties() const
15297 {
15298 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceLayerProperties && "Function <vkEnumerateInstanceLayerProperties> requires <VK_VERSION_1_0>" );
15299
15300 std::vector<LayerProperties> properties;
15301 uint32_t propertyCount;
15302 Result result;
15303 do
15304 {
15305 result = static_cast<Result>( getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
15306 if ( ( result == Result::eSuccess ) && propertyCount )
15307 {
15308 properties.resize( propertyCount );
15309 result = static_cast<Result>(
15310 getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
15311 }
15312 } while ( result == Result::eIncomplete );
15313 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::enumerateInstanceLayerProperties" );
15314 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15315 if ( propertyCount < properties.size() )
15316 {
15317 properties.resize( propertyCount );
15318 }
15319 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
15320 }
15321
15322 // wrapper function for command vkEnumerateDeviceLayerProperties, see
15323 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html
15324 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
15325 {
15326 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateDeviceLayerProperties && "Function <vkEnumerateDeviceLayerProperties> requires <VK_VERSION_1_0>" );
15327
15328 std::vector<LayerProperties> properties;
15329 uint32_t propertyCount;
15330 Result result;
15331 do
15332 {
15333 result = static_cast<Result>(
15334 getDispatcher()->vkEnumerateDeviceLayerProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
15335 if ( ( result == Result::eSuccess ) && propertyCount )
15336 {
15337 properties.resize( propertyCount );
15338 result = static_cast<Result>( getDispatcher()->vkEnumerateDeviceLayerProperties(
15339 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
15340 }
15341 } while ( result == Result::eIncomplete );
15342 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" );
15343 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15344 if ( propertyCount < properties.size() )
15345 {
15346 properties.resize( propertyCount );
15347 }
15348 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
15349 }
15350
15351 // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html
15352 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15353 {
15354 VULKAN_HPP_NAMESPACE::Queue queue;
15355 getDispatcher()->vkGetDeviceQueue( static_cast<VkDevice>( m_device ), queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue *>( &queue ) );
15356
15357 return Queue( *this, *reinterpret_cast<VkQueue *>( &queue ) );
15358 }
15359
15360 // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html
15361 VULKAN_HPP_INLINE typename ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> const & submits,
15362 VULKAN_HPP_NAMESPACE::Fence fence ) const
15363 {
15364 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit && "Function <vkQueueSubmit> requires <VK_VERSION_1_0>" );
15365
15366 Result result = static_cast<Result>( getDispatcher()->vkQueueSubmit(
15367 static_cast<VkQueue>( m_queue ), submits.size(), reinterpret_cast<const VkSubmitInfo *>( submits.data() ), static_cast<VkFence>( fence ) ) );
15368 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::submit" );
15369
15370 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15371 }
15372
15373 // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html
15374 VULKAN_HPP_INLINE typename ResultValueType<void>::type Queue::waitIdle() const
15375 {
15376 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueWaitIdle && "Function <vkQueueWaitIdle> requires <VK_VERSION_1_0>" );
15377
15378 Result result = static_cast<Result>( getDispatcher()->vkQueueWaitIdle( static_cast<VkQueue>( m_queue ) ) );
15379 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::waitIdle" );
15380
15381 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15382 }
15383
15384 // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html
15385 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::waitIdle() const
15386 {
15387 VULKAN_HPP_ASSERT( getDispatcher()->vkDeviceWaitIdle && "Function <vkDeviceWaitIdle> requires <VK_VERSION_1_0>" );
15388
15389 Result result = static_cast<Result>( getDispatcher()->vkDeviceWaitIdle( static_cast<VkDevice>( m_device ) ) );
15390 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitIdle" );
15391
15392 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15393 }
15394
15395 // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html
15396 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DeviceMemory>::type
15397 Device::allocateMemory( MemoryAllocateInfo const & allocateInfo,
15398 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15399 {
15400 VULKAN_HPP_NAMESPACE::DeviceMemory memory;
15401 Result result = static_cast<Result>( getDispatcher()->vkAllocateMemory( static_cast<VkDevice>( m_device ),
15402 reinterpret_cast<const VkMemoryAllocateInfo *>( &allocateInfo ),
15403 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15404 reinterpret_cast<VkDeviceMemory *>( &memory ) ) );
15405 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::allocateMemory" );
15406 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DeviceMemory( *this, *reinterpret_cast<VkDeviceMemory *>( &memory ), allocator ) );
15407 }
15408
15409 // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html
15410 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<void *>::type
15411 DeviceMemory::mapMemory( DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
15412 {
15413 VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory && "Function <vkMapMemory> requires <VK_VERSION_1_0>" );
15414
15415 void * pData;
15416 Result result = static_cast<Result>( getDispatcher()->vkMapMemory( static_cast<VkDevice>( m_device ),
15417 static_cast<VkDeviceMemory>( m_deviceMemory ),
15418 static_cast<VkDeviceSize>( offset ),
15419 static_cast<VkDeviceSize>( size ),
15420 static_cast<VkMemoryMapFlags>( flags ),
15421 &pData ) );
15422 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeviceMemory::mapMemory" );
15423
15424 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pData ) );
15425 }
15426
15427 // wrapper function for command vkUnmapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory.html
15428 VULKAN_HPP_INLINE void DeviceMemory::unmapMemory() const VULKAN_HPP_NOEXCEPT
15429 {
15430 VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory && "Function <vkUnmapMemory> requires <VK_VERSION_1_0>" );
15431
15432 getDispatcher()->vkUnmapMemory( static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_deviceMemory ) );
15433 }
15434
15435 // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html
15436 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> const & memoryRanges ) const
15437 {
15438 VULKAN_HPP_ASSERT( getDispatcher()->vkFlushMappedMemoryRanges && "Function <vkFlushMappedMemoryRanges> requires <VK_VERSION_1_0>" );
15439
15440 Result result = static_cast<Result>( getDispatcher()->vkFlushMappedMemoryRanges(
15441 static_cast<VkDevice>( m_device ), memoryRanges.size(), reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
15442 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" );
15443
15444 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15445 }
15446
15447 // wrapper function for command vkInvalidateMappedMemoryRanges, see
15448 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html
15449 VULKAN_HPP_INLINE typename ResultValueType<void>::type
15450 Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> const & memoryRanges ) const
15451 {
15452 VULKAN_HPP_ASSERT( getDispatcher()->vkInvalidateMappedMemoryRanges && "Function <vkInvalidateMappedMemoryRanges> requires <VK_VERSION_1_0>" );
15453
15454 Result result = static_cast<Result>( getDispatcher()->vkInvalidateMappedMemoryRanges(
15455 static_cast<VkDevice>( m_device ), memoryRanges.size(), reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
15456 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" );
15457
15458 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15459 }
15460
15461 // wrapper function for command vkGetDeviceMemoryCommitment, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html
15462 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize DeviceMemory::getCommitment() const VULKAN_HPP_NOEXCEPT
15463 {
15464 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryCommitment && "Function <vkGetDeviceMemoryCommitment> requires <VK_VERSION_1_0>" );
15465
15466 DeviceSize committedMemoryInBytes;
15467 getDispatcher()->vkGetDeviceMemoryCommitment(
15468 static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_deviceMemory ), reinterpret_cast<VkDeviceSize *>( &committedMemoryInBytes ) );
15469
15470 return committedMemoryInBytes;
15471 }
15472
15473 // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html
15474 VULKAN_HPP_INLINE typename ResultValueType<void>::type Buffer::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const
15475 {
15476 VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory && "Function <vkBindBufferMemory> requires <VK_VERSION_1_0>" );
15477
15478 Result result = static_cast<Result>( getDispatcher()->vkBindBufferMemory( static_cast<VkDevice>( m_device ),
15479 static_cast<VkBuffer>( m_buffer ),
15480 static_cast<VkDeviceMemory>( memory ),
15481 static_cast<VkDeviceSize>( memoryOffset ) ) );
15482 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Buffer::bindMemory" );
15483
15484 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15485 }
15486
15487 // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html
15488 VULKAN_HPP_INLINE typename ResultValueType<void>::type Image::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const
15489 {
15490 VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory && "Function <vkBindImageMemory> requires <VK_VERSION_1_0>" );
15491
15492 Result result = static_cast<Result>( getDispatcher()->vkBindImageMemory( static_cast<VkDevice>( m_device ),
15493 static_cast<VkImage>( m_image ),
15494 static_cast<VkDeviceMemory>( memory ),
15495 static_cast<VkDeviceSize>( memoryOffset ) ) );
15496 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Image::bindMemory" );
15497
15498 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15499 }
15500
15501 // wrapper function for command vkGetBufferMemoryRequirements, see
15502 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html
15503 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements Buffer::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
15504 {
15505 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements && "Function <vkGetBufferMemoryRequirements> requires <VK_VERSION_1_0>" );
15506
15507 MemoryRequirements memoryRequirements;
15508 getDispatcher()->vkGetBufferMemoryRequirements(
15509 static_cast<VkDevice>( m_device ), static_cast<VkBuffer>( m_buffer ), reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
15510
15511 return memoryRequirements;
15512 }
15513
15514 // wrapper function for command vkGetImageMemoryRequirements, see
15515 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html
15516 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements Image::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
15517 {
15518 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements && "Function <vkGetImageMemoryRequirements> requires <VK_VERSION_1_0>" );
15519
15520 MemoryRequirements memoryRequirements;
15521 getDispatcher()->vkGetImageMemoryRequirements(
15522 static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
15523
15524 return memoryRequirements;
15525 }
15526
15527 // wrapper function for command vkGetImageSparseMemoryRequirements, see
15528 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html
15529 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements> Image::getSparseMemoryRequirements() const
15530 {
15531 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements && "Function <vkGetImageSparseMemoryRequirements> requires <VK_VERSION_1_0>" );
15532
15533 std::vector<SparseImageMemoryRequirements> sparseMemoryRequirements;
15534 uint32_t sparseMemoryRequirementCount;
15535 getDispatcher()->vkGetImageSparseMemoryRequirements(
15536 static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), &sparseMemoryRequirementCount, nullptr );
15537 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
15538 getDispatcher()->vkGetImageSparseMemoryRequirements( static_cast<VkDevice>( m_device ),
15539 static_cast<VkImage>( m_image ),
15540 &sparseMemoryRequirementCount,
15541 reinterpret_cast<VkSparseImageMemoryRequirements *>( sparseMemoryRequirements.data() ) );
15542
15543 VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
15544 if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
15545 {
15546 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
15547 }
15548 return sparseMemoryRequirements;
15549 }
15550
15551 // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see
15552 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html
15553 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties> PhysicalDevice::getSparseImageFormatProperties(
15554 Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
15555 {
15556 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties &&
15557 "Function <vkGetPhysicalDeviceSparseImageFormatProperties> requires <VK_VERSION_1_0>" );
15558
15559 std::vector<SparseImageFormatProperties> properties;
15560 uint32_t propertyCount;
15561 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15562 static_cast<VkFormat>( format ),
15563 static_cast<VkImageType>( type ),
15564 static_cast<VkSampleCountFlagBits>( samples ),
15565 static_cast<VkImageUsageFlags>( usage ),
15566 static_cast<VkImageTiling>( tiling ),
15567 &propertyCount,
15568 nullptr );
15569 properties.resize( propertyCount );
15570 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15571 static_cast<VkFormat>( format ),
15572 static_cast<VkImageType>( type ),
15573 static_cast<VkSampleCountFlagBits>( samples ),
15574 static_cast<VkImageUsageFlags>( usage ),
15575 static_cast<VkImageTiling>( tiling ),
15576 &propertyCount,
15577 reinterpret_cast<VkSparseImageFormatProperties *>( properties.data() ) );
15578
15579 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15580 if ( propertyCount < properties.size() )
15581 {
15582 properties.resize( propertyCount );
15583 }
15584 return properties;
15585 }
15586
15587 // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html
15588 VULKAN_HPP_INLINE typename ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> const & bindInfo,
15589 VULKAN_HPP_NAMESPACE::Fence fence ) const
15590 {
15591 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBindSparse && "Function <vkQueueBindSparse> requires <VK_VERSION_1_0>" );
15592
15593 Result result = static_cast<Result>( getDispatcher()->vkQueueBindSparse(
15594 static_cast<VkQueue>( m_queue ), bindInfo.size(), reinterpret_cast<const VkBindSparseInfo *>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
15595 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::bindSparse" );
15596
15597 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15598 }
15599
15600 // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html
15601 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Fence>::type
15602 Device::createFence( FenceCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15603 {
15604 VULKAN_HPP_NAMESPACE::Fence fence;
15605 Result result = static_cast<Result>( getDispatcher()->vkCreateFence( static_cast<VkDevice>( m_device ),
15606 reinterpret_cast<const VkFenceCreateInfo *>( &createInfo ),
15607 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15608 reinterpret_cast<VkFence *>( &fence ) ) );
15609 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createFence" );
15610 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Fence( *this, *reinterpret_cast<VkFence *>( &fence ), allocator ) );
15611 }
15612
15613 // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html
15614 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::resetFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const
15615 {
15616 VULKAN_HPP_ASSERT( getDispatcher()->vkResetFences && "Function <vkResetFences> requires <VK_VERSION_1_0>" );
15617
15618 Result result = static_cast<Result>(
15619 getDispatcher()->vkResetFences( static_cast<VkDevice>( m_device ), fences.size(), reinterpret_cast<const VkFence *>( fences.data() ) ) );
15620 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::resetFences" );
15621
15622 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15623 }
15624
15625 // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html
15626 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Fence::getStatus() const
15627 {
15628 VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceStatus && "Function <vkGetFenceStatus> requires <VK_VERSION_1_0>" );
15629
15630 Result result = static_cast<Result>( getDispatcher()->vkGetFenceStatus( static_cast<VkDevice>( m_device ), static_cast<VkFence>( m_fence ) ) );
15631 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Fence::getStatus", { Result::eSuccess, Result::eNotReady } );
15632
15633 return static_cast<Result>( result );
15634 }
15635
15636 // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html
15637 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,
15638 Bool32 waitAll,
15639 uint64_t timeout ) const
15640 {
15641 VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForFences && "Function <vkWaitForFences> requires <VK_VERSION_1_0>" );
15642
15643 Result result = static_cast<Result>( getDispatcher()->vkWaitForFences(
15644 static_cast<VkDevice>( m_device ), fences.size(), reinterpret_cast<const VkFence *>( fences.data() ), static_cast<VkBool32>( waitAll ), timeout ) );
15645 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
15646
15647 return static_cast<Result>( result );
15648 }
15649
15650 // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html
15651 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Semaphore>::type
15652 Device::createSemaphore( SemaphoreCreateInfo const & createInfo,
15653 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15654 {
15655 VULKAN_HPP_NAMESPACE::Semaphore semaphore;
15656 Result result = static_cast<Result>( getDispatcher()->vkCreateSemaphore( static_cast<VkDevice>( m_device ),
15657 reinterpret_cast<const VkSemaphoreCreateInfo *>( &createInfo ),
15658 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15659 reinterpret_cast<VkSemaphore *>( &semaphore ) ) );
15660 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSemaphore" );
15661 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Semaphore( *this, *reinterpret_cast<VkSemaphore *>( &semaphore ), allocator ) );
15662 }
15663
15664 // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html
15665 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<QueryPool>::type
15666 Device::createQueryPool( QueryPoolCreateInfo const & createInfo,
15667 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15668 {
15669 VULKAN_HPP_NAMESPACE::QueryPool queryPool;
15670 Result result = static_cast<Result>( getDispatcher()->vkCreateQueryPool( static_cast<VkDevice>( m_device ),
15671 reinterpret_cast<const VkQueryPoolCreateInfo *>( &createInfo ),
15672 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15673 reinterpret_cast<VkQueryPool *>( &queryPool ) ) );
15674 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createQueryPool" );
15675 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, QueryPool( *this, *reinterpret_cast<VkQueryPool *>( &queryPool ), allocator ) );
15676 }
15677
15678 // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html
15679 template <typename DataType>
15680 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue<std::vector<DataType>>
15681 QueryPool::getResults( uint32_t firstQuery, uint32_t queryCount, size_t dataSize, DeviceSize stride, QueryResultFlags flags ) const
15682 {
15683 VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function <vkGetQueryPoolResults> requires <VK_VERSION_1_0>" );
15684
15685 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
15686 std::vector<DataType> data( dataSize / sizeof( DataType ) );
15687 Result result = static_cast<Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
15688 static_cast<VkQueryPool>( m_queryPool ),
15689 firstQuery,
15690 queryCount,
15691 data.size() * sizeof( DataType ),
15692 reinterpret_cast<void *>( data.data() ),
15693 static_cast<VkDeviceSize>( stride ),
15694 static_cast<VkQueryResultFlags>( flags ) ) );
15695 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::QueryPool::getResults", { Result::eSuccess, Result::eNotReady } );
15696
15697 return ResultValue<std::vector<DataType>>( result, std::move( data ) );
15698 }
15699
15700 // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html
15701 template <typename DataType>
15702 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue<DataType>
15703 QueryPool::getResult( uint32_t firstQuery, uint32_t queryCount, DeviceSize stride, QueryResultFlags flags ) const
15704 {
15705 VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function <vkGetQueryPoolResults> requires <VK_VERSION_1_0>" );
15706
15707 DataType data;
15708 Result result = static_cast<Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
15709 static_cast<VkQueryPool>( m_queryPool ),
15710 firstQuery,
15711 queryCount,
15712 sizeof( DataType ),
15713 reinterpret_cast<void *>( &data ),
15714 static_cast<VkDeviceSize>( stride ),
15715 static_cast<VkQueryResultFlags>( flags ) ) );
15716 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::QueryPool::getResult", { Result::eSuccess, Result::eNotReady } );
15717
15718 return ResultValue<DataType>( result, std::move( data ) );
15719 }
15720
15721 // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html
15722 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Buffer>::type
15723 Device::createBuffer( BufferCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15724 {
15725 VULKAN_HPP_NAMESPACE::Buffer buffer;
15726 Result result = static_cast<Result>( getDispatcher()->vkCreateBuffer( static_cast<VkDevice>( m_device ),
15727 reinterpret_cast<const VkBufferCreateInfo *>( &createInfo ),
15728 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15729 reinterpret_cast<VkBuffer *>( &buffer ) ) );
15730 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createBuffer" );
15731 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Buffer( *this, *reinterpret_cast<VkBuffer *>( &buffer ), allocator ) );
15732 }
15733
15734 // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html
15735 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Image>::type
15736 Device::createImage( ImageCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15737 {
15738 VULKAN_HPP_NAMESPACE::Image image;
15739 Result result = static_cast<Result>( getDispatcher()->vkCreateImage( static_cast<VkDevice>( m_device ),
15740 reinterpret_cast<const VkImageCreateInfo *>( &createInfo ),
15741 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15742 reinterpret_cast<VkImage *>( &image ) ) );
15743 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createImage" );
15744 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Image( *this, *reinterpret_cast<VkImage *>( &image ), allocator ) );
15745 }
15746
15747 // wrapper function for command vkGetImageSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html
15748 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout Image::getSubresourceLayout( const ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT
15749 {
15750 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSubresourceLayout && "Function <vkGetImageSubresourceLayout> requires <VK_VERSION_1_0>" );
15751
15752 SubresourceLayout layout;
15753 getDispatcher()->vkGetImageSubresourceLayout( static_cast<VkDevice>( m_device ),
15754 static_cast<VkImage>( m_image ),
15755 reinterpret_cast<const VkImageSubresource *>( &subresource ),
15756 reinterpret_cast<VkSubresourceLayout *>( &layout ) );
15757
15758 return layout;
15759 }
15760
15761 // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html
15762 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ImageView>::type
15763 Device::createImageView( ImageViewCreateInfo const & createInfo,
15764 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15765 {
15766 VULKAN_HPP_NAMESPACE::ImageView view;
15767 Result result = static_cast<Result>( getDispatcher()->vkCreateImageView( static_cast<VkDevice>( m_device ),
15768 reinterpret_cast<const VkImageViewCreateInfo *>( &createInfo ),
15769 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15770 reinterpret_cast<VkImageView *>( &view ) ) );
15771 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createImageView" );
15772 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, ImageView( *this, *reinterpret_cast<VkImageView *>( &view ), allocator ) );
15773 }
15774
15775 // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html
15776 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<CommandPool>::type
15777 Device::createCommandPool( CommandPoolCreateInfo const & createInfo,
15778 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15779 {
15780 VULKAN_HPP_NAMESPACE::CommandPool commandPool;
15781 Result result = static_cast<Result>( getDispatcher()->vkCreateCommandPool( static_cast<VkDevice>( m_device ),
15782 reinterpret_cast<const VkCommandPoolCreateInfo *>( &createInfo ),
15783 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
15784 reinterpret_cast<VkCommandPool *>( &commandPool ) ) );
15785 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCommandPool" );
15786 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, CommandPool( *this, *reinterpret_cast<VkCommandPool *>( &commandPool ), allocator ) );
15787 }
15788
15789 // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html
15790 VULKAN_HPP_INLINE typename ResultValueType<void>::type CommandPool::reset( CommandPoolResetFlags flags ) const
15791 {
15792 VULKAN_HPP_ASSERT( getDispatcher()->vkResetCommandPool && "Function <vkResetCommandPool> requires <VK_VERSION_1_0>" );
15793
15794 Result result = static_cast<Result>( getDispatcher()->vkResetCommandPool(
15795 static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
15796 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandPool::reset" );
15797
15798 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15799 }
15800
15801 // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html
15802 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer>>::type
15803 Device::allocateCommandBuffers( CommandBufferAllocateInfo const & allocateInfo ) const
15804 {
15805 std::vector<VULKAN_HPP_NAMESPACE::CommandBuffer> commandBuffers( allocateInfo.commandBufferCount );
15806 Result result = static_cast<Result>( getDispatcher()->vkAllocateCommandBuffers( static_cast<VkDevice>( m_device ),
15807 reinterpret_cast<const VkCommandBufferAllocateInfo *>( &allocateInfo ),
15808 reinterpret_cast<VkCommandBuffer *>( commandBuffers.data() ) ) );
15809 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::allocateCommandBuffers" );
15810 std::vector<CommandBuffer> commandBuffersRAII;
15811 if ( result == Result::eSuccess )
15812 {
15813 commandBuffersRAII.reserve( commandBuffers.size() );
15814 for ( auto & commandBuffer : commandBuffers )
15815 {
15816 commandBuffersRAII.emplace_back(
15817 *this, *reinterpret_cast<VkCommandBuffer *>( &commandBuffer ), static_cast<VkCommandPool>( allocateInfo.commandPool ) );
15818 }
15819 }
15820 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( commandBuffersRAII ) );
15821 }
15822
15823 // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html
15824 VULKAN_HPP_INLINE typename ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
15825 {
15826 VULKAN_HPP_ASSERT( getDispatcher()->vkBeginCommandBuffer && "Function <vkBeginCommandBuffer> requires <VK_VERSION_1_0>" );
15827
15828 Result result = static_cast<Result>( getDispatcher()->vkBeginCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
15829 reinterpret_cast<const VkCommandBufferBeginInfo *>( &beginInfo ) ) );
15830 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::begin" );
15831
15832 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15833 }
15834
15835 // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html
15836 VULKAN_HPP_INLINE typename ResultValueType<void>::type CommandBuffer::end() const
15837 {
15838 VULKAN_HPP_ASSERT( getDispatcher()->vkEndCommandBuffer && "Function <vkEndCommandBuffer> requires <VK_VERSION_1_0>" );
15839
15840 Result result = static_cast<Result>( getDispatcher()->vkEndCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ) ) );
15841 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::end" );
15842
15843 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15844 }
15845
15846 // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html
15847 VULKAN_HPP_INLINE typename ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
15848 {
15849 VULKAN_HPP_ASSERT( getDispatcher()->vkResetCommandBuffer && "Function <vkResetCommandBuffer> requires <VK_VERSION_1_0>" );
15850
15851 Result result = static_cast<Result>(
15852 getDispatcher()->vkResetCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCommandBufferResetFlags>( flags ) ) );
15853 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::reset" );
15854
15855 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
15856 }
15857
15858 // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html
15859 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer,
15860 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
15861 ArrayProxy<const BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
15862 {
15863 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer && "Function <vkCmdCopyBuffer> requires <VK_VERSION_1_0>" );
15864
15865 getDispatcher()->vkCmdCopyBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
15866 static_cast<VkBuffer>( srcBuffer ),
15867 static_cast<VkBuffer>( dstBuffer ),
15868 regions.size(),
15869 reinterpret_cast<const VkBufferCopy *>( regions.data() ) );
15870 }
15871
15872 // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html
15873 VULKAN_HPP_INLINE void CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image srcImage,
15874 ImageLayout srcImageLayout,
15875 VULKAN_HPP_NAMESPACE::Image dstImage,
15876 ImageLayout dstImageLayout,
15877 ArrayProxy<const ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
15878 {
15879 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage && "Function <vkCmdCopyImage> requires <VK_VERSION_1_0>" );
15880
15881 getDispatcher()->vkCmdCopyImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
15882 static_cast<VkImage>( srcImage ),
15883 static_cast<VkImageLayout>( srcImageLayout ),
15884 static_cast<VkImage>( dstImage ),
15885 static_cast<VkImageLayout>( dstImageLayout ),
15886 regions.size(),
15887 reinterpret_cast<const VkImageCopy *>( regions.data() ) );
15888 }
15889
15890 // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html
15891 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer,
15892 VULKAN_HPP_NAMESPACE::Image dstImage,
15893 ImageLayout dstImageLayout,
15894 ArrayProxy<const BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
15895 {
15896 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage && "Function <vkCmdCopyBufferToImage> requires <VK_VERSION_1_0>" );
15897
15898 getDispatcher()->vkCmdCopyBufferToImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
15899 static_cast<VkBuffer>( srcBuffer ),
15900 static_cast<VkImage>( dstImage ),
15901 static_cast<VkImageLayout>( dstImageLayout ),
15902 regions.size(),
15903 reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
15904 }
15905
15906 // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html
15907 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage,
15908 ImageLayout srcImageLayout,
15909 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
15910 ArrayProxy<const BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
15911 {
15912 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer && "Function <vkCmdCopyImageToBuffer> requires <VK_VERSION_1_0>" );
15913
15914 getDispatcher()->vkCmdCopyImageToBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
15915 static_cast<VkImage>( srcImage ),
15916 static_cast<VkImageLayout>( srcImageLayout ),
15917 static_cast<VkBuffer>( dstBuffer ),
15918 regions.size(),
15919 reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
15920 }
15921
15922 // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html
15923 template <typename DataType>
15924 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
15925 DeviceSize dstOffset,
15926 ArrayProxy<const DataType> const & data ) const VULKAN_HPP_NOEXCEPT
15927 {
15928 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdateBuffer && "Function <vkCmdUpdateBuffer> requires <VK_VERSION_1_0>" );
15929
15930 getDispatcher()->vkCmdUpdateBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
15931 static_cast<VkBuffer>( dstBuffer ),
15932 static_cast<VkDeviceSize>( dstOffset ),
15933 data.size() * sizeof( DataType ),
15934 reinterpret_cast<const void *>( data.data() ) );
15935 }
15936
15937 // wrapper function for command vkCmdFillBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillBuffer.html
15938 VULKAN_HPP_INLINE void
15939 CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const VULKAN_HPP_NOEXCEPT
15940 {
15941 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdFillBuffer && "Function <vkCmdFillBuffer> requires <VK_VERSION_1_0>" );
15942
15943 getDispatcher()->vkCmdFillBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
15944 static_cast<VkBuffer>( dstBuffer ),
15945 static_cast<VkDeviceSize>( dstOffset ),
15946 static_cast<VkDeviceSize>( size ),
15947 data );
15948 }
15949
15950 // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html
15951 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask,
15952 PipelineStageFlags dstStageMask,
15953 DependencyFlags dependencyFlags,
15954 ArrayProxy<const MemoryBarrier> const & memoryBarriers,
15955 ArrayProxy<const BufferMemoryBarrier> const & bufferMemoryBarriers,
15956 ArrayProxy<const ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
15957 {
15958 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier && "Function <vkCmdPipelineBarrier> requires <VK_VERSION_1_0>" );
15959
15960 getDispatcher()->vkCmdPipelineBarrier( static_cast<VkCommandBuffer>( m_commandBuffer ),
15961 static_cast<VkPipelineStageFlags>( srcStageMask ),
15962 static_cast<VkPipelineStageFlags>( dstStageMask ),
15963 static_cast<VkDependencyFlags>( dependencyFlags ),
15964 memoryBarriers.size(),
15965 reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
15966 bufferMemoryBarriers.size(),
15967 reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
15968 imageMemoryBarriers.size(),
15969 reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
15970 }
15971
15972 // wrapper function for command vkCmdBeginQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQuery.html
15973 VULKAN_HPP_INLINE void
15974 CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT
15975 {
15976 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQuery && "Function <vkCmdBeginQuery> requires <VK_VERSION_1_0>" );
15977
15978 getDispatcher()->vkCmdBeginQuery(
15979 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
15980 }
15981
15982 // wrapper function for command vkCmdEndQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQuery.html
15983 VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT
15984 {
15985 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQuery && "Function <vkCmdEndQuery> requires <VK_VERSION_1_0>" );
15986
15987 getDispatcher()->vkCmdEndQuery( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query );
15988 }
15989
15990 // wrapper function for command vkCmdResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetQueryPool.html
15991 VULKAN_HPP_INLINE void
15992 CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
15993 {
15994 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetQueryPool && "Function <vkCmdResetQueryPool> requires <VK_VERSION_1_0>" );
15995
15996 getDispatcher()->vkCmdResetQueryPool( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
15997 }
15998
15999 // wrapper function for command vkCmdWriteTimestamp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp.html
16000 VULKAN_HPP_INLINE void
16001 CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT
16002 {
16003 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp && "Function <vkCmdWriteTimestamp> requires <VK_VERSION_1_0>" );
16004
16005 getDispatcher()->vkCmdWriteTimestamp(
16006 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
16007 }
16008
16009 // wrapper function for command vkCmdCopyQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResults.html
16010 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
16011 uint32_t firstQuery,
16012 uint32_t queryCount,
16013 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
16014 DeviceSize dstOffset,
16015 DeviceSize stride,
16016 QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT
16017 {
16018 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyQueryPoolResults && "Function <vkCmdCopyQueryPoolResults> requires <VK_VERSION_1_0>" );
16019
16020 getDispatcher()->vkCmdCopyQueryPoolResults( static_cast<VkCommandBuffer>( m_commandBuffer ),
16021 static_cast<VkQueryPool>( queryPool ),
16022 firstQuery,
16023 queryCount,
16024 static_cast<VkBuffer>( dstBuffer ),
16025 static_cast<VkDeviceSize>( dstOffset ),
16026 static_cast<VkDeviceSize>( stride ),
16027 static_cast<VkQueryResultFlags>( flags ) );
16028 }
16029
16030 // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html
16031 VULKAN_HPP_INLINE void
16032 CommandBuffer::executeCommands( ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const VULKAN_HPP_NOEXCEPT
16033 {
16034 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteCommands && "Function <vkCmdExecuteCommands> requires <VK_VERSION_1_0>" );
16035
16036 getDispatcher()->vkCmdExecuteCommands(
16037 static_cast<VkCommandBuffer>( m_commandBuffer ), commandBuffers.size(), reinterpret_cast<const VkCommandBuffer *>( commandBuffers.data() ) );
16038 }
16039
16040 // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html
16041 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Event>::type
16042 Device::createEvent( EventCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16043 {
16044 VULKAN_HPP_NAMESPACE::Event event;
16045 Result result = static_cast<Result>( getDispatcher()->vkCreateEvent( static_cast<VkDevice>( m_device ),
16046 reinterpret_cast<const VkEventCreateInfo *>( &createInfo ),
16047 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16048 reinterpret_cast<VkEvent *>( &event ) ) );
16049 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createEvent" );
16050 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Event( *this, *reinterpret_cast<VkEvent *>( &event ), allocator ) );
16051 }
16052
16053 // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html
16054 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Event::getStatus() const
16055 {
16056 VULKAN_HPP_ASSERT( getDispatcher()->vkGetEventStatus && "Function <vkGetEventStatus> requires <VK_VERSION_1_0>" );
16057
16058 Result result = static_cast<Result>( getDispatcher()->vkGetEventStatus( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
16059 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Event::getStatus", { Result::eEventSet, Result::eEventReset } );
16060
16061 return static_cast<Result>( result );
16062 }
16063
16064 // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html
16065 VULKAN_HPP_INLINE typename ResultValueType<void>::type Event::set() const
16066 {
16067 VULKAN_HPP_ASSERT( getDispatcher()->vkSetEvent && "Function <vkSetEvent> requires <VK_VERSION_1_0>" );
16068
16069 Result result = static_cast<Result>( getDispatcher()->vkSetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
16070 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Event::set" );
16071
16072 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
16073 }
16074
16075 // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html
16076 VULKAN_HPP_INLINE typename ResultValueType<void>::type Event::reset() const
16077 {
16078 VULKAN_HPP_ASSERT( getDispatcher()->vkResetEvent && "Function <vkResetEvent> requires <VK_VERSION_1_0>" );
16079
16080 Result result = static_cast<Result>( getDispatcher()->vkResetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
16081 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Event::reset" );
16082
16083 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
16084 }
16085
16086 // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html
16087 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<BufferView>::type
16088 Device::createBufferView( BufferViewCreateInfo const & createInfo,
16089 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16090 {
16091 VULKAN_HPP_NAMESPACE::BufferView view;
16092 Result result = static_cast<Result>( getDispatcher()->vkCreateBufferView( static_cast<VkDevice>( m_device ),
16093 reinterpret_cast<const VkBufferViewCreateInfo *>( &createInfo ),
16094 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16095 reinterpret_cast<VkBufferView *>( &view ) ) );
16096 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createBufferView" );
16097 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, BufferView( *this, *reinterpret_cast<VkBufferView *>( &view ), allocator ) );
16098 }
16099
16100 // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html
16101 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ShaderModule>::type
16102 Device::createShaderModule( ShaderModuleCreateInfo const & createInfo,
16103 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16104 {
16105 VULKAN_HPP_NAMESPACE::ShaderModule shaderModule;
16106 Result result = static_cast<Result>( getDispatcher()->vkCreateShaderModule( static_cast<VkDevice>( m_device ),
16107 reinterpret_cast<const VkShaderModuleCreateInfo *>( &createInfo ),
16108 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16109 reinterpret_cast<VkShaderModule *>( &shaderModule ) ) );
16110 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShaderModule" );
16111 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result,
16112 ShaderModule( *this, *reinterpret_cast<VkShaderModule *>( &shaderModule ), allocator ) );
16113 }
16114
16115 // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html
16116 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PipelineCache>::type
16117 Device::createPipelineCache( PipelineCacheCreateInfo const & createInfo,
16118 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16119 {
16120 VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache;
16121 Result result = static_cast<Result>( getDispatcher()->vkCreatePipelineCache( static_cast<VkDevice>( m_device ),
16122 reinterpret_cast<const VkPipelineCacheCreateInfo *>( &createInfo ),
16123 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16124 reinterpret_cast<VkPipelineCache *>( &pipelineCache ) ) );
16125 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPipelineCache" );
16126 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result,
16127 PipelineCache( *this, *reinterpret_cast<VkPipelineCache *>( &pipelineCache ), allocator ) );
16128 }
16129
16130 // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html
16131 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t>>::type PipelineCache::getData() const
16132 {
16133 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineCacheData && "Function <vkGetPipelineCacheData> requires <VK_VERSION_1_0>" );
16134
16135 std::vector<uint8_t> data;
16136 size_t dataSize;
16137 Result result;
16138 do
16139 {
16140 result = static_cast<Result>(
16141 getDispatcher()->vkGetPipelineCacheData( static_cast<VkDevice>( m_device ), static_cast<VkPipelineCache>( m_pipelineCache ), &dataSize, nullptr ) );
16142 if ( ( result == Result::eSuccess ) && dataSize )
16143 {
16144 data.resize( dataSize );
16145 result = static_cast<Result>( getDispatcher()->vkGetPipelineCacheData(
16146 static_cast<VkDevice>( m_device ), static_cast<VkPipelineCache>( m_pipelineCache ), &dataSize, reinterpret_cast<void *>( data.data() ) ) );
16147 }
16148 } while ( result == Result::eIncomplete );
16149 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PipelineCache::getData" );
16150 VULKAN_HPP_ASSERT( dataSize <= data.size() );
16151 if ( dataSize < data.size() )
16152 {
16153 data.resize( dataSize );
16154 }
16155 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
16156 }
16157
16158 // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html
16159 VULKAN_HPP_INLINE typename ResultValueType<void>::type PipelineCache::merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const
16160 {
16161 VULKAN_HPP_ASSERT( getDispatcher()->vkMergePipelineCaches && "Function <vkMergePipelineCaches> requires <VK_VERSION_1_0>" );
16162
16163 Result result = static_cast<Result>( getDispatcher()->vkMergePipelineCaches( static_cast<VkDevice>( m_device ),
16164 static_cast<VkPipelineCache>( m_pipelineCache ),
16165 srcCaches.size(),
16166 reinterpret_cast<const VkPipelineCache *>( srcCaches.data() ) ) );
16167 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PipelineCache::merge" );
16168
16169 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
16170 }
16171
16172 // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html
16173 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline>>::type
16174 Device::createComputePipelines( Optional<const PipelineCache> const & pipelineCache,
16175 ArrayProxy<ComputePipelineCreateInfo> const & createInfos,
16176 Optional<const AllocationCallbacks> allocator ) const
16177 {
16178 std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
16179 Result result =
16180 static_cast<Result>( getDispatcher()->vkCreateComputePipelines( static_cast<VkDevice>( m_device ),
16181 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
16182 createInfos.size(),
16183 reinterpret_cast<const VkComputePipelineCreateInfo *>( createInfos.data() ),
16184 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16185 reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
16186 VULKAN_HPP_NAMESPACE::detail::resultCheck(
16187 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createComputePipelines", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
16188 std::vector<Pipeline> pipelinesRAII;
16189 if ( result == Result::eSuccess )
16190 {
16191 pipelinesRAII.reserve( pipelines.size() );
16192 for ( auto & pipeline : pipelines )
16193 {
16194 pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
16195 }
16196 }
16197 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) );
16198 }
16199
16200 // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html
16201 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Pipeline>::type
16202 Device::createComputePipeline( Optional<const PipelineCache> const & pipelineCache,
16203 ComputePipelineCreateInfo const & createInfo,
16204 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16205 {
16206 VULKAN_HPP_NAMESPACE::Pipeline pipeline;
16207 Result result = static_cast<Result>( getDispatcher()->vkCreateComputePipelines( static_cast<VkDevice>( m_device ),
16208 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
16209 1,
16210 reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
16211 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16212 reinterpret_cast<VkPipeline *>( &pipeline ) ) );
16213 VULKAN_HPP_NAMESPACE::detail::resultCheck(
16214 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createComputePipeline", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
16215 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result ) );
16216 }
16217
16218 // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html
16219 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PipelineLayout>::type
16220 Device::createPipelineLayout( PipelineLayoutCreateInfo const & createInfo,
16221 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16222 {
16223 VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout;
16224 Result result = static_cast<Result>( getDispatcher()->vkCreatePipelineLayout( static_cast<VkDevice>( m_device ),
16225 reinterpret_cast<const VkPipelineLayoutCreateInfo *>( &createInfo ),
16226 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16227 reinterpret_cast<VkPipelineLayout *>( &pipelineLayout ) ) );
16228 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPipelineLayout" );
16229 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
16230 result, PipelineLayout( *this, *reinterpret_cast<VkPipelineLayout *>( &pipelineLayout ), allocator ) );
16231 }
16232
16233 // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html
16234 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Sampler>::type
16235 Device::createSampler( SamplerCreateInfo const & createInfo, Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16236 {
16237 VULKAN_HPP_NAMESPACE::Sampler sampler;
16238 Result result = static_cast<Result>( getDispatcher()->vkCreateSampler( static_cast<VkDevice>( m_device ),
16239 reinterpret_cast<const VkSamplerCreateInfo *>( &createInfo ),
16240 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16241 reinterpret_cast<VkSampler *>( &sampler ) ) );
16242 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSampler" );
16243 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Sampler( *this, *reinterpret_cast<VkSampler *>( &sampler ), allocator ) );
16244 }
16245
16246 // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html
16247 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DescriptorSetLayout>::type
16248 Device::createDescriptorSetLayout( DescriptorSetLayoutCreateInfo const & createInfo,
16249 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16250 {
16251 VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout;
16252 Result result =
16253 static_cast<Result>( getDispatcher()->vkCreateDescriptorSetLayout( static_cast<VkDevice>( m_device ),
16254 reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
16255 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16256 reinterpret_cast<VkDescriptorSetLayout *>( &setLayout ) ) );
16257 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorSetLayout" );
16258 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
16259 result, DescriptorSetLayout( *this, *reinterpret_cast<VkDescriptorSetLayout *>( &setLayout ), allocator ) );
16260 }
16261
16262 // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html
16263 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DescriptorPool>::type
16264 Device::createDescriptorPool( DescriptorPoolCreateInfo const & createInfo,
16265 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16266 {
16267 VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool;
16268 Result result = static_cast<Result>( getDispatcher()->vkCreateDescriptorPool( static_cast<VkDevice>( m_device ),
16269 reinterpret_cast<const VkDescriptorPoolCreateInfo *>( &createInfo ),
16270 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16271 reinterpret_cast<VkDescriptorPool *>( &descriptorPool ) ) );
16272 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorPool" );
16273 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
16274 result, DescriptorPool( *this, *reinterpret_cast<VkDescriptorPool *>( &descriptorPool ), allocator ) );
16275 }
16276
16277 // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html
16278 VULKAN_HPP_INLINE typename ResultValueType<void>::type DescriptorPool::reset( DescriptorPoolResetFlags flags ) const
16279 {
16280 VULKAN_HPP_ASSERT( getDispatcher()->vkResetDescriptorPool && "Function <vkResetDescriptorPool> requires <VK_VERSION_1_0>" );
16281
16282 Result result = static_cast<Result>( getDispatcher()->vkResetDescriptorPool(
16283 static_cast<VkDevice>( m_device ), static_cast<VkDescriptorPool>( m_descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
16284 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DescriptorPool::reset" );
16285
16286 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
16287 }
16288
16289 // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html
16290 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet>>::type
16291 Device::allocateDescriptorSets( DescriptorSetAllocateInfo const & allocateInfo ) const
16292 {
16293 std::vector<VULKAN_HPP_NAMESPACE::DescriptorSet> descriptorSets( allocateInfo.descriptorSetCount );
16294 Result result = static_cast<Result>( getDispatcher()->vkAllocateDescriptorSets( static_cast<VkDevice>( m_device ),
16295 reinterpret_cast<const VkDescriptorSetAllocateInfo *>( &allocateInfo ),
16296 reinterpret_cast<VkDescriptorSet *>( descriptorSets.data() ) ) );
16297 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::allocateDescriptorSets" );
16298 std::vector<DescriptorSet> descriptorSetsRAII;
16299 if ( result == Result::eSuccess )
16300 {
16301 descriptorSetsRAII.reserve( descriptorSets.size() );
16302 for ( auto & descriptorSet : descriptorSets )
16303 {
16304 descriptorSetsRAII.emplace_back(
16305 *this, *reinterpret_cast<VkDescriptorSet *>( &descriptorSet ), static_cast<VkDescriptorPool>( allocateInfo.descriptorPool ) );
16306 }
16307 }
16308 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( descriptorSetsRAII ) );
16309 }
16310
16311 // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html
16312 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> const & descriptorWrites,
16313 ArrayProxy<const CopyDescriptorSet> const & descriptorCopies ) const VULKAN_HPP_NOEXCEPT
16314 {
16315 VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSets && "Function <vkUpdateDescriptorSets> requires <VK_VERSION_1_0>" );
16316
16317 getDispatcher()->vkUpdateDescriptorSets( static_cast<VkDevice>( m_device ),
16318 descriptorWrites.size(),
16319 reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ),
16320 descriptorCopies.size(),
16321 reinterpret_cast<const VkCopyDescriptorSet *>( descriptorCopies.data() ) );
16322 }
16323
16324 // wrapper function for command vkCmdBindPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipeline.html
16325 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT
16326 {
16327 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindPipeline && "Function <vkCmdBindPipeline> requires <VK_VERSION_1_0>" );
16328
16329 getDispatcher()->vkCmdBindPipeline(
16330 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
16331 }
16332
16333 // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html
16334 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint,
16335 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
16336 uint32_t firstSet,
16337 ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
16338 ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT
16339 {
16340 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets && "Function <vkCmdBindDescriptorSets> requires <VK_VERSION_1_0>" );
16341
16342 getDispatcher()->vkCmdBindDescriptorSets( static_cast<VkCommandBuffer>( m_commandBuffer ),
16343 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
16344 static_cast<VkPipelineLayout>( layout ),
16345 firstSet,
16346 descriptorSets.size(),
16347 reinterpret_cast<const VkDescriptorSet *>( descriptorSets.data() ),
16348 dynamicOffsets.size(),
16349 dynamicOffsets.data() );
16350 }
16351
16352 // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html
16353 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( VULKAN_HPP_NAMESPACE::Image image,
16354 ImageLayout imageLayout,
16355 const ClearColorValue & color,
16356 ArrayProxy<const ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
16357 {
16358 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearColorImage && "Function <vkCmdClearColorImage> requires <VK_VERSION_1_0>" );
16359
16360 getDispatcher()->vkCmdClearColorImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
16361 static_cast<VkImage>( image ),
16362 static_cast<VkImageLayout>( imageLayout ),
16363 reinterpret_cast<const VkClearColorValue *>( &color ),
16364 ranges.size(),
16365 reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
16366 }
16367
16368 // wrapper function for command vkCmdDispatch, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatch.html
16369 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
16370 {
16371 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatch && "Function <vkCmdDispatch> requires <VK_VERSION_1_0>" );
16372
16373 getDispatcher()->vkCmdDispatch( static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
16374 }
16375
16376 // wrapper function for command vkCmdDispatchIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect.html
16377 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT
16378 {
16379 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchIndirect && "Function <vkCmdDispatchIndirect> requires <VK_VERSION_1_0>" );
16380
16381 getDispatcher()->vkCmdDispatchIndirect(
16382 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ) );
16383 }
16384
16385 // wrapper function for command vkCmdSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent.html
16386 VULKAN_HPP_INLINE void CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
16387 {
16388 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent && "Function <vkCmdSetEvent> requires <VK_VERSION_1_0>" );
16389
16390 getDispatcher()->vkCmdSetEvent(
16391 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
16392 }
16393
16394 // wrapper function for command vkCmdResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent.html
16395 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
16396 {
16397 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent && "Function <vkCmdResetEvent> requires <VK_VERSION_1_0>" );
16398
16399 getDispatcher()->vkCmdResetEvent(
16400 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
16401 }
16402
16403 // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html
16404 VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,
16405 PipelineStageFlags srcStageMask,
16406 PipelineStageFlags dstStageMask,
16407 ArrayProxy<const MemoryBarrier> const & memoryBarriers,
16408 ArrayProxy<const BufferMemoryBarrier> const & bufferMemoryBarriers,
16409 ArrayProxy<const ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
16410 {
16411 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents && "Function <vkCmdWaitEvents> requires <VK_VERSION_1_0>" );
16412
16413 getDispatcher()->vkCmdWaitEvents( static_cast<VkCommandBuffer>( m_commandBuffer ),
16414 events.size(),
16415 reinterpret_cast<const VkEvent *>( events.data() ),
16416 static_cast<VkPipelineStageFlags>( srcStageMask ),
16417 static_cast<VkPipelineStageFlags>( dstStageMask ),
16418 memoryBarriers.size(),
16419 reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
16420 bufferMemoryBarriers.size(),
16421 reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
16422 imageMemoryBarriers.size(),
16423 reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
16424 }
16425
16426 // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html
16427 template <typename ValuesType>
16428 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout,
16429 ShaderStageFlags stageFlags,
16430 uint32_t offset,
16431 ArrayProxy<const ValuesType> const & values ) const VULKAN_HPP_NOEXCEPT
16432 {
16433 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants && "Function <vkCmdPushConstants> requires <VK_VERSION_1_0>" );
16434
16435 getDispatcher()->vkCmdPushConstants( static_cast<VkCommandBuffer>( m_commandBuffer ),
16436 static_cast<VkPipelineLayout>( layout ),
16437 static_cast<VkShaderStageFlags>( stageFlags ),
16438 offset,
16439 values.size() * sizeof( ValuesType ),
16440 reinterpret_cast<const void *>( values.data() ) );
16441 }
16442
16443 // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html
16444 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline>>::type
16445 Device::createGraphicsPipelines( Optional<const PipelineCache> const & pipelineCache,
16446 ArrayProxy<GraphicsPipelineCreateInfo> const & createInfos,
16447 Optional<const AllocationCallbacks> allocator ) const
16448 {
16449 std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
16450 Result result =
16451 static_cast<Result>( getDispatcher()->vkCreateGraphicsPipelines( static_cast<VkDevice>( m_device ),
16452 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
16453 createInfos.size(),
16454 reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( createInfos.data() ),
16455 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16456 reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
16457 VULKAN_HPP_NAMESPACE::detail::resultCheck(
16458 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createGraphicsPipelines", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
16459 std::vector<Pipeline> pipelinesRAII;
16460 if ( result == Result::eSuccess )
16461 {
16462 pipelinesRAII.reserve( pipelines.size() );
16463 for ( auto & pipeline : pipelines )
16464 {
16465 pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
16466 }
16467 }
16468 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) );
16469 }
16470
16471 // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html
16472 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Pipeline>::type
16473 Device::createGraphicsPipeline( Optional<const PipelineCache> const & pipelineCache,
16474 GraphicsPipelineCreateInfo const & createInfo,
16475 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16476 {
16477 VULKAN_HPP_NAMESPACE::Pipeline pipeline;
16478 Result result = static_cast<Result>( getDispatcher()->vkCreateGraphicsPipelines( static_cast<VkDevice>( m_device ),
16479 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
16480 1,
16481 reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( &createInfo ),
16482 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16483 reinterpret_cast<VkPipeline *>( &pipeline ) ) );
16484 VULKAN_HPP_NAMESPACE::detail::resultCheck(
16485 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createGraphicsPipeline", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
16486 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result ) );
16487 }
16488
16489 // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html
16490 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Framebuffer>::type
16491 Device::createFramebuffer( FramebufferCreateInfo const & createInfo,
16492 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16493 {
16494 VULKAN_HPP_NAMESPACE::Framebuffer framebuffer;
16495 Result result = static_cast<Result>( getDispatcher()->vkCreateFramebuffer( static_cast<VkDevice>( m_device ),
16496 reinterpret_cast<const VkFramebufferCreateInfo *>( &createInfo ),
16497 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16498 reinterpret_cast<VkFramebuffer *>( &framebuffer ) ) );
16499 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createFramebuffer" );
16500 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Framebuffer( *this, *reinterpret_cast<VkFramebuffer *>( &framebuffer ), allocator ) );
16501 }
16502
16503 // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html
16504 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<RenderPass>::type
16505 Device::createRenderPass( RenderPassCreateInfo const & createInfo,
16506 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
16507 {
16508 VULKAN_HPP_NAMESPACE::RenderPass renderPass;
16509 Result result = static_cast<Result>( getDispatcher()->vkCreateRenderPass( static_cast<VkDevice>( m_device ),
16510 reinterpret_cast<const VkRenderPassCreateInfo *>( &createInfo ),
16511 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
16512 reinterpret_cast<VkRenderPass *>( &renderPass ) ) );
16513 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRenderPass" );
16514 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, RenderPass( *this, *reinterpret_cast<VkRenderPass *>( &renderPass ), allocator ) );
16515 }
16516
16517 // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html
16518 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D RenderPass::getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT
16519 {
16520 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderAreaGranularity && "Function <vkGetRenderAreaGranularity> requires <VK_VERSION_1_0>" );
16521
16522 Extent2D granularity;
16523 getDispatcher()->vkGetRenderAreaGranularity(
16524 static_cast<VkDevice>( m_device ), static_cast<VkRenderPass>( m_renderPass ), reinterpret_cast<VkExtent2D *>( &granularity ) );
16525
16526 return granularity;
16527 }
16528
16529 // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html
16530 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
16531 {
16532 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewport && "Function <vkCmdSetViewport> requires <VK_VERSION_1_0>" );
16533
16534 getDispatcher()->vkCmdSetViewport(
16535 static_cast<VkCommandBuffer>( m_commandBuffer ), firstViewport, viewports.size(), reinterpret_cast<const VkViewport *>( viewports.data() ) );
16536 }
16537
16538 // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html
16539 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
16540 {
16541 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissor && "Function <vkCmdSetScissor> requires <VK_VERSION_1_0>" );
16542
16543 getDispatcher()->vkCmdSetScissor(
16544 static_cast<VkCommandBuffer>( m_commandBuffer ), firstScissor, scissors.size(), reinterpret_cast<const VkRect2D *>( scissors.data() ) );
16545 }
16546
16547 // wrapper function for command vkCmdSetLineWidth, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineWidth.html
16548 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT
16549 {
16550 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineWidth && "Function <vkCmdSetLineWidth> requires <VK_VERSION_1_0>" );
16551
16552 getDispatcher()->vkCmdSetLineWidth( static_cast<VkCommandBuffer>( m_commandBuffer ), lineWidth );
16553 }
16554
16555 // wrapper function for command vkCmdSetDepthBias, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias.html
16556 VULKAN_HPP_INLINE void
16557 CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT
16558 {
16559 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBias && "Function <vkCmdSetDepthBias> requires <VK_VERSION_1_0>" );
16560
16561 getDispatcher()->vkCmdSetDepthBias( static_cast<VkCommandBuffer>( m_commandBuffer ), depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
16562 }
16563
16564 // wrapper function for command vkCmdSetBlendConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetBlendConstants.html
16565 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT
16566 {
16567 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetBlendConstants && "Function <vkCmdSetBlendConstants> requires <VK_VERSION_1_0>" );
16568
16569 getDispatcher()->vkCmdSetBlendConstants( static_cast<VkCommandBuffer>( m_commandBuffer ), blendConstants );
16570 }
16571
16572 // wrapper function for command vkCmdSetDepthBounds, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBounds.html
16573 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT
16574 {
16575 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBounds && "Function <vkCmdSetDepthBounds> requires <VK_VERSION_1_0>" );
16576
16577 getDispatcher()->vkCmdSetDepthBounds( static_cast<VkCommandBuffer>( m_commandBuffer ), minDepthBounds, maxDepthBounds );
16578 }
16579
16580 // wrapper function for command vkCmdSetStencilCompareMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilCompareMask.html
16581 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT
16582 {
16583 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilCompareMask && "Function <vkCmdSetStencilCompareMask> requires <VK_VERSION_1_0>" );
16584
16585 getDispatcher()->vkCmdSetStencilCompareMask( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
16586 }
16587
16588 // wrapper function for command vkCmdSetStencilWriteMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilWriteMask.html
16589 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT
16590 {
16591 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilWriteMask && "Function <vkCmdSetStencilWriteMask> requires <VK_VERSION_1_0>" );
16592
16593 getDispatcher()->vkCmdSetStencilWriteMask( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
16594 }
16595
16596 // wrapper function for command vkCmdSetStencilReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilReference.html
16597 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT
16598 {
16599 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilReference && "Function <vkCmdSetStencilReference> requires <VK_VERSION_1_0>" );
16600
16601 getDispatcher()->vkCmdSetStencilReference( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), reference );
16602 }
16603
16604 // wrapper function for command vkCmdBindIndexBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer.html
16605 VULKAN_HPP_INLINE void
16606 CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, IndexType indexType ) const VULKAN_HPP_NOEXCEPT
16607 {
16608 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer && "Function <vkCmdBindIndexBuffer> requires <VK_VERSION_1_0>" );
16609
16610 getDispatcher()->vkCmdBindIndexBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
16611 static_cast<VkBuffer>( buffer ),
16612 static_cast<VkDeviceSize>( offset ),
16613 static_cast<VkIndexType>( indexType ) );
16614 }
16615
16616 // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html
16617 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding,
16618 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
16619 ArrayProxy<const DeviceSize> const & offsets ) const
16620 {
16621 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers && "Function <vkCmdBindVertexBuffers> requires <VK_VERSION_1_0>" );
16622 # ifdef VULKAN_HPP_NO_EXCEPTIONS
16623 VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
16624 # else
16625 if ( buffers.size() != offsets.size() )
16626 {
16627 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
16628 }
16629 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
16630
16631 getDispatcher()->vkCmdBindVertexBuffers( static_cast<VkCommandBuffer>( m_commandBuffer ),
16632 firstBinding,
16633 buffers.size(),
16634 reinterpret_cast<const VkBuffer *>( buffers.data() ),
16635 reinterpret_cast<const VkDeviceSize *>( offsets.data() ) );
16636 }
16637
16638 // wrapper function for command vkCmdDraw, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDraw.html
16639 VULKAN_HPP_INLINE void
16640 CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
16641 {
16642 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDraw && "Function <vkCmdDraw> requires <VK_VERSION_1_0>" );
16643
16644 getDispatcher()->vkCmdDraw( static_cast<VkCommandBuffer>( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance );
16645 }
16646
16647 // wrapper function for command vkCmdDrawIndexed, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexed.html
16648 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed(
16649 uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
16650 {
16651 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexed && "Function <vkCmdDrawIndexed> requires <VK_VERSION_1_0>" );
16652
16653 getDispatcher()->vkCmdDrawIndexed( static_cast<VkCommandBuffer>( m_commandBuffer ), indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
16654 }
16655
16656 // wrapper function for command vkCmdDrawIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect.html
16657 VULKAN_HPP_INLINE void
16658 CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT
16659 {
16660 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirect && "Function <vkCmdDrawIndirect> requires <VK_VERSION_1_0>" );
16661
16662 getDispatcher()->vkCmdDrawIndirect(
16663 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
16664 }
16665
16666 // wrapper function for command vkCmdDrawIndexedIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect.html
16667 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer,
16668 DeviceSize offset,
16669 uint32_t drawCount,
16670 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
16671 {
16672 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirect && "Function <vkCmdDrawIndexedIndirect> requires <VK_VERSION_1_0>" );
16673
16674 getDispatcher()->vkCmdDrawIndexedIndirect(
16675 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
16676 }
16677
16678 // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html
16679 VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage,
16680 ImageLayout srcImageLayout,
16681 VULKAN_HPP_NAMESPACE::Image dstImage,
16682 ImageLayout dstImageLayout,
16683 ArrayProxy<const ImageBlit> const & regions,
16684 Filter filter ) const VULKAN_HPP_NOEXCEPT
16685 {
16686 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage && "Function <vkCmdBlitImage> requires <VK_VERSION_1_0>" );
16687
16688 getDispatcher()->vkCmdBlitImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
16689 static_cast<VkImage>( srcImage ),
16690 static_cast<VkImageLayout>( srcImageLayout ),
16691 static_cast<VkImage>( dstImage ),
16692 static_cast<VkImageLayout>( dstImageLayout ),
16693 regions.size(),
16694 reinterpret_cast<const VkImageBlit *>( regions.data() ),
16695 static_cast<VkFilter>( filter ) );
16696 }
16697
16698 // wrapper function for command vkCmdClearDepthStencilImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html
16699 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image,
16700 ImageLayout imageLayout,
16701 const ClearDepthStencilValue & depthStencil,
16702 ArrayProxy<const ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
16703 {
16704 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearDepthStencilImage && "Function <vkCmdClearDepthStencilImage> requires <VK_VERSION_1_0>" );
16705
16706 getDispatcher()->vkCmdClearDepthStencilImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
16707 static_cast<VkImage>( image ),
16708 static_cast<VkImageLayout>( imageLayout ),
16709 reinterpret_cast<const VkClearDepthStencilValue *>( &depthStencil ),
16710 ranges.size(),
16711 reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
16712 }
16713
16714 // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html
16715 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> const & attachments,
16716 ArrayProxy<const ClearRect> const & rects ) const VULKAN_HPP_NOEXCEPT
16717 {
16718 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearAttachments && "Function <vkCmdClearAttachments> requires <VK_VERSION_1_0>" );
16719
16720 getDispatcher()->vkCmdClearAttachments( static_cast<VkCommandBuffer>( m_commandBuffer ),
16721 attachments.size(),
16722 reinterpret_cast<const VkClearAttachment *>( attachments.data() ),
16723 rects.size(),
16724 reinterpret_cast<const VkClearRect *>( rects.data() ) );
16725 }
16726
16727 // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html
16728 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage,
16729 ImageLayout srcImageLayout,
16730 VULKAN_HPP_NAMESPACE::Image dstImage,
16731 ImageLayout dstImageLayout,
16732 ArrayProxy<const ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT
16733 {
16734 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage && "Function <vkCmdResolveImage> requires <VK_VERSION_1_0>" );
16735
16736 getDispatcher()->vkCmdResolveImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
16737 static_cast<VkImage>( srcImage ),
16738 static_cast<VkImageLayout>( srcImageLayout ),
16739 static_cast<VkImage>( dstImage ),
16740 static_cast<VkImageLayout>( dstImageLayout ),
16741 regions.size(),
16742 reinterpret_cast<const VkImageResolve *>( regions.data() ) );
16743 }
16744
16745 // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html
16746 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
16747 {
16748 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass && "Function <vkCmdBeginRenderPass> requires <VK_VERSION_1_0>" );
16749
16750 getDispatcher()->vkCmdBeginRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ),
16751 reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
16752 static_cast<VkSubpassContents>( contents ) );
16753 }
16754
16755 // wrapper function for command vkCmdNextSubpass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass.html
16756 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
16757 {
16758 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass && "Function <vkCmdNextSubpass> requires <VK_VERSION_1_0>" );
16759
16760 getDispatcher()->vkCmdNextSubpass( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkSubpassContents>( contents ) );
16761 }
16762
16763 // wrapper function for command vkCmdEndRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass.html
16764 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const VULKAN_HPP_NOEXCEPT
16765 {
16766 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass && "Function <vkCmdEndRenderPass> requires <VK_VERSION_1_0>" );
16767
16768 getDispatcher()->vkCmdEndRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ) );
16769 }
16770
16771 //=== VK_VERSION_1_1 ===
16772
16773 // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html
16774 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<uint32_t>::type Context::enumerateInstanceVersion() const
16775 {
16776 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceVersion && "Function <vkEnumerateInstanceVersion> requires <VK_VERSION_1_1>" );
16777
16778 uint32_t apiVersion;
16779 Result result = static_cast<Result>( getDispatcher()->vkEnumerateInstanceVersion( &apiVersion ) );
16780 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::enumerateInstanceVersion" );
16781
16782 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( apiVersion ) );
16783 }
16784
16785 // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html
16786 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::bindBufferMemory2( ArrayProxy<const BindBufferMemoryInfo> const & bindInfos ) const
16787 {
16788 VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2 && "Function <vkBindBufferMemory2> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
16789
16790 Result result = static_cast<Result>( getDispatcher()->vkBindBufferMemory2(
16791 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
16792 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindBufferMemory2" );
16793
16794 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
16795 }
16796
16797 // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html
16798 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::bindImageMemory2( ArrayProxy<const BindImageMemoryInfo> const & bindInfos ) const
16799 {
16800 VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2 && "Function <vkBindImageMemory2> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
16801
16802 Result result = static_cast<Result>( getDispatcher()->vkBindImageMemory2(
16803 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
16804 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindImageMemory2" );
16805
16806 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
16807 }
16808
16809 // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see
16810 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html
16811 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( uint32_t heapIndex,
16812 uint32_t localDeviceIndex,
16813 uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
16814 {
16815 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures &&
16816 "Function <vkGetDeviceGroupPeerMemoryFeatures> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
16817
16818 PeerMemoryFeatureFlags peerMemoryFeatures;
16819 getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures( static_cast<VkDevice>( m_device ),
16820 heapIndex,
16821 localDeviceIndex,
16822 remoteDeviceIndex,
16823 reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
16824
16825 return peerMemoryFeatures;
16826 }
16827
16828 // wrapper function for command vkCmdSetDeviceMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMask.html
16829 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
16830 {
16831 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMask && "Function <vkCmdSetDeviceMask> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
16832
16833 getDispatcher()->vkCmdSetDeviceMask( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
16834 }
16835
16836 // wrapper function for command vkEnumeratePhysicalDeviceGroups, see
16837 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html
16838 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties>>::type
16839 Instance::enumeratePhysicalDeviceGroups() const
16840 {
16841 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceGroups &&
16842 "Function <vkEnumeratePhysicalDeviceGroups> requires <VK_KHR_device_group_creation> or <VK_VERSION_1_1>" );
16843
16844 std::vector<PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
16845 uint32_t physicalDeviceGroupCount;
16846 Result result;
16847 do
16848 {
16849 result =
16850 static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroups( static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
16851 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
16852 {
16853 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
16854 result = static_cast<Result>(
16855 getDispatcher()->vkEnumeratePhysicalDeviceGroups( static_cast<VkInstance>( m_instance ),
16856 &physicalDeviceGroupCount,
16857 reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
16858 }
16859 } while ( result == Result::eIncomplete );
16860 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" );
16861 VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
16862 if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() )
16863 {
16864 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
16865 }
16866 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) );
16867 }
16868
16869 // wrapper function for command vkGetImageMemoryRequirements2, see
16870 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html
16871 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
16872 Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
16873 {
16874 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2 &&
16875 "Function <vkGetImageMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
16876
16877 MemoryRequirements2 memoryRequirements;
16878 getDispatcher()->vkGetImageMemoryRequirements2( static_cast<VkDevice>( m_device ),
16879 reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
16880 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16881
16882 return memoryRequirements;
16883 }
16884
16885 // wrapper function for command vkGetImageMemoryRequirements2, see
16886 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html
16887 template <typename X, typename Y, typename... Z>
16888 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
16889 Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
16890 {
16891 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2 &&
16892 "Function <vkGetImageMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
16893
16894 StructureChain<X, Y, Z...> structureChain;
16895 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
16896 getDispatcher()->vkGetImageMemoryRequirements2( static_cast<VkDevice>( m_device ),
16897 reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
16898 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16899
16900 return structureChain;
16901 }
16902
16903 // wrapper function for command vkGetBufferMemoryRequirements2, see
16904 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html
16905 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
16906 Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
16907 {
16908 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2 &&
16909 "Function <vkGetBufferMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
16910
16911 MemoryRequirements2 memoryRequirements;
16912 getDispatcher()->vkGetBufferMemoryRequirements2( static_cast<VkDevice>( m_device ),
16913 reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
16914 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16915
16916 return memoryRequirements;
16917 }
16918
16919 // wrapper function for command vkGetBufferMemoryRequirements2, see
16920 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html
16921 template <typename X, typename Y, typename... Z>
16922 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
16923 Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
16924 {
16925 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2 &&
16926 "Function <vkGetBufferMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
16927
16928 StructureChain<X, Y, Z...> structureChain;
16929 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
16930 getDispatcher()->vkGetBufferMemoryRequirements2( static_cast<VkDevice>( m_device ),
16931 reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
16932 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16933
16934 return structureChain;
16935 }
16936
16937 // wrapper function for command vkGetImageSparseMemoryRequirements2, see
16938 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html
16939 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2>
16940 Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info ) const
16941 {
16942 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements2 &&
16943 "Function <vkGetImageSparseMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
16944
16945 std::vector<SparseImageMemoryRequirements2> sparseMemoryRequirements;
16946 uint32_t sparseMemoryRequirementCount;
16947 getDispatcher()->vkGetImageSparseMemoryRequirements2(
16948 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ), &sparseMemoryRequirementCount, nullptr );
16949 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
16950 getDispatcher()->vkGetImageSparseMemoryRequirements2( static_cast<VkDevice>( m_device ),
16951 reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
16952 &sparseMemoryRequirementCount,
16953 reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
16954
16955 VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
16956 if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
16957 {
16958 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
16959 }
16960 return sparseMemoryRequirements;
16961 }
16962
16963 // wrapper function for command vkGetPhysicalDeviceFeatures2, see
16964 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html
16965 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
16966 {
16967 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2 &&
16968 "Function <vkGetPhysicalDeviceFeatures2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16969
16970 PhysicalDeviceFeatures2 features;
16971 getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16972 reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
16973
16974 return features;
16975 }
16976
16977 // wrapper function for command vkGetPhysicalDeviceFeatures2, see
16978 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html
16979 template <typename X, typename Y, typename... Z>
16980 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
16981 {
16982 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2 &&
16983 "Function <vkGetPhysicalDeviceFeatures2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16984
16985 StructureChain<X, Y, Z...> structureChain;
16986 PhysicalDeviceFeatures2 & features = structureChain.template get<PhysicalDeviceFeatures2>();
16987 getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16988 reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
16989
16990 return structureChain;
16991 }
16992
16993 // wrapper function for command vkGetPhysicalDeviceProperties2, see
16994 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html
16995 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
16996 {
16997 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 &&
16998 "Function <vkGetPhysicalDeviceProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16999
17000 PhysicalDeviceProperties2 properties;
17001 getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17002 reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
17003
17004 return properties;
17005 }
17006
17007 // wrapper function for command vkGetPhysicalDeviceProperties2, see
17008 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html
17009 template <typename X, typename Y, typename... Z>
17010 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
17011 {
17012 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 &&
17013 "Function <vkGetPhysicalDeviceProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17014
17015 StructureChain<X, Y, Z...> structureChain;
17016 PhysicalDeviceProperties2 & properties = structureChain.template get<PhysicalDeviceProperties2>();
17017 getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17018 reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
17019
17020 return structureChain;
17021 }
17022
17023 // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see
17024 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html
17025 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT
17026 {
17027 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 &&
17028 "Function <vkGetPhysicalDeviceFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17029
17030 FormatProperties2 formatProperties;
17031 getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
17032 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
17033
17034 return formatProperties;
17035 }
17036
17037 // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see
17038 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html
17039 template <typename X, typename Y, typename... Z>
17040 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT
17041 {
17042 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 &&
17043 "Function <vkGetPhysicalDeviceFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17044
17045 StructureChain<X, Y, Z...> structureChain;
17046 FormatProperties2 & formatProperties = structureChain.template get<FormatProperties2>();
17047 getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
17048 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
17049
17050 return structureChain;
17051 }
17052
17053 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see
17054 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html
17055 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2(
17056 const PhysicalDeviceImageFormatInfo2 * pImageFormatInfo, ImageFormatProperties2 * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT
17057 {
17058 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 &&
17059 "Function <vkGetPhysicalDeviceImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17060 return static_cast<Result>(
17061 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17062 reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( pImageFormatInfo ),
17063 reinterpret_cast<VkImageFormatProperties2 *>( pImageFormatProperties ) ) );
17064 }
17065
17066 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see
17067 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html
17068 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ImageFormatProperties2>::type
17069 PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
17070 {
17071 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 &&
17072 "Function <vkGetPhysicalDeviceImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17073
17074 ImageFormatProperties2 imageFormatProperties;
17075 Result result = static_cast<Result>(
17076 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17077 reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
17078 reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
17079 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
17080
17081 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) );
17082 }
17083
17084 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see
17085 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html
17086 template <typename X, typename Y, typename... Z>
17087 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
17088 PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
17089 {
17090 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 &&
17091 "Function <vkGetPhysicalDeviceImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17092
17093 StructureChain<X, Y, Z...> structureChain;
17094 ImageFormatProperties2 & imageFormatProperties = structureChain.template get<ImageFormatProperties2>();
17095 Result result = static_cast<Result>(
17096 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17097 reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
17098 reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
17099 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
17100
17101 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
17102 }
17103
17104 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see
17105 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html
17106 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2> PhysicalDevice::getQueueFamilyProperties2() const
17107 {
17108 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2 &&
17109 "Function <vkGetPhysicalDeviceQueueFamilyProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17110
17111 std::vector<QueueFamilyProperties2> queueFamilyProperties;
17112 uint32_t queueFamilyPropertyCount;
17113 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
17114 queueFamilyProperties.resize( queueFamilyPropertyCount );
17115 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17116 &queueFamilyPropertyCount,
17117 reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
17118
17119 VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
17120 if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
17121 {
17122 queueFamilyProperties.resize( queueFamilyPropertyCount );
17123 }
17124 return queueFamilyProperties;
17125 }
17126
17127 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see
17128 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html
17129 template <typename StructureChain>
17130 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain> PhysicalDevice::getQueueFamilyProperties2() const
17131 {
17132 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2 &&
17133 "Function <vkGetPhysicalDeviceQueueFamilyProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17134
17135 std::vector<StructureChain> structureChains;
17136 std::vector<QueueFamilyProperties2> queueFamilyProperties;
17137 uint32_t queueFamilyPropertyCount;
17138 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
17139 structureChains.resize( queueFamilyPropertyCount );
17140 queueFamilyProperties.resize( queueFamilyPropertyCount );
17141 for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
17142 {
17143 queueFamilyProperties[i].pNext = structureChains[i].template get<QueueFamilyProperties2>().pNext;
17144 }
17145 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17146 &queueFamilyPropertyCount,
17147 reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
17148
17149 VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
17150 if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
17151 {
17152 structureChains.resize( queueFamilyPropertyCount );
17153 }
17154 for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
17155 {
17156 structureChains[i].template get<QueueFamilyProperties2>() = queueFamilyProperties[i];
17157 }
17158 return structureChains;
17159 }
17160
17161 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see
17162 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html
17163 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
17164 {
17165 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2 &&
17166 "Function <vkGetPhysicalDeviceMemoryProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17167
17168 PhysicalDeviceMemoryProperties2 memoryProperties;
17169 getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17170 reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
17171
17172 return memoryProperties;
17173 }
17174
17175 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see
17176 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html
17177 template <typename X, typename Y, typename... Z>
17178 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
17179 {
17180 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2 &&
17181 "Function <vkGetPhysicalDeviceMemoryProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17182
17183 StructureChain<X, Y, Z...> structureChain;
17184 PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get<PhysicalDeviceMemoryProperties2>();
17185 getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17186 reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
17187
17188 return structureChain;
17189 }
17190
17191 // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see
17192 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html
17193 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2>
17194 PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
17195 {
17196 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2 &&
17197 "Function <vkGetPhysicalDeviceSparseImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
17198
17199 std::vector<SparseImageFormatProperties2> properties;
17200 uint32_t propertyCount;
17201 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17202 reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
17203 &propertyCount,
17204 nullptr );
17205 properties.resize( propertyCount );
17206 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17207 reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
17208 &propertyCount,
17209 reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
17210
17211 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
17212 if ( propertyCount < properties.size() )
17213 {
17214 properties.resize( propertyCount );
17215 }
17216 return properties;
17217 }
17218
17219 // wrapper function for command vkTrimCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPool.html
17220 VULKAN_HPP_INLINE void CommandPool::trim( CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
17221 {
17222 VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPool && "Function <vkTrimCommandPool> requires <VK_KHR_maintenance1> or <VK_VERSION_1_1>" );
17223
17224 getDispatcher()->vkTrimCommandPool(
17225 static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
17226 }
17227
17228 // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html
17229 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Queue Device::getQueue2( DeviceQueueInfo2 const & queueInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
17230 {
17231 VULKAN_HPP_NAMESPACE::Queue queue;
17232 getDispatcher()->vkGetDeviceQueue2(
17233 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceQueueInfo2 *>( &queueInfo ), reinterpret_cast<VkQueue *>( &queue ) );
17234
17235 return Queue( *this, *reinterpret_cast<VkQueue *>( &queue ) );
17236 }
17237
17238 // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see
17239 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html
17240 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalBufferProperties
17241 PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
17242 {
17243 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties &&
17244 "Function <vkGetPhysicalDeviceExternalBufferProperties> requires <VK_KHR_external_memory_capabilities> or <VK_VERSION_1_1>" );
17245
17246 ExternalBufferProperties externalBufferProperties;
17247 getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17248 reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
17249 reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
17250
17251 return externalBufferProperties;
17252 }
17253
17254 // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see
17255 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html
17256 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalFenceProperties
17257 PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT
17258 {
17259 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties &&
17260 "Function <vkGetPhysicalDeviceExternalFenceProperties> requires <VK_KHR_external_fence_capabilities> or <VK_VERSION_1_1>" );
17261
17262 ExternalFenceProperties externalFenceProperties;
17263 getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17264 reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
17265 reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
17266
17267 return externalFenceProperties;
17268 }
17269
17270 // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see
17271 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html
17272 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalSemaphoreProperties
17273 PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
17274 {
17275 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties &&
17276 "Function <vkGetPhysicalDeviceExternalSemaphoreProperties> requires <VK_KHR_external_semaphore_capabilities> or <VK_VERSION_1_1>" );
17277
17278 ExternalSemaphoreProperties externalSemaphoreProperties;
17279 getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties(
17280 static_cast<VkPhysicalDevice>( m_physicalDevice ),
17281 reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
17282 reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
17283
17284 return externalSemaphoreProperties;
17285 }
17286
17287 // wrapper function for command vkCmdDispatchBase, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBase.html
17288 VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX,
17289 uint32_t baseGroupY,
17290 uint32_t baseGroupZ,
17291 uint32_t groupCountX,
17292 uint32_t groupCountY,
17293 uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
17294 {
17295 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBase && "Function <vkCmdDispatchBase> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
17296
17297 getDispatcher()->vkCmdDispatchBase(
17298 static_cast<VkCommandBuffer>( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
17299 }
17300
17301 // wrapper function for command vkCreateDescriptorUpdateTemplate, see
17302 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html
17303 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DescriptorUpdateTemplate>::type
17304 Device::createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const & createInfo,
17305 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
17306 {
17307 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate;
17308 Result result =
17309 static_cast<Result>( getDispatcher()->vkCreateDescriptorUpdateTemplate( static_cast<VkDevice>( m_device ),
17310 reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( &createInfo ),
17311 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
17312 reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ) ) );
17313 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplate" );
17314 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
17315 result, DescriptorUpdateTemplate( *this, *reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ), allocator ) );
17316 }
17317
17318 // wrapper function for command vkUpdateDescriptorSetWithTemplate, see
17319 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html
17320 template <typename DataType>
17321 VULKAN_HPP_INLINE void DescriptorSet::updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
17322 DataType const & data ) const VULKAN_HPP_NOEXCEPT
17323 {
17324 VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSetWithTemplate &&
17325 "Function <vkUpdateDescriptorSetWithTemplate> requires <VK_KHR_descriptor_update_template> or <VK_VERSION_1_1>" );
17326
17327 getDispatcher()->vkUpdateDescriptorSetWithTemplate( static_cast<VkDevice>( m_device ),
17328 static_cast<VkDescriptorSet>( m_descriptorSet ),
17329 static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
17330 reinterpret_cast<const void *>( &data ) );
17331 }
17332
17333 // wrapper function for command vkGetDescriptorSetLayoutSupport, see
17334 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html
17335 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutSupport
17336 Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
17337 {
17338 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupport &&
17339 "Function <vkGetDescriptorSetLayoutSupport> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
17340
17341 DescriptorSetLayoutSupport support;
17342 getDispatcher()->vkGetDescriptorSetLayoutSupport( static_cast<VkDevice>( m_device ),
17343 reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
17344 reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
17345
17346 return support;
17347 }
17348
17349 // wrapper function for command vkGetDescriptorSetLayoutSupport, see
17350 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html
17351 template <typename X, typename Y, typename... Z>
17352 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
17353 Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
17354 {
17355 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupport &&
17356 "Function <vkGetDescriptorSetLayoutSupport> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
17357
17358 StructureChain<X, Y, Z...> structureChain;
17359 DescriptorSetLayoutSupport & support = structureChain.template get<DescriptorSetLayoutSupport>();
17360 getDispatcher()->vkGetDescriptorSetLayoutSupport( static_cast<VkDevice>( m_device ),
17361 reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
17362 reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
17363
17364 return structureChain;
17365 }
17366
17367 // wrapper function for command vkCreateSamplerYcbcrConversion, see
17368 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html
17369 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SamplerYcbcrConversion>::type
17370 Device::createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const & createInfo,
17371 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
17372 {
17373 VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion;
17374 Result result =
17375 static_cast<Result>( getDispatcher()->vkCreateSamplerYcbcrConversion( static_cast<VkDevice>( m_device ),
17376 reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( &createInfo ),
17377 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
17378 reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ) ) );
17379 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSamplerYcbcrConversion" );
17380 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
17381 result, SamplerYcbcrConversion( *this, *reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ), allocator ) );
17382 }
17383
17384 //=== VK_VERSION_1_2 ===
17385
17386 // wrapper function for command vkResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPool.html
17387 VULKAN_HPP_INLINE void QueryPool::reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
17388 {
17389 VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPool && "Function <vkResetQueryPool> requires <VK_EXT_host_query_reset> or <VK_VERSION_1_2>" );
17390
17391 getDispatcher()->vkResetQueryPool( static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
17392 }
17393
17394 // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html
17395 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<uint64_t>::type Semaphore::getCounterValue() const
17396 {
17397 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreCounterValue &&
17398 "Function <vkGetSemaphoreCounterValue> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
17399
17400 uint64_t value;
17401 Result result = static_cast<Result>(
17402 getDispatcher()->vkGetSemaphoreCounterValue( static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
17403 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Semaphore::getCounterValue" );
17404
17405 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( value ) );
17406 }
17407
17408 // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html
17409 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( const SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const
17410 {
17411 VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphores && "Function <vkWaitSemaphores> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
17412
17413 Result result = static_cast<Result>(
17414 getDispatcher()->vkWaitSemaphores( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
17415 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitSemaphores", { Result::eSuccess, Result::eTimeout } );
17416
17417 return static_cast<Result>( result );
17418 }
17419
17420 // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html
17421 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::signalSemaphore( const SemaphoreSignalInfo & signalInfo ) const
17422 {
17423 VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphore && "Function <vkSignalSemaphore> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
17424
17425 Result result = static_cast<Result>(
17426 getDispatcher()->vkSignalSemaphore( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
17427 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::signalSemaphore" );
17428
17429 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
17430 }
17431
17432 // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html
17433 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
17434 {
17435 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferDeviceAddress &&
17436 "Function <vkGetBufferDeviceAddress> requires <VK_EXT_buffer_device_address> or <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
17437
17438 VkDeviceAddress result =
17439 getDispatcher()->vkGetBufferDeviceAddress( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
17440
17441 return static_cast<DeviceAddress>( result );
17442 }
17443
17444 // wrapper function for command vkGetBufferOpaqueCaptureAddress, see
17445 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html
17446 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
17447 {
17448 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureAddress &&
17449 "Function <vkGetBufferOpaqueCaptureAddress> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
17450
17451 uint64_t result =
17452 getDispatcher()->vkGetBufferOpaqueCaptureAddress( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
17453
17454 return result;
17455 }
17456
17457 // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see
17458 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html
17459 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
17460 Device::getMemoryOpaqueCaptureAddress( const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
17461 {
17462 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress &&
17463 "Function <vkGetDeviceMemoryOpaqueCaptureAddress> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
17464
17465 uint64_t result = getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress( static_cast<VkDevice>( m_device ),
17466 reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
17467
17468 return result;
17469 }
17470
17471 // wrapper function for command vkCmdDrawIndirectCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount.html
17472 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer,
17473 DeviceSize offset,
17474 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
17475 DeviceSize countBufferOffset,
17476 uint32_t maxDrawCount,
17477 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
17478 {
17479 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCount &&
17480 "Function <vkCmdDrawIndirectCount> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
17481
17482 getDispatcher()->vkCmdDrawIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
17483 static_cast<VkBuffer>( buffer ),
17484 static_cast<VkDeviceSize>( offset ),
17485 static_cast<VkBuffer>( countBuffer ),
17486 static_cast<VkDeviceSize>( countBufferOffset ),
17487 maxDrawCount,
17488 stride );
17489 }
17490
17491 // wrapper function for command vkCmdDrawIndexedIndirectCount, see
17492 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount.html
17493 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer,
17494 DeviceSize offset,
17495 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
17496 DeviceSize countBufferOffset,
17497 uint32_t maxDrawCount,
17498 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
17499 {
17500 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirectCount &&
17501 "Function <vkCmdDrawIndexedIndirectCount> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
17502
17503 getDispatcher()->vkCmdDrawIndexedIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
17504 static_cast<VkBuffer>( buffer ),
17505 static_cast<VkDeviceSize>( offset ),
17506 static_cast<VkBuffer>( countBuffer ),
17507 static_cast<VkDeviceSize>( countBufferOffset ),
17508 maxDrawCount,
17509 stride );
17510 }
17511
17512 // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html
17513 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<RenderPass>::type
17514 Device::createRenderPass2( RenderPassCreateInfo2 const & createInfo,
17515 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
17516 {
17517 VULKAN_HPP_NAMESPACE::RenderPass renderPass;
17518 Result result = static_cast<Result>( getDispatcher()->vkCreateRenderPass2( static_cast<VkDevice>( m_device ),
17519 reinterpret_cast<const VkRenderPassCreateInfo2 *>( &createInfo ),
17520 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
17521 reinterpret_cast<VkRenderPass *>( &renderPass ) ) );
17522 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRenderPass2" );
17523 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, RenderPass( *this, *reinterpret_cast<VkRenderPass *>( &renderPass ), allocator ) );
17524 }
17525
17526 // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html
17527 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( const RenderPassBeginInfo & renderPassBegin,
17528 const SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
17529 {
17530 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2 &&
17531 "Function <vkCmdBeginRenderPass2> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
17532
17533 getDispatcher()->vkCmdBeginRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17534 reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
17535 reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
17536 }
17537
17538 // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html
17539 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( const SubpassBeginInfo & subpassBeginInfo,
17540 const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
17541 {
17542 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2 && "Function <vkCmdNextSubpass2> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
17543
17544 getDispatcher()->vkCmdNextSubpass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17545 reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
17546 reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
17547 }
17548
17549 // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html
17550 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
17551 {
17552 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2 && "Function <vkCmdEndRenderPass2> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
17553
17554 getDispatcher()->vkCmdEndRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
17555 }
17556
17557 //=== VK_VERSION_1_3 ===
17558
17559 // wrapper function for command vkGetPhysicalDeviceToolProperties, see
17560 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html
17561 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceToolProperties>>::type PhysicalDevice::getToolProperties() const
17562 {
17563 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceToolProperties &&
17564 "Function <vkGetPhysicalDeviceToolProperties> requires <VK_EXT_tooling_info> or <VK_VERSION_1_3>" );
17565
17566 std::vector<PhysicalDeviceToolProperties> toolProperties;
17567 uint32_t toolCount;
17568 Result result;
17569 do
17570 {
17571 result =
17572 static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceToolProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, nullptr ) );
17573 if ( ( result == Result::eSuccess ) && toolCount )
17574 {
17575 toolProperties.resize( toolCount );
17576 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceToolProperties(
17577 static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, reinterpret_cast<VkPhysicalDeviceToolProperties *>( toolProperties.data() ) ) );
17578 }
17579 } while ( result == Result::eIncomplete );
17580 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" );
17581 VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() );
17582 if ( toolCount < toolProperties.size() )
17583 {
17584 toolProperties.resize( toolCount );
17585 }
17586 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( toolProperties ) );
17587 }
17588
17589 // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html
17590 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PrivateDataSlot>::type
17591 Device::createPrivateDataSlot( PrivateDataSlotCreateInfo const & createInfo,
17592 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
17593 {
17594 VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot;
17595 Result result = static_cast<Result>( getDispatcher()->vkCreatePrivateDataSlot( static_cast<VkDevice>( m_device ),
17596 reinterpret_cast<const VkPrivateDataSlotCreateInfo *>( &createInfo ),
17597 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
17598 reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ) ) );
17599 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPrivateDataSlot" );
17600 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
17601 result, PrivateDataSlot( *this, *reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ), allocator ) );
17602 }
17603
17604 // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html
17605 VULKAN_HPP_INLINE typename ResultValueType<void>::type
17606 Device::setPrivateData( ObjectType objectType_, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const
17607 {
17608 VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateData && "Function <vkSetPrivateData> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
17609
17610 Result result = static_cast<Result>( getDispatcher()->vkSetPrivateData(
17611 static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), data ) );
17612 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setPrivateData" );
17613
17614 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
17615 }
17616
17617 // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html
17618 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateData( ObjectType objectType_,
17619 uint64_t objectHandle,
17620 VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT
17621 {
17622 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateData && "Function <vkGetPrivateData> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
17623
17624 uint64_t data;
17625 getDispatcher()->vkGetPrivateData(
17626 static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), &data );
17627
17628 return data;
17629 }
17630
17631 // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html
17632 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
17633 {
17634 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2 && "Function <vkCmdPipelineBarrier2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
17635
17636 getDispatcher()->vkCmdPipelineBarrier2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
17637 }
17638
17639 // wrapper function for command vkCmdWriteTimestamp2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2.html
17640 VULKAN_HPP_INLINE void
17641 CommandBuffer::writeTimestamp2( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT
17642 {
17643 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2 && "Function <vkCmdWriteTimestamp2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
17644
17645 getDispatcher()->vkCmdWriteTimestamp2(
17646 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineStageFlags2>( stage ), static_cast<VkQueryPool>( queryPool ), query );
17647 }
17648
17649 // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html
17650 VULKAN_HPP_INLINE typename ResultValueType<void>::type Queue::submit2( ArrayProxy<const SubmitInfo2> const & submits,
17651 VULKAN_HPP_NAMESPACE::Fence fence ) const
17652 {
17653 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2 && "Function <vkQueueSubmit2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
17654
17655 Result result = static_cast<Result>( getDispatcher()->vkQueueSubmit2(
17656 static_cast<VkQueue>( m_queue ), submits.size(), reinterpret_cast<const VkSubmitInfo2 *>( submits.data() ), static_cast<VkFence>( fence ) ) );
17657 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::submit2" );
17658
17659 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
17660 }
17661
17662 // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html
17663 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( const CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT
17664 {
17665 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2 && "Function <vkCmdCopyBuffer2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
17666
17667 getDispatcher()->vkCmdCopyBuffer2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyBufferInfo2 *>( &copyBufferInfo ) );
17668 }
17669
17670 // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html
17671 VULKAN_HPP_INLINE void CommandBuffer::copyImage2( const CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT
17672 {
17673 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2 && "Function <vkCmdCopyImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
17674
17675 getDispatcher()->vkCmdCopyImage2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyImageInfo2 *>( &copyImageInfo ) );
17676 }
17677
17678 // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html
17679 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2( const CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT
17680 {
17681 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2 &&
17682 "Function <vkCmdCopyBufferToImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
17683
17684 getDispatcher()->vkCmdCopyBufferToImage2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17685 reinterpret_cast<const VkCopyBufferToImageInfo2 *>( &copyBufferToImageInfo ) );
17686 }
17687
17688 // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html
17689 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2( const CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT
17690 {
17691 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2 &&
17692 "Function <vkCmdCopyImageToBuffer2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
17693
17694 getDispatcher()->vkCmdCopyImageToBuffer2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17695 reinterpret_cast<const VkCopyImageToBufferInfo2 *>( &copyImageToBufferInfo ) );
17696 }
17697
17698 // wrapper function for command vkGetDeviceBufferMemoryRequirements, see
17699 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html
17700 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
17701 Device::getBufferMemoryRequirements( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
17702 {
17703 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirements &&
17704 "Function <vkGetDeviceBufferMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
17705
17706 MemoryRequirements2 memoryRequirements;
17707 getDispatcher()->vkGetDeviceBufferMemoryRequirements( static_cast<VkDevice>( m_device ),
17708 reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
17709 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17710
17711 return memoryRequirements;
17712 }
17713
17714 // wrapper function for command vkGetDeviceBufferMemoryRequirements, see
17715 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html
17716 template <typename X, typename Y, typename... Z>
17717 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
17718 Device::getBufferMemoryRequirements( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
17719 {
17720 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirements &&
17721 "Function <vkGetDeviceBufferMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
17722
17723 StructureChain<X, Y, Z...> structureChain;
17724 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
17725 getDispatcher()->vkGetDeviceBufferMemoryRequirements( static_cast<VkDevice>( m_device ),
17726 reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
17727 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17728
17729 return structureChain;
17730 }
17731
17732 // wrapper function for command vkGetDeviceImageMemoryRequirements, see
17733 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html
17734 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
17735 Device::getImageMemoryRequirements( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
17736 {
17737 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirements &&
17738 "Function <vkGetDeviceImageMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
17739
17740 MemoryRequirements2 memoryRequirements;
17741 getDispatcher()->vkGetDeviceImageMemoryRequirements( static_cast<VkDevice>( m_device ),
17742 reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
17743 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17744
17745 return memoryRequirements;
17746 }
17747
17748 // wrapper function for command vkGetDeviceImageMemoryRequirements, see
17749 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html
17750 template <typename X, typename Y, typename... Z>
17751 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
17752 Device::getImageMemoryRequirements( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
17753 {
17754 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirements &&
17755 "Function <vkGetDeviceImageMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
17756
17757 StructureChain<X, Y, Z...> structureChain;
17758 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
17759 getDispatcher()->vkGetDeviceImageMemoryRequirements( static_cast<VkDevice>( m_device ),
17760 reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
17761 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17762
17763 return structureChain;
17764 }
17765
17766 // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see
17767 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html
17768 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2>
17769 Device::getImageSparseMemoryRequirements( const DeviceImageMemoryRequirements & info ) const
17770 {
17771 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSparseMemoryRequirements &&
17772 "Function <vkGetDeviceImageSparseMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
17773
17774 std::vector<SparseImageMemoryRequirements2> sparseMemoryRequirements;
17775 uint32_t sparseMemoryRequirementCount;
17776 getDispatcher()->vkGetDeviceImageSparseMemoryRequirements(
17777 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ), &sparseMemoryRequirementCount, nullptr );
17778 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
17779 getDispatcher()->vkGetDeviceImageSparseMemoryRequirements( static_cast<VkDevice>( m_device ),
17780 reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
17781 &sparseMemoryRequirementCount,
17782 reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
17783
17784 VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
17785 if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
17786 {
17787 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
17788 }
17789 return sparseMemoryRequirements;
17790 }
17791
17792 // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html
17793 VULKAN_HPP_INLINE void CommandBuffer::setEvent2( VULKAN_HPP_NAMESPACE::Event event, const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
17794 {
17795 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2 && "Function <vkCmdSetEvent2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
17796
17797 getDispatcher()->vkCmdSetEvent2(
17798 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
17799 }
17800
17801 // wrapper function for command vkCmdResetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2.html
17802 VULKAN_HPP_INLINE void CommandBuffer::resetEvent2( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT
17803 {
17804 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2 && "Function <vkCmdResetEvent2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
17805
17806 getDispatcher()->vkCmdResetEvent2(
17807 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags2>( stageMask ) );
17808 }
17809
17810 // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html
17811 VULKAN_HPP_INLINE void CommandBuffer::waitEvents2( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,
17812 ArrayProxy<const DependencyInfo> const & dependencyInfos ) const
17813 {
17814 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2 && "Function <vkCmdWaitEvents2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
17815 # ifdef VULKAN_HPP_NO_EXCEPTIONS
17816 VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() );
17817 # else
17818 if ( events.size() != dependencyInfos.size() )
17819 {
17820 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2: events.size() != dependencyInfos.size()" );
17821 }
17822 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
17823
17824 getDispatcher()->vkCmdWaitEvents2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17825 events.size(),
17826 reinterpret_cast<const VkEvent *>( events.data() ),
17827 reinterpret_cast<const VkDependencyInfo *>( dependencyInfos.data() ) );
17828 }
17829
17830 // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html
17831 VULKAN_HPP_INLINE void CommandBuffer::blitImage2( const BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT
17832 {
17833 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2 && "Function <vkCmdBlitImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
17834
17835 getDispatcher()->vkCmdBlitImage2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkBlitImageInfo2 *>( &blitImageInfo ) );
17836 }
17837
17838 // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html
17839 VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( const ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT
17840 {
17841 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2 && "Function <vkCmdResolveImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
17842
17843 getDispatcher()->vkCmdResolveImage2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17844 reinterpret_cast<const VkResolveImageInfo2 *>( &resolveImageInfo ) );
17845 }
17846
17847 // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html
17848 VULKAN_HPP_INLINE void CommandBuffer::beginRendering( const RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT
17849 {
17850 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRendering && "Function <vkCmdBeginRendering> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
17851
17852 getDispatcher()->vkCmdBeginRendering( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkRenderingInfo *>( &renderingInfo ) );
17853 }
17854
17855 // wrapper function for command vkCmdEndRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering.html
17856 VULKAN_HPP_INLINE void CommandBuffer::endRendering() const VULKAN_HPP_NOEXCEPT
17857 {
17858 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering && "Function <vkCmdEndRendering> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
17859
17860 getDispatcher()->vkCmdEndRendering( static_cast<VkCommandBuffer>( m_commandBuffer ) );
17861 }
17862
17863 // wrapper function for command vkCmdSetCullMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullMode.html
17864 VULKAN_HPP_INLINE void CommandBuffer::setCullMode( CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT
17865 {
17866 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullMode &&
17867 "Function <vkCmdSetCullMode> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17868
17869 getDispatcher()->vkCmdSetCullMode( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCullModeFlags>( cullMode ) );
17870 }
17871
17872 // wrapper function for command vkCmdSetFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFace.html
17873 VULKAN_HPP_INLINE void CommandBuffer::setFrontFace( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT
17874 {
17875 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFace &&
17876 "Function <vkCmdSetFrontFace> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17877
17878 getDispatcher()->vkCmdSetFrontFace( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkFrontFace>( frontFace ) );
17879 }
17880
17881 // wrapper function for command vkCmdSetPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopology.html
17882 VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopology( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT
17883 {
17884 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveTopology &&
17885 "Function <vkCmdSetPrimitiveTopology> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17886
17887 getDispatcher()->vkCmdSetPrimitiveTopology( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPrimitiveTopology>( primitiveTopology ) );
17888 }
17889
17890 // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html
17891 VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCount( ArrayProxy<const Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
17892 {
17893 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWithCount &&
17894 "Function <vkCmdSetViewportWithCount> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17895
17896 getDispatcher()->vkCmdSetViewportWithCount(
17897 static_cast<VkCommandBuffer>( m_commandBuffer ), viewports.size(), reinterpret_cast<const VkViewport *>( viewports.data() ) );
17898 }
17899
17900 // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html
17901 VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCount( ArrayProxy<const Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
17902 {
17903 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissorWithCount &&
17904 "Function <vkCmdSetScissorWithCount> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17905
17906 getDispatcher()->vkCmdSetScissorWithCount(
17907 static_cast<VkCommandBuffer>( m_commandBuffer ), scissors.size(), reinterpret_cast<const VkRect2D *>( scissors.data() ) );
17908 }
17909
17910 // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html
17911 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( uint32_t firstBinding,
17912 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
17913 ArrayProxy<const DeviceSize> const & offsets,
17914 ArrayProxy<const DeviceSize> const & sizes,
17915 ArrayProxy<const DeviceSize> const & strides ) const
17916 {
17917 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers2 &&
17918 "Function <vkCmdBindVertexBuffers2> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17919 # ifdef VULKAN_HPP_NO_EXCEPTIONS
17920 VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
17921 VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
17922 VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() );
17923 # else
17924 if ( buffers.size() != offsets.size() )
17925 {
17926 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != offsets.size()" );
17927 }
17928 if ( !sizes.empty() && buffers.size() != sizes.size() )
17929 {
17930 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != sizes.size()" );
17931 }
17932 if ( !strides.empty() && buffers.size() != strides.size() )
17933 {
17934 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != strides.size()" );
17935 }
17936 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
17937
17938 getDispatcher()->vkCmdBindVertexBuffers2( static_cast<VkCommandBuffer>( m_commandBuffer ),
17939 firstBinding,
17940 buffers.size(),
17941 reinterpret_cast<const VkBuffer *>( buffers.data() ),
17942 reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
17943 reinterpret_cast<const VkDeviceSize *>( sizes.data() ),
17944 reinterpret_cast<const VkDeviceSize *>( strides.data() ) );
17945 }
17946
17947 // wrapper function for command vkCmdSetDepthTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnable.html
17948 VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnable( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT
17949 {
17950 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthTestEnable &&
17951 "Function <vkCmdSetDepthTestEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17952
17953 getDispatcher()->vkCmdSetDepthTestEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthTestEnable ) );
17954 }
17955
17956 // wrapper function for command vkCmdSetDepthWriteEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnable.html
17957 VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnable( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT
17958 {
17959 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthWriteEnable &&
17960 "Function <vkCmdSetDepthWriteEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17961
17962 getDispatcher()->vkCmdSetDepthWriteEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthWriteEnable ) );
17963 }
17964
17965 // wrapper function for command vkCmdSetDepthCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOp.html
17966 VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOp( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT
17967 {
17968 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthCompareOp &&
17969 "Function <vkCmdSetDepthCompareOp> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17970
17971 getDispatcher()->vkCmdSetDepthCompareOp( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCompareOp>( depthCompareOp ) );
17972 }
17973
17974 // wrapper function for command vkCmdSetDepthBoundsTestEnable, see
17975 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnable.html
17976 VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT
17977 {
17978 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBoundsTestEnable &&
17979 "Function <vkCmdSetDepthBoundsTestEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17980
17981 getDispatcher()->vkCmdSetDepthBoundsTestEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBoundsTestEnable ) );
17982 }
17983
17984 // wrapper function for command vkCmdSetStencilTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnable.html
17985 VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnable( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT
17986 {
17987 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilTestEnable &&
17988 "Function <vkCmdSetStencilTestEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17989
17990 getDispatcher()->vkCmdSetStencilTestEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( stencilTestEnable ) );
17991 }
17992
17993 // wrapper function for command vkCmdSetStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOp.html
17994 VULKAN_HPP_INLINE void CommandBuffer::setStencilOp(
17995 StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT
17996 {
17997 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOp &&
17998 "Function <vkCmdSetStencilOp> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
17999
18000 getDispatcher()->vkCmdSetStencilOp( static_cast<VkCommandBuffer>( m_commandBuffer ),
18001 static_cast<VkStencilFaceFlags>( faceMask ),
18002 static_cast<VkStencilOp>( failOp ),
18003 static_cast<VkStencilOp>( passOp ),
18004 static_cast<VkStencilOp>( depthFailOp ),
18005 static_cast<VkCompareOp>( compareOp ) );
18006 }
18007
18008 // wrapper function for command vkCmdSetRasterizerDiscardEnable, see
18009 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnable.html
18010 VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT
18011 {
18012 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizerDiscardEnable &&
18013 "Function <vkCmdSetRasterizerDiscardEnable> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
18014
18015 getDispatcher()->vkCmdSetRasterizerDiscardEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( rasterizerDiscardEnable ) );
18016 }
18017
18018 // wrapper function for command vkCmdSetDepthBiasEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnable.html
18019 VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnable( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT
18020 {
18021 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBiasEnable &&
18022 "Function <vkCmdSetDepthBiasEnable> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
18023
18024 getDispatcher()->vkCmdSetDepthBiasEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBiasEnable ) );
18025 }
18026
18027 // wrapper function for command vkCmdSetPrimitiveRestartEnable, see
18028 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnable.html
18029 VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnable( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT
18030 {
18031 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveRestartEnable &&
18032 "Function <vkCmdSetPrimitiveRestartEnable> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
18033
18034 getDispatcher()->vkCmdSetPrimitiveRestartEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( primitiveRestartEnable ) );
18035 }
18036
18037 //=== VK_VERSION_1_4 ===
18038
18039 // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html
18040 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<void *>::type Device::mapMemory2( const MemoryMapInfo & memoryMapInfo ) const
18041 {
18042 VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory2 && "Function <vkMapMemory2> requires <VK_KHR_map_memory2> or <VK_VERSION_1_4>" );
18043
18044 void * pData;
18045 Result result = static_cast<Result>(
18046 getDispatcher()->vkMapMemory2( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryMapInfo *>( &memoryMapInfo ), &pData ) );
18047 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::mapMemory2" );
18048
18049 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pData ) );
18050 }
18051
18052 // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html
18053 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::unmapMemory2( const MemoryUnmapInfo & memoryUnmapInfo ) const
18054 {
18055 VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory2 && "Function <vkUnmapMemory2> requires <VK_KHR_map_memory2> or <VK_VERSION_1_4>" );
18056
18057 Result result = static_cast<Result>(
18058 getDispatcher()->vkUnmapMemory2( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryUnmapInfo *>( &memoryUnmapInfo ) ) );
18059 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::unmapMemory2" );
18060
18061 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
18062 }
18063
18064 // wrapper function for command vkGetDeviceImageSubresourceLayout, see
18065 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html
18066 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2
18067 Device::getImageSubresourceLayout( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT
18068 {
18069 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayout &&
18070 "Function <vkGetDeviceImageSubresourceLayout> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
18071
18072 SubresourceLayout2 layout;
18073 getDispatcher()->vkGetDeviceImageSubresourceLayout( static_cast<VkDevice>( m_device ),
18074 reinterpret_cast<const VkDeviceImageSubresourceInfo *>( &info ),
18075 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
18076
18077 return layout;
18078 }
18079
18080 // wrapper function for command vkGetDeviceImageSubresourceLayout, see
18081 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html
18082 template <typename X, typename Y, typename... Z>
18083 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
18084 Device::getImageSubresourceLayout( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT
18085 {
18086 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayout &&
18087 "Function <vkGetDeviceImageSubresourceLayout> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
18088
18089 StructureChain<X, Y, Z...> structureChain;
18090 SubresourceLayout2 & layout = structureChain.template get<SubresourceLayout2>();
18091 getDispatcher()->vkGetDeviceImageSubresourceLayout( static_cast<VkDevice>( m_device ),
18092 reinterpret_cast<const VkDeviceImageSubresourceInfo *>( &info ),
18093 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
18094
18095 return structureChain;
18096 }
18097
18098 // wrapper function for command vkGetImageSubresourceLayout2, see
18099 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html
18100 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Image::getSubresourceLayout2( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT
18101 {
18102 VULKAN_HPP_ASSERT(
18103 getDispatcher()->vkGetImageSubresourceLayout2 &&
18104 "Function <vkGetImageSubresourceLayout2> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
18105
18106 SubresourceLayout2 layout;
18107 getDispatcher()->vkGetImageSubresourceLayout2( static_cast<VkDevice>( m_device ),
18108 static_cast<VkImage>( m_image ),
18109 reinterpret_cast<const VkImageSubresource2 *>( &subresource ),
18110 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
18111
18112 return layout;
18113 }
18114
18115 // wrapper function for command vkGetImageSubresourceLayout2, see
18116 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html
18117 template <typename X, typename Y, typename... Z>
18118 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
18119 Image::getSubresourceLayout2( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT
18120 {
18121 VULKAN_HPP_ASSERT(
18122 getDispatcher()->vkGetImageSubresourceLayout2 &&
18123 "Function <vkGetImageSubresourceLayout2> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
18124
18125 StructureChain<X, Y, Z...> structureChain;
18126 SubresourceLayout2 & layout = structureChain.template get<SubresourceLayout2>();
18127 getDispatcher()->vkGetImageSubresourceLayout2( static_cast<VkDevice>( m_device ),
18128 static_cast<VkImage>( m_image ),
18129 reinterpret_cast<const VkImageSubresource2 *>( &subresource ),
18130 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
18131
18132 return structureChain;
18133 }
18134
18135 // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html
18136 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::copyMemoryToImage( const CopyMemoryToImageInfo & copyMemoryToImageInfo ) const
18137 {
18138 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToImage && "Function <vkCopyMemoryToImage> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
18139
18140 Result result = static_cast<Result>( getDispatcher()->vkCopyMemoryToImage(
18141 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyMemoryToImageInfo *>( &copyMemoryToImageInfo ) ) );
18142 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToImage" );
18143
18144 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
18145 }
18146
18147 // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html
18148 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::copyImageToMemory( const CopyImageToMemoryInfo & copyImageToMemoryInfo ) const
18149 {
18150 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToMemory && "Function <vkCopyImageToMemory> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
18151
18152 Result result = static_cast<Result>( getDispatcher()->vkCopyImageToMemory(
18153 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyImageToMemoryInfo *>( &copyImageToMemoryInfo ) ) );
18154 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToMemory" );
18155
18156 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
18157 }
18158
18159 // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html
18160 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::copyImageToImage( const CopyImageToImageInfo & copyImageToImageInfo ) const
18161 {
18162 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToImage && "Function <vkCopyImageToImage> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
18163
18164 Result result = static_cast<Result>(
18165 getDispatcher()->vkCopyImageToImage( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyImageToImageInfo *>( &copyImageToImageInfo ) ) );
18166 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToImage" );
18167
18168 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
18169 }
18170
18171 // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html
18172 VULKAN_HPP_INLINE typename ResultValueType<void>::type
18173 Device::transitionImageLayout( ArrayProxy<const HostImageLayoutTransitionInfo> const & transitions ) const
18174 {
18175 VULKAN_HPP_ASSERT( getDispatcher()->vkTransitionImageLayout &&
18176 "Function <vkTransitionImageLayout> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
18177
18178 Result result = static_cast<Result>( getDispatcher()->vkTransitionImageLayout(
18179 static_cast<VkDevice>( m_device ), transitions.size(), reinterpret_cast<const VkHostImageLayoutTransitionInfo *>( transitions.data() ) ) );
18180 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::transitionImageLayout" );
18181
18182 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
18183 }
18184
18185 // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html
18186 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet( PipelineBindPoint pipelineBindPoint,
18187 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
18188 uint32_t set,
18189 ArrayProxy<const WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT
18190 {
18191 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet && "Function <vkCmdPushDescriptorSet> requires <VK_KHR_push_descriptor> or <VK_VERSION_1_4>" );
18192
18193 getDispatcher()->vkCmdPushDescriptorSet( static_cast<VkCommandBuffer>( m_commandBuffer ),
18194 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
18195 static_cast<VkPipelineLayout>( layout ),
18196 set,
18197 descriptorWrites.size(),
18198 reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ) );
18199 }
18200
18201 // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see
18202 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html
18203 template <typename DataType>
18204 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
18205 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
18206 uint32_t set,
18207 DataType const & data ) const VULKAN_HPP_NOEXCEPT
18208 {
18209 VULKAN_HPP_ASSERT(
18210 getDispatcher()->vkCmdPushDescriptorSetWithTemplate &&
18211 "Function <vkCmdPushDescriptorSetWithTemplate> requires <VK_KHR_descriptor_update_template> or <VK_KHR_push_descriptor> or <VK_VERSION_1_4>" );
18212
18213 getDispatcher()->vkCmdPushDescriptorSetWithTemplate( static_cast<VkCommandBuffer>( m_commandBuffer ),
18214 static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
18215 static_cast<VkPipelineLayout>( layout ),
18216 set,
18217 reinterpret_cast<const void *>( &data ) );
18218 }
18219
18220 // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html
18221 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2( const BindDescriptorSetsInfo & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT
18222 {
18223 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets2 &&
18224 "Function <vkCmdBindDescriptorSets2> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
18225
18226 getDispatcher()->vkCmdBindDescriptorSets2( static_cast<VkCommandBuffer>( m_commandBuffer ),
18227 reinterpret_cast<const VkBindDescriptorSetsInfo *>( &bindDescriptorSetsInfo ) );
18228 }
18229
18230 // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html
18231 VULKAN_HPP_INLINE void CommandBuffer::pushConstants2( const PushConstantsInfo & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT
18232 {
18233 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants2 && "Function <vkCmdPushConstants2> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
18234
18235 getDispatcher()->vkCmdPushConstants2( static_cast<VkCommandBuffer>( m_commandBuffer ),
18236 reinterpret_cast<const VkPushConstantsInfo *>( &pushConstantsInfo ) );
18237 }
18238
18239 // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html
18240 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2( const PushDescriptorSetInfo & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT
18241 {
18242 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet2 && "Function <vkCmdPushDescriptorSet2> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
18243
18244 getDispatcher()->vkCmdPushDescriptorSet2( static_cast<VkCommandBuffer>( m_commandBuffer ),
18245 reinterpret_cast<const VkPushDescriptorSetInfo *>( &pushDescriptorSetInfo ) );
18246 }
18247
18248 // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see
18249 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html
18250 VULKAN_HPP_INLINE void
18251 CommandBuffer::pushDescriptorSetWithTemplate2( const PushDescriptorSetWithTemplateInfo & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT
18252 {
18253 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetWithTemplate2 &&
18254 "Function <vkCmdPushDescriptorSetWithTemplate2> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
18255
18256 getDispatcher()->vkCmdPushDescriptorSetWithTemplate2(
18257 static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPushDescriptorSetWithTemplateInfo *>( &pushDescriptorSetWithTemplateInfo ) );
18258 }
18259
18260 // wrapper function for command vkCmdSetLineStipple, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStipple.html
18261 VULKAN_HPP_INLINE void CommandBuffer::setLineStipple( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
18262 {
18263 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStipple &&
18264 "Function <vkCmdSetLineStipple> requires <VK_EXT_line_rasterization> or <VK_KHR_line_rasterization> or <VK_VERSION_1_4>" );
18265
18266 getDispatcher()->vkCmdSetLineStipple( static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
18267 }
18268
18269 // wrapper function for command vkCmdBindIndexBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2.html
18270 VULKAN_HPP_INLINE void
18271 CommandBuffer::bindIndexBuffer2( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType ) const VULKAN_HPP_NOEXCEPT
18272 {
18273 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer2 && "Function <vkCmdBindIndexBuffer2> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
18274
18275 getDispatcher()->vkCmdBindIndexBuffer2( static_cast<VkCommandBuffer>( m_commandBuffer ),
18276 static_cast<VkBuffer>( buffer ),
18277 static_cast<VkDeviceSize>( offset ),
18278 static_cast<VkDeviceSize>( size ),
18279 static_cast<VkIndexType>( indexType ) );
18280 }
18281
18282 // wrapper function for command vkGetRenderingAreaGranularity, see
18283 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html
18284 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D Device::getRenderingAreaGranularity( const RenderingAreaInfo & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT
18285 {
18286 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderingAreaGranularity &&
18287 "Function <vkGetRenderingAreaGranularity> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
18288
18289 Extent2D granularity;
18290 getDispatcher()->vkGetRenderingAreaGranularity( static_cast<VkDevice>( m_device ),
18291 reinterpret_cast<const VkRenderingAreaInfo *>( &renderingAreaInfo ),
18292 reinterpret_cast<VkExtent2D *>( &granularity ) );
18293
18294 return granularity;
18295 }
18296
18297 // wrapper function for command vkCmdSetRenderingAttachmentLocations, see
18298 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html
18299 VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocations( const RenderingAttachmentLocationInfo & locationInfo ) const VULKAN_HPP_NOEXCEPT
18300 {
18301 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingAttachmentLocations &&
18302 "Function <vkCmdSetRenderingAttachmentLocations> requires <VK_KHR_dynamic_rendering_local_read> or <VK_VERSION_1_4>" );
18303
18304 getDispatcher()->vkCmdSetRenderingAttachmentLocations( static_cast<VkCommandBuffer>( m_commandBuffer ),
18305 reinterpret_cast<const VkRenderingAttachmentLocationInfo *>( &locationInfo ) );
18306 }
18307
18308 // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see
18309 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html
18310 VULKAN_HPP_INLINE void
18311 CommandBuffer::setRenderingInputAttachmentIndices( const RenderingInputAttachmentIndexInfo & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT
18312 {
18313 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingInputAttachmentIndices &&
18314 "Function <vkCmdSetRenderingInputAttachmentIndices> requires <VK_KHR_dynamic_rendering_local_read> or <VK_VERSION_1_4>" );
18315
18316 getDispatcher()->vkCmdSetRenderingInputAttachmentIndices( static_cast<VkCommandBuffer>( m_commandBuffer ),
18317 reinterpret_cast<const VkRenderingInputAttachmentIndexInfo *>( &inputAttachmentIndexInfo ) );
18318 }
18319
18320 //=== VK_KHR_surface ===
18321
18322 // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see
18323 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html
18324 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Bool32>::type
18325 PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
18326 {
18327 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR && "Function <vkGetPhysicalDeviceSurfaceSupportKHR> requires <VK_KHR_surface>" );
18328
18329 Bool32 supported;
18330 Result result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18331 queueFamilyIndex,
18332 static_cast<VkSurfaceKHR>( surface ),
18333 reinterpret_cast<VkBool32 *>( &supported ) ) );
18334 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" );
18335
18336 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( supported ) );
18337 }
18338
18339 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see
18340 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html
18341 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceCapabilitiesKHR>::type
18342 PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
18343 {
18344 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR &&
18345 "Function <vkGetPhysicalDeviceSurfaceCapabilitiesKHR> requires <VK_KHR_surface>" );
18346
18347 SurfaceCapabilitiesKHR surfaceCapabilities;
18348 Result result = static_cast<Result>(
18349 getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18350 static_cast<VkSurfaceKHR>( surface ),
18351 reinterpret_cast<VkSurfaceCapabilitiesKHR *>( &surfaceCapabilities ) ) );
18352 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" );
18353
18354 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceCapabilities ) );
18355 }
18356
18357 // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see
18358 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html
18359 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR>>::type
18360 PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
18361 {
18362 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR && "Function <vkGetPhysicalDeviceSurfaceFormatsKHR> requires <VK_KHR_surface>" );
18363
18364 std::vector<SurfaceFormatKHR> surfaceFormats;
18365 uint32_t surfaceFormatCount;
18366 Result result;
18367 do
18368 {
18369 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR(
18370 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
18371 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
18372 {
18373 surfaceFormats.resize( surfaceFormatCount );
18374 result =
18375 static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18376 static_cast<VkSurfaceKHR>( surface ),
18377 &surfaceFormatCount,
18378 reinterpret_cast<VkSurfaceFormatKHR *>( surfaceFormats.data() ) ) );
18379 }
18380 } while ( result == Result::eIncomplete );
18381 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" );
18382 VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
18383 if ( surfaceFormatCount < surfaceFormats.size() )
18384 {
18385 surfaceFormats.resize( surfaceFormatCount );
18386 }
18387 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceFormats ) );
18388 }
18389
18390 // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see
18391 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html
18392 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR>>::type
18393 PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
18394 {
18395 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR &&
18396 "Function <vkGetPhysicalDeviceSurfacePresentModesKHR> requires <VK_KHR_surface>" );
18397
18398 std::vector<PresentModeKHR> presentModes;
18399 uint32_t presentModeCount;
18400 Result result;
18401 do
18402 {
18403 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR(
18404 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
18405 if ( ( result == Result::eSuccess ) && presentModeCount )
18406 {
18407 presentModes.resize( presentModeCount );
18408 result =
18409 static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18410 static_cast<VkSurfaceKHR>( surface ),
18411 &presentModeCount,
18412 reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
18413 }
18414 } while ( result == Result::eIncomplete );
18415 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" );
18416 VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
18417 if ( presentModeCount < presentModes.size() )
18418 {
18419 presentModes.resize( presentModeCount );
18420 }
18421 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( presentModes ) );
18422 }
18423
18424 //=== VK_KHR_swapchain ===
18425
18426 // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html
18427 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SwapchainKHR>::type
18428 Device::createSwapchainKHR( SwapchainCreateInfoKHR const & createInfo,
18429 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18430 {
18431 VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain;
18432 Result result = static_cast<Result>( getDispatcher()->vkCreateSwapchainKHR( static_cast<VkDevice>( m_device ),
18433 reinterpret_cast<const VkSwapchainCreateInfoKHR *>( &createInfo ),
18434 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18435 reinterpret_cast<VkSwapchainKHR *>( &swapchain ) ) );
18436 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSwapchainKHR" );
18437 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SwapchainKHR( *this, *reinterpret_cast<VkSwapchainKHR *>( &swapchain ), allocator ) );
18438 }
18439
18440 // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html
18441 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<VULKAN_HPP_NAMESPACE::Image>>::type SwapchainKHR::getImages() const
18442 {
18443 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainImagesKHR && "Function <vkGetSwapchainImagesKHR> requires <VK_KHR_swapchain>" );
18444
18445 std::vector<VULKAN_HPP_NAMESPACE::Image> swapchainImages;
18446 uint32_t swapchainImageCount;
18447 Result result;
18448 do
18449 {
18450 result = static_cast<Result>( getDispatcher()->vkGetSwapchainImagesKHR(
18451 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), &swapchainImageCount, nullptr ) );
18452 if ( ( result == Result::eSuccess ) && swapchainImageCount )
18453 {
18454 swapchainImages.resize( swapchainImageCount );
18455 result = static_cast<Result>( getDispatcher()->vkGetSwapchainImagesKHR( static_cast<VkDevice>( m_device ),
18456 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
18457 &swapchainImageCount,
18458 reinterpret_cast<VkImage *>( swapchainImages.data() ) ) );
18459 }
18460 } while ( result == Result::eIncomplete );
18461 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getImages" );
18462 VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
18463 if ( swapchainImageCount < swapchainImages.size() )
18464 {
18465 swapchainImages.resize( swapchainImageCount );
18466 }
18467 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( swapchainImages ) );
18468 }
18469
18470 // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html
18471 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue<uint32_t>
18472 SwapchainKHR::acquireNextImage( uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence ) const
18473 {
18474 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImageKHR && "Function <vkAcquireNextImageKHR> requires <VK_KHR_swapchain>" );
18475
18476 uint32_t imageIndex;
18477 Result result = static_cast<Result>( getDispatcher()->vkAcquireNextImageKHR( static_cast<VkDevice>( m_device ),
18478 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
18479 timeout,
18480 static_cast<VkSemaphore>( semaphore ),
18481 static_cast<VkFence>( fence ),
18482 &imageIndex ) );
18483
18484 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
18485 VULKAN_HPP_NAMESPACE::detail::resultCheck(
18486 result,
18487 VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage",
18488 { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } );
18489 # else
18490 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
18491 VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage",
18492 { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
18493 # endif
18494
18495 return ResultValue<uint32_t>( result, std::move( imageIndex ) );
18496 }
18497
18498 // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html
18499 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
18500 {
18501 VULKAN_HPP_ASSERT( getDispatcher()->vkQueuePresentKHR && "Function <vkQueuePresentKHR> requires <VK_KHR_swapchain>" );
18502
18503 Result result = static_cast<Result>(
18504 getDispatcher()->vkQueuePresentKHR( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkPresentInfoKHR *>( &presentInfo ) ) );
18505
18506 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
18507 VULKAN_HPP_NAMESPACE::detail::resultCheck(
18508 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } );
18509 # else
18510 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
18511 # endif
18512
18513 return static_cast<Result>( result );
18514 }
18515
18516 // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see
18517 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html
18518 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DeviceGroupPresentCapabilitiesKHR>::type Device::getGroupPresentCapabilitiesKHR() const
18519 {
18520 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR &&
18521 "Function <vkGetDeviceGroupPresentCapabilitiesKHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
18522
18523 DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities;
18524 Result result = static_cast<Result>( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR(
18525 static_cast<VkDevice>( m_device ), reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( &deviceGroupPresentCapabilities ) ) );
18526 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" );
18527
18528 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( deviceGroupPresentCapabilities ) );
18529 }
18530
18531 // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see
18532 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html
18533 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DeviceGroupPresentModeFlagsKHR>::type
18534 Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
18535 {
18536 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR &&
18537 "Function <vkGetDeviceGroupSurfacePresentModesKHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
18538
18539 DeviceGroupPresentModeFlagsKHR modes;
18540 Result result = static_cast<Result>( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR(
18541 static_cast<VkDevice>( m_device ), static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
18542 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" );
18543
18544 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( modes ) );
18545 }
18546
18547 // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see
18548 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html
18549 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D>>::type
18550 PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
18551 {
18552 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR &&
18553 "Function <vkGetPhysicalDevicePresentRectanglesKHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
18554
18555 std::vector<Rect2D> rects;
18556 uint32_t rectCount;
18557 Result result;
18558 do
18559 {
18560 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR(
18561 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
18562 if ( ( result == Result::eSuccess ) && rectCount )
18563 {
18564 rects.resize( rectCount );
18565 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18566 static_cast<VkSurfaceKHR>( surface ),
18567 &rectCount,
18568 reinterpret_cast<VkRect2D *>( rects.data() ) ) );
18569 }
18570 } while ( result == Result::eIncomplete );
18571 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" );
18572 VULKAN_HPP_ASSERT( rectCount <= rects.size() );
18573 if ( rectCount < rects.size() )
18574 {
18575 rects.resize( rectCount );
18576 }
18577 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( rects ) );
18578 }
18579
18580 // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html
18581 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo ) const
18582 {
18583 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImage2KHR && "Function <vkAcquireNextImage2KHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
18584
18585 uint32_t imageIndex;
18586 Result result = static_cast<Result>( getDispatcher()->vkAcquireNextImage2KHR(
18587 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAcquireNextImageInfoKHR *>( &acquireInfo ), &imageIndex ) );
18588
18589 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
18590 VULKAN_HPP_NAMESPACE::detail::resultCheck(
18591 result,
18592 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquireNextImage2KHR",
18593 { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } );
18594 # else
18595 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
18596 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquireNextImage2KHR",
18597 { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
18598 # endif
18599
18600 return ResultValue<uint32_t>( result, std::move( imageIndex ) );
18601 }
18602
18603 //=== VK_KHR_display ===
18604
18605 // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see
18606 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html
18607 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR>>::type PhysicalDevice::getDisplayPropertiesKHR() const
18608 {
18609 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR &&
18610 "Function <vkGetPhysicalDeviceDisplayPropertiesKHR> requires <VK_KHR_display>" );
18611
18612 std::vector<DisplayPropertiesKHR> properties;
18613 uint32_t propertyCount;
18614 Result result;
18615 do
18616 {
18617 result = static_cast<Result>(
18618 getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
18619 if ( ( result == Result::eSuccess ) && propertyCount )
18620 {
18621 properties.resize( propertyCount );
18622 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR(
18623 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR *>( properties.data() ) ) );
18624 }
18625 } while ( result == Result::eIncomplete );
18626 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" );
18627 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
18628 if ( propertyCount < properties.size() )
18629 {
18630 properties.resize( propertyCount );
18631 }
18632 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
18633 }
18634
18635 // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see
18636 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html
18637 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR>>::type
18638 PhysicalDevice::getDisplayPlanePropertiesKHR() const
18639 {
18640 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR &&
18641 "Function <vkGetPhysicalDeviceDisplayPlanePropertiesKHR> requires <VK_KHR_display>" );
18642
18643 std::vector<DisplayPlanePropertiesKHR> properties;
18644 uint32_t propertyCount;
18645 Result result;
18646 do
18647 {
18648 result = static_cast<Result>(
18649 getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
18650 if ( ( result == Result::eSuccess ) && propertyCount )
18651 {
18652 properties.resize( propertyCount );
18653 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
18654 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR *>( properties.data() ) ) );
18655 }
18656 } while ( result == Result::eIncomplete );
18657 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" );
18658 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
18659 if ( propertyCount < properties.size() )
18660 {
18661 properties.resize( propertyCount );
18662 }
18663 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
18664 }
18665
18666 // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see
18667 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html
18668 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR>>::type
18669 PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
18670 {
18671 std::vector<VULKAN_HPP_NAMESPACE::DisplayKHR> displays;
18672 uint32_t displayCount;
18673 Result result;
18674 do
18675 {
18676 result = static_cast<Result>(
18677 getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), planeIndex, &displayCount, nullptr ) );
18678 if ( ( result == Result::eSuccess ) && displayCount )
18679 {
18680 displays.resize( displayCount );
18681 result = static_cast<Result>( getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR(
18682 static_cast<VkPhysicalDevice>( m_physicalDevice ), planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR *>( displays.data() ) ) );
18683 }
18684 } while ( result == Result::eIncomplete );
18685 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
18686 std::vector<DisplayKHR> displaysRAII;
18687 if ( result == Result::eSuccess )
18688 {
18689 displaysRAII.reserve( displays.size() );
18690 for ( auto & display : displays )
18691 {
18692 displaysRAII.emplace_back( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) );
18693 }
18694 }
18695 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( displaysRAII ) );
18696 }
18697
18698 // wrapper function for command vkGetDisplayModePropertiesKHR, see
18699 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html
18700 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR>>::type DisplayKHR::getModeProperties() const
18701 {
18702 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModePropertiesKHR && "Function <vkGetDisplayModePropertiesKHR> requires <VK_KHR_display>" );
18703
18704 std::vector<DisplayModePropertiesKHR> properties;
18705 uint32_t propertyCount;
18706 Result result;
18707 do
18708 {
18709 result = static_cast<Result>( getDispatcher()->vkGetDisplayModePropertiesKHR(
18710 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ), &propertyCount, nullptr ) );
18711 if ( ( result == Result::eSuccess ) && propertyCount )
18712 {
18713 properties.resize( propertyCount );
18714 result = static_cast<Result>( getDispatcher()->vkGetDisplayModePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18715 static_cast<VkDisplayKHR>( m_displayKHR ),
18716 &propertyCount,
18717 reinterpret_cast<VkDisplayModePropertiesKHR *>( properties.data() ) ) );
18718 }
18719 } while ( result == Result::eIncomplete );
18720 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::getModeProperties" );
18721 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
18722 if ( propertyCount < properties.size() )
18723 {
18724 properties.resize( propertyCount );
18725 }
18726 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
18727 }
18728
18729 // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html
18730 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DisplayModeKHR>::type
18731 DisplayKHR::createMode( DisplayModeCreateInfoKHR const & createInfo,
18732 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18733 {
18734 VULKAN_HPP_NAMESPACE::DisplayModeKHR mode;
18735 Result result = static_cast<Result>( getDispatcher()->vkCreateDisplayModeKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18736 static_cast<VkDisplayKHR>( m_displayKHR ),
18737 reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( &createInfo ),
18738 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18739 reinterpret_cast<VkDisplayModeKHR *>( &mode ) ) );
18740 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::createMode" );
18741 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayModeKHR( *this, *reinterpret_cast<VkDisplayModeKHR *>( &mode ) ) );
18742 }
18743
18744 // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see
18745 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html
18746 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DisplayPlaneCapabilitiesKHR>::type
18747 DisplayModeKHR::getDisplayPlaneCapabilities( uint32_t planeIndex ) const
18748 {
18749 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR && "Function <vkGetDisplayPlaneCapabilitiesKHR> requires <VK_KHR_display>" );
18750
18751 DisplayPlaneCapabilitiesKHR capabilities;
18752 Result result =
18753 static_cast<Result>( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
18754 static_cast<VkDisplayModeKHR>( m_displayModeKHR ),
18755 planeIndex,
18756 reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( &capabilities ) ) );
18757 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayModeKHR::getDisplayPlaneCapabilities" );
18758
18759 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( capabilities ) );
18760 }
18761
18762 // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see
18763 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html
18764 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
18765 Instance::createDisplayPlaneSurfaceKHR( DisplaySurfaceCreateInfoKHR const & createInfo,
18766 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18767 {
18768 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
18769 Result result =
18770 static_cast<Result>( getDispatcher()->vkCreateDisplayPlaneSurfaceKHR( static_cast<VkInstance>( m_instance ),
18771 reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( &createInfo ),
18772 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18773 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
18774 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHR" );
18775 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
18776 }
18777
18778 //=== VK_KHR_display_swapchain ===
18779
18780 // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html
18781 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR>>::type
18782 Device::createSharedSwapchainsKHR( ArrayProxy<SwapchainCreateInfoKHR> const & createInfos, Optional<const AllocationCallbacks> allocator ) const
18783 {
18784 std::vector<VULKAN_HPP_NAMESPACE::SwapchainKHR> swapchains( createInfos.size() );
18785 Result result =
18786 static_cast<Result>( getDispatcher()->vkCreateSharedSwapchainsKHR( static_cast<VkDevice>( m_device ),
18787 createInfos.size(),
18788 reinterpret_cast<const VkSwapchainCreateInfoKHR *>( createInfos.data() ),
18789 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18790 reinterpret_cast<VkSwapchainKHR *>( swapchains.data() ) ) );
18791 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" );
18792 std::vector<SwapchainKHR> swapchainsRAII;
18793 if ( result == Result::eSuccess )
18794 {
18795 swapchainsRAII.reserve( swapchains.size() );
18796 for ( auto & swapchain : swapchains )
18797 {
18798 swapchainsRAII.emplace_back( *this, *reinterpret_cast<VkSwapchainKHR *>( &swapchain ), allocator );
18799 }
18800 }
18801 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( swapchainsRAII ) );
18802 }
18803
18804 // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html
18805 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SwapchainKHR>::type
18806 Device::createSharedSwapchainKHR( SwapchainCreateInfoKHR const & createInfo,
18807 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18808 {
18809 VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain;
18810 Result result = static_cast<Result>( getDispatcher()->vkCreateSharedSwapchainsKHR( static_cast<VkDevice>( m_device ),
18811 1,
18812 reinterpret_cast<const VkSwapchainCreateInfoKHR *>( &createInfo ),
18813 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18814 reinterpret_cast<VkSwapchainKHR *>( &swapchain ) ) );
18815 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSharedSwapchainKHR" );
18816 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SwapchainKHR( *this, *reinterpret_cast<VkSwapchainKHR *>( &swapchain ), allocator ) );
18817 }
18818
18819 # if defined( VK_USE_PLATFORM_XLIB_KHR )
18820 //=== VK_KHR_xlib_surface ===
18821
18822 // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html
18823 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
18824 Instance::createXlibSurfaceKHR( XlibSurfaceCreateInfoKHR const & createInfo,
18825 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18826 {
18827 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
18828 Result result = static_cast<Result>( getDispatcher()->vkCreateXlibSurfaceKHR( static_cast<VkInstance>( m_instance ),
18829 reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( &createInfo ),
18830 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18831 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
18832 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createXlibSurfaceKHR" );
18833 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
18834 }
18835
18836 // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see
18837 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html
18838 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex,
18839 Display & dpy,
18840 VisualID visualID ) const VULKAN_HPP_NOEXCEPT
18841 {
18842 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR &&
18843 "Function <vkGetPhysicalDeviceXlibPresentationSupportKHR> requires <VK_KHR_xlib_surface>" );
18844
18845 VkBool32 result =
18846 getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dpy, visualID );
18847
18848 return static_cast<Bool32>( result );
18849 }
18850 # endif /*VK_USE_PLATFORM_XLIB_KHR*/
18851
18852 # if defined( VK_USE_PLATFORM_XCB_KHR )
18853 //=== VK_KHR_xcb_surface ===
18854
18855 // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html
18856 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
18857 Instance::createXcbSurfaceKHR( XcbSurfaceCreateInfoKHR const & createInfo,
18858 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18859 {
18860 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
18861 Result result = static_cast<Result>( getDispatcher()->vkCreateXcbSurfaceKHR( static_cast<VkInstance>( m_instance ),
18862 reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( &createInfo ),
18863 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18864 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
18865 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createXcbSurfaceKHR" );
18866 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
18867 }
18868
18869 // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see
18870 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html
18871 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex,
18872 xcb_connection_t & connection,
18873 xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT
18874 {
18875 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR &&
18876 "Function <vkGetPhysicalDeviceXcbPresentationSupportKHR> requires <VK_KHR_xcb_surface>" );
18877
18878 VkBool32 result = getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR(
18879 static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &connection, visual_id );
18880
18881 return static_cast<Bool32>( result );
18882 }
18883 # endif /*VK_USE_PLATFORM_XCB_KHR*/
18884
18885 # if defined( VK_USE_PLATFORM_WAYLAND_KHR )
18886 //=== VK_KHR_wayland_surface ===
18887
18888 // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html
18889 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
18890 Instance::createWaylandSurfaceKHR( WaylandSurfaceCreateInfoKHR const & createInfo,
18891 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18892 {
18893 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
18894 Result result = static_cast<Result>( getDispatcher()->vkCreateWaylandSurfaceKHR( static_cast<VkInstance>( m_instance ),
18895 reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( &createInfo ),
18896 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18897 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
18898 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHR" );
18899 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
18900 }
18901
18902 // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see
18903 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html
18904 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex,
18905 struct wl_display & display ) const VULKAN_HPP_NOEXCEPT
18906 {
18907 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR &&
18908 "Function <vkGetPhysicalDeviceWaylandPresentationSupportKHR> requires <VK_KHR_wayland_surface>" );
18909
18910 VkBool32 result =
18911 getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &display );
18912
18913 return static_cast<Bool32>( result );
18914 }
18915 # endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
18916
18917 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
18918 //=== VK_KHR_android_surface ===
18919
18920 // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html
18921 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
18922 Instance::createAndroidSurfaceKHR( AndroidSurfaceCreateInfoKHR const & createInfo,
18923 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18924 {
18925 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
18926 Result result = static_cast<Result>( getDispatcher()->vkCreateAndroidSurfaceKHR( static_cast<VkInstance>( m_instance ),
18927 reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( &createInfo ),
18928 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18929 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
18930 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHR" );
18931 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
18932 }
18933 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
18934
18935 # if defined( VK_USE_PLATFORM_WIN32_KHR )
18936 //=== VK_KHR_win32_surface ===
18937
18938 // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html
18939 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
18940 Instance::createWin32SurfaceKHR( Win32SurfaceCreateInfoKHR const & createInfo,
18941 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18942 {
18943 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
18944 Result result = static_cast<Result>( getDispatcher()->vkCreateWin32SurfaceKHR( static_cast<VkInstance>( m_instance ),
18945 reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( &createInfo ),
18946 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18947 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
18948 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createWin32SurfaceKHR" );
18949 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
18950 }
18951
18952 // wrapper function for command vkGetPhysicalDeviceWin32PresentationSupportKHR, see
18953 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html
18954 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT
18955 {
18956 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR &&
18957 "Function <vkGetPhysicalDeviceWin32PresentationSupportKHR> requires <VK_KHR_win32_surface>" );
18958
18959 VkBool32 result = getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex );
18960
18961 return static_cast<Bool32>( result );
18962 }
18963 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
18964
18965 //=== VK_EXT_debug_report ===
18966
18967 // wrapper function for command vkCreateDebugReportCallbackEXT, see
18968 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html
18969 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DebugReportCallbackEXT>::type
18970 Instance::createDebugReportCallbackEXT( DebugReportCallbackCreateInfoEXT const & createInfo,
18971 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
18972 {
18973 VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback;
18974 Result result =
18975 static_cast<Result>( getDispatcher()->vkCreateDebugReportCallbackEXT( static_cast<VkInstance>( m_instance ),
18976 reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( &createInfo ),
18977 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
18978 reinterpret_cast<VkDebugReportCallbackEXT *>( &callback ) ) );
18979 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXT" );
18980 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
18981 result, DebugReportCallbackEXT( *this, *reinterpret_cast<VkDebugReportCallbackEXT *>( &callback ), allocator ) );
18982 }
18983
18984 // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html
18985 VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags,
18986 DebugReportObjectTypeEXT objectType_,
18987 uint64_t object,
18988 size_t location,
18989 int32_t messageCode,
18990 const std::string & layerPrefix,
18991 const std::string & message ) const VULKAN_HPP_NOEXCEPT
18992 {
18993 VULKAN_HPP_ASSERT( getDispatcher()->vkDebugReportMessageEXT && "Function <vkDebugReportMessageEXT> requires <VK_EXT_debug_report>" );
18994
18995 getDispatcher()->vkDebugReportMessageEXT( static_cast<VkInstance>( m_instance ),
18996 static_cast<VkDebugReportFlagsEXT>( flags ),
18997 static_cast<VkDebugReportObjectTypeEXT>( objectType_ ),
18998 object,
18999 location,
19000 messageCode,
19001 layerPrefix.c_str(),
19002 message.c_str() );
19003 }
19004
19005 //=== VK_EXT_debug_marker ===
19006
19007 // wrapper function for command vkDebugMarkerSetObjectTagEXT, see
19008 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html
19009 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
19010 {
19011 VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectTagEXT && "Function <vkDebugMarkerSetObjectTagEXT> requires <VK_EXT_debug_marker>" );
19012
19013 Result result = static_cast<Result>( getDispatcher()->vkDebugMarkerSetObjectTagEXT(
19014 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( &tagInfo ) ) );
19015 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" );
19016
19017 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
19018 }
19019
19020 // wrapper function for command vkDebugMarkerSetObjectNameEXT, see
19021 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html
19022 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
19023 {
19024 VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectNameEXT && "Function <vkDebugMarkerSetObjectNameEXT> requires <VK_EXT_debug_marker>" );
19025
19026 Result result = static_cast<Result>( getDispatcher()->vkDebugMarkerSetObjectNameEXT(
19027 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( &nameInfo ) ) );
19028 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" );
19029
19030 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
19031 }
19032
19033 // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html
19034 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
19035 {
19036 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerBeginEXT && "Function <vkCmdDebugMarkerBeginEXT> requires <VK_EXT_debug_marker>" );
19037
19038 getDispatcher()->vkCmdDebugMarkerBeginEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19039 reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
19040 }
19041
19042 // wrapper function for command vkCmdDebugMarkerEndEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerEndEXT.html
19043 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT
19044 {
19045 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerEndEXT && "Function <vkCmdDebugMarkerEndEXT> requires <VK_EXT_debug_marker>" );
19046
19047 getDispatcher()->vkCmdDebugMarkerEndEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
19048 }
19049
19050 // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html
19051 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
19052 {
19053 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerInsertEXT && "Function <vkCmdDebugMarkerInsertEXT> requires <VK_EXT_debug_marker>" );
19054
19055 getDispatcher()->vkCmdDebugMarkerInsertEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19056 reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
19057 }
19058
19059 //=== VK_KHR_video_queue ===
19060 // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see
19061 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html
19062 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getVideoCapabilitiesKHR( const VideoProfileInfoKHR * pVideoProfile,
19063 VideoCapabilitiesKHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT
19064 {
19065 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
19066 "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> requires <VK_KHR_video_queue>" );
19067 return static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19068 reinterpret_cast<const VkVideoProfileInfoKHR *>( pVideoProfile ),
19069 reinterpret_cast<VkVideoCapabilitiesKHR *>( pCapabilities ) ) );
19070 }
19071
19072 // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see
19073 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html
19074 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<VideoCapabilitiesKHR>::type
19075 PhysicalDevice::getVideoCapabilitiesKHR( const VideoProfileInfoKHR & videoProfile ) const
19076 {
19077 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
19078 "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> requires <VK_KHR_video_queue>" );
19079
19080 VideoCapabilitiesKHR capabilities;
19081 Result result =
19082 static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19083 reinterpret_cast<const VkVideoProfileInfoKHR *>( &videoProfile ),
19084 reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
19085 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
19086
19087 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( capabilities ) );
19088 }
19089
19090 // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see
19091 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html
19092 template <typename X, typename Y, typename... Z>
19093 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
19094 PhysicalDevice::getVideoCapabilitiesKHR( const VideoProfileInfoKHR & videoProfile ) const
19095 {
19096 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
19097 "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> requires <VK_KHR_video_queue>" );
19098
19099 StructureChain<X, Y, Z...> structureChain;
19100 VideoCapabilitiesKHR & capabilities = structureChain.template get<VideoCapabilitiesKHR>();
19101 Result result =
19102 static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19103 reinterpret_cast<const VkVideoProfileInfoKHR *>( &videoProfile ),
19104 reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
19105 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
19106
19107 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
19108 }
19109
19110 // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see
19111 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html
19112 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<VideoFormatPropertiesKHR>>::type
19113 PhysicalDevice::getVideoFormatPropertiesKHR( const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const
19114 {
19115 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR &&
19116 "Function <vkGetPhysicalDeviceVideoFormatPropertiesKHR> requires <VK_KHR_video_queue>" );
19117
19118 std::vector<VideoFormatPropertiesKHR> videoFormatProperties;
19119 uint32_t videoFormatPropertyCount;
19120 Result result;
19121 do
19122 {
19123 result = static_cast<Result>(
19124 getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19125 reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
19126 &videoFormatPropertyCount,
19127 nullptr ) );
19128 if ( ( result == Result::eSuccess ) && videoFormatPropertyCount )
19129 {
19130 videoFormatProperties.resize( videoFormatPropertyCount );
19131 result = static_cast<Result>(
19132 getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19133 reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
19134 &videoFormatPropertyCount,
19135 reinterpret_cast<VkVideoFormatPropertiesKHR *>( videoFormatProperties.data() ) ) );
19136 }
19137 } while ( result == Result::eIncomplete );
19138 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" );
19139 VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() );
19140 if ( videoFormatPropertyCount < videoFormatProperties.size() )
19141 {
19142 videoFormatProperties.resize( videoFormatPropertyCount );
19143 }
19144 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( videoFormatProperties ) );
19145 }
19146
19147 // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see
19148 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html
19149 template <typename StructureChain>
19150 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<StructureChain>>::type
19151 PhysicalDevice::getVideoFormatPropertiesKHR( const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const
19152 {
19153 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR &&
19154 "Function <vkGetPhysicalDeviceVideoFormatPropertiesKHR> requires <VK_KHR_video_queue>" );
19155
19156 std::vector<StructureChain> structureChains;
19157 std::vector<VideoFormatPropertiesKHR> videoFormatProperties;
19158 uint32_t videoFormatPropertyCount;
19159 Result result;
19160 do
19161 {
19162 result = static_cast<Result>(
19163 getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19164 reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
19165 &videoFormatPropertyCount,
19166 nullptr ) );
19167 if ( ( result == Result::eSuccess ) && videoFormatPropertyCount )
19168 {
19169 structureChains.resize( videoFormatPropertyCount );
19170 videoFormatProperties.resize( videoFormatPropertyCount );
19171 for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ )
19172 {
19173 videoFormatProperties[i].pNext = structureChains[i].template get<VideoFormatPropertiesKHR>().pNext;
19174 }
19175 result = static_cast<Result>(
19176 getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19177 reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
19178 &videoFormatPropertyCount,
19179 reinterpret_cast<VkVideoFormatPropertiesKHR *>( videoFormatProperties.data() ) ) );
19180 }
19181 } while ( result == Result::eIncomplete );
19182 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" );
19183 VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() );
19184 if ( videoFormatPropertyCount < videoFormatProperties.size() )
19185 {
19186 structureChains.resize( videoFormatPropertyCount );
19187 }
19188 for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ )
19189 {
19190 structureChains[i].template get<VideoFormatPropertiesKHR>() = videoFormatProperties[i];
19191 }
19192 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChains ) );
19193 }
19194
19195 // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html
19196 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<VideoSessionKHR>::type
19197 Device::createVideoSessionKHR( VideoSessionCreateInfoKHR const & createInfo,
19198 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
19199 {
19200 VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession;
19201 Result result = static_cast<Result>( getDispatcher()->vkCreateVideoSessionKHR( static_cast<VkDevice>( m_device ),
19202 reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( &createInfo ),
19203 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
19204 reinterpret_cast<VkVideoSessionKHR *>( &videoSession ) ) );
19205 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createVideoSessionKHR" );
19206 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
19207 result, VideoSessionKHR( *this, *reinterpret_cast<VkVideoSessionKHR *>( &videoSession ), allocator ) );
19208 }
19209
19210 // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see
19211 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html
19212 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<VideoSessionMemoryRequirementsKHR>>::type
19213 VideoSessionKHR::getMemoryRequirements() const
19214 {
19215 VULKAN_HPP_ASSERT( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR &&
19216 "Function <vkGetVideoSessionMemoryRequirementsKHR> requires <VK_KHR_video_queue>" );
19217
19218 std::vector<VideoSessionMemoryRequirementsKHR> memoryRequirements;
19219 uint32_t memoryRequirementsCount;
19220 Result result;
19221 do
19222 {
19223 result = static_cast<Result>( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR(
19224 static_cast<VkDevice>( m_device ), static_cast<VkVideoSessionKHR>( m_videoSessionKHR ), &memoryRequirementsCount, nullptr ) );
19225 if ( ( result == Result::eSuccess ) && memoryRequirementsCount )
19226 {
19227 memoryRequirements.resize( memoryRequirementsCount );
19228 result = static_cast<Result>(
19229 getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
19230 static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
19231 &memoryRequirementsCount,
19232 reinterpret_cast<VkVideoSessionMemoryRequirementsKHR *>( memoryRequirements.data() ) ) );
19233 }
19234 } while ( result == Result::eIncomplete );
19235 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::VideoSessionKHR::getMemoryRequirements" );
19236 VULKAN_HPP_ASSERT( memoryRequirementsCount <= memoryRequirements.size() );
19237 if ( memoryRequirementsCount < memoryRequirements.size() )
19238 {
19239 memoryRequirements.resize( memoryRequirementsCount );
19240 }
19241 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryRequirements ) );
19242 }
19243
19244 // wrapper function for command vkBindVideoSessionMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html
19245 VULKAN_HPP_INLINE typename ResultValueType<void>::type
19246 VideoSessionKHR::bindMemory( ArrayProxy<const BindVideoSessionMemoryInfoKHR> const & bindSessionMemoryInfos ) const
19247 {
19248 VULKAN_HPP_ASSERT( getDispatcher()->vkBindVideoSessionMemoryKHR && "Function <vkBindVideoSessionMemoryKHR> requires <VK_KHR_video_queue>" );
19249
19250 Result result = static_cast<Result>(
19251 getDispatcher()->vkBindVideoSessionMemoryKHR( static_cast<VkDevice>( m_device ),
19252 static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
19253 bindSessionMemoryInfos.size(),
19254 reinterpret_cast<const VkBindVideoSessionMemoryInfoKHR *>( bindSessionMemoryInfos.data() ) ) );
19255 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::VideoSessionKHR::bindMemory" );
19256
19257 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
19258 }
19259
19260 // wrapper function for command vkCreateVideoSessionParametersKHR, see
19261 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html
19262 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<VideoSessionParametersKHR>::type
19263 Device::createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const & createInfo,
19264 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
19265 {
19266 VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters;
19267 Result result =
19268 static_cast<Result>( getDispatcher()->vkCreateVideoSessionParametersKHR( static_cast<VkDevice>( m_device ),
19269 reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( &createInfo ),
19270 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
19271 reinterpret_cast<VkVideoSessionParametersKHR *>( &videoSessionParameters ) ) );
19272 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createVideoSessionParametersKHR" );
19273 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
19274 result, VideoSessionParametersKHR( *this, *reinterpret_cast<VkVideoSessionParametersKHR *>( &videoSessionParameters ), allocator ) );
19275 }
19276
19277 // wrapper function for command vkUpdateVideoSessionParametersKHR, see
19278 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html
19279 VULKAN_HPP_INLINE typename ResultValueType<void>::type VideoSessionParametersKHR::update( const VideoSessionParametersUpdateInfoKHR & updateInfo ) const
19280 {
19281 VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateVideoSessionParametersKHR && "Function <vkUpdateVideoSessionParametersKHR> requires <VK_KHR_video_queue>" );
19282
19283 Result result = static_cast<Result>(
19284 getDispatcher()->vkUpdateVideoSessionParametersKHR( static_cast<VkDevice>( m_device ),
19285 static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ),
19286 reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( &updateInfo ) ) );
19287 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::VideoSessionParametersKHR::update" );
19288
19289 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
19290 }
19291
19292 // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html
19293 VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR( const VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT
19294 {
19295 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginVideoCodingKHR && "Function <vkCmdBeginVideoCodingKHR> requires <VK_KHR_video_queue>" );
19296
19297 getDispatcher()->vkCmdBeginVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19298 reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( &beginInfo ) );
19299 }
19300
19301 // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html
19302 VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR( const VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT
19303 {
19304 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndVideoCodingKHR && "Function <vkCmdEndVideoCodingKHR> requires <VK_KHR_video_queue>" );
19305
19306 getDispatcher()->vkCmdEndVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19307 reinterpret_cast<const VkVideoEndCodingInfoKHR *>( &endCodingInfo ) );
19308 }
19309
19310 // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html
19311 VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR( const VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT
19312 {
19313 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdControlVideoCodingKHR && "Function <vkCmdControlVideoCodingKHR> requires <VK_KHR_video_queue>" );
19314
19315 getDispatcher()->vkCmdControlVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19316 reinterpret_cast<const VkVideoCodingControlInfoKHR *>( &codingControlInfo ) );
19317 }
19318
19319 //=== VK_KHR_video_decode_queue ===
19320
19321 // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html
19322 VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( const VideoDecodeInfoKHR & decodeInfo ) const VULKAN_HPP_NOEXCEPT
19323 {
19324 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecodeVideoKHR && "Function <vkCmdDecodeVideoKHR> requires <VK_KHR_video_decode_queue>" );
19325
19326 getDispatcher()->vkCmdDecodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkVideoDecodeInfoKHR *>( &decodeInfo ) );
19327 }
19328
19329 //=== VK_EXT_transform_feedback ===
19330
19331 // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see
19332 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html
19333 VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding,
19334 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
19335 ArrayProxy<const DeviceSize> const & offsets,
19336 ArrayProxy<const DeviceSize> const & sizes ) const
19337 {
19338 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT &&
19339 "Function <vkCmdBindTransformFeedbackBuffersEXT> requires <VK_EXT_transform_feedback>" );
19340 # ifdef VULKAN_HPP_NO_EXCEPTIONS
19341 VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
19342 VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
19343 # else
19344 if ( buffers.size() != offsets.size() )
19345 {
19346 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" );
19347 }
19348 if ( !sizes.empty() && buffers.size() != sizes.size() )
19349 {
19350 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" );
19351 }
19352 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
19353
19354 getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19355 firstBinding,
19356 buffers.size(),
19357 reinterpret_cast<const VkBuffer *>( buffers.data() ),
19358 reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
19359 reinterpret_cast<const VkDeviceSize *>( sizes.data() ) );
19360 }
19361
19362 // wrapper function for command vkCmdBeginTransformFeedbackEXT, see
19363 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html
19364 VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer,
19365 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
19366 ArrayProxy<const DeviceSize> const & counterBufferOffsets ) const
19367 {
19368 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginTransformFeedbackEXT && "Function <vkCmdBeginTransformFeedbackEXT> requires <VK_EXT_transform_feedback>" );
19369 # ifdef VULKAN_HPP_NO_EXCEPTIONS
19370 VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
19371 # else
19372 if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
19373 {
19374 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
19375 }
19376 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
19377
19378 getDispatcher()->vkCmdBeginTransformFeedbackEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19379 firstCounterBuffer,
19380 counterBuffers.size(),
19381 reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
19382 reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
19383 }
19384
19385 // wrapper function for command vkCmdEndTransformFeedbackEXT, see
19386 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html
19387 VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer,
19388 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
19389 ArrayProxy<const DeviceSize> const & counterBufferOffsets ) const
19390 {
19391 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndTransformFeedbackEXT && "Function <vkCmdEndTransformFeedbackEXT> requires <VK_EXT_transform_feedback>" );
19392 # ifdef VULKAN_HPP_NO_EXCEPTIONS
19393 VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
19394 # else
19395 if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
19396 {
19397 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
19398 }
19399 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
19400
19401 getDispatcher()->vkCmdEndTransformFeedbackEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19402 firstCounterBuffer,
19403 counterBuffers.size(),
19404 reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
19405 reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
19406 }
19407
19408 // wrapper function for command vkCmdBeginQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQueryIndexedEXT.html
19409 VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
19410 uint32_t query,
19411 QueryControlFlags flags,
19412 uint32_t index ) const VULKAN_HPP_NOEXCEPT
19413 {
19414 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQueryIndexedEXT && "Function <vkCmdBeginQueryIndexedEXT> requires <VK_EXT_transform_feedback>" );
19415
19416 getDispatcher()->vkCmdBeginQueryIndexedEXT(
19417 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ), index );
19418 }
19419
19420 // wrapper function for command vkCmdEndQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQueryIndexedEXT.html
19421 VULKAN_HPP_INLINE void
19422 CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT
19423 {
19424 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQueryIndexedEXT && "Function <vkCmdEndQueryIndexedEXT> requires <VK_EXT_transform_feedback>" );
19425
19426 getDispatcher()->vkCmdEndQueryIndexedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, index );
19427 }
19428
19429 // wrapper function for command vkCmdDrawIndirectByteCountEXT, see
19430 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCountEXT.html
19431 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount,
19432 uint32_t firstInstance,
19433 VULKAN_HPP_NAMESPACE::Buffer counterBuffer,
19434 DeviceSize counterBufferOffset,
19435 uint32_t counterOffset,
19436 uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT
19437 {
19438 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectByteCountEXT && "Function <vkCmdDrawIndirectByteCountEXT> requires <VK_EXT_transform_feedback>" );
19439
19440 getDispatcher()->vkCmdDrawIndirectByteCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19441 instanceCount,
19442 firstInstance,
19443 static_cast<VkBuffer>( counterBuffer ),
19444 static_cast<VkDeviceSize>( counterBufferOffset ),
19445 counterOffset,
19446 vertexStride );
19447 }
19448
19449 //=== VK_NVX_binary_import ===
19450
19451 // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html
19452 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<CuModuleNVX>::type
19453 Device::createCuModuleNVX( CuModuleCreateInfoNVX const & createInfo,
19454 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
19455 {
19456 VULKAN_HPP_NAMESPACE::CuModuleNVX module;
19457 Result result = static_cast<Result>( getDispatcher()->vkCreateCuModuleNVX( static_cast<VkDevice>( m_device ),
19458 reinterpret_cast<const VkCuModuleCreateInfoNVX *>( &createInfo ),
19459 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
19460 reinterpret_cast<VkCuModuleNVX *>( &module ) ) );
19461 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCuModuleNVX" );
19462 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, CuModuleNVX( *this, *reinterpret_cast<VkCuModuleNVX *>( &module ), allocator ) );
19463 }
19464
19465 // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html
19466 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<CuFunctionNVX>::type
19467 Device::createCuFunctionNVX( CuFunctionCreateInfoNVX const & createInfo,
19468 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
19469 {
19470 VULKAN_HPP_NAMESPACE::CuFunctionNVX function;
19471 Result result = static_cast<Result>( getDispatcher()->vkCreateCuFunctionNVX( static_cast<VkDevice>( m_device ),
19472 reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( &createInfo ),
19473 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
19474 reinterpret_cast<VkCuFunctionNVX *>( &function ) ) );
19475 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCuFunctionNVX" );
19476 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result,
19477 CuFunctionNVX( *this, *reinterpret_cast<VkCuFunctionNVX *>( &function ), allocator ) );
19478 }
19479
19480 // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html
19481 VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( const CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT
19482 {
19483 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCuLaunchKernelNVX && "Function <vkCmdCuLaunchKernelNVX> requires <VK_NVX_binary_import>" );
19484
19485 getDispatcher()->vkCmdCuLaunchKernelNVX( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCuLaunchInfoNVX *>( &launchInfo ) );
19486 }
19487
19488 //=== VK_NVX_image_view_handle ===
19489
19490 // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html
19491 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT
19492 {
19493 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandleNVX && "Function <vkGetImageViewHandleNVX> requires <VK_NVX_image_view_handle>" );
19494
19495 uint32_t result =
19496 getDispatcher()->vkGetImageViewHandleNVX( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageViewHandleInfoNVX *>( &info ) );
19497
19498 return result;
19499 }
19500
19501 // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html
19502 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getImageViewHandle64NVX( const ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT
19503 {
19504 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandle64NVX && "Function <vkGetImageViewHandle64NVX> requires <VK_NVX_image_view_handle>" );
19505
19506 uint64_t result =
19507 getDispatcher()->vkGetImageViewHandle64NVX( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageViewHandleInfoNVX *>( &info ) );
19508
19509 return result;
19510 }
19511
19512 // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html
19513 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ImageViewAddressPropertiesNVX>::type ImageView::getAddressNVX() const
19514 {
19515 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewAddressNVX && "Function <vkGetImageViewAddressNVX> requires <VK_NVX_image_view_handle>" );
19516
19517 ImageViewAddressPropertiesNVX properties;
19518 Result result = static_cast<Result>( getDispatcher()->vkGetImageViewAddressNVX(
19519 static_cast<VkDevice>( m_device ), static_cast<VkImageView>( m_imageView ), reinterpret_cast<VkImageViewAddressPropertiesNVX *>( &properties ) ) );
19520 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ImageView::getAddressNVX" );
19521
19522 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
19523 }
19524
19525 //=== VK_AMD_draw_indirect_count ===
19526
19527 // wrapper function for command vkCmdDrawIndirectCountAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountAMD.html
19528 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer,
19529 DeviceSize offset,
19530 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
19531 DeviceSize countBufferOffset,
19532 uint32_t maxDrawCount,
19533 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
19534 {
19535 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountAMD &&
19536 "Function <vkCmdDrawIndirectCountAMD> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
19537
19538 getDispatcher()->vkCmdDrawIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
19539 static_cast<VkBuffer>( buffer ),
19540 static_cast<VkDeviceSize>( offset ),
19541 static_cast<VkBuffer>( countBuffer ),
19542 static_cast<VkDeviceSize>( countBufferOffset ),
19543 maxDrawCount,
19544 stride );
19545 }
19546
19547 // wrapper function for command vkCmdDrawIndexedIndirectCountAMD, see
19548 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountAMD.html
19549 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer,
19550 DeviceSize offset,
19551 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
19552 DeviceSize countBufferOffset,
19553 uint32_t maxDrawCount,
19554 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
19555 {
19556 VULKAN_HPP_ASSERT(
19557 getDispatcher()->vkCmdDrawIndexedIndirectCountAMD &&
19558 "Function <vkCmdDrawIndexedIndirectCountAMD> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
19559
19560 getDispatcher()->vkCmdDrawIndexedIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
19561 static_cast<VkBuffer>( buffer ),
19562 static_cast<VkDeviceSize>( offset ),
19563 static_cast<VkBuffer>( countBuffer ),
19564 static_cast<VkDeviceSize>( countBufferOffset ),
19565 maxDrawCount,
19566 stride );
19567 }
19568
19569 //=== VK_AMD_shader_info ===
19570
19571 // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html
19572 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t>>::type Pipeline::getShaderInfoAMD( ShaderStageFlagBits shaderStage,
19573 ShaderInfoTypeAMD infoType ) const
19574 {
19575 VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInfoAMD && "Function <vkGetShaderInfoAMD> requires <VK_AMD_shader_info>" );
19576
19577 std::vector<uint8_t> info;
19578 size_t infoSize;
19579 Result result;
19580 do
19581 {
19582 result = static_cast<Result>( getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
19583 static_cast<VkPipeline>( m_pipeline ),
19584 static_cast<VkShaderStageFlagBits>( shaderStage ),
19585 static_cast<VkShaderInfoTypeAMD>( infoType ),
19586 &infoSize,
19587 nullptr ) );
19588 if ( ( result == Result::eSuccess ) && infoSize )
19589 {
19590 info.resize( infoSize );
19591 result = static_cast<Result>( getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
19592 static_cast<VkPipeline>( m_pipeline ),
19593 static_cast<VkShaderStageFlagBits>( shaderStage ),
19594 static_cast<VkShaderInfoTypeAMD>( infoType ),
19595 &infoSize,
19596 reinterpret_cast<void *>( info.data() ) ) );
19597 }
19598 } while ( result == Result::eIncomplete );
19599 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getShaderInfoAMD" );
19600 VULKAN_HPP_ASSERT( infoSize <= info.size() );
19601 if ( infoSize < info.size() )
19602 {
19603 info.resize( infoSize );
19604 }
19605 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( info ) );
19606 }
19607
19608 //=== VK_KHR_dynamic_rendering ===
19609
19610 // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html
19611 VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( const RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT
19612 {
19613 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderingKHR &&
19614 "Function <vkCmdBeginRenderingKHR> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
19615
19616 getDispatcher()->vkCmdBeginRenderingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkRenderingInfo *>( &renderingInfo ) );
19617 }
19618
19619 // wrapper function for command vkCmdEndRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderingKHR.html
19620 VULKAN_HPP_INLINE void CommandBuffer::endRenderingKHR() const VULKAN_HPP_NOEXCEPT
19621 {
19622 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderingKHR && "Function <vkCmdEndRenderingKHR> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
19623
19624 getDispatcher()->vkCmdEndRenderingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ) );
19625 }
19626
19627 # if defined( VK_USE_PLATFORM_GGP )
19628 //=== VK_GGP_stream_descriptor_surface ===
19629
19630 // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see
19631 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html
19632 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
19633 Instance::createStreamDescriptorSurfaceGGP( StreamDescriptorSurfaceCreateInfoGGP const & createInfo,
19634 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
19635 {
19636 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
19637 Result result = static_cast<Result>(
19638 getDispatcher()->vkCreateStreamDescriptorSurfaceGGP( static_cast<VkInstance>( m_instance ),
19639 reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( &createInfo ),
19640 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
19641 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
19642 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGP" );
19643 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
19644 }
19645 # endif /*VK_USE_PLATFORM_GGP*/
19646
19647 //=== VK_NV_external_memory_capabilities ===
19648
19649 // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see
19650 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html
19651 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ExternalImageFormatPropertiesNV>::type
19652 PhysicalDevice::getExternalImageFormatPropertiesNV( Format format,
19653 ImageType type,
19654 ImageTiling tiling,
19655 ImageUsageFlags usage,
19656 ImageCreateFlags flags,
19657 ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
19658 {
19659 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV &&
19660 "Function <vkGetPhysicalDeviceExternalImageFormatPropertiesNV> requires <VK_NV_external_memory_capabilities>" );
19661
19662 ExternalImageFormatPropertiesNV externalImageFormatProperties;
19663 Result result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
19664 static_cast<VkPhysicalDevice>( m_physicalDevice ),
19665 static_cast<VkFormat>( format ),
19666 static_cast<VkImageType>( type ),
19667 static_cast<VkImageTiling>( tiling ),
19668 static_cast<VkImageUsageFlags>( usage ),
19669 static_cast<VkImageCreateFlags>( flags ),
19670 static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ),
19671 reinterpret_cast<VkExternalImageFormatPropertiesNV *>( &externalImageFormatProperties ) ) );
19672 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" );
19673
19674 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( externalImageFormatProperties ) );
19675 }
19676
19677 # if defined( VK_USE_PLATFORM_WIN32_KHR )
19678 //=== VK_NV_external_memory_win32 ===
19679
19680 // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html
19681 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<HANDLE>::type
19682 DeviceMemory::getMemoryWin32HandleNV( ExternalMemoryHandleTypeFlagsNV handleType ) const
19683 {
19684 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleNV && "Function <vkGetMemoryWin32HandleNV> requires <VK_NV_external_memory_win32>" );
19685
19686 HANDLE handle;
19687 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryWin32HandleNV( static_cast<VkDevice>( m_device ),
19688 static_cast<VkDeviceMemory>( m_deviceMemory ),
19689 static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ),
19690 &handle ) );
19691 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeviceMemory::getMemoryWin32HandleNV" );
19692
19693 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) );
19694 }
19695 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
19696
19697 //=== VK_KHR_get_physical_device_properties2 ===
19698
19699 // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see
19700 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html
19701 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
19702 {
19703 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
19704 "Function <vkGetPhysicalDeviceFeatures2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19705
19706 PhysicalDeviceFeatures2 features;
19707 getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19708 reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
19709
19710 return features;
19711 }
19712
19713 // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see
19714 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html
19715 template <typename X, typename Y, typename... Z>
19716 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
19717 {
19718 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
19719 "Function <vkGetPhysicalDeviceFeatures2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19720
19721 StructureChain<X, Y, Z...> structureChain;
19722 PhysicalDeviceFeatures2 & features = structureChain.template get<PhysicalDeviceFeatures2>();
19723 getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19724 reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
19725
19726 return structureChain;
19727 }
19728
19729 // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see
19730 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html
19731 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
19732 {
19733 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
19734 "Function <vkGetPhysicalDeviceProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19735
19736 PhysicalDeviceProperties2 properties;
19737 getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19738 reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
19739
19740 return properties;
19741 }
19742
19743 // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see
19744 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html
19745 template <typename X, typename Y, typename... Z>
19746 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
19747 {
19748 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
19749 "Function <vkGetPhysicalDeviceProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19750
19751 StructureChain<X, Y, Z...> structureChain;
19752 PhysicalDeviceProperties2 & properties = structureChain.template get<PhysicalDeviceProperties2>();
19753 getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19754 reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
19755
19756 return structureChain;
19757 }
19758
19759 // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see
19760 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html
19761 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT
19762 {
19763 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
19764 "Function <vkGetPhysicalDeviceFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19765
19766 FormatProperties2 formatProperties;
19767 getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
19768 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
19769
19770 return formatProperties;
19771 }
19772
19773 // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see
19774 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html
19775 template <typename X, typename Y, typename... Z>
19776 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT
19777 {
19778 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
19779 "Function <vkGetPhysicalDeviceFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19780
19781 StructureChain<X, Y, Z...> structureChain;
19782 FormatProperties2 & formatProperties = structureChain.template get<FormatProperties2>();
19783 getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
19784 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
19785
19786 return structureChain;
19787 }
19788
19789 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see
19790 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html
19791 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR(
19792 const PhysicalDeviceImageFormatInfo2 * pImageFormatInfo, ImageFormatProperties2 * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT
19793 {
19794 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
19795 "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19796 return static_cast<Result>(
19797 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19798 reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( pImageFormatInfo ),
19799 reinterpret_cast<VkImageFormatProperties2 *>( pImageFormatProperties ) ) );
19800 }
19801
19802 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see
19803 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html
19804 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ImageFormatProperties2>::type
19805 PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
19806 {
19807 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
19808 "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19809
19810 ImageFormatProperties2 imageFormatProperties;
19811 Result result = static_cast<Result>(
19812 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19813 reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
19814 reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
19815 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
19816
19817 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) );
19818 }
19819
19820 // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see
19821 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html
19822 template <typename X, typename Y, typename... Z>
19823 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
19824 PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
19825 {
19826 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
19827 "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19828
19829 StructureChain<X, Y, Z...> structureChain;
19830 ImageFormatProperties2 & imageFormatProperties = structureChain.template get<ImageFormatProperties2>();
19831 Result result = static_cast<Result>(
19832 getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19833 reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
19834 reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
19835 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
19836
19837 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
19838 }
19839
19840 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see
19841 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html
19842 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2> PhysicalDevice::getQueueFamilyProperties2KHR() const
19843 {
19844 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
19845 "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19846
19847 std::vector<QueueFamilyProperties2> queueFamilyProperties;
19848 uint32_t queueFamilyPropertyCount;
19849 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
19850 queueFamilyProperties.resize( queueFamilyPropertyCount );
19851 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19852 &queueFamilyPropertyCount,
19853 reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
19854
19855 VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
19856 if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
19857 {
19858 queueFamilyProperties.resize( queueFamilyPropertyCount );
19859 }
19860 return queueFamilyProperties;
19861 }
19862
19863 // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see
19864 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html
19865 template <typename StructureChain>
19866 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain> PhysicalDevice::getQueueFamilyProperties2KHR() const
19867 {
19868 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
19869 "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19870
19871 std::vector<StructureChain> structureChains;
19872 std::vector<QueueFamilyProperties2> queueFamilyProperties;
19873 uint32_t queueFamilyPropertyCount;
19874 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
19875 structureChains.resize( queueFamilyPropertyCount );
19876 queueFamilyProperties.resize( queueFamilyPropertyCount );
19877 for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
19878 {
19879 queueFamilyProperties[i].pNext = structureChains[i].template get<QueueFamilyProperties2>().pNext;
19880 }
19881 getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19882 &queueFamilyPropertyCount,
19883 reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
19884
19885 VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
19886 if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
19887 {
19888 structureChains.resize( queueFamilyPropertyCount );
19889 }
19890 for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
19891 {
19892 structureChains[i].template get<QueueFamilyProperties2>() = queueFamilyProperties[i];
19893 }
19894 return structureChains;
19895 }
19896
19897 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see
19898 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html
19899 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
19900 {
19901 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
19902 "Function <vkGetPhysicalDeviceMemoryProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19903
19904 PhysicalDeviceMemoryProperties2 memoryProperties;
19905 getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19906 reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
19907
19908 return memoryProperties;
19909 }
19910
19911 // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see
19912 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html
19913 template <typename X, typename Y, typename... Z>
19914 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
19915 {
19916 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
19917 "Function <vkGetPhysicalDeviceMemoryProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19918
19919 StructureChain<X, Y, Z...> structureChain;
19920 PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get<PhysicalDeviceMemoryProperties2>();
19921 getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19922 reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
19923
19924 return structureChain;
19925 }
19926
19927 // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see
19928 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html
19929 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2>
19930 PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
19931 {
19932 VULKAN_HPP_ASSERT(
19933 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR &&
19934 "Function <vkGetPhysicalDeviceSparseImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
19935
19936 std::vector<SparseImageFormatProperties2> properties;
19937 uint32_t propertyCount;
19938 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19939 reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
19940 &propertyCount,
19941 nullptr );
19942 properties.resize( propertyCount );
19943 getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19944 reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
19945 &propertyCount,
19946 reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
19947
19948 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
19949 if ( propertyCount < properties.size() )
19950 {
19951 properties.resize( propertyCount );
19952 }
19953 return properties;
19954 }
19955
19956 //=== VK_KHR_device_group ===
19957
19958 // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see
19959 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html
19960 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex,
19961 uint32_t localDeviceIndex,
19962 uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
19963 {
19964 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR &&
19965 "Function <vkGetDeviceGroupPeerMemoryFeaturesKHR> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
19966
19967 PeerMemoryFeatureFlags peerMemoryFeatures;
19968 getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR( static_cast<VkDevice>( m_device ),
19969 heapIndex,
19970 localDeviceIndex,
19971 remoteDeviceIndex,
19972 reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
19973
19974 return peerMemoryFeatures;
19975 }
19976
19977 // wrapper function for command vkCmdSetDeviceMaskKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMaskKHR.html
19978 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
19979 {
19980 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMaskKHR && "Function <vkCmdSetDeviceMaskKHR> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
19981
19982 getDispatcher()->vkCmdSetDeviceMaskKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
19983 }
19984
19985 // wrapper function for command vkCmdDispatchBaseKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBaseKHR.html
19986 VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX,
19987 uint32_t baseGroupY,
19988 uint32_t baseGroupZ,
19989 uint32_t groupCountX,
19990 uint32_t groupCountY,
19991 uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
19992 {
19993 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBaseKHR && "Function <vkCmdDispatchBaseKHR> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
19994
19995 getDispatcher()->vkCmdDispatchBaseKHR(
19996 static_cast<VkCommandBuffer>( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
19997 }
19998
19999 # if defined( VK_USE_PLATFORM_VI_NN )
20000 //=== VK_NN_vi_surface ===
20001
20002 // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html
20003 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
20004 Instance::createViSurfaceNN( ViSurfaceCreateInfoNN const & createInfo,
20005 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
20006 {
20007 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
20008 Result result = static_cast<Result>( getDispatcher()->vkCreateViSurfaceNN( static_cast<VkInstance>( m_instance ),
20009 reinterpret_cast<const VkViSurfaceCreateInfoNN *>( &createInfo ),
20010 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
20011 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
20012 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createViSurfaceNN" );
20013 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
20014 }
20015 # endif /*VK_USE_PLATFORM_VI_NN*/
20016
20017 //=== VK_KHR_maintenance1 ===
20018
20019 // wrapper function for command vkTrimCommandPoolKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPoolKHR.html
20020 VULKAN_HPP_INLINE void CommandPool::trimKHR( CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
20021 {
20022 VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPoolKHR && "Function <vkTrimCommandPoolKHR> requires <VK_KHR_maintenance1> or <VK_VERSION_1_1>" );
20023
20024 getDispatcher()->vkTrimCommandPoolKHR(
20025 static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
20026 }
20027
20028 //=== VK_KHR_device_group_creation ===
20029
20030 // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see
20031 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html
20032 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupProperties>>::type
20033 Instance::enumeratePhysicalDeviceGroupsKHR() const
20034 {
20035 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR &&
20036 "Function <vkEnumeratePhysicalDeviceGroupsKHR> requires <VK_KHR_device_group_creation> or <VK_VERSION_1_1>" );
20037
20038 std::vector<PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
20039 uint32_t physicalDeviceGroupCount;
20040 Result result;
20041 do
20042 {
20043 result = static_cast<Result>(
20044 getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR( static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
20045 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
20046 {
20047 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
20048 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR(
20049 static_cast<VkInstance>( m_instance ),
20050 &physicalDeviceGroupCount,
20051 reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
20052 }
20053 } while ( result == Result::eIncomplete );
20054 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" );
20055 VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
20056 if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() )
20057 {
20058 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
20059 }
20060 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) );
20061 }
20062
20063 //=== VK_KHR_external_memory_capabilities ===
20064
20065 // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see
20066 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html
20067 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalBufferProperties
20068 PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
20069 {
20070 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR &&
20071 "Function <vkGetPhysicalDeviceExternalBufferPropertiesKHR> requires <VK_KHR_external_memory_capabilities> or <VK_VERSION_1_1>" );
20072
20073 ExternalBufferProperties externalBufferProperties;
20074 getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20075 reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
20076 reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
20077
20078 return externalBufferProperties;
20079 }
20080
20081 # if defined( VK_USE_PLATFORM_WIN32_KHR )
20082 //=== VK_KHR_external_memory_win32 ===
20083
20084 // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html
20085 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<HANDLE>::type
20086 Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
20087 {
20088 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleKHR && "Function <vkGetMemoryWin32HandleKHR> requires <VK_KHR_external_memory_win32>" );
20089
20090 HANDLE handle;
20091 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryWin32HandleKHR(
20092 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( &getWin32HandleInfo ), &handle ) );
20093 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" );
20094
20095 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) );
20096 }
20097
20098 // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see
20099 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html
20100 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<MemoryWin32HandlePropertiesKHR>::type
20101 Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle ) const
20102 {
20103 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR &&
20104 "Function <vkGetMemoryWin32HandlePropertiesKHR> requires <VK_KHR_external_memory_win32>" );
20105
20106 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
20107 Result result = static_cast<Result>(
20108 getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR( static_cast<VkDevice>( m_device ),
20109 static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
20110 handle,
20111 reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( &memoryWin32HandleProperties ) ) );
20112 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" );
20113
20114 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryWin32HandleProperties ) );
20115 }
20116 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
20117
20118 //=== VK_KHR_external_memory_fd ===
20119
20120 // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html
20121 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
20122 {
20123 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdKHR && "Function <vkGetMemoryFdKHR> requires <VK_KHR_external_memory_fd>" );
20124
20125 int fd;
20126 Result result = static_cast<Result>(
20127 getDispatcher()->vkGetMemoryFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetFdInfoKHR *>( &getFdInfo ), &fd ) );
20128 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryFdKHR" );
20129
20130 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fd ) );
20131 }
20132
20133 // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html
20134 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<MemoryFdPropertiesKHR>::type
20135 Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd ) const
20136 {
20137 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdPropertiesKHR && "Function <vkGetMemoryFdPropertiesKHR> requires <VK_KHR_external_memory_fd>" );
20138
20139 MemoryFdPropertiesKHR memoryFdProperties;
20140 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryFdPropertiesKHR( static_cast<VkDevice>( m_device ),
20141 static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
20142 fd,
20143 reinterpret_cast<VkMemoryFdPropertiesKHR *>( &memoryFdProperties ) ) );
20144 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" );
20145
20146 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryFdProperties ) );
20147 }
20148
20149 //=== VK_KHR_external_semaphore_capabilities ===
20150
20151 // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see
20152 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html
20153 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalSemaphoreProperties
20154 PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
20155 {
20156 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR &&
20157 "Function <vkGetPhysicalDeviceExternalSemaphorePropertiesKHR> requires <VK_KHR_external_semaphore_capabilities> or <VK_VERSION_1_1>" );
20158
20159 ExternalSemaphoreProperties externalSemaphoreProperties;
20160 getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
20161 static_cast<VkPhysicalDevice>( m_physicalDevice ),
20162 reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
20163 reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
20164
20165 return externalSemaphoreProperties;
20166 }
20167
20168 # if defined( VK_USE_PLATFORM_WIN32_KHR )
20169 //=== VK_KHR_external_semaphore_win32 ===
20170
20171 // wrapper function for command vkImportSemaphoreWin32HandleKHR, see
20172 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html
20173 VULKAN_HPP_INLINE typename ResultValueType<void>::type
20174 Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
20175 {
20176 VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreWin32HandleKHR &&
20177 "Function <vkImportSemaphoreWin32HandleKHR> requires <VK_KHR_external_semaphore_win32>" );
20178
20179 Result result = static_cast<Result>( getDispatcher()->vkImportSemaphoreWin32HandleKHR(
20180 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( &importSemaphoreWin32HandleInfo ) ) );
20181 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" );
20182
20183 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20184 }
20185
20186 // wrapper function for command vkGetSemaphoreWin32HandleKHR, see
20187 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html
20188 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<HANDLE>::type
20189 Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
20190 {
20191 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreWin32HandleKHR &&
20192 "Function <vkGetSemaphoreWin32HandleKHR> requires <VK_KHR_external_semaphore_win32>" );
20193
20194 HANDLE handle;
20195 Result result = static_cast<Result>( getDispatcher()->vkGetSemaphoreWin32HandleKHR(
20196 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( &getWin32HandleInfo ), &handle ) );
20197 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" );
20198
20199 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) );
20200 }
20201 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
20202
20203 //=== VK_KHR_external_semaphore_fd ===
20204
20205 // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html
20206 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
20207 {
20208 VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreFdKHR && "Function <vkImportSemaphoreFdKHR> requires <VK_KHR_external_semaphore_fd>" );
20209
20210 Result result = static_cast<Result>( getDispatcher()->vkImportSemaphoreFdKHR(
20211 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( &importSemaphoreFdInfo ) ) );
20212 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" );
20213
20214 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20215 }
20216
20217 // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html
20218 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
20219 {
20220 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreFdKHR && "Function <vkGetSemaphoreFdKHR> requires <VK_KHR_external_semaphore_fd>" );
20221
20222 int fd;
20223 Result result = static_cast<Result>(
20224 getDispatcher()->vkGetSemaphoreFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( &getFdInfo ), &fd ) );
20225 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" );
20226
20227 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fd ) );
20228 }
20229
20230 //=== VK_KHR_push_descriptor ===
20231
20232 // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html
20233 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint,
20234 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
20235 uint32_t set,
20236 ArrayProxy<const WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT
20237 {
20238 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetKHR &&
20239 "Function <vkCmdPushDescriptorSetKHR> requires <VK_KHR_push_descriptor> or <VK_VERSION_1_4>" );
20240
20241 getDispatcher()->vkCmdPushDescriptorSetKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
20242 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
20243 static_cast<VkPipelineLayout>( layout ),
20244 set,
20245 descriptorWrites.size(),
20246 reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ) );
20247 }
20248
20249 // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see
20250 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html
20251 template <typename DataType>
20252 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
20253 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
20254 uint32_t set,
20255 DataType const & data ) const VULKAN_HPP_NOEXCEPT
20256 {
20257 VULKAN_HPP_ASSERT(
20258 getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR &&
20259 "Function <vkCmdPushDescriptorSetWithTemplateKHR> requires <VK_KHR_descriptor_update_template> or <VK_KHR_push_descriptor> or <VK_VERSION_1_4>" );
20260
20261 getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
20262 static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
20263 static_cast<VkPipelineLayout>( layout ),
20264 set,
20265 reinterpret_cast<const void *>( &data ) );
20266 }
20267
20268 //=== VK_EXT_conditional_rendering ===
20269
20270 // wrapper function for command vkCmdBeginConditionalRenderingEXT, see
20271 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html
20272 VULKAN_HPP_INLINE void
20273 CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT
20274 {
20275 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginConditionalRenderingEXT &&
20276 "Function <vkCmdBeginConditionalRenderingEXT> requires <VK_EXT_conditional_rendering>" );
20277
20278 getDispatcher()->vkCmdBeginConditionalRenderingEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
20279 reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( &conditionalRenderingBegin ) );
20280 }
20281
20282 // wrapper function for command vkCmdEndConditionalRenderingEXT, see
20283 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndConditionalRenderingEXT.html
20284 VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT
20285 {
20286 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndConditionalRenderingEXT &&
20287 "Function <vkCmdEndConditionalRenderingEXT> requires <VK_EXT_conditional_rendering>" );
20288
20289 getDispatcher()->vkCmdEndConditionalRenderingEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
20290 }
20291
20292 //=== VK_KHR_descriptor_update_template ===
20293
20294 // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see
20295 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html
20296 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DescriptorUpdateTemplate>::type
20297 Device::createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const & createInfo,
20298 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
20299 {
20300 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate;
20301 Result result = static_cast<Result>(
20302 getDispatcher()->vkCreateDescriptorUpdateTemplateKHR( static_cast<VkDevice>( m_device ),
20303 reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( &createInfo ),
20304 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
20305 reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ) ) );
20306 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHR" );
20307 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
20308 result, DescriptorUpdateTemplate( *this, *reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ), allocator ) );
20309 }
20310
20311 // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see
20312 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html
20313 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
20314 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
20315 {
20316 VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR &&
20317 "Function <vkDestroyDescriptorUpdateTemplateKHR> requires <VK_KHR_descriptor_update_template> or <VK_VERSION_1_1>" );
20318
20319 getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR( static_cast<VkDevice>( m_device ),
20320 static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
20321 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ) );
20322 }
20323
20324 // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see
20325 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html
20326 template <typename DataType>
20327 VULKAN_HPP_INLINE void DescriptorSet::updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
20328 DataType const & data ) const VULKAN_HPP_NOEXCEPT
20329 {
20330 VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR &&
20331 "Function <vkUpdateDescriptorSetWithTemplateKHR> requires <VK_KHR_descriptor_update_template> or <VK_VERSION_1_1>" );
20332
20333 getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR( static_cast<VkDevice>( m_device ),
20334 static_cast<VkDescriptorSet>( m_descriptorSet ),
20335 static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
20336 reinterpret_cast<const void *>( &data ) );
20337 }
20338
20339 //=== VK_NV_clip_space_w_scaling ===
20340
20341 // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html
20342 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport,
20343 ArrayProxy<const ViewportWScalingNV> const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT
20344 {
20345 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWScalingNV && "Function <vkCmdSetViewportWScalingNV> requires <VK_NV_clip_space_w_scaling>" );
20346
20347 getDispatcher()->vkCmdSetViewportWScalingNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
20348 firstViewport,
20349 viewportWScalings.size(),
20350 reinterpret_cast<const VkViewportWScalingNV *>( viewportWScalings.data() ) );
20351 }
20352
20353 # if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
20354 //=== VK_EXT_acquire_xlib_display ===
20355
20356 // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html
20357 VULKAN_HPP_INLINE typename ResultValueType<void>::type PhysicalDevice::acquireXlibDisplayEXT( Display & dpy,
20358 VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
20359 {
20360 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireXlibDisplayEXT && "Function <vkAcquireXlibDisplayEXT> requires <VK_EXT_acquire_xlib_display>" );
20361
20362 Result result = static_cast<Result>(
20363 getDispatcher()->vkAcquireXlibDisplayEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), &dpy, static_cast<VkDisplayKHR>( display ) ) );
20364 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" );
20365
20366 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20367 }
20368
20369 // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html
20370 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DisplayKHR>::type
20371 PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
20372 {
20373 VULKAN_HPP_NAMESPACE::DisplayKHR display;
20374 Result result = static_cast<Result>( getDispatcher()->vkGetRandROutputDisplayEXT(
20375 static_cast<VkPhysicalDevice>( m_physicalDevice ), &dpy, rrOutput, reinterpret_cast<VkDisplayKHR *>( &display ) ) );
20376 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXT" );
20377 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayKHR( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) ) );
20378 }
20379 # endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
20380
20381 //=== VK_EXT_display_surface_counter ===
20382
20383 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see
20384 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html
20385 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceCapabilities2EXT>::type
20386 PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
20387 {
20388 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT &&
20389 "Function <vkGetPhysicalDeviceSurfaceCapabilities2EXT> requires <VK_EXT_display_surface_counter>" );
20390
20391 SurfaceCapabilities2EXT surfaceCapabilities;
20392 Result result = static_cast<Result>(
20393 getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20394 static_cast<VkSurfaceKHR>( surface ),
20395 reinterpret_cast<VkSurfaceCapabilities2EXT *>( &surfaceCapabilities ) ) );
20396 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" );
20397
20398 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceCapabilities ) );
20399 }
20400
20401 //=== VK_EXT_display_control ===
20402
20403 // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html
20404 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display,
20405 const DisplayPowerInfoEXT & displayPowerInfo ) const
20406 {
20407 VULKAN_HPP_ASSERT( getDispatcher()->vkDisplayPowerControlEXT && "Function <vkDisplayPowerControlEXT> requires <VK_EXT_display_control>" );
20408
20409 Result result = static_cast<Result>( getDispatcher()->vkDisplayPowerControlEXT(
20410 static_cast<VkDevice>( m_device ), static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT *>( &displayPowerInfo ) ) );
20411 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::displayPowerControlEXT" );
20412
20413 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20414 }
20415
20416 // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html
20417 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Fence>::type
20418 Device::registerEventEXT( DeviceEventInfoEXT const & deviceEventInfo,
20419 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
20420 {
20421 VULKAN_HPP_NAMESPACE::Fence fence;
20422 Result result = static_cast<Result>( getDispatcher()->vkRegisterDeviceEventEXT( static_cast<VkDevice>( m_device ),
20423 reinterpret_cast<const VkDeviceEventInfoEXT *>( &deviceEventInfo ),
20424 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
20425 reinterpret_cast<VkFence *>( &fence ) ) );
20426 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::registerEventEXT" );
20427 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Fence( *this, *reinterpret_cast<VkFence *>( &fence ), allocator ) );
20428 }
20429
20430 // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html
20431 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Fence>::type
20432 Device::registerDisplayEventEXT( DisplayKHR const & display,
20433 DisplayEventInfoEXT const & displayEventInfo,
20434 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
20435 {
20436 VULKAN_HPP_NAMESPACE::Fence fence;
20437 Result result = static_cast<Result>( getDispatcher()->vkRegisterDisplayEventEXT( static_cast<VkDevice>( m_device ),
20438 static_cast<VkDisplayKHR>( *display ),
20439 reinterpret_cast<const VkDisplayEventInfoEXT *>( &displayEventInfo ),
20440 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
20441 reinterpret_cast<VkFence *>( &fence ) ) );
20442 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::registerDisplayEventEXT" );
20443 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Fence( *this, *reinterpret_cast<VkFence *>( &fence ), allocator ) );
20444 }
20445
20446 // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html
20447 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
20448 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20449 ResultValue<uint64_t>
20450 # else
20451 typename ResultValueType<uint64_t>::type
20452 # endif
20453 SwapchainKHR::getCounterEXT( SurfaceCounterFlagBitsEXT counter ) const
20454 {
20455 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainCounterEXT && "Function <vkGetSwapchainCounterEXT> requires <VK_EXT_display_control>" );
20456
20457 uint64_t counterValue;
20458 Result result = static_cast<Result>( getDispatcher()->vkGetSwapchainCounterEXT( static_cast<VkDevice>( m_device ),
20459 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
20460 static_cast<VkSurfaceCounterFlagBitsEXT>( counter ),
20461 &counterValue ) );
20462
20463 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20464 VULKAN_HPP_NAMESPACE::detail::resultCheck(
20465 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT", { Result::eSuccess, Result::eErrorOutOfDateKHR } );
20466 # else
20467 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT" );
20468 # endif
20469
20470 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20471 return ResultValue<uint64_t>( result, std::move( counterValue ) );
20472 # else
20473 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( counterValue ) );
20474 # endif
20475 }
20476
20477 //=== VK_GOOGLE_display_timing ===
20478
20479 // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see
20480 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html
20481 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<RefreshCycleDurationGOOGLE>::type SwapchainKHR::getRefreshCycleDurationGOOGLE() const
20482 {
20483 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRefreshCycleDurationGOOGLE && "Function <vkGetRefreshCycleDurationGOOGLE> requires <VK_GOOGLE_display_timing>" );
20484
20485 RefreshCycleDurationGOOGLE displayTimingProperties;
20486 Result result =
20487 static_cast<Result>( getDispatcher()->vkGetRefreshCycleDurationGOOGLE( static_cast<VkDevice>( m_device ),
20488 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
20489 reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( &displayTimingProperties ) ) );
20490 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getRefreshCycleDurationGOOGLE" );
20491
20492 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( displayTimingProperties ) );
20493 }
20494
20495 // wrapper function for command vkGetPastPresentationTimingGOOGLE, see
20496 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html
20497 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
20498 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20499 ResultValue<std::vector<PastPresentationTimingGOOGLE>>
20500 # else
20501 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE>>::type
20502 # endif
20503 SwapchainKHR::getPastPresentationTimingGOOGLE() const
20504 {
20505 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPastPresentationTimingGOOGLE &&
20506 "Function <vkGetPastPresentationTimingGOOGLE> requires <VK_GOOGLE_display_timing>" );
20507
20508 std::vector<PastPresentationTimingGOOGLE> presentationTimings;
20509 uint32_t presentationTimingCount;
20510 Result result;
20511 do
20512 {
20513 result = static_cast<Result>( getDispatcher()->vkGetPastPresentationTimingGOOGLE(
20514 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), &presentationTimingCount, nullptr ) );
20515 if ( ( result == Result::eSuccess ) && presentationTimingCount )
20516 {
20517 presentationTimings.resize( presentationTimingCount );
20518 result = static_cast<Result>(
20519 getDispatcher()->vkGetPastPresentationTimingGOOGLE( static_cast<VkDevice>( m_device ),
20520 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
20521 &presentationTimingCount,
20522 reinterpret_cast<VkPastPresentationTimingGOOGLE *>( presentationTimings.data() ) ) );
20523 }
20524 } while ( result == Result::eIncomplete );
20525
20526 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20527 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
20528 VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE",
20529 { Result::eSuccess, Result::eIncomplete, Result::eErrorOutOfDateKHR } );
20530 # else
20531 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE" );
20532 # endif
20533
20534 VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
20535 if ( presentationTimingCount < presentationTimings.size() )
20536 {
20537 presentationTimings.resize( presentationTimingCount );
20538 }
20539
20540 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20541 return ResultValue<std::vector<PastPresentationTimingGOOGLE>>( result, std::move( presentationTimings ) );
20542 # else
20543 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( presentationTimings ) );
20544 # endif
20545 }
20546
20547 //=== VK_EXT_discard_rectangles ===
20548
20549 // wrapper function for command vkCmdSetDiscardRectangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html
20550 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle,
20551 ArrayProxy<const Rect2D> const & discardRectangles ) const VULKAN_HPP_NOEXCEPT
20552 {
20553 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleEXT && "Function <vkCmdSetDiscardRectangleEXT> requires <VK_EXT_discard_rectangles>" );
20554
20555 getDispatcher()->vkCmdSetDiscardRectangleEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
20556 firstDiscardRectangle,
20557 discardRectangles.size(),
20558 reinterpret_cast<const VkRect2D *>( discardRectangles.data() ) );
20559 }
20560
20561 // wrapper function for command vkCmdSetDiscardRectangleEnableEXT, see
20562 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEnableEXT.html
20563 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEnableEXT( Bool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT
20564 {
20565 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleEnableEXT &&
20566 "Function <vkCmdSetDiscardRectangleEnableEXT> requires <VK_EXT_discard_rectangles>" );
20567
20568 getDispatcher()->vkCmdSetDiscardRectangleEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( discardRectangleEnable ) );
20569 }
20570
20571 // wrapper function for command vkCmdSetDiscardRectangleModeEXT, see
20572 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleModeEXT.html
20573 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleModeEXT( DiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT
20574 {
20575 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleModeEXT &&
20576 "Function <vkCmdSetDiscardRectangleModeEXT> requires <VK_EXT_discard_rectangles>" );
20577
20578 getDispatcher()->vkCmdSetDiscardRectangleModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
20579 static_cast<VkDiscardRectangleModeEXT>( discardRectangleMode ) );
20580 }
20581
20582 //=== VK_EXT_hdr_metadata ===
20583
20584 // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html
20585 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains,
20586 ArrayProxy<const HdrMetadataEXT> const & metadata ) const
20587 {
20588 VULKAN_HPP_ASSERT( getDispatcher()->vkSetHdrMetadataEXT && "Function <vkSetHdrMetadataEXT> requires <VK_EXT_hdr_metadata>" );
20589 # ifdef VULKAN_HPP_NO_EXCEPTIONS
20590 VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() );
20591 # else
20592 if ( swapchains.size() != metadata.size() )
20593 {
20594 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
20595 }
20596 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
20597
20598 getDispatcher()->vkSetHdrMetadataEXT( static_cast<VkDevice>( m_device ),
20599 swapchains.size(),
20600 reinterpret_cast<const VkSwapchainKHR *>( swapchains.data() ),
20601 reinterpret_cast<const VkHdrMetadataEXT *>( metadata.data() ) );
20602 }
20603
20604 //=== VK_KHR_create_renderpass2 ===
20605
20606 // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html
20607 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<RenderPass>::type
20608 Device::createRenderPass2KHR( RenderPassCreateInfo2 const & createInfo,
20609 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
20610 {
20611 VULKAN_HPP_NAMESPACE::RenderPass renderPass;
20612 Result result = static_cast<Result>( getDispatcher()->vkCreateRenderPass2KHR( static_cast<VkDevice>( m_device ),
20613 reinterpret_cast<const VkRenderPassCreateInfo2 *>( &createInfo ),
20614 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
20615 reinterpret_cast<VkRenderPass *>( &renderPass ) ) );
20616 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRenderPass2KHR" );
20617 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, RenderPass( *this, *reinterpret_cast<VkRenderPass *>( &renderPass ), allocator ) );
20618 }
20619
20620 // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html
20621 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin,
20622 const SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
20623 {
20624 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2KHR &&
20625 "Function <vkCmdBeginRenderPass2KHR> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
20626
20627 getDispatcher()->vkCmdBeginRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
20628 reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
20629 reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
20630 }
20631
20632 // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html
20633 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfo & subpassBeginInfo,
20634 const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
20635 {
20636 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2KHR && "Function <vkCmdNextSubpass2KHR> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
20637
20638 getDispatcher()->vkCmdNextSubpass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
20639 reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
20640 reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
20641 }
20642
20643 // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html
20644 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
20645 {
20646 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2KHR &&
20647 "Function <vkCmdEndRenderPass2KHR> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
20648
20649 getDispatcher()->vkCmdEndRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
20650 }
20651
20652 //=== VK_KHR_shared_presentable_image ===
20653
20654 // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html
20655 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::getStatus() const
20656 {
20657 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainStatusKHR && "Function <vkGetSwapchainStatusKHR> requires <VK_KHR_shared_presentable_image>" );
20658
20659 Result result =
20660 static_cast<Result>( getDispatcher()->vkGetSwapchainStatusKHR( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
20661
20662 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
20663 VULKAN_HPP_NAMESPACE::detail::resultCheck(
20664 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getStatus", { Result::eSuccess, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } );
20665 # else
20666 VULKAN_HPP_NAMESPACE::detail::resultCheck(
20667 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getStatus", { Result::eSuccess, Result::eSuboptimalKHR } );
20668 # endif
20669
20670 return static_cast<Result>( result );
20671 }
20672
20673 //=== VK_KHR_external_fence_capabilities ===
20674
20675 // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see
20676 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html
20677 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalFenceProperties
20678 PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT
20679 {
20680 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR &&
20681 "Function <vkGetPhysicalDeviceExternalFencePropertiesKHR> requires <VK_KHR_external_fence_capabilities> or <VK_VERSION_1_1>" );
20682
20683 ExternalFenceProperties externalFenceProperties;
20684 getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20685 reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
20686 reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
20687
20688 return externalFenceProperties;
20689 }
20690
20691 # if defined( VK_USE_PLATFORM_WIN32_KHR )
20692 //=== VK_KHR_external_fence_win32 ===
20693
20694 // wrapper function for command vkImportFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html
20695 VULKAN_HPP_INLINE typename ResultValueType<void>::type
20696 Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
20697 {
20698 VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceWin32HandleKHR && "Function <vkImportFenceWin32HandleKHR> requires <VK_KHR_external_fence_win32>" );
20699
20700 Result result = static_cast<Result>( getDispatcher()->vkImportFenceWin32HandleKHR(
20701 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( &importFenceWin32HandleInfo ) ) );
20702 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" );
20703
20704 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20705 }
20706
20707 // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html
20708 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<HANDLE>::type
20709 Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
20710 {
20711 VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceWin32HandleKHR && "Function <vkGetFenceWin32HandleKHR> requires <VK_KHR_external_fence_win32>" );
20712
20713 HANDLE handle;
20714 Result result = static_cast<Result>( getDispatcher()->vkGetFenceWin32HandleKHR(
20715 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( &getWin32HandleInfo ), &handle ) );
20716 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" );
20717
20718 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) );
20719 }
20720 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
20721
20722 //=== VK_KHR_external_fence_fd ===
20723
20724 // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html
20725 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
20726 {
20727 VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceFdKHR && "Function <vkImportFenceFdKHR> requires <VK_KHR_external_fence_fd>" );
20728
20729 Result result = static_cast<Result>(
20730 getDispatcher()->vkImportFenceFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportFenceFdInfoKHR *>( &importFenceFdInfo ) ) );
20731 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importFenceFdKHR" );
20732
20733 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20734 }
20735
20736 // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html
20737 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
20738 {
20739 VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceFdKHR && "Function <vkGetFenceFdKHR> requires <VK_KHR_external_fence_fd>" );
20740
20741 int fd;
20742 Result result = static_cast<Result>(
20743 getDispatcher()->vkGetFenceFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkFenceGetFdInfoKHR *>( &getFdInfo ), &fd ) );
20744 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getFenceFdKHR" );
20745
20746 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fd ) );
20747 }
20748
20749 //=== VK_KHR_performance_query ===
20750
20751 // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see
20752 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html
20753 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
20754 typename ResultValueType<std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>>>::type
20755 PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const
20756 {
20757 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR &&
20758 "Function <vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR> requires <VK_KHR_performance_query>" );
20759
20760 std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>> data_;
20761 std::vector<PerformanceCounterKHR> & counters = data_.first;
20762 std::vector<PerformanceCounterDescriptionKHR> & counterDescriptions = data_.second;
20763 uint32_t counterCount;
20764 Result result;
20765 do
20766 {
20767 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
20768 static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) );
20769 if ( ( result == Result::eSuccess ) && counterCount )
20770 {
20771 counters.resize( counterCount );
20772 counterDescriptions.resize( counterCount );
20773 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
20774 static_cast<VkPhysicalDevice>( m_physicalDevice ),
20775 queueFamilyIndex,
20776 &counterCount,
20777 reinterpret_cast<VkPerformanceCounterKHR *>( counters.data() ),
20778 reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( counterDescriptions.data() ) ) );
20779 }
20780 } while ( result == Result::eIncomplete );
20781 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" );
20782 VULKAN_HPP_ASSERT( counterCount <= counters.size() );
20783 if ( counterCount < counters.size() )
20784 {
20785 counters.resize( counterCount );
20786 counterDescriptions.resize( counterCount );
20787 }
20788 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
20789 }
20790
20791 // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see
20792 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html
20793 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t
20794 PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT
20795 {
20796 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR &&
20797 "Function <vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR> requires <VK_KHR_performance_query>" );
20798
20799 uint32_t numPasses;
20800 getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
20801 static_cast<VkPhysicalDevice>( m_physicalDevice ),
20802 reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( &performanceQueryCreateInfo ),
20803 &numPasses );
20804
20805 return numPasses;
20806 }
20807
20808 // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html
20809 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::acquireProfilingLockKHR( const AcquireProfilingLockInfoKHR & info ) const
20810 {
20811 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireProfilingLockKHR && "Function <vkAcquireProfilingLockKHR> requires <VK_KHR_performance_query>" );
20812
20813 Result result = static_cast<Result>(
20814 getDispatcher()->vkAcquireProfilingLockKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( &info ) ) );
20815 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" );
20816
20817 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
20818 }
20819
20820 // wrapper function for command vkReleaseProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseProfilingLockKHR.html
20821 VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT
20822 {
20823 VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseProfilingLockKHR && "Function <vkReleaseProfilingLockKHR> requires <VK_KHR_performance_query>" );
20824
20825 getDispatcher()->vkReleaseProfilingLockKHR( static_cast<VkDevice>( m_device ) );
20826 }
20827
20828 //=== VK_KHR_get_surface_capabilities2 ===
20829 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see
20830 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html
20831 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR(
20832 const PhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo, SurfaceCapabilities2KHR * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT
20833 {
20834 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
20835 "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> requires <VK_KHR_get_surface_capabilities2>" );
20836 return static_cast<Result>(
20837 getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20838 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( pSurfaceInfo ),
20839 reinterpret_cast<VkSurfaceCapabilities2KHR *>( pSurfaceCapabilities ) ) );
20840 }
20841
20842 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see
20843 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html
20844 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceCapabilities2KHR>::type
20845 PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
20846 {
20847 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
20848 "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> requires <VK_KHR_get_surface_capabilities2>" );
20849
20850 SurfaceCapabilities2KHR surfaceCapabilities;
20851 Result result = static_cast<Result>(
20852 getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20853 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
20854 reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
20855 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
20856
20857 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceCapabilities ) );
20858 }
20859
20860 // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see
20861 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html
20862 template <typename X, typename Y, typename... Z>
20863 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
20864 PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
20865 {
20866 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
20867 "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> requires <VK_KHR_get_surface_capabilities2>" );
20868
20869 StructureChain<X, Y, Z...> structureChain;
20870 SurfaceCapabilities2KHR & surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
20871 Result result = static_cast<Result>(
20872 getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20873 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
20874 reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
20875 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
20876
20877 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
20878 }
20879
20880 // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see
20881 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html
20882 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR>>::type
20883 PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
20884 {
20885 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR &&
20886 "Function <vkGetPhysicalDeviceSurfaceFormats2KHR> requires <VK_KHR_get_surface_capabilities2>" );
20887
20888 std::vector<SurfaceFormat2KHR> surfaceFormats;
20889 uint32_t surfaceFormatCount;
20890 Result result;
20891 do
20892 {
20893 result = static_cast<Result>(
20894 getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20895 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
20896 &surfaceFormatCount,
20897 nullptr ) );
20898 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
20899 {
20900 surfaceFormats.resize( surfaceFormatCount );
20901 result = static_cast<Result>(
20902 getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20903 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
20904 &surfaceFormatCount,
20905 reinterpret_cast<VkSurfaceFormat2KHR *>( surfaceFormats.data() ) ) );
20906 }
20907 } while ( result == Result::eIncomplete );
20908 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" );
20909 VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
20910 if ( surfaceFormatCount < surfaceFormats.size() )
20911 {
20912 surfaceFormats.resize( surfaceFormatCount );
20913 }
20914 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceFormats ) );
20915 }
20916
20917 // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see
20918 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html
20919 template <typename StructureChain>
20920 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<StructureChain>>::type
20921 PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
20922 {
20923 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR &&
20924 "Function <vkGetPhysicalDeviceSurfaceFormats2KHR> requires <VK_KHR_get_surface_capabilities2>" );
20925
20926 std::vector<StructureChain> structureChains;
20927 std::vector<SurfaceFormat2KHR> surfaceFormats;
20928 uint32_t surfaceFormatCount;
20929 Result result;
20930 do
20931 {
20932 result = static_cast<Result>(
20933 getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20934 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
20935 &surfaceFormatCount,
20936 nullptr ) );
20937 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
20938 {
20939 structureChains.resize( surfaceFormatCount );
20940 surfaceFormats.resize( surfaceFormatCount );
20941 for ( uint32_t i = 0; i < surfaceFormatCount; i++ )
20942 {
20943 surfaceFormats[i].pNext = structureChains[i].template get<SurfaceFormat2KHR>().pNext;
20944 }
20945 result = static_cast<Result>(
20946 getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
20947 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
20948 &surfaceFormatCount,
20949 reinterpret_cast<VkSurfaceFormat2KHR *>( surfaceFormats.data() ) ) );
20950 }
20951 } while ( result == Result::eIncomplete );
20952 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" );
20953 VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
20954 if ( surfaceFormatCount < surfaceFormats.size() )
20955 {
20956 structureChains.resize( surfaceFormatCount );
20957 }
20958 for ( uint32_t i = 0; i < surfaceFormatCount; i++ )
20959 {
20960 structureChains[i].template get<SurfaceFormat2KHR>() = surfaceFormats[i];
20961 }
20962 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChains ) );
20963 }
20964
20965 //=== VK_KHR_get_display_properties2 ===
20966
20967 // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see
20968 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html
20969 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayProperties2KHR>>::type PhysicalDevice::getDisplayProperties2KHR() const
20970 {
20971 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR &&
20972 "Function <vkGetPhysicalDeviceDisplayProperties2KHR> requires <VK_KHR_get_display_properties2>" );
20973
20974 std::vector<DisplayProperties2KHR> properties;
20975 uint32_t propertyCount;
20976 Result result;
20977 do
20978 {
20979 result = static_cast<Result>(
20980 getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
20981 if ( ( result == Result::eSuccess ) && propertyCount )
20982 {
20983 properties.resize( propertyCount );
20984 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR(
20985 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayProperties2KHR *>( properties.data() ) ) );
20986 }
20987 } while ( result == Result::eIncomplete );
20988 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" );
20989 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
20990 if ( propertyCount < properties.size() )
20991 {
20992 properties.resize( propertyCount );
20993 }
20994 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
20995 }
20996
20997 // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see
20998 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html
20999 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlaneProperties2KHR>>::type
21000 PhysicalDevice::getDisplayPlaneProperties2KHR() const
21001 {
21002 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR &&
21003 "Function <vkGetPhysicalDeviceDisplayPlaneProperties2KHR> requires <VK_KHR_get_display_properties2>" );
21004
21005 std::vector<DisplayPlaneProperties2KHR> properties;
21006 uint32_t propertyCount;
21007 Result result;
21008 do
21009 {
21010 result = static_cast<Result>(
21011 getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
21012 if ( ( result == Result::eSuccess ) && propertyCount )
21013 {
21014 properties.resize( propertyCount );
21015 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
21016 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR *>( properties.data() ) ) );
21017 }
21018 } while ( result == Result::eIncomplete );
21019 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" );
21020 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
21021 if ( propertyCount < properties.size() )
21022 {
21023 properties.resize( propertyCount );
21024 }
21025 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
21026 }
21027
21028 // wrapper function for command vkGetDisplayModeProperties2KHR, see
21029 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html
21030 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModeProperties2KHR>>::type DisplayKHR::getModeProperties2() const
21031 {
21032 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModeProperties2KHR &&
21033 "Function <vkGetDisplayModeProperties2KHR> requires <VK_KHR_get_display_properties2>" );
21034
21035 std::vector<DisplayModeProperties2KHR> properties;
21036 uint32_t propertyCount;
21037 Result result;
21038 do
21039 {
21040 result = static_cast<Result>( getDispatcher()->vkGetDisplayModeProperties2KHR(
21041 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ), &propertyCount, nullptr ) );
21042 if ( ( result == Result::eSuccess ) && propertyCount )
21043 {
21044 properties.resize( propertyCount );
21045 result =
21046 static_cast<Result>( getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
21047 static_cast<VkDisplayKHR>( m_displayKHR ),
21048 &propertyCount,
21049 reinterpret_cast<VkDisplayModeProperties2KHR *>( properties.data() ) ) );
21050 }
21051 } while ( result == Result::eIncomplete );
21052 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" );
21053 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
21054 if ( propertyCount < properties.size() )
21055 {
21056 properties.resize( propertyCount );
21057 }
21058 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
21059 }
21060
21061 // wrapper function for command vkGetDisplayModeProperties2KHR, see
21062 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html
21063 template <typename StructureChain>
21064 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<StructureChain>>::type DisplayKHR::getModeProperties2() const
21065 {
21066 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModeProperties2KHR &&
21067 "Function <vkGetDisplayModeProperties2KHR> requires <VK_KHR_get_display_properties2>" );
21068
21069 std::vector<StructureChain> structureChains;
21070 std::vector<DisplayModeProperties2KHR> properties;
21071 uint32_t propertyCount;
21072 Result result;
21073 do
21074 {
21075 result = static_cast<Result>( getDispatcher()->vkGetDisplayModeProperties2KHR(
21076 static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ), &propertyCount, nullptr ) );
21077 if ( ( result == Result::eSuccess ) && propertyCount )
21078 {
21079 structureChains.resize( propertyCount );
21080 properties.resize( propertyCount );
21081 for ( uint32_t i = 0; i < propertyCount; i++ )
21082 {
21083 properties[i].pNext = structureChains[i].template get<DisplayModeProperties2KHR>().pNext;
21084 }
21085 result =
21086 static_cast<Result>( getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
21087 static_cast<VkDisplayKHR>( m_displayKHR ),
21088 &propertyCount,
21089 reinterpret_cast<VkDisplayModeProperties2KHR *>( properties.data() ) ) );
21090 }
21091 } while ( result == Result::eIncomplete );
21092 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" );
21093 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
21094 if ( propertyCount < properties.size() )
21095 {
21096 structureChains.resize( propertyCount );
21097 }
21098 for ( uint32_t i = 0; i < propertyCount; i++ )
21099 {
21100 structureChains[i].template get<DisplayModeProperties2KHR>() = properties[i];
21101 }
21102 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChains ) );
21103 }
21104
21105 // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see
21106 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html
21107 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DisplayPlaneCapabilities2KHR>::type
21108 PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo ) const
21109 {
21110 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR &&
21111 "Function <vkGetDisplayPlaneCapabilities2KHR> requires <VK_KHR_get_display_properties2>" );
21112
21113 DisplayPlaneCapabilities2KHR capabilities;
21114 Result result =
21115 static_cast<Result>( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
21116 reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( &displayPlaneInfo ),
21117 reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( &capabilities ) ) );
21118 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" );
21119
21120 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( capabilities ) );
21121 }
21122
21123 # if defined( VK_USE_PLATFORM_IOS_MVK )
21124 //=== VK_MVK_ios_surface ===
21125
21126 // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html
21127 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
21128 Instance::createIOSSurfaceMVK( IOSSurfaceCreateInfoMVK const & createInfo,
21129 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
21130 {
21131 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
21132 Result result = static_cast<Result>( getDispatcher()->vkCreateIOSSurfaceMVK( static_cast<VkInstance>( m_instance ),
21133 reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( &createInfo ),
21134 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
21135 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
21136 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createIOSSurfaceMVK" );
21137 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
21138 }
21139 # endif /*VK_USE_PLATFORM_IOS_MVK*/
21140
21141 # if defined( VK_USE_PLATFORM_MACOS_MVK )
21142 //=== VK_MVK_macos_surface ===
21143
21144 // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html
21145 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
21146 Instance::createMacOSSurfaceMVK( MacOSSurfaceCreateInfoMVK const & createInfo,
21147 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
21148 {
21149 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
21150 Result result = static_cast<Result>( getDispatcher()->vkCreateMacOSSurfaceMVK( static_cast<VkInstance>( m_instance ),
21151 reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( &createInfo ),
21152 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
21153 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
21154 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVK" );
21155 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
21156 }
21157 # endif /*VK_USE_PLATFORM_MACOS_MVK*/
21158
21159 //=== VK_EXT_debug_utils ===
21160
21161 // wrapper function for command vkSetDebugUtilsObjectNameEXT, see
21162 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html
21163 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo ) const
21164 {
21165 VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectNameEXT && "Function <vkSetDebugUtilsObjectNameEXT> requires <VK_EXT_debug_utils>" );
21166
21167 Result result = static_cast<Result>( getDispatcher()->vkSetDebugUtilsObjectNameEXT(
21168 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( &nameInfo ) ) );
21169 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" );
21170
21171 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
21172 }
21173
21174 // wrapper function for command vkSetDebugUtilsObjectNameEXT, see
21175 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html
21176 template <typename HandleType>
21177 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::setDebugUtilsObjectNameEXT( HandleType const & handle, std::string const & name ) const
21178 {
21179 VULKAN_HPP_STATIC_ASSERT( VULKAN_HPP_NAMESPACE::isVulkanHandleType<HandleType>::value, "HandleType must be a Vulkan handle type" );
21180 // It might be, that neither constructors, nor setters, nor designated initializers are available... need to explicitly set member by member
21181 VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT nameInfo;
21182 nameInfo.objectType = handle.objectType;
21183 nameInfo.objectHandle = reinterpret_cast<uint64_t>( static_cast<typename HandleType::CType>( handle ) );
21184 nameInfo.pObjectName = name.c_str();
21185 return setDebugUtilsObjectNameEXT( nameInfo );
21186 }
21187
21188 // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html
21189 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo ) const
21190 {
21191 VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectTagEXT && "Function <vkSetDebugUtilsObjectTagEXT> requires <VK_EXT_debug_utils>" );
21192
21193 Result result = static_cast<Result>(
21194 getDispatcher()->vkSetDebugUtilsObjectTagEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( &tagInfo ) ) );
21195 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" );
21196
21197 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
21198 }
21199
21200 // wrapper function for command vkSetDebugUtilsObjectTagEXT, see
21201 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html
21202 template <typename HandleType, typename TagType>
21203 VULKAN_HPP_INLINE typename ResultValueType<void>::type
21204 Device::setDebugUtilsObjectTagEXT( HandleType const & handle, uint64_t name, TagType const & tag ) const
21205 {
21206 VULKAN_HPP_STATIC_ASSERT( VULKAN_HPP_NAMESPACE::isVulkanHandleType<HandleType>::value, "HandleType must be a Vulkan handle type" );
21207 // It might be, that neither constructors, nor setters, nor designated initializers are available... need to explicitly set member by member
21208 VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT tagInfo;
21209 tagInfo.objectType = handle.objectType;
21210 tagInfo.objectHandle = reinterpret_cast<uint64_t>( static_cast<typename HandleType::CType>( handle ) );
21211 tagInfo.tagName = name;
21212 tagInfo.tagSize = sizeof( TagType );
21213 tagInfo.pTag = &tag;
21214 return setDebugUtilsObjectTagEXT( tagInfo );
21215 }
21216
21217 // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see
21218 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html
21219 VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
21220 {
21221 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBeginDebugUtilsLabelEXT && "Function <vkQueueBeginDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
21222
21223 getDispatcher()->vkQueueBeginDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
21224 }
21225
21226 // wrapper function for command vkQueueEndDebugUtilsLabelEXT, see
21227 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueEndDebugUtilsLabelEXT.html
21228 VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
21229 {
21230 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueEndDebugUtilsLabelEXT && "Function <vkQueueEndDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
21231
21232 getDispatcher()->vkQueueEndDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ) );
21233 }
21234
21235 // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see
21236 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html
21237 VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
21238 {
21239 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueInsertDebugUtilsLabelEXT && "Function <vkQueueInsertDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
21240
21241 getDispatcher()->vkQueueInsertDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
21242 }
21243
21244 // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see
21245 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html
21246 VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
21247 {
21248 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginDebugUtilsLabelEXT && "Function <vkCmdBeginDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
21249
21250 getDispatcher()->vkCmdBeginDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21251 reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
21252 }
21253
21254 // wrapper function for command vkCmdEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndDebugUtilsLabelEXT.html
21255 VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
21256 {
21257 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndDebugUtilsLabelEXT && "Function <vkCmdEndDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
21258
21259 getDispatcher()->vkCmdEndDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
21260 }
21261
21262 // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see
21263 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html
21264 VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
21265 {
21266 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInsertDebugUtilsLabelEXT && "Function <vkCmdInsertDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
21267
21268 getDispatcher()->vkCmdInsertDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21269 reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
21270 }
21271
21272 // wrapper function for command vkCreateDebugUtilsMessengerEXT, see
21273 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html
21274 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DebugUtilsMessengerEXT>::type
21275 Instance::createDebugUtilsMessengerEXT( DebugUtilsMessengerCreateInfoEXT const & createInfo,
21276 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
21277 {
21278 VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger;
21279 Result result =
21280 static_cast<Result>( getDispatcher()->vkCreateDebugUtilsMessengerEXT( static_cast<VkInstance>( m_instance ),
21281 reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( &createInfo ),
21282 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
21283 reinterpret_cast<VkDebugUtilsMessengerEXT *>( &messenger ) ) );
21284 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXT" );
21285 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
21286 result, DebugUtilsMessengerEXT( *this, *reinterpret_cast<VkDebugUtilsMessengerEXT *>( &messenger ), allocator ) );
21287 }
21288
21289 // wrapper function for command vkSubmitDebugUtilsMessageEXT, see
21290 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html
21291 VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
21292 DebugUtilsMessageTypeFlagsEXT messageTypes,
21293 const DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT
21294 {
21295 VULKAN_HPP_ASSERT( getDispatcher()->vkSubmitDebugUtilsMessageEXT && "Function <vkSubmitDebugUtilsMessageEXT> requires <VK_EXT_debug_utils>" );
21296
21297 getDispatcher()->vkSubmitDebugUtilsMessageEXT( static_cast<VkInstance>( m_instance ),
21298 static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ),
21299 static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ),
21300 reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( &callbackData ) );
21301 }
21302
21303 # if defined( VK_USE_PLATFORM_ANDROID_KHR )
21304 //=== VK_ANDROID_external_memory_android_hardware_buffer ===
21305 // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see
21306 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html
21307 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID(
21308 const struct AHardwareBuffer * buffer, AndroidHardwareBufferPropertiesANDROID * pProperties ) const VULKAN_HPP_NOEXCEPT
21309 {
21310 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
21311 "Function <vkGetAndroidHardwareBufferPropertiesANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
21312 return static_cast<Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
21313 static_cast<VkDevice>( m_device ), buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( pProperties ) ) );
21314 }
21315
21316 // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see
21317 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html
21318 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<AndroidHardwareBufferPropertiesANDROID>::type
21319 Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
21320 {
21321 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
21322 "Function <vkGetAndroidHardwareBufferPropertiesANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
21323
21324 AndroidHardwareBufferPropertiesANDROID properties;
21325 Result result = static_cast<Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
21326 static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
21327 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
21328
21329 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
21330 }
21331
21332 // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see
21333 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html
21334 template <typename X, typename Y, typename... Z>
21335 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
21336 Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
21337 {
21338 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
21339 "Function <vkGetAndroidHardwareBufferPropertiesANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
21340
21341 StructureChain<X, Y, Z...> structureChain;
21342 AndroidHardwareBufferPropertiesANDROID & properties = structureChain.template get<AndroidHardwareBufferPropertiesANDROID>();
21343 Result result = static_cast<Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
21344 static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
21345 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
21346
21347 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
21348 }
21349
21350 // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see
21351 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html
21352 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<struct AHardwareBuffer *>::type
21353 Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info ) const
21354 {
21355 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID &&
21356 "Function <vkGetMemoryAndroidHardwareBufferANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
21357
21358 struct AHardwareBuffer * buffer;
21359 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID(
21360 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( &info ), &buffer ) );
21361 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" );
21362
21363 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( buffer ) );
21364 }
21365 # endif /*VK_USE_PLATFORM_ANDROID_KHR*/
21366
21367 # if defined( VK_ENABLE_BETA_EXTENSIONS )
21368 //=== VK_AMDX_shader_enqueue ===
21369
21370 // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see
21371 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html
21372 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline>>::type
21373 Device::createExecutionGraphPipelinesAMDX( Optional<const PipelineCache> const & pipelineCache,
21374 ArrayProxy<ExecutionGraphPipelineCreateInfoAMDX> const & createInfos,
21375 Optional<const AllocationCallbacks> allocator ) const
21376 {
21377 std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
21378 Result result = static_cast<Result>(
21379 getDispatcher()->vkCreateExecutionGraphPipelinesAMDX( static_cast<VkDevice>( m_device ),
21380 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
21381 createInfos.size(),
21382 reinterpret_cast<const VkExecutionGraphPipelineCreateInfoAMDX *>( createInfos.data() ),
21383 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
21384 reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
21385 VULKAN_HPP_NAMESPACE::detail::resultCheck(
21386 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createExecutionGraphPipelinesAMDX", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
21387 std::vector<Pipeline> pipelinesRAII;
21388 if ( result == Result::eSuccess )
21389 {
21390 pipelinesRAII.reserve( pipelines.size() );
21391 for ( auto & pipeline : pipelines )
21392 {
21393 pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
21394 }
21395 }
21396 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) );
21397 }
21398
21399 // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see
21400 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html
21401 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Pipeline>::type
21402 Device::createExecutionGraphPipelineAMDX( Optional<const PipelineCache> const & pipelineCache,
21403 ExecutionGraphPipelineCreateInfoAMDX const & createInfo,
21404 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
21405 {
21406 VULKAN_HPP_NAMESPACE::Pipeline pipeline;
21407 Result result = static_cast<Result>(
21408 getDispatcher()->vkCreateExecutionGraphPipelinesAMDX( static_cast<VkDevice>( m_device ),
21409 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
21410 1,
21411 reinterpret_cast<const VkExecutionGraphPipelineCreateInfoAMDX *>( &createInfo ),
21412 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
21413 reinterpret_cast<VkPipeline *>( &pipeline ) ) );
21414 VULKAN_HPP_NAMESPACE::detail::resultCheck(
21415 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createExecutionGraphPipelineAMDX", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
21416 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result ) );
21417 }
21418
21419 // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see
21420 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html
21421 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ExecutionGraphPipelineScratchSizeAMDX>::type
21422 Pipeline::getExecutionGraphScratchSizeAMDX() const
21423 {
21424 VULKAN_HPP_ASSERT( getDispatcher()->vkGetExecutionGraphPipelineScratchSizeAMDX &&
21425 "Function <vkGetExecutionGraphPipelineScratchSizeAMDX> requires <VK_AMDX_shader_enqueue>" );
21426
21427 ExecutionGraphPipelineScratchSizeAMDX sizeInfo;
21428 Result result = static_cast<Result>( getDispatcher()->vkGetExecutionGraphPipelineScratchSizeAMDX(
21429 static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), reinterpret_cast<VkExecutionGraphPipelineScratchSizeAMDX *>( &sizeInfo ) ) );
21430 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getExecutionGraphScratchSizeAMDX" );
21431
21432 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( sizeInfo ) );
21433 }
21434
21435 // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see
21436 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html
21437 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<uint32_t>::type
21438 Pipeline::getExecutionGraphNodeIndexAMDX( const PipelineShaderStageNodeCreateInfoAMDX & nodeInfo ) const
21439 {
21440 VULKAN_HPP_ASSERT( getDispatcher()->vkGetExecutionGraphPipelineNodeIndexAMDX &&
21441 "Function <vkGetExecutionGraphPipelineNodeIndexAMDX> requires <VK_AMDX_shader_enqueue>" );
21442
21443 uint32_t nodeIndex;
21444 Result result = static_cast<Result>(
21445 getDispatcher()->vkGetExecutionGraphPipelineNodeIndexAMDX( static_cast<VkDevice>( m_device ),
21446 static_cast<VkPipeline>( m_pipeline ),
21447 reinterpret_cast<const VkPipelineShaderStageNodeCreateInfoAMDX *>( &nodeInfo ),
21448 &nodeIndex ) );
21449 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getExecutionGraphNodeIndexAMDX" );
21450
21451 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( nodeIndex ) );
21452 }
21453
21454 // wrapper function for command vkCmdInitializeGraphScratchMemoryAMDX, see
21455 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInitializeGraphScratchMemoryAMDX.html
21456 VULKAN_HPP_INLINE void CommandBuffer::initializeGraphScratchMemoryAMDX( VULKAN_HPP_NAMESPACE::Pipeline executionGraph,
21457 DeviceAddress scratch,
21458 DeviceSize scratchSize ) const VULKAN_HPP_NOEXCEPT
21459 {
21460 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInitializeGraphScratchMemoryAMDX &&
21461 "Function <vkCmdInitializeGraphScratchMemoryAMDX> requires <VK_AMDX_shader_enqueue>" );
21462
21463 getDispatcher()->vkCmdInitializeGraphScratchMemoryAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ),
21464 static_cast<VkPipeline>( executionGraph ),
21465 static_cast<VkDeviceAddress>( scratch ),
21466 static_cast<VkDeviceSize>( scratchSize ) );
21467 }
21468
21469 // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html
21470 VULKAN_HPP_INLINE void
21471 CommandBuffer::dispatchGraphAMDX( DeviceAddress scratch, DeviceSize scratchSize, const DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT
21472 {
21473 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphAMDX && "Function <vkCmdDispatchGraphAMDX> requires <VK_AMDX_shader_enqueue>" );
21474
21475 getDispatcher()->vkCmdDispatchGraphAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ),
21476 static_cast<VkDeviceAddress>( scratch ),
21477 static_cast<VkDeviceSize>( scratchSize ),
21478 reinterpret_cast<const VkDispatchGraphCountInfoAMDX *>( &countInfo ) );
21479 }
21480
21481 // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see
21482 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html
21483 VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphIndirectAMDX( DeviceAddress scratch,
21484 DeviceSize scratchSize,
21485 const DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT
21486 {
21487 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphIndirectAMDX && "Function <vkCmdDispatchGraphIndirectAMDX> requires <VK_AMDX_shader_enqueue>" );
21488
21489 getDispatcher()->vkCmdDispatchGraphIndirectAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ),
21490 static_cast<VkDeviceAddress>( scratch ),
21491 static_cast<VkDeviceSize>( scratchSize ),
21492 reinterpret_cast<const VkDispatchGraphCountInfoAMDX *>( &countInfo ) );
21493 }
21494
21495 // wrapper function for command vkCmdDispatchGraphIndirectCountAMDX, see
21496 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectCountAMDX.html
21497 VULKAN_HPP_INLINE void
21498 CommandBuffer::dispatchGraphIndirectCountAMDX( DeviceAddress scratch, DeviceSize scratchSize, DeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT
21499 {
21500 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphIndirectCountAMDX &&
21501 "Function <vkCmdDispatchGraphIndirectCountAMDX> requires <VK_AMDX_shader_enqueue>" );
21502
21503 getDispatcher()->vkCmdDispatchGraphIndirectCountAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ),
21504 static_cast<VkDeviceAddress>( scratch ),
21505 static_cast<VkDeviceSize>( scratchSize ),
21506 static_cast<VkDeviceAddress>( countInfo ) );
21507 }
21508 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
21509
21510 //=== VK_EXT_sample_locations ===
21511
21512 // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html
21513 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT
21514 {
21515 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEXT && "Function <vkCmdSetSampleLocationsEXT> requires <VK_EXT_sample_locations>" );
21516
21517 getDispatcher()->vkCmdSetSampleLocationsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21518 reinterpret_cast<const VkSampleLocationsInfoEXT *>( &sampleLocationsInfo ) );
21519 }
21520
21521 // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see
21522 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html
21523 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MultisamplePropertiesEXT
21524 PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT
21525 {
21526 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT &&
21527 "Function <vkGetPhysicalDeviceMultisamplePropertiesEXT> requires <VK_EXT_sample_locations>" );
21528
21529 MultisamplePropertiesEXT multisampleProperties;
21530 getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
21531 static_cast<VkSampleCountFlagBits>( samples ),
21532 reinterpret_cast<VkMultisamplePropertiesEXT *>( &multisampleProperties ) );
21533
21534 return multisampleProperties;
21535 }
21536
21537 //=== VK_KHR_get_memory_requirements2 ===
21538
21539 // wrapper function for command vkGetImageMemoryRequirements2KHR, see
21540 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html
21541 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
21542 Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
21543 {
21544 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2KHR &&
21545 "Function <vkGetImageMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
21546
21547 MemoryRequirements2 memoryRequirements;
21548 getDispatcher()->vkGetImageMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
21549 reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
21550 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21551
21552 return memoryRequirements;
21553 }
21554
21555 // wrapper function for command vkGetImageMemoryRequirements2KHR, see
21556 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html
21557 template <typename X, typename Y, typename... Z>
21558 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
21559 Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
21560 {
21561 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2KHR &&
21562 "Function <vkGetImageMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
21563
21564 StructureChain<X, Y, Z...> structureChain;
21565 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
21566 getDispatcher()->vkGetImageMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
21567 reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
21568 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21569
21570 return structureChain;
21571 }
21572
21573 // wrapper function for command vkGetBufferMemoryRequirements2KHR, see
21574 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html
21575 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
21576 Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
21577 {
21578 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
21579 "Function <vkGetBufferMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
21580
21581 MemoryRequirements2 memoryRequirements;
21582 getDispatcher()->vkGetBufferMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
21583 reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
21584 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21585
21586 return memoryRequirements;
21587 }
21588
21589 // wrapper function for command vkGetBufferMemoryRequirements2KHR, see
21590 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html
21591 template <typename X, typename Y, typename... Z>
21592 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
21593 Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
21594 {
21595 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
21596 "Function <vkGetBufferMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
21597
21598 StructureChain<X, Y, Z...> structureChain;
21599 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
21600 getDispatcher()->vkGetBufferMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
21601 reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
21602 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21603
21604 return structureChain;
21605 }
21606
21607 // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see
21608 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html
21609 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2>
21610 Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info ) const
21611 {
21612 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements2KHR &&
21613 "Function <vkGetImageSparseMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
21614
21615 std::vector<SparseImageMemoryRequirements2> sparseMemoryRequirements;
21616 uint32_t sparseMemoryRequirementCount;
21617 getDispatcher()->vkGetImageSparseMemoryRequirements2KHR(
21618 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ), &sparseMemoryRequirementCount, nullptr );
21619 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
21620 getDispatcher()->vkGetImageSparseMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
21621 reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
21622 &sparseMemoryRequirementCount,
21623 reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
21624
21625 VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
21626 if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
21627 {
21628 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
21629 }
21630 return sparseMemoryRequirements;
21631 }
21632
21633 //=== VK_KHR_acceleration_structure ===
21634
21635 // wrapper function for command vkCreateAccelerationStructureKHR, see
21636 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html
21637 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<AccelerationStructureKHR>::type
21638 Device::createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const & createInfo,
21639 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
21640 {
21641 VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure;
21642 Result result =
21643 static_cast<Result>( getDispatcher()->vkCreateAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
21644 reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( &createInfo ),
21645 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
21646 reinterpret_cast<VkAccelerationStructureKHR *>( &accelerationStructure ) ) );
21647 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createAccelerationStructureKHR" );
21648 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
21649 result, AccelerationStructureKHR( *this, *reinterpret_cast<VkAccelerationStructureKHR *>( &accelerationStructure ), allocator ) );
21650 }
21651
21652 // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see
21653 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html
21654 VULKAN_HPP_INLINE void
21655 CommandBuffer::buildAccelerationStructuresKHR( ArrayProxy<const AccelerationStructureBuildGeometryInfoKHR> const & infos,
21656 ArrayProxy<const AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const
21657 {
21658 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructuresKHR &&
21659 "Function <vkCmdBuildAccelerationStructuresKHR> requires <VK_KHR_acceleration_structure>" );
21660 # ifdef VULKAN_HPP_NO_EXCEPTIONS
21661 VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() );
21662 # else
21663 if ( infos.size() != pBuildRangeInfos.size() )
21664 {
21665 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
21666 }
21667 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
21668
21669 getDispatcher()->vkCmdBuildAccelerationStructuresKHR(
21670 static_cast<VkCommandBuffer>( m_commandBuffer ),
21671 infos.size(),
21672 reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
21673 reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) );
21674 }
21675
21676 // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see
21677 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html
21678 VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( ArrayProxy<const AccelerationStructureBuildGeometryInfoKHR> const & infos,
21679 ArrayProxy<const DeviceAddress> const & indirectDeviceAddresses,
21680 ArrayProxy<const uint32_t> const & indirectStrides,
21681 ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts ) const
21682 {
21683 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR &&
21684 "Function <vkCmdBuildAccelerationStructuresIndirectKHR> requires <VK_KHR_acceleration_structure>" );
21685 # ifdef VULKAN_HPP_NO_EXCEPTIONS
21686 VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() );
21687 VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() );
21688 VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() );
21689 # else
21690 if ( infos.size() != indirectDeviceAddresses.size() )
21691 {
21692 throw LogicError( VULKAN_HPP_NAMESPACE_STRING
21693 "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" );
21694 }
21695 if ( infos.size() != indirectStrides.size() )
21696 {
21697 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" );
21698 }
21699 if ( infos.size() != pMaxPrimitiveCounts.size() )
21700 {
21701 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" );
21702 }
21703 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
21704
21705 getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21706 infos.size(),
21707 reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
21708 reinterpret_cast<const VkDeviceAddress *>( indirectDeviceAddresses.data() ),
21709 indirectStrides.data(),
21710 pMaxPrimitiveCounts.data() );
21711 }
21712
21713 // wrapper function for command vkBuildAccelerationStructuresKHR, see
21714 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html
21715 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result
21716 Device::buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
21717 ArrayProxy<const AccelerationStructureBuildGeometryInfoKHR> const & infos,
21718 ArrayProxy<const AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const
21719 {
21720 VULKAN_HPP_ASSERT( getDispatcher()->vkBuildAccelerationStructuresKHR &&
21721 "Function <vkBuildAccelerationStructuresKHR> requires <VK_KHR_acceleration_structure>" );
21722 # ifdef VULKAN_HPP_NO_EXCEPTIONS
21723 VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() );
21724 # else
21725 if ( infos.size() != pBuildRangeInfos.size() )
21726 {
21727 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
21728 }
21729 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
21730
21731 Result result = static_cast<Result>( getDispatcher()->vkBuildAccelerationStructuresKHR(
21732 static_cast<VkDevice>( m_device ),
21733 static_cast<VkDeferredOperationKHR>( deferredOperation ),
21734 infos.size(),
21735 reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
21736 reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) ) );
21737 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21738 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR",
21739 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
21740
21741 return static_cast<Result>( result );
21742 }
21743
21744 // wrapper function for command vkCopyAccelerationStructureKHR, see
21745 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html
21746 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
21747 const CopyAccelerationStructureInfoKHR & info ) const
21748 {
21749 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyAccelerationStructureKHR &&
21750 "Function <vkCopyAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
21751
21752 Result result =
21753 static_cast<Result>( getDispatcher()->vkCopyAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
21754 static_cast<VkDeferredOperationKHR>( deferredOperation ),
21755 reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) ) );
21756 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21757 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR",
21758 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
21759
21760 return static_cast<Result>( result );
21761 }
21762
21763 // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see
21764 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html
21765 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
21766 const CopyAccelerationStructureToMemoryInfoKHR & info ) const
21767 {
21768 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyAccelerationStructureToMemoryKHR &&
21769 "Function <vkCopyAccelerationStructureToMemoryKHR> requires <VK_KHR_acceleration_structure>" );
21770
21771 Result result = static_cast<Result>(
21772 getDispatcher()->vkCopyAccelerationStructureToMemoryKHR( static_cast<VkDevice>( m_device ),
21773 static_cast<VkDeferredOperationKHR>( deferredOperation ),
21774 reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) ) );
21775 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21776 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR",
21777 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
21778
21779 return static_cast<Result>( result );
21780 }
21781
21782 // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see
21783 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html
21784 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
21785 const CopyMemoryToAccelerationStructureInfoKHR & info ) const
21786 {
21787 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToAccelerationStructureKHR &&
21788 "Function <vkCopyMemoryToAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
21789
21790 Result result = static_cast<Result>(
21791 getDispatcher()->vkCopyMemoryToAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
21792 static_cast<VkDeferredOperationKHR>( deferredOperation ),
21793 reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) ) );
21794 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21795 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR",
21796 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
21797
21798 return static_cast<Result>( result );
21799 }
21800
21801 // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see
21802 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html
21803 template <typename DataType>
21804 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataType>>::type
21805 Device::writeAccelerationStructuresPropertiesKHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
21806 QueryType queryType,
21807 size_t dataSize,
21808 size_t stride ) const
21809 {
21810 VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR &&
21811 "Function <vkWriteAccelerationStructuresPropertiesKHR> requires <VK_KHR_acceleration_structure>" );
21812
21813 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
21814 std::vector<DataType> data( dataSize / sizeof( DataType ) );
21815 Result result = static_cast<Result>(
21816 getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast<VkDevice>( m_device ),
21817 accelerationStructures.size(),
21818 reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
21819 static_cast<VkQueryType>( queryType ),
21820 data.size() * sizeof( DataType ),
21821 reinterpret_cast<void *>( data.data() ),
21822 stride ) );
21823 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" );
21824
21825 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
21826 }
21827
21828 // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see
21829 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html
21830 template <typename DataType>
21831 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type Device::writeAccelerationStructuresPropertyKHR(
21832 ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures, QueryType queryType, size_t stride ) const
21833 {
21834 VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR &&
21835 "Function <vkWriteAccelerationStructuresPropertiesKHR> requires <VK_KHR_acceleration_structure>" );
21836
21837 DataType data;
21838 Result result = static_cast<Result>(
21839 getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast<VkDevice>( m_device ),
21840 accelerationStructures.size(),
21841 reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
21842 static_cast<VkQueryType>( queryType ),
21843 sizeof( DataType ),
21844 reinterpret_cast<void *>( &data ),
21845 stride ) );
21846 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" );
21847
21848 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
21849 }
21850
21851 // wrapper function for command vkCmdCopyAccelerationStructureKHR, see
21852 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html
21853 VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( const CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
21854 {
21855 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureKHR &&
21856 "Function <vkCmdCopyAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
21857
21858 getDispatcher()->vkCmdCopyAccelerationStructureKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21859 reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) );
21860 }
21861
21862 // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see
21863 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html
21864 VULKAN_HPP_INLINE void
21865 CommandBuffer::copyAccelerationStructureToMemoryKHR( const CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
21866 {
21867 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR &&
21868 "Function <vkCmdCopyAccelerationStructureToMemoryKHR> requires <VK_KHR_acceleration_structure>" );
21869
21870 getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21871 reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) );
21872 }
21873
21874 // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see
21875 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html
21876 VULKAN_HPP_INLINE void
21877 CommandBuffer::copyMemoryToAccelerationStructureKHR( const CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
21878 {
21879 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR &&
21880 "Function <vkCmdCopyMemoryToAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
21881
21882 getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21883 reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) );
21884 }
21885
21886 // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see
21887 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html
21888 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress
21889 Device::getAccelerationStructureAddressKHR( const AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
21890 {
21891 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR &&
21892 "Function <vkGetAccelerationStructureDeviceAddressKHR> requires <VK_KHR_acceleration_structure>" );
21893
21894 VkDeviceAddress result = getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR(
21895 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( &info ) );
21896
21897 return static_cast<DeviceAddress>( result );
21898 }
21899
21900 // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see
21901 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html
21902 VULKAN_HPP_INLINE void
21903 CommandBuffer::writeAccelerationStructuresPropertiesKHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
21904 QueryType queryType,
21905 VULKAN_HPP_NAMESPACE::QueryPool queryPool,
21906 uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT
21907 {
21908 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR &&
21909 "Function <vkCmdWriteAccelerationStructuresPropertiesKHR> requires <VK_KHR_acceleration_structure>" );
21910
21911 getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21912 accelerationStructures.size(),
21913 reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
21914 static_cast<VkQueryType>( queryType ),
21915 static_cast<VkQueryPool>( queryPool ),
21916 firstQuery );
21917 }
21918
21919 // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see
21920 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html
21921 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureCompatibilityKHR
21922 Device::getAccelerationStructureCompatibilityKHR( const AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT
21923 {
21924 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR &&
21925 "Function <vkGetDeviceAccelerationStructureCompatibilityKHR> requires <VK_KHR_acceleration_structure>" );
21926
21927 AccelerationStructureCompatibilityKHR compatibility;
21928 getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR( static_cast<VkDevice>( m_device ),
21929 reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( &versionInfo ),
21930 reinterpret_cast<VkAccelerationStructureCompatibilityKHR *>( &compatibility ) );
21931
21932 return compatibility;
21933 }
21934
21935 // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see
21936 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html
21937 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR
21938 Device::getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType,
21939 const AccelerationStructureBuildGeometryInfoKHR & buildInfo,
21940 ArrayProxy<const uint32_t> const & maxPrimitiveCounts ) const
21941 {
21942 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureBuildSizesKHR &&
21943 "Function <vkGetAccelerationStructureBuildSizesKHR> requires <VK_KHR_acceleration_structure>" );
21944 # ifdef VULKAN_HPP_NO_EXCEPTIONS
21945 VULKAN_HPP_ASSERT( maxPrimitiveCounts.size() == buildInfo.geometryCount );
21946 # else
21947 if ( maxPrimitiveCounts.size() != buildInfo.geometryCount )
21948 {
21949 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureBuildSizesKHR: maxPrimitiveCounts.size() != buildInfo.geometryCount" );
21950 }
21951 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
21952
21953 AccelerationStructureBuildSizesInfoKHR sizeInfo;
21954 getDispatcher()->vkGetAccelerationStructureBuildSizesKHR( static_cast<VkDevice>( m_device ),
21955 static_cast<VkAccelerationStructureBuildTypeKHR>( buildType ),
21956 reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( &buildInfo ),
21957 maxPrimitiveCounts.data(),
21958 reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( &sizeInfo ) );
21959
21960 return sizeInfo;
21961 }
21962
21963 //=== VK_KHR_ray_tracing_pipeline ===
21964
21965 // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html
21966 VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
21967 const StridedDeviceAddressRegionKHR & missShaderBindingTable,
21968 const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
21969 const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
21970 uint32_t width,
21971 uint32_t height,
21972 uint32_t depth ) const VULKAN_HPP_NOEXCEPT
21973 {
21974 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysKHR && "Function <vkCmdTraceRaysKHR> requires <VK_KHR_ray_tracing_pipeline>" );
21975
21976 getDispatcher()->vkCmdTraceRaysKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21977 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
21978 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
21979 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
21980 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
21981 width,
21982 height,
21983 depth );
21984 }
21985
21986 // wrapper function for command vkCreateRayTracingPipelinesKHR, see
21987 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html
21988 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline>>::type
21989 Device::createRayTracingPipelinesKHR( Optional<const DeferredOperationKHR> const & deferredOperation,
21990 Optional<const PipelineCache> const & pipelineCache,
21991 ArrayProxy<RayTracingPipelineCreateInfoKHR> const & createInfos,
21992 Optional<const AllocationCallbacks> allocator ) const
21993 {
21994 std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
21995 Result result = static_cast<Result>(
21996 getDispatcher()->vkCreateRayTracingPipelinesKHR( static_cast<VkDevice>( m_device ),
21997 deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
21998 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
21999 createInfos.size(),
22000 reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( createInfos.data() ),
22001 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22002 reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
22003 VULKAN_HPP_NAMESPACE::detail::resultCheck(
22004 result,
22005 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR",
22006 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT } );
22007 std::vector<Pipeline> pipelinesRAII;
22008 if ( result == Result::eSuccess )
22009 {
22010 pipelinesRAII.reserve( pipelines.size() );
22011 for ( auto & pipeline : pipelines )
22012 {
22013 pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
22014 }
22015 }
22016 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) );
22017 }
22018
22019 // wrapper function for command vkCreateRayTracingPipelinesKHR, see
22020 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html
22021 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Pipeline>::type
22022 Device::createRayTracingPipelineKHR( Optional<const DeferredOperationKHR> const & deferredOperation,
22023 Optional<const PipelineCache> const & pipelineCache,
22024 RayTracingPipelineCreateInfoKHR const & createInfo,
22025 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
22026 {
22027 VULKAN_HPP_NAMESPACE::Pipeline pipeline;
22028 Result result = static_cast<Result>(
22029 getDispatcher()->vkCreateRayTracingPipelinesKHR( static_cast<VkDevice>( m_device ),
22030 deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
22031 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
22032 1,
22033 reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( &createInfo ),
22034 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22035 reinterpret_cast<VkPipeline *>( &pipeline ) ) );
22036 VULKAN_HPP_NAMESPACE::detail::resultCheck(
22037 result,
22038 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelineKHR",
22039 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT } );
22040 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result ) );
22041 }
22042
22043 // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see
22044 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html
22045 template <typename DataType>
22046 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataType>>::type
22047 Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
22048 {
22049 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR &&
22050 "Function <vkGetRayTracingShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
22051
22052 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
22053 std::vector<DataType> data( dataSize / sizeof( DataType ) );
22054 Result result = static_cast<Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
22055 static_cast<VkPipeline>( m_pipeline ),
22056 firstGroup,
22057 groupCount,
22058 data.size() * sizeof( DataType ),
22059 reinterpret_cast<void *>( data.data() ) ) );
22060 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesKHR" );
22061
22062 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22063 }
22064
22065 // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see
22066 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html
22067 template <typename DataType>
22068 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type Pipeline::getRayTracingShaderGroupHandleKHR( uint32_t firstGroup,
22069 uint32_t groupCount ) const
22070 {
22071 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR &&
22072 "Function <vkGetRayTracingShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
22073
22074 DataType data;
22075 Result result = static_cast<Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
22076 static_cast<VkPipeline>( m_pipeline ),
22077 firstGroup,
22078 groupCount,
22079 sizeof( DataType ),
22080 reinterpret_cast<void *>( &data ) ) );
22081 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleKHR" );
22082
22083 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22084 }
22085
22086 // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see
22087 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html
22088 template <typename DataType>
22089 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataType>>::type
22090 Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
22091 {
22092 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR &&
22093 "Function <vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline>" );
22094
22095 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
22096 std::vector<DataType> data( dataSize / sizeof( DataType ) );
22097 Result result = static_cast<Result>( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
22098 static_cast<VkPipeline>( m_pipeline ),
22099 firstGroup,
22100 groupCount,
22101 data.size() * sizeof( DataType ),
22102 reinterpret_cast<void *>( data.data() ) ) );
22103 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR" );
22104
22105 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22106 }
22107
22108 // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see
22109 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html
22110 template <typename DataType>
22111 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
22112 Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const
22113 {
22114 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR &&
22115 "Function <vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline>" );
22116
22117 DataType data;
22118 Result result = static_cast<Result>( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
22119 static_cast<VkPipeline>( m_pipeline ),
22120 firstGroup,
22121 groupCount,
22122 sizeof( DataType ),
22123 reinterpret_cast<void *>( &data ) ) );
22124 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR" );
22125
22126 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22127 }
22128
22129 // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html
22130 VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
22131 const StridedDeviceAddressRegionKHR & missShaderBindingTable,
22132 const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
22133 const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
22134 DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT
22135 {
22136 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysIndirectKHR && "Function <vkCmdTraceRaysIndirectKHR> requires <VK_KHR_ray_tracing_pipeline>" );
22137
22138 getDispatcher()->vkCmdTraceRaysIndirectKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22139 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
22140 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
22141 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
22142 reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
22143 static_cast<VkDeviceAddress>( indirectDeviceAddress ) );
22144 }
22145
22146 // wrapper function for command vkGetRayTracingShaderGroupStackSizeKHR, see
22147 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupStackSizeKHR.html
22148 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize
22149 Pipeline::getRayTracingShaderGroupStackSizeKHR( uint32_t group, ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT
22150 {
22151 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR &&
22152 "Function <vkGetRayTracingShaderGroupStackSizeKHR> requires <VK_KHR_ray_tracing_pipeline>" );
22153
22154 VkDeviceSize result = getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR(
22155 static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), group, static_cast<VkShaderGroupShaderKHR>( groupShader ) );
22156
22157 return static_cast<DeviceSize>( result );
22158 }
22159
22160 // wrapper function for command vkCmdSetRayTracingPipelineStackSizeKHR, see
22161 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRayTracingPipelineStackSizeKHR.html
22162 VULKAN_HPP_INLINE void CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT
22163 {
22164 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR &&
22165 "Function <vkCmdSetRayTracingPipelineStackSizeKHR> requires <VK_KHR_ray_tracing_pipeline>" );
22166
22167 getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), pipelineStackSize );
22168 }
22169
22170 //=== VK_KHR_sampler_ycbcr_conversion ===
22171
22172 // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see
22173 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html
22174 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SamplerYcbcrConversion>::type
22175 Device::createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const & createInfo,
22176 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
22177 {
22178 VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion;
22179 Result result =
22180 static_cast<Result>( getDispatcher()->vkCreateSamplerYcbcrConversionKHR( static_cast<VkDevice>( m_device ),
22181 reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( &createInfo ),
22182 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22183 reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ) ) );
22184 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHR" );
22185 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
22186 result, SamplerYcbcrConversion( *this, *reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ), allocator ) );
22187 }
22188
22189 // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see
22190 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html
22191 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion,
22192 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
22193 {
22194 VULKAN_HPP_ASSERT( getDispatcher()->vkDestroySamplerYcbcrConversionKHR &&
22195 "Function <vkDestroySamplerYcbcrConversionKHR> requires <VK_KHR_sampler_ycbcr_conversion> or <VK_VERSION_1_1>" );
22196
22197 getDispatcher()->vkDestroySamplerYcbcrConversionKHR( static_cast<VkDevice>( m_device ),
22198 static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ),
22199 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ) );
22200 }
22201
22202 //=== VK_KHR_bind_memory2 ===
22203
22204 // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html
22205 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfo> const & bindInfos ) const
22206 {
22207 VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2KHR && "Function <vkBindBufferMemory2KHR> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
22208
22209 Result result = static_cast<Result>( getDispatcher()->vkBindBufferMemory2KHR(
22210 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
22211 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" );
22212
22213 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
22214 }
22215
22216 // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html
22217 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfo> const & bindInfos ) const
22218 {
22219 VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2KHR && "Function <vkBindImageMemory2KHR> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
22220
22221 Result result = static_cast<Result>( getDispatcher()->vkBindImageMemory2KHR(
22222 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
22223 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindImageMemory2KHR" );
22224
22225 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
22226 }
22227
22228 //=== VK_EXT_image_drm_format_modifier ===
22229
22230 // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see
22231 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html
22232 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ImageDrmFormatModifierPropertiesEXT>::type Image::getDrmFormatModifierPropertiesEXT() const
22233 {
22234 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT &&
22235 "Function <vkGetImageDrmFormatModifierPropertiesEXT> requires <VK_EXT_image_drm_format_modifier>" );
22236
22237 ImageDrmFormatModifierPropertiesEXT properties;
22238 Result result = static_cast<Result>( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT(
22239 static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( &properties ) ) );
22240 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Image::getDrmFormatModifierPropertiesEXT" );
22241
22242 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
22243 }
22244
22245 //=== VK_EXT_validation_cache ===
22246
22247 // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html
22248 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ValidationCacheEXT>::type
22249 Device::createValidationCacheEXT( ValidationCacheCreateInfoEXT const & createInfo,
22250 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
22251 {
22252 VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache;
22253 Result result = static_cast<Result>( getDispatcher()->vkCreateValidationCacheEXT( static_cast<VkDevice>( m_device ),
22254 reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( &createInfo ),
22255 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22256 reinterpret_cast<VkValidationCacheEXT *>( &validationCache ) ) );
22257 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createValidationCacheEXT" );
22258 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
22259 result, ValidationCacheEXT( *this, *reinterpret_cast<VkValidationCacheEXT *>( &validationCache ), allocator ) );
22260 }
22261
22262 // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html
22263 VULKAN_HPP_INLINE typename ResultValueType<void>::type
22264 ValidationCacheEXT::merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const
22265 {
22266 VULKAN_HPP_ASSERT( getDispatcher()->vkMergeValidationCachesEXT && "Function <vkMergeValidationCachesEXT> requires <VK_EXT_validation_cache>" );
22267
22268 Result result = static_cast<Result>( getDispatcher()->vkMergeValidationCachesEXT( static_cast<VkDevice>( m_device ),
22269 static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
22270 srcCaches.size(),
22271 reinterpret_cast<const VkValidationCacheEXT *>( srcCaches.data() ) ) );
22272 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ValidationCacheEXT::merge" );
22273
22274 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
22275 }
22276
22277 // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html
22278 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t>>::type ValidationCacheEXT::getData() const
22279 {
22280 VULKAN_HPP_ASSERT( getDispatcher()->vkGetValidationCacheDataEXT && "Function <vkGetValidationCacheDataEXT> requires <VK_EXT_validation_cache>" );
22281
22282 std::vector<uint8_t> data;
22283 size_t dataSize;
22284 Result result;
22285 do
22286 {
22287 result = static_cast<Result>( getDispatcher()->vkGetValidationCacheDataEXT(
22288 static_cast<VkDevice>( m_device ), static_cast<VkValidationCacheEXT>( m_validationCacheEXT ), &dataSize, nullptr ) );
22289 if ( ( result == Result::eSuccess ) && dataSize )
22290 {
22291 data.resize( dataSize );
22292 result = static_cast<Result>( getDispatcher()->vkGetValidationCacheDataEXT( static_cast<VkDevice>( m_device ),
22293 static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
22294 &dataSize,
22295 reinterpret_cast<void *>( data.data() ) ) );
22296 }
22297 } while ( result == Result::eIncomplete );
22298 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ValidationCacheEXT::getData" );
22299 VULKAN_HPP_ASSERT( dataSize <= data.size() );
22300 if ( dataSize < data.size() )
22301 {
22302 data.resize( dataSize );
22303 }
22304 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22305 }
22306
22307 //=== VK_NV_shading_rate_image ===
22308
22309 // wrapper function for command vkCmdBindShadingRateImageNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadingRateImageNV.html
22310 VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
22311 {
22312 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadingRateImageNV && "Function <vkCmdBindShadingRateImageNV> requires <VK_NV_shading_rate_image>" );
22313
22314 getDispatcher()->vkCmdBindShadingRateImageNV(
22315 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkImageView>( imageView ), static_cast<VkImageLayout>( imageLayout ) );
22316 }
22317
22318 // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see
22319 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html
22320 VULKAN_HPP_INLINE void
22321 CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport,
22322 ArrayProxy<const ShadingRatePaletteNV> const & shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT
22323 {
22324 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportShadingRatePaletteNV &&
22325 "Function <vkCmdSetViewportShadingRatePaletteNV> requires <VK_NV_shading_rate_image>" );
22326
22327 getDispatcher()->vkCmdSetViewportShadingRatePaletteNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22328 firstViewport,
22329 shadingRatePalettes.size(),
22330 reinterpret_cast<const VkShadingRatePaletteNV *>( shadingRatePalettes.data() ) );
22331 }
22332
22333 // wrapper function for command vkCmdSetCoarseSampleOrderNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html
22334 VULKAN_HPP_INLINE void
22335 CommandBuffer::setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType,
22336 ArrayProxy<const CoarseSampleOrderCustomNV> const & customSampleOrders ) const VULKAN_HPP_NOEXCEPT
22337 {
22338 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoarseSampleOrderNV && "Function <vkCmdSetCoarseSampleOrderNV> requires <VK_NV_shading_rate_image>" );
22339
22340 getDispatcher()->vkCmdSetCoarseSampleOrderNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22341 static_cast<VkCoarseSampleOrderTypeNV>( sampleOrderType ),
22342 customSampleOrders.size(),
22343 reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( customSampleOrders.data() ) );
22344 }
22345
22346 //=== VK_NV_ray_tracing ===
22347
22348 // wrapper function for command vkCreateAccelerationStructureNV, see
22349 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html
22350 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<AccelerationStructureNV>::type
22351 Device::createAccelerationStructureNV( AccelerationStructureCreateInfoNV const & createInfo,
22352 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
22353 {
22354 VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure;
22355 Result result =
22356 static_cast<Result>( getDispatcher()->vkCreateAccelerationStructureNV( static_cast<VkDevice>( m_device ),
22357 reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( &createInfo ),
22358 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22359 reinterpret_cast<VkAccelerationStructureNV *>( &accelerationStructure ) ) );
22360 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createAccelerationStructureNV" );
22361 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
22362 result, AccelerationStructureNV( *this, *reinterpret_cast<VkAccelerationStructureNV *>( &accelerationStructure ), allocator ) );
22363 }
22364
22365 // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see
22366 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html
22367 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2KHR
22368 Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
22369 {
22370 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
22371 "Function <vkGetAccelerationStructureMemoryRequirementsNV> requires <VK_NV_ray_tracing>" );
22372
22373 MemoryRequirements2KHR memoryRequirements;
22374 getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
22375 reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
22376 reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
22377
22378 return memoryRequirements;
22379 }
22380
22381 // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see
22382 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html
22383 template <typename X, typename Y, typename... Z>
22384 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
22385 Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
22386 {
22387 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
22388 "Function <vkGetAccelerationStructureMemoryRequirementsNV> requires <VK_NV_ray_tracing>" );
22389
22390 StructureChain<X, Y, Z...> structureChain;
22391 MemoryRequirements2KHR & memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
22392 getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
22393 reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
22394 reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
22395
22396 return structureChain;
22397 }
22398
22399 // wrapper function for command vkBindAccelerationStructureMemoryNV, see
22400 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html
22401 VULKAN_HPP_INLINE typename ResultValueType<void>::type
22402 Device::bindAccelerationStructureMemoryNV( ArrayProxy<const BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const
22403 {
22404 VULKAN_HPP_ASSERT( getDispatcher()->vkBindAccelerationStructureMemoryNV &&
22405 "Function <vkBindAccelerationStructureMemoryNV> requires <VK_NV_ray_tracing>" );
22406
22407 Result result = static_cast<Result>( getDispatcher()->vkBindAccelerationStructureMemoryNV(
22408 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( bindInfos.data() ) ) );
22409 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" );
22410
22411 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
22412 }
22413
22414 // wrapper function for command vkCmdBuildAccelerationStructureNV, see
22415 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html
22416 VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const AccelerationStructureInfoNV & info,
22417 VULKAN_HPP_NAMESPACE::Buffer instanceData,
22418 DeviceSize instanceOffset,
22419 Bool32 update,
22420 VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,
22421 VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,
22422 VULKAN_HPP_NAMESPACE::Buffer scratch,
22423 DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT
22424 {
22425 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructureNV && "Function <vkCmdBuildAccelerationStructureNV> requires <VK_NV_ray_tracing>" );
22426
22427 getDispatcher()->vkCmdBuildAccelerationStructureNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22428 reinterpret_cast<const VkAccelerationStructureInfoNV *>( &info ),
22429 static_cast<VkBuffer>( instanceData ),
22430 static_cast<VkDeviceSize>( instanceOffset ),
22431 static_cast<VkBool32>( update ),
22432 static_cast<VkAccelerationStructureNV>( dst ),
22433 static_cast<VkAccelerationStructureNV>( src ),
22434 static_cast<VkBuffer>( scratch ),
22435 static_cast<VkDeviceSize>( scratchOffset ) );
22436 }
22437
22438 // wrapper function for command vkCmdCopyAccelerationStructureNV, see
22439 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureNV.html
22440 VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,
22441 VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,
22442 CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT
22443 {
22444 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureNV && "Function <vkCmdCopyAccelerationStructureNV> requires <VK_NV_ray_tracing>" );
22445
22446 getDispatcher()->vkCmdCopyAccelerationStructureNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22447 static_cast<VkAccelerationStructureNV>( dst ),
22448 static_cast<VkAccelerationStructureNV>( src ),
22449 static_cast<VkCopyAccelerationStructureModeKHR>( mode ) );
22450 }
22451
22452 // wrapper function for command vkCmdTraceRaysNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysNV.html
22453 VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer,
22454 DeviceSize raygenShaderBindingOffset,
22455 VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer,
22456 DeviceSize missShaderBindingOffset,
22457 DeviceSize missShaderBindingStride,
22458 VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer,
22459 DeviceSize hitShaderBindingOffset,
22460 DeviceSize hitShaderBindingStride,
22461 VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer,
22462 DeviceSize callableShaderBindingOffset,
22463 DeviceSize callableShaderBindingStride,
22464 uint32_t width,
22465 uint32_t height,
22466 uint32_t depth ) const VULKAN_HPP_NOEXCEPT
22467 {
22468 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysNV && "Function <vkCmdTraceRaysNV> requires <VK_NV_ray_tracing>" );
22469
22470 getDispatcher()->vkCmdTraceRaysNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22471 static_cast<VkBuffer>( raygenShaderBindingTableBuffer ),
22472 static_cast<VkDeviceSize>( raygenShaderBindingOffset ),
22473 static_cast<VkBuffer>( missShaderBindingTableBuffer ),
22474 static_cast<VkDeviceSize>( missShaderBindingOffset ),
22475 static_cast<VkDeviceSize>( missShaderBindingStride ),
22476 static_cast<VkBuffer>( hitShaderBindingTableBuffer ),
22477 static_cast<VkDeviceSize>( hitShaderBindingOffset ),
22478 static_cast<VkDeviceSize>( hitShaderBindingStride ),
22479 static_cast<VkBuffer>( callableShaderBindingTableBuffer ),
22480 static_cast<VkDeviceSize>( callableShaderBindingOffset ),
22481 static_cast<VkDeviceSize>( callableShaderBindingStride ),
22482 width,
22483 height,
22484 depth );
22485 }
22486
22487 // wrapper function for command vkCreateRayTracingPipelinesNV, see
22488 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html
22489 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline>>::type
22490 Device::createRayTracingPipelinesNV( Optional<const PipelineCache> const & pipelineCache,
22491 ArrayProxy<RayTracingPipelineCreateInfoNV> const & createInfos,
22492 Optional<const AllocationCallbacks> allocator ) const
22493 {
22494 std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
22495 Result result =
22496 static_cast<Result>( getDispatcher()->vkCreateRayTracingPipelinesNV( static_cast<VkDevice>( m_device ),
22497 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
22498 createInfos.size(),
22499 reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( createInfos.data() ),
22500 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22501 reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
22502 VULKAN_HPP_NAMESPACE::detail::resultCheck(
22503 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
22504 std::vector<Pipeline> pipelinesRAII;
22505 if ( result == Result::eSuccess )
22506 {
22507 pipelinesRAII.reserve( pipelines.size() );
22508 for ( auto & pipeline : pipelines )
22509 {
22510 pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
22511 }
22512 }
22513 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) );
22514 }
22515
22516 // wrapper function for command vkCreateRayTracingPipelinesNV, see
22517 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html
22518 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Pipeline>::type
22519 Device::createRayTracingPipelineNV( Optional<const PipelineCache> const & pipelineCache,
22520 RayTracingPipelineCreateInfoNV const & createInfo,
22521 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
22522 {
22523 VULKAN_HPP_NAMESPACE::Pipeline pipeline;
22524 Result result =
22525 static_cast<Result>( getDispatcher()->vkCreateRayTracingPipelinesNV( static_cast<VkDevice>( m_device ),
22526 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
22527 1,
22528 reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( &createInfo ),
22529 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
22530 reinterpret_cast<VkPipeline *>( &pipeline ) ) );
22531 VULKAN_HPP_NAMESPACE::detail::resultCheck(
22532 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelineNV", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
22533 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result ) );
22534 }
22535
22536 // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see
22537 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html
22538 template <typename DataType>
22539 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataType>>::type
22540 Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
22541 {
22542 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV &&
22543 "Function <vkGetRayTracingShaderGroupHandlesNV> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
22544
22545 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
22546 std::vector<DataType> data( dataSize / sizeof( DataType ) );
22547 Result result = static_cast<Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
22548 static_cast<VkPipeline>( m_pipeline ),
22549 firstGroup,
22550 groupCount,
22551 data.size() * sizeof( DataType ),
22552 reinterpret_cast<void *>( data.data() ) ) );
22553 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesNV" );
22554
22555 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22556 }
22557
22558 // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see
22559 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html
22560 template <typename DataType>
22561 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type Pipeline::getRayTracingShaderGroupHandleNV( uint32_t firstGroup,
22562 uint32_t groupCount ) const
22563 {
22564 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV &&
22565 "Function <vkGetRayTracingShaderGroupHandlesNV> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
22566
22567 DataType data;
22568 Result result = static_cast<Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
22569 static_cast<VkPipeline>( m_pipeline ),
22570 firstGroup,
22571 groupCount,
22572 sizeof( DataType ),
22573 reinterpret_cast<void *>( &data ) ) );
22574 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleNV" );
22575
22576 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22577 }
22578
22579 // wrapper function for command vkGetAccelerationStructureHandleNV, see
22580 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html
22581 template <typename DataType>
22582 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataType>>::type AccelerationStructureNV::getHandle( size_t dataSize ) const
22583 {
22584 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function <vkGetAccelerationStructureHandleNV> requires <VK_NV_ray_tracing>" );
22585
22586 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
22587 std::vector<DataType> data( dataSize / sizeof( DataType ) );
22588 Result result =
22589 static_cast<Result>( getDispatcher()->vkGetAccelerationStructureHandleNV( static_cast<VkDevice>( m_device ),
22590 static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
22591 data.size() * sizeof( DataType ),
22592 reinterpret_cast<void *>( data.data() ) ) );
22593 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
22594
22595 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22596 }
22597
22598 // wrapper function for command vkGetAccelerationStructureHandleNV, see
22599 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html
22600 template <typename DataType>
22601 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type AccelerationStructureNV::getHandle() const
22602 {
22603 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function <vkGetAccelerationStructureHandleNV> requires <VK_NV_ray_tracing>" );
22604
22605 DataType data;
22606 Result result =
22607 static_cast<Result>( getDispatcher()->vkGetAccelerationStructureHandleNV( static_cast<VkDevice>( m_device ),
22608 static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
22609 sizeof( DataType ),
22610 reinterpret_cast<void *>( &data ) ) );
22611 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
22612
22613 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
22614 }
22615
22616 // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see
22617 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html
22618 VULKAN_HPP_INLINE void
22619 CommandBuffer::writeAccelerationStructuresPropertiesNV( ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
22620 QueryType queryType,
22621 VULKAN_HPP_NAMESPACE::QueryPool queryPool,
22622 uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT
22623 {
22624 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV &&
22625 "Function <vkCmdWriteAccelerationStructuresPropertiesNV> requires <VK_NV_ray_tracing>" );
22626
22627 getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22628 accelerationStructures.size(),
22629 reinterpret_cast<const VkAccelerationStructureNV *>( accelerationStructures.data() ),
22630 static_cast<VkQueryType>( queryType ),
22631 static_cast<VkQueryPool>( queryPool ),
22632 firstQuery );
22633 }
22634
22635 // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html
22636 VULKAN_HPP_INLINE typename ResultValueType<void>::type Pipeline::compileDeferredNV( uint32_t shader ) const
22637 {
22638 VULKAN_HPP_ASSERT( getDispatcher()->vkCompileDeferredNV && "Function <vkCompileDeferredNV> requires <VK_NV_ray_tracing>" );
22639
22640 Result result =
22641 static_cast<Result>( getDispatcher()->vkCompileDeferredNV( static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), shader ) );
22642 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::compileDeferredNV" );
22643
22644 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
22645 }
22646
22647 //=== VK_KHR_maintenance3 ===
22648
22649 // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see
22650 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html
22651 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutSupport
22652 Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
22653 {
22654 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
22655 "Function <vkGetDescriptorSetLayoutSupportKHR> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
22656
22657 DescriptorSetLayoutSupport support;
22658 getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( static_cast<VkDevice>( m_device ),
22659 reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
22660 reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
22661
22662 return support;
22663 }
22664
22665 // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see
22666 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html
22667 template <typename X, typename Y, typename... Z>
22668 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
22669 Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
22670 {
22671 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
22672 "Function <vkGetDescriptorSetLayoutSupportKHR> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
22673
22674 StructureChain<X, Y, Z...> structureChain;
22675 DescriptorSetLayoutSupport & support = structureChain.template get<DescriptorSetLayoutSupport>();
22676 getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( static_cast<VkDevice>( m_device ),
22677 reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
22678 reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
22679
22680 return structureChain;
22681 }
22682
22683 //=== VK_KHR_draw_indirect_count ===
22684
22685 // wrapper function for command vkCmdDrawIndirectCountKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountKHR.html
22686 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer,
22687 DeviceSize offset,
22688 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
22689 DeviceSize countBufferOffset,
22690 uint32_t maxDrawCount,
22691 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
22692 {
22693 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountKHR &&
22694 "Function <vkCmdDrawIndirectCountKHR> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
22695
22696 getDispatcher()->vkCmdDrawIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22697 static_cast<VkBuffer>( buffer ),
22698 static_cast<VkDeviceSize>( offset ),
22699 static_cast<VkBuffer>( countBuffer ),
22700 static_cast<VkDeviceSize>( countBufferOffset ),
22701 maxDrawCount,
22702 stride );
22703 }
22704
22705 // wrapper function for command vkCmdDrawIndexedIndirectCountKHR, see
22706 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountKHR.html
22707 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer,
22708 DeviceSize offset,
22709 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
22710 DeviceSize countBufferOffset,
22711 uint32_t maxDrawCount,
22712 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
22713 {
22714 VULKAN_HPP_ASSERT(
22715 getDispatcher()->vkCmdDrawIndexedIndirectCountKHR &&
22716 "Function <vkCmdDrawIndexedIndirectCountKHR> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
22717
22718 getDispatcher()->vkCmdDrawIndexedIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22719 static_cast<VkBuffer>( buffer ),
22720 static_cast<VkDeviceSize>( offset ),
22721 static_cast<VkBuffer>( countBuffer ),
22722 static_cast<VkDeviceSize>( countBufferOffset ),
22723 maxDrawCount,
22724 stride );
22725 }
22726
22727 //=== VK_EXT_external_memory_host ===
22728
22729 // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see
22730 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html
22731 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<MemoryHostPointerPropertiesEXT>::type
22732 Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, const void * pHostPointer ) const
22733 {
22734 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryHostPointerPropertiesEXT &&
22735 "Function <vkGetMemoryHostPointerPropertiesEXT> requires <VK_EXT_external_memory_host>" );
22736
22737 MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
22738 Result result = static_cast<Result>(
22739 getDispatcher()->vkGetMemoryHostPointerPropertiesEXT( static_cast<VkDevice>( m_device ),
22740 static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
22741 pHostPointer,
22742 reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( &memoryHostPointerProperties ) ) );
22743 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" );
22744
22745 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryHostPointerProperties ) );
22746 }
22747
22748 //=== VK_AMD_buffer_marker ===
22749
22750 // wrapper function for command vkCmdWriteBufferMarkerAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarkerAMD.html
22751 VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage,
22752 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
22753 DeviceSize dstOffset,
22754 uint32_t marker ) const VULKAN_HPP_NOEXCEPT
22755 {
22756 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarkerAMD && "Function <vkCmdWriteBufferMarkerAMD> requires <VK_AMD_buffer_marker>" );
22757
22758 getDispatcher()->vkCmdWriteBufferMarkerAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
22759 static_cast<VkPipelineStageFlagBits>( pipelineStage ),
22760 static_cast<VkBuffer>( dstBuffer ),
22761 static_cast<VkDeviceSize>( dstOffset ),
22762 marker );
22763 }
22764
22765 // wrapper function for command vkCmdWriteBufferMarker2AMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarker2AMD.html
22766 VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( PipelineStageFlags2 stage,
22767 VULKAN_HPP_NAMESPACE::Buffer dstBuffer,
22768 DeviceSize dstOffset,
22769 uint32_t marker ) const VULKAN_HPP_NOEXCEPT
22770 {
22771 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarker2AMD && "Function <vkCmdWriteBufferMarker2AMD> requires <VK_AMD_buffer_marker>" );
22772
22773 getDispatcher()->vkCmdWriteBufferMarker2AMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
22774 static_cast<VkPipelineStageFlags2>( stage ),
22775 static_cast<VkBuffer>( dstBuffer ),
22776 static_cast<VkDeviceSize>( dstOffset ),
22777 marker );
22778 }
22779
22780 //=== VK_EXT_calibrated_timestamps ===
22781
22782 // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see
22783 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html
22784 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<TimeDomainKHR>>::type PhysicalDevice::getCalibrateableTimeDomainsEXT() const
22785 {
22786 VULKAN_HPP_ASSERT(
22787 getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT &&
22788 "Function <vkGetPhysicalDeviceCalibrateableTimeDomainsEXT> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
22789
22790 std::vector<TimeDomainKHR> timeDomains;
22791 uint32_t timeDomainCount;
22792 Result result;
22793 do
22794 {
22795 result = static_cast<Result>(
22796 getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, nullptr ) );
22797 if ( ( result == Result::eSuccess ) && timeDomainCount )
22798 {
22799 timeDomains.resize( timeDomainCount );
22800 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
22801 static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, reinterpret_cast<VkTimeDomainKHR *>( timeDomains.data() ) ) );
22802 }
22803 } while ( result == Result::eIncomplete );
22804 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" );
22805 VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
22806 if ( timeDomainCount < timeDomains.size() )
22807 {
22808 timeDomains.resize( timeDomainCount );
22809 }
22810 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( timeDomains ) );
22811 }
22812
22813 // wrapper function for command vkGetCalibratedTimestampsEXT, see
22814 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html
22815 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<std::vector<uint64_t>, uint64_t>>::type
22816 Device::getCalibratedTimestampsEXT( ArrayProxy<const CalibratedTimestampInfoKHR> const & timestampInfos ) const
22817 {
22818 VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsEXT &&
22819 "Function <vkGetCalibratedTimestampsEXT> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
22820
22821 std::pair<std::vector<uint64_t>, uint64_t> data_( std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) );
22822 std::vector<uint64_t> & timestamps = data_.first;
22823 uint64_t & maxDeviation = data_.second;
22824 Result result =
22825 static_cast<Result>( getDispatcher()->vkGetCalibratedTimestampsEXT( static_cast<VkDevice>( m_device ),
22826 timestampInfos.size(),
22827 reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( timestampInfos.data() ),
22828 timestamps.data(),
22829 &maxDeviation ) );
22830 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" );
22831
22832 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
22833 }
22834
22835 // wrapper function for command vkGetCalibratedTimestampsEXT, see
22836 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html
22837 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<uint64_t, uint64_t>>::type
22838 Device::getCalibratedTimestampEXT( const CalibratedTimestampInfoKHR & timestampInfo ) const
22839 {
22840 VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsEXT &&
22841 "Function <vkGetCalibratedTimestampsEXT> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
22842
22843 std::pair<uint64_t, uint64_t> data_;
22844 uint64_t & timestamp = data_.first;
22845 uint64_t & maxDeviation = data_.second;
22846 Result result = static_cast<Result>( getDispatcher()->vkGetCalibratedTimestampsEXT(
22847 static_cast<VkDevice>( m_device ), 1, reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( &timestampInfo ), &timestamp, &maxDeviation ) );
22848 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" );
22849
22850 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
22851 }
22852
22853 //=== VK_NV_mesh_shader ===
22854
22855 // wrapper function for command vkCmdDrawMeshTasksNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksNV.html
22856 VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT
22857 {
22858 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksNV && "Function <vkCmdDrawMeshTasksNV> requires <VK_NV_mesh_shader>" );
22859
22860 getDispatcher()->vkCmdDrawMeshTasksNV( static_cast<VkCommandBuffer>( m_commandBuffer ), taskCount, firstTask );
22861 }
22862
22863 // wrapper function for command vkCmdDrawMeshTasksIndirectNV, see
22864 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectNV.html
22865 VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer,
22866 DeviceSize offset,
22867 uint32_t drawCount,
22868 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
22869 {
22870 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectNV && "Function <vkCmdDrawMeshTasksIndirectNV> requires <VK_NV_mesh_shader>" );
22871
22872 getDispatcher()->vkCmdDrawMeshTasksIndirectNV(
22873 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
22874 }
22875
22876 // wrapper function for command vkCmdDrawMeshTasksIndirectCountNV, see
22877 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountNV.html
22878 VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer,
22879 DeviceSize offset,
22880 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
22881 DeviceSize countBufferOffset,
22882 uint32_t maxDrawCount,
22883 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
22884 {
22885 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV && "Function <vkCmdDrawMeshTasksIndirectCountNV> requires <VK_NV_mesh_shader>" );
22886
22887 getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22888 static_cast<VkBuffer>( buffer ),
22889 static_cast<VkDeviceSize>( offset ),
22890 static_cast<VkBuffer>( countBuffer ),
22891 static_cast<VkDeviceSize>( countBufferOffset ),
22892 maxDrawCount,
22893 stride );
22894 }
22895
22896 //=== VK_NV_scissor_exclusive ===
22897
22898 // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see
22899 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html
22900 VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorEnableNV( uint32_t firstExclusiveScissor,
22901 ArrayProxy<const Bool32> const & exclusiveScissorEnables ) const VULKAN_HPP_NOEXCEPT
22902 {
22903 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorEnableNV &&
22904 "Function <vkCmdSetExclusiveScissorEnableNV> requires <VK_NV_scissor_exclusive>" );
22905
22906 getDispatcher()->vkCmdSetExclusiveScissorEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22907 firstExclusiveScissor,
22908 exclusiveScissorEnables.size(),
22909 reinterpret_cast<const VkBool32 *>( exclusiveScissorEnables.data() ) );
22910 }
22911
22912 // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html
22913 VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor,
22914 ArrayProxy<const Rect2D> const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT
22915 {
22916 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorNV && "Function <vkCmdSetExclusiveScissorNV> requires <VK_NV_scissor_exclusive>" );
22917
22918 getDispatcher()->vkCmdSetExclusiveScissorNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22919 firstExclusiveScissor,
22920 exclusiveScissors.size(),
22921 reinterpret_cast<const VkRect2D *>( exclusiveScissors.data() ) );
22922 }
22923
22924 //=== VK_NV_device_diagnostic_checkpoints ===
22925
22926 // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html
22927 template <typename CheckpointMarkerType>
22928 VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT
22929 {
22930 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCheckpointNV && "Function <vkCmdSetCheckpointNV> requires <VK_NV_device_diagnostic_checkpoints>" );
22931
22932 getDispatcher()->vkCmdSetCheckpointNV( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const void *>( &checkpointMarker ) );
22933 }
22934
22935 // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html
22936 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<CheckpointDataNV> Queue::getCheckpointDataNV() const
22937 {
22938 VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointDataNV &&
22939 "Function <vkGetQueueCheckpointDataNV> requires <VK_NV_device_diagnostic_checkpoints>" );
22940
22941 std::vector<CheckpointDataNV> checkpointData;
22942 uint32_t checkpointDataCount;
22943 getDispatcher()->vkGetQueueCheckpointDataNV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
22944 checkpointData.resize( checkpointDataCount );
22945 getDispatcher()->vkGetQueueCheckpointDataNV(
22946 static_cast<VkQueue>( m_queue ), &checkpointDataCount, reinterpret_cast<VkCheckpointDataNV *>( checkpointData.data() ) );
22947
22948 VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
22949 if ( checkpointDataCount < checkpointData.size() )
22950 {
22951 checkpointData.resize( checkpointDataCount );
22952 }
22953 return checkpointData;
22954 }
22955
22956 // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html
22957 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<CheckpointData2NV> Queue::getCheckpointData2NV() const
22958 {
22959 VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointData2NV &&
22960 "Function <vkGetQueueCheckpointData2NV> requires <VK_NV_device_diagnostic_checkpoints>" );
22961
22962 std::vector<CheckpointData2NV> checkpointData;
22963 uint32_t checkpointDataCount;
22964 getDispatcher()->vkGetQueueCheckpointData2NV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
22965 checkpointData.resize( checkpointDataCount );
22966 getDispatcher()->vkGetQueueCheckpointData2NV(
22967 static_cast<VkQueue>( m_queue ), &checkpointDataCount, reinterpret_cast<VkCheckpointData2NV *>( checkpointData.data() ) );
22968
22969 VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
22970 if ( checkpointDataCount < checkpointData.size() )
22971 {
22972 checkpointData.resize( checkpointDataCount );
22973 }
22974 return checkpointData;
22975 }
22976
22977 //=== VK_KHR_timeline_semaphore ===
22978
22979 // wrapper function for command vkGetSemaphoreCounterValueKHR, see
22980 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html
22981 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<uint64_t>::type Semaphore::getCounterValueKHR() const
22982 {
22983 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreCounterValueKHR &&
22984 "Function <vkGetSemaphoreCounterValueKHR> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
22985
22986 uint64_t value;
22987 Result result = static_cast<Result>(
22988 getDispatcher()->vkGetSemaphoreCounterValueKHR( static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
22989 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Semaphore::getCounterValueKHR" );
22990
22991 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( value ) );
22992 }
22993
22994 // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html
22995 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( const SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const
22996 {
22997 VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphoresKHR && "Function <vkWaitSemaphoresKHR> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
22998
22999 Result result = static_cast<Result>(
23000 getDispatcher()->vkWaitSemaphoresKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
23001 VULKAN_HPP_NAMESPACE::detail::resultCheck(
23002 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitSemaphoresKHR", { Result::eSuccess, Result::eTimeout } );
23003
23004 return static_cast<Result>( result );
23005 }
23006
23007 // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html
23008 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::signalSemaphoreKHR( const SemaphoreSignalInfo & signalInfo ) const
23009 {
23010 VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphoreKHR && "Function <vkSignalSemaphoreKHR> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
23011
23012 Result result = static_cast<Result>(
23013 getDispatcher()->vkSignalSemaphoreKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
23014 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::signalSemaphoreKHR" );
23015
23016 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23017 }
23018
23019 //=== VK_INTEL_performance_query ===
23020
23021 // wrapper function for command vkInitializePerformanceApiINTEL, see
23022 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html
23023 VULKAN_HPP_INLINE typename ResultValueType<void>::type
23024 Device::initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo ) const
23025 {
23026 VULKAN_HPP_ASSERT( getDispatcher()->vkInitializePerformanceApiINTEL &&
23027 "Function <vkInitializePerformanceApiINTEL> requires <VK_INTEL_performance_query>" );
23028
23029 Result result = static_cast<Result>( getDispatcher()->vkInitializePerformanceApiINTEL(
23030 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( &initializeInfo ) ) );
23031 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" );
23032
23033 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23034 }
23035
23036 // wrapper function for command vkUninitializePerformanceApiINTEL, see
23037 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUninitializePerformanceApiINTEL.html
23038 VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT
23039 {
23040 VULKAN_HPP_ASSERT( getDispatcher()->vkUninitializePerformanceApiINTEL &&
23041 "Function <vkUninitializePerformanceApiINTEL> requires <VK_INTEL_performance_query>" );
23042
23043 getDispatcher()->vkUninitializePerformanceApiINTEL( static_cast<VkDevice>( m_device ) );
23044 }
23045
23046 // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see
23047 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html
23048 VULKAN_HPP_INLINE typename ResultValueType<void>::type CommandBuffer::setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo ) const
23049 {
23050 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceMarkerINTEL && "Function <vkCmdSetPerformanceMarkerINTEL> requires <VK_INTEL_performance_query>" );
23051
23052 Result result = static_cast<Result>( getDispatcher()->vkCmdSetPerformanceMarkerINTEL(
23053 static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( &markerInfo ) ) );
23054 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" );
23055
23056 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23057 }
23058
23059 // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see
23060 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html
23061 VULKAN_HPP_INLINE typename ResultValueType<void>::type
23062 CommandBuffer::setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo ) const
23063 {
23064 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL &&
23065 "Function <vkCmdSetPerformanceStreamMarkerINTEL> requires <VK_INTEL_performance_query>" );
23066
23067 Result result = static_cast<Result>( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL(
23068 static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( &markerInfo ) ) );
23069 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" );
23070
23071 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23072 }
23073
23074 // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see
23075 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html
23076 VULKAN_HPP_INLINE typename ResultValueType<void>::type CommandBuffer::setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo ) const
23077 {
23078 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceOverrideINTEL &&
23079 "Function <vkCmdSetPerformanceOverrideINTEL> requires <VK_INTEL_performance_query>" );
23080
23081 Result result = static_cast<Result>( getDispatcher()->vkCmdSetPerformanceOverrideINTEL(
23082 static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( &overrideInfo ) ) );
23083 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" );
23084
23085 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23086 }
23087
23088 // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see
23089 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html
23090 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PerformanceConfigurationINTEL>::type
23091 Device::acquirePerformanceConfigurationINTEL( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
23092 {
23093 VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration;
23094 Result result = static_cast<Result>(
23095 getDispatcher()->vkAcquirePerformanceConfigurationINTEL( static_cast<VkDevice>( m_device ),
23096 reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( &acquireInfo ),
23097 reinterpret_cast<VkPerformanceConfigurationINTEL *>( &configuration ) ) );
23098 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTEL" );
23099 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
23100 result, PerformanceConfigurationINTEL( *this, *reinterpret_cast<VkPerformanceConfigurationINTEL *>( &configuration ) ) );
23101 }
23102
23103 // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see
23104 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html
23105 VULKAN_HPP_INLINE typename ResultValueType<void>::type
23106 Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const
23107 {
23108 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL &&
23109 "Function <vkQueueSetPerformanceConfigurationINTEL> requires <VK_INTEL_performance_query>" );
23110
23111 Result result = static_cast<Result>( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL(
23112 static_cast<VkQueue>( m_queue ), static_cast<VkPerformanceConfigurationINTEL>( configuration ) ) );
23113 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" );
23114
23115 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23116 }
23117
23118 // wrapper function for command vkGetPerformanceParameterINTEL, see
23119 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html
23120 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PerformanceValueINTEL>::type
23121 Device::getPerformanceParameterINTEL( PerformanceParameterTypeINTEL parameter ) const
23122 {
23123 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPerformanceParameterINTEL && "Function <vkGetPerformanceParameterINTEL> requires <VK_INTEL_performance_query>" );
23124
23125 PerformanceValueINTEL value;
23126 Result result = static_cast<Result>( getDispatcher()->vkGetPerformanceParameterINTEL(
23127 static_cast<VkDevice>( m_device ), static_cast<VkPerformanceParameterTypeINTEL>( parameter ), reinterpret_cast<VkPerformanceValueINTEL *>( &value ) ) );
23128 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" );
23129
23130 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( value ) );
23131 }
23132
23133 //=== VK_AMD_display_native_hdr ===
23134
23135 // wrapper function for command vkSetLocalDimmingAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLocalDimmingAMD.html
23136 VULKAN_HPP_INLINE void SwapchainKHR::setLocalDimmingAMD( Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT
23137 {
23138 VULKAN_HPP_ASSERT( getDispatcher()->vkSetLocalDimmingAMD && "Function <vkSetLocalDimmingAMD> requires <VK_AMD_display_native_hdr>" );
23139
23140 getDispatcher()->vkSetLocalDimmingAMD(
23141 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), static_cast<VkBool32>( localDimmingEnable ) );
23142 }
23143
23144 # if defined( VK_USE_PLATFORM_FUCHSIA )
23145 //=== VK_FUCHSIA_imagepipe_surface ===
23146
23147 // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see
23148 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html
23149 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
23150 Instance::createImagePipeSurfaceFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo,
23151 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
23152 {
23153 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
23154 Result result =
23155 static_cast<Result>( getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA( static_cast<VkInstance>( m_instance ),
23156 reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( &createInfo ),
23157 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
23158 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
23159 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIA" );
23160 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
23161 }
23162 # endif /*VK_USE_PLATFORM_FUCHSIA*/
23163
23164 # if defined( VK_USE_PLATFORM_METAL_EXT )
23165 //=== VK_EXT_metal_surface ===
23166
23167 // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html
23168 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
23169 Instance::createMetalSurfaceEXT( MetalSurfaceCreateInfoEXT const & createInfo,
23170 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
23171 {
23172 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
23173 Result result = static_cast<Result>( getDispatcher()->vkCreateMetalSurfaceEXT( static_cast<VkInstance>( m_instance ),
23174 reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( &createInfo ),
23175 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
23176 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
23177 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createMetalSurfaceEXT" );
23178 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
23179 }
23180 # endif /*VK_USE_PLATFORM_METAL_EXT*/
23181
23182 //=== VK_KHR_fragment_shading_rate ===
23183
23184 // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see
23185 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html
23186 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceFragmentShadingRateKHR>>::type
23187 PhysicalDevice::getFragmentShadingRatesKHR() const
23188 {
23189 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR &&
23190 "Function <vkGetPhysicalDeviceFragmentShadingRatesKHR> requires <VK_KHR_fragment_shading_rate>" );
23191
23192 std::vector<PhysicalDeviceFragmentShadingRateKHR> fragmentShadingRates;
23193 uint32_t fragmentShadingRateCount;
23194 Result result;
23195 do
23196 {
23197 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
23198 static_cast<VkPhysicalDevice>( m_physicalDevice ), &fragmentShadingRateCount, nullptr ) );
23199 if ( ( result == Result::eSuccess ) && fragmentShadingRateCount )
23200 {
23201 fragmentShadingRates.resize( fragmentShadingRateCount );
23202 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
23203 static_cast<VkPhysicalDevice>( m_physicalDevice ),
23204 &fragmentShadingRateCount,
23205 reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( fragmentShadingRates.data() ) ) );
23206 }
23207 } while ( result == Result::eIncomplete );
23208 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" );
23209 VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() );
23210 if ( fragmentShadingRateCount < fragmentShadingRates.size() )
23211 {
23212 fragmentShadingRates.resize( fragmentShadingRateCount );
23213 }
23214 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fragmentShadingRates ) );
23215 }
23216
23217 // wrapper function for command vkCmdSetFragmentShadingRateKHR, see
23218 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html
23219 VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( const Extent2D & fragmentSize,
23220 const FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
23221 {
23222 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFragmentShadingRateKHR &&
23223 "Function <vkCmdSetFragmentShadingRateKHR> requires <VK_KHR_fragment_shading_rate>" );
23224
23225 getDispatcher()->vkCmdSetFragmentShadingRateKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
23226 reinterpret_cast<const VkExtent2D *>( &fragmentSize ),
23227 reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
23228 }
23229
23230 //=== VK_KHR_dynamic_rendering_local_read ===
23231
23232 // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see
23233 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html
23234 VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocationsKHR( const RenderingAttachmentLocationInfo & locationInfo ) const VULKAN_HPP_NOEXCEPT
23235 {
23236 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingAttachmentLocationsKHR &&
23237 "Function <vkCmdSetRenderingAttachmentLocationsKHR> requires <VK_KHR_dynamic_rendering_local_read> or <VK_VERSION_1_4>" );
23238
23239 getDispatcher()->vkCmdSetRenderingAttachmentLocationsKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
23240 reinterpret_cast<const VkRenderingAttachmentLocationInfo *>( &locationInfo ) );
23241 }
23242
23243 // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see
23244 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html
23245 VULKAN_HPP_INLINE void
23246 CommandBuffer::setRenderingInputAttachmentIndicesKHR( const RenderingInputAttachmentIndexInfo & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT
23247 {
23248 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingInputAttachmentIndicesKHR &&
23249 "Function <vkCmdSetRenderingInputAttachmentIndicesKHR> requires <VK_KHR_dynamic_rendering_local_read> or <VK_VERSION_1_4>" );
23250
23251 getDispatcher()->vkCmdSetRenderingInputAttachmentIndicesKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
23252 reinterpret_cast<const VkRenderingInputAttachmentIndexInfo *>( &inputAttachmentIndexInfo ) );
23253 }
23254
23255 //=== VK_EXT_buffer_device_address ===
23256
23257 // wrapper function for command vkGetBufferDeviceAddressEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html
23258 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
23259 {
23260 VULKAN_HPP_ASSERT(
23261 getDispatcher()->vkGetBufferDeviceAddressEXT &&
23262 "Function <vkGetBufferDeviceAddressEXT> requires <VK_EXT_buffer_device_address> or <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
23263
23264 VkDeviceAddress result =
23265 getDispatcher()->vkGetBufferDeviceAddressEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
23266
23267 return static_cast<DeviceAddress>( result );
23268 }
23269
23270 //=== VK_EXT_tooling_info ===
23271
23272 // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see
23273 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html
23274 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceToolProperties>>::type
23275 PhysicalDevice::getToolPropertiesEXT() const
23276 {
23277 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT &&
23278 "Function <vkGetPhysicalDeviceToolPropertiesEXT> requires <VK_EXT_tooling_info> or <VK_VERSION_1_3>" );
23279
23280 std::vector<PhysicalDeviceToolProperties> toolProperties;
23281 uint32_t toolCount;
23282 Result result;
23283 do
23284 {
23285 result = static_cast<Result>(
23286 getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, nullptr ) );
23287 if ( ( result == Result::eSuccess ) && toolCount )
23288 {
23289 toolProperties.resize( toolCount );
23290 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT(
23291 static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, reinterpret_cast<VkPhysicalDeviceToolProperties *>( toolProperties.data() ) ) );
23292 }
23293 } while ( result == Result::eIncomplete );
23294 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" );
23295 VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() );
23296 if ( toolCount < toolProperties.size() )
23297 {
23298 toolProperties.resize( toolCount );
23299 }
23300 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( toolProperties ) );
23301 }
23302
23303 //=== VK_KHR_present_wait ===
23304
23305 // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html
23306 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::waitForPresent( uint64_t presentId, uint64_t timeout ) const
23307 {
23308 VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresentKHR && "Function <vkWaitForPresentKHR> requires <VK_KHR_present_wait>" );
23309
23310 Result result = static_cast<Result>(
23311 getDispatcher()->vkWaitForPresentKHR( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), presentId, timeout ) );
23312
23313 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
23314 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
23315 VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent",
23316 { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } );
23317 # else
23318 VULKAN_HPP_NAMESPACE::detail::resultCheck(
23319 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent", { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR } );
23320 # endif
23321
23322 return static_cast<Result>( result );
23323 }
23324
23325 //=== VK_NV_cooperative_matrix ===
23326
23327 // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see
23328 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html
23329 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<CooperativeMatrixPropertiesNV>>::type
23330 PhysicalDevice::getCooperativeMatrixPropertiesNV() const
23331 {
23332 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV &&
23333 "Function <vkGetPhysicalDeviceCooperativeMatrixPropertiesNV> requires <VK_NV_cooperative_matrix>" );
23334
23335 std::vector<CooperativeMatrixPropertiesNV> properties;
23336 uint32_t propertyCount;
23337 Result result;
23338 do
23339 {
23340 result = static_cast<Result>(
23341 getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
23342 if ( ( result == Result::eSuccess ) && propertyCount )
23343 {
23344 properties.resize( propertyCount );
23345 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
23346 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( properties.data() ) ) );
23347 }
23348 } while ( result == Result::eIncomplete );
23349 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" );
23350 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
23351 if ( propertyCount < properties.size() )
23352 {
23353 properties.resize( propertyCount );
23354 }
23355 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
23356 }
23357
23358 //=== VK_NV_coverage_reduction_mode ===
23359
23360 // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see
23361 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html
23362 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<FramebufferMixedSamplesCombinationNV>>::type
23363 PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV() const
23364 {
23365 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV &&
23366 "Function <vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV> requires <VK_NV_coverage_reduction_mode>" );
23367
23368 std::vector<FramebufferMixedSamplesCombinationNV> combinations;
23369 uint32_t combinationCount;
23370 Result result;
23371 do
23372 {
23373 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
23374 static_cast<VkPhysicalDevice>( m_physicalDevice ), &combinationCount, nullptr ) );
23375 if ( ( result == Result::eSuccess ) && combinationCount )
23376 {
23377 combinations.resize( combinationCount );
23378 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
23379 static_cast<VkPhysicalDevice>( m_physicalDevice ),
23380 &combinationCount,
23381 reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( combinations.data() ) ) );
23382 }
23383 } while ( result == Result::eIncomplete );
23384 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
23385 VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" );
23386 VULKAN_HPP_ASSERT( combinationCount <= combinations.size() );
23387 if ( combinationCount < combinations.size() )
23388 {
23389 combinations.resize( combinationCount );
23390 }
23391 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( combinations ) );
23392 }
23393
23394 # if defined( VK_USE_PLATFORM_WIN32_KHR )
23395 //=== VK_EXT_full_screen_exclusive ===
23396
23397 // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see
23398 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html
23399 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR>>::type
23400 PhysicalDevice::getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
23401 {
23402 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT &&
23403 "Function <vkGetPhysicalDeviceSurfacePresentModes2EXT> requires <VK_EXT_full_screen_exclusive>" );
23404
23405 std::vector<PresentModeKHR> presentModes;
23406 uint32_t presentModeCount;
23407 Result result;
23408 do
23409 {
23410 result = static_cast<Result>(
23411 getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
23412 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
23413 &presentModeCount,
23414 nullptr ) );
23415 if ( ( result == Result::eSuccess ) && presentModeCount )
23416 {
23417 presentModes.resize( presentModeCount );
23418 result = static_cast<Result>(
23419 getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
23420 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
23421 &presentModeCount,
23422 reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
23423 }
23424 } while ( result == Result::eIncomplete );
23425 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" );
23426 VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
23427 if ( presentModeCount < presentModes.size() )
23428 {
23429 presentModes.resize( presentModeCount );
23430 }
23431 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( presentModes ) );
23432 }
23433
23434 // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see
23435 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html
23436 VULKAN_HPP_INLINE typename ResultValueType<void>::type SwapchainKHR::acquireFullScreenExclusiveModeEXT() const
23437 {
23438 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireFullScreenExclusiveModeEXT &&
23439 "Function <vkAcquireFullScreenExclusiveModeEXT> requires <VK_EXT_full_screen_exclusive>" );
23440
23441 Result result = static_cast<Result>(
23442 getDispatcher()->vkAcquireFullScreenExclusiveModeEXT( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
23443 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::acquireFullScreenExclusiveModeEXT" );
23444
23445 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23446 }
23447
23448 // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see
23449 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html
23450 VULKAN_HPP_INLINE typename ResultValueType<void>::type SwapchainKHR::releaseFullScreenExclusiveModeEXT() const
23451 {
23452 VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseFullScreenExclusiveModeEXT &&
23453 "Function <vkReleaseFullScreenExclusiveModeEXT> requires <VK_EXT_full_screen_exclusive>" );
23454
23455 Result result = static_cast<Result>(
23456 getDispatcher()->vkReleaseFullScreenExclusiveModeEXT( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
23457 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::releaseFullScreenExclusiveModeEXT" );
23458
23459 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23460 }
23461
23462 // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see
23463 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html
23464 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DeviceGroupPresentModeFlagsKHR>::type
23465 Device::getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
23466 {
23467 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT &&
23468 "Function <vkGetDeviceGroupSurfacePresentModes2EXT> requires <VK_EXT_full_screen_exclusive>" );
23469
23470 DeviceGroupPresentModeFlagsKHR modes;
23471 Result result = static_cast<Result>(
23472 getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT( static_cast<VkDevice>( m_device ),
23473 reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
23474 reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
23475 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" );
23476
23477 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( modes ) );
23478 }
23479 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
23480
23481 //=== VK_EXT_headless_surface ===
23482
23483 // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html
23484 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
23485 Instance::createHeadlessSurfaceEXT( HeadlessSurfaceCreateInfoEXT const & createInfo,
23486 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
23487 {
23488 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
23489 Result result = static_cast<Result>( getDispatcher()->vkCreateHeadlessSurfaceEXT( static_cast<VkInstance>( m_instance ),
23490 reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( &createInfo ),
23491 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
23492 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
23493 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXT" );
23494 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
23495 }
23496
23497 //=== VK_KHR_buffer_device_address ===
23498
23499 // wrapper function for command vkGetBufferDeviceAddressKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html
23500 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
23501 {
23502 VULKAN_HPP_ASSERT(
23503 getDispatcher()->vkGetBufferDeviceAddressKHR &&
23504 "Function <vkGetBufferDeviceAddressKHR> requires <VK_EXT_buffer_device_address> or <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
23505
23506 VkDeviceAddress result =
23507 getDispatcher()->vkGetBufferDeviceAddressKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
23508
23509 return static_cast<DeviceAddress>( result );
23510 }
23511
23512 // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see
23513 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html
23514 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
23515 {
23516 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR &&
23517 "Function <vkGetBufferOpaqueCaptureAddressKHR> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
23518
23519 uint64_t result =
23520 getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
23521
23522 return result;
23523 }
23524
23525 // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see
23526 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html
23527 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
23528 Device::getMemoryOpaqueCaptureAddressKHR( const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
23529 {
23530 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR &&
23531 "Function <vkGetDeviceMemoryOpaqueCaptureAddressKHR> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
23532
23533 uint64_t result = getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR( static_cast<VkDevice>( m_device ),
23534 reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
23535
23536 return result;
23537 }
23538
23539 //=== VK_EXT_line_rasterization ===
23540
23541 // wrapper function for command vkCmdSetLineStippleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEXT.html
23542 VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
23543 {
23544 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEXT &&
23545 "Function <vkCmdSetLineStippleEXT> requires <VK_EXT_line_rasterization> or <VK_KHR_line_rasterization> or <VK_VERSION_1_4>" );
23546
23547 getDispatcher()->vkCmdSetLineStippleEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
23548 }
23549
23550 //=== VK_EXT_host_query_reset ===
23551
23552 // wrapper function for command vkResetQueryPoolEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPoolEXT.html
23553 VULKAN_HPP_INLINE void QueryPool::resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
23554 {
23555 VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPoolEXT && "Function <vkResetQueryPoolEXT> requires <VK_EXT_host_query_reset> or <VK_VERSION_1_2>" );
23556
23557 getDispatcher()->vkResetQueryPoolEXT( static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
23558 }
23559
23560 //=== VK_EXT_extended_dynamic_state ===
23561
23562 // wrapper function for command vkCmdSetCullModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullModeEXT.html
23563 VULKAN_HPP_INLINE void CommandBuffer::setCullModeEXT( CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT
23564 {
23565 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullModeEXT &&
23566 "Function <vkCmdSetCullModeEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23567
23568 getDispatcher()->vkCmdSetCullModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCullModeFlags>( cullMode ) );
23569 }
23570
23571 // wrapper function for command vkCmdSetFrontFaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFaceEXT.html
23572 VULKAN_HPP_INLINE void CommandBuffer::setFrontFaceEXT( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT
23573 {
23574 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFaceEXT &&
23575 "Function <vkCmdSetFrontFaceEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23576
23577 getDispatcher()->vkCmdSetFrontFaceEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkFrontFace>( frontFace ) );
23578 }
23579
23580 // wrapper function for command vkCmdSetPrimitiveTopologyEXT, see
23581 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopologyEXT.html
23582 VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT
23583 {
23584 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveTopologyEXT &&
23585 "Function <vkCmdSetPrimitiveTopologyEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23586
23587 getDispatcher()->vkCmdSetPrimitiveTopologyEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPrimitiveTopology>( primitiveTopology ) );
23588 }
23589
23590 // wrapper function for command vkCmdSetViewportWithCountEXT, see
23591 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html
23592 VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( ArrayProxy<const Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
23593 {
23594 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWithCountEXT &&
23595 "Function <vkCmdSetViewportWithCountEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23596
23597 getDispatcher()->vkCmdSetViewportWithCountEXT(
23598 static_cast<VkCommandBuffer>( m_commandBuffer ), viewports.size(), reinterpret_cast<const VkViewport *>( viewports.data() ) );
23599 }
23600
23601 // wrapper function for command vkCmdSetScissorWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html
23602 VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( ArrayProxy<const Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
23603 {
23604 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissorWithCountEXT &&
23605 "Function <vkCmdSetScissorWithCountEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23606
23607 getDispatcher()->vkCmdSetScissorWithCountEXT(
23608 static_cast<VkCommandBuffer>( m_commandBuffer ), scissors.size(), reinterpret_cast<const VkRect2D *>( scissors.data() ) );
23609 }
23610
23611 // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html
23612 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding,
23613 ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,
23614 ArrayProxy<const DeviceSize> const & offsets,
23615 ArrayProxy<const DeviceSize> const & sizes,
23616 ArrayProxy<const DeviceSize> const & strides ) const
23617 {
23618 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers2EXT &&
23619 "Function <vkCmdBindVertexBuffers2EXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23620 # ifdef VULKAN_HPP_NO_EXCEPTIONS
23621 VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
23622 VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
23623 VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() );
23624 # else
23625 if ( buffers.size() != offsets.size() )
23626 {
23627 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" );
23628 }
23629 if ( !sizes.empty() && buffers.size() != sizes.size() )
23630 {
23631 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" );
23632 }
23633 if ( !strides.empty() && buffers.size() != strides.size() )
23634 {
23635 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" );
23636 }
23637 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
23638
23639 getDispatcher()->vkCmdBindVertexBuffers2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
23640 firstBinding,
23641 buffers.size(),
23642 reinterpret_cast<const VkBuffer *>( buffers.data() ),
23643 reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
23644 reinterpret_cast<const VkDeviceSize *>( sizes.data() ),
23645 reinterpret_cast<const VkDeviceSize *>( strides.data() ) );
23646 }
23647
23648 // wrapper function for command vkCmdSetDepthTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnableEXT.html
23649 VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnableEXT( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT
23650 {
23651 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthTestEnableEXT &&
23652 "Function <vkCmdSetDepthTestEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23653
23654 getDispatcher()->vkCmdSetDepthTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthTestEnable ) );
23655 }
23656
23657 // wrapper function for command vkCmdSetDepthWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnableEXT.html
23658 VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnableEXT( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT
23659 {
23660 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthWriteEnableEXT &&
23661 "Function <vkCmdSetDepthWriteEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23662
23663 getDispatcher()->vkCmdSetDepthWriteEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthWriteEnable ) );
23664 }
23665
23666 // wrapper function for command vkCmdSetDepthCompareOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOpEXT.html
23667 VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOpEXT( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT
23668 {
23669 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthCompareOpEXT &&
23670 "Function <vkCmdSetDepthCompareOpEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23671
23672 getDispatcher()->vkCmdSetDepthCompareOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCompareOp>( depthCompareOp ) );
23673 }
23674
23675 // wrapper function for command vkCmdSetDepthBoundsTestEnableEXT, see
23676 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnableEXT.html
23677 VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT
23678 {
23679 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT &&
23680 "Function <vkCmdSetDepthBoundsTestEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23681
23682 getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBoundsTestEnable ) );
23683 }
23684
23685 // wrapper function for command vkCmdSetStencilTestEnableEXT, see
23686 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnableEXT.html
23687 VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnableEXT( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT
23688 {
23689 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilTestEnableEXT &&
23690 "Function <vkCmdSetStencilTestEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23691
23692 getDispatcher()->vkCmdSetStencilTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( stencilTestEnable ) );
23693 }
23694
23695 // wrapper function for command vkCmdSetStencilOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOpEXT.html
23696 VULKAN_HPP_INLINE void CommandBuffer::setStencilOpEXT(
23697 StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT
23698 {
23699 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOpEXT &&
23700 "Function <vkCmdSetStencilOpEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
23701
23702 getDispatcher()->vkCmdSetStencilOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
23703 static_cast<VkStencilFaceFlags>( faceMask ),
23704 static_cast<VkStencilOp>( failOp ),
23705 static_cast<VkStencilOp>( passOp ),
23706 static_cast<VkStencilOp>( depthFailOp ),
23707 static_cast<VkCompareOp>( compareOp ) );
23708 }
23709
23710 //=== VK_KHR_deferred_host_operations ===
23711
23712 // wrapper function for command vkCreateDeferredOperationKHR, see
23713 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html
23714 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DeferredOperationKHR>::type
23715 Device::createDeferredOperationKHR( Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
23716 {
23717 VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation;
23718 Result result = static_cast<Result>( getDispatcher()->vkCreateDeferredOperationKHR( static_cast<VkDevice>( m_device ),
23719 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
23720 reinterpret_cast<VkDeferredOperationKHR *>( &deferredOperation ) ) );
23721 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDeferredOperationKHR" );
23722 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
23723 result, DeferredOperationKHR( *this, *reinterpret_cast<VkDeferredOperationKHR *>( &deferredOperation ), allocator ) );
23724 }
23725
23726 // wrapper function for command vkGetDeferredOperationMaxConcurrencyKHR, see
23727 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationMaxConcurrencyKHR.html
23728 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t DeferredOperationKHR::getMaxConcurrency() const VULKAN_HPP_NOEXCEPT
23729 {
23730 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR &&
23731 "Function <vkGetDeferredOperationMaxConcurrencyKHR> requires <VK_KHR_deferred_host_operations>" );
23732
23733 uint32_t result = getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR( static_cast<VkDevice>( m_device ),
23734 static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) );
23735
23736 return result;
23737 }
23738
23739 // wrapper function for command vkGetDeferredOperationResultKHR, see
23740 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html
23741 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result DeferredOperationKHR::getResult() const
23742 {
23743 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeferredOperationResultKHR &&
23744 "Function <vkGetDeferredOperationResultKHR> requires <VK_KHR_deferred_host_operations>" );
23745
23746 Result result = static_cast<Result>(
23747 getDispatcher()->vkGetDeferredOperationResultKHR( static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) ) );
23748 VULKAN_HPP_NAMESPACE::detail::resultCheck(
23749 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeferredOperationKHR::getResult", { Result::eSuccess, Result::eNotReady } );
23750
23751 return static_cast<Result>( result );
23752 }
23753
23754 // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html
23755 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result DeferredOperationKHR::join() const
23756 {
23757 VULKAN_HPP_ASSERT( getDispatcher()->vkDeferredOperationJoinKHR && "Function <vkDeferredOperationJoinKHR> requires <VK_KHR_deferred_host_operations>" );
23758
23759 Result result = static_cast<Result>(
23760 getDispatcher()->vkDeferredOperationJoinKHR( static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) ) );
23761 VULKAN_HPP_NAMESPACE::detail::resultCheck(
23762 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeferredOperationKHR::join", { Result::eSuccess, Result::eThreadDoneKHR, Result::eThreadIdleKHR } );
23763
23764 return static_cast<Result>( result );
23765 }
23766
23767 //=== VK_KHR_pipeline_executable_properties ===
23768
23769 // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see
23770 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html
23771 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PipelineExecutablePropertiesKHR>>::type
23772 Device::getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo ) const
23773 {
23774 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutablePropertiesKHR &&
23775 "Function <vkGetPipelineExecutablePropertiesKHR> requires <VK_KHR_pipeline_executable_properties>" );
23776
23777 std::vector<PipelineExecutablePropertiesKHR> properties;
23778 uint32_t executableCount;
23779 Result result;
23780 do
23781 {
23782 result = static_cast<Result>( getDispatcher()->vkGetPipelineExecutablePropertiesKHR(
23783 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ), &executableCount, nullptr ) );
23784 if ( ( result == Result::eSuccess ) && executableCount )
23785 {
23786 properties.resize( executableCount );
23787 result = static_cast<Result>(
23788 getDispatcher()->vkGetPipelineExecutablePropertiesKHR( static_cast<VkDevice>( m_device ),
23789 reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ),
23790 &executableCount,
23791 reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( properties.data() ) ) );
23792 }
23793 } while ( result == Result::eIncomplete );
23794 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" );
23795 VULKAN_HPP_ASSERT( executableCount <= properties.size() );
23796 if ( executableCount < properties.size() )
23797 {
23798 properties.resize( executableCount );
23799 }
23800 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
23801 }
23802
23803 // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see
23804 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html
23805 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PipelineExecutableStatisticKHR>>::type
23806 Device::getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo ) const
23807 {
23808 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutableStatisticsKHR &&
23809 "Function <vkGetPipelineExecutableStatisticsKHR> requires <VK_KHR_pipeline_executable_properties>" );
23810
23811 std::vector<PipelineExecutableStatisticKHR> statistics;
23812 uint32_t statisticCount;
23813 Result result;
23814 do
23815 {
23816 result = static_cast<Result>( getDispatcher()->vkGetPipelineExecutableStatisticsKHR(
23817 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ), &statisticCount, nullptr ) );
23818 if ( ( result == Result::eSuccess ) && statisticCount )
23819 {
23820 statistics.resize( statisticCount );
23821 result = static_cast<Result>(
23822 getDispatcher()->vkGetPipelineExecutableStatisticsKHR( static_cast<VkDevice>( m_device ),
23823 reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
23824 &statisticCount,
23825 reinterpret_cast<VkPipelineExecutableStatisticKHR *>( statistics.data() ) ) );
23826 }
23827 } while ( result == Result::eIncomplete );
23828 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" );
23829 VULKAN_HPP_ASSERT( statisticCount <= statistics.size() );
23830 if ( statisticCount < statistics.size() )
23831 {
23832 statistics.resize( statisticCount );
23833 }
23834 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( statistics ) );
23835 }
23836
23837 // wrapper function for command vkGetPipelineExecutableInternalRepresentationsKHR, see
23838 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableInternalRepresentationsKHR.html
23839 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PipelineExecutableInternalRepresentationKHR>>::type
23840 Device::getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo ) const
23841 {
23842 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR &&
23843 "Function <vkGetPipelineExecutableInternalRepresentationsKHR> requires <VK_KHR_pipeline_executable_properties>" );
23844
23845 std::vector<PipelineExecutableInternalRepresentationKHR> internalRepresentations;
23846 uint32_t internalRepresentationCount;
23847 Result result;
23848 do
23849 {
23850 result = static_cast<Result>(
23851 getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR( static_cast<VkDevice>( m_device ),
23852 reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
23853 &internalRepresentationCount,
23854 nullptr ) );
23855 if ( ( result == Result::eSuccess ) && internalRepresentationCount )
23856 {
23857 internalRepresentations.resize( internalRepresentationCount );
23858 result = static_cast<Result>( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR(
23859 static_cast<VkDevice>( m_device ),
23860 reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
23861 &internalRepresentationCount,
23862 reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( internalRepresentations.data() ) ) );
23863 }
23864 } while ( result == Result::eIncomplete );
23865 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" );
23866 VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() );
23867 if ( internalRepresentationCount < internalRepresentations.size() )
23868 {
23869 internalRepresentations.resize( internalRepresentationCount );
23870 }
23871 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( internalRepresentations ) );
23872 }
23873
23874 //=== VK_EXT_host_image_copy ===
23875
23876 // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html
23877 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::copyMemoryToImageEXT( const CopyMemoryToImageInfo & copyMemoryToImageInfo ) const
23878 {
23879 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToImageEXT && "Function <vkCopyMemoryToImageEXT> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
23880
23881 Result result = static_cast<Result>( getDispatcher()->vkCopyMemoryToImageEXT(
23882 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyMemoryToImageInfo *>( &copyMemoryToImageInfo ) ) );
23883 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToImageEXT" );
23884
23885 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23886 }
23887
23888 // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html
23889 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::copyImageToMemoryEXT( const CopyImageToMemoryInfo & copyImageToMemoryInfo ) const
23890 {
23891 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToMemoryEXT && "Function <vkCopyImageToMemoryEXT> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
23892
23893 Result result = static_cast<Result>( getDispatcher()->vkCopyImageToMemoryEXT(
23894 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyImageToMemoryInfo *>( &copyImageToMemoryInfo ) ) );
23895 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToMemoryEXT" );
23896
23897 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23898 }
23899
23900 // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html
23901 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::copyImageToImageEXT( const CopyImageToImageInfo & copyImageToImageInfo ) const
23902 {
23903 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToImageEXT && "Function <vkCopyImageToImageEXT> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
23904
23905 Result result = static_cast<Result>( getDispatcher()->vkCopyImageToImageEXT(
23906 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyImageToImageInfo *>( &copyImageToImageInfo ) ) );
23907 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToImageEXT" );
23908
23909 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23910 }
23911
23912 // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html
23913 VULKAN_HPP_INLINE typename ResultValueType<void>::type
23914 Device::transitionImageLayoutEXT( ArrayProxy<const HostImageLayoutTransitionInfo> const & transitions ) const
23915 {
23916 VULKAN_HPP_ASSERT( getDispatcher()->vkTransitionImageLayoutEXT &&
23917 "Function <vkTransitionImageLayoutEXT> requires <VK_EXT_host_image_copy> or <VK_VERSION_1_4>" );
23918
23919 Result result = static_cast<Result>( getDispatcher()->vkTransitionImageLayoutEXT(
23920 static_cast<VkDevice>( m_device ), transitions.size(), reinterpret_cast<const VkHostImageLayoutTransitionInfo *>( transitions.data() ) ) );
23921 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::transitionImageLayoutEXT" );
23922
23923 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23924 }
23925
23926 // wrapper function for command vkGetImageSubresourceLayout2EXT, see
23927 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html
23928 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Image::getSubresourceLayout2EXT( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT
23929 {
23930 VULKAN_HPP_ASSERT(
23931 getDispatcher()->vkGetImageSubresourceLayout2EXT &&
23932 "Function <vkGetImageSubresourceLayout2EXT> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
23933
23934 SubresourceLayout2 layout;
23935 getDispatcher()->vkGetImageSubresourceLayout2EXT( static_cast<VkDevice>( m_device ),
23936 static_cast<VkImage>( m_image ),
23937 reinterpret_cast<const VkImageSubresource2 *>( &subresource ),
23938 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
23939
23940 return layout;
23941 }
23942
23943 // wrapper function for command vkGetImageSubresourceLayout2EXT, see
23944 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html
23945 template <typename X, typename Y, typename... Z>
23946 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
23947 Image::getSubresourceLayout2EXT( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT
23948 {
23949 VULKAN_HPP_ASSERT(
23950 getDispatcher()->vkGetImageSubresourceLayout2EXT &&
23951 "Function <vkGetImageSubresourceLayout2EXT> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
23952
23953 StructureChain<X, Y, Z...> structureChain;
23954 SubresourceLayout2 & layout = structureChain.template get<SubresourceLayout2>();
23955 getDispatcher()->vkGetImageSubresourceLayout2EXT( static_cast<VkDevice>( m_device ),
23956 static_cast<VkImage>( m_image ),
23957 reinterpret_cast<const VkImageSubresource2 *>( &subresource ),
23958 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
23959
23960 return structureChain;
23961 }
23962
23963 //=== VK_KHR_map_memory2 ===
23964
23965 // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html
23966 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<void *>::type Device::mapMemory2KHR( const MemoryMapInfo & memoryMapInfo ) const
23967 {
23968 VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory2KHR && "Function <vkMapMemory2KHR> requires <VK_KHR_map_memory2> or <VK_VERSION_1_4>" );
23969
23970 void * pData;
23971 Result result = static_cast<Result>(
23972 getDispatcher()->vkMapMemory2KHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryMapInfo *>( &memoryMapInfo ), &pData ) );
23973 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::mapMemory2KHR" );
23974
23975 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pData ) );
23976 }
23977
23978 // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html
23979 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::unmapMemory2KHR( const MemoryUnmapInfo & memoryUnmapInfo ) const
23980 {
23981 VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory2KHR && "Function <vkUnmapMemory2KHR> requires <VK_KHR_map_memory2> or <VK_VERSION_1_4>" );
23982
23983 Result result = static_cast<Result>(
23984 getDispatcher()->vkUnmapMemory2KHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryUnmapInfo *>( &memoryUnmapInfo ) ) );
23985 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::unmapMemory2KHR" );
23986
23987 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
23988 }
23989
23990 //=== VK_EXT_swapchain_maintenance1 ===
23991
23992 // wrapper function for command vkReleaseSwapchainImagesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html
23993 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::releaseSwapchainImagesEXT( const ReleaseSwapchainImagesInfoKHR & releaseInfo ) const
23994 {
23995 VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseSwapchainImagesEXT &&
23996 "Function <vkReleaseSwapchainImagesEXT> requires <VK_EXT_swapchain_maintenance1> or <VK_KHR_swapchain_maintenance1>" );
23997
23998 Result result = static_cast<Result>( getDispatcher()->vkReleaseSwapchainImagesEXT(
23999 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkReleaseSwapchainImagesInfoKHR *>( &releaseInfo ) ) );
24000 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::releaseSwapchainImagesEXT" );
24001
24002 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
24003 }
24004
24005 //=== VK_NV_device_generated_commands ===
24006
24007 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see
24008 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html
24009 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
24010 Device::getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
24011 {
24012 VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
24013 "Function <vkGetGeneratedCommandsMemoryRequirementsNV> requires <VK_NV_device_generated_commands>" );
24014
24015 MemoryRequirements2 memoryRequirements;
24016 getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
24017 reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
24018 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
24019
24020 return memoryRequirements;
24021 }
24022
24023 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see
24024 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html
24025 template <typename X, typename Y, typename... Z>
24026 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
24027 Device::getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
24028 {
24029 VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
24030 "Function <vkGetGeneratedCommandsMemoryRequirementsNV> requires <VK_NV_device_generated_commands>" );
24031
24032 StructureChain<X, Y, Z...> structureChain;
24033 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
24034 getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
24035 reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
24036 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
24037
24038 return structureChain;
24039 }
24040
24041 // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see
24042 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html
24043 VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
24044 {
24045 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPreprocessGeneratedCommandsNV &&
24046 "Function <vkCmdPreprocessGeneratedCommandsNV> requires <VK_NV_device_generated_commands>" );
24047
24048 getDispatcher()->vkCmdPreprocessGeneratedCommandsNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
24049 reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
24050 }
24051
24052 // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see
24053 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html
24054 VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( Bool32 isPreprocessed,
24055 const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
24056 {
24057 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteGeneratedCommandsNV &&
24058 "Function <vkCmdExecuteGeneratedCommandsNV> requires <VK_NV_device_generated_commands>" );
24059
24060 getDispatcher()->vkCmdExecuteGeneratedCommandsNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
24061 static_cast<VkBool32>( isPreprocessed ),
24062 reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
24063 }
24064
24065 // wrapper function for command vkCmdBindPipelineShaderGroupNV, see
24066 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipelineShaderGroupNV.html
24067 VULKAN_HPP_INLINE void CommandBuffer::bindPipelineShaderGroupNV( PipelineBindPoint pipelineBindPoint,
24068 VULKAN_HPP_NAMESPACE::Pipeline pipeline,
24069 uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT
24070 {
24071 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindPipelineShaderGroupNV &&
24072 "Function <vkCmdBindPipelineShaderGroupNV> requires <VK_NV_device_generated_commands>" );
24073
24074 getDispatcher()->vkCmdBindPipelineShaderGroupNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
24075 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
24076 static_cast<VkPipeline>( pipeline ),
24077 groupIndex );
24078 }
24079
24080 // wrapper function for command vkCreateIndirectCommandsLayoutNV, see
24081 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html
24082 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<IndirectCommandsLayoutNV>::type
24083 Device::createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const & createInfo,
24084 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24085 {
24086 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout;
24087 Result result =
24088 static_cast<Result>( getDispatcher()->vkCreateIndirectCommandsLayoutNV( static_cast<VkDevice>( m_device ),
24089 reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( &createInfo ),
24090 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
24091 reinterpret_cast<VkIndirectCommandsLayoutNV *>( &indirectCommandsLayout ) ) );
24092 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNV" );
24093 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
24094 result, IndirectCommandsLayoutNV( *this, *reinterpret_cast<VkIndirectCommandsLayoutNV *>( &indirectCommandsLayout ), allocator ) );
24095 }
24096
24097 //=== VK_EXT_depth_bias_control ===
24098
24099 // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html
24100 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias2EXT( const DepthBiasInfoEXT & depthBiasInfo ) const VULKAN_HPP_NOEXCEPT
24101 {
24102 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBias2EXT && "Function <vkCmdSetDepthBias2EXT> requires <VK_EXT_depth_bias_control>" );
24103
24104 getDispatcher()->vkCmdSetDepthBias2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkDepthBiasInfoEXT *>( &depthBiasInfo ) );
24105 }
24106
24107 //=== VK_EXT_acquire_drm_display ===
24108
24109 // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html
24110 VULKAN_HPP_INLINE typename ResultValueType<void>::type PhysicalDevice::acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
24111 {
24112 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireDrmDisplayEXT && "Function <vkAcquireDrmDisplayEXT> requires <VK_EXT_acquire_drm_display>" );
24113
24114 Result result = static_cast<Result>(
24115 getDispatcher()->vkAcquireDrmDisplayEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), drmFd, static_cast<VkDisplayKHR>( display ) ) );
24116 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" );
24117
24118 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
24119 }
24120
24121 // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html
24122 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DisplayKHR>::type
24123 PhysicalDevice::getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24124 {
24125 VULKAN_HPP_NAMESPACE::DisplayKHR display;
24126 Result result = static_cast<Result>( getDispatcher()->vkGetDrmDisplayEXT(
24127 static_cast<VkPhysicalDevice>( m_physicalDevice ), drmFd, connectorId, reinterpret_cast<VkDisplayKHR *>( &display ) ) );
24128 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDrmDisplayEXT" );
24129 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayKHR( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) ) );
24130 }
24131
24132 //=== VK_EXT_private_data ===
24133
24134 // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html
24135 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PrivateDataSlot>::type
24136 Device::createPrivateDataSlotEXT( PrivateDataSlotCreateInfo const & createInfo,
24137 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24138 {
24139 VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot;
24140 Result result = static_cast<Result>( getDispatcher()->vkCreatePrivateDataSlotEXT( static_cast<VkDevice>( m_device ),
24141 reinterpret_cast<const VkPrivateDataSlotCreateInfo *>( &createInfo ),
24142 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
24143 reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ) ) );
24144 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPrivateDataSlotEXT" );
24145 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
24146 result, PrivateDataSlot( *this, *reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ), allocator ) );
24147 }
24148
24149 // wrapper function for command vkDestroyPrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html
24150 VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,
24151 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
24152 {
24153 VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyPrivateDataSlotEXT &&
24154 "Function <vkDestroyPrivateDataSlotEXT> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
24155
24156 getDispatcher()->vkDestroyPrivateDataSlotEXT( static_cast<VkDevice>( m_device ),
24157 static_cast<VkPrivateDataSlot>( privateDataSlot ),
24158 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ) );
24159 }
24160
24161 // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html
24162 VULKAN_HPP_INLINE typename ResultValueType<void>::type
24163 Device::setPrivateDataEXT( ObjectType objectType_, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const
24164 {
24165 VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateDataEXT && "Function <vkSetPrivateDataEXT> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
24166
24167 Result result = static_cast<Result>( getDispatcher()->vkSetPrivateDataEXT(
24168 static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), data ) );
24169 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setPrivateDataEXT" );
24170
24171 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
24172 }
24173
24174 // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html
24175 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateDataEXT( ObjectType objectType_,
24176 uint64_t objectHandle,
24177 VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT
24178 {
24179 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateDataEXT && "Function <vkGetPrivateDataEXT> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
24180
24181 uint64_t data;
24182 getDispatcher()->vkGetPrivateDataEXT(
24183 static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), &data );
24184
24185 return data;
24186 }
24187
24188 //=== VK_KHR_video_encode_queue ===
24189 // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see
24190 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html
24191 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result
24192 PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( const PhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo,
24193 VideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) const VULKAN_HPP_NOEXCEPT
24194 {
24195 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR &&
24196 "Function <vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR> requires <VK_KHR_video_encode_queue>" );
24197 return static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
24198 static_cast<VkPhysicalDevice>( m_physicalDevice ),
24199 reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( pQualityLevelInfo ),
24200 reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( pQualityLevelProperties ) ) );
24201 }
24202
24203 // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see
24204 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html
24205 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<VideoEncodeQualityLevelPropertiesKHR>::type
24206 PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( const PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const
24207 {
24208 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR &&
24209 "Function <vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR> requires <VK_KHR_video_encode_queue>" );
24210
24211 VideoEncodeQualityLevelPropertiesKHR qualityLevelProperties;
24212 Result result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
24213 static_cast<VkPhysicalDevice>( m_physicalDevice ),
24214 reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( &qualityLevelInfo ),
24215 reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( &qualityLevelProperties ) ) );
24216 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" );
24217
24218 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( qualityLevelProperties ) );
24219 }
24220
24221 // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see
24222 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html
24223 template <typename X, typename Y, typename... Z>
24224 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
24225 PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( const PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const
24226 {
24227 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR &&
24228 "Function <vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR> requires <VK_KHR_video_encode_queue>" );
24229
24230 StructureChain<X, Y, Z...> structureChain;
24231 VideoEncodeQualityLevelPropertiesKHR & qualityLevelProperties = structureChain.template get<VideoEncodeQualityLevelPropertiesKHR>();
24232 Result result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
24233 static_cast<VkPhysicalDevice>( m_physicalDevice ),
24234 reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( &qualityLevelInfo ),
24235 reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( &qualityLevelProperties ) ) );
24236 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" );
24237
24238 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
24239 }
24240
24241 // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see
24242 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html
24243 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<VideoEncodeSessionParametersFeedbackInfoKHR, std::vector<uint8_t>>>::type
24244 Device::getEncodedVideoSessionParametersKHR( const VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const
24245 {
24246 VULKAN_HPP_ASSERT( getDispatcher()->vkGetEncodedVideoSessionParametersKHR &&
24247 "Function <vkGetEncodedVideoSessionParametersKHR> requires <VK_KHR_video_encode_queue>" );
24248
24249 std::pair<VideoEncodeSessionParametersFeedbackInfoKHR, std::vector<uint8_t>> data_;
24250 VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first;
24251 std::vector<uint8_t> & data = data_.second;
24252 size_t dataSize;
24253 Result result;
24254 do
24255 {
24256 result = static_cast<Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
24257 static_cast<VkDevice>( m_device ),
24258 reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
24259 reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
24260 &dataSize,
24261 nullptr ) );
24262 if ( ( result == Result::eSuccess ) && dataSize )
24263 {
24264 data.resize( dataSize );
24265 result = static_cast<Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
24266 static_cast<VkDevice>( m_device ),
24267 reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
24268 reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
24269 &dataSize,
24270 reinterpret_cast<void *>( data.data() ) ) );
24271 }
24272 } while ( result == Result::eIncomplete );
24273 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" );
24274
24275 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
24276 }
24277
24278 // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see
24279 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html
24280 template <typename X, typename Y, typename... Z>
24281 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<StructureChain<X, Y, Z...>, std::vector<uint8_t>>>::type
24282 Device::getEncodedVideoSessionParametersKHR( const VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const
24283 {
24284 VULKAN_HPP_ASSERT( getDispatcher()->vkGetEncodedVideoSessionParametersKHR &&
24285 "Function <vkGetEncodedVideoSessionParametersKHR> requires <VK_KHR_video_encode_queue>" );
24286
24287 std::pair<StructureChain<X, Y, Z...>, std::vector<uint8_t>> data_;
24288 VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first.template get<VideoEncodeSessionParametersFeedbackInfoKHR>();
24289 std::vector<uint8_t> & data = data_.second;
24290 size_t dataSize;
24291 Result result;
24292 do
24293 {
24294 result = static_cast<Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
24295 static_cast<VkDevice>( m_device ),
24296 reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
24297 reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
24298 &dataSize,
24299 nullptr ) );
24300 if ( ( result == Result::eSuccess ) && dataSize )
24301 {
24302 data.resize( dataSize );
24303 result = static_cast<Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
24304 static_cast<VkDevice>( m_device ),
24305 reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
24306 reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
24307 &dataSize,
24308 reinterpret_cast<void *>( data.data() ) ) );
24309 }
24310 } while ( result == Result::eIncomplete );
24311 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" );
24312
24313 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
24314 }
24315
24316 // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html
24317 VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( const VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT
24318 {
24319 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEncodeVideoKHR && "Function <vkCmdEncodeVideoKHR> requires <VK_KHR_video_encode_queue>" );
24320
24321 getDispatcher()->vkCmdEncodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkVideoEncodeInfoKHR *>( &encodeInfo ) );
24322 }
24323
24324 # if defined( VK_ENABLE_BETA_EXTENSIONS )
24325 //=== VK_NV_cuda_kernel_launch ===
24326
24327 // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html
24328 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<CudaModuleNV>::type
24329 Device::createCudaModuleNV( CudaModuleCreateInfoNV const & createInfo,
24330 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24331 {
24332 VULKAN_HPP_NAMESPACE::CudaModuleNV module;
24333 Result result = static_cast<Result>( getDispatcher()->vkCreateCudaModuleNV( static_cast<VkDevice>( m_device ),
24334 reinterpret_cast<const VkCudaModuleCreateInfoNV *>( &createInfo ),
24335 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
24336 reinterpret_cast<VkCudaModuleNV *>( &module ) ) );
24337 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCudaModuleNV" );
24338 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, CudaModuleNV( *this, *reinterpret_cast<VkCudaModuleNV *>( &module ), allocator ) );
24339 }
24340
24341 // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html
24342 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t>>::type CudaModuleNV::getCache() const
24343 {
24344 VULKAN_HPP_ASSERT( getDispatcher()->vkGetCudaModuleCacheNV && "Function <vkGetCudaModuleCacheNV> requires <VK_NV_cuda_kernel_launch>" );
24345
24346 std::vector<uint8_t> cacheData;
24347 size_t cacheSize;
24348 Result result;
24349 do
24350 {
24351 result = static_cast<Result>(
24352 getDispatcher()->vkGetCudaModuleCacheNV( static_cast<VkDevice>( m_device ), static_cast<VkCudaModuleNV>( m_cudaModuleNV ), &cacheSize, nullptr ) );
24353 if ( ( result == Result::eSuccess ) && cacheSize )
24354 {
24355 cacheData.resize( cacheSize );
24356 result = static_cast<Result>( getDispatcher()->vkGetCudaModuleCacheNV(
24357 static_cast<VkDevice>( m_device ), static_cast<VkCudaModuleNV>( m_cudaModuleNV ), &cacheSize, reinterpret_cast<void *>( cacheData.data() ) ) );
24358 }
24359 } while ( result == Result::eIncomplete );
24360 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CudaModuleNV::getCache" );
24361 VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() );
24362 if ( cacheSize < cacheData.size() )
24363 {
24364 cacheData.resize( cacheSize );
24365 }
24366 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( cacheData ) );
24367 }
24368
24369 // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html
24370 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<CudaFunctionNV>::type
24371 Device::createCudaFunctionNV( CudaFunctionCreateInfoNV const & createInfo,
24372 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24373 {
24374 VULKAN_HPP_NAMESPACE::CudaFunctionNV function;
24375 Result result = static_cast<Result>( getDispatcher()->vkCreateCudaFunctionNV( static_cast<VkDevice>( m_device ),
24376 reinterpret_cast<const VkCudaFunctionCreateInfoNV *>( &createInfo ),
24377 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
24378 reinterpret_cast<VkCudaFunctionNV *>( &function ) ) );
24379 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCudaFunctionNV" );
24380 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result,
24381 CudaFunctionNV( *this, *reinterpret_cast<VkCudaFunctionNV *>( &function ), allocator ) );
24382 }
24383
24384 // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html
24385 VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( const CudaLaunchInfoNV & launchInfo ) const VULKAN_HPP_NOEXCEPT
24386 {
24387 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCudaLaunchKernelNV && "Function <vkCmdCudaLaunchKernelNV> requires <VK_NV_cuda_kernel_launch>" );
24388
24389 getDispatcher()->vkCmdCudaLaunchKernelNV( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCudaLaunchInfoNV *>( &launchInfo ) );
24390 }
24391 # endif /*VK_ENABLE_BETA_EXTENSIONS*/
24392
24393 //=== VK_QCOM_tile_shading ===
24394
24395 // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html
24396 VULKAN_HPP_INLINE void CommandBuffer::dispatchTileQCOM( const DispatchTileInfoQCOM & dispatchTileInfo ) const VULKAN_HPP_NOEXCEPT
24397 {
24398 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchTileQCOM && "Function <vkCmdDispatchTileQCOM> requires <VK_QCOM_tile_shading>" );
24399
24400 getDispatcher()->vkCmdDispatchTileQCOM( static_cast<VkCommandBuffer>( m_commandBuffer ),
24401 reinterpret_cast<const VkDispatchTileInfoQCOM *>( &dispatchTileInfo ) );
24402 }
24403
24404 // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see
24405 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html
24406 VULKAN_HPP_INLINE void CommandBuffer::beginPerTileExecutionQCOM( const PerTileBeginInfoQCOM & perTileBeginInfo ) const VULKAN_HPP_NOEXCEPT
24407 {
24408 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginPerTileExecutionQCOM && "Function <vkCmdBeginPerTileExecutionQCOM> requires <VK_QCOM_tile_shading>" );
24409
24410 getDispatcher()->vkCmdBeginPerTileExecutionQCOM( static_cast<VkCommandBuffer>( m_commandBuffer ),
24411 reinterpret_cast<const VkPerTileBeginInfoQCOM *>( &perTileBeginInfo ) );
24412 }
24413
24414 // wrapper function for command vkCmdEndPerTileExecutionQCOM, see
24415 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html
24416 VULKAN_HPP_INLINE void CommandBuffer::endPerTileExecutionQCOM( const PerTileEndInfoQCOM & perTileEndInfo ) const VULKAN_HPP_NOEXCEPT
24417 {
24418 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndPerTileExecutionQCOM && "Function <vkCmdEndPerTileExecutionQCOM> requires <VK_QCOM_tile_shading>" );
24419
24420 getDispatcher()->vkCmdEndPerTileExecutionQCOM( static_cast<VkCommandBuffer>( m_commandBuffer ),
24421 reinterpret_cast<const VkPerTileEndInfoQCOM *>( &perTileEndInfo ) );
24422 }
24423
24424 # if defined( VK_USE_PLATFORM_METAL_EXT )
24425 //=== VK_EXT_metal_objects ===
24426
24427 // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html
24428 VULKAN_HPP_INLINE void Device::exportMetalObjectsEXT( ExportMetalObjectsInfoEXT & metalObjectsInfo ) const VULKAN_HPP_NOEXCEPT
24429 {
24430 VULKAN_HPP_ASSERT( getDispatcher()->vkExportMetalObjectsEXT && "Function <vkExportMetalObjectsEXT> requires <VK_EXT_metal_objects>" );
24431
24432 getDispatcher()->vkExportMetalObjectsEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<VkExportMetalObjectsInfoEXT *>( &metalObjectsInfo ) );
24433 }
24434 # endif /*VK_USE_PLATFORM_METAL_EXT*/
24435
24436 //=== VK_KHR_synchronization2 ===
24437
24438 // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html
24439 VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
24440 {
24441 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2KHR && "Function <vkCmdSetEvent2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
24442
24443 getDispatcher()->vkCmdSetEvent2KHR(
24444 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
24445 }
24446
24447 // wrapper function for command vkCmdResetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2KHR.html
24448 VULKAN_HPP_INLINE void CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT
24449 {
24450 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2KHR && "Function <vkCmdResetEvent2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
24451
24452 getDispatcher()->vkCmdResetEvent2KHR(
24453 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags2>( stageMask ) );
24454 }
24455
24456 // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html
24457 VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,
24458 ArrayProxy<const DependencyInfo> const & dependencyInfos ) const
24459 {
24460 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2KHR && "Function <vkCmdWaitEvents2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
24461 # ifdef VULKAN_HPP_NO_EXCEPTIONS
24462 VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() );
24463 # else
24464 if ( events.size() != dependencyInfos.size() )
24465 {
24466 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" );
24467 }
24468 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
24469
24470 getDispatcher()->vkCmdWaitEvents2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
24471 events.size(),
24472 reinterpret_cast<const VkEvent *>( events.data() ),
24473 reinterpret_cast<const VkDependencyInfo *>( dependencyInfos.data() ) );
24474 }
24475
24476 // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html
24477 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( const DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
24478 {
24479 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2KHR &&
24480 "Function <vkCmdPipelineBarrier2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
24481
24482 getDispatcher()->vkCmdPipelineBarrier2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
24483 reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
24484 }
24485
24486 // wrapper function for command vkCmdWriteTimestamp2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2KHR.html
24487 VULKAN_HPP_INLINE void
24488 CommandBuffer::writeTimestamp2KHR( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT
24489 {
24490 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2KHR &&
24491 "Function <vkCmdWriteTimestamp2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
24492
24493 getDispatcher()->vkCmdWriteTimestamp2KHR(
24494 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineStageFlags2>( stage ), static_cast<VkQueryPool>( queryPool ), query );
24495 }
24496
24497 // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html
24498 VULKAN_HPP_INLINE typename ResultValueType<void>::type Queue::submit2KHR( ArrayProxy<const SubmitInfo2> const & submits,
24499 VULKAN_HPP_NAMESPACE::Fence fence ) const
24500 {
24501 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2KHR && "Function <vkQueueSubmit2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
24502
24503 Result result = static_cast<Result>( getDispatcher()->vkQueueSubmit2KHR(
24504 static_cast<VkQueue>( m_queue ), submits.size(), reinterpret_cast<const VkSubmitInfo2 *>( submits.data() ), static_cast<VkFence>( fence ) ) );
24505 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::submit2KHR" );
24506
24507 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
24508 }
24509
24510 //=== VK_EXT_descriptor_buffer ===
24511
24512 // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see
24513 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html
24514 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize DescriptorSetLayout::getSizeEXT() const VULKAN_HPP_NOEXCEPT
24515 {
24516 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSizeEXT && "Function <vkGetDescriptorSetLayoutSizeEXT> requires <VK_EXT_descriptor_buffer>" );
24517
24518 DeviceSize layoutSizeInBytes;
24519 getDispatcher()->vkGetDescriptorSetLayoutSizeEXT( static_cast<VkDevice>( m_device ),
24520 static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ),
24521 reinterpret_cast<VkDeviceSize *>( &layoutSizeInBytes ) );
24522
24523 return layoutSizeInBytes;
24524 }
24525
24526 // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see
24527 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html
24528 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize DescriptorSetLayout::getBindingOffsetEXT( uint32_t binding ) const VULKAN_HPP_NOEXCEPT
24529 {
24530 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutBindingOffsetEXT &&
24531 "Function <vkGetDescriptorSetLayoutBindingOffsetEXT> requires <VK_EXT_descriptor_buffer>" );
24532
24533 DeviceSize offset;
24534 getDispatcher()->vkGetDescriptorSetLayoutBindingOffsetEXT(
24535 static_cast<VkDevice>( m_device ), static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ), binding, reinterpret_cast<VkDeviceSize *>( &offset ) );
24536
24537 return offset;
24538 }
24539
24540 // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html
24541 VULKAN_HPP_INLINE void
24542 Device::getDescriptorEXT( const DescriptorGetInfoEXT & descriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT
24543 {
24544 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function <vkGetDescriptorEXT> requires <VK_EXT_descriptor_buffer>" );
24545
24546 getDispatcher()->vkGetDescriptorEXT(
24547 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDescriptorGetInfoEXT *>( &descriptorInfo ), dataSize, pDescriptor );
24548 }
24549
24550 // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html
24551 template <typename DescriptorType>
24552 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorType Device::getDescriptorEXT( const DescriptorGetInfoEXT & descriptorInfo ) const VULKAN_HPP_NOEXCEPT
24553 {
24554 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function <vkGetDescriptorEXT> requires <VK_EXT_descriptor_buffer>" );
24555
24556 DescriptorType descriptor;
24557 getDispatcher()->vkGetDescriptorEXT( static_cast<VkDevice>( m_device ),
24558 reinterpret_cast<const VkDescriptorGetInfoEXT *>( &descriptorInfo ),
24559 sizeof( DescriptorType ),
24560 reinterpret_cast<void *>( &descriptor ) );
24561
24562 return descriptor;
24563 }
24564
24565 // wrapper function for command vkCmdBindDescriptorBuffersEXT, see
24566 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html
24567 VULKAN_HPP_INLINE void
24568 CommandBuffer::bindDescriptorBuffersEXT( ArrayProxy<const DescriptorBufferBindingInfoEXT> const & bindingInfos ) const VULKAN_HPP_NOEXCEPT
24569 {
24570 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBuffersEXT && "Function <vkCmdBindDescriptorBuffersEXT> requires <VK_EXT_descriptor_buffer>" );
24571
24572 getDispatcher()->vkCmdBindDescriptorBuffersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
24573 bindingInfos.size(),
24574 reinterpret_cast<const VkDescriptorBufferBindingInfoEXT *>( bindingInfos.data() ) );
24575 }
24576
24577 // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see
24578 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html
24579 VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint,
24580 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
24581 uint32_t firstSet,
24582 ArrayProxy<const uint32_t> const & bufferIndices,
24583 ArrayProxy<const DeviceSize> const & offsets ) const
24584 {
24585 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDescriptorBufferOffsetsEXT &&
24586 "Function <vkCmdSetDescriptorBufferOffsetsEXT> requires <VK_EXT_descriptor_buffer>" );
24587 # ifdef VULKAN_HPP_NO_EXCEPTIONS
24588 VULKAN_HPP_ASSERT( bufferIndices.size() == offsets.size() );
24589 # else
24590 if ( bufferIndices.size() != offsets.size() )
24591 {
24592 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setDescriptorBufferOffsetsEXT: bufferIndices.size() != offsets.size()" );
24593 }
24594 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
24595
24596 getDispatcher()->vkCmdSetDescriptorBufferOffsetsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
24597 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
24598 static_cast<VkPipelineLayout>( layout ),
24599 firstSet,
24600 bufferIndices.size(),
24601 bufferIndices.data(),
24602 reinterpret_cast<const VkDeviceSize *>( offsets.data() ) );
24603 }
24604
24605 // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplersEXT, see
24606 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html
24607 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplersEXT( PipelineBindPoint pipelineBindPoint,
24608 VULKAN_HPP_NAMESPACE::PipelineLayout layout,
24609 uint32_t set ) const VULKAN_HPP_NOEXCEPT
24610 {
24611 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplersEXT &&
24612 "Function <vkCmdBindDescriptorBufferEmbeddedSamplersEXT> requires <VK_EXT_descriptor_buffer>" );
24613
24614 getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplersEXT(
24615 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set );
24616 }
24617
24618 // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see
24619 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html
24620 template <typename DataType>
24621 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
24622 Device::getBufferOpaqueCaptureDescriptorDataEXT( const BufferCaptureDescriptorDataInfoEXT & info ) const
24623 {
24624 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureDescriptorDataEXT &&
24625 "Function <vkGetBufferOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
24626
24627 DataType data;
24628 Result result = static_cast<Result>( getDispatcher()->vkGetBufferOpaqueCaptureDescriptorDataEXT(
24629 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
24630 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getBufferOpaqueCaptureDescriptorDataEXT" );
24631
24632 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
24633 }
24634
24635 // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see
24636 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html
24637 template <typename DataType>
24638 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
24639 Device::getImageOpaqueCaptureDescriptorDataEXT( const ImageCaptureDescriptorDataInfoEXT & info ) const
24640 {
24641 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageOpaqueCaptureDescriptorDataEXT &&
24642 "Function <vkGetImageOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
24643
24644 DataType data;
24645 Result result = static_cast<Result>( getDispatcher()->vkGetImageOpaqueCaptureDescriptorDataEXT(
24646 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
24647 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getImageOpaqueCaptureDescriptorDataEXT" );
24648
24649 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
24650 }
24651
24652 // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see
24653 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html
24654 template <typename DataType>
24655 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
24656 Device::getImageViewOpaqueCaptureDescriptorDataEXT( const ImageViewCaptureDescriptorDataInfoEXT & info ) const
24657 {
24658 VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewOpaqueCaptureDescriptorDataEXT &&
24659 "Function <vkGetImageViewOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
24660
24661 DataType data;
24662 Result result = static_cast<Result>( getDispatcher()->vkGetImageViewOpaqueCaptureDescriptorDataEXT(
24663 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageViewCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
24664 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getImageViewOpaqueCaptureDescriptorDataEXT" );
24665
24666 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
24667 }
24668
24669 // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see
24670 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html
24671 template <typename DataType>
24672 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
24673 Device::getSamplerOpaqueCaptureDescriptorDataEXT( const SamplerCaptureDescriptorDataInfoEXT & info ) const
24674 {
24675 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSamplerOpaqueCaptureDescriptorDataEXT &&
24676 "Function <vkGetSamplerOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
24677
24678 DataType data;
24679 Result result = static_cast<Result>( getDispatcher()->vkGetSamplerOpaqueCaptureDescriptorDataEXT(
24680 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSamplerCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
24681 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSamplerOpaqueCaptureDescriptorDataEXT" );
24682
24683 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
24684 }
24685
24686 // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see
24687 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html
24688 template <typename DataType>
24689 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
24690 Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT( const AccelerationStructureCaptureDescriptorDataInfoEXT & info ) const
24691 {
24692 VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT &&
24693 "Function <vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
24694
24695 DataType data;
24696 Result result = static_cast<Result>( getDispatcher()->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
24697 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAccelerationStructureCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
24698 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT" );
24699
24700 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
24701 }
24702
24703 //=== VK_NV_fragment_shading_rate_enums ===
24704
24705 // wrapper function for command vkCmdSetFragmentShadingRateEnumNV, see
24706 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateEnumNV.html
24707 VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV( FragmentShadingRateNV shadingRate,
24708 const FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
24709 {
24710 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFragmentShadingRateEnumNV &&
24711 "Function <vkCmdSetFragmentShadingRateEnumNV> requires <VK_NV_fragment_shading_rate_enums>" );
24712
24713 getDispatcher()->vkCmdSetFragmentShadingRateEnumNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
24714 static_cast<VkFragmentShadingRateNV>( shadingRate ),
24715 reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
24716 }
24717
24718 //=== VK_EXT_mesh_shader ===
24719
24720 // wrapper function for command vkCmdDrawMeshTasksEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksEXT.html
24721 VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
24722 {
24723 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksEXT && "Function <vkCmdDrawMeshTasksEXT> requires <VK_EXT_mesh_shader>" );
24724
24725 getDispatcher()->vkCmdDrawMeshTasksEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
24726 }
24727
24728 // wrapper function for command vkCmdDrawMeshTasksIndirectEXT, see
24729 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectEXT.html
24730 VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectEXT( VULKAN_HPP_NAMESPACE::Buffer buffer,
24731 DeviceSize offset,
24732 uint32_t drawCount,
24733 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
24734 {
24735 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectEXT && "Function <vkCmdDrawMeshTasksIndirectEXT> requires <VK_EXT_mesh_shader>" );
24736
24737 getDispatcher()->vkCmdDrawMeshTasksIndirectEXT(
24738 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
24739 }
24740
24741 // wrapper function for command vkCmdDrawMeshTasksIndirectCountEXT, see
24742 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html
24743 VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountEXT( VULKAN_HPP_NAMESPACE::Buffer buffer,
24744 DeviceSize offset,
24745 VULKAN_HPP_NAMESPACE::Buffer countBuffer,
24746 DeviceSize countBufferOffset,
24747 uint32_t maxDrawCount,
24748 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
24749 {
24750 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountEXT && "Function <vkCmdDrawMeshTasksIndirectCountEXT> requires <VK_EXT_mesh_shader>" );
24751
24752 getDispatcher()->vkCmdDrawMeshTasksIndirectCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
24753 static_cast<VkBuffer>( buffer ),
24754 static_cast<VkDeviceSize>( offset ),
24755 static_cast<VkBuffer>( countBuffer ),
24756 static_cast<VkDeviceSize>( countBufferOffset ),
24757 maxDrawCount,
24758 stride );
24759 }
24760
24761 //=== VK_KHR_copy_commands2 ===
24762
24763 // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html
24764 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( const CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT
24765 {
24766 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2KHR && "Function <vkCmdCopyBuffer2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
24767
24768 getDispatcher()->vkCmdCopyBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyBufferInfo2 *>( &copyBufferInfo ) );
24769 }
24770
24771 // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html
24772 VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( const CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT
24773 {
24774 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2KHR && "Function <vkCmdCopyImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
24775
24776 getDispatcher()->vkCmdCopyImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyImageInfo2 *>( &copyImageInfo ) );
24777 }
24778
24779 // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html
24780 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( const CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT
24781 {
24782 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2KHR &&
24783 "Function <vkCmdCopyBufferToImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
24784
24785 getDispatcher()->vkCmdCopyBufferToImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
24786 reinterpret_cast<const VkCopyBufferToImageInfo2 *>( &copyBufferToImageInfo ) );
24787 }
24788
24789 // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html
24790 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( const CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT
24791 {
24792 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2KHR &&
24793 "Function <vkCmdCopyImageToBuffer2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
24794
24795 getDispatcher()->vkCmdCopyImageToBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
24796 reinterpret_cast<const VkCopyImageToBufferInfo2 *>( &copyImageToBufferInfo ) );
24797 }
24798
24799 // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html
24800 VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( const BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT
24801 {
24802 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2KHR && "Function <vkCmdBlitImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
24803
24804 getDispatcher()->vkCmdBlitImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkBlitImageInfo2 *>( &blitImageInfo ) );
24805 }
24806
24807 // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html
24808 VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( const ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT
24809 {
24810 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2KHR && "Function <vkCmdResolveImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
24811
24812 getDispatcher()->vkCmdResolveImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
24813 reinterpret_cast<const VkResolveImageInfo2 *>( &resolveImageInfo ) );
24814 }
24815
24816 //=== VK_EXT_device_fault ===
24817 // wrapper function for command vkGetDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultInfoEXT.html
24818 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFaultInfoEXT( DeviceFaultCountsEXT * pFaultCounts,
24819 DeviceFaultInfoEXT * pFaultInfo ) const VULKAN_HPP_NOEXCEPT
24820 {
24821 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceFaultInfoEXT && "Function <vkGetDeviceFaultInfoEXT> requires <VK_EXT_device_fault>" );
24822 return static_cast<Result>( getDispatcher()->vkGetDeviceFaultInfoEXT( static_cast<VkDevice>( m_device ),
24823 reinterpret_cast<VkDeviceFaultCountsEXT *>( pFaultCounts ),
24824 reinterpret_cast<VkDeviceFaultInfoEXT *>( pFaultInfo ) ) );
24825 }
24826 # if defined( VK_USE_PLATFORM_WIN32_KHR )
24827 //=== VK_NV_acquire_winrt_display ===
24828
24829 // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html
24830 VULKAN_HPP_INLINE typename ResultValueType<void>::type DisplayKHR::acquireWinrtNV() const
24831 {
24832 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireWinrtDisplayNV && "Function <vkAcquireWinrtDisplayNV> requires <VK_NV_acquire_winrt_display>" );
24833
24834 Result result = static_cast<Result>(
24835 getDispatcher()->vkAcquireWinrtDisplayNV( static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ) ) );
24836 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::acquireWinrtNV" );
24837
24838 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
24839 }
24840
24841 // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html
24842 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DisplayKHR>::type
24843 PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24844 {
24845 VULKAN_HPP_NAMESPACE::DisplayKHR display;
24846 Result result = static_cast<Result>( getDispatcher()->vkGetWinrtDisplayNV(
24847 static_cast<VkPhysicalDevice>( m_physicalDevice ), deviceRelativeId, reinterpret_cast<VkDisplayKHR *>( &display ) ) );
24848 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNV" );
24849 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayKHR( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) ) );
24850 }
24851 # endif /*VK_USE_PLATFORM_WIN32_KHR*/
24852
24853 # if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
24854 //=== VK_EXT_directfb_surface ===
24855
24856 // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html
24857 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
24858 Instance::createDirectFBSurfaceEXT( DirectFBSurfaceCreateInfoEXT const & createInfo,
24859 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24860 {
24861 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
24862 Result result = static_cast<Result>( getDispatcher()->vkCreateDirectFBSurfaceEXT( static_cast<VkInstance>( m_instance ),
24863 reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( &createInfo ),
24864 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
24865 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
24866 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXT" );
24867 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
24868 }
24869
24870 // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see
24871 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html
24872 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex,
24873 IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT
24874 {
24875 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT &&
24876 "Function <vkGetPhysicalDeviceDirectFBPresentationSupportEXT> requires <VK_EXT_directfb_surface>" );
24877
24878 VkBool32 result =
24879 getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dfb );
24880
24881 return static_cast<Bool32>( result );
24882 }
24883 # endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
24884
24885 //=== VK_EXT_vertex_input_dynamic_state ===
24886
24887 // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html
24888 VULKAN_HPP_INLINE void
24889 CommandBuffer::setVertexInputEXT( ArrayProxy<const VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,
24890 ArrayProxy<const VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT
24891 {
24892 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetVertexInputEXT &&
24893 "Function <vkCmdSetVertexInputEXT> requires <VK_EXT_shader_object> or <VK_EXT_vertex_input_dynamic_state>" );
24894
24895 getDispatcher()->vkCmdSetVertexInputEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
24896 vertexBindingDescriptions.size(),
24897 reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( vertexBindingDescriptions.data() ),
24898 vertexAttributeDescriptions.size(),
24899 reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( vertexAttributeDescriptions.data() ) );
24900 }
24901
24902 # if defined( VK_USE_PLATFORM_FUCHSIA )
24903 //=== VK_FUCHSIA_external_memory ===
24904
24905 // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see
24906 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html
24907 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<zx_handle_t>::type
24908 Device::getMemoryZirconHandleFUCHSIA( const MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
24909 {
24910 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA && "Function <vkGetMemoryZirconHandleFUCHSIA> requires <VK_FUCHSIA_external_memory>" );
24911
24912 zx_handle_t zirconHandle;
24913 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA(
24914 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ), &zirconHandle ) );
24915 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" );
24916
24917 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( zirconHandle ) );
24918 }
24919
24920 // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see
24921 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html
24922 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<MemoryZirconHandlePropertiesFUCHSIA>::type
24923 Device::getMemoryZirconHandlePropertiesFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle ) const
24924 {
24925 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA &&
24926 "Function <vkGetMemoryZirconHandlePropertiesFUCHSIA> requires <VK_FUCHSIA_external_memory>" );
24927
24928 MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties;
24929 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA(
24930 static_cast<VkDevice>( m_device ),
24931 static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
24932 zirconHandle,
24933 reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( &memoryZirconHandleProperties ) ) );
24934 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" );
24935
24936 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryZirconHandleProperties ) );
24937 }
24938 # endif /*VK_USE_PLATFORM_FUCHSIA*/
24939
24940 # if defined( VK_USE_PLATFORM_FUCHSIA )
24941 //=== VK_FUCHSIA_external_semaphore ===
24942
24943 // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see
24944 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html
24945 VULKAN_HPP_INLINE typename ResultValueType<void>::type
24946 Device::importSemaphoreZirconHandleFUCHSIA( const ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const
24947 {
24948 VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA &&
24949 "Function <vkImportSemaphoreZirconHandleFUCHSIA> requires <VK_FUCHSIA_external_semaphore>" );
24950
24951 Result result = static_cast<Result>( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA(
24952 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( &importSemaphoreZirconHandleInfo ) ) );
24953 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" );
24954
24955 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
24956 }
24957
24958 // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see
24959 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html
24960 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<zx_handle_t>::type
24961 Device::getSemaphoreZirconHandleFUCHSIA( const SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
24962 {
24963 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA &&
24964 "Function <vkGetSemaphoreZirconHandleFUCHSIA> requires <VK_FUCHSIA_external_semaphore>" );
24965
24966 zx_handle_t zirconHandle;
24967 Result result = static_cast<Result>( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA(
24968 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ), &zirconHandle ) );
24969 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" );
24970
24971 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( zirconHandle ) );
24972 }
24973 # endif /*VK_USE_PLATFORM_FUCHSIA*/
24974
24975 # if defined( VK_USE_PLATFORM_FUCHSIA )
24976 //=== VK_FUCHSIA_buffer_collection ===
24977
24978 // wrapper function for command vkCreateBufferCollectionFUCHSIA, see
24979 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html
24980 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<BufferCollectionFUCHSIA>::type
24981 Device::createBufferCollectionFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & createInfo,
24982 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
24983 {
24984 VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection;
24985 Result result =
24986 static_cast<Result>( getDispatcher()->vkCreateBufferCollectionFUCHSIA( static_cast<VkDevice>( m_device ),
24987 reinterpret_cast<const VkBufferCollectionCreateInfoFUCHSIA *>( &createInfo ),
24988 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
24989 reinterpret_cast<VkBufferCollectionFUCHSIA *>( &collection ) ) );
24990 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createBufferCollectionFUCHSIA" );
24991 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
24992 result, BufferCollectionFUCHSIA( *this, *reinterpret_cast<VkBufferCollectionFUCHSIA *>( &collection ), allocator ) );
24993 }
24994
24995 // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see
24996 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html
24997 VULKAN_HPP_INLINE typename ResultValueType<void>::type
24998 BufferCollectionFUCHSIA::setImageConstraints( const ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const
24999 {
25000 VULKAN_HPP_ASSERT( getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA &&
25001 "Function <vkSetBufferCollectionImageConstraintsFUCHSIA> requires <VK_FUCHSIA_buffer_collection>" );
25002
25003 Result result = static_cast<Result>(
25004 getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA( static_cast<VkDevice>( m_device ),
25005 static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
25006 reinterpret_cast<const VkImageConstraintsInfoFUCHSIA *>( &imageConstraintsInfo ) ) );
25007 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setImageConstraints" );
25008
25009 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
25010 }
25011
25012 // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see
25013 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html
25014 VULKAN_HPP_INLINE typename ResultValueType<void>::type
25015 BufferCollectionFUCHSIA::setBufferConstraints( const BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const
25016 {
25017 VULKAN_HPP_ASSERT( getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA &&
25018 "Function <vkSetBufferCollectionBufferConstraintsFUCHSIA> requires <VK_FUCHSIA_buffer_collection>" );
25019
25020 Result result = static_cast<Result>(
25021 getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA( static_cast<VkDevice>( m_device ),
25022 static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
25023 reinterpret_cast<const VkBufferConstraintsInfoFUCHSIA *>( &bufferConstraintsInfo ) ) );
25024 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setBufferConstraints" );
25025
25026 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
25027 }
25028
25029 // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see
25030 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html
25031 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<BufferCollectionPropertiesFUCHSIA>::type BufferCollectionFUCHSIA::getProperties() const
25032 {
25033 VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA &&
25034 "Function <vkGetBufferCollectionPropertiesFUCHSIA> requires <VK_FUCHSIA_buffer_collection>" );
25035
25036 BufferCollectionPropertiesFUCHSIA properties;
25037 Result result = static_cast<Result>(
25038 getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA( static_cast<VkDevice>( m_device ),
25039 static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
25040 reinterpret_cast<VkBufferCollectionPropertiesFUCHSIA *>( &properties ) ) );
25041 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::BufferCollectionFUCHSIA::getProperties" );
25042
25043 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
25044 }
25045 # endif /*VK_USE_PLATFORM_FUCHSIA*/
25046
25047 //=== VK_HUAWEI_subpass_shading ===
25048
25049 // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see
25050 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html
25051 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Extent2D>::type RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI() const
25052 {
25053 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI &&
25054 "Function <vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI> requires <VK_HUAWEI_subpass_shading>" );
25055
25056 Extent2D maxWorkgroupSize;
25057 Result result = static_cast<Result>( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
25058 static_cast<VkDevice>( m_device ), static_cast<VkRenderPass>( m_renderPass ), reinterpret_cast<VkExtent2D *>( &maxWorkgroupSize ) ) );
25059 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI" );
25060
25061 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( maxWorkgroupSize ) );
25062 }
25063
25064 // wrapper function for command vkCmdSubpassShadingHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSubpassShadingHUAWEI.html
25065 VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT
25066 {
25067 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSubpassShadingHUAWEI && "Function <vkCmdSubpassShadingHUAWEI> requires <VK_HUAWEI_subpass_shading>" );
25068
25069 getDispatcher()->vkCmdSubpassShadingHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ) );
25070 }
25071
25072 //=== VK_HUAWEI_invocation_mask ===
25073
25074 // wrapper function for command vkCmdBindInvocationMaskHUAWEI, see
25075 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindInvocationMaskHUAWEI.html
25076 VULKAN_HPP_INLINE void CommandBuffer::bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView,
25077 ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
25078 {
25079 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindInvocationMaskHUAWEI && "Function <vkCmdBindInvocationMaskHUAWEI> requires <VK_HUAWEI_invocation_mask>" );
25080
25081 getDispatcher()->vkCmdBindInvocationMaskHUAWEI(
25082 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkImageView>( imageView ), static_cast<VkImageLayout>( imageLayout ) );
25083 }
25084
25085 //=== VK_NV_external_memory_rdma ===
25086
25087 // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html
25088 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<RemoteAddressNV>::type
25089 Device::getMemoryRemoteAddressNV( const MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const
25090 {
25091 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryRemoteAddressNV && "Function <vkGetMemoryRemoteAddressNV> requires <VK_NV_external_memory_rdma>" );
25092
25093 RemoteAddressNV address;
25094 Result result = static_cast<Result>(
25095 getDispatcher()->vkGetMemoryRemoteAddressNV( static_cast<VkDevice>( m_device ),
25096 reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( &memoryGetRemoteAddressInfo ),
25097 reinterpret_cast<VkRemoteAddressNV *>( &address ) ) );
25098 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" );
25099
25100 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( address ) );
25101 }
25102
25103 //=== VK_EXT_pipeline_properties ===
25104
25105 // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html
25106 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<BaseOutStructure>::type
25107 Device::getPipelinePropertiesEXT( const PipelineInfoEXT & pipelineInfo ) const
25108 {
25109 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelinePropertiesEXT && "Function <vkGetPipelinePropertiesEXT> requires <VK_EXT_pipeline_properties>" );
25110
25111 BaseOutStructure pipelineProperties;
25112 Result result = static_cast<Result>( getDispatcher()->vkGetPipelinePropertiesEXT( static_cast<VkDevice>( m_device ),
25113 reinterpret_cast<const VkPipelineInfoEXT *>( &pipelineInfo ),
25114 reinterpret_cast<VkBaseOutStructure *>( &pipelineProperties ) ) );
25115 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelinePropertiesEXT" );
25116
25117 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelineProperties ) );
25118 }
25119
25120 //=== VK_EXT_extended_dynamic_state2 ===
25121
25122 // wrapper function for command vkCmdSetPatchControlPointsEXT, see
25123 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPatchControlPointsEXT.html
25124 VULKAN_HPP_INLINE void CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT
25125 {
25126 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPatchControlPointsEXT &&
25127 "Function <vkCmdSetPatchControlPointsEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object>" );
25128
25129 getDispatcher()->vkCmdSetPatchControlPointsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), patchControlPoints );
25130 }
25131
25132 // wrapper function for command vkCmdSetRasterizerDiscardEnableEXT, see
25133 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnableEXT.html
25134 VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT
25135 {
25136 VULKAN_HPP_ASSERT(
25137 getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT &&
25138 "Function <vkCmdSetRasterizerDiscardEnableEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
25139
25140 getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( rasterizerDiscardEnable ) );
25141 }
25142
25143 // wrapper function for command vkCmdSetDepthBiasEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnableEXT.html
25144 VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnableEXT( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT
25145 {
25146 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBiasEnableEXT &&
25147 "Function <vkCmdSetDepthBiasEnableEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
25148
25149 getDispatcher()->vkCmdSetDepthBiasEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBiasEnable ) );
25150 }
25151
25152 // wrapper function for command vkCmdSetLogicOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEXT.html
25153 VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEXT( LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT
25154 {
25155 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEXT &&
25156 "Function <vkCmdSetLogicOpEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object>" );
25157
25158 getDispatcher()->vkCmdSetLogicOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkLogicOp>( logicOp ) );
25159 }
25160
25161 // wrapper function for command vkCmdSetPrimitiveRestartEnableEXT, see
25162 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnableEXT.html
25163 VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT
25164 {
25165 VULKAN_HPP_ASSERT(
25166 getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT &&
25167 "Function <vkCmdSetPrimitiveRestartEnableEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
25168
25169 getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( primitiveRestartEnable ) );
25170 }
25171
25172 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
25173 //=== VK_QNX_screen_surface ===
25174
25175 // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html
25176 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
25177 Instance::createScreenSurfaceQNX( ScreenSurfaceCreateInfoQNX const & createInfo,
25178 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
25179 {
25180 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
25181 Result result = static_cast<Result>( getDispatcher()->vkCreateScreenSurfaceQNX( static_cast<VkInstance>( m_instance ),
25182 reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( &createInfo ),
25183 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
25184 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
25185 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createScreenSurfaceQNX" );
25186 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
25187 }
25188
25189 // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see
25190 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html
25191 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex,
25192 struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT
25193 {
25194 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX &&
25195 "Function <vkGetPhysicalDeviceScreenPresentationSupportQNX> requires <VK_QNX_screen_surface>" );
25196
25197 VkBool32 result =
25198 getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &window );
25199
25200 return static_cast<Bool32>( result );
25201 }
25202 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
25203
25204 //=== VK_EXT_color_write_enable ===
25205
25206 // wrapper function for command vkCmdSetColorWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html
25207 VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT( ArrayProxy<const Bool32> const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT
25208 {
25209 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorWriteEnableEXT && "Function <vkCmdSetColorWriteEnableEXT> requires <VK_EXT_color_write_enable>" );
25210
25211 getDispatcher()->vkCmdSetColorWriteEnableEXT(
25212 static_cast<VkCommandBuffer>( m_commandBuffer ), colorWriteEnables.size(), reinterpret_cast<const VkBool32 *>( colorWriteEnables.data() ) );
25213 }
25214
25215 //=== VK_KHR_ray_tracing_maintenance1 ===
25216
25217 // wrapper function for command vkCmdTraceRaysIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirect2KHR.html
25218 VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirect2KHR( DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT
25219 {
25220 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysIndirect2KHR && "Function <vkCmdTraceRaysIndirect2KHR> requires <VK_KHR_ray_tracing_maintenance1>" );
25221
25222 getDispatcher()->vkCmdTraceRaysIndirect2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkDeviceAddress>( indirectDeviceAddress ) );
25223 }
25224
25225 //=== VK_EXT_multi_draw ===
25226
25227 // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html
25228 VULKAN_HPP_INLINE void CommandBuffer::drawMultiEXT( StridedArrayProxy<const MultiDrawInfoEXT> const & vertexInfo,
25229 uint32_t instanceCount,
25230 uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
25231 {
25232 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiEXT && "Function <vkCmdDrawMultiEXT> requires <VK_EXT_multi_draw>" );
25233
25234 getDispatcher()->vkCmdDrawMultiEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25235 vertexInfo.size(),
25236 reinterpret_cast<const VkMultiDrawInfoEXT *>( vertexInfo.data() ),
25237 instanceCount,
25238 firstInstance,
25239 vertexInfo.stride() );
25240 }
25241
25242 // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html
25243 VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT( StridedArrayProxy<const MultiDrawIndexedInfoEXT> const & indexInfo,
25244 uint32_t instanceCount,
25245 uint32_t firstInstance,
25246 Optional<const int32_t> vertexOffset ) const VULKAN_HPP_NOEXCEPT
25247 {
25248 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiIndexedEXT && "Function <vkCmdDrawMultiIndexedEXT> requires <VK_EXT_multi_draw>" );
25249
25250 getDispatcher()->vkCmdDrawMultiIndexedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25251 indexInfo.size(),
25252 reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( indexInfo.data() ),
25253 instanceCount,
25254 firstInstance,
25255 indexInfo.stride(),
25256 vertexOffset.get() );
25257 }
25258
25259 //=== VK_EXT_opacity_micromap ===
25260
25261 // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html
25262 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<MicromapEXT>::type
25263 Device::createMicromapEXT( MicromapCreateInfoEXT const & createInfo,
25264 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
25265 {
25266 VULKAN_HPP_NAMESPACE::MicromapEXT micromap;
25267 Result result = static_cast<Result>( getDispatcher()->vkCreateMicromapEXT( static_cast<VkDevice>( m_device ),
25268 reinterpret_cast<const VkMicromapCreateInfoEXT *>( &createInfo ),
25269 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
25270 reinterpret_cast<VkMicromapEXT *>( &micromap ) ) );
25271 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createMicromapEXT" );
25272 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, MicromapEXT( *this, *reinterpret_cast<VkMicromapEXT *>( &micromap ), allocator ) );
25273 }
25274
25275 // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html
25276 VULKAN_HPP_INLINE void CommandBuffer::buildMicromapsEXT( ArrayProxy<const MicromapBuildInfoEXT> const & infos ) const VULKAN_HPP_NOEXCEPT
25277 {
25278 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildMicromapsEXT && "Function <vkCmdBuildMicromapsEXT> requires <VK_EXT_opacity_micromap>" );
25279
25280 getDispatcher()->vkCmdBuildMicromapsEXT(
25281 static_cast<VkCommandBuffer>( m_commandBuffer ), infos.size(), reinterpret_cast<const VkMicromapBuildInfoEXT *>( infos.data() ) );
25282 }
25283
25284 // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html
25285 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildMicromapsEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
25286 ArrayProxy<const MicromapBuildInfoEXT> const & infos ) const
25287 {
25288 VULKAN_HPP_ASSERT( getDispatcher()->vkBuildMicromapsEXT && "Function <vkBuildMicromapsEXT> requires <VK_EXT_opacity_micromap>" );
25289
25290 Result result = static_cast<Result>( getDispatcher()->vkBuildMicromapsEXT( static_cast<VkDevice>( m_device ),
25291 static_cast<VkDeferredOperationKHR>( deferredOperation ),
25292 infos.size(),
25293 reinterpret_cast<const VkMicromapBuildInfoEXT *>( infos.data() ) ) );
25294 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
25295 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::buildMicromapsEXT",
25296 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
25297
25298 return static_cast<Result>( result );
25299 }
25300
25301 // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html
25302 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
25303 const CopyMicromapInfoEXT & info ) const
25304 {
25305 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMicromapEXT && "Function <vkCopyMicromapEXT> requires <VK_EXT_opacity_micromap>" );
25306
25307 Result result = static_cast<Result>( getDispatcher()->vkCopyMicromapEXT( static_cast<VkDevice>( m_device ),
25308 static_cast<VkDeferredOperationKHR>( deferredOperation ),
25309 reinterpret_cast<const VkCopyMicromapInfoEXT *>( &info ) ) );
25310 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
25311 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMicromapEXT",
25312 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
25313
25314 return static_cast<Result>( result );
25315 }
25316
25317 // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html
25318 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapToMemoryEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
25319 const CopyMicromapToMemoryInfoEXT & info ) const
25320 {
25321 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMicromapToMemoryEXT && "Function <vkCopyMicromapToMemoryEXT> requires <VK_EXT_opacity_micromap>" );
25322
25323 Result result = static_cast<Result>( getDispatcher()->vkCopyMicromapToMemoryEXT( static_cast<VkDevice>( m_device ),
25324 static_cast<VkDeferredOperationKHR>( deferredOperation ),
25325 reinterpret_cast<const VkCopyMicromapToMemoryInfoEXT *>( &info ) ) );
25326 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
25327 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMicromapToMemoryEXT",
25328 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
25329
25330 return static_cast<Result>( result );
25331 }
25332
25333 // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html
25334 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
25335 const CopyMemoryToMicromapInfoEXT & info ) const
25336 {
25337 VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToMicromapEXT && "Function <vkCopyMemoryToMicromapEXT> requires <VK_EXT_opacity_micromap>" );
25338
25339 Result result = static_cast<Result>( getDispatcher()->vkCopyMemoryToMicromapEXT( static_cast<VkDevice>( m_device ),
25340 static_cast<VkDeferredOperationKHR>( deferredOperation ),
25341 reinterpret_cast<const VkCopyMemoryToMicromapInfoEXT *>( &info ) ) );
25342 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
25343 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToMicromapEXT",
25344 { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } );
25345
25346 return static_cast<Result>( result );
25347 }
25348
25349 // wrapper function for command vkWriteMicromapsPropertiesEXT, see
25350 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html
25351 template <typename DataType>
25352 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataType>>::type Device::writeMicromapsPropertiesEXT(
25353 ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps, QueryType queryType, size_t dataSize, size_t stride ) const
25354 {
25355 VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function <vkWriteMicromapsPropertiesEXT> requires <VK_EXT_opacity_micromap>" );
25356
25357 VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
25358 std::vector<DataType> data( dataSize / sizeof( DataType ) );
25359 Result result = static_cast<Result>( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast<VkDevice>( m_device ),
25360 micromaps.size(),
25361 reinterpret_cast<const VkMicromapEXT *>( micromaps.data() ),
25362 static_cast<VkQueryType>( queryType ),
25363 data.size() * sizeof( DataType ),
25364 reinterpret_cast<void *>( data.data() ),
25365 stride ) );
25366 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeMicromapsPropertiesEXT" );
25367
25368 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
25369 }
25370
25371 // wrapper function for command vkWriteMicromapsPropertiesEXT, see
25372 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html
25373 template <typename DataType>
25374 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
25375 Device::writeMicromapsPropertyEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps, QueryType queryType, size_t stride ) const
25376 {
25377 VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function <vkWriteMicromapsPropertiesEXT> requires <VK_EXT_opacity_micromap>" );
25378
25379 DataType data;
25380 Result result = static_cast<Result>( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast<VkDevice>( m_device ),
25381 micromaps.size(),
25382 reinterpret_cast<const VkMicromapEXT *>( micromaps.data() ),
25383 static_cast<VkQueryType>( queryType ),
25384 sizeof( DataType ),
25385 reinterpret_cast<void *>( &data ),
25386 stride ) );
25387 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeMicromapsPropertyEXT" );
25388
25389 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
25390 }
25391
25392 // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html
25393 VULKAN_HPP_INLINE void CommandBuffer::copyMicromapEXT( const CopyMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
25394 {
25395 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMicromapEXT && "Function <vkCmdCopyMicromapEXT> requires <VK_EXT_opacity_micromap>" );
25396
25397 getDispatcher()->vkCmdCopyMicromapEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyMicromapInfoEXT *>( &info ) );
25398 }
25399
25400 // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see
25401 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html
25402 VULKAN_HPP_INLINE void CommandBuffer::copyMicromapToMemoryEXT( const CopyMicromapToMemoryInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
25403 {
25404 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMicromapToMemoryEXT && "Function <vkCmdCopyMicromapToMemoryEXT> requires <VK_EXT_opacity_micromap>" );
25405
25406 getDispatcher()->vkCmdCopyMicromapToMemoryEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25407 reinterpret_cast<const VkCopyMicromapToMemoryInfoEXT *>( &info ) );
25408 }
25409
25410 // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see
25411 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html
25412 VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToMicromapEXT( const CopyMemoryToMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
25413 {
25414 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToMicromapEXT && "Function <vkCmdCopyMemoryToMicromapEXT> requires <VK_EXT_opacity_micromap>" );
25415
25416 getDispatcher()->vkCmdCopyMemoryToMicromapEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25417 reinterpret_cast<const VkCopyMemoryToMicromapInfoEXT *>( &info ) );
25418 }
25419
25420 // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see
25421 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html
25422 VULKAN_HPP_INLINE void CommandBuffer::writeMicromapsPropertiesEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
25423 QueryType queryType,
25424 VULKAN_HPP_NAMESPACE::QueryPool queryPool,
25425 uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT
25426 {
25427 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteMicromapsPropertiesEXT &&
25428 "Function <vkCmdWriteMicromapsPropertiesEXT> requires <VK_EXT_opacity_micromap>" );
25429
25430 getDispatcher()->vkCmdWriteMicromapsPropertiesEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25431 micromaps.size(),
25432 reinterpret_cast<const VkMicromapEXT *>( micromaps.data() ),
25433 static_cast<VkQueryType>( queryType ),
25434 static_cast<VkQueryPool>( queryPool ),
25435 firstQuery );
25436 }
25437
25438 // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see
25439 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html
25440 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureCompatibilityKHR
25441 Device::getMicromapCompatibilityEXT( const MicromapVersionInfoEXT & versionInfo ) const VULKAN_HPP_NOEXCEPT
25442 {
25443 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMicromapCompatibilityEXT &&
25444 "Function <vkGetDeviceMicromapCompatibilityEXT> requires <VK_EXT_opacity_micromap>" );
25445
25446 AccelerationStructureCompatibilityKHR compatibility;
25447 getDispatcher()->vkGetDeviceMicromapCompatibilityEXT( static_cast<VkDevice>( m_device ),
25448 reinterpret_cast<const VkMicromapVersionInfoEXT *>( &versionInfo ),
25449 reinterpret_cast<VkAccelerationStructureCompatibilityKHR *>( &compatibility ) );
25450
25451 return compatibility;
25452 }
25453
25454 // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html
25455 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MicromapBuildSizesInfoEXT
25456 Device::getMicromapBuildSizesEXT( AccelerationStructureBuildTypeKHR buildType, const MicromapBuildInfoEXT & buildInfo ) const VULKAN_HPP_NOEXCEPT
25457 {
25458 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMicromapBuildSizesEXT && "Function <vkGetMicromapBuildSizesEXT> requires <VK_EXT_opacity_micromap>" );
25459
25460 MicromapBuildSizesInfoEXT sizeInfo;
25461 getDispatcher()->vkGetMicromapBuildSizesEXT( static_cast<VkDevice>( m_device ),
25462 static_cast<VkAccelerationStructureBuildTypeKHR>( buildType ),
25463 reinterpret_cast<const VkMicromapBuildInfoEXT *>( &buildInfo ),
25464 reinterpret_cast<VkMicromapBuildSizesInfoEXT *>( &sizeInfo ) );
25465
25466 return sizeInfo;
25467 }
25468
25469 //=== VK_HUAWEI_cluster_culling_shader ===
25470
25471 // wrapper function for command vkCmdDrawClusterHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterHUAWEI.html
25472 VULKAN_HPP_INLINE void CommandBuffer::drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
25473 {
25474 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawClusterHUAWEI && "Function <vkCmdDrawClusterHUAWEI> requires <VK_HUAWEI_cluster_culling_shader>" );
25475
25476 getDispatcher()->vkCmdDrawClusterHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
25477 }
25478
25479 // wrapper function for command vkCmdDrawClusterIndirectHUAWEI, see
25480 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterIndirectHUAWEI.html
25481 VULKAN_HPP_INLINE void CommandBuffer::drawClusterIndirectHUAWEI( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT
25482 {
25483 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawClusterIndirectHUAWEI &&
25484 "Function <vkCmdDrawClusterIndirectHUAWEI> requires <VK_HUAWEI_cluster_culling_shader>" );
25485
25486 getDispatcher()->vkCmdDrawClusterIndirectHUAWEI(
25487 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ) );
25488 }
25489
25490 //=== VK_EXT_pageable_device_local_memory ===
25491
25492 // wrapper function for command vkSetDeviceMemoryPriorityEXT, see
25493 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDeviceMemoryPriorityEXT.html
25494 VULKAN_HPP_INLINE void DeviceMemory::setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT
25495 {
25496 VULKAN_HPP_ASSERT( getDispatcher()->vkSetDeviceMemoryPriorityEXT &&
25497 "Function <vkSetDeviceMemoryPriorityEXT> requires <VK_EXT_pageable_device_local_memory>" );
25498
25499 getDispatcher()->vkSetDeviceMemoryPriorityEXT( static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_deviceMemory ), priority );
25500 }
25501
25502 //=== VK_KHR_maintenance4 ===
25503
25504 // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see
25505 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html
25506 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
25507 Device::getBufferMemoryRequirementsKHR( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
25508 {
25509 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR &&
25510 "Function <vkGetDeviceBufferMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
25511
25512 MemoryRequirements2 memoryRequirements;
25513 getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
25514 reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
25515 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
25516
25517 return memoryRequirements;
25518 }
25519
25520 // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see
25521 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html
25522 template <typename X, typename Y, typename... Z>
25523 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
25524 Device::getBufferMemoryRequirementsKHR( const DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
25525 {
25526 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR &&
25527 "Function <vkGetDeviceBufferMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
25528
25529 StructureChain<X, Y, Z...> structureChain;
25530 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
25531 getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
25532 reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
25533 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
25534
25535 return structureChain;
25536 }
25537
25538 // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see
25539 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html
25540 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
25541 Device::getImageMemoryRequirementsKHR( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
25542 {
25543 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR &&
25544 "Function <vkGetDeviceImageMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
25545
25546 MemoryRequirements2 memoryRequirements;
25547 getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
25548 reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
25549 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
25550
25551 return memoryRequirements;
25552 }
25553
25554 // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see
25555 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html
25556 template <typename X, typename Y, typename... Z>
25557 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
25558 Device::getImageMemoryRequirementsKHR( const DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
25559 {
25560 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR &&
25561 "Function <vkGetDeviceImageMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
25562
25563 StructureChain<X, Y, Z...> structureChain;
25564 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
25565 getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
25566 reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
25567 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
25568
25569 return structureChain;
25570 }
25571
25572 // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see
25573 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html
25574 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2>
25575 Device::getImageSparseMemoryRequirementsKHR( const DeviceImageMemoryRequirements & info ) const
25576 {
25577 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR &&
25578 "Function <vkGetDeviceImageSparseMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
25579
25580 std::vector<SparseImageMemoryRequirements2> sparseMemoryRequirements;
25581 uint32_t sparseMemoryRequirementCount;
25582 getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR(
25583 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ), &sparseMemoryRequirementCount, nullptr );
25584 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
25585 getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
25586 reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
25587 &sparseMemoryRequirementCount,
25588 reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
25589
25590 VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
25591 if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
25592 {
25593 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
25594 }
25595 return sparseMemoryRequirements;
25596 }
25597
25598 //=== VK_VALVE_descriptor_set_host_mapping ===
25599
25600 // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see
25601 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html
25602 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutHostMappingInfoVALVE
25603 Device::getDescriptorSetLayoutHostMappingInfoVALVE( const DescriptorSetBindingReferenceVALVE & bindingReference ) const VULKAN_HPP_NOEXCEPT
25604 {
25605 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutHostMappingInfoVALVE &&
25606 "Function <vkGetDescriptorSetLayoutHostMappingInfoVALVE> requires <VK_VALVE_descriptor_set_host_mapping>" );
25607
25608 DescriptorSetLayoutHostMappingInfoVALVE hostMapping;
25609 getDispatcher()->vkGetDescriptorSetLayoutHostMappingInfoVALVE( static_cast<VkDevice>( m_device ),
25610 reinterpret_cast<const VkDescriptorSetBindingReferenceVALVE *>( &bindingReference ),
25611 reinterpret_cast<VkDescriptorSetLayoutHostMappingInfoVALVE *>( &hostMapping ) );
25612
25613 return hostMapping;
25614 }
25615
25616 // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see
25617 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html
25618 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * DescriptorSet::getHostMappingVALVE() const VULKAN_HPP_NOEXCEPT
25619 {
25620 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetHostMappingVALVE &&
25621 "Function <vkGetDescriptorSetHostMappingVALVE> requires <VK_VALVE_descriptor_set_host_mapping>" );
25622
25623 void * pData;
25624 getDispatcher()->vkGetDescriptorSetHostMappingVALVE( static_cast<VkDevice>( m_device ), static_cast<VkDescriptorSet>( m_descriptorSet ), &pData );
25625
25626 return pData;
25627 }
25628
25629 //=== VK_NV_copy_memory_indirect ===
25630
25631 // wrapper function for command vkCmdCopyMemoryIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectNV.html
25632 VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectNV( DeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT
25633 {
25634 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryIndirectNV && "Function <vkCmdCopyMemoryIndirectNV> requires <VK_NV_copy_memory_indirect>" );
25635
25636 getDispatcher()->vkCmdCopyMemoryIndirectNV(
25637 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkDeviceAddress>( copyBufferAddress ), copyCount, stride );
25638 }
25639
25640 // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see
25641 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html
25642 VULKAN_HPP_INLINE void
25643 CommandBuffer::copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress,
25644 uint32_t stride,
25645 VULKAN_HPP_NAMESPACE::Image dstImage,
25646 ImageLayout dstImageLayout,
25647 ArrayProxy<const ImageSubresourceLayers> const & imageSubresources ) const VULKAN_HPP_NOEXCEPT
25648 {
25649 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToImageIndirectNV &&
25650 "Function <vkCmdCopyMemoryToImageIndirectNV> requires <VK_NV_copy_memory_indirect>" );
25651
25652 getDispatcher()->vkCmdCopyMemoryToImageIndirectNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
25653 static_cast<VkDeviceAddress>( copyBufferAddress ),
25654 imageSubresources.size(),
25655 stride,
25656 static_cast<VkImage>( dstImage ),
25657 static_cast<VkImageLayout>( dstImageLayout ),
25658 reinterpret_cast<const VkImageSubresourceLayers *>( imageSubresources.data() ) );
25659 }
25660
25661 //=== VK_NV_memory_decompression ===
25662
25663 // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html
25664 VULKAN_HPP_INLINE void
25665 CommandBuffer::decompressMemoryNV( ArrayProxy<const DecompressMemoryRegionNV> const & decompressMemoryRegions ) const VULKAN_HPP_NOEXCEPT
25666 {
25667 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryNV && "Function <vkCmdDecompressMemoryNV> requires <VK_NV_memory_decompression>" );
25668
25669 getDispatcher()->vkCmdDecompressMemoryNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
25670 decompressMemoryRegions.size(),
25671 reinterpret_cast<const VkDecompressMemoryRegionNV *>( decompressMemoryRegions.data() ) );
25672 }
25673
25674 // wrapper function for command vkCmdDecompressMemoryIndirectCountNV, see
25675 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountNV.html
25676 VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountNV( DeviceAddress indirectCommandsAddress,
25677 DeviceAddress indirectCommandsCountAddress,
25678 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
25679 {
25680 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryIndirectCountNV &&
25681 "Function <vkCmdDecompressMemoryIndirectCountNV> requires <VK_NV_memory_decompression>" );
25682
25683 getDispatcher()->vkCmdDecompressMemoryIndirectCountNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
25684 static_cast<VkDeviceAddress>( indirectCommandsAddress ),
25685 static_cast<VkDeviceAddress>( indirectCommandsCountAddress ),
25686 stride );
25687 }
25688
25689 //=== VK_NV_device_generated_commands_compute ===
25690
25691 // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see
25692 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html
25693 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
25694 Device::getPipelineIndirectMemoryRequirementsNV( const ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
25695 {
25696 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV &&
25697 "Function <vkGetPipelineIndirectMemoryRequirementsNV> requires <VK_NV_device_generated_commands_compute>" );
25698
25699 MemoryRequirements2 memoryRequirements;
25700 getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
25701 reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
25702 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
25703
25704 return memoryRequirements;
25705 }
25706
25707 // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see
25708 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html
25709 template <typename X, typename Y, typename... Z>
25710 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
25711 Device::getPipelineIndirectMemoryRequirementsNV( const ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
25712 {
25713 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV &&
25714 "Function <vkGetPipelineIndirectMemoryRequirementsNV> requires <VK_NV_device_generated_commands_compute>" );
25715
25716 StructureChain<X, Y, Z...> structureChain;
25717 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
25718 getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
25719 reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
25720 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
25721
25722 return structureChain;
25723 }
25724
25725 // wrapper function for command vkCmdUpdatePipelineIndirectBufferNV, see
25726 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdatePipelineIndirectBufferNV.html
25727 VULKAN_HPP_INLINE void CommandBuffer::updatePipelineIndirectBufferNV( PipelineBindPoint pipelineBindPoint,
25728 VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT
25729 {
25730 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdatePipelineIndirectBufferNV &&
25731 "Function <vkCmdUpdatePipelineIndirectBufferNV> requires <VK_NV_device_generated_commands_compute>" );
25732
25733 getDispatcher()->vkCmdUpdatePipelineIndirectBufferNV(
25734 static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
25735 }
25736
25737 // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see
25738 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html
25739 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress
25740 Device::getPipelineIndirectAddressNV( const PipelineIndirectDeviceAddressInfoNV & info ) const VULKAN_HPP_NOEXCEPT
25741 {
25742 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectDeviceAddressNV &&
25743 "Function <vkGetPipelineIndirectDeviceAddressNV> requires <VK_NV_device_generated_commands_compute>" );
25744
25745 VkDeviceAddress result = getDispatcher()->vkGetPipelineIndirectDeviceAddressNV(
25746 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkPipelineIndirectDeviceAddressInfoNV *>( &info ) );
25747
25748 return static_cast<DeviceAddress>( result );
25749 }
25750
25751 # if defined( VK_USE_PLATFORM_OHOS )
25752 //=== VK_OHOS_external_memory ===
25753 // wrapper function for command vkGetNativeBufferPropertiesOHOS, see
25754 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html
25755 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getNativeBufferPropertiesOHOS( const struct OH_NativeBuffer * buffer,
25756 NativeBufferPropertiesOHOS * pProperties ) const VULKAN_HPP_NOEXCEPT
25757 {
25758 VULKAN_HPP_ASSERT( getDispatcher()->vkGetNativeBufferPropertiesOHOS && "Function <vkGetNativeBufferPropertiesOHOS> requires <VK_OHOS_external_memory>" );
25759 return static_cast<Result>( getDispatcher()->vkGetNativeBufferPropertiesOHOS(
25760 static_cast<VkDevice>( m_device ), buffer, reinterpret_cast<VkNativeBufferPropertiesOHOS *>( pProperties ) ) );
25761 }
25762
25763 // wrapper function for command vkGetNativeBufferPropertiesOHOS, see
25764 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html
25765 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<NativeBufferPropertiesOHOS>::type
25766 Device::getNativeBufferPropertiesOHOS( const struct OH_NativeBuffer & buffer ) const
25767 {
25768 VULKAN_HPP_ASSERT( getDispatcher()->vkGetNativeBufferPropertiesOHOS && "Function <vkGetNativeBufferPropertiesOHOS> requires <VK_OHOS_external_memory>" );
25769
25770 NativeBufferPropertiesOHOS properties;
25771 Result result = static_cast<Result>( getDispatcher()->vkGetNativeBufferPropertiesOHOS(
25772 static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkNativeBufferPropertiesOHOS *>( &properties ) ) );
25773 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getNativeBufferPropertiesOHOS" );
25774
25775 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
25776 }
25777
25778 // wrapper function for command vkGetNativeBufferPropertiesOHOS, see
25779 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html
25780 template <typename X, typename Y, typename... Z>
25781 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
25782 Device::getNativeBufferPropertiesOHOS( const struct OH_NativeBuffer & buffer ) const
25783 {
25784 VULKAN_HPP_ASSERT( getDispatcher()->vkGetNativeBufferPropertiesOHOS && "Function <vkGetNativeBufferPropertiesOHOS> requires <VK_OHOS_external_memory>" );
25785
25786 StructureChain<X, Y, Z...> structureChain;
25787 NativeBufferPropertiesOHOS & properties = structureChain.template get<NativeBufferPropertiesOHOS>();
25788 Result result = static_cast<Result>( getDispatcher()->vkGetNativeBufferPropertiesOHOS(
25789 static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkNativeBufferPropertiesOHOS *>( &properties ) ) );
25790 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getNativeBufferPropertiesOHOS" );
25791
25792 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
25793 }
25794
25795 // wrapper function for command vkGetMemoryNativeBufferOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html
25796 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<struct OH_NativeBuffer *>::type
25797 Device::getMemoryNativeBufferOHOS( const MemoryGetNativeBufferInfoOHOS & info ) const
25798 {
25799 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryNativeBufferOHOS && "Function <vkGetMemoryNativeBufferOHOS> requires <VK_OHOS_external_memory>" );
25800
25801 struct OH_NativeBuffer * buffer;
25802 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryNativeBufferOHOS(
25803 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetNativeBufferInfoOHOS *>( &info ), &buffer ) );
25804 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryNativeBufferOHOS" );
25805
25806 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( buffer ) );
25807 }
25808 # endif /*VK_USE_PLATFORM_OHOS*/
25809
25810 //=== VK_EXT_extended_dynamic_state3 ===
25811
25812 // wrapper function for command vkCmdSetDepthClampEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampEnableEXT.html
25813 VULKAN_HPP_INLINE void CommandBuffer::setDepthClampEnableEXT( Bool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT
25814 {
25815 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClampEnableEXT &&
25816 "Function <vkCmdSetDepthClampEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25817
25818 getDispatcher()->vkCmdSetDepthClampEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthClampEnable ) );
25819 }
25820
25821 // wrapper function for command vkCmdSetPolygonModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPolygonModeEXT.html
25822 VULKAN_HPP_INLINE void CommandBuffer::setPolygonModeEXT( PolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT
25823 {
25824 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPolygonModeEXT &&
25825 "Function <vkCmdSetPolygonModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25826
25827 getDispatcher()->vkCmdSetPolygonModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPolygonMode>( polygonMode ) );
25828 }
25829
25830 // wrapper function for command vkCmdSetRasterizationSamplesEXT, see
25831 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationSamplesEXT.html
25832 VULKAN_HPP_INLINE void CommandBuffer::setRasterizationSamplesEXT( SampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT
25833 {
25834 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizationSamplesEXT &&
25835 "Function <vkCmdSetRasterizationSamplesEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25836
25837 getDispatcher()->vkCmdSetRasterizationSamplesEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25838 static_cast<VkSampleCountFlagBits>( rasterizationSamples ) );
25839 }
25840
25841 // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html
25842 VULKAN_HPP_INLINE void CommandBuffer::setSampleMaskEXT( SampleCountFlagBits samples, ArrayProxy<const SampleMask> const & sampleMask ) const
25843 {
25844 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleMaskEXT &&
25845 "Function <vkCmdSetSampleMaskEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25846 # ifdef VULKAN_HPP_NO_EXCEPTIONS
25847 VULKAN_HPP_ASSERT( sampleMask.size() == ( static_cast<uint32_t>( samples ) + 31 ) / 32 );
25848 # else
25849 if ( sampleMask.size() != ( static_cast<uint32_t>( samples ) + 31 ) / 32 )
25850 {
25851 throw LogicError( VULKAN_HPP_NAMESPACE_STRING
25852 "::CommandBuffer::setSampleMaskEXT: sampleMask.size() != ( static_cast<uint32_t>( samples ) + 31 ) / 32" );
25853 }
25854 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
25855
25856 getDispatcher()->vkCmdSetSampleMaskEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25857 static_cast<VkSampleCountFlagBits>( samples ),
25858 reinterpret_cast<const VkSampleMask *>( sampleMask.data() ) );
25859 }
25860
25861 // wrapper function for command vkCmdSetAlphaToCoverageEnableEXT, see
25862 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToCoverageEnableEXT.html
25863 VULKAN_HPP_INLINE void CommandBuffer::setAlphaToCoverageEnableEXT( Bool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT
25864 {
25865 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAlphaToCoverageEnableEXT &&
25866 "Function <vkCmdSetAlphaToCoverageEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25867
25868 getDispatcher()->vkCmdSetAlphaToCoverageEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( alphaToCoverageEnable ) );
25869 }
25870
25871 // wrapper function for command vkCmdSetAlphaToOneEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToOneEnableEXT.html
25872 VULKAN_HPP_INLINE void CommandBuffer::setAlphaToOneEnableEXT( Bool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT
25873 {
25874 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAlphaToOneEnableEXT &&
25875 "Function <vkCmdSetAlphaToOneEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25876
25877 getDispatcher()->vkCmdSetAlphaToOneEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( alphaToOneEnable ) );
25878 }
25879
25880 // wrapper function for command vkCmdSetLogicOpEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEnableEXT.html
25881 VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEnableEXT( Bool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT
25882 {
25883 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEnableEXT &&
25884 "Function <vkCmdSetLogicOpEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25885
25886 getDispatcher()->vkCmdSetLogicOpEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( logicOpEnable ) );
25887 }
25888
25889 // wrapper function for command vkCmdSetColorBlendEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html
25890 VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEnableEXT( uint32_t firstAttachment,
25891 ArrayProxy<const Bool32> const & colorBlendEnables ) const VULKAN_HPP_NOEXCEPT
25892 {
25893 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendEnableEXT &&
25894 "Function <vkCmdSetColorBlendEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25895
25896 getDispatcher()->vkCmdSetColorBlendEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25897 firstAttachment,
25898 colorBlendEnables.size(),
25899 reinterpret_cast<const VkBool32 *>( colorBlendEnables.data() ) );
25900 }
25901
25902 // wrapper function for command vkCmdSetColorBlendEquationEXT, see
25903 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html
25904 VULKAN_HPP_INLINE void
25905 CommandBuffer::setColorBlendEquationEXT( uint32_t firstAttachment,
25906 ArrayProxy<const ColorBlendEquationEXT> const & colorBlendEquations ) const VULKAN_HPP_NOEXCEPT
25907 {
25908 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendEquationEXT &&
25909 "Function <vkCmdSetColorBlendEquationEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25910
25911 getDispatcher()->vkCmdSetColorBlendEquationEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25912 firstAttachment,
25913 colorBlendEquations.size(),
25914 reinterpret_cast<const VkColorBlendEquationEXT *>( colorBlendEquations.data() ) );
25915 }
25916
25917 // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html
25918 VULKAN_HPP_INLINE void CommandBuffer::setColorWriteMaskEXT( uint32_t firstAttachment,
25919 ArrayProxy<const ColorComponentFlags> const & colorWriteMasks ) const VULKAN_HPP_NOEXCEPT
25920 {
25921 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorWriteMaskEXT &&
25922 "Function <vkCmdSetColorWriteMaskEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25923
25924 getDispatcher()->vkCmdSetColorWriteMaskEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25925 firstAttachment,
25926 colorWriteMasks.size(),
25927 reinterpret_cast<const VkColorComponentFlags *>( colorWriteMasks.data() ) );
25928 }
25929
25930 // wrapper function for command vkCmdSetTessellationDomainOriginEXT, see
25931 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetTessellationDomainOriginEXT.html
25932 VULKAN_HPP_INLINE void CommandBuffer::setTessellationDomainOriginEXT( TessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT
25933 {
25934 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetTessellationDomainOriginEXT &&
25935 "Function <vkCmdSetTessellationDomainOriginEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25936
25937 getDispatcher()->vkCmdSetTessellationDomainOriginEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25938 static_cast<VkTessellationDomainOrigin>( domainOrigin ) );
25939 }
25940
25941 // wrapper function for command vkCmdSetRasterizationStreamEXT, see
25942 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationStreamEXT.html
25943 VULKAN_HPP_INLINE void CommandBuffer::setRasterizationStreamEXT( uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT
25944 {
25945 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizationStreamEXT &&
25946 "Function <vkCmdSetRasterizationStreamEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25947
25948 getDispatcher()->vkCmdSetRasterizationStreamEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), rasterizationStream );
25949 }
25950
25951 // wrapper function for command vkCmdSetConservativeRasterizationModeEXT, see
25952 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetConservativeRasterizationModeEXT.html
25953 VULKAN_HPP_INLINE void
25954 CommandBuffer::setConservativeRasterizationModeEXT( ConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT
25955 {
25956 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetConservativeRasterizationModeEXT &&
25957 "Function <vkCmdSetConservativeRasterizationModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25958
25959 getDispatcher()->vkCmdSetConservativeRasterizationModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
25960 static_cast<VkConservativeRasterizationModeEXT>( conservativeRasterizationMode ) );
25961 }
25962
25963 // wrapper function for command vkCmdSetExtraPrimitiveOverestimationSizeEXT, see
25964 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExtraPrimitiveOverestimationSizeEXT.html
25965 VULKAN_HPP_INLINE void CommandBuffer::setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT
25966 {
25967 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExtraPrimitiveOverestimationSizeEXT &&
25968 "Function <vkCmdSetExtraPrimitiveOverestimationSizeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25969
25970 getDispatcher()->vkCmdSetExtraPrimitiveOverestimationSizeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), extraPrimitiveOverestimationSize );
25971 }
25972
25973 // wrapper function for command vkCmdSetDepthClipEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipEnableEXT.html
25974 VULKAN_HPP_INLINE void CommandBuffer::setDepthClipEnableEXT( Bool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT
25975 {
25976 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClipEnableEXT &&
25977 "Function <vkCmdSetDepthClipEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25978
25979 getDispatcher()->vkCmdSetDepthClipEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthClipEnable ) );
25980 }
25981
25982 // wrapper function for command vkCmdSetSampleLocationsEnableEXT, see
25983 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEnableEXT.html
25984 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEnableEXT( Bool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT
25985 {
25986 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEnableEXT &&
25987 "Function <vkCmdSetSampleLocationsEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
25988
25989 getDispatcher()->vkCmdSetSampleLocationsEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( sampleLocationsEnable ) );
25990 }
25991
25992 // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see
25993 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html
25994 VULKAN_HPP_INLINE void
25995 CommandBuffer::setColorBlendAdvancedEXT( uint32_t firstAttachment,
25996 ArrayProxy<const ColorBlendAdvancedEXT> const & colorBlendAdvanced ) const VULKAN_HPP_NOEXCEPT
25997 {
25998 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendAdvancedEXT &&
25999 "Function <vkCmdSetColorBlendAdvancedEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26000
26001 getDispatcher()->vkCmdSetColorBlendAdvancedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
26002 firstAttachment,
26003 colorBlendAdvanced.size(),
26004 reinterpret_cast<const VkColorBlendAdvancedEXT *>( colorBlendAdvanced.data() ) );
26005 }
26006
26007 // wrapper function for command vkCmdSetProvokingVertexModeEXT, see
26008 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetProvokingVertexModeEXT.html
26009 VULKAN_HPP_INLINE void CommandBuffer::setProvokingVertexModeEXT( ProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT
26010 {
26011 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetProvokingVertexModeEXT &&
26012 "Function <vkCmdSetProvokingVertexModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26013
26014 getDispatcher()->vkCmdSetProvokingVertexModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
26015 static_cast<VkProvokingVertexModeEXT>( provokingVertexMode ) );
26016 }
26017
26018 // wrapper function for command vkCmdSetLineRasterizationModeEXT, see
26019 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineRasterizationModeEXT.html
26020 VULKAN_HPP_INLINE void CommandBuffer::setLineRasterizationModeEXT( LineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT
26021 {
26022 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineRasterizationModeEXT &&
26023 "Function <vkCmdSetLineRasterizationModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26024
26025 getDispatcher()->vkCmdSetLineRasterizationModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
26026 static_cast<VkLineRasterizationModeEXT>( lineRasterizationMode ) );
26027 }
26028
26029 // wrapper function for command vkCmdSetLineStippleEnableEXT, see
26030 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEnableEXT.html
26031 VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEnableEXT( Bool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT
26032 {
26033 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEnableEXT &&
26034 "Function <vkCmdSetLineStippleEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26035
26036 getDispatcher()->vkCmdSetLineStippleEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( stippledLineEnable ) );
26037 }
26038
26039 // wrapper function for command vkCmdSetDepthClipNegativeOneToOneEXT, see
26040 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipNegativeOneToOneEXT.html
26041 VULKAN_HPP_INLINE void CommandBuffer::setDepthClipNegativeOneToOneEXT( Bool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT
26042 {
26043 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClipNegativeOneToOneEXT &&
26044 "Function <vkCmdSetDepthClipNegativeOneToOneEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26045
26046 getDispatcher()->vkCmdSetDepthClipNegativeOneToOneEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( negativeOneToOne ) );
26047 }
26048
26049 // wrapper function for command vkCmdSetViewportWScalingEnableNV, see
26050 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingEnableNV.html
26051 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingEnableNV( Bool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT
26052 {
26053 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWScalingEnableNV &&
26054 "Function <vkCmdSetViewportWScalingEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26055
26056 getDispatcher()->vkCmdSetViewportWScalingEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( viewportWScalingEnable ) );
26057 }
26058
26059 // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html
26060 VULKAN_HPP_INLINE void CommandBuffer::setViewportSwizzleNV( uint32_t firstViewport,
26061 ArrayProxy<const ViewportSwizzleNV> const & viewportSwizzles ) const VULKAN_HPP_NOEXCEPT
26062 {
26063 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportSwizzleNV &&
26064 "Function <vkCmdSetViewportSwizzleNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26065
26066 getDispatcher()->vkCmdSetViewportSwizzleNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
26067 firstViewport,
26068 viewportSwizzles.size(),
26069 reinterpret_cast<const VkViewportSwizzleNV *>( viewportSwizzles.data() ) );
26070 }
26071
26072 // wrapper function for command vkCmdSetCoverageToColorEnableNV, see
26073 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorEnableNV.html
26074 VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorEnableNV( Bool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT
26075 {
26076 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageToColorEnableNV &&
26077 "Function <vkCmdSetCoverageToColorEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26078
26079 getDispatcher()->vkCmdSetCoverageToColorEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( coverageToColorEnable ) );
26080 }
26081
26082 // wrapper function for command vkCmdSetCoverageToColorLocationNV, see
26083 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorLocationNV.html
26084 VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorLocationNV( uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT
26085 {
26086 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageToColorLocationNV &&
26087 "Function <vkCmdSetCoverageToColorLocationNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26088
26089 getDispatcher()->vkCmdSetCoverageToColorLocationNV( static_cast<VkCommandBuffer>( m_commandBuffer ), coverageToColorLocation );
26090 }
26091
26092 // wrapper function for command vkCmdSetCoverageModulationModeNV, see
26093 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationModeNV.html
26094 VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationModeNV( CoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT
26095 {
26096 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationModeNV &&
26097 "Function <vkCmdSetCoverageModulationModeNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26098
26099 getDispatcher()->vkCmdSetCoverageModulationModeNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
26100 static_cast<VkCoverageModulationModeNV>( coverageModulationMode ) );
26101 }
26102
26103 // wrapper function for command vkCmdSetCoverageModulationTableEnableNV, see
26104 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableEnableNV.html
26105 VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableEnableNV( Bool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT
26106 {
26107 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationTableEnableNV &&
26108 "Function <vkCmdSetCoverageModulationTableEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26109
26110 getDispatcher()->vkCmdSetCoverageModulationTableEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
26111 static_cast<VkBool32>( coverageModulationTableEnable ) );
26112 }
26113
26114 // wrapper function for command vkCmdSetCoverageModulationTableNV, see
26115 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html
26116 VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableNV( ArrayProxy<const float> const & coverageModulationTable ) const VULKAN_HPP_NOEXCEPT
26117 {
26118 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationTableNV &&
26119 "Function <vkCmdSetCoverageModulationTableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26120
26121 getDispatcher()->vkCmdSetCoverageModulationTableNV(
26122 static_cast<VkCommandBuffer>( m_commandBuffer ), coverageModulationTable.size(), coverageModulationTable.data() );
26123 }
26124
26125 // wrapper function for command vkCmdSetShadingRateImageEnableNV, see
26126 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetShadingRateImageEnableNV.html
26127 VULKAN_HPP_INLINE void CommandBuffer::setShadingRateImageEnableNV( Bool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT
26128 {
26129 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetShadingRateImageEnableNV &&
26130 "Function <vkCmdSetShadingRateImageEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26131
26132 getDispatcher()->vkCmdSetShadingRateImageEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( shadingRateImageEnable ) );
26133 }
26134
26135 // wrapper function for command vkCmdSetRepresentativeFragmentTestEnableNV, see
26136 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRepresentativeFragmentTestEnableNV.html
26137 VULKAN_HPP_INLINE void CommandBuffer::setRepresentativeFragmentTestEnableNV( Bool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT
26138 {
26139 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRepresentativeFragmentTestEnableNV &&
26140 "Function <vkCmdSetRepresentativeFragmentTestEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26141
26142 getDispatcher()->vkCmdSetRepresentativeFragmentTestEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
26143 static_cast<VkBool32>( representativeFragmentTestEnable ) );
26144 }
26145
26146 // wrapper function for command vkCmdSetCoverageReductionModeNV, see
26147 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageReductionModeNV.html
26148 VULKAN_HPP_INLINE void CommandBuffer::setCoverageReductionModeNV( CoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT
26149 {
26150 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageReductionModeNV &&
26151 "Function <vkCmdSetCoverageReductionModeNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
26152
26153 getDispatcher()->vkCmdSetCoverageReductionModeNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
26154 static_cast<VkCoverageReductionModeNV>( coverageReductionMode ) );
26155 }
26156
26157 //=== VK_ARM_tensors ===
26158
26159 // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html
26160 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<TensorARM>::type
26161 Device::createTensorARM( TensorCreateInfoARM const & createInfo,
26162 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
26163 {
26164 VULKAN_HPP_NAMESPACE::TensorARM tensor;
26165 Result result = static_cast<Result>( getDispatcher()->vkCreateTensorARM( static_cast<VkDevice>( m_device ),
26166 reinterpret_cast<const VkTensorCreateInfoARM *>( &createInfo ),
26167 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26168 reinterpret_cast<VkTensorARM *>( &tensor ) ) );
26169 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createTensorARM" );
26170 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, TensorARM( *this, *reinterpret_cast<VkTensorARM *>( &tensor ), allocator ) );
26171 }
26172
26173 // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html
26174 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<TensorViewARM>::type
26175 Device::createTensorViewARM( TensorViewCreateInfoARM const & createInfo,
26176 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
26177 {
26178 VULKAN_HPP_NAMESPACE::TensorViewARM view;
26179 Result result = static_cast<Result>( getDispatcher()->vkCreateTensorViewARM( static_cast<VkDevice>( m_device ),
26180 reinterpret_cast<const VkTensorViewCreateInfoARM *>( &createInfo ),
26181 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26182 reinterpret_cast<VkTensorViewARM *>( &view ) ) );
26183 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createTensorViewARM" );
26184 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, TensorViewARM( *this, *reinterpret_cast<VkTensorViewARM *>( &view ), allocator ) );
26185 }
26186
26187 // wrapper function for command vkGetTensorMemoryRequirementsARM, see
26188 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html
26189 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
26190 Device::getTensorMemoryRequirementsARM( const TensorMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT
26191 {
26192 VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorMemoryRequirementsARM && "Function <vkGetTensorMemoryRequirementsARM> requires <VK_ARM_tensors>" );
26193
26194 MemoryRequirements2 memoryRequirements;
26195 getDispatcher()->vkGetTensorMemoryRequirementsARM( static_cast<VkDevice>( m_device ),
26196 reinterpret_cast<const VkTensorMemoryRequirementsInfoARM *>( &info ),
26197 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
26198
26199 return memoryRequirements;
26200 }
26201
26202 // wrapper function for command vkGetTensorMemoryRequirementsARM, see
26203 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html
26204 template <typename X, typename Y, typename... Z>
26205 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
26206 Device::getTensorMemoryRequirementsARM( const TensorMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT
26207 {
26208 VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorMemoryRequirementsARM && "Function <vkGetTensorMemoryRequirementsARM> requires <VK_ARM_tensors>" );
26209
26210 StructureChain<X, Y, Z...> structureChain;
26211 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
26212 getDispatcher()->vkGetTensorMemoryRequirementsARM( static_cast<VkDevice>( m_device ),
26213 reinterpret_cast<const VkTensorMemoryRequirementsInfoARM *>( &info ),
26214 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
26215
26216 return structureChain;
26217 }
26218
26219 // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html
26220 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::bindTensorMemoryARM( ArrayProxy<const BindTensorMemoryInfoARM> const & bindInfos ) const
26221 {
26222 VULKAN_HPP_ASSERT( getDispatcher()->vkBindTensorMemoryARM && "Function <vkBindTensorMemoryARM> requires <VK_ARM_tensors>" );
26223
26224 Result result = static_cast<Result>( getDispatcher()->vkBindTensorMemoryARM(
26225 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindTensorMemoryInfoARM *>( bindInfos.data() ) ) );
26226 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindTensorMemoryARM" );
26227
26228 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
26229 }
26230
26231 // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see
26232 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html
26233 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
26234 Device::getTensorMemoryRequirementsARM( const DeviceTensorMemoryRequirementsARM & info ) const VULKAN_HPP_NOEXCEPT
26235 {
26236 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM &&
26237 "Function <vkGetDeviceTensorMemoryRequirementsARM> requires <VK_ARM_tensors>" );
26238
26239 MemoryRequirements2 memoryRequirements;
26240 getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM( static_cast<VkDevice>( m_device ),
26241 reinterpret_cast<const VkDeviceTensorMemoryRequirementsARM *>( &info ),
26242 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
26243
26244 return memoryRequirements;
26245 }
26246
26247 // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see
26248 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html
26249 template <typename X, typename Y, typename... Z>
26250 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
26251 Device::getTensorMemoryRequirementsARM( const DeviceTensorMemoryRequirementsARM & info ) const VULKAN_HPP_NOEXCEPT
26252 {
26253 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM &&
26254 "Function <vkGetDeviceTensorMemoryRequirementsARM> requires <VK_ARM_tensors>" );
26255
26256 StructureChain<X, Y, Z...> structureChain;
26257 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
26258 getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM( static_cast<VkDevice>( m_device ),
26259 reinterpret_cast<const VkDeviceTensorMemoryRequirementsARM *>( &info ),
26260 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
26261
26262 return structureChain;
26263 }
26264
26265 // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html
26266 VULKAN_HPP_INLINE void CommandBuffer::copyTensorARM( const CopyTensorInfoARM & copyTensorInfo ) const VULKAN_HPP_NOEXCEPT
26267 {
26268 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyTensorARM && "Function <vkCmdCopyTensorARM> requires <VK_ARM_tensors>" );
26269
26270 getDispatcher()->vkCmdCopyTensorARM( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyTensorInfoARM *>( &copyTensorInfo ) );
26271 }
26272
26273 // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see
26274 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html
26275 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalTensorPropertiesARM
26276 PhysicalDevice::getExternalTensorPropertiesARM( const PhysicalDeviceExternalTensorInfoARM & externalTensorInfo ) const VULKAN_HPP_NOEXCEPT
26277 {
26278 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalTensorPropertiesARM &&
26279 "Function <vkGetPhysicalDeviceExternalTensorPropertiesARM> requires <VK_ARM_tensors>" );
26280
26281 ExternalTensorPropertiesARM externalTensorProperties;
26282 getDispatcher()->vkGetPhysicalDeviceExternalTensorPropertiesARM( static_cast<VkPhysicalDevice>( m_physicalDevice ),
26283 reinterpret_cast<const VkPhysicalDeviceExternalTensorInfoARM *>( &externalTensorInfo ),
26284 reinterpret_cast<VkExternalTensorPropertiesARM *>( &externalTensorProperties ) );
26285
26286 return externalTensorProperties;
26287 }
26288
26289 // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see
26290 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html
26291 template <typename DataType>
26292 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
26293 Device::getTensorOpaqueCaptureDescriptorDataARM( const TensorCaptureDescriptorDataInfoARM & info ) const
26294 {
26295 VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorOpaqueCaptureDescriptorDataARM &&
26296 "Function <vkGetTensorOpaqueCaptureDescriptorDataARM> requires <VK_ARM_tensors>" );
26297
26298 DataType data;
26299 Result result = static_cast<Result>( getDispatcher()->vkGetTensorOpaqueCaptureDescriptorDataARM(
26300 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkTensorCaptureDescriptorDataInfoARM *>( &info ), &data ) );
26301 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getTensorOpaqueCaptureDescriptorDataARM" );
26302
26303 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
26304 }
26305
26306 // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see
26307 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html
26308 template <typename DataType>
26309 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataType>::type
26310 Device::getTensorViewOpaqueCaptureDescriptorDataARM( const TensorViewCaptureDescriptorDataInfoARM & info ) const
26311 {
26312 VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorViewOpaqueCaptureDescriptorDataARM &&
26313 "Function <vkGetTensorViewOpaqueCaptureDescriptorDataARM> requires <VK_ARM_tensors>" );
26314
26315 DataType data;
26316 Result result = static_cast<Result>( getDispatcher()->vkGetTensorViewOpaqueCaptureDescriptorDataARM(
26317 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkTensorViewCaptureDescriptorDataInfoARM *>( &info ), &data ) );
26318 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getTensorViewOpaqueCaptureDescriptorDataARM" );
26319
26320 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
26321 }
26322
26323 //=== VK_EXT_shader_module_identifier ===
26324
26325 // wrapper function for command vkGetShaderModuleIdentifierEXT, see
26326 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html
26327 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ShaderModuleIdentifierEXT ShaderModule::getIdentifierEXT() const VULKAN_HPP_NOEXCEPT
26328 {
26329 VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderModuleIdentifierEXT &&
26330 "Function <vkGetShaderModuleIdentifierEXT> requires <VK_EXT_shader_module_identifier>" );
26331
26332 ShaderModuleIdentifierEXT identifier;
26333 getDispatcher()->vkGetShaderModuleIdentifierEXT(
26334 static_cast<VkDevice>( m_device ), static_cast<VkShaderModule>( m_shaderModule ), reinterpret_cast<VkShaderModuleIdentifierEXT *>( &identifier ) );
26335
26336 return identifier;
26337 }
26338
26339 // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see
26340 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html
26341 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ShaderModuleIdentifierEXT
26342 Device::getShaderModuleCreateInfoIdentifierEXT( const ShaderModuleCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
26343 {
26344 VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderModuleCreateInfoIdentifierEXT &&
26345 "Function <vkGetShaderModuleCreateInfoIdentifierEXT> requires <VK_EXT_shader_module_identifier>" );
26346
26347 ShaderModuleIdentifierEXT identifier;
26348 getDispatcher()->vkGetShaderModuleCreateInfoIdentifierEXT( static_cast<VkDevice>( m_device ),
26349 reinterpret_cast<const VkShaderModuleCreateInfo *>( &createInfo ),
26350 reinterpret_cast<VkShaderModuleIdentifierEXT *>( &identifier ) );
26351
26352 return identifier;
26353 }
26354
26355 //=== VK_NV_optical_flow ===
26356
26357 // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see
26358 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html
26359 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<OpticalFlowImageFormatPropertiesNV>>::type
26360 PhysicalDevice::getOpticalFlowImageFormatsNV( const OpticalFlowImageFormatInfoNV & opticalFlowImageFormatInfo ) const
26361 {
26362 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV &&
26363 "Function <vkGetPhysicalDeviceOpticalFlowImageFormatsNV> requires <VK_NV_optical_flow>" );
26364
26365 std::vector<OpticalFlowImageFormatPropertiesNV> imageFormatProperties;
26366 uint32_t formatCount;
26367 Result result;
26368 do
26369 {
26370 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
26371 static_cast<VkPhysicalDevice>( m_physicalDevice ),
26372 reinterpret_cast<const VkOpticalFlowImageFormatInfoNV *>( &opticalFlowImageFormatInfo ),
26373 &formatCount,
26374 nullptr ) );
26375 if ( ( result == Result::eSuccess ) && formatCount )
26376 {
26377 imageFormatProperties.resize( formatCount );
26378 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
26379 static_cast<VkPhysicalDevice>( m_physicalDevice ),
26380 reinterpret_cast<const VkOpticalFlowImageFormatInfoNV *>( &opticalFlowImageFormatInfo ),
26381 &formatCount,
26382 reinterpret_cast<VkOpticalFlowImageFormatPropertiesNV *>( imageFormatProperties.data() ) ) );
26383 }
26384 } while ( result == Result::eIncomplete );
26385 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getOpticalFlowImageFormatsNV" );
26386 VULKAN_HPP_ASSERT( formatCount <= imageFormatProperties.size() );
26387 if ( formatCount < imageFormatProperties.size() )
26388 {
26389 imageFormatProperties.resize( formatCount );
26390 }
26391 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) );
26392 }
26393
26394 // wrapper function for command vkCreateOpticalFlowSessionNV, see
26395 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html
26396 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<OpticalFlowSessionNV>::type
26397 Device::createOpticalFlowSessionNV( OpticalFlowSessionCreateInfoNV const & createInfo,
26398 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
26399 {
26400 VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session;
26401 Result result =
26402 static_cast<Result>( getDispatcher()->vkCreateOpticalFlowSessionNV( static_cast<VkDevice>( m_device ),
26403 reinterpret_cast<const VkOpticalFlowSessionCreateInfoNV *>( &createInfo ),
26404 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26405 reinterpret_cast<VkOpticalFlowSessionNV *>( &session ) ) );
26406 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createOpticalFlowSessionNV" );
26407 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
26408 result, OpticalFlowSessionNV( *this, *reinterpret_cast<VkOpticalFlowSessionNV *>( &session ), allocator ) );
26409 }
26410
26411 // wrapper function for command vkBindOpticalFlowSessionImageNV, see
26412 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html
26413 VULKAN_HPP_INLINE typename ResultValueType<void>::type
26414 OpticalFlowSessionNV::bindImage( OpticalFlowSessionBindingPointNV bindingPoint, VULKAN_HPP_NAMESPACE::ImageView view, ImageLayout layout ) const
26415 {
26416 VULKAN_HPP_ASSERT( getDispatcher()->vkBindOpticalFlowSessionImageNV && "Function <vkBindOpticalFlowSessionImageNV> requires <VK_NV_optical_flow>" );
26417
26418 Result result = static_cast<Result>( getDispatcher()->vkBindOpticalFlowSessionImageNV( static_cast<VkDevice>( m_device ),
26419 static_cast<VkOpticalFlowSessionNV>( m_opticalFlowSessionNV ),
26420 static_cast<VkOpticalFlowSessionBindingPointNV>( bindingPoint ),
26421 static_cast<VkImageView>( view ),
26422 static_cast<VkImageLayout>( layout ) ) );
26423 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::OpticalFlowSessionNV::bindImage" );
26424
26425 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
26426 }
26427
26428 // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html
26429 VULKAN_HPP_INLINE void CommandBuffer::opticalFlowExecuteNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session,
26430 const OpticalFlowExecuteInfoNV & executeInfo ) const VULKAN_HPP_NOEXCEPT
26431 {
26432 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdOpticalFlowExecuteNV && "Function <vkCmdOpticalFlowExecuteNV> requires <VK_NV_optical_flow>" );
26433
26434 getDispatcher()->vkCmdOpticalFlowExecuteNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
26435 static_cast<VkOpticalFlowSessionNV>( session ),
26436 reinterpret_cast<const VkOpticalFlowExecuteInfoNV *>( &executeInfo ) );
26437 }
26438
26439 //=== VK_KHR_maintenance5 ===
26440
26441 // wrapper function for command vkCmdBindIndexBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2KHR.html
26442 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer2KHR( VULKAN_HPP_NAMESPACE::Buffer buffer,
26443 DeviceSize offset,
26444 DeviceSize size,
26445 IndexType indexType ) const VULKAN_HPP_NOEXCEPT
26446 {
26447 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer2KHR &&
26448 "Function <vkCmdBindIndexBuffer2KHR> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
26449
26450 getDispatcher()->vkCmdBindIndexBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
26451 static_cast<VkBuffer>( buffer ),
26452 static_cast<VkDeviceSize>( offset ),
26453 static_cast<VkDeviceSize>( size ),
26454 static_cast<VkIndexType>( indexType ) );
26455 }
26456
26457 // wrapper function for command vkGetRenderingAreaGranularityKHR, see
26458 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html
26459 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D
26460 Device::getRenderingAreaGranularityKHR( const RenderingAreaInfo & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT
26461 {
26462 VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderingAreaGranularityKHR &&
26463 "Function <vkGetRenderingAreaGranularityKHR> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
26464
26465 Extent2D granularity;
26466 getDispatcher()->vkGetRenderingAreaGranularityKHR( static_cast<VkDevice>( m_device ),
26467 reinterpret_cast<const VkRenderingAreaInfo *>( &renderingAreaInfo ),
26468 reinterpret_cast<VkExtent2D *>( &granularity ) );
26469
26470 return granularity;
26471 }
26472
26473 // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see
26474 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html
26475 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2
26476 Device::getImageSubresourceLayoutKHR( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT
26477 {
26478 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR &&
26479 "Function <vkGetDeviceImageSubresourceLayoutKHR> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
26480
26481 SubresourceLayout2 layout;
26482 getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR( static_cast<VkDevice>( m_device ),
26483 reinterpret_cast<const VkDeviceImageSubresourceInfo *>( &info ),
26484 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
26485
26486 return layout;
26487 }
26488
26489 // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see
26490 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html
26491 template <typename X, typename Y, typename... Z>
26492 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
26493 Device::getImageSubresourceLayoutKHR( const DeviceImageSubresourceInfo & info ) const VULKAN_HPP_NOEXCEPT
26494 {
26495 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR &&
26496 "Function <vkGetDeviceImageSubresourceLayoutKHR> requires <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
26497
26498 StructureChain<X, Y, Z...> structureChain;
26499 SubresourceLayout2 & layout = structureChain.template get<SubresourceLayout2>();
26500 getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR( static_cast<VkDevice>( m_device ),
26501 reinterpret_cast<const VkDeviceImageSubresourceInfo *>( &info ),
26502 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
26503
26504 return structureChain;
26505 }
26506
26507 // wrapper function for command vkGetImageSubresourceLayout2KHR, see
26508 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html
26509 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Image::getSubresourceLayout2KHR( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT
26510 {
26511 VULKAN_HPP_ASSERT(
26512 getDispatcher()->vkGetImageSubresourceLayout2KHR &&
26513 "Function <vkGetImageSubresourceLayout2KHR> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
26514
26515 SubresourceLayout2 layout;
26516 getDispatcher()->vkGetImageSubresourceLayout2KHR( static_cast<VkDevice>( m_device ),
26517 static_cast<VkImage>( m_image ),
26518 reinterpret_cast<const VkImageSubresource2 *>( &subresource ),
26519 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
26520
26521 return layout;
26522 }
26523
26524 // wrapper function for command vkGetImageSubresourceLayout2KHR, see
26525 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html
26526 template <typename X, typename Y, typename... Z>
26527 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
26528 Image::getSubresourceLayout2KHR( const ImageSubresource2 & subresource ) const VULKAN_HPP_NOEXCEPT
26529 {
26530 VULKAN_HPP_ASSERT(
26531 getDispatcher()->vkGetImageSubresourceLayout2KHR &&
26532 "Function <vkGetImageSubresourceLayout2KHR> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5> or <VK_VERSION_1_4>" );
26533
26534 StructureChain<X, Y, Z...> structureChain;
26535 SubresourceLayout2 & layout = structureChain.template get<SubresourceLayout2>();
26536 getDispatcher()->vkGetImageSubresourceLayout2KHR( static_cast<VkDevice>( m_device ),
26537 static_cast<VkImage>( m_image ),
26538 reinterpret_cast<const VkImageSubresource2 *>( &subresource ),
26539 reinterpret_cast<VkSubresourceLayout2 *>( &layout ) );
26540
26541 return structureChain;
26542 }
26543
26544 //=== VK_AMD_anti_lag ===
26545
26546 // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html
26547 VULKAN_HPP_INLINE void Device::antiLagUpdateAMD( const AntiLagDataAMD & data ) const VULKAN_HPP_NOEXCEPT
26548 {
26549 VULKAN_HPP_ASSERT( getDispatcher()->vkAntiLagUpdateAMD && "Function <vkAntiLagUpdateAMD> requires <VK_AMD_anti_lag>" );
26550
26551 getDispatcher()->vkAntiLagUpdateAMD( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAntiLagDataAMD *>( &data ) );
26552 }
26553
26554 //=== VK_KHR_present_wait2 ===
26555
26556 // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html
26557 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::waitForPresent2( const PresentWait2InfoKHR & presentWait2Info ) const
26558 {
26559 VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresent2KHR && "Function <vkWaitForPresent2KHR> requires <VK_KHR_present_wait2>" );
26560
26561 Result result = static_cast<Result>( getDispatcher()->vkWaitForPresent2KHR( static_cast<VkDevice>( m_device ),
26562 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
26563 reinterpret_cast<const VkPresentWait2InfoKHR *>( &presentWait2Info ) ) );
26564
26565 # if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS )
26566 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
26567 VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent2",
26568 { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } );
26569 # else
26570 VULKAN_HPP_NAMESPACE::detail::resultCheck(
26571 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent2", { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR } );
26572 # endif
26573
26574 return static_cast<Result>( result );
26575 }
26576
26577 //=== VK_EXT_shader_object ===
26578
26579 // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html
26580 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<ShaderEXT>>::type
26581 Device::createShadersEXT( ArrayProxy<ShaderCreateInfoEXT> const & createInfos, Optional<const AllocationCallbacks> allocator ) const
26582 {
26583 std::vector<VULKAN_HPP_NAMESPACE::ShaderEXT> shaders( createInfos.size() );
26584 Result result = static_cast<Result>( getDispatcher()->vkCreateShadersEXT( static_cast<VkDevice>( m_device ),
26585 createInfos.size(),
26586 reinterpret_cast<const VkShaderCreateInfoEXT *>( createInfos.data() ),
26587 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26588 reinterpret_cast<VkShaderEXT *>( shaders.data() ) ) );
26589 VULKAN_HPP_NAMESPACE::detail::resultCheck(
26590 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShadersEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } );
26591 std::vector<ShaderEXT> shadersRAII;
26592 if ( result == Result::eSuccess )
26593 {
26594 shadersRAII.reserve( shaders.size() );
26595 for ( auto & shader : shaders )
26596 {
26597 shadersRAII.emplace_back( *this, *reinterpret_cast<VkShaderEXT *>( &shader ), allocator, result );
26598 }
26599 }
26600 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( shadersRAII ) );
26601 }
26602
26603 // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html
26604 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ShaderEXT>::type
26605 Device::createShaderEXT( ShaderCreateInfoEXT const & createInfo,
26606 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
26607 {
26608 VULKAN_HPP_NAMESPACE::ShaderEXT shader;
26609 Result result = static_cast<Result>( getDispatcher()->vkCreateShadersEXT( static_cast<VkDevice>( m_device ),
26610 1,
26611 reinterpret_cast<const VkShaderCreateInfoEXT *>( &createInfo ),
26612 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26613 reinterpret_cast<VkShaderEXT *>( &shader ) ) );
26614 VULKAN_HPP_NAMESPACE::detail::resultCheck(
26615 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShaderEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } );
26616 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, ShaderEXT( *this, *reinterpret_cast<VkShaderEXT *>( &shader ), allocator, result ) );
26617 }
26618
26619 // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html
26620 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t>>::type ShaderEXT::getBinaryData() const
26621 {
26622 VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderBinaryDataEXT && "Function <vkGetShaderBinaryDataEXT> requires <VK_EXT_shader_object>" );
26623
26624 std::vector<uint8_t> data;
26625 size_t dataSize;
26626 Result result;
26627 do
26628 {
26629 result = static_cast<Result>(
26630 getDispatcher()->vkGetShaderBinaryDataEXT( static_cast<VkDevice>( m_device ), static_cast<VkShaderEXT>( m_shaderEXT ), &dataSize, nullptr ) );
26631 if ( ( result == Result::eSuccess ) && dataSize )
26632 {
26633 data.resize( dataSize );
26634 result = static_cast<Result>( getDispatcher()->vkGetShaderBinaryDataEXT(
26635 static_cast<VkDevice>( m_device ), static_cast<VkShaderEXT>( m_shaderEXT ), &dataSize, reinterpret_cast<void *>( data.data() ) ) );
26636 }
26637 } while ( result == Result::eIncomplete );
26638 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ShaderEXT::getBinaryData" );
26639 VULKAN_HPP_ASSERT( dataSize <= data.size() );
26640 if ( dataSize < data.size() )
26641 {
26642 data.resize( dataSize );
26643 }
26644 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) );
26645 }
26646
26647 // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html
26648 VULKAN_HPP_INLINE void CommandBuffer::bindShadersEXT( ArrayProxy<const ShaderStageFlagBits> const & stages,
26649 ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders ) const
26650 {
26651 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadersEXT && "Function <vkCmdBindShadersEXT> requires <VK_EXT_shader_object>" );
26652 # ifdef VULKAN_HPP_NO_EXCEPTIONS
26653 VULKAN_HPP_ASSERT( stages.size() == shaders.size() );
26654 # else
26655 if ( stages.size() != shaders.size() )
26656 {
26657 throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindShadersEXT: stages.size() != shaders.size()" );
26658 }
26659 # endif /*VULKAN_HPP_NO_EXCEPTIONS*/
26660
26661 getDispatcher()->vkCmdBindShadersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
26662 stages.size(),
26663 reinterpret_cast<const VkShaderStageFlagBits *>( stages.data() ),
26664 reinterpret_cast<const VkShaderEXT *>( shaders.data() ) );
26665 }
26666
26667 // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html
26668 VULKAN_HPP_INLINE void CommandBuffer::setDepthClampRangeEXT( DepthClampModeEXT depthClampMode,
26669 Optional<const DepthClampRangeEXT> depthClampRange ) const VULKAN_HPP_NOEXCEPT
26670 {
26671 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClampRangeEXT &&
26672 "Function <vkCmdSetDepthClampRangeEXT> requires <VK_EXT_depth_clamp_control> or <VK_EXT_shader_object>" );
26673
26674 getDispatcher()->vkCmdSetDepthClampRangeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
26675 static_cast<VkDepthClampModeEXT>( depthClampMode ),
26676 reinterpret_cast<const VkDepthClampRangeEXT *>( depthClampRange.get() ) );
26677 }
26678
26679 //=== VK_KHR_pipeline_binary ===
26680
26681 // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html
26682 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<PipelineBinaryKHR>>::type
26683 Device::createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const & createInfo, Optional<const AllocationCallbacks> allocator ) const
26684 {
26685 std::vector<VULKAN_HPP_NAMESPACE::PipelineBinaryKHR> pipelineBinaries;
26686 PipelineBinaryHandlesInfoKHR binaries;
26687 Result result;
26688 if ( createInfo.pKeysAndDataInfo )
26689 {
26690 VULKAN_HPP_ASSERT( !createInfo.pipeline && !createInfo.pPipelineCreateInfo );
26691 pipelineBinaries.resize( createInfo.pKeysAndDataInfo->binaryCount );
26692 binaries.pipelineBinaryCount = createInfo.pKeysAndDataInfo->binaryCount;
26693 binaries.pPipelineBinaries = pipelineBinaries.data();
26694 result = static_cast<Result>( getDispatcher()->vkCreatePipelineBinariesKHR( static_cast<VkDevice>( m_device ),
26695 reinterpret_cast<const VkPipelineBinaryCreateInfoKHR *>( &createInfo ),
26696 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26697 reinterpret_cast<VkPipelineBinaryHandlesInfoKHR *>( &binaries ) ) );
26698 }
26699 else
26700 {
26701 VULKAN_HPP_ASSERT( !createInfo.pipeline ^ !createInfo.pPipelineCreateInfo );
26702 result = static_cast<Result>( getDispatcher()->vkCreatePipelineBinariesKHR( static_cast<VkDevice>( m_device ),
26703 reinterpret_cast<const VkPipelineBinaryCreateInfoKHR *>( &createInfo ),
26704 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26705 reinterpret_cast<VkPipelineBinaryHandlesInfoKHR *>( &binaries ) ) );
26706 if ( result == Result::eSuccess )
26707 {
26708 pipelineBinaries.resize( binaries.pipelineBinaryCount );
26709 binaries.pPipelineBinaries = pipelineBinaries.data();
26710 result = static_cast<Result>( getDispatcher()->vkCreatePipelineBinariesKHR( static_cast<VkDevice>( m_device ),
26711 reinterpret_cast<const VkPipelineBinaryCreateInfoKHR *>( &createInfo ),
26712 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
26713 reinterpret_cast<VkPipelineBinaryHandlesInfoKHR *>( &binaries ) ) );
26714 }
26715 }
26716
26717 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
26718 VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPipelineBinariesKHR",
26719 { Result::eSuccess, Result::eIncomplete, Result::ePipelineBinaryMissingKHR } );
26720 std::vector<PipelineBinaryKHR> pipelineBinariesRAII;
26721 if ( result == Result::eSuccess )
26722 {
26723 pipelineBinariesRAII.reserve( pipelineBinaries.size() );
26724 for ( auto & pipelineBinary : pipelineBinaries )
26725 {
26726 pipelineBinariesRAII.emplace_back( *this, *reinterpret_cast<VkPipelineBinaryKHR *>( &pipelineBinary ), allocator, result );
26727 }
26728 }
26729 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelineBinariesRAII ) );
26730 }
26731
26732 // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html
26733 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<PipelineBinaryKeyKHR>::type
26734 Device::getPipelineKeyKHR( Optional<const PipelineCreateInfoKHR> pipelineCreateInfo ) const
26735 {
26736 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineKeyKHR && "Function <vkGetPipelineKeyKHR> requires <VK_KHR_pipeline_binary>" );
26737
26738 PipelineBinaryKeyKHR pipelineKey;
26739 Result result = static_cast<Result>( getDispatcher()->vkGetPipelineKeyKHR( static_cast<VkDevice>( m_device ),
26740 reinterpret_cast<const VkPipelineCreateInfoKHR *>( pipelineCreateInfo.get() ),
26741 reinterpret_cast<VkPipelineBinaryKeyKHR *>( &pipelineKey ) ) );
26742 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineKeyKHR" );
26743
26744 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelineKey ) );
26745 }
26746
26747 // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html
26748 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<PipelineBinaryKeyKHR, std::vector<uint8_t>>>::type
26749 Device::getPipelineBinaryDataKHR( const PipelineBinaryDataInfoKHR & info ) const
26750 {
26751 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineBinaryDataKHR && "Function <vkGetPipelineBinaryDataKHR> requires <VK_KHR_pipeline_binary>" );
26752
26753 std::pair<PipelineBinaryKeyKHR, std::vector<uint8_t>> data_;
26754 PipelineBinaryKeyKHR & pipelineBinaryKey = data_.first;
26755 std::vector<uint8_t> & pipelineBinaryData = data_.second;
26756 size_t pipelineBinaryDataSize;
26757 Result result = static_cast<Result>( getDispatcher()->vkGetPipelineBinaryDataKHR( static_cast<VkDevice>( m_device ),
26758 reinterpret_cast<const VkPipelineBinaryDataInfoKHR *>( &info ),
26759 reinterpret_cast<VkPipelineBinaryKeyKHR *>( &pipelineBinaryKey ),
26760 &pipelineBinaryDataSize,
26761 nullptr ) );
26762 if ( result == Result::eSuccess )
26763 {
26764 pipelineBinaryData.resize( pipelineBinaryDataSize );
26765 result = static_cast<Result>( getDispatcher()->vkGetPipelineBinaryDataKHR( static_cast<VkDevice>( m_device ),
26766 reinterpret_cast<const VkPipelineBinaryDataInfoKHR *>( &info ),
26767 reinterpret_cast<VkPipelineBinaryKeyKHR *>( &pipelineBinaryKey ),
26768 &pipelineBinaryDataSize,
26769 reinterpret_cast<void *>( pipelineBinaryData.data() ) ) );
26770 }
26771
26772 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineBinaryDataKHR" );
26773
26774 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
26775 }
26776
26777 // wrapper function for command vkReleaseCapturedPipelineDataKHR, see
26778 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html
26779 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::releaseCapturedPipelineDataKHR( const ReleaseCapturedPipelineDataInfoKHR & info,
26780 Optional<const AllocationCallbacks> allocator ) const
26781 {
26782 VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseCapturedPipelineDataKHR && "Function <vkReleaseCapturedPipelineDataKHR> requires <VK_KHR_pipeline_binary>" );
26783
26784 Result result =
26785 static_cast<Result>( getDispatcher()->vkReleaseCapturedPipelineDataKHR( static_cast<VkDevice>( m_device ),
26786 reinterpret_cast<const VkReleaseCapturedPipelineDataInfoKHR *>( &info ),
26787 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ) ) );
26788 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::releaseCapturedPipelineDataKHR" );
26789
26790 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
26791 }
26792
26793 //=== VK_QCOM_tile_properties ===
26794
26795 // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see
26796 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html
26797 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<TilePropertiesQCOM>>::type Framebuffer::getTilePropertiesQCOM() const
26798 {
26799 VULKAN_HPP_ASSERT( getDispatcher()->vkGetFramebufferTilePropertiesQCOM &&
26800 "Function <vkGetFramebufferTilePropertiesQCOM> requires <VK_QCOM_tile_properties>" );
26801
26802 std::vector<TilePropertiesQCOM> properties;
26803 uint32_t propertiesCount;
26804 Result result;
26805 do
26806 {
26807 result = static_cast<Result>( getDispatcher()->vkGetFramebufferTilePropertiesQCOM(
26808 static_cast<VkDevice>( m_device ), static_cast<VkFramebuffer>( m_framebuffer ), &propertiesCount, nullptr ) );
26809 if ( ( result == Result::eSuccess ) && propertiesCount )
26810 {
26811 properties.resize( propertiesCount );
26812 result = static_cast<Result>( getDispatcher()->vkGetFramebufferTilePropertiesQCOM( static_cast<VkDevice>( m_device ),
26813 static_cast<VkFramebuffer>( m_framebuffer ),
26814 &propertiesCount,
26815 reinterpret_cast<VkTilePropertiesQCOM *>( properties.data() ) ) );
26816 }
26817 } while ( result == Result::eIncomplete );
26818 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Framebuffer::getTilePropertiesQCOM" );
26819 VULKAN_HPP_ASSERT( propertiesCount <= properties.size() );
26820 if ( propertiesCount < properties.size() )
26821 {
26822 properties.resize( propertiesCount );
26823 }
26824 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
26825 }
26826
26827 // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see
26828 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html
26829 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<TilePropertiesQCOM>::type
26830 Device::getDynamicRenderingTilePropertiesQCOM( const RenderingInfo & renderingInfo ) const
26831 {
26832 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDynamicRenderingTilePropertiesQCOM &&
26833 "Function <vkGetDynamicRenderingTilePropertiesQCOM> requires <VK_QCOM_tile_properties>" );
26834
26835 TilePropertiesQCOM properties;
26836 Result result =
26837 static_cast<Result>( getDispatcher()->vkGetDynamicRenderingTilePropertiesQCOM( static_cast<VkDevice>( m_device ),
26838 reinterpret_cast<const VkRenderingInfo *>( &renderingInfo ),
26839 reinterpret_cast<VkTilePropertiesQCOM *>( &properties ) ) );
26840 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getDynamicRenderingTilePropertiesQCOM" );
26841
26842 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
26843 }
26844
26845 //=== VK_KHR_swapchain_maintenance1 ===
26846
26847 // wrapper function for command vkReleaseSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html
26848 VULKAN_HPP_INLINE typename ResultValueType<void>::type Device::releaseSwapchainImagesKHR( const ReleaseSwapchainImagesInfoKHR & releaseInfo ) const
26849 {
26850 VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseSwapchainImagesKHR &&
26851 "Function <vkReleaseSwapchainImagesKHR> requires <VK_EXT_swapchain_maintenance1> or <VK_KHR_swapchain_maintenance1>" );
26852
26853 Result result = static_cast<Result>( getDispatcher()->vkReleaseSwapchainImagesKHR(
26854 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkReleaseSwapchainImagesInfoKHR *>( &releaseInfo ) ) );
26855 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::releaseSwapchainImagesKHR" );
26856
26857 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
26858 }
26859
26860 //=== VK_NV_cooperative_vector ===
26861
26862 // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see
26863 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html
26864 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<CooperativeVectorPropertiesNV>>::type
26865 PhysicalDevice::getCooperativeVectorPropertiesNV() const
26866 {
26867 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeVectorPropertiesNV &&
26868 "Function <vkGetPhysicalDeviceCooperativeVectorPropertiesNV> requires <VK_NV_cooperative_vector>" );
26869
26870 std::vector<CooperativeVectorPropertiesNV> properties;
26871 uint32_t propertyCount;
26872 Result result;
26873 do
26874 {
26875 result = static_cast<Result>(
26876 getDispatcher()->vkGetPhysicalDeviceCooperativeVectorPropertiesNV( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
26877 if ( ( result == Result::eSuccess ) && propertyCount )
26878 {
26879 properties.resize( propertyCount );
26880 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeVectorPropertiesNV(
26881 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkCooperativeVectorPropertiesNV *>( properties.data() ) ) );
26882 }
26883 } while ( result == Result::eIncomplete );
26884 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeVectorPropertiesNV" );
26885 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
26886 if ( propertyCount < properties.size() )
26887 {
26888 properties.resize( propertyCount );
26889 }
26890 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
26891 }
26892
26893 // wrapper function for command vkConvertCooperativeVectorMatrixNV, see
26894 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html
26895 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::convertCooperativeVectorMatrixNV( const ConvertCooperativeVectorMatrixInfoNV & info ) const
26896 {
26897 VULKAN_HPP_ASSERT( getDispatcher()->vkConvertCooperativeVectorMatrixNV &&
26898 "Function <vkConvertCooperativeVectorMatrixNV> requires <VK_NV_cooperative_vector>" );
26899
26900 Result result = static_cast<Result>( getDispatcher()->vkConvertCooperativeVectorMatrixNV(
26901 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkConvertCooperativeVectorMatrixInfoNV *>( &info ) ) );
26902 VULKAN_HPP_NAMESPACE::detail::resultCheck(
26903 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::convertCooperativeVectorMatrixNV", { Result::eSuccess, Result::eIncomplete } );
26904
26905 return static_cast<Result>( result );
26906 }
26907
26908 // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see
26909 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html
26910 VULKAN_HPP_INLINE void
26911 CommandBuffer::convertCooperativeVectorMatrixNV( ArrayProxy<const ConvertCooperativeVectorMatrixInfoNV> const & infos ) const VULKAN_HPP_NOEXCEPT
26912 {
26913 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdConvertCooperativeVectorMatrixNV &&
26914 "Function <vkCmdConvertCooperativeVectorMatrixNV> requires <VK_NV_cooperative_vector>" );
26915
26916 getDispatcher()->vkCmdConvertCooperativeVectorMatrixNV(
26917 static_cast<VkCommandBuffer>( m_commandBuffer ), infos.size(), reinterpret_cast<const VkConvertCooperativeVectorMatrixInfoNV *>( infos.data() ) );
26918 }
26919
26920 //=== VK_NV_low_latency2 ===
26921
26922 // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html
26923 VULKAN_HPP_INLINE typename ResultValueType<void>::type SwapchainKHR::setLatencySleepModeNV( const LatencySleepModeInfoNV & sleepModeInfo ) const
26924 {
26925 VULKAN_HPP_ASSERT( getDispatcher()->vkSetLatencySleepModeNV && "Function <vkSetLatencySleepModeNV> requires <VK_NV_low_latency2>" );
26926
26927 Result result = static_cast<Result>( getDispatcher()->vkSetLatencySleepModeNV( static_cast<VkDevice>( m_device ),
26928 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
26929 reinterpret_cast<const VkLatencySleepModeInfoNV *>( &sleepModeInfo ) ) );
26930 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::setLatencySleepModeNV" );
26931
26932 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
26933 }
26934
26935 // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html
26936 VULKAN_HPP_INLINE typename ResultValueType<void>::type SwapchainKHR::latencySleepNV( const LatencySleepInfoNV & sleepInfo ) const
26937 {
26938 VULKAN_HPP_ASSERT( getDispatcher()->vkLatencySleepNV && "Function <vkLatencySleepNV> requires <VK_NV_low_latency2>" );
26939
26940 Result result = static_cast<Result>( getDispatcher()->vkLatencySleepNV(
26941 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), reinterpret_cast<const VkLatencySleepInfoNV *>( &sleepInfo ) ) );
26942 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::latencySleepNV" );
26943
26944 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
26945 }
26946
26947 // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html
26948 VULKAN_HPP_INLINE void SwapchainKHR::setLatencyMarkerNV( const SetLatencyMarkerInfoNV & latencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT
26949 {
26950 VULKAN_HPP_ASSERT( getDispatcher()->vkSetLatencyMarkerNV && "Function <vkSetLatencyMarkerNV> requires <VK_NV_low_latency2>" );
26951
26952 getDispatcher()->vkSetLatencyMarkerNV( static_cast<VkDevice>( m_device ),
26953 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
26954 reinterpret_cast<const VkSetLatencyMarkerInfoNV *>( &latencyMarkerInfo ) );
26955 }
26956
26957 // wrapper function for command vkGetLatencyTimingsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetLatencyTimingsNV.html
26958 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> SwapchainKHR::getLatencyTimingsNV() const
26959 {
26960 VULKAN_HPP_ASSERT( getDispatcher()->vkGetLatencyTimingsNV && "Function <vkGetLatencyTimingsNV> requires <VK_NV_low_latency2>" );
26961
26962 std::vector<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> timings;
26963 GetLatencyMarkerInfoNV latencyMarkerInfo;
26964 getDispatcher()->vkGetLatencyTimingsNV(
26965 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), reinterpret_cast<VkGetLatencyMarkerInfoNV *>( &latencyMarkerInfo ) );
26966 timings.resize( latencyMarkerInfo.timingCount );
26967 latencyMarkerInfo.pTimings = timings.data();
26968 getDispatcher()->vkGetLatencyTimingsNV(
26969 static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), reinterpret_cast<VkGetLatencyMarkerInfoNV *>( &latencyMarkerInfo ) );
26970
26971 return timings;
26972 }
26973
26974 // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html
26975 VULKAN_HPP_INLINE void Queue::notifyOutOfBandNV( const OutOfBandQueueTypeInfoNV & queueTypeInfo ) const VULKAN_HPP_NOEXCEPT
26976 {
26977 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueNotifyOutOfBandNV && "Function <vkQueueNotifyOutOfBandNV> requires <VK_NV_low_latency2>" );
26978
26979 getDispatcher()->vkQueueNotifyOutOfBandNV( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkOutOfBandQueueTypeInfoNV *>( &queueTypeInfo ) );
26980 }
26981
26982 //=== VK_KHR_cooperative_matrix ===
26983
26984 // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see
26985 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html
26986 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<CooperativeMatrixPropertiesKHR>>::type
26987 PhysicalDevice::getCooperativeMatrixPropertiesKHR() const
26988 {
26989 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR &&
26990 "Function <vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR> requires <VK_KHR_cooperative_matrix>" );
26991
26992 std::vector<CooperativeMatrixPropertiesKHR> properties;
26993 uint32_t propertyCount;
26994 Result result;
26995 do
26996 {
26997 result = static_cast<Result>(
26998 getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
26999 if ( ( result == Result::eSuccess ) && propertyCount )
27000 {
27001 properties.resize( propertyCount );
27002 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(
27003 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkCooperativeMatrixPropertiesKHR *>( properties.data() ) ) );
27004 }
27005 } while ( result == Result::eIncomplete );
27006 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesKHR" );
27007 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
27008 if ( propertyCount < properties.size() )
27009 {
27010 properties.resize( propertyCount );
27011 }
27012 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
27013 }
27014
27015 //=== VK_ARM_data_graph ===
27016
27017 // wrapper function for command vkCreateDataGraphPipelinesARM, see
27018 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html
27019 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline>>::type
27020 Device::createDataGraphPipelinesARM( Optional<const DeferredOperationKHR> const & deferredOperation,
27021 Optional<const PipelineCache> const & pipelineCache,
27022 ArrayProxy<DataGraphPipelineCreateInfoARM> const & createInfos,
27023 Optional<const AllocationCallbacks> allocator ) const
27024 {
27025 std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
27026 Result result =
27027 static_cast<Result>( getDispatcher()->vkCreateDataGraphPipelinesARM( static_cast<VkDevice>( m_device ),
27028 deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
27029 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
27030 createInfos.size(),
27031 reinterpret_cast<const VkDataGraphPipelineCreateInfoARM *>( createInfos.data() ),
27032 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27033 reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
27034 VULKAN_HPP_NAMESPACE::detail::resultCheck(
27035 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDataGraphPipelinesARM", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
27036 std::vector<Pipeline> pipelinesRAII;
27037 if ( result == Result::eSuccess )
27038 {
27039 pipelinesRAII.reserve( pipelines.size() );
27040 for ( auto & pipeline : pipelines )
27041 {
27042 pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
27043 }
27044 }
27045 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) );
27046 }
27047
27048 // wrapper function for command vkCreateDataGraphPipelinesARM, see
27049 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html
27050 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<Pipeline>::type
27051 Device::createDataGraphPipelineARM( Optional<const DeferredOperationKHR> const & deferredOperation,
27052 Optional<const PipelineCache> const & pipelineCache,
27053 DataGraphPipelineCreateInfoARM const & createInfo,
27054 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
27055 {
27056 VULKAN_HPP_NAMESPACE::Pipeline pipeline;
27057 Result result =
27058 static_cast<Result>( getDispatcher()->vkCreateDataGraphPipelinesARM( static_cast<VkDevice>( m_device ),
27059 deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
27060 pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
27061 1,
27062 reinterpret_cast<const VkDataGraphPipelineCreateInfoARM *>( &createInfo ),
27063 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27064 reinterpret_cast<VkPipeline *>( &pipeline ) ) );
27065 VULKAN_HPP_NAMESPACE::detail::resultCheck(
27066 result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDataGraphPipelineARM", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } );
27067 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result ) );
27068 }
27069
27070 // wrapper function for command vkCreateDataGraphPipelineSessionARM, see
27071 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html
27072 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<DataGraphPipelineSessionARM>::type
27073 Device::createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const & createInfo,
27074 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
27075 {
27076 VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM session;
27077 Result result = static_cast<Result>(
27078 getDispatcher()->vkCreateDataGraphPipelineSessionARM( static_cast<VkDevice>( m_device ),
27079 reinterpret_cast<const VkDataGraphPipelineSessionCreateInfoARM *>( &createInfo ),
27080 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27081 reinterpret_cast<VkDataGraphPipelineSessionARM *>( &session ) ) );
27082 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDataGraphPipelineSessionARM" );
27083 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
27084 result, DataGraphPipelineSessionARM( *this, *reinterpret_cast<VkDataGraphPipelineSessionARM *>( &session ), allocator ) );
27085 }
27086
27087 // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see
27088 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html
27089 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataGraphPipelineSessionBindPointRequirementARM>>::type
27090 Device::getDataGraphPipelineSessionBindPointRequirementsARM( const DataGraphPipelineSessionBindPointRequirementsInfoARM & info ) const
27091 {
27092 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineSessionBindPointRequirementsARM &&
27093 "Function <vkGetDataGraphPipelineSessionBindPointRequirementsARM> requires <VK_ARM_data_graph>" );
27094
27095 std::vector<DataGraphPipelineSessionBindPointRequirementARM> bindPointRequirements;
27096 uint32_t bindPointRequirementCount;
27097 Result result;
27098 do
27099 {
27100 result = static_cast<Result>( getDispatcher()->vkGetDataGraphPipelineSessionBindPointRequirementsARM(
27101 static_cast<VkDevice>( m_device ),
27102 reinterpret_cast<const VkDataGraphPipelineSessionBindPointRequirementsInfoARM *>( &info ),
27103 &bindPointRequirementCount,
27104 nullptr ) );
27105 if ( ( result == Result::eSuccess ) && bindPointRequirementCount )
27106 {
27107 bindPointRequirements.resize( bindPointRequirementCount );
27108 result = static_cast<Result>( getDispatcher()->vkGetDataGraphPipelineSessionBindPointRequirementsARM(
27109 static_cast<VkDevice>( m_device ),
27110 reinterpret_cast<const VkDataGraphPipelineSessionBindPointRequirementsInfoARM *>( &info ),
27111 &bindPointRequirementCount,
27112 reinterpret_cast<VkDataGraphPipelineSessionBindPointRequirementARM *>( bindPointRequirements.data() ) ) );
27113 }
27114 } while ( result == Result::eIncomplete );
27115 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getDataGraphPipelineSessionBindPointRequirementsARM" );
27116 VULKAN_HPP_ASSERT( bindPointRequirementCount <= bindPointRequirements.size() );
27117 if ( bindPointRequirementCount < bindPointRequirements.size() )
27118 {
27119 bindPointRequirements.resize( bindPointRequirementCount );
27120 }
27121 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( bindPointRequirements ) );
27122 }
27123
27124 // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see
27125 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html
27126 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
27127 Device::getDataGraphPipelineSessionMemoryRequirementsARM( const DataGraphPipelineSessionMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT
27128 {
27129 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM &&
27130 "Function <vkGetDataGraphPipelineSessionMemoryRequirementsARM> requires <VK_ARM_data_graph>" );
27131
27132 MemoryRequirements2 memoryRequirements;
27133 getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM(
27134 static_cast<VkDevice>( m_device ),
27135 reinterpret_cast<const VkDataGraphPipelineSessionMemoryRequirementsInfoARM *>( &info ),
27136 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
27137
27138 return memoryRequirements;
27139 }
27140
27141 // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see
27142 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html
27143 template <typename X, typename Y, typename... Z>
27144 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
27145 Device::getDataGraphPipelineSessionMemoryRequirementsARM( const DataGraphPipelineSessionMemoryRequirementsInfoARM & info ) const VULKAN_HPP_NOEXCEPT
27146 {
27147 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM &&
27148 "Function <vkGetDataGraphPipelineSessionMemoryRequirementsARM> requires <VK_ARM_data_graph>" );
27149
27150 StructureChain<X, Y, Z...> structureChain;
27151 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
27152 getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM(
27153 static_cast<VkDevice>( m_device ),
27154 reinterpret_cast<const VkDataGraphPipelineSessionMemoryRequirementsInfoARM *>( &info ),
27155 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
27156
27157 return structureChain;
27158 }
27159
27160 // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see
27161 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html
27162 VULKAN_HPP_INLINE typename ResultValueType<void>::type
27163 Device::bindDataGraphPipelineSessionMemoryARM( ArrayProxy<const BindDataGraphPipelineSessionMemoryInfoARM> const & bindInfos ) const
27164 {
27165 VULKAN_HPP_ASSERT( getDispatcher()->vkBindDataGraphPipelineSessionMemoryARM &&
27166 "Function <vkBindDataGraphPipelineSessionMemoryARM> requires <VK_ARM_data_graph>" );
27167
27168 Result result = static_cast<Result>( getDispatcher()->vkBindDataGraphPipelineSessionMemoryARM(
27169 static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindDataGraphPipelineSessionMemoryInfoARM *>( bindInfos.data() ) ) );
27170 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindDataGraphPipelineSessionMemoryARM" );
27171
27172 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
27173 }
27174
27175 // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html
27176 VULKAN_HPP_INLINE void CommandBuffer::dispatchDataGraphARM( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM session,
27177 Optional<const DataGraphPipelineDispatchInfoARM> info ) const VULKAN_HPP_NOEXCEPT
27178 {
27179 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchDataGraphARM && "Function <vkCmdDispatchDataGraphARM> requires <VK_ARM_data_graph>" );
27180
27181 getDispatcher()->vkCmdDispatchDataGraphARM( static_cast<VkCommandBuffer>( m_commandBuffer ),
27182 static_cast<VkDataGraphPipelineSessionARM>( session ),
27183 reinterpret_cast<const VkDataGraphPipelineDispatchInfoARM *>( info.get() ) );
27184 }
27185
27186 // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see
27187 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html
27188 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<DataGraphPipelinePropertyARM>>::type
27189 Device::getDataGraphPipelineAvailablePropertiesARM( const DataGraphPipelineInfoARM & pipelineInfo ) const
27190 {
27191 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineAvailablePropertiesARM &&
27192 "Function <vkGetDataGraphPipelineAvailablePropertiesARM> requires <VK_ARM_data_graph>" );
27193
27194 std::vector<DataGraphPipelinePropertyARM> properties;
27195 uint32_t propertiesCount;
27196 Result result;
27197 do
27198 {
27199 result = static_cast<Result>( getDispatcher()->vkGetDataGraphPipelineAvailablePropertiesARM(
27200 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDataGraphPipelineInfoARM *>( &pipelineInfo ), &propertiesCount, nullptr ) );
27201 if ( ( result == Result::eSuccess ) && propertiesCount )
27202 {
27203 properties.resize( propertiesCount );
27204 result = static_cast<Result>(
27205 getDispatcher()->vkGetDataGraphPipelineAvailablePropertiesARM( static_cast<VkDevice>( m_device ),
27206 reinterpret_cast<const VkDataGraphPipelineInfoARM *>( &pipelineInfo ),
27207 &propertiesCount,
27208 reinterpret_cast<VkDataGraphPipelinePropertyARM *>( properties.data() ) ) );
27209 }
27210 } while ( result == Result::eIncomplete );
27211 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getDataGraphPipelineAvailablePropertiesARM" );
27212 VULKAN_HPP_ASSERT( propertiesCount <= properties.size() );
27213 if ( propertiesCount < properties.size() )
27214 {
27215 properties.resize( propertiesCount );
27216 }
27217 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
27218 }
27219
27220 // wrapper function for command vkGetDataGraphPipelinePropertiesARM, see
27221 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelinePropertiesARM.html
27222 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result
27223 Device::getDataGraphPipelinePropertiesARM( const DataGraphPipelineInfoARM * pPipelineInfo,
27224 uint32_t propertiesCount,
27225 DataGraphPipelinePropertyQueryResultARM * pProperties ) const VULKAN_HPP_NOEXCEPT
27226 {
27227 VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelinePropertiesARM &&
27228 "Function <vkGetDataGraphPipelinePropertiesARM> requires <VK_ARM_data_graph>" );
27229 return static_cast<Result>(
27230 getDispatcher()->vkGetDataGraphPipelinePropertiesARM( static_cast<VkDevice>( m_device ),
27231 reinterpret_cast<const VkDataGraphPipelineInfoARM *>( pPipelineInfo ),
27232 propertiesCount,
27233 reinterpret_cast<VkDataGraphPipelinePropertyQueryResultARM *>( pProperties ) ) );
27234 }
27235
27236 // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see
27237 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html
27238 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<QueueFamilyDataGraphPropertiesARM>>::type
27239 PhysicalDevice::getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex ) const
27240 {
27241 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM &&
27242 "Function <vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM> requires <VK_ARM_data_graph>" );
27243
27244 std::vector<QueueFamilyDataGraphPropertiesARM> queueFamilyDataGraphProperties;
27245 uint32_t queueFamilyDataGraphPropertyCount;
27246 Result result;
27247 do
27248 {
27249 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(
27250 static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &queueFamilyDataGraphPropertyCount, nullptr ) );
27251 if ( ( result == Result::eSuccess ) && queueFamilyDataGraphPropertyCount )
27252 {
27253 queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount );
27254 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(
27255 static_cast<VkPhysicalDevice>( m_physicalDevice ),
27256 queueFamilyIndex,
27257 &queueFamilyDataGraphPropertyCount,
27258 reinterpret_cast<VkQueueFamilyDataGraphPropertiesARM *>( queueFamilyDataGraphProperties.data() ) ) );
27259 }
27260 } while ( result == Result::eIncomplete );
27261 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getQueueFamilyDataGraphPropertiesARM" );
27262 VULKAN_HPP_ASSERT( queueFamilyDataGraphPropertyCount <= queueFamilyDataGraphProperties.size() );
27263 if ( queueFamilyDataGraphPropertyCount < queueFamilyDataGraphProperties.size() )
27264 {
27265 queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount );
27266 }
27267 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( queueFamilyDataGraphProperties ) );
27268 }
27269
27270 // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see
27271 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html
27272 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE QueueFamilyDataGraphProcessingEnginePropertiesARM
27273 PhysicalDevice::getQueueFamilyDataGraphProcessingEnginePropertiesARM(
27274 const PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & queueFamilyDataGraphProcessingEngineInfo ) const VULKAN_HPP_NOEXCEPT
27275 {
27276 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM &&
27277 "Function <vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM> requires <VK_ARM_data_graph>" );
27278
27279 QueueFamilyDataGraphProcessingEnginePropertiesARM queueFamilyDataGraphProcessingEngineProperties;
27280 getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(
27281 static_cast<VkPhysicalDevice>( m_physicalDevice ),
27282 reinterpret_cast<const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM *>( &queueFamilyDataGraphProcessingEngineInfo ),
27283 reinterpret_cast<VkQueueFamilyDataGraphProcessingEnginePropertiesARM *>( &queueFamilyDataGraphProcessingEngineProperties ) );
27284
27285 return queueFamilyDataGraphProcessingEngineProperties;
27286 }
27287
27288 //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
27289
27290 // wrapper function for command vkCmdSetAttachmentFeedbackLoopEnableEXT, see
27291 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAttachmentFeedbackLoopEnableEXT.html
27292 VULKAN_HPP_INLINE void CommandBuffer::setAttachmentFeedbackLoopEnableEXT( ImageAspectFlags aspectMask ) const VULKAN_HPP_NOEXCEPT
27293 {
27294 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAttachmentFeedbackLoopEnableEXT &&
27295 "Function <vkCmdSetAttachmentFeedbackLoopEnableEXT> requires <VK_EXT_attachment_feedback_loop_dynamic_state>" );
27296
27297 getDispatcher()->vkCmdSetAttachmentFeedbackLoopEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27298 static_cast<VkImageAspectFlags>( aspectMask ) );
27299 }
27300
27301 # if defined( VK_USE_PLATFORM_SCREEN_QNX )
27302 //=== VK_QNX_external_memory_screen_buffer ===
27303 // wrapper function for command vkGetScreenBufferPropertiesQNX, see
27304 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html
27305 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getScreenBufferPropertiesQNX( const struct _screen_buffer * buffer,
27306 ScreenBufferPropertiesQNX * pProperties ) const VULKAN_HPP_NOEXCEPT
27307 {
27308 VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX &&
27309 "Function <vkGetScreenBufferPropertiesQNX> requires <VK_QNX_external_memory_screen_buffer>" );
27310 return static_cast<Result>( getDispatcher()->vkGetScreenBufferPropertiesQNX(
27311 static_cast<VkDevice>( m_device ), buffer, reinterpret_cast<VkScreenBufferPropertiesQNX *>( pProperties ) ) );
27312 }
27313
27314 // wrapper function for command vkGetScreenBufferPropertiesQNX, see
27315 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html
27316 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ScreenBufferPropertiesQNX>::type
27317 Device::getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const
27318 {
27319 VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX &&
27320 "Function <vkGetScreenBufferPropertiesQNX> requires <VK_QNX_external_memory_screen_buffer>" );
27321
27322 ScreenBufferPropertiesQNX properties;
27323 Result result = static_cast<Result>( getDispatcher()->vkGetScreenBufferPropertiesQNX(
27324 static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkScreenBufferPropertiesQNX *>( &properties ) ) );
27325 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" );
27326
27327 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
27328 }
27329
27330 // wrapper function for command vkGetScreenBufferPropertiesQNX, see
27331 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html
27332 template <typename X, typename Y, typename... Z>
27333 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<StructureChain<X, Y, Z...>>::type
27334 Device::getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const
27335 {
27336 VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX &&
27337 "Function <vkGetScreenBufferPropertiesQNX> requires <VK_QNX_external_memory_screen_buffer>" );
27338
27339 StructureChain<X, Y, Z...> structureChain;
27340 ScreenBufferPropertiesQNX & properties = structureChain.template get<ScreenBufferPropertiesQNX>();
27341 Result result = static_cast<Result>( getDispatcher()->vkGetScreenBufferPropertiesQNX(
27342 static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkScreenBufferPropertiesQNX *>( &properties ) ) );
27343 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" );
27344
27345 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) );
27346 }
27347 # endif /*VK_USE_PLATFORM_SCREEN_QNX*/
27348
27349 //=== VK_KHR_line_rasterization ===
27350
27351 // wrapper function for command vkCmdSetLineStippleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleKHR.html
27352 VULKAN_HPP_INLINE void CommandBuffer::setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
27353 {
27354 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleKHR &&
27355 "Function <vkCmdSetLineStippleKHR> requires <VK_EXT_line_rasterization> or <VK_KHR_line_rasterization> or <VK_VERSION_1_4>" );
27356
27357 getDispatcher()->vkCmdSetLineStippleKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
27358 }
27359
27360 //=== VK_KHR_calibrated_timestamps ===
27361
27362 // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see
27363 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html
27364 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<TimeDomainKHR>>::type PhysicalDevice::getCalibrateableTimeDomainsKHR() const
27365 {
27366 VULKAN_HPP_ASSERT(
27367 getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR &&
27368 "Function <vkGetPhysicalDeviceCalibrateableTimeDomainsKHR> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
27369
27370 std::vector<TimeDomainKHR> timeDomains;
27371 uint32_t timeDomainCount;
27372 Result result;
27373 do
27374 {
27375 result = static_cast<Result>(
27376 getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, nullptr ) );
27377 if ( ( result == Result::eSuccess ) && timeDomainCount )
27378 {
27379 timeDomains.resize( timeDomainCount );
27380 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(
27381 static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, reinterpret_cast<VkTimeDomainKHR *>( timeDomains.data() ) ) );
27382 }
27383 } while ( result == Result::eIncomplete );
27384 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsKHR" );
27385 VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
27386 if ( timeDomainCount < timeDomains.size() )
27387 {
27388 timeDomains.resize( timeDomainCount );
27389 }
27390 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( timeDomains ) );
27391 }
27392
27393 // wrapper function for command vkGetCalibratedTimestampsKHR, see
27394 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html
27395 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<std::vector<uint64_t>, uint64_t>>::type
27396 Device::getCalibratedTimestampsKHR( ArrayProxy<const CalibratedTimestampInfoKHR> const & timestampInfos ) const
27397 {
27398 VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsKHR &&
27399 "Function <vkGetCalibratedTimestampsKHR> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
27400
27401 std::pair<std::vector<uint64_t>, uint64_t> data_( std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) );
27402 std::vector<uint64_t> & timestamps = data_.first;
27403 uint64_t & maxDeviation = data_.second;
27404 Result result =
27405 static_cast<Result>( getDispatcher()->vkGetCalibratedTimestampsKHR( static_cast<VkDevice>( m_device ),
27406 timestampInfos.size(),
27407 reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( timestampInfos.data() ),
27408 timestamps.data(),
27409 &maxDeviation ) );
27410 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampsKHR" );
27411
27412 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
27413 }
27414
27415 // wrapper function for command vkGetCalibratedTimestampsKHR, see
27416 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html
27417 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::pair<uint64_t, uint64_t>>::type
27418 Device::getCalibratedTimestampKHR( const CalibratedTimestampInfoKHR & timestampInfo ) const
27419 {
27420 VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsKHR &&
27421 "Function <vkGetCalibratedTimestampsKHR> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
27422
27423 std::pair<uint64_t, uint64_t> data_;
27424 uint64_t & timestamp = data_.first;
27425 uint64_t & maxDeviation = data_.second;
27426 Result result = static_cast<Result>( getDispatcher()->vkGetCalibratedTimestampsKHR(
27427 static_cast<VkDevice>( m_device ), 1, reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( &timestampInfo ), &timestamp, &maxDeviation ) );
27428 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampKHR" );
27429
27430 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
27431 }
27432
27433 //=== VK_KHR_maintenance6 ===
27434
27435 // wrapper function for command vkCmdBindDescriptorSets2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html
27436 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2KHR( const BindDescriptorSetsInfo & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT
27437 {
27438 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets2KHR &&
27439 "Function <vkCmdBindDescriptorSets2KHR> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
27440
27441 getDispatcher()->vkCmdBindDescriptorSets2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
27442 reinterpret_cast<const VkBindDescriptorSetsInfo *>( &bindDescriptorSetsInfo ) );
27443 }
27444
27445 // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html
27446 VULKAN_HPP_INLINE void CommandBuffer::pushConstants2KHR( const PushConstantsInfo & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT
27447 {
27448 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants2KHR && "Function <vkCmdPushConstants2KHR> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
27449
27450 getDispatcher()->vkCmdPushConstants2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
27451 reinterpret_cast<const VkPushConstantsInfo *>( &pushConstantsInfo ) );
27452 }
27453
27454 // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html
27455 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2KHR( const PushDescriptorSetInfo & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT
27456 {
27457 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet2KHR &&
27458 "Function <vkCmdPushDescriptorSet2KHR> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
27459
27460 getDispatcher()->vkCmdPushDescriptorSet2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
27461 reinterpret_cast<const VkPushDescriptorSetInfo *>( &pushDescriptorSetInfo ) );
27462 }
27463
27464 // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see
27465 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html
27466 VULKAN_HPP_INLINE void
27467 CommandBuffer::pushDescriptorSetWithTemplate2KHR( const PushDescriptorSetWithTemplateInfo & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT
27468 {
27469 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetWithTemplate2KHR &&
27470 "Function <vkCmdPushDescriptorSetWithTemplate2KHR> requires <VK_KHR_maintenance6> or <VK_VERSION_1_4>" );
27471
27472 getDispatcher()->vkCmdPushDescriptorSetWithTemplate2KHR(
27473 static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPushDescriptorSetWithTemplateInfo *>( &pushDescriptorSetWithTemplateInfo ) );
27474 }
27475
27476 // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see
27477 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html
27478 VULKAN_HPP_INLINE void
27479 CommandBuffer::setDescriptorBufferOffsets2EXT( const SetDescriptorBufferOffsetsInfoEXT & setDescriptorBufferOffsetsInfo ) const VULKAN_HPP_NOEXCEPT
27480 {
27481 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDescriptorBufferOffsets2EXT &&
27482 "Function <vkCmdSetDescriptorBufferOffsets2EXT> requires <VK_KHR_maintenance6>" );
27483
27484 getDispatcher()->vkCmdSetDescriptorBufferOffsets2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27485 reinterpret_cast<const VkSetDescriptorBufferOffsetsInfoEXT *>( &setDescriptorBufferOffsetsInfo ) );
27486 }
27487
27488 // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see
27489 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html
27490 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplers2EXT(
27491 const BindDescriptorBufferEmbeddedSamplersInfoEXT & bindDescriptorBufferEmbeddedSamplersInfo ) const VULKAN_HPP_NOEXCEPT
27492 {
27493 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT &&
27494 "Function <vkCmdBindDescriptorBufferEmbeddedSamplers2EXT> requires <VK_KHR_maintenance6>" );
27495
27496 getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(
27497 static_cast<VkCommandBuffer>( m_commandBuffer ),
27498 reinterpret_cast<const VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( &bindDescriptorBufferEmbeddedSamplersInfo ) );
27499 }
27500
27501 //=== VK_QCOM_tile_memory_heap ===
27502
27503 // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html
27504 VULKAN_HPP_INLINE void CommandBuffer::bindTileMemoryQCOM( Optional<const TileMemoryBindInfoQCOM> tileMemoryBindInfo ) const VULKAN_HPP_NOEXCEPT
27505 {
27506 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindTileMemoryQCOM && "Function <vkCmdBindTileMemoryQCOM> requires <VK_QCOM_tile_memory_heap>" );
27507
27508 getDispatcher()->vkCmdBindTileMemoryQCOM( static_cast<VkCommandBuffer>( m_commandBuffer ),
27509 reinterpret_cast<const VkTileMemoryBindInfoQCOM *>( tileMemoryBindInfo.get() ) );
27510 }
27511
27512 //=== VK_KHR_copy_memory_indirect ===
27513
27514 // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html
27515 VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectKHR( const CopyMemoryIndirectInfoKHR & copyMemoryIndirectInfo ) const VULKAN_HPP_NOEXCEPT
27516 {
27517 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryIndirectKHR && "Function <vkCmdCopyMemoryIndirectKHR> requires <VK_KHR_copy_memory_indirect>" );
27518
27519 getDispatcher()->vkCmdCopyMemoryIndirectKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
27520 reinterpret_cast<const VkCopyMemoryIndirectInfoKHR *>( &copyMemoryIndirectInfo ) );
27521 }
27522
27523 // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see
27524 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html
27525 VULKAN_HPP_INLINE void
27526 CommandBuffer::copyMemoryToImageIndirectKHR( const CopyMemoryToImageIndirectInfoKHR & copyMemoryToImageIndirectInfo ) const VULKAN_HPP_NOEXCEPT
27527 {
27528 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToImageIndirectKHR &&
27529 "Function <vkCmdCopyMemoryToImageIndirectKHR> requires <VK_KHR_copy_memory_indirect>" );
27530
27531 getDispatcher()->vkCmdCopyMemoryToImageIndirectKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
27532 reinterpret_cast<const VkCopyMemoryToImageIndirectInfoKHR *>( &copyMemoryToImageIndirectInfo ) );
27533 }
27534
27535 //=== VK_EXT_memory_decompression ===
27536
27537 // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html
27538 VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryEXT( const DecompressMemoryInfoEXT & decompressMemoryInfoEXT ) const VULKAN_HPP_NOEXCEPT
27539 {
27540 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryEXT && "Function <vkCmdDecompressMemoryEXT> requires <VK_EXT_memory_decompression>" );
27541
27542 getDispatcher()->vkCmdDecompressMemoryEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27543 reinterpret_cast<const VkDecompressMemoryInfoEXT *>( &decompressMemoryInfoEXT ) );
27544 }
27545
27546 // wrapper function for command vkCmdDecompressMemoryIndirectCountEXT, see
27547 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountEXT.html
27548 VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod,
27549 DeviceAddress indirectCommandsAddress,
27550 DeviceAddress indirectCommandsCountAddress,
27551 uint32_t maxDecompressionCount,
27552 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
27553 {
27554 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryIndirectCountEXT &&
27555 "Function <vkCmdDecompressMemoryIndirectCountEXT> requires <VK_EXT_memory_decompression>" );
27556
27557 getDispatcher()->vkCmdDecompressMemoryIndirectCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27558 static_cast<VkMemoryDecompressionMethodFlagsEXT>( decompressionMethod ),
27559 static_cast<VkDeviceAddress>( indirectCommandsAddress ),
27560 static_cast<VkDeviceAddress>( indirectCommandsCountAddress ),
27561 maxDecompressionCount,
27562 stride );
27563 }
27564
27565 //=== VK_NV_external_compute_queue ===
27566
27567 // wrapper function for command vkCreateExternalComputeQueueNV, see
27568 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html
27569 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<ExternalComputeQueueNV>::type
27570 Device::createExternalComputeQueueNV( ExternalComputeQueueCreateInfoNV const & createInfo,
27571 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
27572 {
27573 VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV externalQueue;
27574 Result result =
27575 static_cast<Result>( getDispatcher()->vkCreateExternalComputeQueueNV( static_cast<VkDevice>( m_device ),
27576 reinterpret_cast<const VkExternalComputeQueueCreateInfoNV *>( &createInfo ),
27577 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27578 reinterpret_cast<VkExternalComputeQueueNV *>( &externalQueue ) ) );
27579 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createExternalComputeQueueNV" );
27580 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
27581 result, ExternalComputeQueueNV( *this, *reinterpret_cast<VkExternalComputeQueueNV *>( &externalQueue ), allocator ) );
27582 }
27583
27584 // wrapper function for command vkGetExternalComputeQueueDataNV, see
27585 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html
27586 template <typename DataType>
27587 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<ExternalComputeQueueDataParamsNV, DataType> ExternalComputeQueueNV::getData() const VULKAN_HPP_NOEXCEPT
27588 {
27589 VULKAN_HPP_ASSERT( getDispatcher()->vkGetExternalComputeQueueDataNV &&
27590 "Function <vkGetExternalComputeQueueDataNV> requires <VK_NV_external_compute_queue>" );
27591
27592 std::pair<ExternalComputeQueueDataParamsNV, DataType> data_;
27593 ExternalComputeQueueDataParamsNV & arams = data_.first;
27594 DataType & data = data_.second;
27595 getDispatcher()->vkGetExternalComputeQueueDataNV(
27596 static_cast<VkExternalComputeQueueNV>( m_externalComputeQueueNV ), reinterpret_cast<VkExternalComputeQueueDataParamsNV *>( &arams ), &data );
27597
27598 return data_;
27599 }
27600
27601 //=== VK_NV_cluster_acceleration_structure ===
27602
27603 // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see
27604 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html
27605 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR
27606 Device::getClusterAccelerationStructureBuildSizesNV( const ClusterAccelerationStructureInputInfoNV & info ) const VULKAN_HPP_NOEXCEPT
27607 {
27608 VULKAN_HPP_ASSERT( getDispatcher()->vkGetClusterAccelerationStructureBuildSizesNV &&
27609 "Function <vkGetClusterAccelerationStructureBuildSizesNV> requires <VK_NV_cluster_acceleration_structure>" );
27610
27611 AccelerationStructureBuildSizesInfoKHR sizeInfo;
27612 getDispatcher()->vkGetClusterAccelerationStructureBuildSizesNV( static_cast<VkDevice>( m_device ),
27613 reinterpret_cast<const VkClusterAccelerationStructureInputInfoNV *>( &info ),
27614 reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( &sizeInfo ) );
27615
27616 return sizeInfo;
27617 }
27618
27619 // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see
27620 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html
27621 VULKAN_HPP_INLINE void
27622 CommandBuffer::buildClusterAccelerationStructureIndirectNV( const ClusterAccelerationStructureCommandsInfoNV & commandInfos ) const VULKAN_HPP_NOEXCEPT
27623 {
27624 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildClusterAccelerationStructureIndirectNV &&
27625 "Function <vkCmdBuildClusterAccelerationStructureIndirectNV> requires <VK_NV_cluster_acceleration_structure>" );
27626
27627 getDispatcher()->vkCmdBuildClusterAccelerationStructureIndirectNV(
27628 static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkClusterAccelerationStructureCommandsInfoNV *>( &commandInfos ) );
27629 }
27630
27631 //=== VK_NV_partitioned_acceleration_structure ===
27632
27633 // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see
27634 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html
27635 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR
27636 Device::getPartitionedAccelerationStructuresBuildSizesNV( const PartitionedAccelerationStructureInstancesInputNV & info ) const VULKAN_HPP_NOEXCEPT
27637 {
27638 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPartitionedAccelerationStructuresBuildSizesNV &&
27639 "Function <vkGetPartitionedAccelerationStructuresBuildSizesNV> requires <VK_NV_partitioned_acceleration_structure>" );
27640
27641 AccelerationStructureBuildSizesInfoKHR sizeInfo;
27642 getDispatcher()->vkGetPartitionedAccelerationStructuresBuildSizesNV(
27643 static_cast<VkDevice>( m_device ),
27644 reinterpret_cast<const VkPartitionedAccelerationStructureInstancesInputNV *>( &info ),
27645 reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( &sizeInfo ) );
27646
27647 return sizeInfo;
27648 }
27649
27650 // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see
27651 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html
27652 VULKAN_HPP_INLINE void
27653 CommandBuffer::buildPartitionedAccelerationStructuresNV( const BuildPartitionedAccelerationStructureInfoNV & buildInfo ) const VULKAN_HPP_NOEXCEPT
27654 {
27655 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildPartitionedAccelerationStructuresNV &&
27656 "Function <vkCmdBuildPartitionedAccelerationStructuresNV> requires <VK_NV_partitioned_acceleration_structure>" );
27657
27658 getDispatcher()->vkCmdBuildPartitionedAccelerationStructuresNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
27659 reinterpret_cast<const VkBuildPartitionedAccelerationStructureInfoNV *>( &buildInfo ) );
27660 }
27661
27662 //=== VK_EXT_device_generated_commands ===
27663
27664 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see
27665 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html
27666 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2
27667 Device::getGeneratedCommandsMemoryRequirementsEXT( const GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
27668 {
27669 VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT &&
27670 "Function <vkGetGeneratedCommandsMemoryRequirementsEXT> requires <VK_EXT_device_generated_commands>" );
27671
27672 MemoryRequirements2 memoryRequirements;
27673 getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast<VkDevice>( m_device ),
27674 reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( &info ),
27675 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
27676
27677 return memoryRequirements;
27678 }
27679
27680 // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see
27681 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html
27682 template <typename X, typename Y, typename... Z>
27683 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
27684 Device::getGeneratedCommandsMemoryRequirementsEXT( const GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
27685 {
27686 VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT &&
27687 "Function <vkGetGeneratedCommandsMemoryRequirementsEXT> requires <VK_EXT_device_generated_commands>" );
27688
27689 StructureChain<X, Y, Z...> structureChain;
27690 MemoryRequirements2 & memoryRequirements = structureChain.template get<MemoryRequirements2>();
27691 getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast<VkDevice>( m_device ),
27692 reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( &info ),
27693 reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
27694
27695 return structureChain;
27696 }
27697
27698 // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see
27699 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html
27700 VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( const GeneratedCommandsInfoEXT & generatedCommandsInfo,
27701 VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT
27702 {
27703 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPreprocessGeneratedCommandsEXT &&
27704 "Function <vkCmdPreprocessGeneratedCommandsEXT> requires <VK_EXT_device_generated_commands>" );
27705
27706 getDispatcher()->vkCmdPreprocessGeneratedCommandsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27707 reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( &generatedCommandsInfo ),
27708 static_cast<VkCommandBuffer>( stateCommandBuffer ) );
27709 }
27710
27711 // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see
27712 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html
27713 VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsEXT( Bool32 isPreprocessed,
27714 const GeneratedCommandsInfoEXT & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
27715 {
27716 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteGeneratedCommandsEXT &&
27717 "Function <vkCmdExecuteGeneratedCommandsEXT> requires <VK_EXT_device_generated_commands>" );
27718
27719 getDispatcher()->vkCmdExecuteGeneratedCommandsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27720 static_cast<VkBool32>( isPreprocessed ),
27721 reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( &generatedCommandsInfo ) );
27722 }
27723
27724 // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see
27725 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html
27726 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<IndirectCommandsLayoutEXT>::type
27727 Device::createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const & createInfo,
27728 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
27729 {
27730 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout;
27731 Result result =
27732 static_cast<Result>( getDispatcher()->vkCreateIndirectCommandsLayoutEXT( static_cast<VkDevice>( m_device ),
27733 reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoEXT *>( &createInfo ),
27734 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27735 reinterpret_cast<VkIndirectCommandsLayoutEXT *>( &indirectCommandsLayout ) ) );
27736 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutEXT" );
27737 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
27738 result, IndirectCommandsLayoutEXT( *this, *reinterpret_cast<VkIndirectCommandsLayoutEXT *>( &indirectCommandsLayout ), allocator ) );
27739 }
27740
27741 // wrapper function for command vkCreateIndirectExecutionSetEXT, see
27742 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html
27743 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<IndirectExecutionSetEXT>::type
27744 Device::createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const & createInfo,
27745 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
27746 {
27747 VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet;
27748 Result result =
27749 static_cast<Result>( getDispatcher()->vkCreateIndirectExecutionSetEXT( static_cast<VkDevice>( m_device ),
27750 reinterpret_cast<const VkIndirectExecutionSetCreateInfoEXT *>( &createInfo ),
27751 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27752 reinterpret_cast<VkIndirectExecutionSetEXT *>( &indirectExecutionSet ) ) );
27753 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createIndirectExecutionSetEXT" );
27754 return VULKAN_HPP_NAMESPACE::detail::createResultValueType(
27755 result, IndirectExecutionSetEXT( *this, *reinterpret_cast<VkIndirectExecutionSetEXT *>( &indirectExecutionSet ), allocator ) );
27756 }
27757
27758 // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see
27759 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html
27760 VULKAN_HPP_INLINE void
27761 IndirectExecutionSetEXT::updatePipeline( ArrayProxy<const WriteIndirectExecutionSetPipelineEXT> const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT
27762 {
27763 VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateIndirectExecutionSetPipelineEXT &&
27764 "Function <vkUpdateIndirectExecutionSetPipelineEXT> requires <VK_EXT_device_generated_commands>" );
27765
27766 getDispatcher()->vkUpdateIndirectExecutionSetPipelineEXT( static_cast<VkDevice>( m_device ),
27767 static_cast<VkIndirectExecutionSetEXT>( m_indirectExecutionSetEXT ),
27768 executionSetWrites.size(),
27769 reinterpret_cast<const VkWriteIndirectExecutionSetPipelineEXT *>( executionSetWrites.data() ) );
27770 }
27771
27772 // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see
27773 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html
27774 VULKAN_HPP_INLINE void
27775 IndirectExecutionSetEXT::updateShader( ArrayProxy<const WriteIndirectExecutionSetShaderEXT> const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT
27776 {
27777 VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateIndirectExecutionSetShaderEXT &&
27778 "Function <vkUpdateIndirectExecutionSetShaderEXT> requires <VK_EXT_device_generated_commands>" );
27779
27780 getDispatcher()->vkUpdateIndirectExecutionSetShaderEXT( static_cast<VkDevice>( m_device ),
27781 static_cast<VkIndirectExecutionSetEXT>( m_indirectExecutionSetEXT ),
27782 executionSetWrites.size(),
27783 reinterpret_cast<const VkWriteIndirectExecutionSetShaderEXT *>( executionSetWrites.data() ) );
27784 }
27785
27786 # if defined( VK_USE_PLATFORM_OHOS )
27787 //=== VK_OHOS_surface ===
27788
27789 // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html
27790 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<SurfaceKHR>::type
27791 Instance::createSurfaceOHOS( SurfaceCreateInfoOHOS const & createInfo,
27792 Optional<const AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
27793 {
27794 VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
27795 Result result = static_cast<Result>( getDispatcher()->vkCreateSurfaceOHOS( static_cast<VkInstance>( m_instance ),
27796 reinterpret_cast<const VkSurfaceCreateInfoOHOS *>( &createInfo ),
27797 reinterpret_cast<const VkAllocationCallbacks *>( allocator.get() ),
27798 reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
27799 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createSurfaceOHOS" );
27800 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator ) );
27801 }
27802 # endif /*VK_USE_PLATFORM_OHOS*/
27803
27804 # if defined( VK_USE_PLATFORM_OHOS )
27805 //=== VK_OHOS_native_buffer ===
27806
27807 // wrapper function for command vkGetSwapchainGrallocUsageOHOS, see
27808 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainGrallocUsageOHOS.html
27809 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<uint64_t>::type Device::getSwapchainGrallocUsageOHOS( Format format,
27810 ImageUsageFlags imageUsage ) const
27811 {
27812 VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainGrallocUsageOHOS && "Function <vkGetSwapchainGrallocUsageOHOS> requires <VK_OHOS_native_buffer>" );
27813
27814 uint64_t grallocUsage;
27815 Result result = static_cast<Result>( getDispatcher()->vkGetSwapchainGrallocUsageOHOS(
27816 static_cast<VkDevice>( m_device ), static_cast<VkFormat>( format ), static_cast<VkImageUsageFlags>( imageUsage ), &grallocUsage ) );
27817 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSwapchainGrallocUsageOHOS" );
27818
27819 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( grallocUsage ) );
27820 }
27821
27822 // wrapper function for command vkAcquireImageOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireImageOHOS.html
27823 VULKAN_HPP_INLINE typename ResultValueType<void>::type
27824 Image::acquireOHOS( int32_t nativeFenceFd, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence ) const
27825 {
27826 VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireImageOHOS && "Function <vkAcquireImageOHOS> requires <VK_OHOS_native_buffer>" );
27827
27828 Result result = static_cast<Result>( getDispatcher()->vkAcquireImageOHOS( static_cast<VkDevice>( m_device ),
27829 static_cast<VkImage>( m_image ),
27830 nativeFenceFd,
27831 static_cast<VkSemaphore>( semaphore ),
27832 static_cast<VkFence>( fence ) ) );
27833 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Image::acquireOHOS" );
27834
27835 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result );
27836 }
27837
27838 // wrapper function for command vkQueueSignalReleaseImageOHOS, see
27839 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSignalReleaseImageOHOS.html
27840 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<int32_t>::type
27841 Queue::signalReleaseImageOHOS( ArrayProxy<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores, VULKAN_HPP_NAMESPACE::Image image ) const
27842 {
27843 VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSignalReleaseImageOHOS && "Function <vkQueueSignalReleaseImageOHOS> requires <VK_OHOS_native_buffer>" );
27844
27845 int32_t nativeFenceFd;
27846 Result result = static_cast<Result>( getDispatcher()->vkQueueSignalReleaseImageOHOS( static_cast<VkQueue>( m_queue ),
27847 waitSemaphores.size(),
27848 reinterpret_cast<const VkSemaphore *>( waitSemaphores.data() ),
27849 static_cast<VkImage>( image ),
27850 &nativeFenceFd ) );
27851 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::signalReleaseImageOHOS" );
27852
27853 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( nativeFenceFd ) );
27854 }
27855 # endif /*VK_USE_PLATFORM_OHOS*/
27856
27857 //=== VK_NV_cooperative_matrix2 ===
27858
27859 // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see
27860 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html
27861 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<std::vector<CooperativeMatrixFlexibleDimensionsPropertiesNV>>::type
27862 PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV() const
27863 {
27864 VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV &&
27865 "Function <vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV> requires <VK_NV_cooperative_matrix2>" );
27866
27867 std::vector<CooperativeMatrixFlexibleDimensionsPropertiesNV> properties;
27868 uint32_t propertyCount;
27869 Result result;
27870 do
27871 {
27872 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(
27873 static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
27874 if ( ( result == Result::eSuccess ) && propertyCount )
27875 {
27876 properties.resize( propertyCount );
27877 result = static_cast<Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(
27878 static_cast<VkPhysicalDevice>( m_physicalDevice ),
27879 &propertyCount,
27880 reinterpret_cast<VkCooperativeMatrixFlexibleDimensionsPropertiesNV *>( properties.data() ) ) );
27881 }
27882 } while ( result == Result::eIncomplete );
27883 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
27884 VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV" );
27885 VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
27886 if ( propertyCount < properties.size() )
27887 {
27888 properties.resize( propertyCount );
27889 }
27890 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) );
27891 }
27892
27893 # if defined( VK_USE_PLATFORM_METAL_EXT )
27894 //=== VK_EXT_external_memory_metal ===
27895
27896 // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html
27897 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<void *>::type
27898 Device::getMemoryMetalHandleEXT( const MemoryGetMetalHandleInfoEXT & getMetalHandleInfo ) const
27899 {
27900 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryMetalHandleEXT && "Function <vkGetMemoryMetalHandleEXT> requires <VK_EXT_external_memory_metal>" );
27901
27902 void * handle;
27903 Result result = static_cast<Result>( getDispatcher()->vkGetMemoryMetalHandleEXT(
27904 static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetMetalHandleInfoEXT *>( &getMetalHandleInfo ), &handle ) );
27905 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryMetalHandleEXT" );
27906
27907 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) );
27908 }
27909
27910 // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see
27911 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html
27912 template <typename HandleType>
27913 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<MemoryMetalHandlePropertiesEXT>::type
27914 Device::getMemoryMetalHandlePropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, HandleType const & handle ) const
27915 {
27916 VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryMetalHandlePropertiesEXT &&
27917 "Function <vkGetMemoryMetalHandlePropertiesEXT> requires <VK_EXT_external_memory_metal>" );
27918
27919 MemoryMetalHandlePropertiesEXT memoryMetalHandleProperties;
27920 Result result = static_cast<Result>(
27921 getDispatcher()->vkGetMemoryMetalHandlePropertiesEXT( static_cast<VkDevice>( m_device ),
27922 static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
27923 reinterpret_cast<const void *>( &handle ),
27924 reinterpret_cast<VkMemoryMetalHandlePropertiesEXT *>( &memoryMetalHandleProperties ) ) );
27925 VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryMetalHandlePropertiesEXT" );
27926
27927 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryMetalHandleProperties ) );
27928 }
27929 # endif /*VK_USE_PLATFORM_METAL_EXT*/
27930
27931 //=== VK_ARM_performance_counters_by_region ===
27932
27933 // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see
27934 // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html
27935 VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
27936 typename ResultValueType<std::pair<std::vector<PerformanceCounterARM>, std::vector<PerformanceCounterDescriptionARM>>>::type
27937 PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex ) const
27938 {
27939 VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM &&
27940 "Function <vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM> requires <VK_ARM_performance_counters_by_region>" );
27941
27942 std::pair<std::vector<PerformanceCounterARM>, std::vector<PerformanceCounterDescriptionARM>> data_;
27943 std::vector<PerformanceCounterARM> & counters = data_.first;
27944 std::vector<PerformanceCounterDescriptionARM> & counterDescriptions = data_.second;
27945 uint32_t counterCount;
27946 Result result;
27947 do
27948 {
27949 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM(
27950 static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) );
27951 if ( ( result == Result::eSuccess ) && counterCount )
27952 {
27953 counters.resize( counterCount );
27954 counterDescriptions.resize( counterCount );
27955 result = static_cast<Result>( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM(
27956 static_cast<VkPhysicalDevice>( m_physicalDevice ),
27957 queueFamilyIndex,
27958 &counterCount,
27959 reinterpret_cast<VkPerformanceCounterARM *>( counters.data() ),
27960 reinterpret_cast<VkPerformanceCounterDescriptionARM *>( counterDescriptions.data() ) ) );
27961 }
27962 } while ( result == Result::eIncomplete );
27963 VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
27964 VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM" );
27965 VULKAN_HPP_ASSERT( counterCount <= counters.size() );
27966 if ( counterCount < counters.size() )
27967 {
27968 counters.resize( counterCount );
27969 counterDescriptions.resize( counterCount );
27970 }
27971 return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) );
27972 }
27973
27974 //=== VK_EXT_fragment_density_map_offset ===
27975
27976 // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html
27977 VULKAN_HPP_INLINE void CommandBuffer::endRendering2EXT( Optional<const RenderingEndInfoKHR> renderingEndInfo ) const VULKAN_HPP_NOEXCEPT
27978 {
27979 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering2EXT &&
27980 "Function <vkCmdEndRendering2EXT> requires <VK_EXT_fragment_density_map_offset> or <VK_KHR_maintenance10>" );
27981
27982 getDispatcher()->vkCmdEndRendering2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27983 reinterpret_cast<const VkRenderingEndInfoKHR *>( renderingEndInfo.get() ) );
27984 }
27985
27986 //=== VK_EXT_custom_resolve ===
27987
27988 // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html
27989 VULKAN_HPP_INLINE void CommandBuffer::beginCustomResolveEXT( Optional<const BeginCustomResolveInfoEXT> beginCustomResolveInfo ) const VULKAN_HPP_NOEXCEPT
27990 {
27991 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginCustomResolveEXT && "Function <vkCmdBeginCustomResolveEXT> requires <VK_EXT_custom_resolve>" );
27992
27993 getDispatcher()->vkCmdBeginCustomResolveEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
27994 reinterpret_cast<const VkBeginCustomResolveInfoEXT *>( beginCustomResolveInfo.get() ) );
27995 }
27996
27997 //=== VK_KHR_maintenance10 ===
27998
27999 // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html
28000 VULKAN_HPP_INLINE void CommandBuffer::endRendering2KHR( Optional<const RenderingEndInfoKHR> renderingEndInfo ) const VULKAN_HPP_NOEXCEPT
28001 {
28002 VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering2KHR &&
28003 "Function <vkCmdEndRendering2KHR> requires <VK_EXT_fragment_density_map_offset> or <VK_KHR_maintenance10>" );
28004
28005 getDispatcher()->vkCmdEndRendering2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
28006 reinterpret_cast<const VkRenderingEndInfoKHR *>( renderingEndInfo.get() ) );
28007 }
28008
28009 //====================
28010 //=== RAII Helpers ===
28011 //====================
28012
28013 template <typename RAIIType>
28014 std::vector<typename RAIIType::CppType> filterCppTypes( std::vector<RAIIType> const & raiiTypes )
28015 {
28016 std::vector<typename RAIIType::CppType> cppTypes( raiiTypes.size() );
28017 std::transform( raiiTypes.begin(), raiiTypes.end(), cppTypes.begin(), []( RAIIType const & d ) { return *d; } );
28018 return cppTypes;
28019 }
28020
28021 template <typename RAIIType, class UnaryPredicate>
28022 std::vector<typename RAIIType::CppType> filterCppTypes( std::vector<RAIIType> const & raiiTypes, UnaryPredicate p )
28023 {
28024 std::vector<typename RAIIType::CppType> cppTypes;
28025 for ( auto const & t : raiiTypes )
28026 {
28027 if ( p( t ) )
28028 {
28029 cppTypes.push_back( *t );
28030 }
28031 }
28032 return cppTypes;
28033 }
28034
28035 } // namespace VULKAN_HPP_RAII_NAMESPACE
28036 } // namespace VULKAN_HPP_NAMESPACE
28037 #endif
28038 #endif