1pub mod extensions;
4pub mod external;
6pub mod vk;
8#[derive(Debug)]
10pub struct EntryEnabled {
11 pub instance_version: u32,
12 pub vk1_1: bool,
13 pub vk1_2: bool,
14 pub vk1_3: bool,
15}
16impl EntryEnabled {
17 pub(crate) unsafe fn new<T>(
18 loader: &mut T,
19 mut symbol: impl FnMut(
20 &mut T,
21 *const std::os::raw::c_char,
22 ) -> Option<crate::vk1_0::PFN_vkVoidFunction>,
23 ) -> Result<EntryEnabled, crate::LoaderError> {
24 let mut version = crate::vk1_0::make_api_version(0, 1, 0, 0);
25 if let Some(function)
26 = symbol(loader, crate::vk1_1::FN_ENUMERATE_INSTANCE_VERSION) {
27 let function: crate::vk1_1::PFN_vkEnumerateInstanceVersion = std::mem::transmute(
28 function,
29 );
30 let result = function(&mut version);
31 if result.0 < 0 {
32 return Err(crate::LoaderError::VulkanError(result));
33 }
34 }
35 Ok(EntryEnabled {
36 instance_version: version,
37 vk1_1: version >= crate::vk1_0::make_api_version(0, 1, 1, 0),
38 vk1_2: version >= crate::vk1_0::make_api_version(0, 1, 2, 0),
39 vk1_3: version >= crate::vk1_0::make_api_version(0, 1, 3, 0),
40 })
41 }
42}
43#[allow(rustdoc::broken_intra_doc_links)]
44pub struct CustomEntryLoader<T> {
48 pub(crate) arc: std::sync::Arc<()>,
49 pub loader: T,
50 pub(crate) enabled: EntryEnabled,
51 pub get_instance_proc_addr: crate::vk1_0::PFN_vkGetInstanceProcAddr,
52 pub create_instance: Option<vk1_0::PFN_vkCreateInstance>,
53 pub enumerate_instance_version: Option<vk1_1::PFN_vkEnumerateInstanceVersion>,
54 pub enumerate_instance_layer_properties: Option<
55 vk1_0::PFN_vkEnumerateInstanceLayerProperties,
56 >,
57 pub enumerate_instance_extension_properties: Option<
58 vk1_0::PFN_vkEnumerateInstanceExtensionProperties,
59 >,
60}
61impl<T> CustomEntryLoader<T> {
62 #[allow(unused_parens)]
63 pub(crate) unsafe fn custom(
64 mut loader: T,
65 mut symbol: impl FnMut(
66 &mut T,
67 *const std::os::raw::c_char,
68 ) -> Option<crate::vk1_0::PFN_vkVoidFunction>,
69 entry_enabled: EntryEnabled,
70 ) -> Result<CustomEntryLoader<T>, crate::LoaderError> {
71 let mut symbol = |name| symbol(&mut loader, name);
72 let get_instance_proc_addr = symbol(crate::vk1_0::FN_GET_INSTANCE_PROC_ADDR)
73 .ok_or(crate::LoaderError::SymbolNotAvailable)?;
74 Ok(CustomEntryLoader {
75 arc: std::sync::Arc::new(()),
76 get_instance_proc_addr: std::mem::transmute(get_instance_proc_addr),
77 create_instance: std::mem::transmute(
78 symbol(crate::vk1_0::FN_CREATE_INSTANCE),
79 ),
80 enumerate_instance_version: if entry_enabled.vk1_1 {
81 std::mem::transmute(symbol(crate::vk1_1::FN_ENUMERATE_INSTANCE_VERSION))
82 } else {
83 None
84 },
85 enumerate_instance_layer_properties: std::mem::transmute(
86 symbol(crate::vk1_0::FN_ENUMERATE_INSTANCE_LAYER_PROPERTIES),
87 ),
88 enumerate_instance_extension_properties: std::mem::transmute(
89 symbol(crate::vk1_0::FN_ENUMERATE_INSTANCE_EXTENSION_PROPERTIES),
90 ),
91 loader,
92 enabled: entry_enabled,
93 })
94 }
95}
96#[derive(Debug)]
98pub struct InstanceEnabled {
99 pub vk1_1: bool,
100 pub vk1_2: bool,
101 pub khr_android_surface: bool,
102 pub khr_display: bool,
103 pub khr_surface: bool,
104 pub nn_vi_surface: bool,
105 pub khr_wayland_surface: bool,
106 pub khr_win32_surface: bool,
107 pub khr_xlib_surface: bool,
108 pub khr_xcb_surface: bool,
109 pub ext_directfb_surface: bool,
110 pub fuchsia_imagepipe_surface: bool,
111 pub ggp_stream_descriptor_surface: bool,
112 pub qnx_screen_surface: bool,
113 pub ext_debug_report: bool,
114 pub nv_external_memory_capabilities: bool,
115 pub ext_direct_mode_display: bool,
116 pub ext_acquire_xlib_display: bool,
117 pub nv_acquire_winrt_display: bool,
118 pub ext_display_surface_counter: bool,
119 pub khr_swapchain: bool,
120 pub khr_device_group: bool,
121 pub mvk_ios_surface: bool,
122 pub mvk_macos_surface: bool,
123 pub ext_metal_surface: bool,
124 pub ext_sample_locations: bool,
125 pub khr_get_surface_capabilities2: bool,
126 pub khr_get_display_properties2: bool,
127 pub vk1_3: bool,
128 pub ext_calibrated_timestamps: bool,
129 pub ext_debug_utils: bool,
130 pub nv_cooperative_matrix: bool,
131 pub ext_full_screen_exclusive: bool,
132 pub khr_performance_query: bool,
133 pub ext_headless_surface: bool,
134 pub nv_coverage_reduction_mode: bool,
135 pub khr_fragment_shading_rate: bool,
136 pub khr_video_queue: bool,
137 pub ext_acquire_drm_display: bool,
138 pub khr_get_physical_device_properties2: bool,
139 pub khr_external_memory_capabilities: bool,
140 pub khr_external_semaphore_capabilities: bool,
141 pub khr_external_fence_capabilities: bool,
142 pub khr_device_group_creation: bool,
143 pub ext_tooling_info: bool,
144}
145impl InstanceEnabled {
146 pub(crate) unsafe fn new(
147 instance_version: u32,
148 enabled_extensions: &[&std::ffi::CStr],
149 available_device_extensions: &[&std::ffi::CStr],
150 ) -> Result<InstanceEnabled, crate::LoaderError> {
151 let version = instance_version;
152 let enabled_extension = |extension| enabled_extensions
153 .contains(&std::ffi::CStr::from_ptr(extension));
154 let available_device_extension = |extension| available_device_extensions
155 .contains(&std::ffi::CStr::from_ptr(extension));
156 Ok(InstanceEnabled {
157 vk1_1: version >= crate::vk1_0::make_api_version(0, 1, 1, 0),
158 vk1_2: version >= crate::vk1_0::make_api_version(0, 1, 2, 0),
159 khr_android_surface: enabled_extension(
160 crate::extensions::khr_android_surface::KHR_ANDROID_SURFACE_EXTENSION_NAME,
161 ),
162 khr_display: enabled_extension(
163 crate::extensions::khr_display::KHR_DISPLAY_EXTENSION_NAME,
164 ),
165 khr_surface: enabled_extension(
166 crate::extensions::khr_surface::KHR_SURFACE_EXTENSION_NAME,
167 ),
168 nn_vi_surface: enabled_extension(
169 crate::extensions::nn_vi_surface::NN_VI_SURFACE_EXTENSION_NAME,
170 ),
171 khr_wayland_surface: enabled_extension(
172 crate::extensions::khr_wayland_surface::KHR_WAYLAND_SURFACE_EXTENSION_NAME,
173 ),
174 khr_win32_surface: enabled_extension(
175 crate::extensions::khr_win32_surface::KHR_WIN32_SURFACE_EXTENSION_NAME,
176 ),
177 khr_xlib_surface: enabled_extension(
178 crate::extensions::khr_xlib_surface::KHR_XLIB_SURFACE_EXTENSION_NAME,
179 ),
180 khr_xcb_surface: enabled_extension(
181 crate::extensions::khr_xcb_surface::KHR_XCB_SURFACE_EXTENSION_NAME,
182 ),
183 ext_directfb_surface: enabled_extension(
184 crate::extensions::ext_directfb_surface::EXT_DIRECTFB_SURFACE_EXTENSION_NAME,
185 ),
186 fuchsia_imagepipe_surface: enabled_extension(
187 crate::extensions::fuchsia_imagepipe_surface::FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME,
188 ),
189 ggp_stream_descriptor_surface: enabled_extension(
190 crate::extensions::ggp_stream_descriptor_surface::GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME,
191 ),
192 qnx_screen_surface: enabled_extension(
193 crate::extensions::qnx_screen_surface::QNX_SCREEN_SURFACE_EXTENSION_NAME,
194 ),
195 ext_debug_report: enabled_extension(
196 crate::extensions::ext_debug_report::EXT_DEBUG_REPORT_EXTENSION_NAME,
197 ),
198 nv_external_memory_capabilities: enabled_extension(
199 crate::extensions::nv_external_memory_capabilities::NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
200 ),
201 ext_direct_mode_display: enabled_extension(
202 crate::extensions::ext_direct_mode_display::EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME,
203 ),
204 ext_acquire_xlib_display: enabled_extension(
205 crate::extensions::ext_acquire_xlib_display::EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME,
206 ),
207 nv_acquire_winrt_display: available_device_extension(
208 crate::extensions::nv_acquire_winrt_display::NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME,
209 ),
210 ext_display_surface_counter: enabled_extension(
211 crate::extensions::ext_display_surface_counter::EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME,
212 ),
213 khr_swapchain: available_device_extension(
214 crate::extensions::khr_swapchain::KHR_SWAPCHAIN_EXTENSION_NAME,
215 ),
216 khr_device_group: available_device_extension(
217 crate::extensions::khr_device_group::KHR_DEVICE_GROUP_EXTENSION_NAME,
218 ),
219 mvk_ios_surface: enabled_extension(
220 crate::extensions::mvk_ios_surface::MVK_IOS_SURFACE_EXTENSION_NAME,
221 ),
222 mvk_macos_surface: enabled_extension(
223 crate::extensions::mvk_macos_surface::MVK_MACOS_SURFACE_EXTENSION_NAME,
224 ),
225 ext_metal_surface: enabled_extension(
226 crate::extensions::ext_metal_surface::EXT_METAL_SURFACE_EXTENSION_NAME,
227 ),
228 ext_sample_locations: available_device_extension(
229 crate::extensions::ext_sample_locations::EXT_SAMPLE_LOCATIONS_EXTENSION_NAME,
230 ),
231 khr_get_surface_capabilities2: enabled_extension(
232 crate::extensions::khr_get_surface_capabilities2::KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME,
233 ),
234 khr_get_display_properties2: enabled_extension(
235 crate::extensions::khr_get_display_properties2::KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
236 ),
237 vk1_3: version >= crate::vk1_0::make_api_version(0, 1, 3, 0),
238 ext_calibrated_timestamps: available_device_extension(
239 crate::extensions::ext_calibrated_timestamps::EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME,
240 ),
241 ext_debug_utils: enabled_extension(
242 crate::extensions::ext_debug_utils::EXT_DEBUG_UTILS_EXTENSION_NAME,
243 ),
244 nv_cooperative_matrix: available_device_extension(
245 crate::extensions::nv_cooperative_matrix::NV_COOPERATIVE_MATRIX_EXTENSION_NAME,
246 ),
247 ext_full_screen_exclusive: available_device_extension(
248 crate::extensions::ext_full_screen_exclusive::EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
249 ),
250 khr_performance_query: available_device_extension(
251 crate::extensions::khr_performance_query::KHR_PERFORMANCE_QUERY_EXTENSION_NAME,
252 ),
253 ext_headless_surface: enabled_extension(
254 crate::extensions::ext_headless_surface::EXT_HEADLESS_SURFACE_EXTENSION_NAME,
255 ),
256 nv_coverage_reduction_mode: available_device_extension(
257 crate::extensions::nv_coverage_reduction_mode::NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME,
258 ),
259 khr_fragment_shading_rate: available_device_extension(
260 crate::extensions::khr_fragment_shading_rate::KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME,
261 ),
262 khr_video_queue: available_device_extension(
263 crate::extensions::khr_video_queue::KHR_VIDEO_QUEUE_EXTENSION_NAME,
264 ),
265 ext_acquire_drm_display: enabled_extension(
266 crate::extensions::ext_acquire_drm_display::EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME,
267 ),
268 khr_get_physical_device_properties2: enabled_extension(
269 crate::extensions::khr_get_physical_device_properties2::KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
270 ),
271 khr_external_memory_capabilities: enabled_extension(
272 crate::extensions::khr_external_memory_capabilities::KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
273 ),
274 khr_external_semaphore_capabilities: enabled_extension(
275 crate::extensions::khr_external_semaphore_capabilities::KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
276 ),
277 khr_external_fence_capabilities: enabled_extension(
278 crate::extensions::khr_external_fence_capabilities::KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
279 ),
280 khr_device_group_creation: enabled_extension(
281 crate::extensions::khr_device_group_creation::KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
282 ),
283 ext_tooling_info: available_device_extension(
284 crate::extensions::ext_tooling_info::EXT_TOOLING_INFO_EXTENSION_NAME,
285 ),
286 })
287 }
288}
289pub struct InstanceLoader {
296 #[allow(dead_code)]
297 parent: std::sync::Weak<()>,
298 pub(crate) arc: std::sync::Arc<()>,
299 pub handle: crate::vk1_0::Instance,
300 pub(crate) enabled: InstanceEnabled,
301 pub get_device_proc_addr: crate::vk1_0::PFN_vkGetDeviceProcAddr,
302 pub destroy_instance: Option<vk1_0::PFN_vkDestroyInstance>,
303 pub enumerate_physical_devices: Option<vk1_0::PFN_vkEnumeratePhysicalDevices>,
304 pub get_instance_proc_addr: Option<vk1_0::PFN_vkGetInstanceProcAddr>,
305 pub get_physical_device_properties: Option<vk1_0::PFN_vkGetPhysicalDeviceProperties>,
306 pub get_physical_device_queue_family_properties: Option<
307 vk1_0::PFN_vkGetPhysicalDeviceQueueFamilyProperties,
308 >,
309 pub get_physical_device_memory_properties: Option<
310 vk1_0::PFN_vkGetPhysicalDeviceMemoryProperties,
311 >,
312 pub get_physical_device_features: Option<vk1_0::PFN_vkGetPhysicalDeviceFeatures>,
313 pub get_physical_device_format_properties: Option<
314 vk1_0::PFN_vkGetPhysicalDeviceFormatProperties,
315 >,
316 pub get_physical_device_image_format_properties: Option<
317 vk1_0::PFN_vkGetPhysicalDeviceImageFormatProperties,
318 >,
319 pub create_device: Option<vk1_0::PFN_vkCreateDevice>,
320 pub enumerate_device_layer_properties: Option<
321 vk1_0::PFN_vkEnumerateDeviceLayerProperties,
322 >,
323 pub enumerate_device_extension_properties: Option<
324 vk1_0::PFN_vkEnumerateDeviceExtensionProperties,
325 >,
326 pub get_physical_device_sparse_image_format_properties: Option<
327 vk1_0::PFN_vkGetPhysicalDeviceSparseImageFormatProperties,
328 >,
329 pub create_android_surface_khr: Option<
330 extensions::khr_android_surface::PFN_vkCreateAndroidSurfaceKHR,
331 >,
332 pub get_physical_device_display_properties_khr: Option<
333 extensions::khr_display::PFN_vkGetPhysicalDeviceDisplayPropertiesKHR,
334 >,
335 pub get_physical_device_display_plane_properties_khr: Option<
336 extensions::khr_display::PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
337 >,
338 pub get_display_plane_supported_displays_khr: Option<
339 extensions::khr_display::PFN_vkGetDisplayPlaneSupportedDisplaysKHR,
340 >,
341 pub get_display_mode_properties_khr: Option<
342 extensions::khr_display::PFN_vkGetDisplayModePropertiesKHR,
343 >,
344 pub create_display_mode_khr: Option<
345 extensions::khr_display::PFN_vkCreateDisplayModeKHR,
346 >,
347 pub get_display_plane_capabilities_khr: Option<
348 extensions::khr_display::PFN_vkGetDisplayPlaneCapabilitiesKHR,
349 >,
350 pub create_display_plane_surface_khr: Option<
351 extensions::khr_display::PFN_vkCreateDisplayPlaneSurfaceKHR,
352 >,
353 pub destroy_surface_khr: Option<extensions::khr_surface::PFN_vkDestroySurfaceKHR>,
354 pub get_physical_device_surface_support_khr: Option<
355 extensions::khr_surface::PFN_vkGetPhysicalDeviceSurfaceSupportKHR,
356 >,
357 pub get_physical_device_surface_capabilities_khr: Option<
358 extensions::khr_surface::PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
359 >,
360 pub get_physical_device_surface_formats_khr: Option<
361 extensions::khr_surface::PFN_vkGetPhysicalDeviceSurfaceFormatsKHR,
362 >,
363 pub get_physical_device_surface_present_modes_khr: Option<
364 extensions::khr_surface::PFN_vkGetPhysicalDeviceSurfacePresentModesKHR,
365 >,
366 pub create_vi_surface_nn: Option<extensions::nn_vi_surface::PFN_vkCreateViSurfaceNN>,
367 pub create_wayland_surface_khr: Option<
368 extensions::khr_wayland_surface::PFN_vkCreateWaylandSurfaceKHR,
369 >,
370 pub get_physical_device_wayland_presentation_support_khr: Option<
371 extensions::khr_wayland_surface::PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR,
372 >,
373 pub create_win32_surface_khr: Option<
374 extensions::khr_win32_surface::PFN_vkCreateWin32SurfaceKHR,
375 >,
376 pub get_physical_device_win32_presentation_support_khr: Option<
377 extensions::khr_win32_surface::PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR,
378 >,
379 pub create_xlib_surface_khr: Option<
380 extensions::khr_xlib_surface::PFN_vkCreateXlibSurfaceKHR,
381 >,
382 pub get_physical_device_xlib_presentation_support_khr: Option<
383 extensions::khr_xlib_surface::PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR,
384 >,
385 pub create_xcb_surface_khr: Option<
386 extensions::khr_xcb_surface::PFN_vkCreateXcbSurfaceKHR,
387 >,
388 pub get_physical_device_xcb_presentation_support_khr: Option<
389 extensions::khr_xcb_surface::PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR,
390 >,
391 pub create_direct_fb_surface_ext: Option<
392 extensions::ext_directfb_surface::PFN_vkCreateDirectFBSurfaceEXT,
393 >,
394 pub get_physical_device_direct_fb_presentation_support_ext: Option<
395 extensions::ext_directfb_surface::PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT,
396 >,
397 pub create_image_pipe_surface_fuchsia: Option<
398 extensions::fuchsia_imagepipe_surface::PFN_vkCreateImagePipeSurfaceFUCHSIA,
399 >,
400 pub create_stream_descriptor_surface_ggp: Option<
401 extensions::ggp_stream_descriptor_surface::PFN_vkCreateStreamDescriptorSurfaceGGP,
402 >,
403 pub create_screen_surface_qnx: Option<
404 extensions::qnx_screen_surface::PFN_vkCreateScreenSurfaceQNX,
405 >,
406 pub get_physical_device_screen_presentation_support_qnx: Option<
407 extensions::qnx_screen_surface::PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX,
408 >,
409 pub create_debug_report_callback_ext: Option<
410 extensions::ext_debug_report::PFN_vkCreateDebugReportCallbackEXT,
411 >,
412 pub destroy_debug_report_callback_ext: Option<
413 extensions::ext_debug_report::PFN_vkDestroyDebugReportCallbackEXT,
414 >,
415 pub debug_report_message_ext: Option<
416 extensions::ext_debug_report::PFN_vkDebugReportMessageEXT,
417 >,
418 pub get_physical_device_external_image_format_properties_nv: Option<
419 extensions::nv_external_memory_capabilities::PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
420 >,
421 pub get_physical_device_features2: Option<vk1_1::PFN_vkGetPhysicalDeviceFeatures2>,
422 pub get_physical_device_properties2: Option<
423 vk1_1::PFN_vkGetPhysicalDeviceProperties2,
424 >,
425 pub get_physical_device_format_properties2: Option<
426 vk1_1::PFN_vkGetPhysicalDeviceFormatProperties2,
427 >,
428 pub get_physical_device_image_format_properties2: Option<
429 vk1_1::PFN_vkGetPhysicalDeviceImageFormatProperties2,
430 >,
431 pub get_physical_device_queue_family_properties2: Option<
432 vk1_1::PFN_vkGetPhysicalDeviceQueueFamilyProperties2,
433 >,
434 pub get_physical_device_memory_properties2: Option<
435 vk1_1::PFN_vkGetPhysicalDeviceMemoryProperties2,
436 >,
437 pub get_physical_device_sparse_image_format_properties2: Option<
438 vk1_1::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2,
439 >,
440 pub get_physical_device_external_buffer_properties: Option<
441 vk1_1::PFN_vkGetPhysicalDeviceExternalBufferProperties,
442 >,
443 pub get_physical_device_external_semaphore_properties: Option<
444 vk1_1::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties,
445 >,
446 pub get_physical_device_external_fence_properties: Option<
447 vk1_1::PFN_vkGetPhysicalDeviceExternalFenceProperties,
448 >,
449 pub release_display_ext: Option<
450 extensions::ext_direct_mode_display::PFN_vkReleaseDisplayEXT,
451 >,
452 pub acquire_xlib_display_ext: Option<
453 extensions::ext_acquire_xlib_display::PFN_vkAcquireXlibDisplayEXT,
454 >,
455 pub get_rand_r_output_display_ext: Option<
456 extensions::ext_acquire_xlib_display::PFN_vkGetRandROutputDisplayEXT,
457 >,
458 pub acquire_winrt_display_nv: Option<
459 extensions::nv_acquire_winrt_display::PFN_vkAcquireWinrtDisplayNV,
460 >,
461 pub get_winrt_display_nv: Option<
462 extensions::nv_acquire_winrt_display::PFN_vkGetWinrtDisplayNV,
463 >,
464 pub get_physical_device_surface_capabilities2_ext: Option<
465 extensions::ext_display_surface_counter::PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT,
466 >,
467 pub enumerate_physical_device_groups: Option<
468 vk1_1::PFN_vkEnumeratePhysicalDeviceGroups,
469 >,
470 pub get_physical_device_present_rectangles_khr: Option<
471 extensions::khr_swapchain::PFN_vkGetPhysicalDevicePresentRectanglesKHR,
472 >,
473 pub create_ios_surface_mvk: Option<
474 extensions::mvk_ios_surface::PFN_vkCreateIOSSurfaceMVK,
475 >,
476 pub create_mac_os_surface_mvk: Option<
477 extensions::mvk_macos_surface::PFN_vkCreateMacOSSurfaceMVK,
478 >,
479 pub create_metal_surface_ext: Option<
480 extensions::ext_metal_surface::PFN_vkCreateMetalSurfaceEXT,
481 >,
482 pub get_physical_device_multisample_properties_ext: Option<
483 extensions::ext_sample_locations::PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT,
484 >,
485 pub get_physical_device_surface_capabilities2_khr: Option<
486 extensions::khr_get_surface_capabilities2::PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR,
487 >,
488 pub get_physical_device_surface_formats2_khr: Option<
489 extensions::khr_get_surface_capabilities2::PFN_vkGetPhysicalDeviceSurfaceFormats2KHR,
490 >,
491 pub get_physical_device_display_properties2_khr: Option<
492 extensions::khr_get_display_properties2::PFN_vkGetPhysicalDeviceDisplayProperties2KHR,
493 >,
494 pub get_physical_device_display_plane_properties2_khr: Option<
495 extensions::khr_get_display_properties2::PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR,
496 >,
497 pub get_display_mode_properties2_khr: Option<
498 extensions::khr_get_display_properties2::PFN_vkGetDisplayModeProperties2KHR,
499 >,
500 pub get_display_plane_capabilities2_khr: Option<
501 extensions::khr_get_display_properties2::PFN_vkGetDisplayPlaneCapabilities2KHR,
502 >,
503 pub get_physical_device_calibrateable_time_domains_ext: Option<
504 extensions::ext_calibrated_timestamps::PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT,
505 >,
506 pub create_debug_utils_messenger_ext: Option<
507 extensions::ext_debug_utils::PFN_vkCreateDebugUtilsMessengerEXT,
508 >,
509 pub destroy_debug_utils_messenger_ext: Option<
510 extensions::ext_debug_utils::PFN_vkDestroyDebugUtilsMessengerEXT,
511 >,
512 pub submit_debug_utils_message_ext: Option<
513 extensions::ext_debug_utils::PFN_vkSubmitDebugUtilsMessageEXT,
514 >,
515 pub get_physical_device_cooperative_matrix_properties_nv: Option<
516 extensions::nv_cooperative_matrix::PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV,
517 >,
518 pub get_physical_device_surface_present_modes2_ext: Option<
519 extensions::ext_full_screen_exclusive::PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT,
520 >,
521 pub enumerate_physical_device_queue_family_performance_query_counters_khr: Option<
522 extensions::khr_performance_query::PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
523 >,
524 pub get_physical_device_queue_family_performance_query_passes_khr: Option<
525 extensions::khr_performance_query::PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
526 >,
527 pub create_headless_surface_ext: Option<
528 extensions::ext_headless_surface::PFN_vkCreateHeadlessSurfaceEXT,
529 >,
530 pub get_physical_device_supported_framebuffer_mixed_samples_combinations_nv: Option<
531 extensions::nv_coverage_reduction_mode::PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV,
532 >,
533 pub get_physical_device_tool_properties: Option<
534 vk1_3::PFN_vkGetPhysicalDeviceToolProperties,
535 >,
536 pub get_physical_device_fragment_shading_rates_khr: Option<
537 extensions::khr_fragment_shading_rate::PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR,
538 >,
539 pub get_physical_device_video_capabilities_khr: Option<
540 extensions::khr_video_queue::PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR,
541 >,
542 pub get_physical_device_video_format_properties_khr: Option<
543 extensions::khr_video_queue::PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR,
544 >,
545 pub acquire_drm_display_ext: Option<
546 extensions::ext_acquire_drm_display::PFN_vkAcquireDrmDisplayEXT,
547 >,
548 pub get_drm_display_ext: Option<
549 extensions::ext_acquire_drm_display::PFN_vkGetDrmDisplayEXT,
550 >,
551 pub get_physical_device_features2_khr: Option<
552 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceFeatures2KHR,
553 >,
554 pub get_physical_device_properties2_khr: Option<
555 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceProperties2KHR,
556 >,
557 pub get_physical_device_format_properties2_khr: Option<
558 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceFormatProperties2KHR,
559 >,
560 pub get_physical_device_image_format_properties2_khr: Option<
561 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceImageFormatProperties2KHR,
562 >,
563 pub get_physical_device_queue_family_properties2_khr: Option<
564 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR,
565 >,
566 pub get_physical_device_memory_properties2_khr: Option<
567 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceMemoryProperties2KHR,
568 >,
569 pub get_physical_device_sparse_image_format_properties2_khr: Option<
570 extensions::khr_get_physical_device_properties2::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR,
571 >,
572 pub get_physical_device_external_buffer_properties_khr: Option<
573 extensions::khr_external_memory_capabilities::PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR,
574 >,
575 pub get_physical_device_external_semaphore_properties_khr: Option<
576 extensions::khr_external_semaphore_capabilities::PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
577 >,
578 pub get_physical_device_external_fence_properties_khr: Option<
579 extensions::khr_external_fence_capabilities::PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR,
580 >,
581 pub enumerate_physical_device_groups_khr: Option<
582 extensions::khr_device_group_creation::PFN_vkEnumeratePhysicalDeviceGroupsKHR,
583 >,
584 pub get_physical_device_tool_properties_ext: Option<
585 extensions::ext_tooling_info::PFN_vkGetPhysicalDeviceToolPropertiesEXT,
586 >,
587}
588impl InstanceLoader {
589 #[allow(unused_parens)]
590 pub(crate) unsafe fn custom<T>(
591 entry_loader: &CustomEntryLoader<T>,
592 instance: crate::vk1_0::Instance,
593 instance_enabled: InstanceEnabled,
594 mut symbol: impl FnMut(
595 *const std::os::raw::c_char,
596 ) -> Option<crate::vk1_0::PFN_vkVoidFunction>,
597 ) -> Result<InstanceLoader, crate::LoaderError> {
598 let get_device_proc_addr = symbol(crate::vk1_0::FN_GET_DEVICE_PROC_ADDR)
599 .ok_or(crate::LoaderError::SymbolNotAvailable)?;
600 Ok(InstanceLoader {
601 parent: std::sync::Arc::downgrade(&entry_loader.arc),
602 arc: std::sync::Arc::new(()),
603 handle: instance,
604 get_device_proc_addr: std::mem::transmute(get_device_proc_addr),
605 destroy_instance: std::mem::transmute(
606 symbol(crate::vk1_0::FN_DESTROY_INSTANCE),
607 ),
608 enumerate_physical_devices: std::mem::transmute(
609 symbol(crate::vk1_0::FN_ENUMERATE_PHYSICAL_DEVICES),
610 ),
611 get_instance_proc_addr: std::mem::transmute(
612 symbol(crate::vk1_0::FN_GET_INSTANCE_PROC_ADDR),
613 ),
614 get_physical_device_properties: std::mem::transmute(
615 symbol(crate::vk1_0::FN_GET_PHYSICAL_DEVICE_PROPERTIES),
616 ),
617 get_physical_device_queue_family_properties: std::mem::transmute(
618 symbol(crate::vk1_0::FN_GET_PHYSICAL_DEVICE_QUEUE_FAMILY_PROPERTIES),
619 ),
620 get_physical_device_memory_properties: std::mem::transmute(
621 symbol(crate::vk1_0::FN_GET_PHYSICAL_DEVICE_MEMORY_PROPERTIES),
622 ),
623 get_physical_device_features: std::mem::transmute(
624 symbol(crate::vk1_0::FN_GET_PHYSICAL_DEVICE_FEATURES),
625 ),
626 get_physical_device_format_properties: std::mem::transmute(
627 symbol(crate::vk1_0::FN_GET_PHYSICAL_DEVICE_FORMAT_PROPERTIES),
628 ),
629 get_physical_device_image_format_properties: std::mem::transmute(
630 symbol(crate::vk1_0::FN_GET_PHYSICAL_DEVICE_IMAGE_FORMAT_PROPERTIES),
631 ),
632 create_device: std::mem::transmute(symbol(crate::vk1_0::FN_CREATE_DEVICE)),
633 enumerate_device_layer_properties: std::mem::transmute(
634 symbol(crate::vk1_0::FN_ENUMERATE_DEVICE_LAYER_PROPERTIES),
635 ),
636 enumerate_device_extension_properties: std::mem::transmute(
637 symbol(crate::vk1_0::FN_ENUMERATE_DEVICE_EXTENSION_PROPERTIES),
638 ),
639 get_physical_device_sparse_image_format_properties: std::mem::transmute(
640 symbol(
641 crate::vk1_0::FN_GET_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_PROPERTIES,
642 ),
643 ),
644 create_android_surface_khr: if instance_enabled.khr_android_surface {
645 std::mem::transmute(
646 symbol(
647 crate::extensions::khr_android_surface::FN_CREATE_ANDROID_SURFACE_KHR,
648 ),
649 )
650 } else {
651 None
652 },
653 get_physical_device_display_properties_khr: if instance_enabled.khr_display {
654 std::mem::transmute(
655 symbol(
656 crate::extensions::khr_display::FN_GET_PHYSICAL_DEVICE_DISPLAY_PROPERTIES_KHR,
657 ),
658 )
659 } else {
660 None
661 },
662 get_physical_device_display_plane_properties_khr: if instance_enabled
663 .khr_display
664 {
665 std::mem::transmute(
666 symbol(
667 crate::extensions::khr_display::FN_GET_PHYSICAL_DEVICE_DISPLAY_PLANE_PROPERTIES_KHR,
668 ),
669 )
670 } else {
671 None
672 },
673 get_display_plane_supported_displays_khr: if instance_enabled.khr_display {
674 std::mem::transmute(
675 symbol(
676 crate::extensions::khr_display::FN_GET_DISPLAY_PLANE_SUPPORTED_DISPLAYS_KHR,
677 ),
678 )
679 } else {
680 None
681 },
682 get_display_mode_properties_khr: if instance_enabled.khr_display {
683 std::mem::transmute(
684 symbol(
685 crate::extensions::khr_display::FN_GET_DISPLAY_MODE_PROPERTIES_KHR,
686 ),
687 )
688 } else {
689 None
690 },
691 create_display_mode_khr: if instance_enabled.khr_display {
692 std::mem::transmute(
693 symbol(crate::extensions::khr_display::FN_CREATE_DISPLAY_MODE_KHR),
694 )
695 } else {
696 None
697 },
698 get_display_plane_capabilities_khr: if instance_enabled.khr_display {
699 std::mem::transmute(
700 symbol(
701 crate::extensions::khr_display::FN_GET_DISPLAY_PLANE_CAPABILITIES_KHR,
702 ),
703 )
704 } else {
705 None
706 },
707 create_display_plane_surface_khr: if instance_enabled.khr_display {
708 std::mem::transmute(
709 symbol(
710 crate::extensions::khr_display::FN_CREATE_DISPLAY_PLANE_SURFACE_KHR,
711 ),
712 )
713 } else {
714 None
715 },
716 destroy_surface_khr: if instance_enabled.khr_surface {
717 std::mem::transmute(
718 symbol(crate::extensions::khr_surface::FN_DESTROY_SURFACE_KHR),
719 )
720 } else {
721 None
722 },
723 get_physical_device_surface_support_khr: if instance_enabled.khr_surface {
724 std::mem::transmute(
725 symbol(
726 crate::extensions::khr_surface::FN_GET_PHYSICAL_DEVICE_SURFACE_SUPPORT_KHR,
727 ),
728 )
729 } else {
730 None
731 },
732 get_physical_device_surface_capabilities_khr: if instance_enabled.khr_surface
733 {
734 std::mem::transmute(
735 symbol(
736 crate::extensions::khr_surface::FN_GET_PHYSICAL_DEVICE_SURFACE_CAPABILITIES_KHR,
737 ),
738 )
739 } else {
740 None
741 },
742 get_physical_device_surface_formats_khr: if instance_enabled.khr_surface {
743 std::mem::transmute(
744 symbol(
745 crate::extensions::khr_surface::FN_GET_PHYSICAL_DEVICE_SURFACE_FORMATS_KHR,
746 ),
747 )
748 } else {
749 None
750 },
751 get_physical_device_surface_present_modes_khr: if instance_enabled
752 .khr_surface
753 {
754 std::mem::transmute(
755 symbol(
756 crate::extensions::khr_surface::FN_GET_PHYSICAL_DEVICE_SURFACE_PRESENT_MODES_KHR,
757 ),
758 )
759 } else {
760 None
761 },
762 create_vi_surface_nn: if instance_enabled.nn_vi_surface {
763 std::mem::transmute(
764 symbol(crate::extensions::nn_vi_surface::FN_CREATE_VI_SURFACE_NN),
765 )
766 } else {
767 None
768 },
769 create_wayland_surface_khr: if instance_enabled.khr_wayland_surface {
770 std::mem::transmute(
771 symbol(
772 crate::extensions::khr_wayland_surface::FN_CREATE_WAYLAND_SURFACE_KHR,
773 ),
774 )
775 } else {
776 None
777 },
778 get_physical_device_wayland_presentation_support_khr: if instance_enabled
779 .khr_wayland_surface
780 {
781 std::mem::transmute(
782 symbol(
783 crate::extensions::khr_wayland_surface::FN_GET_PHYSICAL_DEVICE_WAYLAND_PRESENTATION_SUPPORT_KHR,
784 ),
785 )
786 } else {
787 None
788 },
789 create_win32_surface_khr: if instance_enabled.khr_win32_surface {
790 std::mem::transmute(
791 symbol(
792 crate::extensions::khr_win32_surface::FN_CREATE_WIN32_SURFACE_KHR,
793 ),
794 )
795 } else {
796 None
797 },
798 get_physical_device_win32_presentation_support_khr: if instance_enabled
799 .khr_win32_surface
800 {
801 std::mem::transmute(
802 symbol(
803 crate::extensions::khr_win32_surface::FN_GET_PHYSICAL_DEVICE_WIN32_PRESENTATION_SUPPORT_KHR,
804 ),
805 )
806 } else {
807 None
808 },
809 create_xlib_surface_khr: if instance_enabled.khr_xlib_surface {
810 std::mem::transmute(
811 symbol(
812 crate::extensions::khr_xlib_surface::FN_CREATE_XLIB_SURFACE_KHR,
813 ),
814 )
815 } else {
816 None
817 },
818 get_physical_device_xlib_presentation_support_khr: if instance_enabled
819 .khr_xlib_surface
820 {
821 std::mem::transmute(
822 symbol(
823 crate::extensions::khr_xlib_surface::FN_GET_PHYSICAL_DEVICE_XLIB_PRESENTATION_SUPPORT_KHR,
824 ),
825 )
826 } else {
827 None
828 },
829 create_xcb_surface_khr: if instance_enabled.khr_xcb_surface {
830 std::mem::transmute(
831 symbol(crate::extensions::khr_xcb_surface::FN_CREATE_XCB_SURFACE_KHR),
832 )
833 } else {
834 None
835 },
836 get_physical_device_xcb_presentation_support_khr: if instance_enabled
837 .khr_xcb_surface
838 {
839 std::mem::transmute(
840 symbol(
841 crate::extensions::khr_xcb_surface::FN_GET_PHYSICAL_DEVICE_XCB_PRESENTATION_SUPPORT_KHR,
842 ),
843 )
844 } else {
845 None
846 },
847 create_direct_fb_surface_ext: if instance_enabled.ext_directfb_surface {
848 std::mem::transmute(
849 symbol(
850 crate::extensions::ext_directfb_surface::FN_CREATE_DIRECT_FB_SURFACE_EXT,
851 ),
852 )
853 } else {
854 None
855 },
856 get_physical_device_direct_fb_presentation_support_ext: if instance_enabled
857 .ext_directfb_surface
858 {
859 std::mem::transmute(
860 symbol(
861 crate::extensions::ext_directfb_surface::FN_GET_PHYSICAL_DEVICE_DIRECT_FB_PRESENTATION_SUPPORT_EXT,
862 ),
863 )
864 } else {
865 None
866 },
867 create_image_pipe_surface_fuchsia: if instance_enabled
868 .fuchsia_imagepipe_surface
869 {
870 std::mem::transmute(
871 symbol(
872 crate::extensions::fuchsia_imagepipe_surface::FN_CREATE_IMAGE_PIPE_SURFACE_FUCHSIA,
873 ),
874 )
875 } else {
876 None
877 },
878 create_stream_descriptor_surface_ggp: if instance_enabled
879 .ggp_stream_descriptor_surface
880 {
881 std::mem::transmute(
882 symbol(
883 crate::extensions::ggp_stream_descriptor_surface::FN_CREATE_STREAM_DESCRIPTOR_SURFACE_GGP,
884 ),
885 )
886 } else {
887 None
888 },
889 create_screen_surface_qnx: if instance_enabled.qnx_screen_surface {
890 std::mem::transmute(
891 symbol(
892 crate::extensions::qnx_screen_surface::FN_CREATE_SCREEN_SURFACE_QNX,
893 ),
894 )
895 } else {
896 None
897 },
898 get_physical_device_screen_presentation_support_qnx: if instance_enabled
899 .qnx_screen_surface
900 {
901 std::mem::transmute(
902 symbol(
903 crate::extensions::qnx_screen_surface::FN_GET_PHYSICAL_DEVICE_SCREEN_PRESENTATION_SUPPORT_QNX,
904 ),
905 )
906 } else {
907 None
908 },
909 create_debug_report_callback_ext: if instance_enabled.ext_debug_report {
910 std::mem::transmute(
911 symbol(
912 crate::extensions::ext_debug_report::FN_CREATE_DEBUG_REPORT_CALLBACK_EXT,
913 ),
914 )
915 } else {
916 None
917 },
918 destroy_debug_report_callback_ext: if instance_enabled.ext_debug_report {
919 std::mem::transmute(
920 symbol(
921 crate::extensions::ext_debug_report::FN_DESTROY_DEBUG_REPORT_CALLBACK_EXT,
922 ),
923 )
924 } else {
925 None
926 },
927 debug_report_message_ext: if instance_enabled.ext_debug_report {
928 std::mem::transmute(
929 symbol(
930 crate::extensions::ext_debug_report::FN_DEBUG_REPORT_MESSAGE_EXT,
931 ),
932 )
933 } else {
934 None
935 },
936 get_physical_device_external_image_format_properties_nv: if instance_enabled
937 .nv_external_memory_capabilities
938 {
939 std::mem::transmute(
940 symbol(
941 crate::extensions::nv_external_memory_capabilities::FN_GET_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_NV,
942 ),
943 )
944 } else {
945 None
946 },
947 get_physical_device_features2: if instance_enabled.vk1_1 {
948 std::mem::transmute(
949 symbol(crate::vk1_1::FN_GET_PHYSICAL_DEVICE_FEATURES2),
950 )
951 } else {
952 None
953 },
954 get_physical_device_properties2: if instance_enabled.vk1_1 {
955 std::mem::transmute(
956 symbol(crate::vk1_1::FN_GET_PHYSICAL_DEVICE_PROPERTIES2),
957 )
958 } else {
959 None
960 },
961 get_physical_device_format_properties2: if instance_enabled.vk1_1 {
962 std::mem::transmute(
963 symbol(crate::vk1_1::FN_GET_PHYSICAL_DEVICE_FORMAT_PROPERTIES2),
964 )
965 } else {
966 None
967 },
968 get_physical_device_image_format_properties2: if instance_enabled.vk1_1 {
969 std::mem::transmute(
970 symbol(crate::vk1_1::FN_GET_PHYSICAL_DEVICE_IMAGE_FORMAT_PROPERTIES2),
971 )
972 } else {
973 None
974 },
975 get_physical_device_queue_family_properties2: if instance_enabled.vk1_1 {
976 std::mem::transmute(
977 symbol(crate::vk1_1::FN_GET_PHYSICAL_DEVICE_QUEUE_FAMILY_PROPERTIES2),
978 )
979 } else {
980 None
981 },
982 get_physical_device_memory_properties2: if instance_enabled.vk1_1 {
983 std::mem::transmute(
984 symbol(crate::vk1_1::FN_GET_PHYSICAL_DEVICE_MEMORY_PROPERTIES2),
985 )
986 } else {
987 None
988 },
989 get_physical_device_sparse_image_format_properties2: if instance_enabled
990 .vk1_1
991 {
992 std::mem::transmute(
993 symbol(
994 crate::vk1_1::FN_GET_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_PROPERTIES2,
995 ),
996 )
997 } else {
998 None
999 },
1000 get_physical_device_external_buffer_properties: if instance_enabled.vk1_1 {
1001 std::mem::transmute(
1002 symbol(
1003 crate::vk1_1::FN_GET_PHYSICAL_DEVICE_EXTERNAL_BUFFER_PROPERTIES,
1004 ),
1005 )
1006 } else {
1007 None
1008 },
1009 get_physical_device_external_semaphore_properties: if instance_enabled.vk1_1
1010 {
1011 std::mem::transmute(
1012 symbol(
1013 crate::vk1_1::FN_GET_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_PROPERTIES,
1014 ),
1015 )
1016 } else {
1017 None
1018 },
1019 get_physical_device_external_fence_properties: if instance_enabled.vk1_1 {
1020 std::mem::transmute(
1021 symbol(
1022 crate::vk1_1::FN_GET_PHYSICAL_DEVICE_EXTERNAL_FENCE_PROPERTIES,
1023 ),
1024 )
1025 } else {
1026 None
1027 },
1028 release_display_ext: if instance_enabled.ext_direct_mode_display {
1029 std::mem::transmute(
1030 symbol(
1031 crate::extensions::ext_direct_mode_display::FN_RELEASE_DISPLAY_EXT,
1032 ),
1033 )
1034 } else {
1035 None
1036 },
1037 acquire_xlib_display_ext: if instance_enabled.ext_acquire_xlib_display {
1038 std::mem::transmute(
1039 symbol(
1040 crate::extensions::ext_acquire_xlib_display::FN_ACQUIRE_XLIB_DISPLAY_EXT,
1041 ),
1042 )
1043 } else {
1044 None
1045 },
1046 get_rand_r_output_display_ext: if instance_enabled.ext_acquire_xlib_display {
1047 std::mem::transmute(
1048 symbol(
1049 crate::extensions::ext_acquire_xlib_display::FN_GET_RAND_R_OUTPUT_DISPLAY_EXT,
1050 ),
1051 )
1052 } else {
1053 None
1054 },
1055 acquire_winrt_display_nv: if instance_enabled.nv_acquire_winrt_display {
1056 std::mem::transmute(
1057 symbol(
1058 crate::extensions::nv_acquire_winrt_display::FN_ACQUIRE_WINRT_DISPLAY_NV,
1059 ),
1060 )
1061 } else {
1062 None
1063 },
1064 get_winrt_display_nv: if instance_enabled.nv_acquire_winrt_display {
1065 std::mem::transmute(
1066 symbol(
1067 crate::extensions::nv_acquire_winrt_display::FN_GET_WINRT_DISPLAY_NV,
1068 ),
1069 )
1070 } else {
1071 None
1072 },
1073 get_physical_device_surface_capabilities2_ext: if instance_enabled
1074 .ext_display_surface_counter
1075 {
1076 std::mem::transmute(
1077 symbol(
1078 crate::extensions::ext_display_surface_counter::FN_GET_PHYSICAL_DEVICE_SURFACE_CAPABILITIES2_EXT,
1079 ),
1080 )
1081 } else {
1082 None
1083 },
1084 enumerate_physical_device_groups: if instance_enabled.vk1_1 {
1085 std::mem::transmute(
1086 symbol(crate::vk1_1::FN_ENUMERATE_PHYSICAL_DEVICE_GROUPS),
1087 )
1088 } else {
1089 None
1090 },
1091 get_physical_device_present_rectangles_khr: if (instance_enabled
1092 .khr_swapchain && instance_enabled.vk1_1)
1093 || (instance_enabled.khr_device_group && instance_enabled.khr_surface)
1094 {
1095 std::mem::transmute(
1096 symbol(
1097 crate::extensions::khr_swapchain::FN_GET_PHYSICAL_DEVICE_PRESENT_RECTANGLES_KHR,
1098 ),
1099 )
1100 } else {
1101 None
1102 },
1103 create_ios_surface_mvk: if instance_enabled.mvk_ios_surface {
1104 std::mem::transmute(
1105 symbol(crate::extensions::mvk_ios_surface::FN_CREATE_IOS_SURFACE_MVK),
1106 )
1107 } else {
1108 None
1109 },
1110 create_mac_os_surface_mvk: if instance_enabled.mvk_macos_surface {
1111 std::mem::transmute(
1112 symbol(
1113 crate::extensions::mvk_macos_surface::FN_CREATE_MAC_OS_SURFACE_MVK,
1114 ),
1115 )
1116 } else {
1117 None
1118 },
1119 create_metal_surface_ext: if instance_enabled.ext_metal_surface {
1120 std::mem::transmute(
1121 symbol(
1122 crate::extensions::ext_metal_surface::FN_CREATE_METAL_SURFACE_EXT,
1123 ),
1124 )
1125 } else {
1126 None
1127 },
1128 get_physical_device_multisample_properties_ext: if instance_enabled
1129 .ext_sample_locations
1130 {
1131 std::mem::transmute(
1132 symbol(
1133 crate::extensions::ext_sample_locations::FN_GET_PHYSICAL_DEVICE_MULTISAMPLE_PROPERTIES_EXT,
1134 ),
1135 )
1136 } else {
1137 None
1138 },
1139 get_physical_device_surface_capabilities2_khr: if instance_enabled
1140 .khr_get_surface_capabilities2
1141 {
1142 std::mem::transmute(
1143 symbol(
1144 crate::extensions::khr_get_surface_capabilities2::FN_GET_PHYSICAL_DEVICE_SURFACE_CAPABILITIES2_KHR,
1145 ),
1146 )
1147 } else {
1148 None
1149 },
1150 get_physical_device_surface_formats2_khr: if instance_enabled
1151 .khr_get_surface_capabilities2
1152 {
1153 std::mem::transmute(
1154 symbol(
1155 crate::extensions::khr_get_surface_capabilities2::FN_GET_PHYSICAL_DEVICE_SURFACE_FORMATS2_KHR,
1156 ),
1157 )
1158 } else {
1159 None
1160 },
1161 get_physical_device_display_properties2_khr: if instance_enabled
1162 .khr_get_display_properties2
1163 {
1164 std::mem::transmute(
1165 symbol(
1166 crate::extensions::khr_get_display_properties2::FN_GET_PHYSICAL_DEVICE_DISPLAY_PROPERTIES2_KHR,
1167 ),
1168 )
1169 } else {
1170 None
1171 },
1172 get_physical_device_display_plane_properties2_khr: if instance_enabled
1173 .khr_get_display_properties2
1174 {
1175 std::mem::transmute(
1176 symbol(
1177 crate::extensions::khr_get_display_properties2::FN_GET_PHYSICAL_DEVICE_DISPLAY_PLANE_PROPERTIES2_KHR,
1178 ),
1179 )
1180 } else {
1181 None
1182 },
1183 get_display_mode_properties2_khr: if instance_enabled
1184 .khr_get_display_properties2
1185 {
1186 std::mem::transmute(
1187 symbol(
1188 crate::extensions::khr_get_display_properties2::FN_GET_DISPLAY_MODE_PROPERTIES2_KHR,
1189 ),
1190 )
1191 } else {
1192 None
1193 },
1194 get_display_plane_capabilities2_khr: if instance_enabled
1195 .khr_get_display_properties2
1196 {
1197 std::mem::transmute(
1198 symbol(
1199 crate::extensions::khr_get_display_properties2::FN_GET_DISPLAY_PLANE_CAPABILITIES2_KHR,
1200 ),
1201 )
1202 } else {
1203 None
1204 },
1205 get_physical_device_calibrateable_time_domains_ext: if instance_enabled
1206 .ext_calibrated_timestamps
1207 {
1208 std::mem::transmute(
1209 symbol(
1210 crate::extensions::ext_calibrated_timestamps::FN_GET_PHYSICAL_DEVICE_CALIBRATEABLE_TIME_DOMAINS_EXT,
1211 ),
1212 )
1213 } else {
1214 None
1215 },
1216 create_debug_utils_messenger_ext: if instance_enabled.ext_debug_utils {
1217 std::mem::transmute(
1218 symbol(
1219 crate::extensions::ext_debug_utils::FN_CREATE_DEBUG_UTILS_MESSENGER_EXT,
1220 ),
1221 )
1222 } else {
1223 None
1224 },
1225 destroy_debug_utils_messenger_ext: if instance_enabled.ext_debug_utils {
1226 std::mem::transmute(
1227 symbol(
1228 crate::extensions::ext_debug_utils::FN_DESTROY_DEBUG_UTILS_MESSENGER_EXT,
1229 ),
1230 )
1231 } else {
1232 None
1233 },
1234 submit_debug_utils_message_ext: if instance_enabled.ext_debug_utils {
1235 std::mem::transmute(
1236 symbol(
1237 crate::extensions::ext_debug_utils::FN_SUBMIT_DEBUG_UTILS_MESSAGE_EXT,
1238 ),
1239 )
1240 } else {
1241 None
1242 },
1243 get_physical_device_cooperative_matrix_properties_nv: if instance_enabled
1244 .nv_cooperative_matrix
1245 {
1246 std::mem::transmute(
1247 symbol(
1248 crate::extensions::nv_cooperative_matrix::FN_GET_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
1249 ),
1250 )
1251 } else {
1252 None
1253 },
1254 get_physical_device_surface_present_modes2_ext: if instance_enabled
1255 .ext_full_screen_exclusive
1256 {
1257 std::mem::transmute(
1258 symbol(
1259 crate::extensions::ext_full_screen_exclusive::FN_GET_PHYSICAL_DEVICE_SURFACE_PRESENT_MODES2_EXT,
1260 ),
1261 )
1262 } else {
1263 None
1264 },
1265 enumerate_physical_device_queue_family_performance_query_counters_khr: if instance_enabled
1266 .khr_performance_query
1267 {
1268 std::mem::transmute(
1269 symbol(
1270 crate::extensions::khr_performance_query::FN_ENUMERATE_PHYSICAL_DEVICE_QUEUE_FAMILY_PERFORMANCE_QUERY_COUNTERS_KHR,
1271 ),
1272 )
1273 } else {
1274 None
1275 },
1276 get_physical_device_queue_family_performance_query_passes_khr: if instance_enabled
1277 .khr_performance_query
1278 {
1279 std::mem::transmute(
1280 symbol(
1281 crate::extensions::khr_performance_query::FN_GET_PHYSICAL_DEVICE_QUEUE_FAMILY_PERFORMANCE_QUERY_PASSES_KHR,
1282 ),
1283 )
1284 } else {
1285 None
1286 },
1287 create_headless_surface_ext: if instance_enabled.ext_headless_surface {
1288 std::mem::transmute(
1289 symbol(
1290 crate::extensions::ext_headless_surface::FN_CREATE_HEADLESS_SURFACE_EXT,
1291 ),
1292 )
1293 } else {
1294 None
1295 },
1296 get_physical_device_supported_framebuffer_mixed_samples_combinations_nv: if instance_enabled
1297 .nv_coverage_reduction_mode
1298 {
1299 std::mem::transmute(
1300 symbol(
1301 crate::extensions::nv_coverage_reduction_mode::FN_GET_PHYSICAL_DEVICE_SUPPORTED_FRAMEBUFFER_MIXED_SAMPLES_COMBINATIONS_NV,
1302 ),
1303 )
1304 } else {
1305 None
1306 },
1307 get_physical_device_tool_properties: if instance_enabled.vk1_3 {
1308 std::mem::transmute(
1309 symbol(crate::vk1_3::FN_GET_PHYSICAL_DEVICE_TOOL_PROPERTIES),
1310 )
1311 } else {
1312 None
1313 },
1314 get_physical_device_fragment_shading_rates_khr: if instance_enabled
1315 .khr_fragment_shading_rate
1316 {
1317 std::mem::transmute(
1318 symbol(
1319 crate::extensions::khr_fragment_shading_rate::FN_GET_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATES_KHR,
1320 ),
1321 )
1322 } else {
1323 None
1324 },
1325 get_physical_device_video_capabilities_khr: if instance_enabled
1326 .khr_video_queue
1327 {
1328 std::mem::transmute(
1329 symbol(
1330 crate::extensions::khr_video_queue::FN_GET_PHYSICAL_DEVICE_VIDEO_CAPABILITIES_KHR,
1331 ),
1332 )
1333 } else {
1334 None
1335 },
1336 get_physical_device_video_format_properties_khr: if instance_enabled
1337 .khr_video_queue
1338 {
1339 std::mem::transmute(
1340 symbol(
1341 crate::extensions::khr_video_queue::FN_GET_PHYSICAL_DEVICE_VIDEO_FORMAT_PROPERTIES_KHR,
1342 ),
1343 )
1344 } else {
1345 None
1346 },
1347 acquire_drm_display_ext: if instance_enabled.ext_acquire_drm_display {
1348 std::mem::transmute(
1349 symbol(
1350 crate::extensions::ext_acquire_drm_display::FN_ACQUIRE_DRM_DISPLAY_EXT,
1351 ),
1352 )
1353 } else {
1354 None
1355 },
1356 get_drm_display_ext: if instance_enabled.ext_acquire_drm_display {
1357 std::mem::transmute(
1358 symbol(
1359 crate::extensions::ext_acquire_drm_display::FN_GET_DRM_DISPLAY_EXT,
1360 ),
1361 )
1362 } else {
1363 None
1364 },
1365 get_physical_device_features2_khr: if instance_enabled
1366 .khr_get_physical_device_properties2
1367 {
1368 std::mem::transmute(
1369 symbol(
1370 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_FEATURES2_KHR,
1371 ),
1372 )
1373 } else {
1374 None
1375 },
1376 get_physical_device_properties2_khr: if instance_enabled
1377 .khr_get_physical_device_properties2
1378 {
1379 std::mem::transmute(
1380 symbol(
1381 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_PROPERTIES2_KHR,
1382 ),
1383 )
1384 } else {
1385 None
1386 },
1387 get_physical_device_format_properties2_khr: if instance_enabled
1388 .khr_get_physical_device_properties2
1389 {
1390 std::mem::transmute(
1391 symbol(
1392 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_FORMAT_PROPERTIES2_KHR,
1393 ),
1394 )
1395 } else {
1396 None
1397 },
1398 get_physical_device_image_format_properties2_khr: if instance_enabled
1399 .khr_get_physical_device_properties2
1400 {
1401 std::mem::transmute(
1402 symbol(
1403 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_IMAGE_FORMAT_PROPERTIES2_KHR,
1404 ),
1405 )
1406 } else {
1407 None
1408 },
1409 get_physical_device_queue_family_properties2_khr: if instance_enabled
1410 .khr_get_physical_device_properties2
1411 {
1412 std::mem::transmute(
1413 symbol(
1414 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_QUEUE_FAMILY_PROPERTIES2_KHR,
1415 ),
1416 )
1417 } else {
1418 None
1419 },
1420 get_physical_device_memory_properties2_khr: if instance_enabled
1421 .khr_get_physical_device_properties2
1422 {
1423 std::mem::transmute(
1424 symbol(
1425 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_MEMORY_PROPERTIES2_KHR,
1426 ),
1427 )
1428 } else {
1429 None
1430 },
1431 get_physical_device_sparse_image_format_properties2_khr: if instance_enabled
1432 .khr_get_physical_device_properties2
1433 {
1434 std::mem::transmute(
1435 symbol(
1436 crate::extensions::khr_get_physical_device_properties2::FN_GET_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_PROPERTIES2_KHR,
1437 ),
1438 )
1439 } else {
1440 None
1441 },
1442 get_physical_device_external_buffer_properties_khr: if instance_enabled
1443 .khr_external_memory_capabilities
1444 {
1445 std::mem::transmute(
1446 symbol(
1447 crate::extensions::khr_external_memory_capabilities::FN_GET_PHYSICAL_DEVICE_EXTERNAL_BUFFER_PROPERTIES_KHR,
1448 ),
1449 )
1450 } else {
1451 None
1452 },
1453 get_physical_device_external_semaphore_properties_khr: if instance_enabled
1454 .khr_external_semaphore_capabilities
1455 {
1456 std::mem::transmute(
1457 symbol(
1458 crate::extensions::khr_external_semaphore_capabilities::FN_GET_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
1459 ),
1460 )
1461 } else {
1462 None
1463 },
1464 get_physical_device_external_fence_properties_khr: if instance_enabled
1465 .khr_external_fence_capabilities
1466 {
1467 std::mem::transmute(
1468 symbol(
1469 crate::extensions::khr_external_fence_capabilities::FN_GET_PHYSICAL_DEVICE_EXTERNAL_FENCE_PROPERTIES_KHR,
1470 ),
1471 )
1472 } else {
1473 None
1474 },
1475 enumerate_physical_device_groups_khr: if instance_enabled
1476 .khr_device_group_creation
1477 {
1478 std::mem::transmute(
1479 symbol(
1480 crate::extensions::khr_device_group_creation::FN_ENUMERATE_PHYSICAL_DEVICE_GROUPS_KHR,
1481 ),
1482 )
1483 } else {
1484 None
1485 },
1486 get_physical_device_tool_properties_ext: if instance_enabled.ext_tooling_info
1487 {
1488 std::mem::transmute(
1489 symbol(
1490 crate::extensions::ext_tooling_info::FN_GET_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,
1491 ),
1492 )
1493 } else {
1494 None
1495 },
1496 enabled: instance_enabled,
1497 })
1498 }
1499}
1500#[derive(Debug)]
1502pub struct DeviceEnabled {
1503 pub huawei_subpass_shading: bool,
1504 pub ext_multi_draw: bool,
1505 pub ext_conditional_rendering: bool,
1506 pub khr_display_swapchain: bool,
1507 pub khr_swapchain: bool,
1508 pub ext_debug_marker: bool,
1509 pub nv_external_memory_win32: bool,
1510 pub nv_device_generated_commands: bool,
1511 pub khr_push_descriptor: bool,
1512 pub khr_external_memory_win32: bool,
1513 pub khr_external_memory_fd: bool,
1514 pub fuchsia_external_memory: bool,
1515 pub nv_external_memory_rdma: bool,
1516 pub khr_external_semaphore_win32: bool,
1517 pub khr_external_semaphore_fd: bool,
1518 pub fuchsia_external_semaphore: bool,
1519 pub khr_external_fence_win32: bool,
1520 pub khr_external_fence_fd: bool,
1521 pub nv_acquire_winrt_display: bool,
1522 pub ext_display_control: bool,
1523 pub ext_hdr_metadata: bool,
1524 pub khr_shared_presentable_image: bool,
1525 pub google_display_timing: bool,
1526 pub nv_clip_space_w_scaling: bool,
1527 pub ext_discard_rectangles: bool,
1528 pub ext_sample_locations: bool,
1529 pub ext_validation_cache: bool,
1530 pub amd_shader_info: bool,
1531 pub amd_display_native_hdr: bool,
1532 pub ext_calibrated_timestamps: bool,
1533 pub ext_external_memory_host: bool,
1534 pub amd_buffer_marker: bool,
1535 pub android_external_memory_android_hardware_buffer: bool,
1536 pub nv_device_diagnostic_checkpoints: bool,
1537 pub ext_transform_feedback: bool,
1538 pub nv_scissor_exclusive: bool,
1539 pub nv_shading_rate_image: bool,
1540 pub nv_mesh_shader: bool,
1541 pub nv_ray_tracing: bool,
1542 pub huawei_invocation_mask: bool,
1543 pub khr_acceleration_structure: bool,
1544 pub khr_ray_tracing_pipeline: bool,
1545 pub nv_cooperative_matrix: bool,
1546 pub khr_ray_tracing_maintenance1: bool,
1547 pub nvx_image_view_handle: bool,
1548 pub ext_full_screen_exclusive: bool,
1549 pub khr_performance_query: bool,
1550 pub ext_image_drm_format_modifier: bool,
1551 pub nv_coverage_reduction_mode: bool,
1552 pub intel_performance_query: bool,
1553 pub khr_pipeline_executable_properties: bool,
1554 pub ext_line_rasterization: bool,
1555 pub khr_deferred_host_operations: bool,
1556 pub ext_extended_dynamic_state2: bool,
1557 pub khr_fragment_shading_rate: bool,
1558 pub nv_fragment_shading_rate_enums: bool,
1559 pub ext_vertex_input_dynamic_state: bool,
1560 pub ext_color_write_enable: bool,
1561 pub khr_synchronization2: bool,
1562 pub khr_video_queue: bool,
1563 pub khr_video_decode_queue: bool,
1564 pub khr_video_encode_queue: bool,
1565 pub nvx_binary_import: bool,
1566 pub ext_pageable_device_local_memory: bool,
1567 pub khr_present_wait: bool,
1568 pub fuchsia_buffer_collection: bool,
1569 pub valve_descriptor_set_host_mapping: bool,
1570 pub ext_image_compression_control: bool,
1571 pub ext_pipeline_properties: bool,
1572 pub ext_host_query_reset: bool,
1573 pub khr_maintenance1: bool,
1574 pub khr_device_group: bool,
1575 pub khr_bind_memory2: bool,
1576 pub khr_descriptor_update_template: bool,
1577 pub khr_get_memory_requirements2: bool,
1578 pub khr_maintenance4: bool,
1579 pub khr_sampler_ycbcr_conversion: bool,
1580 pub khr_maintenance3: bool,
1581 pub khr_create_renderpass2: bool,
1582 pub khr_timeline_semaphore: bool,
1583 pub khr_draw_indirect_count: bool,
1584 pub amd_draw_indirect_count: bool,
1585 pub khr_buffer_device_address: bool,
1586 pub ext_buffer_device_address: bool,
1587 pub ext_tooling_info: bool,
1588 pub ext_extended_dynamic_state: bool,
1589 pub ext_private_data: bool,
1590 pub khr_copy_commands2: bool,
1591 pub khr_dynamic_rendering: bool,
1592}
1593impl DeviceEnabled {
1594 pub(crate) unsafe fn new(enabled_extensions: &[&std::ffi::CStr]) -> DeviceEnabled {
1595 let enabled_extension = |extension| enabled_extensions
1596 .contains(&std::ffi::CStr::from_ptr(extension));
1597 DeviceEnabled {
1598 huawei_subpass_shading: enabled_extension(
1599 crate::extensions::huawei_subpass_shading::HUAWEI_SUBPASS_SHADING_EXTENSION_NAME,
1600 ),
1601 ext_multi_draw: enabled_extension(
1602 crate::extensions::ext_multi_draw::EXT_MULTI_DRAW_EXTENSION_NAME,
1603 ),
1604 ext_conditional_rendering: enabled_extension(
1605 crate::extensions::ext_conditional_rendering::EXT_CONDITIONAL_RENDERING_EXTENSION_NAME,
1606 ),
1607 khr_display_swapchain: enabled_extension(
1608 crate::extensions::khr_display_swapchain::KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME,
1609 ),
1610 khr_swapchain: enabled_extension(
1611 crate::extensions::khr_swapchain::KHR_SWAPCHAIN_EXTENSION_NAME,
1612 ),
1613 ext_debug_marker: enabled_extension(
1614 crate::extensions::ext_debug_marker::EXT_DEBUG_MARKER_EXTENSION_NAME,
1615 ),
1616 nv_external_memory_win32: enabled_extension(
1617 crate::extensions::nv_external_memory_win32::NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
1618 ),
1619 nv_device_generated_commands: enabled_extension(
1620 crate::extensions::nv_device_generated_commands::NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME,
1621 ),
1622 khr_push_descriptor: enabled_extension(
1623 crate::extensions::khr_push_descriptor::KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
1624 ),
1625 khr_external_memory_win32: enabled_extension(
1626 crate::extensions::khr_external_memory_win32::KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
1627 ),
1628 khr_external_memory_fd: enabled_extension(
1629 crate::extensions::khr_external_memory_fd::KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
1630 ),
1631 fuchsia_external_memory: enabled_extension(
1632 crate::extensions::fuchsia_external_memory::FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME,
1633 ),
1634 nv_external_memory_rdma: enabled_extension(
1635 crate::extensions::nv_external_memory_rdma::NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME,
1636 ),
1637 khr_external_semaphore_win32: enabled_extension(
1638 crate::extensions::khr_external_semaphore_win32::KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME,
1639 ),
1640 khr_external_semaphore_fd: enabled_extension(
1641 crate::extensions::khr_external_semaphore_fd::KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
1642 ),
1643 fuchsia_external_semaphore: enabled_extension(
1644 crate::extensions::fuchsia_external_semaphore::FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
1645 ),
1646 khr_external_fence_win32: enabled_extension(
1647 crate::extensions::khr_external_fence_win32::KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME,
1648 ),
1649 khr_external_fence_fd: enabled_extension(
1650 crate::extensions::khr_external_fence_fd::KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME,
1651 ),
1652 nv_acquire_winrt_display: enabled_extension(
1653 crate::extensions::nv_acquire_winrt_display::NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME,
1654 ),
1655 ext_display_control: enabled_extension(
1656 crate::extensions::ext_display_control::EXT_DISPLAY_CONTROL_EXTENSION_NAME,
1657 ),
1658 ext_hdr_metadata: enabled_extension(
1659 crate::extensions::ext_hdr_metadata::EXT_HDR_METADATA_EXTENSION_NAME,
1660 ),
1661 khr_shared_presentable_image: enabled_extension(
1662 crate::extensions::khr_shared_presentable_image::KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME,
1663 ),
1664 google_display_timing: enabled_extension(
1665 crate::extensions::google_display_timing::GOOGLE_DISPLAY_TIMING_EXTENSION_NAME,
1666 ),
1667 nv_clip_space_w_scaling: enabled_extension(
1668 crate::extensions::nv_clip_space_w_scaling::NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME,
1669 ),
1670 ext_discard_rectangles: enabled_extension(
1671 crate::extensions::ext_discard_rectangles::EXT_DISCARD_RECTANGLES_EXTENSION_NAME,
1672 ),
1673 ext_sample_locations: enabled_extension(
1674 crate::extensions::ext_sample_locations::EXT_SAMPLE_LOCATIONS_EXTENSION_NAME,
1675 ),
1676 ext_validation_cache: enabled_extension(
1677 crate::extensions::ext_validation_cache::EXT_VALIDATION_CACHE_EXTENSION_NAME,
1678 ),
1679 amd_shader_info: enabled_extension(
1680 crate::extensions::amd_shader_info::AMD_SHADER_INFO_EXTENSION_NAME,
1681 ),
1682 amd_display_native_hdr: enabled_extension(
1683 crate::extensions::amd_display_native_hdr::AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME,
1684 ),
1685 ext_calibrated_timestamps: enabled_extension(
1686 crate::extensions::ext_calibrated_timestamps::EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME,
1687 ),
1688 ext_external_memory_host: enabled_extension(
1689 crate::extensions::ext_external_memory_host::EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME,
1690 ),
1691 amd_buffer_marker: enabled_extension(
1692 crate::extensions::amd_buffer_marker::AMD_BUFFER_MARKER_EXTENSION_NAME,
1693 ),
1694 android_external_memory_android_hardware_buffer: enabled_extension(
1695 crate::extensions::android_external_memory_android_hardware_buffer::ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
1696 ),
1697 nv_device_diagnostic_checkpoints: enabled_extension(
1698 crate::extensions::nv_device_diagnostic_checkpoints::NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME,
1699 ),
1700 ext_transform_feedback: enabled_extension(
1701 crate::extensions::ext_transform_feedback::EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME,
1702 ),
1703 nv_scissor_exclusive: enabled_extension(
1704 crate::extensions::nv_scissor_exclusive::NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME,
1705 ),
1706 nv_shading_rate_image: enabled_extension(
1707 crate::extensions::nv_shading_rate_image::NV_SHADING_RATE_IMAGE_EXTENSION_NAME,
1708 ),
1709 nv_mesh_shader: enabled_extension(
1710 crate::extensions::nv_mesh_shader::NV_MESH_SHADER_EXTENSION_NAME,
1711 ),
1712 nv_ray_tracing: enabled_extension(
1713 crate::extensions::nv_ray_tracing::NV_RAY_TRACING_EXTENSION_NAME,
1714 ),
1715 huawei_invocation_mask: enabled_extension(
1716 crate::extensions::huawei_invocation_mask::HUAWEI_INVOCATION_MASK_EXTENSION_NAME,
1717 ),
1718 khr_acceleration_structure: enabled_extension(
1719 crate::extensions::khr_acceleration_structure::KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME,
1720 ),
1721 khr_ray_tracing_pipeline: enabled_extension(
1722 crate::extensions::khr_ray_tracing_pipeline::KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME,
1723 ),
1724 nv_cooperative_matrix: enabled_extension(
1725 crate::extensions::nv_cooperative_matrix::NV_COOPERATIVE_MATRIX_EXTENSION_NAME,
1726 ),
1727 khr_ray_tracing_maintenance1: enabled_extension(
1728 crate::extensions::khr_ray_tracing_maintenance1::KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME,
1729 ),
1730 nvx_image_view_handle: enabled_extension(
1731 crate::extensions::nvx_image_view_handle::NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME,
1732 ),
1733 ext_full_screen_exclusive: enabled_extension(
1734 crate::extensions::ext_full_screen_exclusive::EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
1735 ),
1736 khr_performance_query: enabled_extension(
1737 crate::extensions::khr_performance_query::KHR_PERFORMANCE_QUERY_EXTENSION_NAME,
1738 ),
1739 ext_image_drm_format_modifier: enabled_extension(
1740 crate::extensions::ext_image_drm_format_modifier::EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME,
1741 ),
1742 nv_coverage_reduction_mode: enabled_extension(
1743 crate::extensions::nv_coverage_reduction_mode::NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME,
1744 ),
1745 intel_performance_query: enabled_extension(
1746 crate::extensions::intel_performance_query::INTEL_PERFORMANCE_QUERY_EXTENSION_NAME,
1747 ),
1748 khr_pipeline_executable_properties: enabled_extension(
1749 crate::extensions::khr_pipeline_executable_properties::KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME,
1750 ),
1751 ext_line_rasterization: enabled_extension(
1752 crate::extensions::ext_line_rasterization::EXT_LINE_RASTERIZATION_EXTENSION_NAME,
1753 ),
1754 khr_deferred_host_operations: enabled_extension(
1755 crate::extensions::khr_deferred_host_operations::KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME,
1756 ),
1757 ext_extended_dynamic_state2: enabled_extension(
1758 crate::extensions::ext_extended_dynamic_state2::EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME,
1759 ),
1760 khr_fragment_shading_rate: enabled_extension(
1761 crate::extensions::khr_fragment_shading_rate::KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME,
1762 ),
1763 nv_fragment_shading_rate_enums: enabled_extension(
1764 crate::extensions::nv_fragment_shading_rate_enums::NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME,
1765 ),
1766 ext_vertex_input_dynamic_state: enabled_extension(
1767 crate::extensions::ext_vertex_input_dynamic_state::EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME,
1768 ),
1769 ext_color_write_enable: enabled_extension(
1770 crate::extensions::ext_color_write_enable::EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME,
1771 ),
1772 khr_synchronization2: enabled_extension(
1773 crate::extensions::khr_synchronization2::KHR_SYNCHRONIZATION_2_EXTENSION_NAME,
1774 ),
1775 khr_video_queue: enabled_extension(
1776 crate::extensions::khr_video_queue::KHR_VIDEO_QUEUE_EXTENSION_NAME,
1777 ),
1778 khr_video_decode_queue: enabled_extension(
1779 crate::extensions::khr_video_decode_queue::KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME,
1780 ),
1781 khr_video_encode_queue: enabled_extension(
1782 crate::extensions::khr_video_encode_queue::KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME,
1783 ),
1784 nvx_binary_import: enabled_extension(
1785 crate::extensions::nvx_binary_import::NVX_BINARY_IMPORT_EXTENSION_NAME,
1786 ),
1787 ext_pageable_device_local_memory: enabled_extension(
1788 crate::extensions::ext_pageable_device_local_memory::EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME,
1789 ),
1790 khr_present_wait: enabled_extension(
1791 crate::extensions::khr_present_wait::KHR_PRESENT_WAIT_EXTENSION_NAME,
1792 ),
1793 fuchsia_buffer_collection: enabled_extension(
1794 crate::extensions::fuchsia_buffer_collection::FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME,
1795 ),
1796 valve_descriptor_set_host_mapping: enabled_extension(
1797 crate::extensions::valve_descriptor_set_host_mapping::VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME,
1798 ),
1799 ext_image_compression_control: enabled_extension(
1800 crate::extensions::ext_image_compression_control::EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME,
1801 ),
1802 ext_pipeline_properties: enabled_extension(
1803 crate::extensions::ext_pipeline_properties::EXT_PIPELINE_PROPERTIES_EXTENSION_NAME,
1804 ),
1805 ext_host_query_reset: enabled_extension(
1806 crate::extensions::ext_host_query_reset::EXT_HOST_QUERY_RESET_EXTENSION_NAME,
1807 ),
1808 khr_maintenance1: enabled_extension(
1809 crate::extensions::khr_maintenance1::KHR_MAINTENANCE_1_EXTENSION_NAME,
1810 ),
1811 khr_device_group: enabled_extension(
1812 crate::extensions::khr_device_group::KHR_DEVICE_GROUP_EXTENSION_NAME,
1813 ),
1814 khr_bind_memory2: enabled_extension(
1815 crate::extensions::khr_bind_memory2::KHR_BIND_MEMORY_2_EXTENSION_NAME,
1816 ),
1817 khr_descriptor_update_template: enabled_extension(
1818 crate::extensions::khr_descriptor_update_template::KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
1819 ),
1820 khr_get_memory_requirements2: enabled_extension(
1821 crate::extensions::khr_get_memory_requirements2::KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
1822 ),
1823 khr_maintenance4: enabled_extension(
1824 crate::extensions::khr_maintenance4::KHR_MAINTENANCE_4_EXTENSION_NAME,
1825 ),
1826 khr_sampler_ycbcr_conversion: enabled_extension(
1827 crate::extensions::khr_sampler_ycbcr_conversion::KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
1828 ),
1829 khr_maintenance3: enabled_extension(
1830 crate::extensions::khr_maintenance3::KHR_MAINTENANCE_3_EXTENSION_NAME,
1831 ),
1832 khr_create_renderpass2: enabled_extension(
1833 crate::extensions::khr_create_renderpass2::KHR_CREATE_RENDERPASS_2_EXTENSION_NAME,
1834 ),
1835 khr_timeline_semaphore: enabled_extension(
1836 crate::extensions::khr_timeline_semaphore::KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME,
1837 ),
1838 khr_draw_indirect_count: enabled_extension(
1839 crate::extensions::khr_draw_indirect_count::KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
1840 ),
1841 amd_draw_indirect_count: enabled_extension(
1842 crate::extensions::amd_draw_indirect_count::AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
1843 ),
1844 khr_buffer_device_address: enabled_extension(
1845 crate::extensions::khr_buffer_device_address::KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
1846 ),
1847 ext_buffer_device_address: enabled_extension(
1848 crate::extensions::ext_buffer_device_address::EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
1849 ),
1850 ext_tooling_info: enabled_extension(
1851 crate::extensions::ext_tooling_info::EXT_TOOLING_INFO_EXTENSION_NAME,
1852 ),
1853 ext_extended_dynamic_state: enabled_extension(
1854 crate::extensions::ext_extended_dynamic_state::EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME,
1855 ),
1856 ext_private_data: enabled_extension(
1857 crate::extensions::ext_private_data::EXT_PRIVATE_DATA_EXTENSION_NAME,
1858 ),
1859 khr_copy_commands2: enabled_extension(
1860 crate::extensions::khr_copy_commands2::KHR_COPY_COMMANDS_2_EXTENSION_NAME,
1861 ),
1862 khr_dynamic_rendering: enabled_extension(
1863 crate::extensions::khr_dynamic_rendering::KHR_DYNAMIC_RENDERING_EXTENSION_NAME,
1864 ),
1865 }
1866 }
1867}
1868pub struct DeviceLoader {
1875 #[allow(dead_code)]
1876 parent: std::sync::Weak<()>,
1877 pub handle: crate::vk1_0::Device,
1878 pub(crate) enabled: DeviceEnabled,
1879 pub get_device_proc_addr: Option<vk1_0::PFN_vkGetDeviceProcAddr>,
1880 pub destroy_device: Option<vk1_0::PFN_vkDestroyDevice>,
1881 pub get_device_queue: Option<vk1_0::PFN_vkGetDeviceQueue>,
1882 pub queue_submit: Option<vk1_0::PFN_vkQueueSubmit>,
1883 pub queue_wait_idle: Option<vk1_0::PFN_vkQueueWaitIdle>,
1884 pub device_wait_idle: Option<vk1_0::PFN_vkDeviceWaitIdle>,
1885 pub allocate_memory: Option<vk1_0::PFN_vkAllocateMemory>,
1886 pub free_memory: Option<vk1_0::PFN_vkFreeMemory>,
1887 pub map_memory: Option<vk1_0::PFN_vkMapMemory>,
1888 pub unmap_memory: Option<vk1_0::PFN_vkUnmapMemory>,
1889 pub flush_mapped_memory_ranges: Option<vk1_0::PFN_vkFlushMappedMemoryRanges>,
1890 pub invalidate_mapped_memory_ranges: Option<
1891 vk1_0::PFN_vkInvalidateMappedMemoryRanges,
1892 >,
1893 pub get_device_memory_commitment: Option<vk1_0::PFN_vkGetDeviceMemoryCommitment>,
1894 pub get_buffer_memory_requirements: Option<vk1_0::PFN_vkGetBufferMemoryRequirements>,
1895 pub bind_buffer_memory: Option<vk1_0::PFN_vkBindBufferMemory>,
1896 pub get_image_memory_requirements: Option<vk1_0::PFN_vkGetImageMemoryRequirements>,
1897 pub bind_image_memory: Option<vk1_0::PFN_vkBindImageMemory>,
1898 pub get_image_sparse_memory_requirements: Option<
1899 vk1_0::PFN_vkGetImageSparseMemoryRequirements,
1900 >,
1901 pub queue_bind_sparse: Option<vk1_0::PFN_vkQueueBindSparse>,
1902 pub create_fence: Option<vk1_0::PFN_vkCreateFence>,
1903 pub destroy_fence: Option<vk1_0::PFN_vkDestroyFence>,
1904 pub reset_fences: Option<vk1_0::PFN_vkResetFences>,
1905 pub get_fence_status: Option<vk1_0::PFN_vkGetFenceStatus>,
1906 pub wait_for_fences: Option<vk1_0::PFN_vkWaitForFences>,
1907 pub create_semaphore: Option<vk1_0::PFN_vkCreateSemaphore>,
1908 pub destroy_semaphore: Option<vk1_0::PFN_vkDestroySemaphore>,
1909 pub create_event: Option<vk1_0::PFN_vkCreateEvent>,
1910 pub destroy_event: Option<vk1_0::PFN_vkDestroyEvent>,
1911 pub get_event_status: Option<vk1_0::PFN_vkGetEventStatus>,
1912 pub set_event: Option<vk1_0::PFN_vkSetEvent>,
1913 pub reset_event: Option<vk1_0::PFN_vkResetEvent>,
1914 pub create_query_pool: Option<vk1_0::PFN_vkCreateQueryPool>,
1915 pub destroy_query_pool: Option<vk1_0::PFN_vkDestroyQueryPool>,
1916 pub get_query_pool_results: Option<vk1_0::PFN_vkGetQueryPoolResults>,
1917 pub reset_query_pool: Option<vk1_2::PFN_vkResetQueryPool>,
1918 pub create_buffer: Option<vk1_0::PFN_vkCreateBuffer>,
1919 pub destroy_buffer: Option<vk1_0::PFN_vkDestroyBuffer>,
1920 pub create_buffer_view: Option<vk1_0::PFN_vkCreateBufferView>,
1921 pub destroy_buffer_view: Option<vk1_0::PFN_vkDestroyBufferView>,
1922 pub create_image: Option<vk1_0::PFN_vkCreateImage>,
1923 pub destroy_image: Option<vk1_0::PFN_vkDestroyImage>,
1924 pub get_image_subresource_layout: Option<vk1_0::PFN_vkGetImageSubresourceLayout>,
1925 pub create_image_view: Option<vk1_0::PFN_vkCreateImageView>,
1926 pub destroy_image_view: Option<vk1_0::PFN_vkDestroyImageView>,
1927 pub create_shader_module: Option<vk1_0::PFN_vkCreateShaderModule>,
1928 pub destroy_shader_module: Option<vk1_0::PFN_vkDestroyShaderModule>,
1929 pub create_pipeline_cache: Option<vk1_0::PFN_vkCreatePipelineCache>,
1930 pub destroy_pipeline_cache: Option<vk1_0::PFN_vkDestroyPipelineCache>,
1931 pub get_pipeline_cache_data: Option<vk1_0::PFN_vkGetPipelineCacheData>,
1932 pub merge_pipeline_caches: Option<vk1_0::PFN_vkMergePipelineCaches>,
1933 pub create_graphics_pipelines: Option<vk1_0::PFN_vkCreateGraphicsPipelines>,
1934 pub create_compute_pipelines: Option<vk1_0::PFN_vkCreateComputePipelines>,
1935 pub get_device_subpass_shading_max_workgroup_size_huawei: Option<
1936 extensions::huawei_subpass_shading::PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI,
1937 >,
1938 pub destroy_pipeline: Option<vk1_0::PFN_vkDestroyPipeline>,
1939 pub create_pipeline_layout: Option<vk1_0::PFN_vkCreatePipelineLayout>,
1940 pub destroy_pipeline_layout: Option<vk1_0::PFN_vkDestroyPipelineLayout>,
1941 pub create_sampler: Option<vk1_0::PFN_vkCreateSampler>,
1942 pub destroy_sampler: Option<vk1_0::PFN_vkDestroySampler>,
1943 pub create_descriptor_set_layout: Option<vk1_0::PFN_vkCreateDescriptorSetLayout>,
1944 pub destroy_descriptor_set_layout: Option<vk1_0::PFN_vkDestroyDescriptorSetLayout>,
1945 pub create_descriptor_pool: Option<vk1_0::PFN_vkCreateDescriptorPool>,
1946 pub destroy_descriptor_pool: Option<vk1_0::PFN_vkDestroyDescriptorPool>,
1947 pub reset_descriptor_pool: Option<vk1_0::PFN_vkResetDescriptorPool>,
1948 pub allocate_descriptor_sets: Option<vk1_0::PFN_vkAllocateDescriptorSets>,
1949 pub free_descriptor_sets: Option<vk1_0::PFN_vkFreeDescriptorSets>,
1950 pub update_descriptor_sets: Option<vk1_0::PFN_vkUpdateDescriptorSets>,
1951 pub create_framebuffer: Option<vk1_0::PFN_vkCreateFramebuffer>,
1952 pub destroy_framebuffer: Option<vk1_0::PFN_vkDestroyFramebuffer>,
1953 pub create_render_pass: Option<vk1_0::PFN_vkCreateRenderPass>,
1954 pub destroy_render_pass: Option<vk1_0::PFN_vkDestroyRenderPass>,
1955 pub get_render_area_granularity: Option<vk1_0::PFN_vkGetRenderAreaGranularity>,
1956 pub create_command_pool: Option<vk1_0::PFN_vkCreateCommandPool>,
1957 pub destroy_command_pool: Option<vk1_0::PFN_vkDestroyCommandPool>,
1958 pub reset_command_pool: Option<vk1_0::PFN_vkResetCommandPool>,
1959 pub allocate_command_buffers: Option<vk1_0::PFN_vkAllocateCommandBuffers>,
1960 pub free_command_buffers: Option<vk1_0::PFN_vkFreeCommandBuffers>,
1961 pub begin_command_buffer: Option<vk1_0::PFN_vkBeginCommandBuffer>,
1962 pub end_command_buffer: Option<vk1_0::PFN_vkEndCommandBuffer>,
1963 pub reset_command_buffer: Option<vk1_0::PFN_vkResetCommandBuffer>,
1964 pub cmd_bind_pipeline: Option<vk1_0::PFN_vkCmdBindPipeline>,
1965 pub cmd_set_viewport: Option<vk1_0::PFN_vkCmdSetViewport>,
1966 pub cmd_set_scissor: Option<vk1_0::PFN_vkCmdSetScissor>,
1967 pub cmd_set_line_width: Option<vk1_0::PFN_vkCmdSetLineWidth>,
1968 pub cmd_set_depth_bias: Option<vk1_0::PFN_vkCmdSetDepthBias>,
1969 pub cmd_set_blend_constants: Option<vk1_0::PFN_vkCmdSetBlendConstants>,
1970 pub cmd_set_depth_bounds: Option<vk1_0::PFN_vkCmdSetDepthBounds>,
1971 pub cmd_set_stencil_compare_mask: Option<vk1_0::PFN_vkCmdSetStencilCompareMask>,
1972 pub cmd_set_stencil_write_mask: Option<vk1_0::PFN_vkCmdSetStencilWriteMask>,
1973 pub cmd_set_stencil_reference: Option<vk1_0::PFN_vkCmdSetStencilReference>,
1974 pub cmd_bind_descriptor_sets: Option<vk1_0::PFN_vkCmdBindDescriptorSets>,
1975 pub cmd_bind_index_buffer: Option<vk1_0::PFN_vkCmdBindIndexBuffer>,
1976 pub cmd_bind_vertex_buffers: Option<vk1_0::PFN_vkCmdBindVertexBuffers>,
1977 pub cmd_draw: Option<vk1_0::PFN_vkCmdDraw>,
1978 pub cmd_draw_indexed: Option<vk1_0::PFN_vkCmdDrawIndexed>,
1979 pub cmd_draw_multi_ext: Option<extensions::ext_multi_draw::PFN_vkCmdDrawMultiEXT>,
1980 pub cmd_draw_multi_indexed_ext: Option<
1981 extensions::ext_multi_draw::PFN_vkCmdDrawMultiIndexedEXT,
1982 >,
1983 pub cmd_draw_indirect: Option<vk1_0::PFN_vkCmdDrawIndirect>,
1984 pub cmd_draw_indexed_indirect: Option<vk1_0::PFN_vkCmdDrawIndexedIndirect>,
1985 pub cmd_dispatch: Option<vk1_0::PFN_vkCmdDispatch>,
1986 pub cmd_dispatch_indirect: Option<vk1_0::PFN_vkCmdDispatchIndirect>,
1987 pub cmd_subpass_shading_huawei: Option<
1988 extensions::huawei_subpass_shading::PFN_vkCmdSubpassShadingHUAWEI,
1989 >,
1990 pub cmd_copy_buffer: Option<vk1_0::PFN_vkCmdCopyBuffer>,
1991 pub cmd_copy_image: Option<vk1_0::PFN_vkCmdCopyImage>,
1992 pub cmd_blit_image: Option<vk1_0::PFN_vkCmdBlitImage>,
1993 pub cmd_copy_buffer_to_image: Option<vk1_0::PFN_vkCmdCopyBufferToImage>,
1994 pub cmd_copy_image_to_buffer: Option<vk1_0::PFN_vkCmdCopyImageToBuffer>,
1995 pub cmd_update_buffer: Option<vk1_0::PFN_vkCmdUpdateBuffer>,
1996 pub cmd_fill_buffer: Option<vk1_0::PFN_vkCmdFillBuffer>,
1997 pub cmd_clear_color_image: Option<vk1_0::PFN_vkCmdClearColorImage>,
1998 pub cmd_clear_depth_stencil_image: Option<vk1_0::PFN_vkCmdClearDepthStencilImage>,
1999 pub cmd_clear_attachments: Option<vk1_0::PFN_vkCmdClearAttachments>,
2000 pub cmd_resolve_image: Option<vk1_0::PFN_vkCmdResolveImage>,
2001 pub cmd_set_event: Option<vk1_0::PFN_vkCmdSetEvent>,
2002 pub cmd_reset_event: Option<vk1_0::PFN_vkCmdResetEvent>,
2003 pub cmd_wait_events: Option<vk1_0::PFN_vkCmdWaitEvents>,
2004 pub cmd_pipeline_barrier: Option<vk1_0::PFN_vkCmdPipelineBarrier>,
2005 pub cmd_begin_query: Option<vk1_0::PFN_vkCmdBeginQuery>,
2006 pub cmd_end_query: Option<vk1_0::PFN_vkCmdEndQuery>,
2007 pub cmd_begin_conditional_rendering_ext: Option<
2008 extensions::ext_conditional_rendering::PFN_vkCmdBeginConditionalRenderingEXT,
2009 >,
2010 pub cmd_end_conditional_rendering_ext: Option<
2011 extensions::ext_conditional_rendering::PFN_vkCmdEndConditionalRenderingEXT,
2012 >,
2013 pub cmd_reset_query_pool: Option<vk1_0::PFN_vkCmdResetQueryPool>,
2014 pub cmd_write_timestamp: Option<vk1_0::PFN_vkCmdWriteTimestamp>,
2015 pub cmd_copy_query_pool_results: Option<vk1_0::PFN_vkCmdCopyQueryPoolResults>,
2016 pub cmd_push_constants: Option<vk1_0::PFN_vkCmdPushConstants>,
2017 pub cmd_begin_render_pass: Option<vk1_0::PFN_vkCmdBeginRenderPass>,
2018 pub cmd_next_subpass: Option<vk1_0::PFN_vkCmdNextSubpass>,
2019 pub cmd_end_render_pass: Option<vk1_0::PFN_vkCmdEndRenderPass>,
2020 pub cmd_execute_commands: Option<vk1_0::PFN_vkCmdExecuteCommands>,
2021 pub create_shared_swapchains_khr: Option<
2022 extensions::khr_display_swapchain::PFN_vkCreateSharedSwapchainsKHR,
2023 >,
2024 pub create_swapchain_khr: Option<
2025 extensions::khr_swapchain::PFN_vkCreateSwapchainKHR,
2026 >,
2027 pub destroy_swapchain_khr: Option<
2028 extensions::khr_swapchain::PFN_vkDestroySwapchainKHR,
2029 >,
2030 pub get_swapchain_images_khr: Option<
2031 extensions::khr_swapchain::PFN_vkGetSwapchainImagesKHR,
2032 >,
2033 pub acquire_next_image_khr: Option<
2034 extensions::khr_swapchain::PFN_vkAcquireNextImageKHR,
2035 >,
2036 pub queue_present_khr: Option<extensions::khr_swapchain::PFN_vkQueuePresentKHR>,
2037 pub debug_marker_set_object_name_ext: Option<
2038 extensions::ext_debug_marker::PFN_vkDebugMarkerSetObjectNameEXT,
2039 >,
2040 pub debug_marker_set_object_tag_ext: Option<
2041 extensions::ext_debug_marker::PFN_vkDebugMarkerSetObjectTagEXT,
2042 >,
2043 pub cmd_debug_marker_begin_ext: Option<
2044 extensions::ext_debug_marker::PFN_vkCmdDebugMarkerBeginEXT,
2045 >,
2046 pub cmd_debug_marker_end_ext: Option<
2047 extensions::ext_debug_marker::PFN_vkCmdDebugMarkerEndEXT,
2048 >,
2049 pub cmd_debug_marker_insert_ext: Option<
2050 extensions::ext_debug_marker::PFN_vkCmdDebugMarkerInsertEXT,
2051 >,
2052 pub get_memory_win32_handle_nv: Option<
2053 extensions::nv_external_memory_win32::PFN_vkGetMemoryWin32HandleNV,
2054 >,
2055 pub cmd_execute_generated_commands_nv: Option<
2056 extensions::nv_device_generated_commands::PFN_vkCmdExecuteGeneratedCommandsNV,
2057 >,
2058 pub cmd_preprocess_generated_commands_nv: Option<
2059 extensions::nv_device_generated_commands::PFN_vkCmdPreprocessGeneratedCommandsNV,
2060 >,
2061 pub cmd_bind_pipeline_shader_group_nv: Option<
2062 extensions::nv_device_generated_commands::PFN_vkCmdBindPipelineShaderGroupNV,
2063 >,
2064 pub get_generated_commands_memory_requirements_nv: Option<
2065 extensions::nv_device_generated_commands::PFN_vkGetGeneratedCommandsMemoryRequirementsNV,
2066 >,
2067 pub create_indirect_commands_layout_nv: Option<
2068 extensions::nv_device_generated_commands::PFN_vkCreateIndirectCommandsLayoutNV,
2069 >,
2070 pub destroy_indirect_commands_layout_nv: Option<
2071 extensions::nv_device_generated_commands::PFN_vkDestroyIndirectCommandsLayoutNV,
2072 >,
2073 pub cmd_push_descriptor_set_khr: Option<
2074 extensions::khr_push_descriptor::PFN_vkCmdPushDescriptorSetKHR,
2075 >,
2076 pub trim_command_pool: Option<vk1_1::PFN_vkTrimCommandPool>,
2077 pub get_memory_win32_handle_khr: Option<
2078 extensions::khr_external_memory_win32::PFN_vkGetMemoryWin32HandleKHR,
2079 >,
2080 pub get_memory_win32_handle_properties_khr: Option<
2081 extensions::khr_external_memory_win32::PFN_vkGetMemoryWin32HandlePropertiesKHR,
2082 >,
2083 pub get_memory_fd_khr: Option<
2084 extensions::khr_external_memory_fd::PFN_vkGetMemoryFdKHR,
2085 >,
2086 pub get_memory_fd_properties_khr: Option<
2087 extensions::khr_external_memory_fd::PFN_vkGetMemoryFdPropertiesKHR,
2088 >,
2089 pub get_memory_zircon_handle_fuchsia: Option<
2090 extensions::fuchsia_external_memory::PFN_vkGetMemoryZirconHandleFUCHSIA,
2091 >,
2092 pub get_memory_zircon_handle_properties_fuchsia: Option<
2093 extensions::fuchsia_external_memory::PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA,
2094 >,
2095 pub get_memory_remote_address_nv: Option<
2096 extensions::nv_external_memory_rdma::PFN_vkGetMemoryRemoteAddressNV,
2097 >,
2098 pub get_semaphore_win32_handle_khr: Option<
2099 extensions::khr_external_semaphore_win32::PFN_vkGetSemaphoreWin32HandleKHR,
2100 >,
2101 pub import_semaphore_win32_handle_khr: Option<
2102 extensions::khr_external_semaphore_win32::PFN_vkImportSemaphoreWin32HandleKHR,
2103 >,
2104 pub get_semaphore_fd_khr: Option<
2105 extensions::khr_external_semaphore_fd::PFN_vkGetSemaphoreFdKHR,
2106 >,
2107 pub import_semaphore_fd_khr: Option<
2108 extensions::khr_external_semaphore_fd::PFN_vkImportSemaphoreFdKHR,
2109 >,
2110 pub get_semaphore_zircon_handle_fuchsia: Option<
2111 extensions::fuchsia_external_semaphore::PFN_vkGetSemaphoreZirconHandleFUCHSIA,
2112 >,
2113 pub import_semaphore_zircon_handle_fuchsia: Option<
2114 extensions::fuchsia_external_semaphore::PFN_vkImportSemaphoreZirconHandleFUCHSIA,
2115 >,
2116 pub get_fence_win32_handle_khr: Option<
2117 extensions::khr_external_fence_win32::PFN_vkGetFenceWin32HandleKHR,
2118 >,
2119 pub import_fence_win32_handle_khr: Option<
2120 extensions::khr_external_fence_win32::PFN_vkImportFenceWin32HandleKHR,
2121 >,
2122 pub get_fence_fd_khr: Option<extensions::khr_external_fence_fd::PFN_vkGetFenceFdKHR>,
2123 pub import_fence_fd_khr: Option<
2124 extensions::khr_external_fence_fd::PFN_vkImportFenceFdKHR,
2125 >,
2126 pub display_power_control_ext: Option<
2127 extensions::ext_display_control::PFN_vkDisplayPowerControlEXT,
2128 >,
2129 pub register_device_event_ext: Option<
2130 extensions::ext_display_control::PFN_vkRegisterDeviceEventEXT,
2131 >,
2132 pub register_display_event_ext: Option<
2133 extensions::ext_display_control::PFN_vkRegisterDisplayEventEXT,
2134 >,
2135 pub get_swapchain_counter_ext: Option<
2136 extensions::ext_display_control::PFN_vkGetSwapchainCounterEXT,
2137 >,
2138 pub get_device_group_peer_memory_features: Option<
2139 vk1_1::PFN_vkGetDeviceGroupPeerMemoryFeatures,
2140 >,
2141 pub bind_buffer_memory2: Option<vk1_1::PFN_vkBindBufferMemory2>,
2142 pub bind_image_memory2: Option<vk1_1::PFN_vkBindImageMemory2>,
2143 pub cmd_set_device_mask: Option<vk1_1::PFN_vkCmdSetDeviceMask>,
2144 pub get_device_group_present_capabilities_khr: Option<
2145 extensions::khr_swapchain::PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
2146 >,
2147 pub get_device_group_surface_present_modes_khr: Option<
2148 extensions::khr_swapchain::PFN_vkGetDeviceGroupSurfacePresentModesKHR,
2149 >,
2150 pub acquire_next_image2_khr: Option<
2151 extensions::khr_swapchain::PFN_vkAcquireNextImage2KHR,
2152 >,
2153 pub cmd_dispatch_base: Option<vk1_1::PFN_vkCmdDispatchBase>,
2154 pub create_descriptor_update_template: Option<
2155 vk1_1::PFN_vkCreateDescriptorUpdateTemplate,
2156 >,
2157 pub destroy_descriptor_update_template: Option<
2158 vk1_1::PFN_vkDestroyDescriptorUpdateTemplate,
2159 >,
2160 pub update_descriptor_set_with_template: Option<
2161 vk1_1::PFN_vkUpdateDescriptorSetWithTemplate,
2162 >,
2163 pub cmd_push_descriptor_set_with_template_khr: Option<
2164 extensions::khr_push_descriptor::PFN_vkCmdPushDescriptorSetWithTemplateKHR,
2165 >,
2166 pub set_hdr_metadata_ext: Option<
2167 extensions::ext_hdr_metadata::PFN_vkSetHdrMetadataEXT,
2168 >,
2169 pub get_swapchain_status_khr: Option<
2170 extensions::khr_shared_presentable_image::PFN_vkGetSwapchainStatusKHR,
2171 >,
2172 pub get_refresh_cycle_duration_google: Option<
2173 extensions::google_display_timing::PFN_vkGetRefreshCycleDurationGOOGLE,
2174 >,
2175 pub get_past_presentation_timing_google: Option<
2176 extensions::google_display_timing::PFN_vkGetPastPresentationTimingGOOGLE,
2177 >,
2178 pub cmd_set_viewport_w_scaling_nv: Option<
2179 extensions::nv_clip_space_w_scaling::PFN_vkCmdSetViewportWScalingNV,
2180 >,
2181 pub cmd_set_discard_rectangle_ext: Option<
2182 extensions::ext_discard_rectangles::PFN_vkCmdSetDiscardRectangleEXT,
2183 >,
2184 pub cmd_set_sample_locations_ext: Option<
2185 extensions::ext_sample_locations::PFN_vkCmdSetSampleLocationsEXT,
2186 >,
2187 pub get_buffer_memory_requirements2: Option<
2188 vk1_1::PFN_vkGetBufferMemoryRequirements2,
2189 >,
2190 pub get_image_memory_requirements2: Option<vk1_1::PFN_vkGetImageMemoryRequirements2>,
2191 pub get_image_sparse_memory_requirements2: Option<
2192 vk1_1::PFN_vkGetImageSparseMemoryRequirements2,
2193 >,
2194 pub get_device_buffer_memory_requirements: Option<
2195 vk1_3::PFN_vkGetDeviceBufferMemoryRequirements,
2196 >,
2197 pub get_device_image_memory_requirements: Option<
2198 vk1_3::PFN_vkGetDeviceImageMemoryRequirements,
2199 >,
2200 pub get_device_image_sparse_memory_requirements: Option<
2201 vk1_3::PFN_vkGetDeviceImageSparseMemoryRequirements,
2202 >,
2203 pub create_sampler_ycbcr_conversion: Option<
2204 vk1_1::PFN_vkCreateSamplerYcbcrConversion,
2205 >,
2206 pub destroy_sampler_ycbcr_conversion: Option<
2207 vk1_1::PFN_vkDestroySamplerYcbcrConversion,
2208 >,
2209 pub get_device_queue2: Option<vk1_1::PFN_vkGetDeviceQueue2>,
2210 pub create_validation_cache_ext: Option<
2211 extensions::ext_validation_cache::PFN_vkCreateValidationCacheEXT,
2212 >,
2213 pub destroy_validation_cache_ext: Option<
2214 extensions::ext_validation_cache::PFN_vkDestroyValidationCacheEXT,
2215 >,
2216 pub get_validation_cache_data_ext: Option<
2217 extensions::ext_validation_cache::PFN_vkGetValidationCacheDataEXT,
2218 >,
2219 pub merge_validation_caches_ext: Option<
2220 extensions::ext_validation_cache::PFN_vkMergeValidationCachesEXT,
2221 >,
2222 pub get_descriptor_set_layout_support: Option<
2223 vk1_1::PFN_vkGetDescriptorSetLayoutSupport,
2224 >,
2225 pub get_shader_info_amd: Option<extensions::amd_shader_info::PFN_vkGetShaderInfoAMD>,
2226 pub set_local_dimming_amd: Option<
2227 extensions::amd_display_native_hdr::PFN_vkSetLocalDimmingAMD,
2228 >,
2229 pub get_calibrated_timestamps_ext: Option<
2230 extensions::ext_calibrated_timestamps::PFN_vkGetCalibratedTimestampsEXT,
2231 >,
2232 pub set_debug_utils_object_name_ext: Option<
2233 extensions::ext_debug_utils::PFN_vkSetDebugUtilsObjectNameEXT,
2234 >,
2235 pub set_debug_utils_object_tag_ext: Option<
2236 extensions::ext_debug_utils::PFN_vkSetDebugUtilsObjectTagEXT,
2237 >,
2238 pub queue_begin_debug_utils_label_ext: Option<
2239 extensions::ext_debug_utils::PFN_vkQueueBeginDebugUtilsLabelEXT,
2240 >,
2241 pub queue_end_debug_utils_label_ext: Option<
2242 extensions::ext_debug_utils::PFN_vkQueueEndDebugUtilsLabelEXT,
2243 >,
2244 pub queue_insert_debug_utils_label_ext: Option<
2245 extensions::ext_debug_utils::PFN_vkQueueInsertDebugUtilsLabelEXT,
2246 >,
2247 pub cmd_begin_debug_utils_label_ext: Option<
2248 extensions::ext_debug_utils::PFN_vkCmdBeginDebugUtilsLabelEXT,
2249 >,
2250 pub cmd_end_debug_utils_label_ext: Option<
2251 extensions::ext_debug_utils::PFN_vkCmdEndDebugUtilsLabelEXT,
2252 >,
2253 pub cmd_insert_debug_utils_label_ext: Option<
2254 extensions::ext_debug_utils::PFN_vkCmdInsertDebugUtilsLabelEXT,
2255 >,
2256 pub get_memory_host_pointer_properties_ext: Option<
2257 extensions::ext_external_memory_host::PFN_vkGetMemoryHostPointerPropertiesEXT,
2258 >,
2259 pub cmd_write_buffer_marker_amd: Option<
2260 extensions::amd_buffer_marker::PFN_vkCmdWriteBufferMarkerAMD,
2261 >,
2262 pub create_render_pass2: Option<vk1_2::PFN_vkCreateRenderPass2>,
2263 pub cmd_begin_render_pass2: Option<vk1_2::PFN_vkCmdBeginRenderPass2>,
2264 pub cmd_next_subpass2: Option<vk1_2::PFN_vkCmdNextSubpass2>,
2265 pub cmd_end_render_pass2: Option<vk1_2::PFN_vkCmdEndRenderPass2>,
2266 pub get_semaphore_counter_value: Option<vk1_2::PFN_vkGetSemaphoreCounterValue>,
2267 pub wait_semaphores: Option<vk1_2::PFN_vkWaitSemaphores>,
2268 pub signal_semaphore: Option<vk1_2::PFN_vkSignalSemaphore>,
2269 pub get_android_hardware_buffer_properties_android: Option<
2270 extensions::android_external_memory_android_hardware_buffer::PFN_vkGetAndroidHardwareBufferPropertiesANDROID,
2271 >,
2272 pub get_memory_android_hardware_buffer_android: Option<
2273 extensions::android_external_memory_android_hardware_buffer::PFN_vkGetMemoryAndroidHardwareBufferANDROID,
2274 >,
2275 pub cmd_draw_indirect_count: Option<vk1_2::PFN_vkCmdDrawIndirectCount>,
2276 pub cmd_draw_indexed_indirect_count: Option<
2277 vk1_2::PFN_vkCmdDrawIndexedIndirectCount,
2278 >,
2279 pub cmd_set_checkpoint_nv: Option<
2280 extensions::nv_device_diagnostic_checkpoints::PFN_vkCmdSetCheckpointNV,
2281 >,
2282 pub get_queue_checkpoint_data_nv: Option<
2283 extensions::nv_device_diagnostic_checkpoints::PFN_vkGetQueueCheckpointDataNV,
2284 >,
2285 pub cmd_bind_transform_feedback_buffers_ext: Option<
2286 extensions::ext_transform_feedback::PFN_vkCmdBindTransformFeedbackBuffersEXT,
2287 >,
2288 pub cmd_begin_transform_feedback_ext: Option<
2289 extensions::ext_transform_feedback::PFN_vkCmdBeginTransformFeedbackEXT,
2290 >,
2291 pub cmd_end_transform_feedback_ext: Option<
2292 extensions::ext_transform_feedback::PFN_vkCmdEndTransformFeedbackEXT,
2293 >,
2294 pub cmd_begin_query_indexed_ext: Option<
2295 extensions::ext_transform_feedback::PFN_vkCmdBeginQueryIndexedEXT,
2296 >,
2297 pub cmd_end_query_indexed_ext: Option<
2298 extensions::ext_transform_feedback::PFN_vkCmdEndQueryIndexedEXT,
2299 >,
2300 pub cmd_draw_indirect_byte_count_ext: Option<
2301 extensions::ext_transform_feedback::PFN_vkCmdDrawIndirectByteCountEXT,
2302 >,
2303 pub cmd_set_exclusive_scissor_nv: Option<
2304 extensions::nv_scissor_exclusive::PFN_vkCmdSetExclusiveScissorNV,
2305 >,
2306 pub cmd_bind_shading_rate_image_nv: Option<
2307 extensions::nv_shading_rate_image::PFN_vkCmdBindShadingRateImageNV,
2308 >,
2309 pub cmd_set_viewport_shading_rate_palette_nv: Option<
2310 extensions::nv_shading_rate_image::PFN_vkCmdSetViewportShadingRatePaletteNV,
2311 >,
2312 pub cmd_set_coarse_sample_order_nv: Option<
2313 extensions::nv_shading_rate_image::PFN_vkCmdSetCoarseSampleOrderNV,
2314 >,
2315 pub cmd_draw_mesh_tasks_nv: Option<
2316 extensions::nv_mesh_shader::PFN_vkCmdDrawMeshTasksNV,
2317 >,
2318 pub cmd_draw_mesh_tasks_indirect_nv: Option<
2319 extensions::nv_mesh_shader::PFN_vkCmdDrawMeshTasksIndirectNV,
2320 >,
2321 pub cmd_draw_mesh_tasks_indirect_count_nv: Option<
2322 extensions::nv_mesh_shader::PFN_vkCmdDrawMeshTasksIndirectCountNV,
2323 >,
2324 pub compile_deferred_nv: Option<extensions::nv_ray_tracing::PFN_vkCompileDeferredNV>,
2325 pub create_acceleration_structure_nv: Option<
2326 extensions::nv_ray_tracing::PFN_vkCreateAccelerationStructureNV,
2327 >,
2328 pub cmd_bind_invocation_mask_huawei: Option<
2329 extensions::huawei_invocation_mask::PFN_vkCmdBindInvocationMaskHUAWEI,
2330 >,
2331 pub destroy_acceleration_structure_khr: Option<
2332 extensions::khr_acceleration_structure::PFN_vkDestroyAccelerationStructureKHR,
2333 >,
2334 pub destroy_acceleration_structure_nv: Option<
2335 extensions::nv_ray_tracing::PFN_vkDestroyAccelerationStructureNV,
2336 >,
2337 pub get_acceleration_structure_memory_requirements_nv: Option<
2338 extensions::nv_ray_tracing::PFN_vkGetAccelerationStructureMemoryRequirementsNV,
2339 >,
2340 pub bind_acceleration_structure_memory_nv: Option<
2341 extensions::nv_ray_tracing::PFN_vkBindAccelerationStructureMemoryNV,
2342 >,
2343 pub cmd_copy_acceleration_structure_nv: Option<
2344 extensions::nv_ray_tracing::PFN_vkCmdCopyAccelerationStructureNV,
2345 >,
2346 pub cmd_copy_acceleration_structure_khr: Option<
2347 extensions::khr_acceleration_structure::PFN_vkCmdCopyAccelerationStructureKHR,
2348 >,
2349 pub copy_acceleration_structure_khr: Option<
2350 extensions::khr_acceleration_structure::PFN_vkCopyAccelerationStructureKHR,
2351 >,
2352 pub cmd_copy_acceleration_structure_to_memory_khr: Option<
2353 extensions::khr_acceleration_structure::PFN_vkCmdCopyAccelerationStructureToMemoryKHR,
2354 >,
2355 pub copy_acceleration_structure_to_memory_khr: Option<
2356 extensions::khr_acceleration_structure::PFN_vkCopyAccelerationStructureToMemoryKHR,
2357 >,
2358 pub cmd_copy_memory_to_acceleration_structure_khr: Option<
2359 extensions::khr_acceleration_structure::PFN_vkCmdCopyMemoryToAccelerationStructureKHR,
2360 >,
2361 pub copy_memory_to_acceleration_structure_khr: Option<
2362 extensions::khr_acceleration_structure::PFN_vkCopyMemoryToAccelerationStructureKHR,
2363 >,
2364 pub cmd_write_acceleration_structures_properties_khr: Option<
2365 extensions::khr_acceleration_structure::PFN_vkCmdWriteAccelerationStructuresPropertiesKHR,
2366 >,
2367 pub cmd_write_acceleration_structures_properties_nv: Option<
2368 extensions::nv_ray_tracing::PFN_vkCmdWriteAccelerationStructuresPropertiesNV,
2369 >,
2370 pub cmd_build_acceleration_structure_nv: Option<
2371 extensions::nv_ray_tracing::PFN_vkCmdBuildAccelerationStructureNV,
2372 >,
2373 pub write_acceleration_structures_properties_khr: Option<
2374 extensions::khr_acceleration_structure::PFN_vkWriteAccelerationStructuresPropertiesKHR,
2375 >,
2376 pub cmd_trace_rays_khr: Option<
2377 extensions::khr_ray_tracing_pipeline::PFN_vkCmdTraceRaysKHR,
2378 >,
2379 pub cmd_trace_rays_nv: Option<extensions::nv_ray_tracing::PFN_vkCmdTraceRaysNV>,
2380 pub get_ray_tracing_shader_group_handles_khr: Option<
2381 extensions::khr_ray_tracing_pipeline::PFN_vkGetRayTracingShaderGroupHandlesKHR,
2382 >,
2383 pub get_ray_tracing_capture_replay_shader_group_handles_khr: Option<
2384 extensions::khr_ray_tracing_pipeline::PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR,
2385 >,
2386 pub get_acceleration_structure_handle_nv: Option<
2387 extensions::nv_ray_tracing::PFN_vkGetAccelerationStructureHandleNV,
2388 >,
2389 pub create_ray_tracing_pipelines_nv: Option<
2390 extensions::nv_ray_tracing::PFN_vkCreateRayTracingPipelinesNV,
2391 >,
2392 pub create_ray_tracing_pipelines_khr: Option<
2393 extensions::khr_ray_tracing_pipeline::PFN_vkCreateRayTracingPipelinesKHR,
2394 >,
2395 pub cmd_trace_rays_indirect_khr: Option<
2396 extensions::khr_ray_tracing_pipeline::PFN_vkCmdTraceRaysIndirectKHR,
2397 >,
2398 pub cmd_trace_rays_indirect2_khr: Option<
2399 extensions::khr_ray_tracing_maintenance1::PFN_vkCmdTraceRaysIndirect2KHR,
2400 >,
2401 pub get_device_acceleration_structure_compatibility_khr: Option<
2402 extensions::khr_acceleration_structure::PFN_vkGetDeviceAccelerationStructureCompatibilityKHR,
2403 >,
2404 pub get_ray_tracing_shader_group_stack_size_khr: Option<
2405 extensions::khr_ray_tracing_pipeline::PFN_vkGetRayTracingShaderGroupStackSizeKHR,
2406 >,
2407 pub cmd_set_ray_tracing_pipeline_stack_size_khr: Option<
2408 extensions::khr_ray_tracing_pipeline::PFN_vkCmdSetRayTracingPipelineStackSizeKHR,
2409 >,
2410 pub get_image_view_handle_nvx: Option<
2411 extensions::nvx_image_view_handle::PFN_vkGetImageViewHandleNVX,
2412 >,
2413 pub get_image_view_address_nvx: Option<
2414 extensions::nvx_image_view_handle::PFN_vkGetImageViewAddressNVX,
2415 >,
2416 pub get_device_group_surface_present_modes2_ext: Option<
2417 extensions::ext_full_screen_exclusive::PFN_vkGetDeviceGroupSurfacePresentModes2EXT,
2418 >,
2419 pub acquire_full_screen_exclusive_mode_ext: Option<
2420 extensions::ext_full_screen_exclusive::PFN_vkAcquireFullScreenExclusiveModeEXT,
2421 >,
2422 pub release_full_screen_exclusive_mode_ext: Option<
2423 extensions::ext_full_screen_exclusive::PFN_vkReleaseFullScreenExclusiveModeEXT,
2424 >,
2425 pub acquire_profiling_lock_khr: Option<
2426 extensions::khr_performance_query::PFN_vkAcquireProfilingLockKHR,
2427 >,
2428 pub release_profiling_lock_khr: Option<
2429 extensions::khr_performance_query::PFN_vkReleaseProfilingLockKHR,
2430 >,
2431 pub get_image_drm_format_modifier_properties_ext: Option<
2432 extensions::ext_image_drm_format_modifier::PFN_vkGetImageDrmFormatModifierPropertiesEXT,
2433 >,
2434 pub get_buffer_opaque_capture_address: Option<
2435 vk1_2::PFN_vkGetBufferOpaqueCaptureAddress,
2436 >,
2437 pub get_buffer_device_address: Option<vk1_2::PFN_vkGetBufferDeviceAddress>,
2438 pub initialize_performance_api_intel: Option<
2439 extensions::intel_performance_query::PFN_vkInitializePerformanceApiINTEL,
2440 >,
2441 pub uninitialize_performance_api_intel: Option<
2442 extensions::intel_performance_query::PFN_vkUninitializePerformanceApiINTEL,
2443 >,
2444 pub cmd_set_performance_marker_intel: Option<
2445 extensions::intel_performance_query::PFN_vkCmdSetPerformanceMarkerINTEL,
2446 >,
2447 pub cmd_set_performance_stream_marker_intel: Option<
2448 extensions::intel_performance_query::PFN_vkCmdSetPerformanceStreamMarkerINTEL,
2449 >,
2450 pub cmd_set_performance_override_intel: Option<
2451 extensions::intel_performance_query::PFN_vkCmdSetPerformanceOverrideINTEL,
2452 >,
2453 pub acquire_performance_configuration_intel: Option<
2454 extensions::intel_performance_query::PFN_vkAcquirePerformanceConfigurationINTEL,
2455 >,
2456 pub release_performance_configuration_intel: Option<
2457 extensions::intel_performance_query::PFN_vkReleasePerformanceConfigurationINTEL,
2458 >,
2459 pub queue_set_performance_configuration_intel: Option<
2460 extensions::intel_performance_query::PFN_vkQueueSetPerformanceConfigurationINTEL,
2461 >,
2462 pub get_performance_parameter_intel: Option<
2463 extensions::intel_performance_query::PFN_vkGetPerformanceParameterINTEL,
2464 >,
2465 pub get_device_memory_opaque_capture_address: Option<
2466 vk1_2::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
2467 >,
2468 pub get_pipeline_executable_properties_khr: Option<
2469 extensions::khr_pipeline_executable_properties::PFN_vkGetPipelineExecutablePropertiesKHR,
2470 >,
2471 pub get_pipeline_executable_statistics_khr: Option<
2472 extensions::khr_pipeline_executable_properties::PFN_vkGetPipelineExecutableStatisticsKHR,
2473 >,
2474 pub get_pipeline_executable_internal_representations_khr: Option<
2475 extensions::khr_pipeline_executable_properties::PFN_vkGetPipelineExecutableInternalRepresentationsKHR,
2476 >,
2477 pub cmd_set_line_stipple_ext: Option<
2478 extensions::ext_line_rasterization::PFN_vkCmdSetLineStippleEXT,
2479 >,
2480 pub create_acceleration_structure_khr: Option<
2481 extensions::khr_acceleration_structure::PFN_vkCreateAccelerationStructureKHR,
2482 >,
2483 pub cmd_build_acceleration_structures_khr: Option<
2484 extensions::khr_acceleration_structure::PFN_vkCmdBuildAccelerationStructuresKHR,
2485 >,
2486 pub cmd_build_acceleration_structures_indirect_khr: Option<
2487 extensions::khr_acceleration_structure::PFN_vkCmdBuildAccelerationStructuresIndirectKHR,
2488 >,
2489 pub build_acceleration_structures_khr: Option<
2490 extensions::khr_acceleration_structure::PFN_vkBuildAccelerationStructuresKHR,
2491 >,
2492 pub get_acceleration_structure_device_address_khr: Option<
2493 extensions::khr_acceleration_structure::PFN_vkGetAccelerationStructureDeviceAddressKHR,
2494 >,
2495 pub create_deferred_operation_khr: Option<
2496 extensions::khr_deferred_host_operations::PFN_vkCreateDeferredOperationKHR,
2497 >,
2498 pub destroy_deferred_operation_khr: Option<
2499 extensions::khr_deferred_host_operations::PFN_vkDestroyDeferredOperationKHR,
2500 >,
2501 pub get_deferred_operation_max_concurrency_khr: Option<
2502 extensions::khr_deferred_host_operations::PFN_vkGetDeferredOperationMaxConcurrencyKHR,
2503 >,
2504 pub get_deferred_operation_result_khr: Option<
2505 extensions::khr_deferred_host_operations::PFN_vkGetDeferredOperationResultKHR,
2506 >,
2507 pub deferred_operation_join_khr: Option<
2508 extensions::khr_deferred_host_operations::PFN_vkDeferredOperationJoinKHR,
2509 >,
2510 pub cmd_set_cull_mode: Option<vk1_3::PFN_vkCmdSetCullMode>,
2511 pub cmd_set_front_face: Option<vk1_3::PFN_vkCmdSetFrontFace>,
2512 pub cmd_set_primitive_topology: Option<vk1_3::PFN_vkCmdSetPrimitiveTopology>,
2513 pub cmd_set_viewport_with_count: Option<vk1_3::PFN_vkCmdSetViewportWithCount>,
2514 pub cmd_set_scissor_with_count: Option<vk1_3::PFN_vkCmdSetScissorWithCount>,
2515 pub cmd_bind_vertex_buffers2: Option<vk1_3::PFN_vkCmdBindVertexBuffers2>,
2516 pub cmd_set_depth_test_enable: Option<vk1_3::PFN_vkCmdSetDepthTestEnable>,
2517 pub cmd_set_depth_write_enable: Option<vk1_3::PFN_vkCmdSetDepthWriteEnable>,
2518 pub cmd_set_depth_compare_op: Option<vk1_3::PFN_vkCmdSetDepthCompareOp>,
2519 pub cmd_set_depth_bounds_test_enable: Option<
2520 vk1_3::PFN_vkCmdSetDepthBoundsTestEnable,
2521 >,
2522 pub cmd_set_stencil_test_enable: Option<vk1_3::PFN_vkCmdSetStencilTestEnable>,
2523 pub cmd_set_stencil_op: Option<vk1_3::PFN_vkCmdSetStencilOp>,
2524 pub cmd_set_patch_control_points_ext: Option<
2525 extensions::ext_extended_dynamic_state2::PFN_vkCmdSetPatchControlPointsEXT,
2526 >,
2527 pub cmd_set_rasterizer_discard_enable: Option<
2528 vk1_3::PFN_vkCmdSetRasterizerDiscardEnable,
2529 >,
2530 pub cmd_set_depth_bias_enable: Option<vk1_3::PFN_vkCmdSetDepthBiasEnable>,
2531 pub cmd_set_logic_op_ext: Option<
2532 extensions::ext_extended_dynamic_state2::PFN_vkCmdSetLogicOpEXT,
2533 >,
2534 pub cmd_set_primitive_restart_enable: Option<
2535 vk1_3::PFN_vkCmdSetPrimitiveRestartEnable,
2536 >,
2537 pub create_private_data_slot: Option<vk1_3::PFN_vkCreatePrivateDataSlot>,
2538 pub destroy_private_data_slot: Option<vk1_3::PFN_vkDestroyPrivateDataSlot>,
2539 pub set_private_data: Option<vk1_3::PFN_vkSetPrivateData>,
2540 pub get_private_data: Option<vk1_3::PFN_vkGetPrivateData>,
2541 pub cmd_copy_buffer2: Option<vk1_3::PFN_vkCmdCopyBuffer2>,
2542 pub cmd_copy_image2: Option<vk1_3::PFN_vkCmdCopyImage2>,
2543 pub cmd_blit_image2: Option<vk1_3::PFN_vkCmdBlitImage2>,
2544 pub cmd_copy_buffer_to_image2: Option<vk1_3::PFN_vkCmdCopyBufferToImage2>,
2545 pub cmd_copy_image_to_buffer2: Option<vk1_3::PFN_vkCmdCopyImageToBuffer2>,
2546 pub cmd_resolve_image2: Option<vk1_3::PFN_vkCmdResolveImage2>,
2547 pub cmd_set_fragment_shading_rate_khr: Option<
2548 extensions::khr_fragment_shading_rate::PFN_vkCmdSetFragmentShadingRateKHR,
2549 >,
2550 pub cmd_set_fragment_shading_rate_enum_nv: Option<
2551 extensions::nv_fragment_shading_rate_enums::PFN_vkCmdSetFragmentShadingRateEnumNV,
2552 >,
2553 pub get_acceleration_structure_build_sizes_khr: Option<
2554 extensions::khr_acceleration_structure::PFN_vkGetAccelerationStructureBuildSizesKHR,
2555 >,
2556 pub cmd_set_vertex_input_ext: Option<
2557 extensions::ext_vertex_input_dynamic_state::PFN_vkCmdSetVertexInputEXT,
2558 >,
2559 pub cmd_set_color_write_enable_ext: Option<
2560 extensions::ext_color_write_enable::PFN_vkCmdSetColorWriteEnableEXT,
2561 >,
2562 pub cmd_set_event2: Option<vk1_3::PFN_vkCmdSetEvent2>,
2563 pub cmd_reset_event2: Option<vk1_3::PFN_vkCmdResetEvent2>,
2564 pub cmd_wait_events2: Option<vk1_3::PFN_vkCmdWaitEvents2>,
2565 pub cmd_pipeline_barrier2: Option<vk1_3::PFN_vkCmdPipelineBarrier2>,
2566 pub queue_submit2: Option<vk1_3::PFN_vkQueueSubmit2>,
2567 pub cmd_write_timestamp2: Option<vk1_3::PFN_vkCmdWriteTimestamp2>,
2568 pub cmd_write_buffer_marker2_amd: Option<
2569 extensions::khr_synchronization2::PFN_vkCmdWriteBufferMarker2AMD,
2570 >,
2571 pub get_queue_checkpoint_data2_nv: Option<
2572 extensions::khr_synchronization2::PFN_vkGetQueueCheckpointData2NV,
2573 >,
2574 pub create_video_session_khr: Option<
2575 extensions::khr_video_queue::PFN_vkCreateVideoSessionKHR,
2576 >,
2577 pub destroy_video_session_khr: Option<
2578 extensions::khr_video_queue::PFN_vkDestroyVideoSessionKHR,
2579 >,
2580 pub create_video_session_parameters_khr: Option<
2581 extensions::khr_video_queue::PFN_vkCreateVideoSessionParametersKHR,
2582 >,
2583 pub update_video_session_parameters_khr: Option<
2584 extensions::khr_video_queue::PFN_vkUpdateVideoSessionParametersKHR,
2585 >,
2586 pub destroy_video_session_parameters_khr: Option<
2587 extensions::khr_video_queue::PFN_vkDestroyVideoSessionParametersKHR,
2588 >,
2589 pub get_video_session_memory_requirements_khr: Option<
2590 extensions::khr_video_queue::PFN_vkGetVideoSessionMemoryRequirementsKHR,
2591 >,
2592 pub bind_video_session_memory_khr: Option<
2593 extensions::khr_video_queue::PFN_vkBindVideoSessionMemoryKHR,
2594 >,
2595 pub cmd_decode_video_khr: Option<
2596 extensions::khr_video_decode_queue::PFN_vkCmdDecodeVideoKHR,
2597 >,
2598 pub cmd_begin_video_coding_khr: Option<
2599 extensions::khr_video_queue::PFN_vkCmdBeginVideoCodingKHR,
2600 >,
2601 pub cmd_control_video_coding_khr: Option<
2602 extensions::khr_video_queue::PFN_vkCmdControlVideoCodingKHR,
2603 >,
2604 pub cmd_end_video_coding_khr: Option<
2605 extensions::khr_video_queue::PFN_vkCmdEndVideoCodingKHR,
2606 >,
2607 pub cmd_encode_video_khr: Option<
2608 extensions::khr_video_encode_queue::PFN_vkCmdEncodeVideoKHR,
2609 >,
2610 pub create_cu_module_nvx: Option<
2611 extensions::nvx_binary_import::PFN_vkCreateCuModuleNVX,
2612 >,
2613 pub create_cu_function_nvx: Option<
2614 extensions::nvx_binary_import::PFN_vkCreateCuFunctionNVX,
2615 >,
2616 pub destroy_cu_module_nvx: Option<
2617 extensions::nvx_binary_import::PFN_vkDestroyCuModuleNVX,
2618 >,
2619 pub destroy_cu_function_nvx: Option<
2620 extensions::nvx_binary_import::PFN_vkDestroyCuFunctionNVX,
2621 >,
2622 pub cmd_cu_launch_kernel_nvx: Option<
2623 extensions::nvx_binary_import::PFN_vkCmdCuLaunchKernelNVX,
2624 >,
2625 pub set_device_memory_priority_ext: Option<
2626 extensions::ext_pageable_device_local_memory::PFN_vkSetDeviceMemoryPriorityEXT,
2627 >,
2628 pub wait_for_present_khr: Option<
2629 extensions::khr_present_wait::PFN_vkWaitForPresentKHR,
2630 >,
2631 pub create_buffer_collection_fuchsia: Option<
2632 extensions::fuchsia_buffer_collection::PFN_vkCreateBufferCollectionFUCHSIA,
2633 >,
2634 pub set_buffer_collection_buffer_constraints_fuchsia: Option<
2635 extensions::fuchsia_buffer_collection::PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA,
2636 >,
2637 pub set_buffer_collection_image_constraints_fuchsia: Option<
2638 extensions::fuchsia_buffer_collection::PFN_vkSetBufferCollectionImageConstraintsFUCHSIA,
2639 >,
2640 pub destroy_buffer_collection_fuchsia: Option<
2641 extensions::fuchsia_buffer_collection::PFN_vkDestroyBufferCollectionFUCHSIA,
2642 >,
2643 pub get_buffer_collection_properties_fuchsia: Option<
2644 extensions::fuchsia_buffer_collection::PFN_vkGetBufferCollectionPropertiesFUCHSIA,
2645 >,
2646 pub cmd_begin_rendering: Option<vk1_3::PFN_vkCmdBeginRendering>,
2647 pub cmd_end_rendering: Option<vk1_3::PFN_vkCmdEndRendering>,
2648 pub get_descriptor_set_layout_host_mapping_info_valve: Option<
2649 extensions::valve_descriptor_set_host_mapping::PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE,
2650 >,
2651 pub get_descriptor_set_host_mapping_valve: Option<
2652 extensions::valve_descriptor_set_host_mapping::PFN_vkGetDescriptorSetHostMappingVALVE,
2653 >,
2654 pub get_image_subresource_layout2_ext: Option<
2655 extensions::ext_image_compression_control::PFN_vkGetImageSubresourceLayout2EXT,
2656 >,
2657 pub get_pipeline_properties_ext: Option<
2658 extensions::ext_pipeline_properties::PFN_vkGetPipelinePropertiesEXT,
2659 >,
2660 pub reset_query_pool_ext: Option<
2661 extensions::ext_host_query_reset::PFN_vkResetQueryPoolEXT,
2662 >,
2663 pub trim_command_pool_khr: Option<
2664 extensions::khr_maintenance1::PFN_vkTrimCommandPoolKHR,
2665 >,
2666 pub get_device_group_peer_memory_features_khr: Option<
2667 extensions::khr_device_group::PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR,
2668 >,
2669 pub bind_buffer_memory2_khr: Option<
2670 extensions::khr_bind_memory2::PFN_vkBindBufferMemory2KHR,
2671 >,
2672 pub bind_image_memory2_khr: Option<
2673 extensions::khr_bind_memory2::PFN_vkBindImageMemory2KHR,
2674 >,
2675 pub cmd_set_device_mask_khr: Option<
2676 extensions::khr_device_group::PFN_vkCmdSetDeviceMaskKHR,
2677 >,
2678 pub cmd_dispatch_base_khr: Option<
2679 extensions::khr_device_group::PFN_vkCmdDispatchBaseKHR,
2680 >,
2681 pub create_descriptor_update_template_khr: Option<
2682 extensions::khr_descriptor_update_template::PFN_vkCreateDescriptorUpdateTemplateKHR,
2683 >,
2684 pub destroy_descriptor_update_template_khr: Option<
2685 extensions::khr_descriptor_update_template::PFN_vkDestroyDescriptorUpdateTemplateKHR,
2686 >,
2687 pub update_descriptor_set_with_template_khr: Option<
2688 extensions::khr_descriptor_update_template::PFN_vkUpdateDescriptorSetWithTemplateKHR,
2689 >,
2690 pub get_buffer_memory_requirements2_khr: Option<
2691 extensions::khr_get_memory_requirements2::PFN_vkGetBufferMemoryRequirements2KHR,
2692 >,
2693 pub get_image_memory_requirements2_khr: Option<
2694 extensions::khr_get_memory_requirements2::PFN_vkGetImageMemoryRequirements2KHR,
2695 >,
2696 pub get_image_sparse_memory_requirements2_khr: Option<
2697 extensions::khr_get_memory_requirements2::PFN_vkGetImageSparseMemoryRequirements2KHR,
2698 >,
2699 pub get_device_buffer_memory_requirements_khr: Option<
2700 extensions::khr_maintenance4::PFN_vkGetDeviceBufferMemoryRequirementsKHR,
2701 >,
2702 pub get_device_image_memory_requirements_khr: Option<
2703 extensions::khr_maintenance4::PFN_vkGetDeviceImageMemoryRequirementsKHR,
2704 >,
2705 pub get_device_image_sparse_memory_requirements_khr: Option<
2706 extensions::khr_maintenance4::PFN_vkGetDeviceImageSparseMemoryRequirementsKHR,
2707 >,
2708 pub create_sampler_ycbcr_conversion_khr: Option<
2709 extensions::khr_sampler_ycbcr_conversion::PFN_vkCreateSamplerYcbcrConversionKHR,
2710 >,
2711 pub destroy_sampler_ycbcr_conversion_khr: Option<
2712 extensions::khr_sampler_ycbcr_conversion::PFN_vkDestroySamplerYcbcrConversionKHR,
2713 >,
2714 pub get_descriptor_set_layout_support_khr: Option<
2715 extensions::khr_maintenance3::PFN_vkGetDescriptorSetLayoutSupportKHR,
2716 >,
2717 pub create_render_pass2_khr: Option<
2718 extensions::khr_create_renderpass2::PFN_vkCreateRenderPass2KHR,
2719 >,
2720 pub cmd_begin_render_pass2_khr: Option<
2721 extensions::khr_create_renderpass2::PFN_vkCmdBeginRenderPass2KHR,
2722 >,
2723 pub cmd_next_subpass2_khr: Option<
2724 extensions::khr_create_renderpass2::PFN_vkCmdNextSubpass2KHR,
2725 >,
2726 pub cmd_end_render_pass2_khr: Option<
2727 extensions::khr_create_renderpass2::PFN_vkCmdEndRenderPass2KHR,
2728 >,
2729 pub get_semaphore_counter_value_khr: Option<
2730 extensions::khr_timeline_semaphore::PFN_vkGetSemaphoreCounterValueKHR,
2731 >,
2732 pub wait_semaphores_khr: Option<
2733 extensions::khr_timeline_semaphore::PFN_vkWaitSemaphoresKHR,
2734 >,
2735 pub signal_semaphore_khr: Option<
2736 extensions::khr_timeline_semaphore::PFN_vkSignalSemaphoreKHR,
2737 >,
2738 pub cmd_draw_indirect_count_khr: Option<
2739 extensions::khr_draw_indirect_count::PFN_vkCmdDrawIndirectCountKHR,
2740 >,
2741 pub cmd_draw_indirect_count_amd: Option<
2742 extensions::amd_draw_indirect_count::PFN_vkCmdDrawIndirectCountAMD,
2743 >,
2744 pub cmd_draw_indexed_indirect_count_khr: Option<
2745 extensions::khr_draw_indirect_count::PFN_vkCmdDrawIndexedIndirectCountKHR,
2746 >,
2747 pub cmd_draw_indexed_indirect_count_amd: Option<
2748 extensions::amd_draw_indirect_count::PFN_vkCmdDrawIndexedIndirectCountAMD,
2749 >,
2750 pub get_ray_tracing_shader_group_handles_nv: Option<
2751 extensions::nv_ray_tracing::PFN_vkGetRayTracingShaderGroupHandlesNV,
2752 >,
2753 pub get_buffer_opaque_capture_address_khr: Option<
2754 extensions::khr_buffer_device_address::PFN_vkGetBufferOpaqueCaptureAddressKHR,
2755 >,
2756 pub get_buffer_device_address_khr: Option<
2757 extensions::khr_buffer_device_address::PFN_vkGetBufferDeviceAddressKHR,
2758 >,
2759 pub get_buffer_device_address_ext: Option<
2760 extensions::ext_buffer_device_address::PFN_vkGetBufferDeviceAddressEXT,
2761 >,
2762 pub get_device_memory_opaque_capture_address_khr: Option<
2763 extensions::khr_buffer_device_address::PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR,
2764 >,
2765 pub cmd_set_cull_mode_ext: Option<
2766 extensions::ext_extended_dynamic_state::PFN_vkCmdSetCullModeEXT,
2767 >,
2768 pub cmd_set_front_face_ext: Option<
2769 extensions::ext_extended_dynamic_state::PFN_vkCmdSetFrontFaceEXT,
2770 >,
2771 pub cmd_set_primitive_topology_ext: Option<
2772 extensions::ext_extended_dynamic_state::PFN_vkCmdSetPrimitiveTopologyEXT,
2773 >,
2774 pub cmd_set_viewport_with_count_ext: Option<
2775 extensions::ext_extended_dynamic_state::PFN_vkCmdSetViewportWithCountEXT,
2776 >,
2777 pub cmd_set_scissor_with_count_ext: Option<
2778 extensions::ext_extended_dynamic_state::PFN_vkCmdSetScissorWithCountEXT,
2779 >,
2780 pub cmd_bind_vertex_buffers2_ext: Option<
2781 extensions::ext_extended_dynamic_state::PFN_vkCmdBindVertexBuffers2EXT,
2782 >,
2783 pub cmd_set_depth_test_enable_ext: Option<
2784 extensions::ext_extended_dynamic_state::PFN_vkCmdSetDepthTestEnableEXT,
2785 >,
2786 pub cmd_set_depth_write_enable_ext: Option<
2787 extensions::ext_extended_dynamic_state::PFN_vkCmdSetDepthWriteEnableEXT,
2788 >,
2789 pub cmd_set_depth_compare_op_ext: Option<
2790 extensions::ext_extended_dynamic_state::PFN_vkCmdSetDepthCompareOpEXT,
2791 >,
2792 pub cmd_set_depth_bounds_test_enable_ext: Option<
2793 extensions::ext_extended_dynamic_state::PFN_vkCmdSetDepthBoundsTestEnableEXT,
2794 >,
2795 pub cmd_set_stencil_test_enable_ext: Option<
2796 extensions::ext_extended_dynamic_state::PFN_vkCmdSetStencilTestEnableEXT,
2797 >,
2798 pub cmd_set_stencil_op_ext: Option<
2799 extensions::ext_extended_dynamic_state::PFN_vkCmdSetStencilOpEXT,
2800 >,
2801 pub cmd_set_rasterizer_discard_enable_ext: Option<
2802 extensions::ext_extended_dynamic_state2::PFN_vkCmdSetRasterizerDiscardEnableEXT,
2803 >,
2804 pub cmd_set_depth_bias_enable_ext: Option<
2805 extensions::ext_extended_dynamic_state2::PFN_vkCmdSetDepthBiasEnableEXT,
2806 >,
2807 pub cmd_set_primitive_restart_enable_ext: Option<
2808 extensions::ext_extended_dynamic_state2::PFN_vkCmdSetPrimitiveRestartEnableEXT,
2809 >,
2810 pub create_private_data_slot_ext: Option<
2811 extensions::ext_private_data::PFN_vkCreatePrivateDataSlotEXT,
2812 >,
2813 pub destroy_private_data_slot_ext: Option<
2814 extensions::ext_private_data::PFN_vkDestroyPrivateDataSlotEXT,
2815 >,
2816 pub set_private_data_ext: Option<
2817 extensions::ext_private_data::PFN_vkSetPrivateDataEXT,
2818 >,
2819 pub get_private_data_ext: Option<
2820 extensions::ext_private_data::PFN_vkGetPrivateDataEXT,
2821 >,
2822 pub cmd_copy_buffer2_khr: Option<
2823 extensions::khr_copy_commands2::PFN_vkCmdCopyBuffer2KHR,
2824 >,
2825 pub cmd_copy_image2_khr: Option<
2826 extensions::khr_copy_commands2::PFN_vkCmdCopyImage2KHR,
2827 >,
2828 pub cmd_blit_image2_khr: Option<
2829 extensions::khr_copy_commands2::PFN_vkCmdBlitImage2KHR,
2830 >,
2831 pub cmd_copy_buffer_to_image2_khr: Option<
2832 extensions::khr_copy_commands2::PFN_vkCmdCopyBufferToImage2KHR,
2833 >,
2834 pub cmd_copy_image_to_buffer2_khr: Option<
2835 extensions::khr_copy_commands2::PFN_vkCmdCopyImageToBuffer2KHR,
2836 >,
2837 pub cmd_resolve_image2_khr: Option<
2838 extensions::khr_copy_commands2::PFN_vkCmdResolveImage2KHR,
2839 >,
2840 pub cmd_set_event2_khr: Option<
2841 extensions::khr_synchronization2::PFN_vkCmdSetEvent2KHR,
2842 >,
2843 pub cmd_reset_event2_khr: Option<
2844 extensions::khr_synchronization2::PFN_vkCmdResetEvent2KHR,
2845 >,
2846 pub cmd_wait_events2_khr: Option<
2847 extensions::khr_synchronization2::PFN_vkCmdWaitEvents2KHR,
2848 >,
2849 pub cmd_pipeline_barrier2_khr: Option<
2850 extensions::khr_synchronization2::PFN_vkCmdPipelineBarrier2KHR,
2851 >,
2852 pub queue_submit2_khr: Option<
2853 extensions::khr_synchronization2::PFN_vkQueueSubmit2KHR,
2854 >,
2855 pub cmd_write_timestamp2_khr: Option<
2856 extensions::khr_synchronization2::PFN_vkCmdWriteTimestamp2KHR,
2857 >,
2858 pub cmd_begin_rendering_khr: Option<
2859 extensions::khr_dynamic_rendering::PFN_vkCmdBeginRenderingKHR,
2860 >,
2861 pub cmd_end_rendering_khr: Option<
2862 extensions::khr_dynamic_rendering::PFN_vkCmdEndRenderingKHR,
2863 >,
2864}
2865impl DeviceLoader {
2866 #[allow(unused_parens)]
2867 pub(crate) unsafe fn custom(
2868 instance_loader: &InstanceLoader,
2869 device: crate::vk1_0::Device,
2870 device_enabled: DeviceEnabled,
2871 mut symbol: impl FnMut(
2872 *const std::os::raw::c_char,
2873 ) -> Option<crate::vk1_0::PFN_vkVoidFunction>,
2874 ) -> Result<DeviceLoader, crate::LoaderError> {
2875 let instance_enabled = &instance_loader.enabled;
2876 Ok(DeviceLoader {
2877 parent: std::sync::Arc::downgrade(&instance_loader.arc),
2878 handle: device,
2879 get_device_proc_addr: std::mem::transmute(
2880 symbol(crate::vk1_0::FN_GET_DEVICE_PROC_ADDR),
2881 ),
2882 destroy_device: std::mem::transmute(symbol(crate::vk1_0::FN_DESTROY_DEVICE)),
2883 get_device_queue: std::mem::transmute(
2884 symbol(crate::vk1_0::FN_GET_DEVICE_QUEUE),
2885 ),
2886 queue_submit: std::mem::transmute(symbol(crate::vk1_0::FN_QUEUE_SUBMIT)),
2887 queue_wait_idle: std::mem::transmute(
2888 symbol(crate::vk1_0::FN_QUEUE_WAIT_IDLE),
2889 ),
2890 device_wait_idle: std::mem::transmute(
2891 symbol(crate::vk1_0::FN_DEVICE_WAIT_IDLE),
2892 ),
2893 allocate_memory: std::mem::transmute(
2894 symbol(crate::vk1_0::FN_ALLOCATE_MEMORY),
2895 ),
2896 free_memory: std::mem::transmute(symbol(crate::vk1_0::FN_FREE_MEMORY)),
2897 map_memory: std::mem::transmute(symbol(crate::vk1_0::FN_MAP_MEMORY)),
2898 unmap_memory: std::mem::transmute(symbol(crate::vk1_0::FN_UNMAP_MEMORY)),
2899 flush_mapped_memory_ranges: std::mem::transmute(
2900 symbol(crate::vk1_0::FN_FLUSH_MAPPED_MEMORY_RANGES),
2901 ),
2902 invalidate_mapped_memory_ranges: std::mem::transmute(
2903 symbol(crate::vk1_0::FN_INVALIDATE_MAPPED_MEMORY_RANGES),
2904 ),
2905 get_device_memory_commitment: std::mem::transmute(
2906 symbol(crate::vk1_0::FN_GET_DEVICE_MEMORY_COMMITMENT),
2907 ),
2908 get_buffer_memory_requirements: std::mem::transmute(
2909 symbol(crate::vk1_0::FN_GET_BUFFER_MEMORY_REQUIREMENTS),
2910 ),
2911 bind_buffer_memory: std::mem::transmute(
2912 symbol(crate::vk1_0::FN_BIND_BUFFER_MEMORY),
2913 ),
2914 get_image_memory_requirements: std::mem::transmute(
2915 symbol(crate::vk1_0::FN_GET_IMAGE_MEMORY_REQUIREMENTS),
2916 ),
2917 bind_image_memory: std::mem::transmute(
2918 symbol(crate::vk1_0::FN_BIND_IMAGE_MEMORY),
2919 ),
2920 get_image_sparse_memory_requirements: std::mem::transmute(
2921 symbol(crate::vk1_0::FN_GET_IMAGE_SPARSE_MEMORY_REQUIREMENTS),
2922 ),
2923 queue_bind_sparse: std::mem::transmute(
2924 symbol(crate::vk1_0::FN_QUEUE_BIND_SPARSE),
2925 ),
2926 create_fence: std::mem::transmute(symbol(crate::vk1_0::FN_CREATE_FENCE)),
2927 destroy_fence: std::mem::transmute(symbol(crate::vk1_0::FN_DESTROY_FENCE)),
2928 reset_fences: std::mem::transmute(symbol(crate::vk1_0::FN_RESET_FENCES)),
2929 get_fence_status: std::mem::transmute(
2930 symbol(crate::vk1_0::FN_GET_FENCE_STATUS),
2931 ),
2932 wait_for_fences: std::mem::transmute(
2933 symbol(crate::vk1_0::FN_WAIT_FOR_FENCES),
2934 ),
2935 create_semaphore: std::mem::transmute(
2936 symbol(crate::vk1_0::FN_CREATE_SEMAPHORE),
2937 ),
2938 destroy_semaphore: std::mem::transmute(
2939 symbol(crate::vk1_0::FN_DESTROY_SEMAPHORE),
2940 ),
2941 create_event: std::mem::transmute(symbol(crate::vk1_0::FN_CREATE_EVENT)),
2942 destroy_event: std::mem::transmute(symbol(crate::vk1_0::FN_DESTROY_EVENT)),
2943 get_event_status: std::mem::transmute(
2944 symbol(crate::vk1_0::FN_GET_EVENT_STATUS),
2945 ),
2946 set_event: std::mem::transmute(symbol(crate::vk1_0::FN_SET_EVENT)),
2947 reset_event: std::mem::transmute(symbol(crate::vk1_0::FN_RESET_EVENT)),
2948 create_query_pool: std::mem::transmute(
2949 symbol(crate::vk1_0::FN_CREATE_QUERY_POOL),
2950 ),
2951 destroy_query_pool: std::mem::transmute(
2952 symbol(crate::vk1_0::FN_DESTROY_QUERY_POOL),
2953 ),
2954 get_query_pool_results: std::mem::transmute(
2955 symbol(crate::vk1_0::FN_GET_QUERY_POOL_RESULTS),
2956 ),
2957 reset_query_pool: if instance_enabled.vk1_2 {
2958 std::mem::transmute(symbol(crate::vk1_2::FN_RESET_QUERY_POOL))
2959 } else {
2960 None
2961 },
2962 create_buffer: std::mem::transmute(symbol(crate::vk1_0::FN_CREATE_BUFFER)),
2963 destroy_buffer: std::mem::transmute(symbol(crate::vk1_0::FN_DESTROY_BUFFER)),
2964 create_buffer_view: std::mem::transmute(
2965 symbol(crate::vk1_0::FN_CREATE_BUFFER_VIEW),
2966 ),
2967 destroy_buffer_view: std::mem::transmute(
2968 symbol(crate::vk1_0::FN_DESTROY_BUFFER_VIEW),
2969 ),
2970 create_image: std::mem::transmute(symbol(crate::vk1_0::FN_CREATE_IMAGE)),
2971 destroy_image: std::mem::transmute(symbol(crate::vk1_0::FN_DESTROY_IMAGE)),
2972 get_image_subresource_layout: std::mem::transmute(
2973 symbol(crate::vk1_0::FN_GET_IMAGE_SUBRESOURCE_LAYOUT),
2974 ),
2975 create_image_view: std::mem::transmute(
2976 symbol(crate::vk1_0::FN_CREATE_IMAGE_VIEW),
2977 ),
2978 destroy_image_view: std::mem::transmute(
2979 symbol(crate::vk1_0::FN_DESTROY_IMAGE_VIEW),
2980 ),
2981 create_shader_module: std::mem::transmute(
2982 symbol(crate::vk1_0::FN_CREATE_SHADER_MODULE),
2983 ),
2984 destroy_shader_module: std::mem::transmute(
2985 symbol(crate::vk1_0::FN_DESTROY_SHADER_MODULE),
2986 ),
2987 create_pipeline_cache: std::mem::transmute(
2988 symbol(crate::vk1_0::FN_CREATE_PIPELINE_CACHE),
2989 ),
2990 destroy_pipeline_cache: std::mem::transmute(
2991 symbol(crate::vk1_0::FN_DESTROY_PIPELINE_CACHE),
2992 ),
2993 get_pipeline_cache_data: std::mem::transmute(
2994 symbol(crate::vk1_0::FN_GET_PIPELINE_CACHE_DATA),
2995 ),
2996 merge_pipeline_caches: std::mem::transmute(
2997 symbol(crate::vk1_0::FN_MERGE_PIPELINE_CACHES),
2998 ),
2999 create_graphics_pipelines: std::mem::transmute(
3000 symbol(crate::vk1_0::FN_CREATE_GRAPHICS_PIPELINES),
3001 ),
3002 create_compute_pipelines: std::mem::transmute(
3003 symbol(crate::vk1_0::FN_CREATE_COMPUTE_PIPELINES),
3004 ),
3005 get_device_subpass_shading_max_workgroup_size_huawei: if device_enabled
3006 .huawei_subpass_shading
3007 {
3008 std::mem::transmute(
3009 symbol(
3010 crate::extensions::huawei_subpass_shading::FN_GET_DEVICE_SUBPASS_SHADING_MAX_WORKGROUP_SIZE_HUAWEI,
3011 ),
3012 )
3013 } else {
3014 None
3015 },
3016 destroy_pipeline: std::mem::transmute(
3017 symbol(crate::vk1_0::FN_DESTROY_PIPELINE),
3018 ),
3019 create_pipeline_layout: std::mem::transmute(
3020 symbol(crate::vk1_0::FN_CREATE_PIPELINE_LAYOUT),
3021 ),
3022 destroy_pipeline_layout: std::mem::transmute(
3023 symbol(crate::vk1_0::FN_DESTROY_PIPELINE_LAYOUT),
3024 ),
3025 create_sampler: std::mem::transmute(symbol(crate::vk1_0::FN_CREATE_SAMPLER)),
3026 destroy_sampler: std::mem::transmute(
3027 symbol(crate::vk1_0::FN_DESTROY_SAMPLER),
3028 ),
3029 create_descriptor_set_layout: std::mem::transmute(
3030 symbol(crate::vk1_0::FN_CREATE_DESCRIPTOR_SET_LAYOUT),
3031 ),
3032 destroy_descriptor_set_layout: std::mem::transmute(
3033 symbol(crate::vk1_0::FN_DESTROY_DESCRIPTOR_SET_LAYOUT),
3034 ),
3035 create_descriptor_pool: std::mem::transmute(
3036 symbol(crate::vk1_0::FN_CREATE_DESCRIPTOR_POOL),
3037 ),
3038 destroy_descriptor_pool: std::mem::transmute(
3039 symbol(crate::vk1_0::FN_DESTROY_DESCRIPTOR_POOL),
3040 ),
3041 reset_descriptor_pool: std::mem::transmute(
3042 symbol(crate::vk1_0::FN_RESET_DESCRIPTOR_POOL),
3043 ),
3044 allocate_descriptor_sets: std::mem::transmute(
3045 symbol(crate::vk1_0::FN_ALLOCATE_DESCRIPTOR_SETS),
3046 ),
3047 free_descriptor_sets: std::mem::transmute(
3048 symbol(crate::vk1_0::FN_FREE_DESCRIPTOR_SETS),
3049 ),
3050 update_descriptor_sets: std::mem::transmute(
3051 symbol(crate::vk1_0::FN_UPDATE_DESCRIPTOR_SETS),
3052 ),
3053 create_framebuffer: std::mem::transmute(
3054 symbol(crate::vk1_0::FN_CREATE_FRAMEBUFFER),
3055 ),
3056 destroy_framebuffer: std::mem::transmute(
3057 symbol(crate::vk1_0::FN_DESTROY_FRAMEBUFFER),
3058 ),
3059 create_render_pass: std::mem::transmute(
3060 symbol(crate::vk1_0::FN_CREATE_RENDER_PASS),
3061 ),
3062 destroy_render_pass: std::mem::transmute(
3063 symbol(crate::vk1_0::FN_DESTROY_RENDER_PASS),
3064 ),
3065 get_render_area_granularity: std::mem::transmute(
3066 symbol(crate::vk1_0::FN_GET_RENDER_AREA_GRANULARITY),
3067 ),
3068 create_command_pool: std::mem::transmute(
3069 symbol(crate::vk1_0::FN_CREATE_COMMAND_POOL),
3070 ),
3071 destroy_command_pool: std::mem::transmute(
3072 symbol(crate::vk1_0::FN_DESTROY_COMMAND_POOL),
3073 ),
3074 reset_command_pool: std::mem::transmute(
3075 symbol(crate::vk1_0::FN_RESET_COMMAND_POOL),
3076 ),
3077 allocate_command_buffers: std::mem::transmute(
3078 symbol(crate::vk1_0::FN_ALLOCATE_COMMAND_BUFFERS),
3079 ),
3080 free_command_buffers: std::mem::transmute(
3081 symbol(crate::vk1_0::FN_FREE_COMMAND_BUFFERS),
3082 ),
3083 begin_command_buffer: std::mem::transmute(
3084 symbol(crate::vk1_0::FN_BEGIN_COMMAND_BUFFER),
3085 ),
3086 end_command_buffer: std::mem::transmute(
3087 symbol(crate::vk1_0::FN_END_COMMAND_BUFFER),
3088 ),
3089 reset_command_buffer: std::mem::transmute(
3090 symbol(crate::vk1_0::FN_RESET_COMMAND_BUFFER),
3091 ),
3092 cmd_bind_pipeline: std::mem::transmute(
3093 symbol(crate::vk1_0::FN_CMD_BIND_PIPELINE),
3094 ),
3095 cmd_set_viewport: std::mem::transmute(
3096 symbol(crate::vk1_0::FN_CMD_SET_VIEWPORT),
3097 ),
3098 cmd_set_scissor: std::mem::transmute(
3099 symbol(crate::vk1_0::FN_CMD_SET_SCISSOR),
3100 ),
3101 cmd_set_line_width: std::mem::transmute(
3102 symbol(crate::vk1_0::FN_CMD_SET_LINE_WIDTH),
3103 ),
3104 cmd_set_depth_bias: std::mem::transmute(
3105 symbol(crate::vk1_0::FN_CMD_SET_DEPTH_BIAS),
3106 ),
3107 cmd_set_blend_constants: std::mem::transmute(
3108 symbol(crate::vk1_0::FN_CMD_SET_BLEND_CONSTANTS),
3109 ),
3110 cmd_set_depth_bounds: std::mem::transmute(
3111 symbol(crate::vk1_0::FN_CMD_SET_DEPTH_BOUNDS),
3112 ),
3113 cmd_set_stencil_compare_mask: std::mem::transmute(
3114 symbol(crate::vk1_0::FN_CMD_SET_STENCIL_COMPARE_MASK),
3115 ),
3116 cmd_set_stencil_write_mask: std::mem::transmute(
3117 symbol(crate::vk1_0::FN_CMD_SET_STENCIL_WRITE_MASK),
3118 ),
3119 cmd_set_stencil_reference: std::mem::transmute(
3120 symbol(crate::vk1_0::FN_CMD_SET_STENCIL_REFERENCE),
3121 ),
3122 cmd_bind_descriptor_sets: std::mem::transmute(
3123 symbol(crate::vk1_0::FN_CMD_BIND_DESCRIPTOR_SETS),
3124 ),
3125 cmd_bind_index_buffer: std::mem::transmute(
3126 symbol(crate::vk1_0::FN_CMD_BIND_INDEX_BUFFER),
3127 ),
3128 cmd_bind_vertex_buffers: std::mem::transmute(
3129 symbol(crate::vk1_0::FN_CMD_BIND_VERTEX_BUFFERS),
3130 ),
3131 cmd_draw: std::mem::transmute(symbol(crate::vk1_0::FN_CMD_DRAW)),
3132 cmd_draw_indexed: std::mem::transmute(
3133 symbol(crate::vk1_0::FN_CMD_DRAW_INDEXED),
3134 ),
3135 cmd_draw_multi_ext: if device_enabled.ext_multi_draw {
3136 std::mem::transmute(
3137 symbol(crate::extensions::ext_multi_draw::FN_CMD_DRAW_MULTI_EXT),
3138 )
3139 } else {
3140 None
3141 },
3142 cmd_draw_multi_indexed_ext: if device_enabled.ext_multi_draw {
3143 std::mem::transmute(
3144 symbol(
3145 crate::extensions::ext_multi_draw::FN_CMD_DRAW_MULTI_INDEXED_EXT,
3146 ),
3147 )
3148 } else {
3149 None
3150 },
3151 cmd_draw_indirect: std::mem::transmute(
3152 symbol(crate::vk1_0::FN_CMD_DRAW_INDIRECT),
3153 ),
3154 cmd_draw_indexed_indirect: std::mem::transmute(
3155 symbol(crate::vk1_0::FN_CMD_DRAW_INDEXED_INDIRECT),
3156 ),
3157 cmd_dispatch: std::mem::transmute(symbol(crate::vk1_0::FN_CMD_DISPATCH)),
3158 cmd_dispatch_indirect: std::mem::transmute(
3159 symbol(crate::vk1_0::FN_CMD_DISPATCH_INDIRECT),
3160 ),
3161 cmd_subpass_shading_huawei: if device_enabled.huawei_subpass_shading {
3162 std::mem::transmute(
3163 symbol(
3164 crate::extensions::huawei_subpass_shading::FN_CMD_SUBPASS_SHADING_HUAWEI,
3165 ),
3166 )
3167 } else {
3168 None
3169 },
3170 cmd_copy_buffer: std::mem::transmute(
3171 symbol(crate::vk1_0::FN_CMD_COPY_BUFFER),
3172 ),
3173 cmd_copy_image: std::mem::transmute(symbol(crate::vk1_0::FN_CMD_COPY_IMAGE)),
3174 cmd_blit_image: std::mem::transmute(symbol(crate::vk1_0::FN_CMD_BLIT_IMAGE)),
3175 cmd_copy_buffer_to_image: std::mem::transmute(
3176 symbol(crate::vk1_0::FN_CMD_COPY_BUFFER_TO_IMAGE),
3177 ),
3178 cmd_copy_image_to_buffer: std::mem::transmute(
3179 symbol(crate::vk1_0::FN_CMD_COPY_IMAGE_TO_BUFFER),
3180 ),
3181 cmd_update_buffer: std::mem::transmute(
3182 symbol(crate::vk1_0::FN_CMD_UPDATE_BUFFER),
3183 ),
3184 cmd_fill_buffer: std::mem::transmute(
3185 symbol(crate::vk1_0::FN_CMD_FILL_BUFFER),
3186 ),
3187 cmd_clear_color_image: std::mem::transmute(
3188 symbol(crate::vk1_0::FN_CMD_CLEAR_COLOR_IMAGE),
3189 ),
3190 cmd_clear_depth_stencil_image: std::mem::transmute(
3191 symbol(crate::vk1_0::FN_CMD_CLEAR_DEPTH_STENCIL_IMAGE),
3192 ),
3193 cmd_clear_attachments: std::mem::transmute(
3194 symbol(crate::vk1_0::FN_CMD_CLEAR_ATTACHMENTS),
3195 ),
3196 cmd_resolve_image: std::mem::transmute(
3197 symbol(crate::vk1_0::FN_CMD_RESOLVE_IMAGE),
3198 ),
3199 cmd_set_event: std::mem::transmute(symbol(crate::vk1_0::FN_CMD_SET_EVENT)),
3200 cmd_reset_event: std::mem::transmute(
3201 symbol(crate::vk1_0::FN_CMD_RESET_EVENT),
3202 ),
3203 cmd_wait_events: std::mem::transmute(
3204 symbol(crate::vk1_0::FN_CMD_WAIT_EVENTS),
3205 ),
3206 cmd_pipeline_barrier: std::mem::transmute(
3207 symbol(crate::vk1_0::FN_CMD_PIPELINE_BARRIER),
3208 ),
3209 cmd_begin_query: std::mem::transmute(
3210 symbol(crate::vk1_0::FN_CMD_BEGIN_QUERY),
3211 ),
3212 cmd_end_query: std::mem::transmute(symbol(crate::vk1_0::FN_CMD_END_QUERY)),
3213 cmd_begin_conditional_rendering_ext: if device_enabled
3214 .ext_conditional_rendering
3215 {
3216 std::mem::transmute(
3217 symbol(
3218 crate::extensions::ext_conditional_rendering::FN_CMD_BEGIN_CONDITIONAL_RENDERING_EXT,
3219 ),
3220 )
3221 } else {
3222 None
3223 },
3224 cmd_end_conditional_rendering_ext: if device_enabled
3225 .ext_conditional_rendering
3226 {
3227 std::mem::transmute(
3228 symbol(
3229 crate::extensions::ext_conditional_rendering::FN_CMD_END_CONDITIONAL_RENDERING_EXT,
3230 ),
3231 )
3232 } else {
3233 None
3234 },
3235 cmd_reset_query_pool: std::mem::transmute(
3236 symbol(crate::vk1_0::FN_CMD_RESET_QUERY_POOL),
3237 ),
3238 cmd_write_timestamp: std::mem::transmute(
3239 symbol(crate::vk1_0::FN_CMD_WRITE_TIMESTAMP),
3240 ),
3241 cmd_copy_query_pool_results: std::mem::transmute(
3242 symbol(crate::vk1_0::FN_CMD_COPY_QUERY_POOL_RESULTS),
3243 ),
3244 cmd_push_constants: std::mem::transmute(
3245 symbol(crate::vk1_0::FN_CMD_PUSH_CONSTANTS),
3246 ),
3247 cmd_begin_render_pass: std::mem::transmute(
3248 symbol(crate::vk1_0::FN_CMD_BEGIN_RENDER_PASS),
3249 ),
3250 cmd_next_subpass: std::mem::transmute(
3251 symbol(crate::vk1_0::FN_CMD_NEXT_SUBPASS),
3252 ),
3253 cmd_end_render_pass: std::mem::transmute(
3254 symbol(crate::vk1_0::FN_CMD_END_RENDER_PASS),
3255 ),
3256 cmd_execute_commands: std::mem::transmute(
3257 symbol(crate::vk1_0::FN_CMD_EXECUTE_COMMANDS),
3258 ),
3259 create_shared_swapchains_khr: if device_enabled.khr_display_swapchain {
3260 std::mem::transmute(
3261 symbol(
3262 crate::extensions::khr_display_swapchain::FN_CREATE_SHARED_SWAPCHAINS_KHR,
3263 ),
3264 )
3265 } else {
3266 None
3267 },
3268 create_swapchain_khr: if device_enabled.khr_swapchain {
3269 std::mem::transmute(
3270 symbol(crate::extensions::khr_swapchain::FN_CREATE_SWAPCHAIN_KHR),
3271 )
3272 } else {
3273 None
3274 },
3275 destroy_swapchain_khr: if device_enabled.khr_swapchain {
3276 std::mem::transmute(
3277 symbol(crate::extensions::khr_swapchain::FN_DESTROY_SWAPCHAIN_KHR),
3278 )
3279 } else {
3280 None
3281 },
3282 get_swapchain_images_khr: if device_enabled.khr_swapchain {
3283 std::mem::transmute(
3284 symbol(crate::extensions::khr_swapchain::FN_GET_SWAPCHAIN_IMAGES_KHR),
3285 )
3286 } else {
3287 None
3288 },
3289 acquire_next_image_khr: if device_enabled.khr_swapchain {
3290 std::mem::transmute(
3291 symbol(crate::extensions::khr_swapchain::FN_ACQUIRE_NEXT_IMAGE_KHR),
3292 )
3293 } else {
3294 None
3295 },
3296 queue_present_khr: if device_enabled.khr_swapchain {
3297 std::mem::transmute(
3298 symbol(crate::extensions::khr_swapchain::FN_QUEUE_PRESENT_KHR),
3299 )
3300 } else {
3301 None
3302 },
3303 debug_marker_set_object_name_ext: if device_enabled.ext_debug_marker {
3304 std::mem::transmute(
3305 symbol(
3306 crate::extensions::ext_debug_marker::FN_DEBUG_MARKER_SET_OBJECT_NAME_EXT,
3307 ),
3308 )
3309 } else {
3310 None
3311 },
3312 debug_marker_set_object_tag_ext: if device_enabled.ext_debug_marker {
3313 std::mem::transmute(
3314 symbol(
3315 crate::extensions::ext_debug_marker::FN_DEBUG_MARKER_SET_OBJECT_TAG_EXT,
3316 ),
3317 )
3318 } else {
3319 None
3320 },
3321 cmd_debug_marker_begin_ext: if device_enabled.ext_debug_marker {
3322 std::mem::transmute(
3323 symbol(
3324 crate::extensions::ext_debug_marker::FN_CMD_DEBUG_MARKER_BEGIN_EXT,
3325 ),
3326 )
3327 } else {
3328 None
3329 },
3330 cmd_debug_marker_end_ext: if device_enabled.ext_debug_marker {
3331 std::mem::transmute(
3332 symbol(
3333 crate::extensions::ext_debug_marker::FN_CMD_DEBUG_MARKER_END_EXT,
3334 ),
3335 )
3336 } else {
3337 None
3338 },
3339 cmd_debug_marker_insert_ext: if device_enabled.ext_debug_marker {
3340 std::mem::transmute(
3341 symbol(
3342 crate::extensions::ext_debug_marker::FN_CMD_DEBUG_MARKER_INSERT_EXT,
3343 ),
3344 )
3345 } else {
3346 None
3347 },
3348 get_memory_win32_handle_nv: if device_enabled.nv_external_memory_win32 {
3349 std::mem::transmute(
3350 symbol(
3351 crate::extensions::nv_external_memory_win32::FN_GET_MEMORY_WIN32_HANDLE_NV,
3352 ),
3353 )
3354 } else {
3355 None
3356 },
3357 cmd_execute_generated_commands_nv: if device_enabled
3358 .nv_device_generated_commands
3359 {
3360 std::mem::transmute(
3361 symbol(
3362 crate::extensions::nv_device_generated_commands::FN_CMD_EXECUTE_GENERATED_COMMANDS_NV,
3363 ),
3364 )
3365 } else {
3366 None
3367 },
3368 cmd_preprocess_generated_commands_nv: if device_enabled
3369 .nv_device_generated_commands
3370 {
3371 std::mem::transmute(
3372 symbol(
3373 crate::extensions::nv_device_generated_commands::FN_CMD_PREPROCESS_GENERATED_COMMANDS_NV,
3374 ),
3375 )
3376 } else {
3377 None
3378 },
3379 cmd_bind_pipeline_shader_group_nv: if device_enabled
3380 .nv_device_generated_commands
3381 {
3382 std::mem::transmute(
3383 symbol(
3384 crate::extensions::nv_device_generated_commands::FN_CMD_BIND_PIPELINE_SHADER_GROUP_NV,
3385 ),
3386 )
3387 } else {
3388 None
3389 },
3390 get_generated_commands_memory_requirements_nv: if device_enabled
3391 .nv_device_generated_commands
3392 {
3393 std::mem::transmute(
3394 symbol(
3395 crate::extensions::nv_device_generated_commands::FN_GET_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_NV,
3396 ),
3397 )
3398 } else {
3399 None
3400 },
3401 create_indirect_commands_layout_nv: if device_enabled
3402 .nv_device_generated_commands
3403 {
3404 std::mem::transmute(
3405 symbol(
3406 crate::extensions::nv_device_generated_commands::FN_CREATE_INDIRECT_COMMANDS_LAYOUT_NV,
3407 ),
3408 )
3409 } else {
3410 None
3411 },
3412 destroy_indirect_commands_layout_nv: if device_enabled
3413 .nv_device_generated_commands
3414 {
3415 std::mem::transmute(
3416 symbol(
3417 crate::extensions::nv_device_generated_commands::FN_DESTROY_INDIRECT_COMMANDS_LAYOUT_NV,
3418 ),
3419 )
3420 } else {
3421 None
3422 },
3423 cmd_push_descriptor_set_khr: if device_enabled.khr_push_descriptor {
3424 std::mem::transmute(
3425 symbol(
3426 crate::extensions::khr_push_descriptor::FN_CMD_PUSH_DESCRIPTOR_SET_KHR,
3427 ),
3428 )
3429 } else {
3430 None
3431 },
3432 trim_command_pool: if instance_enabled.vk1_1 {
3433 std::mem::transmute(symbol(crate::vk1_1::FN_TRIM_COMMAND_POOL))
3434 } else {
3435 None
3436 },
3437 get_memory_win32_handle_khr: if device_enabled.khr_external_memory_win32 {
3438 std::mem::transmute(
3439 symbol(
3440 crate::extensions::khr_external_memory_win32::FN_GET_MEMORY_WIN32_HANDLE_KHR,
3441 ),
3442 )
3443 } else {
3444 None
3445 },
3446 get_memory_win32_handle_properties_khr: if device_enabled
3447 .khr_external_memory_win32
3448 {
3449 std::mem::transmute(
3450 symbol(
3451 crate::extensions::khr_external_memory_win32::FN_GET_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
3452 ),
3453 )
3454 } else {
3455 None
3456 },
3457 get_memory_fd_khr: if device_enabled.khr_external_memory_fd {
3458 std::mem::transmute(
3459 symbol(
3460 crate::extensions::khr_external_memory_fd::FN_GET_MEMORY_FD_KHR,
3461 ),
3462 )
3463 } else {
3464 None
3465 },
3466 get_memory_fd_properties_khr: if device_enabled.khr_external_memory_fd {
3467 std::mem::transmute(
3468 symbol(
3469 crate::extensions::khr_external_memory_fd::FN_GET_MEMORY_FD_PROPERTIES_KHR,
3470 ),
3471 )
3472 } else {
3473 None
3474 },
3475 get_memory_zircon_handle_fuchsia: if device_enabled.fuchsia_external_memory {
3476 std::mem::transmute(
3477 symbol(
3478 crate::extensions::fuchsia_external_memory::FN_GET_MEMORY_ZIRCON_HANDLE_FUCHSIA,
3479 ),
3480 )
3481 } else {
3482 None
3483 },
3484 get_memory_zircon_handle_properties_fuchsia: if device_enabled
3485 .fuchsia_external_memory
3486 {
3487 std::mem::transmute(
3488 symbol(
3489 crate::extensions::fuchsia_external_memory::FN_GET_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
3490 ),
3491 )
3492 } else {
3493 None
3494 },
3495 get_memory_remote_address_nv: if device_enabled.nv_external_memory_rdma {
3496 std::mem::transmute(
3497 symbol(
3498 crate::extensions::nv_external_memory_rdma::FN_GET_MEMORY_REMOTE_ADDRESS_NV,
3499 ),
3500 )
3501 } else {
3502 None
3503 },
3504 get_semaphore_win32_handle_khr: if device_enabled
3505 .khr_external_semaphore_win32
3506 {
3507 std::mem::transmute(
3508 symbol(
3509 crate::extensions::khr_external_semaphore_win32::FN_GET_SEMAPHORE_WIN32_HANDLE_KHR,
3510 ),
3511 )
3512 } else {
3513 None
3514 },
3515 import_semaphore_win32_handle_khr: if device_enabled
3516 .khr_external_semaphore_win32
3517 {
3518 std::mem::transmute(
3519 symbol(
3520 crate::extensions::khr_external_semaphore_win32::FN_IMPORT_SEMAPHORE_WIN32_HANDLE_KHR,
3521 ),
3522 )
3523 } else {
3524 None
3525 },
3526 get_semaphore_fd_khr: if device_enabled.khr_external_semaphore_fd {
3527 std::mem::transmute(
3528 symbol(
3529 crate::extensions::khr_external_semaphore_fd::FN_GET_SEMAPHORE_FD_KHR,
3530 ),
3531 )
3532 } else {
3533 None
3534 },
3535 import_semaphore_fd_khr: if device_enabled.khr_external_semaphore_fd {
3536 std::mem::transmute(
3537 symbol(
3538 crate::extensions::khr_external_semaphore_fd::FN_IMPORT_SEMAPHORE_FD_KHR,
3539 ),
3540 )
3541 } else {
3542 None
3543 },
3544 get_semaphore_zircon_handle_fuchsia: if device_enabled
3545 .fuchsia_external_semaphore
3546 {
3547 std::mem::transmute(
3548 symbol(
3549 crate::extensions::fuchsia_external_semaphore::FN_GET_SEMAPHORE_ZIRCON_HANDLE_FUCHSIA,
3550 ),
3551 )
3552 } else {
3553 None
3554 },
3555 import_semaphore_zircon_handle_fuchsia: if device_enabled
3556 .fuchsia_external_semaphore
3557 {
3558 std::mem::transmute(
3559 symbol(
3560 crate::extensions::fuchsia_external_semaphore::FN_IMPORT_SEMAPHORE_ZIRCON_HANDLE_FUCHSIA,
3561 ),
3562 )
3563 } else {
3564 None
3565 },
3566 get_fence_win32_handle_khr: if device_enabled.khr_external_fence_win32 {
3567 std::mem::transmute(
3568 symbol(
3569 crate::extensions::khr_external_fence_win32::FN_GET_FENCE_WIN32_HANDLE_KHR,
3570 ),
3571 )
3572 } else {
3573 None
3574 },
3575 import_fence_win32_handle_khr: if device_enabled.khr_external_fence_win32 {
3576 std::mem::transmute(
3577 symbol(
3578 crate::extensions::khr_external_fence_win32::FN_IMPORT_FENCE_WIN32_HANDLE_KHR,
3579 ),
3580 )
3581 } else {
3582 None
3583 },
3584 get_fence_fd_khr: if device_enabled.khr_external_fence_fd {
3585 std::mem::transmute(
3586 symbol(crate::extensions::khr_external_fence_fd::FN_GET_FENCE_FD_KHR),
3587 )
3588 } else {
3589 None
3590 },
3591 import_fence_fd_khr: if device_enabled.khr_external_fence_fd {
3592 std::mem::transmute(
3593 symbol(
3594 crate::extensions::khr_external_fence_fd::FN_IMPORT_FENCE_FD_KHR,
3595 ),
3596 )
3597 } else {
3598 None
3599 },
3600 display_power_control_ext: if device_enabled.ext_display_control {
3601 std::mem::transmute(
3602 symbol(
3603 crate::extensions::ext_display_control::FN_DISPLAY_POWER_CONTROL_EXT,
3604 ),
3605 )
3606 } else {
3607 None
3608 },
3609 register_device_event_ext: if device_enabled.ext_display_control {
3610 std::mem::transmute(
3611 symbol(
3612 crate::extensions::ext_display_control::FN_REGISTER_DEVICE_EVENT_EXT,
3613 ),
3614 )
3615 } else {
3616 None
3617 },
3618 register_display_event_ext: if device_enabled.ext_display_control {
3619 std::mem::transmute(
3620 symbol(
3621 crate::extensions::ext_display_control::FN_REGISTER_DISPLAY_EVENT_EXT,
3622 ),
3623 )
3624 } else {
3625 None
3626 },
3627 get_swapchain_counter_ext: if device_enabled.ext_display_control {
3628 std::mem::transmute(
3629 symbol(
3630 crate::extensions::ext_display_control::FN_GET_SWAPCHAIN_COUNTER_EXT,
3631 ),
3632 )
3633 } else {
3634 None
3635 },
3636 get_device_group_peer_memory_features: if instance_enabled.vk1_1 {
3637 std::mem::transmute(
3638 symbol(crate::vk1_1::FN_GET_DEVICE_GROUP_PEER_MEMORY_FEATURES),
3639 )
3640 } else {
3641 None
3642 },
3643 bind_buffer_memory2: if instance_enabled.vk1_1 {
3644 std::mem::transmute(symbol(crate::vk1_1::FN_BIND_BUFFER_MEMORY2))
3645 } else {
3646 None
3647 },
3648 bind_image_memory2: if instance_enabled.vk1_1 {
3649 std::mem::transmute(symbol(crate::vk1_1::FN_BIND_IMAGE_MEMORY2))
3650 } else {
3651 None
3652 },
3653 cmd_set_device_mask: if instance_enabled.vk1_1 {
3654 std::mem::transmute(symbol(crate::vk1_1::FN_CMD_SET_DEVICE_MASK))
3655 } else {
3656 None
3657 },
3658 get_device_group_present_capabilities_khr: if (device_enabled.khr_swapchain
3659 && instance_enabled.vk1_1)
3660 || (device_enabled.khr_device_group && instance_enabled.khr_surface)
3661 {
3662 std::mem::transmute(
3663 symbol(
3664 crate::extensions::khr_swapchain::FN_GET_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
3665 ),
3666 )
3667 } else {
3668 None
3669 },
3670 get_device_group_surface_present_modes_khr: if (device_enabled.khr_swapchain
3671 && instance_enabled.vk1_1)
3672 || (device_enabled.khr_device_group && instance_enabled.khr_surface)
3673 {
3674 std::mem::transmute(
3675 symbol(
3676 crate::extensions::khr_swapchain::FN_GET_DEVICE_GROUP_SURFACE_PRESENT_MODES_KHR,
3677 ),
3678 )
3679 } else {
3680 None
3681 },
3682 acquire_next_image2_khr: if (device_enabled.khr_swapchain
3683 && instance_enabled.vk1_1)
3684 || (device_enabled.khr_device_group && device_enabled.khr_swapchain)
3685 {
3686 std::mem::transmute(
3687 symbol(crate::extensions::khr_swapchain::FN_ACQUIRE_NEXT_IMAGE2_KHR),
3688 )
3689 } else {
3690 None
3691 },
3692 cmd_dispatch_base: if instance_enabled.vk1_1 {
3693 std::mem::transmute(symbol(crate::vk1_1::FN_CMD_DISPATCH_BASE))
3694 } else {
3695 None
3696 },
3697 create_descriptor_update_template: if instance_enabled.vk1_1 {
3698 std::mem::transmute(
3699 symbol(crate::vk1_1::FN_CREATE_DESCRIPTOR_UPDATE_TEMPLATE),
3700 )
3701 } else {
3702 None
3703 },
3704 destroy_descriptor_update_template: if instance_enabled.vk1_1 {
3705 std::mem::transmute(
3706 symbol(crate::vk1_1::FN_DESTROY_DESCRIPTOR_UPDATE_TEMPLATE),
3707 )
3708 } else {
3709 None
3710 },
3711 update_descriptor_set_with_template: if instance_enabled.vk1_1 {
3712 std::mem::transmute(
3713 symbol(crate::vk1_1::FN_UPDATE_DESCRIPTOR_SET_WITH_TEMPLATE),
3714 )
3715 } else {
3716 None
3717 },
3718 cmd_push_descriptor_set_with_template_khr: if (device_enabled
3719 .khr_push_descriptor && instance_enabled.vk1_1)
3720 || (device_enabled.khr_push_descriptor
3721 && device_enabled.khr_descriptor_update_template)
3722 || (device_enabled.khr_descriptor_update_template
3723 && device_enabled.khr_push_descriptor)
3724 {
3725 std::mem::transmute(
3726 symbol(
3727 crate::extensions::khr_push_descriptor::FN_CMD_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_KHR,
3728 ),
3729 )
3730 } else {
3731 None
3732 },
3733 set_hdr_metadata_ext: if device_enabled.ext_hdr_metadata {
3734 std::mem::transmute(
3735 symbol(crate::extensions::ext_hdr_metadata::FN_SET_HDR_METADATA_EXT),
3736 )
3737 } else {
3738 None
3739 },
3740 get_swapchain_status_khr: if device_enabled.khr_shared_presentable_image {
3741 std::mem::transmute(
3742 symbol(
3743 crate::extensions::khr_shared_presentable_image::FN_GET_SWAPCHAIN_STATUS_KHR,
3744 ),
3745 )
3746 } else {
3747 None
3748 },
3749 get_refresh_cycle_duration_google: if device_enabled.google_display_timing {
3750 std::mem::transmute(
3751 symbol(
3752 crate::extensions::google_display_timing::FN_GET_REFRESH_CYCLE_DURATION_GOOGLE,
3753 ),
3754 )
3755 } else {
3756 None
3757 },
3758 get_past_presentation_timing_google: if device_enabled.google_display_timing
3759 {
3760 std::mem::transmute(
3761 symbol(
3762 crate::extensions::google_display_timing::FN_GET_PAST_PRESENTATION_TIMING_GOOGLE,
3763 ),
3764 )
3765 } else {
3766 None
3767 },
3768 cmd_set_viewport_w_scaling_nv: if device_enabled.nv_clip_space_w_scaling {
3769 std::mem::transmute(
3770 symbol(
3771 crate::extensions::nv_clip_space_w_scaling::FN_CMD_SET_VIEWPORT_W_SCALING_NV,
3772 ),
3773 )
3774 } else {
3775 None
3776 },
3777 cmd_set_discard_rectangle_ext: if device_enabled.ext_discard_rectangles {
3778 std::mem::transmute(
3779 symbol(
3780 crate::extensions::ext_discard_rectangles::FN_CMD_SET_DISCARD_RECTANGLE_EXT,
3781 ),
3782 )
3783 } else {
3784 None
3785 },
3786 cmd_set_sample_locations_ext: if device_enabled.ext_sample_locations {
3787 std::mem::transmute(
3788 symbol(
3789 crate::extensions::ext_sample_locations::FN_CMD_SET_SAMPLE_LOCATIONS_EXT,
3790 ),
3791 )
3792 } else {
3793 None
3794 },
3795 get_buffer_memory_requirements2: if instance_enabled.vk1_1 {
3796 std::mem::transmute(
3797 symbol(crate::vk1_1::FN_GET_BUFFER_MEMORY_REQUIREMENTS2),
3798 )
3799 } else {
3800 None
3801 },
3802 get_image_memory_requirements2: if instance_enabled.vk1_1 {
3803 std::mem::transmute(
3804 symbol(crate::vk1_1::FN_GET_IMAGE_MEMORY_REQUIREMENTS2),
3805 )
3806 } else {
3807 None
3808 },
3809 get_image_sparse_memory_requirements2: if instance_enabled.vk1_1 {
3810 std::mem::transmute(
3811 symbol(crate::vk1_1::FN_GET_IMAGE_SPARSE_MEMORY_REQUIREMENTS2),
3812 )
3813 } else {
3814 None
3815 },
3816 get_device_buffer_memory_requirements: if instance_enabled.vk1_3 {
3817 std::mem::transmute(
3818 symbol(crate::vk1_3::FN_GET_DEVICE_BUFFER_MEMORY_REQUIREMENTS),
3819 )
3820 } else {
3821 None
3822 },
3823 get_device_image_memory_requirements: if instance_enabled.vk1_3 {
3824 std::mem::transmute(
3825 symbol(crate::vk1_3::FN_GET_DEVICE_IMAGE_MEMORY_REQUIREMENTS),
3826 )
3827 } else {
3828 None
3829 },
3830 get_device_image_sparse_memory_requirements: if instance_enabled.vk1_3 {
3831 std::mem::transmute(
3832 symbol(crate::vk1_3::FN_GET_DEVICE_IMAGE_SPARSE_MEMORY_REQUIREMENTS),
3833 )
3834 } else {
3835 None
3836 },
3837 create_sampler_ycbcr_conversion: if instance_enabled.vk1_1 {
3838 std::mem::transmute(
3839 symbol(crate::vk1_1::FN_CREATE_SAMPLER_YCBCR_CONVERSION),
3840 )
3841 } else {
3842 None
3843 },
3844 destroy_sampler_ycbcr_conversion: if instance_enabled.vk1_1 {
3845 std::mem::transmute(
3846 symbol(crate::vk1_1::FN_DESTROY_SAMPLER_YCBCR_CONVERSION),
3847 )
3848 } else {
3849 None
3850 },
3851 get_device_queue2: if instance_enabled.vk1_1 {
3852 std::mem::transmute(symbol(crate::vk1_1::FN_GET_DEVICE_QUEUE2))
3853 } else {
3854 None
3855 },
3856 create_validation_cache_ext: if device_enabled.ext_validation_cache {
3857 std::mem::transmute(
3858 symbol(
3859 crate::extensions::ext_validation_cache::FN_CREATE_VALIDATION_CACHE_EXT,
3860 ),
3861 )
3862 } else {
3863 None
3864 },
3865 destroy_validation_cache_ext: if device_enabled.ext_validation_cache {
3866 std::mem::transmute(
3867 symbol(
3868 crate::extensions::ext_validation_cache::FN_DESTROY_VALIDATION_CACHE_EXT,
3869 ),
3870 )
3871 } else {
3872 None
3873 },
3874 get_validation_cache_data_ext: if device_enabled.ext_validation_cache {
3875 std::mem::transmute(
3876 symbol(
3877 crate::extensions::ext_validation_cache::FN_GET_VALIDATION_CACHE_DATA_EXT,
3878 ),
3879 )
3880 } else {
3881 None
3882 },
3883 merge_validation_caches_ext: if device_enabled.ext_validation_cache {
3884 std::mem::transmute(
3885 symbol(
3886 crate::extensions::ext_validation_cache::FN_MERGE_VALIDATION_CACHES_EXT,
3887 ),
3888 )
3889 } else {
3890 None
3891 },
3892 get_descriptor_set_layout_support: if instance_enabled.vk1_1 {
3893 std::mem::transmute(
3894 symbol(crate::vk1_1::FN_GET_DESCRIPTOR_SET_LAYOUT_SUPPORT),
3895 )
3896 } else {
3897 None
3898 },
3899 get_shader_info_amd: if device_enabled.amd_shader_info {
3900 std::mem::transmute(
3901 symbol(crate::extensions::amd_shader_info::FN_GET_SHADER_INFO_AMD),
3902 )
3903 } else {
3904 None
3905 },
3906 set_local_dimming_amd: if device_enabled.amd_display_native_hdr {
3907 std::mem::transmute(
3908 symbol(
3909 crate::extensions::amd_display_native_hdr::FN_SET_LOCAL_DIMMING_AMD,
3910 ),
3911 )
3912 } else {
3913 None
3914 },
3915 get_calibrated_timestamps_ext: if device_enabled.ext_calibrated_timestamps {
3916 std::mem::transmute(
3917 symbol(
3918 crate::extensions::ext_calibrated_timestamps::FN_GET_CALIBRATED_TIMESTAMPS_EXT,
3919 ),
3920 )
3921 } else {
3922 None
3923 },
3924 set_debug_utils_object_name_ext: if instance_enabled.ext_debug_utils {
3925 std::mem::transmute(
3926 symbol(
3927 crate::extensions::ext_debug_utils::FN_SET_DEBUG_UTILS_OBJECT_NAME_EXT,
3928 ),
3929 )
3930 } else {
3931 None
3932 },
3933 set_debug_utils_object_tag_ext: if instance_enabled.ext_debug_utils {
3934 std::mem::transmute(
3935 symbol(
3936 crate::extensions::ext_debug_utils::FN_SET_DEBUG_UTILS_OBJECT_TAG_EXT,
3937 ),
3938 )
3939 } else {
3940 None
3941 },
3942 queue_begin_debug_utils_label_ext: if instance_enabled.ext_debug_utils {
3943 std::mem::transmute(
3944 symbol(
3945 crate::extensions::ext_debug_utils::FN_QUEUE_BEGIN_DEBUG_UTILS_LABEL_EXT,
3946 ),
3947 )
3948 } else {
3949 None
3950 },
3951 queue_end_debug_utils_label_ext: if instance_enabled.ext_debug_utils {
3952 std::mem::transmute(
3953 symbol(
3954 crate::extensions::ext_debug_utils::FN_QUEUE_END_DEBUG_UTILS_LABEL_EXT,
3955 ),
3956 )
3957 } else {
3958 None
3959 },
3960 queue_insert_debug_utils_label_ext: if instance_enabled.ext_debug_utils {
3961 std::mem::transmute(
3962 symbol(
3963 crate::extensions::ext_debug_utils::FN_QUEUE_INSERT_DEBUG_UTILS_LABEL_EXT,
3964 ),
3965 )
3966 } else {
3967 None
3968 },
3969 cmd_begin_debug_utils_label_ext: if instance_enabled.ext_debug_utils {
3970 std::mem::transmute(
3971 symbol(
3972 crate::extensions::ext_debug_utils::FN_CMD_BEGIN_DEBUG_UTILS_LABEL_EXT,
3973 ),
3974 )
3975 } else {
3976 None
3977 },
3978 cmd_end_debug_utils_label_ext: if instance_enabled.ext_debug_utils {
3979 std::mem::transmute(
3980 symbol(
3981 crate::extensions::ext_debug_utils::FN_CMD_END_DEBUG_UTILS_LABEL_EXT,
3982 ),
3983 )
3984 } else {
3985 None
3986 },
3987 cmd_insert_debug_utils_label_ext: if instance_enabled.ext_debug_utils {
3988 std::mem::transmute(
3989 symbol(
3990 crate::extensions::ext_debug_utils::FN_CMD_INSERT_DEBUG_UTILS_LABEL_EXT,
3991 ),
3992 )
3993 } else {
3994 None
3995 },
3996 get_memory_host_pointer_properties_ext: if device_enabled
3997 .ext_external_memory_host
3998 {
3999 std::mem::transmute(
4000 symbol(
4001 crate::extensions::ext_external_memory_host::FN_GET_MEMORY_HOST_POINTER_PROPERTIES_EXT,
4002 ),
4003 )
4004 } else {
4005 None
4006 },
4007 cmd_write_buffer_marker_amd: if device_enabled.amd_buffer_marker {
4008 std::mem::transmute(
4009 symbol(
4010 crate::extensions::amd_buffer_marker::FN_CMD_WRITE_BUFFER_MARKER_AMD,
4011 ),
4012 )
4013 } else {
4014 None
4015 },
4016 create_render_pass2: if instance_enabled.vk1_2 {
4017 std::mem::transmute(symbol(crate::vk1_2::FN_CREATE_RENDER_PASS2))
4018 } else {
4019 None
4020 },
4021 cmd_begin_render_pass2: if instance_enabled.vk1_2 {
4022 std::mem::transmute(symbol(crate::vk1_2::FN_CMD_BEGIN_RENDER_PASS2))
4023 } else {
4024 None
4025 },
4026 cmd_next_subpass2: if instance_enabled.vk1_2 {
4027 std::mem::transmute(symbol(crate::vk1_2::FN_CMD_NEXT_SUBPASS2))
4028 } else {
4029 None
4030 },
4031 cmd_end_render_pass2: if instance_enabled.vk1_2 {
4032 std::mem::transmute(symbol(crate::vk1_2::FN_CMD_END_RENDER_PASS2))
4033 } else {
4034 None
4035 },
4036 get_semaphore_counter_value: if instance_enabled.vk1_2 {
4037 std::mem::transmute(symbol(crate::vk1_2::FN_GET_SEMAPHORE_COUNTER_VALUE))
4038 } else {
4039 None
4040 },
4041 wait_semaphores: if instance_enabled.vk1_2 {
4042 std::mem::transmute(symbol(crate::vk1_2::FN_WAIT_SEMAPHORES))
4043 } else {
4044 None
4045 },
4046 signal_semaphore: if instance_enabled.vk1_2 {
4047 std::mem::transmute(symbol(crate::vk1_2::FN_SIGNAL_SEMAPHORE))
4048 } else {
4049 None
4050 },
4051 get_android_hardware_buffer_properties_android: if device_enabled
4052 .android_external_memory_android_hardware_buffer
4053 {
4054 std::mem::transmute(
4055 symbol(
4056 crate::extensions::android_external_memory_android_hardware_buffer::FN_GET_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
4057 ),
4058 )
4059 } else {
4060 None
4061 },
4062 get_memory_android_hardware_buffer_android: if device_enabled
4063 .android_external_memory_android_hardware_buffer
4064 {
4065 std::mem::transmute(
4066 symbol(
4067 crate::extensions::android_external_memory_android_hardware_buffer::FN_GET_MEMORY_ANDROID_HARDWARE_BUFFER_ANDROID,
4068 ),
4069 )
4070 } else {
4071 None
4072 },
4073 cmd_draw_indirect_count: if instance_enabled.vk1_2 {
4074 std::mem::transmute(symbol(crate::vk1_2::FN_CMD_DRAW_INDIRECT_COUNT))
4075 } else {
4076 None
4077 },
4078 cmd_draw_indexed_indirect_count: if instance_enabled.vk1_2 {
4079 std::mem::transmute(
4080 symbol(crate::vk1_2::FN_CMD_DRAW_INDEXED_INDIRECT_COUNT),
4081 )
4082 } else {
4083 None
4084 },
4085 cmd_set_checkpoint_nv: if device_enabled.nv_device_diagnostic_checkpoints {
4086 std::mem::transmute(
4087 symbol(
4088 crate::extensions::nv_device_diagnostic_checkpoints::FN_CMD_SET_CHECKPOINT_NV,
4089 ),
4090 )
4091 } else {
4092 None
4093 },
4094 get_queue_checkpoint_data_nv: if device_enabled
4095 .nv_device_diagnostic_checkpoints
4096 {
4097 std::mem::transmute(
4098 symbol(
4099 crate::extensions::nv_device_diagnostic_checkpoints::FN_GET_QUEUE_CHECKPOINT_DATA_NV,
4100 ),
4101 )
4102 } else {
4103 None
4104 },
4105 cmd_bind_transform_feedback_buffers_ext: if device_enabled
4106 .ext_transform_feedback
4107 {
4108 std::mem::transmute(
4109 symbol(
4110 crate::extensions::ext_transform_feedback::FN_CMD_BIND_TRANSFORM_FEEDBACK_BUFFERS_EXT,
4111 ),
4112 )
4113 } else {
4114 None
4115 },
4116 cmd_begin_transform_feedback_ext: if device_enabled.ext_transform_feedback {
4117 std::mem::transmute(
4118 symbol(
4119 crate::extensions::ext_transform_feedback::FN_CMD_BEGIN_TRANSFORM_FEEDBACK_EXT,
4120 ),
4121 )
4122 } else {
4123 None
4124 },
4125 cmd_end_transform_feedback_ext: if device_enabled.ext_transform_feedback {
4126 std::mem::transmute(
4127 symbol(
4128 crate::extensions::ext_transform_feedback::FN_CMD_END_TRANSFORM_FEEDBACK_EXT,
4129 ),
4130 )
4131 } else {
4132 None
4133 },
4134 cmd_begin_query_indexed_ext: if device_enabled.ext_transform_feedback {
4135 std::mem::transmute(
4136 symbol(
4137 crate::extensions::ext_transform_feedback::FN_CMD_BEGIN_QUERY_INDEXED_EXT,
4138 ),
4139 )
4140 } else {
4141 None
4142 },
4143 cmd_end_query_indexed_ext: if device_enabled.ext_transform_feedback {
4144 std::mem::transmute(
4145 symbol(
4146 crate::extensions::ext_transform_feedback::FN_CMD_END_QUERY_INDEXED_EXT,
4147 ),
4148 )
4149 } else {
4150 None
4151 },
4152 cmd_draw_indirect_byte_count_ext: if device_enabled.ext_transform_feedback {
4153 std::mem::transmute(
4154 symbol(
4155 crate::extensions::ext_transform_feedback::FN_CMD_DRAW_INDIRECT_BYTE_COUNT_EXT,
4156 ),
4157 )
4158 } else {
4159 None
4160 },
4161 cmd_set_exclusive_scissor_nv: if device_enabled.nv_scissor_exclusive {
4162 std::mem::transmute(
4163 symbol(
4164 crate::extensions::nv_scissor_exclusive::FN_CMD_SET_EXCLUSIVE_SCISSOR_NV,
4165 ),
4166 )
4167 } else {
4168 None
4169 },
4170 cmd_bind_shading_rate_image_nv: if device_enabled.nv_shading_rate_image {
4171 std::mem::transmute(
4172 symbol(
4173 crate::extensions::nv_shading_rate_image::FN_CMD_BIND_SHADING_RATE_IMAGE_NV,
4174 ),
4175 )
4176 } else {
4177 None
4178 },
4179 cmd_set_viewport_shading_rate_palette_nv: if device_enabled
4180 .nv_shading_rate_image
4181 {
4182 std::mem::transmute(
4183 symbol(
4184 crate::extensions::nv_shading_rate_image::FN_CMD_SET_VIEWPORT_SHADING_RATE_PALETTE_NV,
4185 ),
4186 )
4187 } else {
4188 None
4189 },
4190 cmd_set_coarse_sample_order_nv: if device_enabled.nv_shading_rate_image {
4191 std::mem::transmute(
4192 symbol(
4193 crate::extensions::nv_shading_rate_image::FN_CMD_SET_COARSE_SAMPLE_ORDER_NV,
4194 ),
4195 )
4196 } else {
4197 None
4198 },
4199 cmd_draw_mesh_tasks_nv: if device_enabled.nv_mesh_shader {
4200 std::mem::transmute(
4201 symbol(crate::extensions::nv_mesh_shader::FN_CMD_DRAW_MESH_TASKS_NV),
4202 )
4203 } else {
4204 None
4205 },
4206 cmd_draw_mesh_tasks_indirect_nv: if device_enabled.nv_mesh_shader {
4207 std::mem::transmute(
4208 symbol(
4209 crate::extensions::nv_mesh_shader::FN_CMD_DRAW_MESH_TASKS_INDIRECT_NV,
4210 ),
4211 )
4212 } else {
4213 None
4214 },
4215 cmd_draw_mesh_tasks_indirect_count_nv: if device_enabled.nv_mesh_shader {
4216 std::mem::transmute(
4217 symbol(
4218 crate::extensions::nv_mesh_shader::FN_CMD_DRAW_MESH_TASKS_INDIRECT_COUNT_NV,
4219 ),
4220 )
4221 } else {
4222 None
4223 },
4224 compile_deferred_nv: if device_enabled.nv_ray_tracing {
4225 std::mem::transmute(
4226 symbol(crate::extensions::nv_ray_tracing::FN_COMPILE_DEFERRED_NV),
4227 )
4228 } else {
4229 None
4230 },
4231 create_acceleration_structure_nv: if device_enabled.nv_ray_tracing {
4232 std::mem::transmute(
4233 symbol(
4234 crate::extensions::nv_ray_tracing::FN_CREATE_ACCELERATION_STRUCTURE_NV,
4235 ),
4236 )
4237 } else {
4238 None
4239 },
4240 cmd_bind_invocation_mask_huawei: if device_enabled.huawei_invocation_mask {
4241 std::mem::transmute(
4242 symbol(
4243 crate::extensions::huawei_invocation_mask::FN_CMD_BIND_INVOCATION_MASK_HUAWEI,
4244 ),
4245 )
4246 } else {
4247 None
4248 },
4249 destroy_acceleration_structure_khr: if device_enabled
4250 .khr_acceleration_structure
4251 {
4252 std::mem::transmute(
4253 symbol(
4254 crate::extensions::khr_acceleration_structure::FN_DESTROY_ACCELERATION_STRUCTURE_KHR,
4255 ),
4256 )
4257 } else {
4258 None
4259 },
4260 destroy_acceleration_structure_nv: if device_enabled.nv_ray_tracing {
4261 std::mem::transmute(
4262 symbol(
4263 crate::extensions::nv_ray_tracing::FN_DESTROY_ACCELERATION_STRUCTURE_NV,
4264 ),
4265 )
4266 } else {
4267 None
4268 },
4269 get_acceleration_structure_memory_requirements_nv: if device_enabled
4270 .nv_ray_tracing
4271 {
4272 std::mem::transmute(
4273 symbol(
4274 crate::extensions::nv_ray_tracing::FN_GET_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_NV,
4275 ),
4276 )
4277 } else {
4278 None
4279 },
4280 bind_acceleration_structure_memory_nv: if device_enabled.nv_ray_tracing {
4281 std::mem::transmute(
4282 symbol(
4283 crate::extensions::nv_ray_tracing::FN_BIND_ACCELERATION_STRUCTURE_MEMORY_NV,
4284 ),
4285 )
4286 } else {
4287 None
4288 },
4289 cmd_copy_acceleration_structure_nv: if device_enabled.nv_ray_tracing {
4290 std::mem::transmute(
4291 symbol(
4292 crate::extensions::nv_ray_tracing::FN_CMD_COPY_ACCELERATION_STRUCTURE_NV,
4293 ),
4294 )
4295 } else {
4296 None
4297 },
4298 cmd_copy_acceleration_structure_khr: if device_enabled
4299 .khr_acceleration_structure
4300 {
4301 std::mem::transmute(
4302 symbol(
4303 crate::extensions::khr_acceleration_structure::FN_CMD_COPY_ACCELERATION_STRUCTURE_KHR,
4304 ),
4305 )
4306 } else {
4307 None
4308 },
4309 copy_acceleration_structure_khr: if device_enabled.khr_acceleration_structure
4310 {
4311 std::mem::transmute(
4312 symbol(
4313 crate::extensions::khr_acceleration_structure::FN_COPY_ACCELERATION_STRUCTURE_KHR,
4314 ),
4315 )
4316 } else {
4317 None
4318 },
4319 cmd_copy_acceleration_structure_to_memory_khr: if device_enabled
4320 .khr_acceleration_structure
4321 {
4322 std::mem::transmute(
4323 symbol(
4324 crate::extensions::khr_acceleration_structure::FN_CMD_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_KHR,
4325 ),
4326 )
4327 } else {
4328 None
4329 },
4330 copy_acceleration_structure_to_memory_khr: if device_enabled
4331 .khr_acceleration_structure
4332 {
4333 std::mem::transmute(
4334 symbol(
4335 crate::extensions::khr_acceleration_structure::FN_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_KHR,
4336 ),
4337 )
4338 } else {
4339 None
4340 },
4341 cmd_copy_memory_to_acceleration_structure_khr: if device_enabled
4342 .khr_acceleration_structure
4343 {
4344 std::mem::transmute(
4345 symbol(
4346 crate::extensions::khr_acceleration_structure::FN_CMD_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_KHR,
4347 ),
4348 )
4349 } else {
4350 None
4351 },
4352 copy_memory_to_acceleration_structure_khr: if device_enabled
4353 .khr_acceleration_structure
4354 {
4355 std::mem::transmute(
4356 symbol(
4357 crate::extensions::khr_acceleration_structure::FN_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_KHR,
4358 ),
4359 )
4360 } else {
4361 None
4362 },
4363 cmd_write_acceleration_structures_properties_khr: if device_enabled
4364 .khr_acceleration_structure
4365 {
4366 std::mem::transmute(
4367 symbol(
4368 crate::extensions::khr_acceleration_structure::FN_CMD_WRITE_ACCELERATION_STRUCTURES_PROPERTIES_KHR,
4369 ),
4370 )
4371 } else {
4372 None
4373 },
4374 cmd_write_acceleration_structures_properties_nv: if device_enabled
4375 .nv_ray_tracing
4376 {
4377 std::mem::transmute(
4378 symbol(
4379 crate::extensions::nv_ray_tracing::FN_CMD_WRITE_ACCELERATION_STRUCTURES_PROPERTIES_NV,
4380 ),
4381 )
4382 } else {
4383 None
4384 },
4385 cmd_build_acceleration_structure_nv: if device_enabled.nv_ray_tracing {
4386 std::mem::transmute(
4387 symbol(
4388 crate::extensions::nv_ray_tracing::FN_CMD_BUILD_ACCELERATION_STRUCTURE_NV,
4389 ),
4390 )
4391 } else {
4392 None
4393 },
4394 write_acceleration_structures_properties_khr: if device_enabled
4395 .khr_acceleration_structure
4396 {
4397 std::mem::transmute(
4398 symbol(
4399 crate::extensions::khr_acceleration_structure::FN_WRITE_ACCELERATION_STRUCTURES_PROPERTIES_KHR,
4400 ),
4401 )
4402 } else {
4403 None
4404 },
4405 cmd_trace_rays_khr: if device_enabled.khr_ray_tracing_pipeline {
4406 std::mem::transmute(
4407 symbol(
4408 crate::extensions::khr_ray_tracing_pipeline::FN_CMD_TRACE_RAYS_KHR,
4409 ),
4410 )
4411 } else {
4412 None
4413 },
4414 cmd_trace_rays_nv: if device_enabled.nv_ray_tracing {
4415 std::mem::transmute(
4416 symbol(crate::extensions::nv_ray_tracing::FN_CMD_TRACE_RAYS_NV),
4417 )
4418 } else {
4419 None
4420 },
4421 get_ray_tracing_shader_group_handles_khr: if device_enabled
4422 .khr_ray_tracing_pipeline
4423 {
4424 std::mem::transmute(
4425 symbol(
4426 crate::extensions::khr_ray_tracing_pipeline::FN_GET_RAY_TRACING_SHADER_GROUP_HANDLES_KHR,
4427 ),
4428 )
4429 } else {
4430 None
4431 },
4432 get_ray_tracing_capture_replay_shader_group_handles_khr: if device_enabled
4433 .khr_ray_tracing_pipeline
4434 {
4435 std::mem::transmute(
4436 symbol(
4437 crate::extensions::khr_ray_tracing_pipeline::FN_GET_RAY_TRACING_CAPTURE_REPLAY_SHADER_GROUP_HANDLES_KHR,
4438 ),
4439 )
4440 } else {
4441 None
4442 },
4443 get_acceleration_structure_handle_nv: if device_enabled.nv_ray_tracing {
4444 std::mem::transmute(
4445 symbol(
4446 crate::extensions::nv_ray_tracing::FN_GET_ACCELERATION_STRUCTURE_HANDLE_NV,
4447 ),
4448 )
4449 } else {
4450 None
4451 },
4452 create_ray_tracing_pipelines_nv: if device_enabled.nv_ray_tracing {
4453 std::mem::transmute(
4454 symbol(
4455 crate::extensions::nv_ray_tracing::FN_CREATE_RAY_TRACING_PIPELINES_NV,
4456 ),
4457 )
4458 } else {
4459 None
4460 },
4461 create_ray_tracing_pipelines_khr: if device_enabled.khr_ray_tracing_pipeline
4462 {
4463 std::mem::transmute(
4464 symbol(
4465 crate::extensions::khr_ray_tracing_pipeline::FN_CREATE_RAY_TRACING_PIPELINES_KHR,
4466 ),
4467 )
4468 } else {
4469 None
4470 },
4471 cmd_trace_rays_indirect_khr: if device_enabled.khr_ray_tracing_pipeline {
4472 std::mem::transmute(
4473 symbol(
4474 crate::extensions::khr_ray_tracing_pipeline::FN_CMD_TRACE_RAYS_INDIRECT_KHR,
4475 ),
4476 )
4477 } else {
4478 None
4479 },
4480 cmd_trace_rays_indirect2_khr: if (device_enabled.khr_ray_tracing_maintenance1
4481 && device_enabled.khr_ray_tracing_pipeline)
4482 {
4483 std::mem::transmute(
4484 symbol(
4485 crate::extensions::khr_ray_tracing_maintenance1::FN_CMD_TRACE_RAYS_INDIRECT2_KHR,
4486 ),
4487 )
4488 } else {
4489 None
4490 },
4491 get_device_acceleration_structure_compatibility_khr: if device_enabled
4492 .khr_acceleration_structure
4493 {
4494 std::mem::transmute(
4495 symbol(
4496 crate::extensions::khr_acceleration_structure::FN_GET_DEVICE_ACCELERATION_STRUCTURE_COMPATIBILITY_KHR,
4497 ),
4498 )
4499 } else {
4500 None
4501 },
4502 get_ray_tracing_shader_group_stack_size_khr: if device_enabled
4503 .khr_ray_tracing_pipeline
4504 {
4505 std::mem::transmute(
4506 symbol(
4507 crate::extensions::khr_ray_tracing_pipeline::FN_GET_RAY_TRACING_SHADER_GROUP_STACK_SIZE_KHR,
4508 ),
4509 )
4510 } else {
4511 None
4512 },
4513 cmd_set_ray_tracing_pipeline_stack_size_khr: if device_enabled
4514 .khr_ray_tracing_pipeline
4515 {
4516 std::mem::transmute(
4517 symbol(
4518 crate::extensions::khr_ray_tracing_pipeline::FN_CMD_SET_RAY_TRACING_PIPELINE_STACK_SIZE_KHR,
4519 ),
4520 )
4521 } else {
4522 None
4523 },
4524 get_image_view_handle_nvx: if device_enabled.nvx_image_view_handle {
4525 std::mem::transmute(
4526 symbol(
4527 crate::extensions::nvx_image_view_handle::FN_GET_IMAGE_VIEW_HANDLE_NVX,
4528 ),
4529 )
4530 } else {
4531 None
4532 },
4533 get_image_view_address_nvx: if device_enabled.nvx_image_view_handle {
4534 std::mem::transmute(
4535 symbol(
4536 crate::extensions::nvx_image_view_handle::FN_GET_IMAGE_VIEW_ADDRESS_NVX,
4537 ),
4538 )
4539 } else {
4540 None
4541 },
4542 get_device_group_surface_present_modes2_ext: if (device_enabled
4543 .ext_full_screen_exclusive && device_enabled.khr_device_group)
4544 || (device_enabled.ext_full_screen_exclusive && instance_enabled.vk1_1)
4545 {
4546 std::mem::transmute(
4547 symbol(
4548 crate::extensions::ext_full_screen_exclusive::FN_GET_DEVICE_GROUP_SURFACE_PRESENT_MODES2_EXT,
4549 ),
4550 )
4551 } else {
4552 None
4553 },
4554 acquire_full_screen_exclusive_mode_ext: if device_enabled
4555 .ext_full_screen_exclusive
4556 {
4557 std::mem::transmute(
4558 symbol(
4559 crate::extensions::ext_full_screen_exclusive::FN_ACQUIRE_FULL_SCREEN_EXCLUSIVE_MODE_EXT,
4560 ),
4561 )
4562 } else {
4563 None
4564 },
4565 release_full_screen_exclusive_mode_ext: if device_enabled
4566 .ext_full_screen_exclusive
4567 {
4568 std::mem::transmute(
4569 symbol(
4570 crate::extensions::ext_full_screen_exclusive::FN_RELEASE_FULL_SCREEN_EXCLUSIVE_MODE_EXT,
4571 ),
4572 )
4573 } else {
4574 None
4575 },
4576 acquire_profiling_lock_khr: if device_enabled.khr_performance_query {
4577 std::mem::transmute(
4578 symbol(
4579 crate::extensions::khr_performance_query::FN_ACQUIRE_PROFILING_LOCK_KHR,
4580 ),
4581 )
4582 } else {
4583 None
4584 },
4585 release_profiling_lock_khr: if device_enabled.khr_performance_query {
4586 std::mem::transmute(
4587 symbol(
4588 crate::extensions::khr_performance_query::FN_RELEASE_PROFILING_LOCK_KHR,
4589 ),
4590 )
4591 } else {
4592 None
4593 },
4594 get_image_drm_format_modifier_properties_ext: if device_enabled
4595 .ext_image_drm_format_modifier
4596 {
4597 std::mem::transmute(
4598 symbol(
4599 crate::extensions::ext_image_drm_format_modifier::FN_GET_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
4600 ),
4601 )
4602 } else {
4603 None
4604 },
4605 get_buffer_opaque_capture_address: if instance_enabled.vk1_2 {
4606 std::mem::transmute(
4607 symbol(crate::vk1_2::FN_GET_BUFFER_OPAQUE_CAPTURE_ADDRESS),
4608 )
4609 } else {
4610 None
4611 },
4612 get_buffer_device_address: if instance_enabled.vk1_2 {
4613 std::mem::transmute(symbol(crate::vk1_2::FN_GET_BUFFER_DEVICE_ADDRESS))
4614 } else {
4615 None
4616 },
4617 initialize_performance_api_intel: if device_enabled.intel_performance_query {
4618 std::mem::transmute(
4619 symbol(
4620 crate::extensions::intel_performance_query::FN_INITIALIZE_PERFORMANCE_API_INTEL,
4621 ),
4622 )
4623 } else {
4624 None
4625 },
4626 uninitialize_performance_api_intel: if device_enabled.intel_performance_query
4627 {
4628 std::mem::transmute(
4629 symbol(
4630 crate::extensions::intel_performance_query::FN_UNINITIALIZE_PERFORMANCE_API_INTEL,
4631 ),
4632 )
4633 } else {
4634 None
4635 },
4636 cmd_set_performance_marker_intel: if device_enabled.intel_performance_query {
4637 std::mem::transmute(
4638 symbol(
4639 crate::extensions::intel_performance_query::FN_CMD_SET_PERFORMANCE_MARKER_INTEL,
4640 ),
4641 )
4642 } else {
4643 None
4644 },
4645 cmd_set_performance_stream_marker_intel: if device_enabled
4646 .intel_performance_query
4647 {
4648 std::mem::transmute(
4649 symbol(
4650 crate::extensions::intel_performance_query::FN_CMD_SET_PERFORMANCE_STREAM_MARKER_INTEL,
4651 ),
4652 )
4653 } else {
4654 None
4655 },
4656 cmd_set_performance_override_intel: if device_enabled.intel_performance_query
4657 {
4658 std::mem::transmute(
4659 symbol(
4660 crate::extensions::intel_performance_query::FN_CMD_SET_PERFORMANCE_OVERRIDE_INTEL,
4661 ),
4662 )
4663 } else {
4664 None
4665 },
4666 acquire_performance_configuration_intel: if device_enabled
4667 .intel_performance_query
4668 {
4669 std::mem::transmute(
4670 symbol(
4671 crate::extensions::intel_performance_query::FN_ACQUIRE_PERFORMANCE_CONFIGURATION_INTEL,
4672 ),
4673 )
4674 } else {
4675 None
4676 },
4677 release_performance_configuration_intel: if device_enabled
4678 .intel_performance_query
4679 {
4680 std::mem::transmute(
4681 symbol(
4682 crate::extensions::intel_performance_query::FN_RELEASE_PERFORMANCE_CONFIGURATION_INTEL,
4683 ),
4684 )
4685 } else {
4686 None
4687 },
4688 queue_set_performance_configuration_intel: if device_enabled
4689 .intel_performance_query
4690 {
4691 std::mem::transmute(
4692 symbol(
4693 crate::extensions::intel_performance_query::FN_QUEUE_SET_PERFORMANCE_CONFIGURATION_INTEL,
4694 ),
4695 )
4696 } else {
4697 None
4698 },
4699 get_performance_parameter_intel: if device_enabled.intel_performance_query {
4700 std::mem::transmute(
4701 symbol(
4702 crate::extensions::intel_performance_query::FN_GET_PERFORMANCE_PARAMETER_INTEL,
4703 ),
4704 )
4705 } else {
4706 None
4707 },
4708 get_device_memory_opaque_capture_address: if instance_enabled.vk1_2 {
4709 std::mem::transmute(
4710 symbol(crate::vk1_2::FN_GET_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS),
4711 )
4712 } else {
4713 None
4714 },
4715 get_pipeline_executable_properties_khr: if device_enabled
4716 .khr_pipeline_executable_properties
4717 {
4718 std::mem::transmute(
4719 symbol(
4720 crate::extensions::khr_pipeline_executable_properties::FN_GET_PIPELINE_EXECUTABLE_PROPERTIES_KHR,
4721 ),
4722 )
4723 } else {
4724 None
4725 },
4726 get_pipeline_executable_statistics_khr: if device_enabled
4727 .khr_pipeline_executable_properties
4728 {
4729 std::mem::transmute(
4730 symbol(
4731 crate::extensions::khr_pipeline_executable_properties::FN_GET_PIPELINE_EXECUTABLE_STATISTICS_KHR,
4732 ),
4733 )
4734 } else {
4735 None
4736 },
4737 get_pipeline_executable_internal_representations_khr: if device_enabled
4738 .khr_pipeline_executable_properties
4739 {
4740 std::mem::transmute(
4741 symbol(
4742 crate::extensions::khr_pipeline_executable_properties::FN_GET_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATIONS_KHR,
4743 ),
4744 )
4745 } else {
4746 None
4747 },
4748 cmd_set_line_stipple_ext: if device_enabled.ext_line_rasterization {
4749 std::mem::transmute(
4750 symbol(
4751 crate::extensions::ext_line_rasterization::FN_CMD_SET_LINE_STIPPLE_EXT,
4752 ),
4753 )
4754 } else {
4755 None
4756 },
4757 create_acceleration_structure_khr: if device_enabled
4758 .khr_acceleration_structure
4759 {
4760 std::mem::transmute(
4761 symbol(
4762 crate::extensions::khr_acceleration_structure::FN_CREATE_ACCELERATION_STRUCTURE_KHR,
4763 ),
4764 )
4765 } else {
4766 None
4767 },
4768 cmd_build_acceleration_structures_khr: if device_enabled
4769 .khr_acceleration_structure
4770 {
4771 std::mem::transmute(
4772 symbol(
4773 crate::extensions::khr_acceleration_structure::FN_CMD_BUILD_ACCELERATION_STRUCTURES_KHR,
4774 ),
4775 )
4776 } else {
4777 None
4778 },
4779 cmd_build_acceleration_structures_indirect_khr: if device_enabled
4780 .khr_acceleration_structure
4781 {
4782 std::mem::transmute(
4783 symbol(
4784 crate::extensions::khr_acceleration_structure::FN_CMD_BUILD_ACCELERATION_STRUCTURES_INDIRECT_KHR,
4785 ),
4786 )
4787 } else {
4788 None
4789 },
4790 build_acceleration_structures_khr: if device_enabled
4791 .khr_acceleration_structure
4792 {
4793 std::mem::transmute(
4794 symbol(
4795 crate::extensions::khr_acceleration_structure::FN_BUILD_ACCELERATION_STRUCTURES_KHR,
4796 ),
4797 )
4798 } else {
4799 None
4800 },
4801 get_acceleration_structure_device_address_khr: if device_enabled
4802 .khr_acceleration_structure
4803 {
4804 std::mem::transmute(
4805 symbol(
4806 crate::extensions::khr_acceleration_structure::FN_GET_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_KHR,
4807 ),
4808 )
4809 } else {
4810 None
4811 },
4812 create_deferred_operation_khr: if device_enabled.khr_deferred_host_operations
4813 {
4814 std::mem::transmute(
4815 symbol(
4816 crate::extensions::khr_deferred_host_operations::FN_CREATE_DEFERRED_OPERATION_KHR,
4817 ),
4818 )
4819 } else {
4820 None
4821 },
4822 destroy_deferred_operation_khr: if device_enabled
4823 .khr_deferred_host_operations
4824 {
4825 std::mem::transmute(
4826 symbol(
4827 crate::extensions::khr_deferred_host_operations::FN_DESTROY_DEFERRED_OPERATION_KHR,
4828 ),
4829 )
4830 } else {
4831 None
4832 },
4833 get_deferred_operation_max_concurrency_khr: if device_enabled
4834 .khr_deferred_host_operations
4835 {
4836 std::mem::transmute(
4837 symbol(
4838 crate::extensions::khr_deferred_host_operations::FN_GET_DEFERRED_OPERATION_MAX_CONCURRENCY_KHR,
4839 ),
4840 )
4841 } else {
4842 None
4843 },
4844 get_deferred_operation_result_khr: if device_enabled
4845 .khr_deferred_host_operations
4846 {
4847 std::mem::transmute(
4848 symbol(
4849 crate::extensions::khr_deferred_host_operations::FN_GET_DEFERRED_OPERATION_RESULT_KHR,
4850 ),
4851 )
4852 } else {
4853 None
4854 },
4855 deferred_operation_join_khr: if device_enabled.khr_deferred_host_operations {
4856 std::mem::transmute(
4857 symbol(
4858 crate::extensions::khr_deferred_host_operations::FN_DEFERRED_OPERATION_JOIN_KHR,
4859 ),
4860 )
4861 } else {
4862 None
4863 },
4864 cmd_set_cull_mode: if instance_enabled.vk1_3 {
4865 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_CULL_MODE))
4866 } else {
4867 None
4868 },
4869 cmd_set_front_face: if instance_enabled.vk1_3 {
4870 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_FRONT_FACE))
4871 } else {
4872 None
4873 },
4874 cmd_set_primitive_topology: if instance_enabled.vk1_3 {
4875 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_PRIMITIVE_TOPOLOGY))
4876 } else {
4877 None
4878 },
4879 cmd_set_viewport_with_count: if instance_enabled.vk1_3 {
4880 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_VIEWPORT_WITH_COUNT))
4881 } else {
4882 None
4883 },
4884 cmd_set_scissor_with_count: if instance_enabled.vk1_3 {
4885 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_SCISSOR_WITH_COUNT))
4886 } else {
4887 None
4888 },
4889 cmd_bind_vertex_buffers2: if instance_enabled.vk1_3 {
4890 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_BIND_VERTEX_BUFFERS2))
4891 } else {
4892 None
4893 },
4894 cmd_set_depth_test_enable: if instance_enabled.vk1_3 {
4895 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_DEPTH_TEST_ENABLE))
4896 } else {
4897 None
4898 },
4899 cmd_set_depth_write_enable: if instance_enabled.vk1_3 {
4900 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_DEPTH_WRITE_ENABLE))
4901 } else {
4902 None
4903 },
4904 cmd_set_depth_compare_op: if instance_enabled.vk1_3 {
4905 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_DEPTH_COMPARE_OP))
4906 } else {
4907 None
4908 },
4909 cmd_set_depth_bounds_test_enable: if instance_enabled.vk1_3 {
4910 std::mem::transmute(
4911 symbol(crate::vk1_3::FN_CMD_SET_DEPTH_BOUNDS_TEST_ENABLE),
4912 )
4913 } else {
4914 None
4915 },
4916 cmd_set_stencil_test_enable: if instance_enabled.vk1_3 {
4917 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_STENCIL_TEST_ENABLE))
4918 } else {
4919 None
4920 },
4921 cmd_set_stencil_op: if instance_enabled.vk1_3 {
4922 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_STENCIL_OP))
4923 } else {
4924 None
4925 },
4926 cmd_set_patch_control_points_ext: if device_enabled
4927 .ext_extended_dynamic_state2
4928 {
4929 std::mem::transmute(
4930 symbol(
4931 crate::extensions::ext_extended_dynamic_state2::FN_CMD_SET_PATCH_CONTROL_POINTS_EXT,
4932 ),
4933 )
4934 } else {
4935 None
4936 },
4937 cmd_set_rasterizer_discard_enable: if instance_enabled.vk1_3 {
4938 std::mem::transmute(
4939 symbol(crate::vk1_3::FN_CMD_SET_RASTERIZER_DISCARD_ENABLE),
4940 )
4941 } else {
4942 None
4943 },
4944 cmd_set_depth_bias_enable: if instance_enabled.vk1_3 {
4945 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_DEPTH_BIAS_ENABLE))
4946 } else {
4947 None
4948 },
4949 cmd_set_logic_op_ext: if device_enabled.ext_extended_dynamic_state2 {
4950 std::mem::transmute(
4951 symbol(
4952 crate::extensions::ext_extended_dynamic_state2::FN_CMD_SET_LOGIC_OP_EXT,
4953 ),
4954 )
4955 } else {
4956 None
4957 },
4958 cmd_set_primitive_restart_enable: if instance_enabled.vk1_3 {
4959 std::mem::transmute(
4960 symbol(crate::vk1_3::FN_CMD_SET_PRIMITIVE_RESTART_ENABLE),
4961 )
4962 } else {
4963 None
4964 },
4965 create_private_data_slot: if instance_enabled.vk1_3 {
4966 std::mem::transmute(symbol(crate::vk1_3::FN_CREATE_PRIVATE_DATA_SLOT))
4967 } else {
4968 None
4969 },
4970 destroy_private_data_slot: if instance_enabled.vk1_3 {
4971 std::mem::transmute(symbol(crate::vk1_3::FN_DESTROY_PRIVATE_DATA_SLOT))
4972 } else {
4973 None
4974 },
4975 set_private_data: if instance_enabled.vk1_3 {
4976 std::mem::transmute(symbol(crate::vk1_3::FN_SET_PRIVATE_DATA))
4977 } else {
4978 None
4979 },
4980 get_private_data: if instance_enabled.vk1_3 {
4981 std::mem::transmute(symbol(crate::vk1_3::FN_GET_PRIVATE_DATA))
4982 } else {
4983 None
4984 },
4985 cmd_copy_buffer2: if instance_enabled.vk1_3 {
4986 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_COPY_BUFFER2))
4987 } else {
4988 None
4989 },
4990 cmd_copy_image2: if instance_enabled.vk1_3 {
4991 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_COPY_IMAGE2))
4992 } else {
4993 None
4994 },
4995 cmd_blit_image2: if instance_enabled.vk1_3 {
4996 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_BLIT_IMAGE2))
4997 } else {
4998 None
4999 },
5000 cmd_copy_buffer_to_image2: if instance_enabled.vk1_3 {
5001 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_COPY_BUFFER_TO_IMAGE2))
5002 } else {
5003 None
5004 },
5005 cmd_copy_image_to_buffer2: if instance_enabled.vk1_3 {
5006 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_COPY_IMAGE_TO_BUFFER2))
5007 } else {
5008 None
5009 },
5010 cmd_resolve_image2: if instance_enabled.vk1_3 {
5011 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_RESOLVE_IMAGE2))
5012 } else {
5013 None
5014 },
5015 cmd_set_fragment_shading_rate_khr: if device_enabled
5016 .khr_fragment_shading_rate
5017 {
5018 std::mem::transmute(
5019 symbol(
5020 crate::extensions::khr_fragment_shading_rate::FN_CMD_SET_FRAGMENT_SHADING_RATE_KHR,
5021 ),
5022 )
5023 } else {
5024 None
5025 },
5026 cmd_set_fragment_shading_rate_enum_nv: if device_enabled
5027 .nv_fragment_shading_rate_enums
5028 {
5029 std::mem::transmute(
5030 symbol(
5031 crate::extensions::nv_fragment_shading_rate_enums::FN_CMD_SET_FRAGMENT_SHADING_RATE_ENUM_NV,
5032 ),
5033 )
5034 } else {
5035 None
5036 },
5037 get_acceleration_structure_build_sizes_khr: if device_enabled
5038 .khr_acceleration_structure
5039 {
5040 std::mem::transmute(
5041 symbol(
5042 crate::extensions::khr_acceleration_structure::FN_GET_ACCELERATION_STRUCTURE_BUILD_SIZES_KHR,
5043 ),
5044 )
5045 } else {
5046 None
5047 },
5048 cmd_set_vertex_input_ext: if device_enabled.ext_vertex_input_dynamic_state {
5049 std::mem::transmute(
5050 symbol(
5051 crate::extensions::ext_vertex_input_dynamic_state::FN_CMD_SET_VERTEX_INPUT_EXT,
5052 ),
5053 )
5054 } else {
5055 None
5056 },
5057 cmd_set_color_write_enable_ext: if device_enabled.ext_color_write_enable {
5058 std::mem::transmute(
5059 symbol(
5060 crate::extensions::ext_color_write_enable::FN_CMD_SET_COLOR_WRITE_ENABLE_EXT,
5061 ),
5062 )
5063 } else {
5064 None
5065 },
5066 cmd_set_event2: if instance_enabled.vk1_3 {
5067 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_SET_EVENT2))
5068 } else {
5069 None
5070 },
5071 cmd_reset_event2: if instance_enabled.vk1_3 {
5072 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_RESET_EVENT2))
5073 } else {
5074 None
5075 },
5076 cmd_wait_events2: if instance_enabled.vk1_3 {
5077 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_WAIT_EVENTS2))
5078 } else {
5079 None
5080 },
5081 cmd_pipeline_barrier2: if instance_enabled.vk1_3 {
5082 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_PIPELINE_BARRIER2))
5083 } else {
5084 None
5085 },
5086 queue_submit2: if instance_enabled.vk1_3 {
5087 std::mem::transmute(symbol(crate::vk1_3::FN_QUEUE_SUBMIT2))
5088 } else {
5089 None
5090 },
5091 cmd_write_timestamp2: if instance_enabled.vk1_3 {
5092 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_WRITE_TIMESTAMP2))
5093 } else {
5094 None
5095 },
5096 cmd_write_buffer_marker2_amd: if (device_enabled.khr_synchronization2
5097 && device_enabled.amd_buffer_marker)
5098 {
5099 std::mem::transmute(
5100 symbol(
5101 crate::extensions::khr_synchronization2::FN_CMD_WRITE_BUFFER_MARKER2_AMD,
5102 ),
5103 )
5104 } else {
5105 None
5106 },
5107 get_queue_checkpoint_data2_nv: if (device_enabled.khr_synchronization2
5108 && device_enabled.nv_device_diagnostic_checkpoints)
5109 {
5110 std::mem::transmute(
5111 symbol(
5112 crate::extensions::khr_synchronization2::FN_GET_QUEUE_CHECKPOINT_DATA2_NV,
5113 ),
5114 )
5115 } else {
5116 None
5117 },
5118 create_video_session_khr: if device_enabled.khr_video_queue {
5119 std::mem::transmute(
5120 symbol(
5121 crate::extensions::khr_video_queue::FN_CREATE_VIDEO_SESSION_KHR,
5122 ),
5123 )
5124 } else {
5125 None
5126 },
5127 destroy_video_session_khr: if device_enabled.khr_video_queue {
5128 std::mem::transmute(
5129 symbol(
5130 crate::extensions::khr_video_queue::FN_DESTROY_VIDEO_SESSION_KHR,
5131 ),
5132 )
5133 } else {
5134 None
5135 },
5136 create_video_session_parameters_khr: if device_enabled.khr_video_queue {
5137 std::mem::transmute(
5138 symbol(
5139 crate::extensions::khr_video_queue::FN_CREATE_VIDEO_SESSION_PARAMETERS_KHR,
5140 ),
5141 )
5142 } else {
5143 None
5144 },
5145 update_video_session_parameters_khr: if device_enabled.khr_video_queue {
5146 std::mem::transmute(
5147 symbol(
5148 crate::extensions::khr_video_queue::FN_UPDATE_VIDEO_SESSION_PARAMETERS_KHR,
5149 ),
5150 )
5151 } else {
5152 None
5153 },
5154 destroy_video_session_parameters_khr: if device_enabled.khr_video_queue {
5155 std::mem::transmute(
5156 symbol(
5157 crate::extensions::khr_video_queue::FN_DESTROY_VIDEO_SESSION_PARAMETERS_KHR,
5158 ),
5159 )
5160 } else {
5161 None
5162 },
5163 get_video_session_memory_requirements_khr: if device_enabled.khr_video_queue
5164 {
5165 std::mem::transmute(
5166 symbol(
5167 crate::extensions::khr_video_queue::FN_GET_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
5168 ),
5169 )
5170 } else {
5171 None
5172 },
5173 bind_video_session_memory_khr: if device_enabled.khr_video_queue {
5174 std::mem::transmute(
5175 symbol(
5176 crate::extensions::khr_video_queue::FN_BIND_VIDEO_SESSION_MEMORY_KHR,
5177 ),
5178 )
5179 } else {
5180 None
5181 },
5182 cmd_decode_video_khr: if device_enabled.khr_video_decode_queue {
5183 std::mem::transmute(
5184 symbol(
5185 crate::extensions::khr_video_decode_queue::FN_CMD_DECODE_VIDEO_KHR,
5186 ),
5187 )
5188 } else {
5189 None
5190 },
5191 cmd_begin_video_coding_khr: if device_enabled.khr_video_queue {
5192 std::mem::transmute(
5193 symbol(
5194 crate::extensions::khr_video_queue::FN_CMD_BEGIN_VIDEO_CODING_KHR,
5195 ),
5196 )
5197 } else {
5198 None
5199 },
5200 cmd_control_video_coding_khr: if device_enabled.khr_video_queue {
5201 std::mem::transmute(
5202 symbol(
5203 crate::extensions::khr_video_queue::FN_CMD_CONTROL_VIDEO_CODING_KHR,
5204 ),
5205 )
5206 } else {
5207 None
5208 },
5209 cmd_end_video_coding_khr: if device_enabled.khr_video_queue {
5210 std::mem::transmute(
5211 symbol(
5212 crate::extensions::khr_video_queue::FN_CMD_END_VIDEO_CODING_KHR,
5213 ),
5214 )
5215 } else {
5216 None
5217 },
5218 cmd_encode_video_khr: if device_enabled.khr_video_encode_queue {
5219 std::mem::transmute(
5220 symbol(
5221 crate::extensions::khr_video_encode_queue::FN_CMD_ENCODE_VIDEO_KHR,
5222 ),
5223 )
5224 } else {
5225 None
5226 },
5227 create_cu_module_nvx: if device_enabled.nvx_binary_import {
5228 std::mem::transmute(
5229 symbol(crate::extensions::nvx_binary_import::FN_CREATE_CU_MODULE_NVX),
5230 )
5231 } else {
5232 None
5233 },
5234 create_cu_function_nvx: if device_enabled.nvx_binary_import {
5235 std::mem::transmute(
5236 symbol(
5237 crate::extensions::nvx_binary_import::FN_CREATE_CU_FUNCTION_NVX,
5238 ),
5239 )
5240 } else {
5241 None
5242 },
5243 destroy_cu_module_nvx: if device_enabled.nvx_binary_import {
5244 std::mem::transmute(
5245 symbol(
5246 crate::extensions::nvx_binary_import::FN_DESTROY_CU_MODULE_NVX,
5247 ),
5248 )
5249 } else {
5250 None
5251 },
5252 destroy_cu_function_nvx: if device_enabled.nvx_binary_import {
5253 std::mem::transmute(
5254 symbol(
5255 crate::extensions::nvx_binary_import::FN_DESTROY_CU_FUNCTION_NVX,
5256 ),
5257 )
5258 } else {
5259 None
5260 },
5261 cmd_cu_launch_kernel_nvx: if device_enabled.nvx_binary_import {
5262 std::mem::transmute(
5263 symbol(
5264 crate::extensions::nvx_binary_import::FN_CMD_CU_LAUNCH_KERNEL_NVX,
5265 ),
5266 )
5267 } else {
5268 None
5269 },
5270 set_device_memory_priority_ext: if device_enabled
5271 .ext_pageable_device_local_memory
5272 {
5273 std::mem::transmute(
5274 symbol(
5275 crate::extensions::ext_pageable_device_local_memory::FN_SET_DEVICE_MEMORY_PRIORITY_EXT,
5276 ),
5277 )
5278 } else {
5279 None
5280 },
5281 wait_for_present_khr: if device_enabled.khr_present_wait {
5282 std::mem::transmute(
5283 symbol(crate::extensions::khr_present_wait::FN_WAIT_FOR_PRESENT_KHR),
5284 )
5285 } else {
5286 None
5287 },
5288 create_buffer_collection_fuchsia: if device_enabled.fuchsia_buffer_collection
5289 {
5290 std::mem::transmute(
5291 symbol(
5292 crate::extensions::fuchsia_buffer_collection::FN_CREATE_BUFFER_COLLECTION_FUCHSIA,
5293 ),
5294 )
5295 } else {
5296 None
5297 },
5298 set_buffer_collection_buffer_constraints_fuchsia: if device_enabled
5299 .fuchsia_buffer_collection
5300 {
5301 std::mem::transmute(
5302 symbol(
5303 crate::extensions::fuchsia_buffer_collection::FN_SET_BUFFER_COLLECTION_BUFFER_CONSTRAINTS_FUCHSIA,
5304 ),
5305 )
5306 } else {
5307 None
5308 },
5309 set_buffer_collection_image_constraints_fuchsia: if device_enabled
5310 .fuchsia_buffer_collection
5311 {
5312 std::mem::transmute(
5313 symbol(
5314 crate::extensions::fuchsia_buffer_collection::FN_SET_BUFFER_COLLECTION_IMAGE_CONSTRAINTS_FUCHSIA,
5315 ),
5316 )
5317 } else {
5318 None
5319 },
5320 destroy_buffer_collection_fuchsia: if device_enabled
5321 .fuchsia_buffer_collection
5322 {
5323 std::mem::transmute(
5324 symbol(
5325 crate::extensions::fuchsia_buffer_collection::FN_DESTROY_BUFFER_COLLECTION_FUCHSIA,
5326 ),
5327 )
5328 } else {
5329 None
5330 },
5331 get_buffer_collection_properties_fuchsia: if device_enabled
5332 .fuchsia_buffer_collection
5333 {
5334 std::mem::transmute(
5335 symbol(
5336 crate::extensions::fuchsia_buffer_collection::FN_GET_BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
5337 ),
5338 )
5339 } else {
5340 None
5341 },
5342 cmd_begin_rendering: if instance_enabled.vk1_3 {
5343 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_BEGIN_RENDERING))
5344 } else {
5345 None
5346 },
5347 cmd_end_rendering: if instance_enabled.vk1_3 {
5348 std::mem::transmute(symbol(crate::vk1_3::FN_CMD_END_RENDERING))
5349 } else {
5350 None
5351 },
5352 get_descriptor_set_layout_host_mapping_info_valve: if device_enabled
5353 .valve_descriptor_set_host_mapping
5354 {
5355 std::mem::transmute(
5356 symbol(
5357 crate::extensions::valve_descriptor_set_host_mapping::FN_GET_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
5358 ),
5359 )
5360 } else {
5361 None
5362 },
5363 get_descriptor_set_host_mapping_valve: if device_enabled
5364 .valve_descriptor_set_host_mapping
5365 {
5366 std::mem::transmute(
5367 symbol(
5368 crate::extensions::valve_descriptor_set_host_mapping::FN_GET_DESCRIPTOR_SET_HOST_MAPPING_VALVE,
5369 ),
5370 )
5371 } else {
5372 None
5373 },
5374 get_image_subresource_layout2_ext: if device_enabled
5375 .ext_image_compression_control
5376 {
5377 std::mem::transmute(
5378 symbol(
5379 crate::extensions::ext_image_compression_control::FN_GET_IMAGE_SUBRESOURCE_LAYOUT2_EXT,
5380 ),
5381 )
5382 } else {
5383 None
5384 },
5385 get_pipeline_properties_ext: if device_enabled.ext_pipeline_properties {
5386 std::mem::transmute(
5387 symbol(
5388 crate::extensions::ext_pipeline_properties::FN_GET_PIPELINE_PROPERTIES_EXT,
5389 ),
5390 )
5391 } else {
5392 None
5393 },
5394 reset_query_pool_ext: if device_enabled.ext_host_query_reset {
5395 std::mem::transmute(
5396 symbol(
5397 crate::extensions::ext_host_query_reset::FN_RESET_QUERY_POOL_EXT,
5398 ),
5399 )
5400 } else {
5401 None
5402 },
5403 trim_command_pool_khr: if device_enabled.khr_maintenance1 {
5404 std::mem::transmute(
5405 symbol(crate::extensions::khr_maintenance1::FN_TRIM_COMMAND_POOL_KHR),
5406 )
5407 } else {
5408 None
5409 },
5410 get_device_group_peer_memory_features_khr: if device_enabled.khr_device_group
5411 {
5412 std::mem::transmute(
5413 symbol(
5414 crate::extensions::khr_device_group::FN_GET_DEVICE_GROUP_PEER_MEMORY_FEATURES_KHR,
5415 ),
5416 )
5417 } else {
5418 None
5419 },
5420 bind_buffer_memory2_khr: if device_enabled.khr_bind_memory2 {
5421 std::mem::transmute(
5422 symbol(
5423 crate::extensions::khr_bind_memory2::FN_BIND_BUFFER_MEMORY2_KHR,
5424 ),
5425 )
5426 } else {
5427 None
5428 },
5429 bind_image_memory2_khr: if device_enabled.khr_bind_memory2 {
5430 std::mem::transmute(
5431 symbol(
5432 crate::extensions::khr_bind_memory2::FN_BIND_IMAGE_MEMORY2_KHR,
5433 ),
5434 )
5435 } else {
5436 None
5437 },
5438 cmd_set_device_mask_khr: if device_enabled.khr_device_group {
5439 std::mem::transmute(
5440 symbol(
5441 crate::extensions::khr_device_group::FN_CMD_SET_DEVICE_MASK_KHR,
5442 ),
5443 )
5444 } else {
5445 None
5446 },
5447 cmd_dispatch_base_khr: if device_enabled.khr_device_group {
5448 std::mem::transmute(
5449 symbol(crate::extensions::khr_device_group::FN_CMD_DISPATCH_BASE_KHR),
5450 )
5451 } else {
5452 None
5453 },
5454 create_descriptor_update_template_khr: if device_enabled
5455 .khr_descriptor_update_template
5456 {
5457 std::mem::transmute(
5458 symbol(
5459 crate::extensions::khr_descriptor_update_template::FN_CREATE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
5460 ),
5461 )
5462 } else {
5463 None
5464 },
5465 destroy_descriptor_update_template_khr: if device_enabled
5466 .khr_descriptor_update_template
5467 {
5468 std::mem::transmute(
5469 symbol(
5470 crate::extensions::khr_descriptor_update_template::FN_DESTROY_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
5471 ),
5472 )
5473 } else {
5474 None
5475 },
5476 update_descriptor_set_with_template_khr: if device_enabled
5477 .khr_descriptor_update_template
5478 {
5479 std::mem::transmute(
5480 symbol(
5481 crate::extensions::khr_descriptor_update_template::FN_UPDATE_DESCRIPTOR_SET_WITH_TEMPLATE_KHR,
5482 ),
5483 )
5484 } else {
5485 None
5486 },
5487 get_buffer_memory_requirements2_khr: if device_enabled
5488 .khr_get_memory_requirements2
5489 {
5490 std::mem::transmute(
5491 symbol(
5492 crate::extensions::khr_get_memory_requirements2::FN_GET_BUFFER_MEMORY_REQUIREMENTS2_KHR,
5493 ),
5494 )
5495 } else {
5496 None
5497 },
5498 get_image_memory_requirements2_khr: if device_enabled
5499 .khr_get_memory_requirements2
5500 {
5501 std::mem::transmute(
5502 symbol(
5503 crate::extensions::khr_get_memory_requirements2::FN_GET_IMAGE_MEMORY_REQUIREMENTS2_KHR,
5504 ),
5505 )
5506 } else {
5507 None
5508 },
5509 get_image_sparse_memory_requirements2_khr: if device_enabled
5510 .khr_get_memory_requirements2
5511 {
5512 std::mem::transmute(
5513 symbol(
5514 crate::extensions::khr_get_memory_requirements2::FN_GET_IMAGE_SPARSE_MEMORY_REQUIREMENTS2_KHR,
5515 ),
5516 )
5517 } else {
5518 None
5519 },
5520 get_device_buffer_memory_requirements_khr: if device_enabled.khr_maintenance4
5521 {
5522 std::mem::transmute(
5523 symbol(
5524 crate::extensions::khr_maintenance4::FN_GET_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR,
5525 ),
5526 )
5527 } else {
5528 None
5529 },
5530 get_device_image_memory_requirements_khr: if device_enabled.khr_maintenance4
5531 {
5532 std::mem::transmute(
5533 symbol(
5534 crate::extensions::khr_maintenance4::FN_GET_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR,
5535 ),
5536 )
5537 } else {
5538 None
5539 },
5540 get_device_image_sparse_memory_requirements_khr: if device_enabled
5541 .khr_maintenance4
5542 {
5543 std::mem::transmute(
5544 symbol(
5545 crate::extensions::khr_maintenance4::FN_GET_DEVICE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_KHR,
5546 ),
5547 )
5548 } else {
5549 None
5550 },
5551 create_sampler_ycbcr_conversion_khr: if device_enabled
5552 .khr_sampler_ycbcr_conversion
5553 {
5554 std::mem::transmute(
5555 symbol(
5556 crate::extensions::khr_sampler_ycbcr_conversion::FN_CREATE_SAMPLER_YCBCR_CONVERSION_KHR,
5557 ),
5558 )
5559 } else {
5560 None
5561 },
5562 destroy_sampler_ycbcr_conversion_khr: if device_enabled
5563 .khr_sampler_ycbcr_conversion
5564 {
5565 std::mem::transmute(
5566 symbol(
5567 crate::extensions::khr_sampler_ycbcr_conversion::FN_DESTROY_SAMPLER_YCBCR_CONVERSION_KHR,
5568 ),
5569 )
5570 } else {
5571 None
5572 },
5573 get_descriptor_set_layout_support_khr: if device_enabled.khr_maintenance3 {
5574 std::mem::transmute(
5575 symbol(
5576 crate::extensions::khr_maintenance3::FN_GET_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR,
5577 ),
5578 )
5579 } else {
5580 None
5581 },
5582 create_render_pass2_khr: if device_enabled.khr_create_renderpass2 {
5583 std::mem::transmute(
5584 symbol(
5585 crate::extensions::khr_create_renderpass2::FN_CREATE_RENDER_PASS2_KHR,
5586 ),
5587 )
5588 } else {
5589 None
5590 },
5591 cmd_begin_render_pass2_khr: if device_enabled.khr_create_renderpass2 {
5592 std::mem::transmute(
5593 symbol(
5594 crate::extensions::khr_create_renderpass2::FN_CMD_BEGIN_RENDER_PASS2_KHR,
5595 ),
5596 )
5597 } else {
5598 None
5599 },
5600 cmd_next_subpass2_khr: if device_enabled.khr_create_renderpass2 {
5601 std::mem::transmute(
5602 symbol(
5603 crate::extensions::khr_create_renderpass2::FN_CMD_NEXT_SUBPASS2_KHR,
5604 ),
5605 )
5606 } else {
5607 None
5608 },
5609 cmd_end_render_pass2_khr: if device_enabled.khr_create_renderpass2 {
5610 std::mem::transmute(
5611 symbol(
5612 crate::extensions::khr_create_renderpass2::FN_CMD_END_RENDER_PASS2_KHR,
5613 ),
5614 )
5615 } else {
5616 None
5617 },
5618 get_semaphore_counter_value_khr: if device_enabled.khr_timeline_semaphore {
5619 std::mem::transmute(
5620 symbol(
5621 crate::extensions::khr_timeline_semaphore::FN_GET_SEMAPHORE_COUNTER_VALUE_KHR,
5622 ),
5623 )
5624 } else {
5625 None
5626 },
5627 wait_semaphores_khr: if device_enabled.khr_timeline_semaphore {
5628 std::mem::transmute(
5629 symbol(
5630 crate::extensions::khr_timeline_semaphore::FN_WAIT_SEMAPHORES_KHR,
5631 ),
5632 )
5633 } else {
5634 None
5635 },
5636 signal_semaphore_khr: if device_enabled.khr_timeline_semaphore {
5637 std::mem::transmute(
5638 symbol(
5639 crate::extensions::khr_timeline_semaphore::FN_SIGNAL_SEMAPHORE_KHR,
5640 ),
5641 )
5642 } else {
5643 None
5644 },
5645 cmd_draw_indirect_count_khr: if device_enabled.khr_draw_indirect_count {
5646 std::mem::transmute(
5647 symbol(
5648 crate::extensions::khr_draw_indirect_count::FN_CMD_DRAW_INDIRECT_COUNT_KHR,
5649 ),
5650 )
5651 } else {
5652 None
5653 },
5654 cmd_draw_indirect_count_amd: if device_enabled.amd_draw_indirect_count {
5655 std::mem::transmute(
5656 symbol(
5657 crate::extensions::amd_draw_indirect_count::FN_CMD_DRAW_INDIRECT_COUNT_AMD,
5658 ),
5659 )
5660 } else {
5661 None
5662 },
5663 cmd_draw_indexed_indirect_count_khr: if device_enabled
5664 .khr_draw_indirect_count
5665 {
5666 std::mem::transmute(
5667 symbol(
5668 crate::extensions::khr_draw_indirect_count::FN_CMD_DRAW_INDEXED_INDIRECT_COUNT_KHR,
5669 ),
5670 )
5671 } else {
5672 None
5673 },
5674 cmd_draw_indexed_indirect_count_amd: if device_enabled
5675 .amd_draw_indirect_count
5676 {
5677 std::mem::transmute(
5678 symbol(
5679 crate::extensions::amd_draw_indirect_count::FN_CMD_DRAW_INDEXED_INDIRECT_COUNT_AMD,
5680 ),
5681 )
5682 } else {
5683 None
5684 },
5685 get_ray_tracing_shader_group_handles_nv: if device_enabled.nv_ray_tracing {
5686 std::mem::transmute(
5687 symbol(
5688 crate::extensions::nv_ray_tracing::FN_GET_RAY_TRACING_SHADER_GROUP_HANDLES_NV,
5689 ),
5690 )
5691 } else {
5692 None
5693 },
5694 get_buffer_opaque_capture_address_khr: if device_enabled
5695 .khr_buffer_device_address
5696 {
5697 std::mem::transmute(
5698 symbol(
5699 crate::extensions::khr_buffer_device_address::FN_GET_BUFFER_OPAQUE_CAPTURE_ADDRESS_KHR,
5700 ),
5701 )
5702 } else {
5703 None
5704 },
5705 get_buffer_device_address_khr: if device_enabled.khr_buffer_device_address {
5706 std::mem::transmute(
5707 symbol(
5708 crate::extensions::khr_buffer_device_address::FN_GET_BUFFER_DEVICE_ADDRESS_KHR,
5709 ),
5710 )
5711 } else {
5712 None
5713 },
5714 get_buffer_device_address_ext: if device_enabled.ext_buffer_device_address {
5715 std::mem::transmute(
5716 symbol(
5717 crate::extensions::ext_buffer_device_address::FN_GET_BUFFER_DEVICE_ADDRESS_EXT,
5718 ),
5719 )
5720 } else {
5721 None
5722 },
5723 get_device_memory_opaque_capture_address_khr: if device_enabled
5724 .khr_buffer_device_address
5725 {
5726 std::mem::transmute(
5727 symbol(
5728 crate::extensions::khr_buffer_device_address::FN_GET_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_KHR,
5729 ),
5730 )
5731 } else {
5732 None
5733 },
5734 cmd_set_cull_mode_ext: if device_enabled.ext_extended_dynamic_state {
5735 std::mem::transmute(
5736 symbol(
5737 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_CULL_MODE_EXT,
5738 ),
5739 )
5740 } else {
5741 None
5742 },
5743 cmd_set_front_face_ext: if device_enabled.ext_extended_dynamic_state {
5744 std::mem::transmute(
5745 symbol(
5746 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_FRONT_FACE_EXT,
5747 ),
5748 )
5749 } else {
5750 None
5751 },
5752 cmd_set_primitive_topology_ext: if device_enabled.ext_extended_dynamic_state
5753 {
5754 std::mem::transmute(
5755 symbol(
5756 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_PRIMITIVE_TOPOLOGY_EXT,
5757 ),
5758 )
5759 } else {
5760 None
5761 },
5762 cmd_set_viewport_with_count_ext: if device_enabled.ext_extended_dynamic_state
5763 {
5764 std::mem::transmute(
5765 symbol(
5766 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_VIEWPORT_WITH_COUNT_EXT,
5767 ),
5768 )
5769 } else {
5770 None
5771 },
5772 cmd_set_scissor_with_count_ext: if device_enabled.ext_extended_dynamic_state
5773 {
5774 std::mem::transmute(
5775 symbol(
5776 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_SCISSOR_WITH_COUNT_EXT,
5777 ),
5778 )
5779 } else {
5780 None
5781 },
5782 cmd_bind_vertex_buffers2_ext: if device_enabled.ext_extended_dynamic_state {
5783 std::mem::transmute(
5784 symbol(
5785 crate::extensions::ext_extended_dynamic_state::FN_CMD_BIND_VERTEX_BUFFERS2_EXT,
5786 ),
5787 )
5788 } else {
5789 None
5790 },
5791 cmd_set_depth_test_enable_ext: if device_enabled.ext_extended_dynamic_state {
5792 std::mem::transmute(
5793 symbol(
5794 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_DEPTH_TEST_ENABLE_EXT,
5795 ),
5796 )
5797 } else {
5798 None
5799 },
5800 cmd_set_depth_write_enable_ext: if device_enabled.ext_extended_dynamic_state
5801 {
5802 std::mem::transmute(
5803 symbol(
5804 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_DEPTH_WRITE_ENABLE_EXT,
5805 ),
5806 )
5807 } else {
5808 None
5809 },
5810 cmd_set_depth_compare_op_ext: if device_enabled.ext_extended_dynamic_state {
5811 std::mem::transmute(
5812 symbol(
5813 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_DEPTH_COMPARE_OP_EXT,
5814 ),
5815 )
5816 } else {
5817 None
5818 },
5819 cmd_set_depth_bounds_test_enable_ext: if device_enabled
5820 .ext_extended_dynamic_state
5821 {
5822 std::mem::transmute(
5823 symbol(
5824 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_DEPTH_BOUNDS_TEST_ENABLE_EXT,
5825 ),
5826 )
5827 } else {
5828 None
5829 },
5830 cmd_set_stencil_test_enable_ext: if device_enabled.ext_extended_dynamic_state
5831 {
5832 std::mem::transmute(
5833 symbol(
5834 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_STENCIL_TEST_ENABLE_EXT,
5835 ),
5836 )
5837 } else {
5838 None
5839 },
5840 cmd_set_stencil_op_ext: if device_enabled.ext_extended_dynamic_state {
5841 std::mem::transmute(
5842 symbol(
5843 crate::extensions::ext_extended_dynamic_state::FN_CMD_SET_STENCIL_OP_EXT,
5844 ),
5845 )
5846 } else {
5847 None
5848 },
5849 cmd_set_rasterizer_discard_enable_ext: if device_enabled
5850 .ext_extended_dynamic_state2
5851 {
5852 std::mem::transmute(
5853 symbol(
5854 crate::extensions::ext_extended_dynamic_state2::FN_CMD_SET_RASTERIZER_DISCARD_ENABLE_EXT,
5855 ),
5856 )
5857 } else {
5858 None
5859 },
5860 cmd_set_depth_bias_enable_ext: if device_enabled.ext_extended_dynamic_state2
5861 {
5862 std::mem::transmute(
5863 symbol(
5864 crate::extensions::ext_extended_dynamic_state2::FN_CMD_SET_DEPTH_BIAS_ENABLE_EXT,
5865 ),
5866 )
5867 } else {
5868 None
5869 },
5870 cmd_set_primitive_restart_enable_ext: if device_enabled
5871 .ext_extended_dynamic_state2
5872 {
5873 std::mem::transmute(
5874 symbol(
5875 crate::extensions::ext_extended_dynamic_state2::FN_CMD_SET_PRIMITIVE_RESTART_ENABLE_EXT,
5876 ),
5877 )
5878 } else {
5879 None
5880 },
5881 create_private_data_slot_ext: if device_enabled.ext_private_data {
5882 std::mem::transmute(
5883 symbol(
5884 crate::extensions::ext_private_data::FN_CREATE_PRIVATE_DATA_SLOT_EXT,
5885 ),
5886 )
5887 } else {
5888 None
5889 },
5890 destroy_private_data_slot_ext: if device_enabled.ext_private_data {
5891 std::mem::transmute(
5892 symbol(
5893 crate::extensions::ext_private_data::FN_DESTROY_PRIVATE_DATA_SLOT_EXT,
5894 ),
5895 )
5896 } else {
5897 None
5898 },
5899 set_private_data_ext: if device_enabled.ext_private_data {
5900 std::mem::transmute(
5901 symbol(crate::extensions::ext_private_data::FN_SET_PRIVATE_DATA_EXT),
5902 )
5903 } else {
5904 None
5905 },
5906 get_private_data_ext: if device_enabled.ext_private_data {
5907 std::mem::transmute(
5908 symbol(crate::extensions::ext_private_data::FN_GET_PRIVATE_DATA_EXT),
5909 )
5910 } else {
5911 None
5912 },
5913 cmd_copy_buffer2_khr: if device_enabled.khr_copy_commands2 {
5914 std::mem::transmute(
5915 symbol(
5916 crate::extensions::khr_copy_commands2::FN_CMD_COPY_BUFFER2_KHR,
5917 ),
5918 )
5919 } else {
5920 None
5921 },
5922 cmd_copy_image2_khr: if device_enabled.khr_copy_commands2 {
5923 std::mem::transmute(
5924 symbol(crate::extensions::khr_copy_commands2::FN_CMD_COPY_IMAGE2_KHR),
5925 )
5926 } else {
5927 None
5928 },
5929 cmd_blit_image2_khr: if device_enabled.khr_copy_commands2 {
5930 std::mem::transmute(
5931 symbol(crate::extensions::khr_copy_commands2::FN_CMD_BLIT_IMAGE2_KHR),
5932 )
5933 } else {
5934 None
5935 },
5936 cmd_copy_buffer_to_image2_khr: if device_enabled.khr_copy_commands2 {
5937 std::mem::transmute(
5938 symbol(
5939 crate::extensions::khr_copy_commands2::FN_CMD_COPY_BUFFER_TO_IMAGE2_KHR,
5940 ),
5941 )
5942 } else {
5943 None
5944 },
5945 cmd_copy_image_to_buffer2_khr: if device_enabled.khr_copy_commands2 {
5946 std::mem::transmute(
5947 symbol(
5948 crate::extensions::khr_copy_commands2::FN_CMD_COPY_IMAGE_TO_BUFFER2_KHR,
5949 ),
5950 )
5951 } else {
5952 None
5953 },
5954 cmd_resolve_image2_khr: if device_enabled.khr_copy_commands2 {
5955 std::mem::transmute(
5956 symbol(
5957 crate::extensions::khr_copy_commands2::FN_CMD_RESOLVE_IMAGE2_KHR,
5958 ),
5959 )
5960 } else {
5961 None
5962 },
5963 cmd_set_event2_khr: if device_enabled.khr_synchronization2 {
5964 std::mem::transmute(
5965 symbol(
5966 crate::extensions::khr_synchronization2::FN_CMD_SET_EVENT2_KHR,
5967 ),
5968 )
5969 } else {
5970 None
5971 },
5972 cmd_reset_event2_khr: if device_enabled.khr_synchronization2 {
5973 std::mem::transmute(
5974 symbol(
5975 crate::extensions::khr_synchronization2::FN_CMD_RESET_EVENT2_KHR,
5976 ),
5977 )
5978 } else {
5979 None
5980 },
5981 cmd_wait_events2_khr: if device_enabled.khr_synchronization2 {
5982 std::mem::transmute(
5983 symbol(
5984 crate::extensions::khr_synchronization2::FN_CMD_WAIT_EVENTS2_KHR,
5985 ),
5986 )
5987 } else {
5988 None
5989 },
5990 cmd_pipeline_barrier2_khr: if device_enabled.khr_synchronization2 {
5991 std::mem::transmute(
5992 symbol(
5993 crate::extensions::khr_synchronization2::FN_CMD_PIPELINE_BARRIER2_KHR,
5994 ),
5995 )
5996 } else {
5997 None
5998 },
5999 queue_submit2_khr: if device_enabled.khr_synchronization2 {
6000 std::mem::transmute(
6001 symbol(crate::extensions::khr_synchronization2::FN_QUEUE_SUBMIT2_KHR),
6002 )
6003 } else {
6004 None
6005 },
6006 cmd_write_timestamp2_khr: if device_enabled.khr_synchronization2 {
6007 std::mem::transmute(
6008 symbol(
6009 crate::extensions::khr_synchronization2::FN_CMD_WRITE_TIMESTAMP2_KHR,
6010 ),
6011 )
6012 } else {
6013 None
6014 },
6015 cmd_begin_rendering_khr: if device_enabled.khr_dynamic_rendering {
6016 std::mem::transmute(
6017 symbol(
6018 crate::extensions::khr_dynamic_rendering::FN_CMD_BEGIN_RENDERING_KHR,
6019 ),
6020 )
6021 } else {
6022 None
6023 },
6024 cmd_end_rendering_khr: if device_enabled.khr_dynamic_rendering {
6025 std::mem::transmute(
6026 symbol(
6027 crate::extensions::khr_dynamic_rendering::FN_CMD_END_RENDERING_KHR,
6028 ),
6029 )
6030 } else {
6031 None
6032 },
6033 enabled: device_enabled,
6034 })
6035 }
6036}
6037pub(crate) fn features2_bool_count(
6038 structure_type: crate::vk1_0::StructureType,
6039) -> Option<usize> {
6040 match structure_type {
6041 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV => {
6042 Some(1usize)
6043 }
6044 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES => {
6045 Some(1usize)
6046 }
6047 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FEATURES_2 => Some(55usize),
6048 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES => {
6049 Some(2usize)
6050 }
6051 crate::vk1_0::StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES => Some(3usize),
6052 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR => {
6053 Some(1usize)
6054 }
6055 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR => {
6056 Some(1usize)
6057 }
6058 crate::vk1_0::StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES => {
6059 Some(4usize)
6060 }
6061 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES => {
6062 Some(1usize)
6063 }
6064 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES => {
6065 Some(1usize)
6066 }
6067 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES => {
6068 Some(1usize)
6069 }
6070 crate::vk1_0::StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT => {
6071 Some(1usize)
6072 }
6073 crate::vk1_0::StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT => {
6074 Some(1usize)
6075 }
6076 crate::vk1_0::StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES => {
6077 Some(2usize)
6078 }
6079 crate::vk1_0::StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES => {
6080 Some(1usize)
6081 }
6082 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES => {
6083 Some(1usize)
6084 }
6085 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES => {
6086 Some(2usize)
6087 }
6088 crate::vk1_0::StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES => {
6089 Some(1usize)
6090 }
6091 crate::vk1_0::StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR => {
6092 Some(1usize)
6093 }
6094 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT => {
6095 Some(1usize)
6096 }
6097 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES => {
6098 Some(20usize)
6099 }
6100 crate::vk1_0::StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES => {
6101 Some(1usize)
6102 }
6103 crate::vk1_0::StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES => {
6104 Some(3usize)
6105 }
6106 crate::vk1_0::StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT => {
6107 Some(2usize)
6108 }
6109 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES => {
6110 Some(3usize)
6111 }
6112 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES => {
6113 Some(2usize)
6114 }
6115 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT => {
6116 Some(12usize)
6117 }
6118 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT => {
6119 Some(12usize)
6120 }
6121 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT => {
6122 Some(2usize)
6123 }
6124 crate::vk1_0::StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT => {
6125 Some(1usize)
6126 }
6127 crate::vk1_0::StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT => {
6128 Some(2usize)
6129 }
6130 crate::vk1_0::StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV => {
6131 Some(1usize)
6132 }
6133 crate::vk1_0::StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV => {
6134 Some(1usize)
6135 }
6136 crate::vk1_0::StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV => {
6137 Some(1usize)
6138 }
6139 crate::vk1_0::StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV => {
6140 Some(2usize)
6141 }
6142 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV => {
6143 Some(1usize)
6144 }
6145 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV => {
6146 Some(1usize)
6147 }
6148 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV => {
6149 Some(1usize)
6150 }
6151 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV => {
6152 Some(2usize)
6153 }
6154 crate::vk1_0::StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI => {
6155 Some(1usize)
6156 }
6157 crate::vk1_0::StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV => {
6158 Some(2usize)
6159 }
6160 crate::vk1_0::StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR => {
6161 Some(5usize)
6162 }
6163 crate::vk1_0::StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR => {
6164 Some(5usize)
6165 }
6166 crate::vk1_0::StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR => {
6167 Some(1usize)
6168 }
6169 crate::vk1_0::StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR => {
6170 Some(2usize)
6171 }
6172 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT => {
6173 Some(3usize)
6174 }
6175 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT => {
6176 Some(1usize)
6177 }
6178 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM => {
6179 Some(1usize)
6180 }
6181 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES => {
6182 Some(1usize)
6183 }
6184 crate::vk1_0::StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES => {
6185 Some(1usize)
6186 }
6187 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT => {
6188 Some(1usize)
6189 }
6190 crate::vk1_0::StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT => {
6191 Some(1usize)
6192 }
6193 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT => {
6194 Some(1usize)
6195 }
6196 crate::vk1_0::StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES => {
6197 Some(3usize)
6198 }
6199 crate::vk1_0::StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT => {
6200 Some(3usize)
6201 }
6202 crate::vk1_0::StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES => {
6203 Some(1usize)
6204 }
6205 crate::vk1_0::StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES => {
6206 Some(1usize)
6207 }
6208 crate::vk1_0::StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV => {
6209 Some(2usize)
6210 }
6211 crate::vk1_0::StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT => {
6212 Some(1usize)
6213 }
6214 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR => {
6215 Some(2usize)
6216 }
6217 crate::vk1_0::StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV => {
6218 Some(1usize)
6219 }
6220 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL => {
6221 Some(1usize)
6222 }
6223 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR => {
6224 Some(2usize)
6225 }
6226 crate::vk1_0::StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT => {
6227 Some(1usize)
6228 }
6229 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV => {
6230 Some(1usize)
6231 }
6232 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT => {
6233 Some(3usize)
6234 }
6235 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES => {
6236 Some(1usize)
6237 }
6238 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT => {
6239 Some(2usize)
6240 }
6241 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR => {
6242 Some(1usize)
6243 }
6244 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES => {
6245 Some(1usize)
6246 }
6247 crate::vk1_0::StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT => {
6248 Some(1usize)
6249 }
6250 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES => {
6251 Some(2usize)
6252 }
6253 crate::vk1_0::StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT => {
6254 Some(6usize)
6255 }
6256 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES => {
6257 Some(1usize)
6258 }
6259 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES => Some(12usize),
6260 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES => Some(47usize),
6261 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES => Some(15usize),
6262 crate::vk1_0::StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD => {
6263 Some(1usize)
6264 }
6265 crate::vk1_0::StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT => {
6266 Some(2usize)
6267 }
6268 crate::vk1_0::StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT => {
6269 Some(2usize)
6270 }
6271 crate::vk1_0::StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT => {
6272 Some(1usize)
6273 }
6274 crate::vk1_0::StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT => {
6275 Some(3usize)
6276 }
6277 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV => {
6278 Some(1usize)
6279 }
6280 crate::vk1_0::StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES => {
6281 Some(1usize)
6282 }
6283 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR => {
6284 Some(1usize)
6285 }
6286 crate::vk1_0::StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT => {
6287 Some(3usize)
6288 }
6289 crate::vk1_0::StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES => {
6290 Some(1usize)
6291 }
6292 crate::vk1_0::StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR => {
6293 Some(4usize)
6294 }
6295 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR => {
6296 Some(15usize)
6297 }
6298 crate::vk1_0::StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT => {
6299 Some(2usize)
6300 }
6301 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI => {
6302 Some(1usize)
6303 }
6304 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT => {
6305 Some(2usize)
6306 }
6307 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR => {
6308 Some(3usize)
6309 }
6310 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES => {
6311 Some(1usize)
6312 }
6313 crate::vk1_0::StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV => {
6314 Some(3usize)
6315 }
6316 crate::vk1_0::StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT => {
6317 Some(2usize)
6318 }
6319 crate::vk1_0::StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE => {
6320 Some(1usize)
6321 }
6322 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT => {
6323 Some(1usize)
6324 }
6325 crate::vk1_0::StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT => {
6326 Some(1usize)
6327 }
6328 crate::vk1_0::StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV => {
6329 Some(1usize)
6330 }
6331 crate::vk1_0::StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT => {
6332 Some(1usize)
6333 }
6334 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES => {
6335 Some(1usize)
6336 }
6337 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT => {
6338 Some(3usize)
6339 }
6340 crate::vk1_0::StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV => {
6341 Some(1usize)
6342 }
6343 crate::vk1_0::StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT => {
6344 Some(1usize)
6345 }
6346 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT => {
6347 Some(2usize)
6348 }
6349 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES => {
6350 Some(1usize)
6351 }
6352 crate::vk1_0::StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV => {
6353 Some(2usize)
6354 }
6355 crate::vk1_0::StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT => {
6356 Some(1usize)
6357 }
6358 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES => {
6359 Some(1usize)
6360 }
6361 crate::vk1_0::StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT => {
6362 Some(1usize)
6363 }
6364 crate::vk1_0::StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM => {
6365 Some(3usize)
6366 }
6367 crate::vk1_0::StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV => {
6368 Some(1usize)
6369 }
6370 crate::vk1_0::StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT => {
6371 Some(1usize)
6372 }
6373 crate::vk1_0::StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE => {
6374 Some(1usize)
6375 }
6376 crate::vk1_0::StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT => {
6377 Some(1usize)
6378 }
6379 crate::vk1_0::StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT => {
6380 Some(1usize)
6381 }
6382 crate::vk1_0::StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT => {
6383 Some(1usize)
6384 }
6385 crate::vk1_0::StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT => {
6386 Some(1usize)
6387 }
6388 _ => None,
6389 }
6390}
6391pub mod vk1_0;
6393pub mod vk1_1;
6395pub mod vk1_2;
6397pub mod vk1_3;