vulkanalia_sys/
structs.rs

1// SPDX-License-Identifier: Apache-2.0
2
3// DO NOT EDIT.
4//
5// This file has been generated by the Kotlin project in the `generator`
6// directory from a Vulkan API registry.
7
8#![allow(
9    non_camel_case_types,
10    non_snake_case,
11    clippy::bad_bit_mask,
12    clippy::let_unit_value,
13    clippy::missing_safety_doc,
14    clippy::missing_transmute_annotations,
15    clippy::needless_lifetimes,
16    clippy::too_many_arguments,
17    clippy::type_complexity,
18    clippy::unnecessary_cast,
19    clippy::upper_case_acronyms,
20    clippy::useless_transmute
21)]
22
23use core::ffi::{c_char, c_int, c_void};
24use core::fmt;
25use core::ptr;
26
27use crate::*;
28
29/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsKHR.html>
30#[repr(C)]
31#[derive(Copy, Clone, Default, Debug, PartialEq)]
32pub struct AabbPositionsKHR {
33    pub min_x: f32,
34    pub min_y: f32,
35    pub min_z: f32,
36    pub max_x: f32,
37    pub max_y: f32,
38    pub max_z: f32,
39}
40
41/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html>
42#[repr(C)]
43#[derive(Copy, Clone, Debug)]
44pub struct AccelerationStructureBuildGeometryInfoKHR {
45    pub s_type: StructureType,
46    pub next: *const c_void,
47    pub type_: AccelerationStructureTypeKHR,
48    pub flags: BuildAccelerationStructureFlagsKHR,
49    pub mode: BuildAccelerationStructureModeKHR,
50    pub src_acceleration_structure: AccelerationStructureKHR,
51    pub dst_acceleration_structure: AccelerationStructureKHR,
52    pub geometry_count: u32,
53    pub geometries: *const AccelerationStructureGeometryKHR,
54    pub pointer_geometries: *const *const AccelerationStructureGeometryKHR,
55    pub scratch_data: DeviceOrHostAddressKHR,
56}
57
58impl Default for AccelerationStructureBuildGeometryInfoKHR {
59    #[inline]
60    fn default() -> Self {
61        Self {
62            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,
63            next: ptr::null(),
64            type_: AccelerationStructureTypeKHR::default(),
65            flags: BuildAccelerationStructureFlagsKHR::default(),
66            mode: BuildAccelerationStructureModeKHR::default(),
67            src_acceleration_structure: AccelerationStructureKHR::default(),
68            dst_acceleration_structure: AccelerationStructureKHR::default(),
69            geometry_count: u32::default(),
70            geometries: ptr::null(),
71            pointer_geometries: ptr::null(),
72            scratch_data: DeviceOrHostAddressKHR::default(),
73        }
74    }
75}
76
77unsafe impl Send for AccelerationStructureBuildGeometryInfoKHR {}
78unsafe impl Sync for AccelerationStructureBuildGeometryInfoKHR {}
79
80/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildRangeInfoKHR.html>
81#[repr(C)]
82#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
83pub struct AccelerationStructureBuildRangeInfoKHR {
84    pub primitive_count: u32,
85    pub primitive_offset: u32,
86    pub first_vertex: u32,
87    pub transform_offset: u32,
88}
89
90/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildSizesInfoKHR.html>
91#[repr(C)]
92#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
93pub struct AccelerationStructureBuildSizesInfoKHR {
94    pub s_type: StructureType,
95    pub next: *const c_void,
96    pub acceleration_structure_size: DeviceSize,
97    pub update_scratch_size: DeviceSize,
98    pub build_scratch_size: DeviceSize,
99}
100
101impl Default for AccelerationStructureBuildSizesInfoKHR {
102    #[inline]
103    fn default() -> Self {
104        Self {
105            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,
106            next: ptr::null(),
107            acceleration_structure_size: DeviceSize::default(),
108            update_scratch_size: DeviceSize::default(),
109            build_scratch_size: DeviceSize::default(),
110        }
111    }
112}
113
114unsafe impl Send for AccelerationStructureBuildSizesInfoKHR {}
115unsafe impl Sync for AccelerationStructureBuildSizesInfoKHR {}
116
117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCaptureDescriptorDataInfoEXT.html>
118#[repr(C)]
119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
120pub struct AccelerationStructureCaptureDescriptorDataInfoEXT {
121    pub s_type: StructureType,
122    pub next: *const c_void,
123    pub acceleration_structure: AccelerationStructureKHR,
124    pub acceleration_structure_nv: AccelerationStructureNV,
125}
126
127impl Default for AccelerationStructureCaptureDescriptorDataInfoEXT {
128    #[inline]
129    fn default() -> Self {
130        Self {
131            s_type: StructureType::ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
132            next: ptr::null(),
133            acceleration_structure: AccelerationStructureKHR::default(),
134            acceleration_structure_nv: AccelerationStructureNV::default(),
135        }
136    }
137}
138
139unsafe impl Send for AccelerationStructureCaptureDescriptorDataInfoEXT {}
140unsafe impl Sync for AccelerationStructureCaptureDescriptorDataInfoEXT {}
141
142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoKHR.html>
143#[repr(C)]
144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
145pub struct AccelerationStructureCreateInfoKHR {
146    pub s_type: StructureType,
147    pub next: *const c_void,
148    pub create_flags: AccelerationStructureCreateFlagsKHR,
149    pub buffer: Buffer,
150    pub offset: DeviceSize,
151    pub size: DeviceSize,
152    pub type_: AccelerationStructureTypeKHR,
153    pub device_address: DeviceAddress,
154}
155
156impl Default for AccelerationStructureCreateInfoKHR {
157    #[inline]
158    fn default() -> Self {
159        Self {
160            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR,
161            next: ptr::null(),
162            create_flags: AccelerationStructureCreateFlagsKHR::default(),
163            buffer: Buffer::default(),
164            offset: DeviceSize::default(),
165            size: DeviceSize::default(),
166            type_: AccelerationStructureTypeKHR::default(),
167            device_address: DeviceAddress::default(),
168        }
169    }
170}
171
172unsafe impl Send for AccelerationStructureCreateInfoKHR {}
173unsafe impl Sync for AccelerationStructureCreateInfoKHR {}
174
175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoNV.html>
176#[repr(C)]
177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
178pub struct AccelerationStructureCreateInfoNV {
179    pub s_type: StructureType,
180    pub next: *const c_void,
181    pub compacted_size: DeviceSize,
182    pub info: AccelerationStructureInfoNV,
183}
184
185impl Default for AccelerationStructureCreateInfoNV {
186    #[inline]
187    fn default() -> Self {
188        Self {
189            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV,
190            next: ptr::null(),
191            compacted_size: DeviceSize::default(),
192            info: AccelerationStructureInfoNV::default(),
193        }
194    }
195}
196
197unsafe impl Send for AccelerationStructureCreateInfoNV {}
198unsafe impl Sync for AccelerationStructureCreateInfoNV {}
199
200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX.html>
201#[repr(C)]
202#[derive(Copy, Clone, Debug)]
203pub struct AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
204    pub s_type: StructureType,
205    pub next: *const c_void,
206    pub compressed_data: DeviceOrHostAddressConstKHR,
207    pub data_size: DeviceSize,
208    pub num_triangles: u32,
209    pub num_vertices: u32,
210    pub max_primitive_index: u32,
211    pub max_geometry_index: u32,
212    pub format: CompressedTriangleFormatAMDX,
213}
214
215impl Default for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
216    #[inline]
217    fn default() -> Self {
218        Self {
219            s_type: StructureType::ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX,
220            next: ptr::null(),
221            compressed_data: DeviceOrHostAddressConstKHR::default(),
222            data_size: DeviceSize::default(),
223            num_triangles: u32::default(),
224            num_vertices: u32::default(),
225            max_primitive_index: u32::default(),
226            max_geometry_index: u32::default(),
227            format: CompressedTriangleFormatAMDX::default(),
228        }
229    }
230}
231
232unsafe impl Send for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {}
233unsafe impl Sync for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {}
234
235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html>
236#[repr(C)]
237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
238pub struct AccelerationStructureDeviceAddressInfoKHR {
239    pub s_type: StructureType,
240    pub next: *const c_void,
241    pub acceleration_structure: AccelerationStructureKHR,
242}
243
244impl Default for AccelerationStructureDeviceAddressInfoKHR {
245    #[inline]
246    fn default() -> Self {
247        Self {
248            s_type: StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
249            next: ptr::null(),
250            acceleration_structure: AccelerationStructureKHR::default(),
251        }
252    }
253}
254
255unsafe impl Send for AccelerationStructureDeviceAddressInfoKHR {}
256unsafe impl Sync for AccelerationStructureDeviceAddressInfoKHR {}
257
258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html>
259#[repr(C)]
260#[derive(Copy, Clone, Debug)]
261pub struct AccelerationStructureGeometryAabbsDataKHR {
262    pub s_type: StructureType,
263    pub next: *const c_void,
264    pub data: DeviceOrHostAddressConstKHR,
265    pub stride: DeviceSize,
266}
267
268impl Default for AccelerationStructureGeometryAabbsDataKHR {
269    #[inline]
270    fn default() -> Self {
271        Self {
272            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,
273            next: ptr::null(),
274            data: DeviceOrHostAddressConstKHR::default(),
275            stride: DeviceSize::default(),
276        }
277    }
278}
279
280unsafe impl Send for AccelerationStructureGeometryAabbsDataKHR {}
281unsafe impl Sync for AccelerationStructureGeometryAabbsDataKHR {}
282
283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html>
284#[repr(C)]
285#[derive(Copy, Clone, Debug)]
286pub struct AccelerationStructureGeometryInstancesDataKHR {
287    pub s_type: StructureType,
288    pub next: *const c_void,
289    pub array_of_pointers: Bool32,
290    pub data: DeviceOrHostAddressConstKHR,
291}
292
293impl Default for AccelerationStructureGeometryInstancesDataKHR {
294    #[inline]
295    fn default() -> Self {
296        Self {
297            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,
298            next: ptr::null(),
299            array_of_pointers: Bool32::default(),
300            data: DeviceOrHostAddressConstKHR::default(),
301        }
302    }
303}
304
305unsafe impl Send for AccelerationStructureGeometryInstancesDataKHR {}
306unsafe impl Sync for AccelerationStructureGeometryInstancesDataKHR {}
307
308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryKHR.html>
309#[repr(C)]
310#[derive(Copy, Clone, Debug)]
311pub struct AccelerationStructureGeometryKHR {
312    pub s_type: StructureType,
313    pub next: *const c_void,
314    pub geometry_type: GeometryTypeKHR,
315    pub geometry: AccelerationStructureGeometryDataKHR,
316    pub flags: GeometryFlagsKHR,
317}
318
319impl Default for AccelerationStructureGeometryKHR {
320    #[inline]
321    fn default() -> Self {
322        Self {
323            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR,
324            next: ptr::null(),
325            geometry_type: GeometryTypeKHR::default(),
326            geometry: AccelerationStructureGeometryDataKHR::default(),
327            flags: GeometryFlagsKHR::default(),
328        }
329    }
330}
331
332unsafe impl Send for AccelerationStructureGeometryKHR {}
333unsafe impl Sync for AccelerationStructureGeometryKHR {}
334
335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryLinearSweptSpheresDataNV.html>
336#[repr(C)]
337#[derive(Copy, Clone, Debug)]
338pub struct AccelerationStructureGeometryLinearSweptSpheresDataNV {
339    pub s_type: StructureType,
340    pub next: *const c_void,
341    pub vertex_format: Format,
342    pub vertex_data: DeviceOrHostAddressConstKHR,
343    pub vertex_stride: DeviceSize,
344    pub radius_format: Format,
345    pub radius_data: DeviceOrHostAddressConstKHR,
346    pub radius_stride: DeviceSize,
347    pub index_type: IndexType,
348    pub index_data: DeviceOrHostAddressConstKHR,
349    pub index_stride: DeviceSize,
350    pub indexing_mode: RayTracingLssIndexingModeNV,
351    pub end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV,
352}
353
354impl Default for AccelerationStructureGeometryLinearSweptSpheresDataNV {
355    #[inline]
356    fn default() -> Self {
357        Self {
358            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV,
359            next: ptr::null(),
360            vertex_format: Format::default(),
361            vertex_data: DeviceOrHostAddressConstKHR::default(),
362            vertex_stride: DeviceSize::default(),
363            radius_format: Format::default(),
364            radius_data: DeviceOrHostAddressConstKHR::default(),
365            radius_stride: DeviceSize::default(),
366            index_type: IndexType::default(),
367            index_data: DeviceOrHostAddressConstKHR::default(),
368            index_stride: DeviceSize::default(),
369            indexing_mode: RayTracingLssIndexingModeNV::default(),
370            end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV::default(),
371        }
372    }
373}
374
375unsafe impl Send for AccelerationStructureGeometryLinearSweptSpheresDataNV {}
376unsafe impl Sync for AccelerationStructureGeometryLinearSweptSpheresDataNV {}
377
378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html>
379#[repr(C)]
380#[derive(Copy, Clone, Debug)]
381pub struct AccelerationStructureGeometryMotionTrianglesDataNV {
382    pub s_type: StructureType,
383    pub next: *const c_void,
384    pub vertex_data: DeviceOrHostAddressConstKHR,
385}
386
387impl Default for AccelerationStructureGeometryMotionTrianglesDataNV {
388    #[inline]
389    fn default() -> Self {
390        Self {
391            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,
392            next: ptr::null(),
393            vertex_data: DeviceOrHostAddressConstKHR::default(),
394        }
395    }
396}
397
398unsafe impl Send for AccelerationStructureGeometryMotionTrianglesDataNV {}
399unsafe impl Sync for AccelerationStructureGeometryMotionTrianglesDataNV {}
400
401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometrySpheresDataNV.html>
402#[repr(C)]
403#[derive(Copy, Clone, Debug)]
404pub struct AccelerationStructureGeometrySpheresDataNV {
405    pub s_type: StructureType,
406    pub next: *const c_void,
407    pub vertex_format: Format,
408    pub vertex_data: DeviceOrHostAddressConstKHR,
409    pub vertex_stride: DeviceSize,
410    pub radius_format: Format,
411    pub radius_data: DeviceOrHostAddressConstKHR,
412    pub radius_stride: DeviceSize,
413    pub index_type: IndexType,
414    pub index_data: DeviceOrHostAddressConstKHR,
415    pub index_stride: DeviceSize,
416}
417
418impl Default for AccelerationStructureGeometrySpheresDataNV {
419    #[inline]
420    fn default() -> Self {
421        Self {
422            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV,
423            next: ptr::null(),
424            vertex_format: Format::default(),
425            vertex_data: DeviceOrHostAddressConstKHR::default(),
426            vertex_stride: DeviceSize::default(),
427            radius_format: Format::default(),
428            radius_data: DeviceOrHostAddressConstKHR::default(),
429            radius_stride: DeviceSize::default(),
430            index_type: IndexType::default(),
431            index_data: DeviceOrHostAddressConstKHR::default(),
432            index_stride: DeviceSize::default(),
433        }
434    }
435}
436
437unsafe impl Send for AccelerationStructureGeometrySpheresDataNV {}
438unsafe impl Sync for AccelerationStructureGeometrySpheresDataNV {}
439
440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html>
441#[repr(C)]
442#[derive(Copy, Clone, Debug)]
443pub struct AccelerationStructureGeometryTrianglesDataKHR {
444    pub s_type: StructureType,
445    pub next: *const c_void,
446    pub vertex_format: Format,
447    pub vertex_data: DeviceOrHostAddressConstKHR,
448    pub vertex_stride: DeviceSize,
449    pub max_vertex: u32,
450    pub index_type: IndexType,
451    pub index_data: DeviceOrHostAddressConstKHR,
452    pub transform_data: DeviceOrHostAddressConstKHR,
453}
454
455impl Default for AccelerationStructureGeometryTrianglesDataKHR {
456    #[inline]
457    fn default() -> Self {
458        Self {
459            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,
460            next: ptr::null(),
461            vertex_format: Format::default(),
462            vertex_data: DeviceOrHostAddressConstKHR::default(),
463            vertex_stride: DeviceSize::default(),
464            max_vertex: u32::default(),
465            index_type: IndexType::default(),
466            index_data: DeviceOrHostAddressConstKHR::default(),
467            transform_data: DeviceOrHostAddressConstKHR::default(),
468        }
469    }
470}
471
472unsafe impl Send for AccelerationStructureGeometryTrianglesDataKHR {}
473unsafe impl Sync for AccelerationStructureGeometryTrianglesDataKHR {}
474
475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInfoNV.html>
476#[repr(C)]
477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
478pub struct AccelerationStructureInfoNV {
479    pub s_type: StructureType,
480    pub next: *const c_void,
481    pub type_: AccelerationStructureTypeNV,
482    pub flags: BuildAccelerationStructureFlagsNV,
483    pub instance_count: u32,
484    pub geometry_count: u32,
485    pub geometries: *const GeometryNV,
486}
487
488impl Default for AccelerationStructureInfoNV {
489    #[inline]
490    fn default() -> Self {
491        Self {
492            s_type: StructureType::ACCELERATION_STRUCTURE_INFO_NV,
493            next: ptr::null(),
494            type_: AccelerationStructureTypeNV::default(),
495            flags: BuildAccelerationStructureFlagsNV::default(),
496            instance_count: u32::default(),
497            geometry_count: u32::default(),
498            geometries: ptr::null(),
499        }
500    }
501}
502
503unsafe impl Send for AccelerationStructureInfoNV {}
504unsafe impl Sync for AccelerationStructureInfoNV {}
505
506bitfields32! {
507    struct AccelerationStructureInstanceKHRBitfields0 {
508        (instance_custom_index, with_instance_custom_index)[0 .. 24],
509        (mask, with_mask)[24 .. 32],
510    }
511}
512
513bitfields32! {
514    struct AccelerationStructureInstanceKHRBitfields1 {
515        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
516        (flags, with_flags)[24 .. 32],
517    }
518}
519
520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceKHR.html>
521#[repr(C)]
522#[derive(Copy, Clone, Default, Debug, PartialEq)]
523pub struct AccelerationStructureInstanceKHR {
524    pub transform: TransformMatrixKHR,
525    pub acceleration_structure_reference: u64,
526    pub bitfields0: AccelerationStructureInstanceKHRBitfields0,
527    pub bitfields1: AccelerationStructureInstanceKHRBitfields1,
528}
529
530bitfields32! {
531    struct AccelerationStructureMatrixMotionInstanceNVBitfields0 {
532        (instance_custom_index, with_instance_custom_index)[0 .. 24],
533        (mask, with_mask)[24 .. 32],
534    }
535}
536
537bitfields32! {
538    struct AccelerationStructureMatrixMotionInstanceNVBitfields1 {
539        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
540        (flags, with_flags)[24 .. 32],
541    }
542}
543
544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMatrixMotionInstanceNV.html>
545#[repr(C)]
546#[derive(Copy, Clone, Default, Debug, PartialEq)]
547pub struct AccelerationStructureMatrixMotionInstanceNV {
548    pub transform_t0: TransformMatrixKHR,
549    pub transform_t1: TransformMatrixKHR,
550    pub acceleration_structure_reference: u64,
551    pub bitfields0: AccelerationStructureMatrixMotionInstanceNVBitfields0,
552    pub bitfields1: AccelerationStructureMatrixMotionInstanceNVBitfields1,
553}
554
555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html>
556#[repr(C)]
557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
558pub struct AccelerationStructureMemoryRequirementsInfoNV {
559    pub s_type: StructureType,
560    pub next: *const c_void,
561    pub type_: AccelerationStructureMemoryRequirementsTypeNV,
562    pub acceleration_structure: AccelerationStructureNV,
563}
564
565impl Default for AccelerationStructureMemoryRequirementsInfoNV {
566    #[inline]
567    fn default() -> Self {
568        Self {
569            s_type: StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
570            next: ptr::null(),
571            type_: AccelerationStructureMemoryRequirementsTypeNV::default(),
572            acceleration_structure: AccelerationStructureNV::default(),
573        }
574    }
575}
576
577unsafe impl Send for AccelerationStructureMemoryRequirementsInfoNV {}
578unsafe impl Sync for AccelerationStructureMemoryRequirementsInfoNV {}
579
580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoNV.html>
581#[repr(C)]
582#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
583pub struct AccelerationStructureMotionInfoNV {
584    pub s_type: StructureType,
585    pub next: *const c_void,
586    pub max_instances: u32,
587    pub flags: AccelerationStructureMotionInfoFlagsNV,
588}
589
590impl Default for AccelerationStructureMotionInfoNV {
591    #[inline]
592    fn default() -> Self {
593        Self {
594            s_type: StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV,
595            next: ptr::null(),
596            max_instances: u32::default(),
597            flags: AccelerationStructureMotionInfoFlagsNV::default(),
598        }
599    }
600}
601
602unsafe impl Send for AccelerationStructureMotionInfoNV {}
603unsafe impl Sync for AccelerationStructureMotionInfoNV {}
604
605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceNV.html>
606#[repr(C)]
607#[derive(Copy, Clone, Default, Debug)]
608pub struct AccelerationStructureMotionInstanceNV {
609    pub type_: AccelerationStructureMotionInstanceTypeNV,
610    pub flags: AccelerationStructureMotionInstanceFlagsNV,
611    pub data: AccelerationStructureMotionInstanceDataNV,
612}
613
614bitfields32! {
615    struct AccelerationStructureSRTMotionInstanceNVBitfields0 {
616        (instance_custom_index, with_instance_custom_index)[0 .. 24],
617        (mask, with_mask)[24 .. 32],
618    }
619}
620
621bitfields32! {
622    struct AccelerationStructureSRTMotionInstanceNVBitfields1 {
623        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
624        (flags, with_flags)[24 .. 32],
625    }
626}
627
628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureSRTMotionInstanceNV.html>
629#[repr(C)]
630#[derive(Copy, Clone, Default, Debug, PartialEq)]
631pub struct AccelerationStructureSRTMotionInstanceNV {
632    pub transform_t0: SRTDataNV,
633    pub transform_t1: SRTDataNV,
634    pub acceleration_structure_reference: u64,
635    pub bitfields0: AccelerationStructureSRTMotionInstanceNVBitfields0,
636    pub bitfields1: AccelerationStructureSRTMotionInstanceNVBitfields1,
637}
638
639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesDisplacementMicromapNV.html>
640#[repr(C)]
641#[derive(Copy, Clone, Debug)]
642pub struct AccelerationStructureTrianglesDisplacementMicromapNV {
643    pub s_type: StructureType,
644    pub next: *mut c_void,
645    pub displacement_bias_and_scale_format: Format,
646    pub displacement_vector_format: Format,
647    pub displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR,
648    pub displacement_bias_and_scale_stride: DeviceSize,
649    pub displacement_vector_buffer: DeviceOrHostAddressConstKHR,
650    pub displacement_vector_stride: DeviceSize,
651    pub displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR,
652    pub displaced_micromap_primitive_flags_stride: DeviceSize,
653    pub index_type: IndexType,
654    pub index_buffer: DeviceOrHostAddressConstKHR,
655    pub index_stride: DeviceSize,
656    pub base_triangle: u32,
657    pub usage_counts_count: u32,
658    pub usage_counts: *const MicromapUsageEXT,
659    pub pointer_usage_counts: *const *const MicromapUsageEXT,
660    pub micromap: MicromapEXT,
661}
662
663impl Default for AccelerationStructureTrianglesDisplacementMicromapNV {
664    #[inline]
665    fn default() -> Self {
666        Self {
667            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV,
668            next: ptr::null_mut(),
669            displacement_bias_and_scale_format: Format::default(),
670            displacement_vector_format: Format::default(),
671            displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR::default(),
672            displacement_bias_and_scale_stride: DeviceSize::default(),
673            displacement_vector_buffer: DeviceOrHostAddressConstKHR::default(),
674            displacement_vector_stride: DeviceSize::default(),
675            displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR::default(),
676            displaced_micromap_primitive_flags_stride: DeviceSize::default(),
677            index_type: IndexType::default(),
678            index_buffer: DeviceOrHostAddressConstKHR::default(),
679            index_stride: DeviceSize::default(),
680            base_triangle: u32::default(),
681            usage_counts_count: u32::default(),
682            usage_counts: ptr::null(),
683            pointer_usage_counts: ptr::null(),
684            micromap: MicromapEXT::default(),
685        }
686    }
687}
688
689unsafe impl Send for AccelerationStructureTrianglesDisplacementMicromapNV {}
690unsafe impl Sync for AccelerationStructureTrianglesDisplacementMicromapNV {}
691
692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesOpacityMicromapEXT.html>
693#[repr(C)]
694#[derive(Copy, Clone, Debug)]
695pub struct AccelerationStructureTrianglesOpacityMicromapEXT {
696    pub s_type: StructureType,
697    pub next: *mut c_void,
698    pub index_type: IndexType,
699    pub index_buffer: DeviceOrHostAddressConstKHR,
700    pub index_stride: DeviceSize,
701    pub base_triangle: u32,
702    pub usage_counts_count: u32,
703    pub usage_counts: *const MicromapUsageEXT,
704    pub pointer_usage_counts: *const *const MicromapUsageEXT,
705    pub micromap: MicromapEXT,
706}
707
708impl Default for AccelerationStructureTrianglesOpacityMicromapEXT {
709    #[inline]
710    fn default() -> Self {
711        Self {
712            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT,
713            next: ptr::null_mut(),
714            index_type: IndexType::default(),
715            index_buffer: DeviceOrHostAddressConstKHR::default(),
716            index_stride: DeviceSize::default(),
717            base_triangle: u32::default(),
718            usage_counts_count: u32::default(),
719            usage_counts: ptr::null(),
720            pointer_usage_counts: ptr::null(),
721            micromap: MicromapEXT::default(),
722        }
723    }
724}
725
726unsafe impl Send for AccelerationStructureTrianglesOpacityMicromapEXT {}
727unsafe impl Sync for AccelerationStructureTrianglesOpacityMicromapEXT {}
728
729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureVersionInfoKHR.html>
730#[repr(C)]
731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
732pub struct AccelerationStructureVersionInfoKHR {
733    pub s_type: StructureType,
734    pub next: *const c_void,
735    pub version_data: *const u8,
736}
737
738impl Default for AccelerationStructureVersionInfoKHR {
739    #[inline]
740    fn default() -> Self {
741        Self {
742            s_type: StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR,
743            next: ptr::null(),
744            version_data: ptr::null(),
745        }
746    }
747}
748
749unsafe impl Send for AccelerationStructureVersionInfoKHR {}
750unsafe impl Sync for AccelerationStructureVersionInfoKHR {}
751
752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireNextImageInfoKHR.html>
753#[repr(C)]
754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
755pub struct AcquireNextImageInfoKHR {
756    pub s_type: StructureType,
757    pub next: *const c_void,
758    pub swapchain: SwapchainKHR,
759    pub timeout: u64,
760    pub semaphore: Semaphore,
761    pub fence: Fence,
762    pub device_mask: u32,
763}
764
765impl Default for AcquireNextImageInfoKHR {
766    #[inline]
767    fn default() -> Self {
768        Self {
769            s_type: StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR,
770            next: ptr::null(),
771            swapchain: SwapchainKHR::default(),
772            timeout: u64::default(),
773            semaphore: Semaphore::default(),
774            fence: Fence::default(),
775            device_mask: u32::default(),
776        }
777    }
778}
779
780unsafe impl Send for AcquireNextImageInfoKHR {}
781unsafe impl Sync for AcquireNextImageInfoKHR {}
782
783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireProfilingLockInfoKHR.html>
784#[repr(C)]
785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
786pub struct AcquireProfilingLockInfoKHR {
787    pub s_type: StructureType,
788    pub next: *const c_void,
789    pub flags: AcquireProfilingLockFlagsKHR,
790    pub timeout: u64,
791}
792
793impl Default for AcquireProfilingLockInfoKHR {
794    #[inline]
795    fn default() -> Self {
796        Self {
797            s_type: StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR,
798            next: ptr::null(),
799            flags: AcquireProfilingLockFlagsKHR::default(),
800            timeout: u64::default(),
801        }
802    }
803}
804
805unsafe impl Send for AcquireProfilingLockInfoKHR {}
806unsafe impl Sync for AcquireProfilingLockInfoKHR {}
807
808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAllocationCallbacks.html>
809#[repr(C)]
810#[derive(Copy, Clone)]
811pub struct AllocationCallbacks {
812    pub user_data: *mut c_void,
813    pub allocation: PFN_vkAllocationFunction,
814    pub reallocation: PFN_vkReallocationFunction,
815    pub free: PFN_vkFreeFunction,
816    pub internal_allocation: PFN_vkInternalAllocationNotification,
817    pub internal_free: PFN_vkInternalFreeNotification,
818}
819
820impl fmt::Debug for AllocationCallbacks {
821    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
822        f.debug_struct("AllocationCallbacks")
823            .field("user_data", &self.user_data)
824            .field("allocation", &(self.allocation.map(|f| f as *const u8)))
825            .field("reallocation", &(self.reallocation.map(|f| f as *const u8)))
826            .field("free", &(self.free.map(|f| f as *const u8)))
827            .field(
828                "internal_allocation",
829                &(self.internal_allocation.map(|f| f as *const u8)),
830            )
831            .field(
832                "internal_free",
833                &(self.internal_free.map(|f| f as *const u8)),
834            )
835            .finish()
836    }
837}
838
839impl Default for AllocationCallbacks {
840    #[inline]
841    fn default() -> Self {
842        Self {
843            user_data: ptr::null_mut(),
844            allocation: PFN_vkAllocationFunction::default(),
845            reallocation: PFN_vkReallocationFunction::default(),
846            free: PFN_vkFreeFunction::default(),
847            internal_allocation: PFN_vkInternalAllocationNotification::default(),
848            internal_free: PFN_vkInternalFreeNotification::default(),
849        }
850    }
851}
852
853unsafe impl Send for AllocationCallbacks {}
854unsafe impl Sync for AllocationCallbacks {}
855
856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAmigoProfilingSubmitInfoSEC.html>
857#[repr(C)]
858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
859pub struct AmigoProfilingSubmitInfoSEC {
860    pub s_type: StructureType,
861    pub next: *const c_void,
862    pub first_draw_timestamp: u64,
863    pub swap_buffer_timestamp: u64,
864}
865
866impl Default for AmigoProfilingSubmitInfoSEC {
867    #[inline]
868    fn default() -> Self {
869        Self {
870            s_type: StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC,
871            next: ptr::null(),
872            first_draw_timestamp: u64::default(),
873            swap_buffer_timestamp: u64::default(),
874        }
875    }
876}
877
878unsafe impl Send for AmigoProfilingSubmitInfoSEC {}
879unsafe impl Sync for AmigoProfilingSubmitInfoSEC {}
880
881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatProperties2ANDROID.html>
882#[repr(C)]
883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
884pub struct AndroidHardwareBufferFormatProperties2ANDROID {
885    pub s_type: StructureType,
886    pub next: *mut c_void,
887    pub format: Format,
888    pub external_format: u64,
889    pub format_features: FormatFeatureFlags2,
890    pub sampler_ycbcr_conversion_components: ComponentMapping,
891    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
892    pub suggested_ycbcr_range: SamplerYcbcrRange,
893    pub suggested_x_chroma_offset: ChromaLocation,
894    pub suggested_y_chroma_offset: ChromaLocation,
895}
896
897impl Default for AndroidHardwareBufferFormatProperties2ANDROID {
898    #[inline]
899    fn default() -> Self {
900        Self {
901            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID,
902            next: ptr::null_mut(),
903            format: Format::default(),
904            external_format: u64::default(),
905            format_features: FormatFeatureFlags2::default(),
906            sampler_ycbcr_conversion_components: ComponentMapping::default(),
907            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
908            suggested_ycbcr_range: SamplerYcbcrRange::default(),
909            suggested_x_chroma_offset: ChromaLocation::default(),
910            suggested_y_chroma_offset: ChromaLocation::default(),
911        }
912    }
913}
914
915unsafe impl Send for AndroidHardwareBufferFormatProperties2ANDROID {}
916unsafe impl Sync for AndroidHardwareBufferFormatProperties2ANDROID {}
917
918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html>
919#[repr(C)]
920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
921pub struct AndroidHardwareBufferFormatPropertiesANDROID {
922    pub s_type: StructureType,
923    pub next: *mut c_void,
924    pub format: Format,
925    pub external_format: u64,
926    pub format_features: FormatFeatureFlags,
927    pub sampler_ycbcr_conversion_components: ComponentMapping,
928    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
929    pub suggested_ycbcr_range: SamplerYcbcrRange,
930    pub suggested_x_chroma_offset: ChromaLocation,
931    pub suggested_y_chroma_offset: ChromaLocation,
932}
933
934impl Default for AndroidHardwareBufferFormatPropertiesANDROID {
935    #[inline]
936    fn default() -> Self {
937        Self {
938            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
939            next: ptr::null_mut(),
940            format: Format::default(),
941            external_format: u64::default(),
942            format_features: FormatFeatureFlags::default(),
943            sampler_ycbcr_conversion_components: ComponentMapping::default(),
944            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
945            suggested_ycbcr_range: SamplerYcbcrRange::default(),
946            suggested_x_chroma_offset: ChromaLocation::default(),
947            suggested_y_chroma_offset: ChromaLocation::default(),
948        }
949    }
950}
951
952unsafe impl Send for AndroidHardwareBufferFormatPropertiesANDROID {}
953unsafe impl Sync for AndroidHardwareBufferFormatPropertiesANDROID {}
954
955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatResolvePropertiesANDROID.html>
956#[repr(C)]
957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
958pub struct AndroidHardwareBufferFormatResolvePropertiesANDROID {
959    pub s_type: StructureType,
960    pub next: *mut c_void,
961    pub color_attachment_format: Format,
962}
963
964impl Default for AndroidHardwareBufferFormatResolvePropertiesANDROID {
965    #[inline]
966    fn default() -> Self {
967        Self {
968            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID,
969            next: ptr::null_mut(),
970            color_attachment_format: Format::default(),
971        }
972    }
973}
974
975unsafe impl Send for AndroidHardwareBufferFormatResolvePropertiesANDROID {}
976unsafe impl Sync for AndroidHardwareBufferFormatResolvePropertiesANDROID {}
977
978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferPropertiesANDROID.html>
979#[repr(C)]
980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
981pub struct AndroidHardwareBufferPropertiesANDROID {
982    pub s_type: StructureType,
983    pub next: *mut c_void,
984    pub allocation_size: DeviceSize,
985    pub memory_type_bits: u32,
986}
987
988impl Default for AndroidHardwareBufferPropertiesANDROID {
989    #[inline]
990    fn default() -> Self {
991        Self {
992            s_type: StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
993            next: ptr::null_mut(),
994            allocation_size: DeviceSize::default(),
995            memory_type_bits: u32::default(),
996        }
997    }
998}
999
1000unsafe impl Send for AndroidHardwareBufferPropertiesANDROID {}
1001unsafe impl Sync for AndroidHardwareBufferPropertiesANDROID {}
1002
1003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferUsageANDROID.html>
1004#[repr(C)]
1005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1006pub struct AndroidHardwareBufferUsageANDROID {
1007    pub s_type: StructureType,
1008    pub next: *mut c_void,
1009    pub android_hardware_buffer_usage: u64,
1010}
1011
1012impl Default for AndroidHardwareBufferUsageANDROID {
1013    #[inline]
1014    fn default() -> Self {
1015        Self {
1016            s_type: StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
1017            next: ptr::null_mut(),
1018            android_hardware_buffer_usage: u64::default(),
1019        }
1020    }
1021}
1022
1023unsafe impl Send for AndroidHardwareBufferUsageANDROID {}
1024unsafe impl Sync for AndroidHardwareBufferUsageANDROID {}
1025
1026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateInfoKHR.html>
1027#[repr(C)]
1028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1029pub struct AndroidSurfaceCreateInfoKHR {
1030    pub s_type: StructureType,
1031    pub next: *const c_void,
1032    pub flags: AndroidSurfaceCreateFlagsKHR,
1033    pub window: *mut ANativeWindow,
1034}
1035
1036impl Default for AndroidSurfaceCreateInfoKHR {
1037    #[inline]
1038    fn default() -> Self {
1039        Self {
1040            s_type: StructureType::ANDROID_SURFACE_CREATE_INFO_KHR,
1041            next: ptr::null(),
1042            flags: AndroidSurfaceCreateFlagsKHR::default(),
1043            window: ptr::null_mut(),
1044        }
1045    }
1046}
1047
1048unsafe impl Send for AndroidSurfaceCreateInfoKHR {}
1049unsafe impl Sync for AndroidSurfaceCreateInfoKHR {}
1050
1051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagDataAMD.html>
1052#[repr(C)]
1053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1054pub struct AntiLagDataAMD {
1055    pub s_type: StructureType,
1056    pub next: *const c_void,
1057    pub mode: AntiLagModeAMD,
1058    pub max_fps: u32,
1059    pub presentation_info: *const AntiLagPresentationInfoAMD,
1060}
1061
1062impl Default for AntiLagDataAMD {
1063    #[inline]
1064    fn default() -> Self {
1065        Self {
1066            s_type: StructureType::ANTI_LAG_DATA_AMD,
1067            next: ptr::null(),
1068            mode: AntiLagModeAMD::default(),
1069            max_fps: u32::default(),
1070            presentation_info: ptr::null(),
1071        }
1072    }
1073}
1074
1075unsafe impl Send for AntiLagDataAMD {}
1076unsafe impl Sync for AntiLagDataAMD {}
1077
1078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagPresentationInfoAMD.html>
1079#[repr(C)]
1080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1081pub struct AntiLagPresentationInfoAMD {
1082    pub s_type: StructureType,
1083    pub next: *mut c_void,
1084    pub stage: AntiLagStageAMD,
1085    pub frame_index: u64,
1086}
1087
1088impl Default for AntiLagPresentationInfoAMD {
1089    #[inline]
1090    fn default() -> Self {
1091        Self {
1092            s_type: StructureType::ANTI_LAG_PRESENTATION_INFO_AMD,
1093            next: ptr::null_mut(),
1094            stage: AntiLagStageAMD::default(),
1095            frame_index: u64::default(),
1096        }
1097    }
1098}
1099
1100unsafe impl Send for AntiLagPresentationInfoAMD {}
1101unsafe impl Sync for AntiLagPresentationInfoAMD {}
1102
1103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationInfo.html>
1104#[repr(C)]
1105#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1106pub struct ApplicationInfo {
1107    pub s_type: StructureType,
1108    pub next: *const c_void,
1109    pub application_name: *const c_char,
1110    pub application_version: u32,
1111    pub engine_name: *const c_char,
1112    pub engine_version: u32,
1113    pub api_version: u32,
1114}
1115
1116impl Default for ApplicationInfo {
1117    #[inline]
1118    fn default() -> Self {
1119        Self {
1120            s_type: StructureType::APPLICATION_INFO,
1121            next: ptr::null(),
1122            application_name: ptr::null(),
1123            application_version: u32::default(),
1124            engine_name: ptr::null(),
1125            engine_version: u32::default(),
1126            api_version: u32::default(),
1127        }
1128    }
1129}
1130
1131unsafe impl Send for ApplicationInfo {}
1132unsafe impl Sync for ApplicationInfo {}
1133
1134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationParametersEXT.html>
1135#[repr(C)]
1136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1137pub struct ApplicationParametersEXT {
1138    pub s_type: StructureType,
1139    pub next: *const c_void,
1140    pub vendor_id: u32,
1141    pub device_id: u32,
1142    pub key: u32,
1143    pub value: u64,
1144}
1145
1146impl Default for ApplicationParametersEXT {
1147    #[inline]
1148    fn default() -> Self {
1149        Self {
1150            s_type: StructureType::APPLICATION_PARAMETERS_EXT,
1151            next: ptr::null(),
1152            vendor_id: u32::default(),
1153            device_id: u32::default(),
1154            key: u32::default(),
1155            value: u64::default(),
1156        }
1157    }
1158}
1159
1160unsafe impl Send for ApplicationParametersEXT {}
1161unsafe impl Sync for ApplicationParametersEXT {}
1162
1163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription.html>
1164#[repr(C)]
1165#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1166pub struct AttachmentDescription {
1167    pub flags: AttachmentDescriptionFlags,
1168    pub format: Format,
1169    pub samples: SampleCountFlags,
1170    pub load_op: AttachmentLoadOp,
1171    pub store_op: AttachmentStoreOp,
1172    pub stencil_load_op: AttachmentLoadOp,
1173    pub stencil_store_op: AttachmentStoreOp,
1174    pub initial_layout: ImageLayout,
1175    pub final_layout: ImageLayout,
1176}
1177
1178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2.html>
1179#[repr(C)]
1180#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1181pub struct AttachmentDescription2 {
1182    pub s_type: StructureType,
1183    pub next: *const c_void,
1184    pub flags: AttachmentDescriptionFlags,
1185    pub format: Format,
1186    pub samples: SampleCountFlags,
1187    pub load_op: AttachmentLoadOp,
1188    pub store_op: AttachmentStoreOp,
1189    pub stencil_load_op: AttachmentLoadOp,
1190    pub stencil_store_op: AttachmentStoreOp,
1191    pub initial_layout: ImageLayout,
1192    pub final_layout: ImageLayout,
1193}
1194
1195impl Default for AttachmentDescription2 {
1196    #[inline]
1197    fn default() -> Self {
1198        Self {
1199            s_type: StructureType::ATTACHMENT_DESCRIPTION_2,
1200            next: ptr::null(),
1201            flags: AttachmentDescriptionFlags::default(),
1202            format: Format::default(),
1203            samples: SampleCountFlags::default(),
1204            load_op: AttachmentLoadOp::default(),
1205            store_op: AttachmentStoreOp::default(),
1206            stencil_load_op: AttachmentLoadOp::default(),
1207            stencil_store_op: AttachmentStoreOp::default(),
1208            initial_layout: ImageLayout::default(),
1209            final_layout: ImageLayout::default(),
1210        }
1211    }
1212}
1213
1214unsafe impl Send for AttachmentDescription2 {}
1215unsafe impl Sync for AttachmentDescription2 {}
1216
1217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayout.html>
1218#[repr(C)]
1219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1220pub struct AttachmentDescriptionStencilLayout {
1221    pub s_type: StructureType,
1222    pub next: *mut c_void,
1223    pub stencil_initial_layout: ImageLayout,
1224    pub stencil_final_layout: ImageLayout,
1225}
1226
1227impl Default for AttachmentDescriptionStencilLayout {
1228    #[inline]
1229    fn default() -> Self {
1230        Self {
1231            s_type: StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
1232            next: ptr::null_mut(),
1233            stencil_initial_layout: ImageLayout::default(),
1234            stencil_final_layout: ImageLayout::default(),
1235        }
1236    }
1237}
1238
1239unsafe impl Send for AttachmentDescriptionStencilLayout {}
1240unsafe impl Sync for AttachmentDescriptionStencilLayout {}
1241
1242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentFeedbackLoopInfoEXT.html>
1243#[repr(C)]
1244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1245pub struct AttachmentFeedbackLoopInfoEXT {
1246    pub s_type: StructureType,
1247    pub next: *const c_void,
1248    pub feedback_loop_enable: Bool32,
1249}
1250
1251impl Default for AttachmentFeedbackLoopInfoEXT {
1252    #[inline]
1253    fn default() -> Self {
1254        Self {
1255            s_type: StructureType::ATTACHMENT_FEEDBACK_LOOP_INFO_EXT,
1256            next: ptr::null(),
1257            feedback_loop_enable: Bool32::default(),
1258        }
1259    }
1260}
1261
1262unsafe impl Send for AttachmentFeedbackLoopInfoEXT {}
1263unsafe impl Sync for AttachmentFeedbackLoopInfoEXT {}
1264
1265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference.html>
1266#[repr(C)]
1267#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1268pub struct AttachmentReference {
1269    pub attachment: u32,
1270    pub layout: ImageLayout,
1271}
1272
1273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2.html>
1274#[repr(C)]
1275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1276pub struct AttachmentReference2 {
1277    pub s_type: StructureType,
1278    pub next: *const c_void,
1279    pub attachment: u32,
1280    pub layout: ImageLayout,
1281    pub aspect_mask: ImageAspectFlags,
1282}
1283
1284impl Default for AttachmentReference2 {
1285    #[inline]
1286    fn default() -> Self {
1287        Self {
1288            s_type: StructureType::ATTACHMENT_REFERENCE_2,
1289            next: ptr::null(),
1290            attachment: u32::default(),
1291            layout: ImageLayout::default(),
1292            aspect_mask: ImageAspectFlags::default(),
1293        }
1294    }
1295}
1296
1297unsafe impl Send for AttachmentReference2 {}
1298unsafe impl Sync for AttachmentReference2 {}
1299
1300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayout.html>
1301#[repr(C)]
1302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1303pub struct AttachmentReferenceStencilLayout {
1304    pub s_type: StructureType,
1305    pub next: *mut c_void,
1306    pub stencil_layout: ImageLayout,
1307}
1308
1309impl Default for AttachmentReferenceStencilLayout {
1310    #[inline]
1311    fn default() -> Self {
1312        Self {
1313            s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
1314            next: ptr::null_mut(),
1315            stencil_layout: ImageLayout::default(),
1316        }
1317    }
1318}
1319
1320unsafe impl Send for AttachmentReferenceStencilLayout {}
1321unsafe impl Sync for AttachmentReferenceStencilLayout {}
1322
1323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoAMD.html>
1324#[repr(C)]
1325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1326pub struct AttachmentSampleCountInfoAMD {
1327    pub s_type: StructureType,
1328    pub next: *const c_void,
1329    pub color_attachment_count: u32,
1330    pub color_attachment_samples: *const SampleCountFlags,
1331    pub depth_stencil_attachment_samples: SampleCountFlags,
1332}
1333
1334impl Default for AttachmentSampleCountInfoAMD {
1335    #[inline]
1336    fn default() -> Self {
1337        Self {
1338            s_type: StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
1339            next: ptr::null(),
1340            color_attachment_count: u32::default(),
1341            color_attachment_samples: ptr::null(),
1342            depth_stencil_attachment_samples: SampleCountFlags::default(),
1343        }
1344    }
1345}
1346
1347unsafe impl Send for AttachmentSampleCountInfoAMD {}
1348unsafe impl Sync for AttachmentSampleCountInfoAMD {}
1349
1350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleLocationsEXT.html>
1351#[repr(C)]
1352#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1353pub struct AttachmentSampleLocationsEXT {
1354    pub attachment_index: u32,
1355    pub sample_locations_info: SampleLocationsInfoEXT,
1356}
1357
1358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseInStructure.html>
1359#[repr(C)]
1360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1361pub struct BaseInStructure {
1362    pub s_type: StructureType,
1363    pub next: *const BaseInStructure,
1364}
1365
1366impl Default for BaseInStructure {
1367    #[inline]
1368    fn default() -> Self {
1369        Self {
1370            s_type: StructureType::default(),
1371            next: ptr::null(),
1372        }
1373    }
1374}
1375
1376unsafe impl Send for BaseInStructure {}
1377unsafe impl Sync for BaseInStructure {}
1378
1379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseOutStructure.html>
1380#[repr(C)]
1381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1382pub struct BaseOutStructure {
1383    pub s_type: StructureType,
1384    pub next: *mut BaseOutStructure,
1385}
1386
1387impl Default for BaseOutStructure {
1388    #[inline]
1389    fn default() -> Self {
1390        Self {
1391            s_type: StructureType::default(),
1392            next: ptr::null_mut(),
1393        }
1394    }
1395}
1396
1397unsafe impl Send for BaseOutStructure {}
1398unsafe impl Sync for BaseOutStructure {}
1399
1400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1401#[repr(C)]
1402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1403pub struct BindAccelerationStructureMemoryInfoNV {
1404    pub s_type: StructureType,
1405    pub next: *const c_void,
1406    pub acceleration_structure: AccelerationStructureNV,
1407    pub memory: DeviceMemory,
1408    pub memory_offset: DeviceSize,
1409    pub device_index_count: u32,
1410    pub device_indices: *const u32,
1411}
1412
1413impl Default for BindAccelerationStructureMemoryInfoNV {
1414    #[inline]
1415    fn default() -> Self {
1416        Self {
1417            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1418            next: ptr::null(),
1419            acceleration_structure: AccelerationStructureNV::default(),
1420            memory: DeviceMemory::default(),
1421            memory_offset: DeviceSize::default(),
1422            device_index_count: u32::default(),
1423            device_indices: ptr::null(),
1424        }
1425    }
1426}
1427
1428unsafe impl Send for BindAccelerationStructureMemoryInfoNV {}
1429unsafe impl Sync for BindAccelerationStructureMemoryInfoNV {}
1430
1431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1432#[repr(C)]
1433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1434pub struct BindBufferMemoryDeviceGroupInfo {
1435    pub s_type: StructureType,
1436    pub next: *const c_void,
1437    pub device_index_count: u32,
1438    pub device_indices: *const u32,
1439}
1440
1441impl Default for BindBufferMemoryDeviceGroupInfo {
1442    #[inline]
1443    fn default() -> Self {
1444        Self {
1445            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1446            next: ptr::null(),
1447            device_index_count: u32::default(),
1448            device_indices: ptr::null(),
1449        }
1450    }
1451}
1452
1453unsafe impl Send for BindBufferMemoryDeviceGroupInfo {}
1454unsafe impl Sync for BindBufferMemoryDeviceGroupInfo {}
1455
1456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1457#[repr(C)]
1458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1459pub struct BindBufferMemoryInfo {
1460    pub s_type: StructureType,
1461    pub next: *const c_void,
1462    pub buffer: Buffer,
1463    pub memory: DeviceMemory,
1464    pub memory_offset: DeviceSize,
1465}
1466
1467impl Default for BindBufferMemoryInfo {
1468    #[inline]
1469    fn default() -> Self {
1470        Self {
1471            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1472            next: ptr::null(),
1473            buffer: Buffer::default(),
1474            memory: DeviceMemory::default(),
1475            memory_offset: DeviceSize::default(),
1476        }
1477    }
1478}
1479
1480unsafe impl Send for BindBufferMemoryInfo {}
1481unsafe impl Sync for BindBufferMemoryInfo {}
1482
1483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html>
1484#[repr(C)]
1485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1486pub struct BindDataGraphPipelineSessionMemoryInfoARM {
1487    pub s_type: StructureType,
1488    pub next: *const c_void,
1489    pub session: DataGraphPipelineSessionARM,
1490    pub bind_point: DataGraphPipelineSessionBindPointARM,
1491    pub object_index: u32,
1492    pub memory: DeviceMemory,
1493    pub memory_offset: DeviceSize,
1494}
1495
1496impl Default for BindDataGraphPipelineSessionMemoryInfoARM {
1497    #[inline]
1498    fn default() -> Self {
1499        Self {
1500            s_type: StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM,
1501            next: ptr::null(),
1502            session: DataGraphPipelineSessionARM::default(),
1503            bind_point: DataGraphPipelineSessionBindPointARM::default(),
1504            object_index: u32::default(),
1505            memory: DeviceMemory::default(),
1506            memory_offset: DeviceSize::default(),
1507        }
1508    }
1509}
1510
1511unsafe impl Send for BindDataGraphPipelineSessionMemoryInfoARM {}
1512unsafe impl Sync for BindDataGraphPipelineSessionMemoryInfoARM {}
1513
1514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1515#[repr(C)]
1516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1517pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1518    pub s_type: StructureType,
1519    pub next: *const c_void,
1520    pub stage_flags: ShaderStageFlags,
1521    pub layout: PipelineLayout,
1522    pub set: u32,
1523}
1524
1525impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1526    #[inline]
1527    fn default() -> Self {
1528        Self {
1529            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1530            next: ptr::null(),
1531            stage_flags: ShaderStageFlags::default(),
1532            layout: PipelineLayout::default(),
1533            set: u32::default(),
1534        }
1535    }
1536}
1537
1538unsafe impl Send for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1539unsafe impl Sync for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1540
1541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1542#[repr(C)]
1543#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1544pub struct BindDescriptorSetsInfo {
1545    pub s_type: StructureType,
1546    pub next: *const c_void,
1547    pub stage_flags: ShaderStageFlags,
1548    pub layout: PipelineLayout,
1549    pub first_set: u32,
1550    pub descriptor_set_count: u32,
1551    pub descriptor_sets: *const DescriptorSet,
1552    pub dynamic_offset_count: u32,
1553    pub dynamic_offsets: *const u32,
1554}
1555
1556impl Default for BindDescriptorSetsInfo {
1557    #[inline]
1558    fn default() -> Self {
1559        Self {
1560            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1561            next: ptr::null(),
1562            stage_flags: ShaderStageFlags::default(),
1563            layout: PipelineLayout::default(),
1564            first_set: u32::default(),
1565            descriptor_set_count: u32::default(),
1566            descriptor_sets: ptr::null(),
1567            dynamic_offset_count: u32::default(),
1568            dynamic_offsets: ptr::null(),
1569        }
1570    }
1571}
1572
1573unsafe impl Send for BindDescriptorSetsInfo {}
1574unsafe impl Sync for BindDescriptorSetsInfo {}
1575
1576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1577#[repr(C)]
1578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1579pub struct BindImageMemoryDeviceGroupInfo {
1580    pub s_type: StructureType,
1581    pub next: *const c_void,
1582    pub device_index_count: u32,
1583    pub device_indices: *const u32,
1584    pub split_instance_bind_region_count: u32,
1585    pub split_instance_bind_regions: *const Rect2D,
1586}
1587
1588impl Default for BindImageMemoryDeviceGroupInfo {
1589    #[inline]
1590    fn default() -> Self {
1591        Self {
1592            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1593            next: ptr::null(),
1594            device_index_count: u32::default(),
1595            device_indices: ptr::null(),
1596            split_instance_bind_region_count: u32::default(),
1597            split_instance_bind_regions: ptr::null(),
1598        }
1599    }
1600}
1601
1602unsafe impl Send for BindImageMemoryDeviceGroupInfo {}
1603unsafe impl Sync for BindImageMemoryDeviceGroupInfo {}
1604
1605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1606#[repr(C)]
1607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1608pub struct BindImageMemoryInfo {
1609    pub s_type: StructureType,
1610    pub next: *const c_void,
1611    pub image: Image,
1612    pub memory: DeviceMemory,
1613    pub memory_offset: DeviceSize,
1614}
1615
1616impl Default for BindImageMemoryInfo {
1617    #[inline]
1618    fn default() -> Self {
1619        Self {
1620            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1621            next: ptr::null(),
1622            image: Image::default(),
1623            memory: DeviceMemory::default(),
1624            memory_offset: DeviceSize::default(),
1625        }
1626    }
1627}
1628
1629unsafe impl Send for BindImageMemoryInfo {}
1630unsafe impl Sync for BindImageMemoryInfo {}
1631
1632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1633#[repr(C)]
1634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1635pub struct BindImageMemorySwapchainInfoKHR {
1636    pub s_type: StructureType,
1637    pub next: *const c_void,
1638    pub swapchain: SwapchainKHR,
1639    pub image_index: u32,
1640}
1641
1642impl Default for BindImageMemorySwapchainInfoKHR {
1643    #[inline]
1644    fn default() -> Self {
1645        Self {
1646            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1647            next: ptr::null(),
1648            swapchain: SwapchainKHR::default(),
1649            image_index: u32::default(),
1650        }
1651    }
1652}
1653
1654unsafe impl Send for BindImageMemorySwapchainInfoKHR {}
1655unsafe impl Sync for BindImageMemorySwapchainInfoKHR {}
1656
1657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1658#[repr(C)]
1659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1660pub struct BindImagePlaneMemoryInfo {
1661    pub s_type: StructureType,
1662    pub next: *const c_void,
1663    pub plane_aspect: ImageAspectFlags,
1664}
1665
1666impl Default for BindImagePlaneMemoryInfo {
1667    #[inline]
1668    fn default() -> Self {
1669        Self {
1670            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1671            next: ptr::null(),
1672            plane_aspect: ImageAspectFlags::default(),
1673        }
1674    }
1675}
1676
1677unsafe impl Send for BindImagePlaneMemoryInfo {}
1678unsafe impl Sync for BindImagePlaneMemoryInfo {}
1679
1680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1681#[repr(C)]
1682#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1683pub struct BindIndexBufferIndirectCommandEXT {
1684    pub buffer_address: DeviceAddress,
1685    pub size: u32,
1686    pub index_type: IndexType,
1687}
1688
1689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1690#[repr(C)]
1691#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1692pub struct BindIndexBufferIndirectCommandNV {
1693    pub buffer_address: DeviceAddress,
1694    pub size: u32,
1695    pub index_type: IndexType,
1696}
1697
1698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1699#[repr(C)]
1700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1701pub struct BindMemoryStatus {
1702    pub s_type: StructureType,
1703    pub next: *const c_void,
1704    pub result: *mut Result,
1705}
1706
1707impl Default for BindMemoryStatus {
1708    #[inline]
1709    fn default() -> Self {
1710        Self {
1711            s_type: StructureType::BIND_MEMORY_STATUS,
1712            next: ptr::null(),
1713            result: ptr::null_mut(),
1714        }
1715    }
1716}
1717
1718unsafe impl Send for BindMemoryStatus {}
1719unsafe impl Sync for BindMemoryStatus {}
1720
1721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1722#[repr(C)]
1723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1724pub struct BindPipelineIndirectCommandNV {
1725    pub pipeline_address: DeviceAddress,
1726}
1727
1728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1729#[repr(C)]
1730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1731pub struct BindShaderGroupIndirectCommandNV {
1732    pub group_index: u32,
1733}
1734
1735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1736#[repr(C)]
1737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1738pub struct BindSparseInfo {
1739    pub s_type: StructureType,
1740    pub next: *const c_void,
1741    pub wait_semaphore_count: u32,
1742    pub wait_semaphores: *const Semaphore,
1743    pub buffer_bind_count: u32,
1744    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1745    pub image_opaque_bind_count: u32,
1746    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1747    pub image_bind_count: u32,
1748    pub image_binds: *const SparseImageMemoryBindInfo,
1749    pub signal_semaphore_count: u32,
1750    pub signal_semaphores: *const Semaphore,
1751}
1752
1753impl Default for BindSparseInfo {
1754    #[inline]
1755    fn default() -> Self {
1756        Self {
1757            s_type: StructureType::BIND_SPARSE_INFO,
1758            next: ptr::null(),
1759            wait_semaphore_count: u32::default(),
1760            wait_semaphores: ptr::null(),
1761            buffer_bind_count: u32::default(),
1762            buffer_binds: ptr::null(),
1763            image_opaque_bind_count: u32::default(),
1764            image_opaque_binds: ptr::null(),
1765            image_bind_count: u32::default(),
1766            image_binds: ptr::null(),
1767            signal_semaphore_count: u32::default(),
1768            signal_semaphores: ptr::null(),
1769        }
1770    }
1771}
1772
1773unsafe impl Send for BindSparseInfo {}
1774unsafe impl Sync for BindSparseInfo {}
1775
1776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html>
1777#[repr(C)]
1778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1779pub struct BindTensorMemoryInfoARM {
1780    pub s_type: StructureType,
1781    pub next: *const c_void,
1782    pub tensor: TensorARM,
1783    pub memory: DeviceMemory,
1784    pub memory_offset: DeviceSize,
1785}
1786
1787impl Default for BindTensorMemoryInfoARM {
1788    #[inline]
1789    fn default() -> Self {
1790        Self {
1791            s_type: StructureType::BIND_TENSOR_MEMORY_INFO_ARM,
1792            next: ptr::null(),
1793            tensor: TensorARM::default(),
1794            memory: DeviceMemory::default(),
1795            memory_offset: DeviceSize::default(),
1796        }
1797    }
1798}
1799
1800unsafe impl Send for BindTensorMemoryInfoARM {}
1801unsafe impl Sync for BindTensorMemoryInfoARM {}
1802
1803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1804#[repr(C)]
1805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1806pub struct BindVertexBufferIndirectCommandEXT {
1807    pub buffer_address: DeviceAddress,
1808    pub size: u32,
1809    pub stride: u32,
1810}
1811
1812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1813#[repr(C)]
1814#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1815pub struct BindVertexBufferIndirectCommandNV {
1816    pub buffer_address: DeviceAddress,
1817    pub size: u32,
1818    pub stride: u32,
1819}
1820
1821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1822#[repr(C)]
1823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1824pub struct BindVideoSessionMemoryInfoKHR {
1825    pub s_type: StructureType,
1826    pub next: *const c_void,
1827    pub memory_bind_index: u32,
1828    pub memory: DeviceMemory,
1829    pub memory_offset: DeviceSize,
1830    pub memory_size: DeviceSize,
1831}
1832
1833impl Default for BindVideoSessionMemoryInfoKHR {
1834    #[inline]
1835    fn default() -> Self {
1836        Self {
1837            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1838            next: ptr::null(),
1839            memory_bind_index: u32::default(),
1840            memory: DeviceMemory::default(),
1841            memory_offset: DeviceSize::default(),
1842            memory_size: DeviceSize::default(),
1843        }
1844    }
1845}
1846
1847unsafe impl Send for BindVideoSessionMemoryInfoKHR {}
1848unsafe impl Sync for BindVideoSessionMemoryInfoKHR {}
1849
1850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1851#[repr(C)]
1852#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1853pub struct BlitImageCubicWeightsInfoQCOM {
1854    pub s_type: StructureType,
1855    pub next: *const c_void,
1856    pub cubic_weights: CubicFilterWeightsQCOM,
1857}
1858
1859impl Default for BlitImageCubicWeightsInfoQCOM {
1860    #[inline]
1861    fn default() -> Self {
1862        Self {
1863            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1864            next: ptr::null(),
1865            cubic_weights: CubicFilterWeightsQCOM::default(),
1866        }
1867    }
1868}
1869
1870unsafe impl Send for BlitImageCubicWeightsInfoQCOM {}
1871unsafe impl Sync for BlitImageCubicWeightsInfoQCOM {}
1872
1873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1874#[repr(C)]
1875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1876pub struct BlitImageInfo2 {
1877    pub s_type: StructureType,
1878    pub next: *const c_void,
1879    pub src_image: Image,
1880    pub src_image_layout: ImageLayout,
1881    pub dst_image: Image,
1882    pub dst_image_layout: ImageLayout,
1883    pub region_count: u32,
1884    pub regions: *const ImageBlit2,
1885    pub filter: Filter,
1886}
1887
1888impl Default for BlitImageInfo2 {
1889    #[inline]
1890    fn default() -> Self {
1891        Self {
1892            s_type: StructureType::BLIT_IMAGE_INFO_2,
1893            next: ptr::null(),
1894            src_image: Image::default(),
1895            src_image_layout: ImageLayout::default(),
1896            dst_image: Image::default(),
1897            dst_image_layout: ImageLayout::default(),
1898            region_count: u32::default(),
1899            regions: ptr::null(),
1900            filter: Filter::default(),
1901        }
1902    }
1903}
1904
1905unsafe impl Send for BlitImageInfo2 {}
1906unsafe impl Sync for BlitImageInfo2 {}
1907
1908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1909#[repr(C)]
1910#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1911pub struct BufferCaptureDescriptorDataInfoEXT {
1912    pub s_type: StructureType,
1913    pub next: *const c_void,
1914    pub buffer: Buffer,
1915}
1916
1917impl Default for BufferCaptureDescriptorDataInfoEXT {
1918    #[inline]
1919    fn default() -> Self {
1920        Self {
1921            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1922            next: ptr::null(),
1923            buffer: Buffer::default(),
1924        }
1925    }
1926}
1927
1928unsafe impl Send for BufferCaptureDescriptorDataInfoEXT {}
1929unsafe impl Sync for BufferCaptureDescriptorDataInfoEXT {}
1930
1931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1932#[repr(C)]
1933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1934pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1935    pub s_type: StructureType,
1936    pub next: *const c_void,
1937    pub collection: BufferCollectionFUCHSIA,
1938    pub index: u32,
1939}
1940
1941impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1942    #[inline]
1943    fn default() -> Self {
1944        Self {
1945            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1946            next: ptr::null(),
1947            collection: BufferCollectionFUCHSIA::default(),
1948            index: u32::default(),
1949        }
1950    }
1951}
1952
1953unsafe impl Send for BufferCollectionBufferCreateInfoFUCHSIA {}
1954unsafe impl Sync for BufferCollectionBufferCreateInfoFUCHSIA {}
1955
1956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
1957#[repr(C)]
1958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1959pub struct BufferCollectionConstraintsInfoFUCHSIA {
1960    pub s_type: StructureType,
1961    pub next: *const c_void,
1962    pub min_buffer_count: u32,
1963    pub max_buffer_count: u32,
1964    pub min_buffer_count_for_camping: u32,
1965    pub min_buffer_count_for_dedicated_slack: u32,
1966    pub min_buffer_count_for_shared_slack: u32,
1967}
1968
1969impl Default for BufferCollectionConstraintsInfoFUCHSIA {
1970    #[inline]
1971    fn default() -> Self {
1972        Self {
1973            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
1974            next: ptr::null(),
1975            min_buffer_count: u32::default(),
1976            max_buffer_count: u32::default(),
1977            min_buffer_count_for_camping: u32::default(),
1978            min_buffer_count_for_dedicated_slack: u32::default(),
1979            min_buffer_count_for_shared_slack: u32::default(),
1980        }
1981    }
1982}
1983
1984unsafe impl Send for BufferCollectionConstraintsInfoFUCHSIA {}
1985unsafe impl Sync for BufferCollectionConstraintsInfoFUCHSIA {}
1986
1987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
1988#[repr(C)]
1989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1990pub struct BufferCollectionCreateInfoFUCHSIA {
1991    pub s_type: StructureType,
1992    pub next: *const c_void,
1993    pub collection_token: zx_handle_t,
1994}
1995
1996impl Default for BufferCollectionCreateInfoFUCHSIA {
1997    #[inline]
1998    fn default() -> Self {
1999        Self {
2000            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
2001            next: ptr::null(),
2002            collection_token: zx_handle_t::default(),
2003        }
2004    }
2005}
2006
2007unsafe impl Send for BufferCollectionCreateInfoFUCHSIA {}
2008unsafe impl Sync for BufferCollectionCreateInfoFUCHSIA {}
2009
2010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
2011#[repr(C)]
2012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2013pub struct BufferCollectionImageCreateInfoFUCHSIA {
2014    pub s_type: StructureType,
2015    pub next: *const c_void,
2016    pub collection: BufferCollectionFUCHSIA,
2017    pub index: u32,
2018}
2019
2020impl Default for BufferCollectionImageCreateInfoFUCHSIA {
2021    #[inline]
2022    fn default() -> Self {
2023        Self {
2024            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
2025            next: ptr::null(),
2026            collection: BufferCollectionFUCHSIA::default(),
2027            index: u32::default(),
2028        }
2029    }
2030}
2031
2032unsafe impl Send for BufferCollectionImageCreateInfoFUCHSIA {}
2033unsafe impl Sync for BufferCollectionImageCreateInfoFUCHSIA {}
2034
2035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
2036#[repr(C)]
2037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2038pub struct BufferCollectionPropertiesFUCHSIA {
2039    pub s_type: StructureType,
2040    pub next: *mut c_void,
2041    pub memory_type_bits: u32,
2042    pub buffer_count: u32,
2043    pub create_info_index: u32,
2044    pub sysmem_pixel_format: u64,
2045    pub format_features: FormatFeatureFlags,
2046    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
2047    pub sampler_ycbcr_conversion_components: ComponentMapping,
2048    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
2049    pub suggested_ycbcr_range: SamplerYcbcrRange,
2050    pub suggested_x_chroma_offset: ChromaLocation,
2051    pub suggested_y_chroma_offset: ChromaLocation,
2052}
2053
2054impl Default for BufferCollectionPropertiesFUCHSIA {
2055    #[inline]
2056    fn default() -> Self {
2057        Self {
2058            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
2059            next: ptr::null_mut(),
2060            memory_type_bits: u32::default(),
2061            buffer_count: u32::default(),
2062            create_info_index: u32::default(),
2063            sysmem_pixel_format: u64::default(),
2064            format_features: FormatFeatureFlags::default(),
2065            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
2066            sampler_ycbcr_conversion_components: ComponentMapping::default(),
2067            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
2068            suggested_ycbcr_range: SamplerYcbcrRange::default(),
2069            suggested_x_chroma_offset: ChromaLocation::default(),
2070            suggested_y_chroma_offset: ChromaLocation::default(),
2071        }
2072    }
2073}
2074
2075unsafe impl Send for BufferCollectionPropertiesFUCHSIA {}
2076unsafe impl Sync for BufferCollectionPropertiesFUCHSIA {}
2077
2078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
2079#[repr(C)]
2080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2081pub struct BufferConstraintsInfoFUCHSIA {
2082    pub s_type: StructureType,
2083    pub next: *const c_void,
2084    pub create_info: BufferCreateInfo,
2085    pub required_format_features: FormatFeatureFlags,
2086    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
2087}
2088
2089impl Default for BufferConstraintsInfoFUCHSIA {
2090    #[inline]
2091    fn default() -> Self {
2092        Self {
2093            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
2094            next: ptr::null(),
2095            create_info: BufferCreateInfo::default(),
2096            required_format_features: FormatFeatureFlags::default(),
2097            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
2098        }
2099    }
2100}
2101
2102unsafe impl Send for BufferConstraintsInfoFUCHSIA {}
2103unsafe impl Sync for BufferConstraintsInfoFUCHSIA {}
2104
2105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
2106#[repr(C)]
2107#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2108pub struct BufferCopy {
2109    pub src_offset: DeviceSize,
2110    pub dst_offset: DeviceSize,
2111    pub size: DeviceSize,
2112}
2113
2114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
2115#[repr(C)]
2116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2117pub struct BufferCopy2 {
2118    pub s_type: StructureType,
2119    pub next: *const c_void,
2120    pub src_offset: DeviceSize,
2121    pub dst_offset: DeviceSize,
2122    pub size: DeviceSize,
2123}
2124
2125impl Default for BufferCopy2 {
2126    #[inline]
2127    fn default() -> Self {
2128        Self {
2129            s_type: StructureType::BUFFER_COPY_2,
2130            next: ptr::null(),
2131            src_offset: DeviceSize::default(),
2132            dst_offset: DeviceSize::default(),
2133            size: DeviceSize::default(),
2134        }
2135    }
2136}
2137
2138unsafe impl Send for BufferCopy2 {}
2139unsafe impl Sync for BufferCopy2 {}
2140
2141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
2142#[repr(C)]
2143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2144pub struct BufferCreateInfo {
2145    pub s_type: StructureType,
2146    pub next: *const c_void,
2147    pub flags: BufferCreateFlags,
2148    pub size: DeviceSize,
2149    pub usage: BufferUsageFlags,
2150    pub sharing_mode: SharingMode,
2151    pub queue_family_index_count: u32,
2152    pub queue_family_indices: *const u32,
2153}
2154
2155impl Default for BufferCreateInfo {
2156    #[inline]
2157    fn default() -> Self {
2158        Self {
2159            s_type: StructureType::BUFFER_CREATE_INFO,
2160            next: ptr::null(),
2161            flags: BufferCreateFlags::default(),
2162            size: DeviceSize::default(),
2163            usage: BufferUsageFlags::default(),
2164            sharing_mode: SharingMode::default(),
2165            queue_family_index_count: u32::default(),
2166            queue_family_indices: ptr::null(),
2167        }
2168    }
2169}
2170
2171unsafe impl Send for BufferCreateInfo {}
2172unsafe impl Sync for BufferCreateInfo {}
2173
2174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
2175#[repr(C)]
2176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2177pub struct BufferDeviceAddressCreateInfoEXT {
2178    pub s_type: StructureType,
2179    pub next: *const c_void,
2180    pub device_address: DeviceAddress,
2181}
2182
2183impl Default for BufferDeviceAddressCreateInfoEXT {
2184    #[inline]
2185    fn default() -> Self {
2186        Self {
2187            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
2188            next: ptr::null(),
2189            device_address: DeviceAddress::default(),
2190        }
2191    }
2192}
2193
2194unsafe impl Send for BufferDeviceAddressCreateInfoEXT {}
2195unsafe impl Sync for BufferDeviceAddressCreateInfoEXT {}
2196
2197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
2198#[repr(C)]
2199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2200pub struct BufferDeviceAddressInfo {
2201    pub s_type: StructureType,
2202    pub next: *const c_void,
2203    pub buffer: Buffer,
2204}
2205
2206impl Default for BufferDeviceAddressInfo {
2207    #[inline]
2208    fn default() -> Self {
2209        Self {
2210            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
2211            next: ptr::null(),
2212            buffer: Buffer::default(),
2213        }
2214    }
2215}
2216
2217unsafe impl Send for BufferDeviceAddressInfo {}
2218unsafe impl Sync for BufferDeviceAddressInfo {}
2219
2220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
2221#[repr(C)]
2222#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2223pub struct BufferImageCopy {
2224    pub buffer_offset: DeviceSize,
2225    pub buffer_row_length: u32,
2226    pub buffer_image_height: u32,
2227    pub image_subresource: ImageSubresourceLayers,
2228    pub image_offset: Offset3D,
2229    pub image_extent: Extent3D,
2230}
2231
2232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
2233#[repr(C)]
2234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2235pub struct BufferImageCopy2 {
2236    pub s_type: StructureType,
2237    pub next: *const c_void,
2238    pub buffer_offset: DeviceSize,
2239    pub buffer_row_length: u32,
2240    pub buffer_image_height: u32,
2241    pub image_subresource: ImageSubresourceLayers,
2242    pub image_offset: Offset3D,
2243    pub image_extent: Extent3D,
2244}
2245
2246impl Default for BufferImageCopy2 {
2247    #[inline]
2248    fn default() -> Self {
2249        Self {
2250            s_type: StructureType::BUFFER_IMAGE_COPY_2,
2251            next: ptr::null(),
2252            buffer_offset: DeviceSize::default(),
2253            buffer_row_length: u32::default(),
2254            buffer_image_height: u32::default(),
2255            image_subresource: ImageSubresourceLayers::default(),
2256            image_offset: Offset3D::default(),
2257            image_extent: Extent3D::default(),
2258        }
2259    }
2260}
2261
2262unsafe impl Send for BufferImageCopy2 {}
2263unsafe impl Sync for BufferImageCopy2 {}
2264
2265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
2266#[repr(C)]
2267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2268pub struct BufferMemoryBarrier {
2269    pub s_type: StructureType,
2270    pub next: *const c_void,
2271    pub src_access_mask: AccessFlags,
2272    pub dst_access_mask: AccessFlags,
2273    pub src_queue_family_index: u32,
2274    pub dst_queue_family_index: u32,
2275    pub buffer: Buffer,
2276    pub offset: DeviceSize,
2277    pub size: DeviceSize,
2278}
2279
2280impl Default for BufferMemoryBarrier {
2281    #[inline]
2282    fn default() -> Self {
2283        Self {
2284            s_type: StructureType::BUFFER_MEMORY_BARRIER,
2285            next: ptr::null(),
2286            src_access_mask: AccessFlags::default(),
2287            dst_access_mask: AccessFlags::default(),
2288            src_queue_family_index: u32::default(),
2289            dst_queue_family_index: u32::default(),
2290            buffer: Buffer::default(),
2291            offset: DeviceSize::default(),
2292            size: DeviceSize::default(),
2293        }
2294    }
2295}
2296
2297unsafe impl Send for BufferMemoryBarrier {}
2298unsafe impl Sync for BufferMemoryBarrier {}
2299
2300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
2301#[repr(C)]
2302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2303pub struct BufferMemoryBarrier2 {
2304    pub s_type: StructureType,
2305    pub next: *const c_void,
2306    pub src_stage_mask: PipelineStageFlags2,
2307    pub src_access_mask: AccessFlags2,
2308    pub dst_stage_mask: PipelineStageFlags2,
2309    pub dst_access_mask: AccessFlags2,
2310    pub src_queue_family_index: u32,
2311    pub dst_queue_family_index: u32,
2312    pub buffer: Buffer,
2313    pub offset: DeviceSize,
2314    pub size: DeviceSize,
2315}
2316
2317impl Default for BufferMemoryBarrier2 {
2318    #[inline]
2319    fn default() -> Self {
2320        Self {
2321            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2322            next: ptr::null(),
2323            src_stage_mask: PipelineStageFlags2::default(),
2324            src_access_mask: AccessFlags2::default(),
2325            dst_stage_mask: PipelineStageFlags2::default(),
2326            dst_access_mask: AccessFlags2::default(),
2327            src_queue_family_index: u32::default(),
2328            dst_queue_family_index: u32::default(),
2329            buffer: Buffer::default(),
2330            offset: DeviceSize::default(),
2331            size: DeviceSize::default(),
2332        }
2333    }
2334}
2335
2336unsafe impl Send for BufferMemoryBarrier2 {}
2337unsafe impl Sync for BufferMemoryBarrier2 {}
2338
2339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2340#[repr(C)]
2341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2342pub struct BufferMemoryRequirementsInfo2 {
2343    pub s_type: StructureType,
2344    pub next: *const c_void,
2345    pub buffer: Buffer,
2346}
2347
2348impl Default for BufferMemoryRequirementsInfo2 {
2349    #[inline]
2350    fn default() -> Self {
2351        Self {
2352            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2353            next: ptr::null(),
2354            buffer: Buffer::default(),
2355        }
2356    }
2357}
2358
2359unsafe impl Send for BufferMemoryRequirementsInfo2 {}
2360unsafe impl Sync for BufferMemoryRequirementsInfo2 {}
2361
2362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2363#[repr(C)]
2364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2365pub struct BufferOpaqueCaptureAddressCreateInfo {
2366    pub s_type: StructureType,
2367    pub next: *const c_void,
2368    pub opaque_capture_address: u64,
2369}
2370
2371impl Default for BufferOpaqueCaptureAddressCreateInfo {
2372    #[inline]
2373    fn default() -> Self {
2374        Self {
2375            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2376            next: ptr::null(),
2377            opaque_capture_address: u64::default(),
2378        }
2379    }
2380}
2381
2382unsafe impl Send for BufferOpaqueCaptureAddressCreateInfo {}
2383unsafe impl Sync for BufferOpaqueCaptureAddressCreateInfo {}
2384
2385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2386#[repr(C)]
2387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2388pub struct BufferUsageFlags2CreateInfo {
2389    pub s_type: StructureType,
2390    pub next: *const c_void,
2391    pub usage: BufferUsageFlags2,
2392}
2393
2394impl Default for BufferUsageFlags2CreateInfo {
2395    #[inline]
2396    fn default() -> Self {
2397        Self {
2398            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2399            next: ptr::null(),
2400            usage: BufferUsageFlags2::default(),
2401        }
2402    }
2403}
2404
2405unsafe impl Send for BufferUsageFlags2CreateInfo {}
2406unsafe impl Sync for BufferUsageFlags2CreateInfo {}
2407
2408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2409#[repr(C)]
2410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2411pub struct BufferViewCreateInfo {
2412    pub s_type: StructureType,
2413    pub next: *const c_void,
2414    pub flags: BufferViewCreateFlags,
2415    pub buffer: Buffer,
2416    pub format: Format,
2417    pub offset: DeviceSize,
2418    pub range: DeviceSize,
2419}
2420
2421impl Default for BufferViewCreateInfo {
2422    #[inline]
2423    fn default() -> Self {
2424        Self {
2425            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2426            next: ptr::null(),
2427            flags: BufferViewCreateFlags::default(),
2428            buffer: Buffer::default(),
2429            format: Format::default(),
2430            offset: DeviceSize::default(),
2431            range: DeviceSize::default(),
2432        }
2433    }
2434}
2435
2436unsafe impl Send for BufferViewCreateInfo {}
2437unsafe impl Sync for BufferViewCreateInfo {}
2438
2439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2440#[repr(C)]
2441#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2442pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2443    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2444    pub arg_count: u32,
2445    pub arg_data: StridedDeviceAddressNV,
2446}
2447
2448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2449#[repr(C)]
2450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2451pub struct BuildPartitionedAccelerationStructureInfoNV {
2452    pub s_type: StructureType,
2453    pub next: *mut c_void,
2454    pub input: PartitionedAccelerationStructureInstancesInputNV,
2455    pub src_acceleration_structure_data: DeviceAddress,
2456    pub dst_acceleration_structure_data: DeviceAddress,
2457    pub scratch_data: DeviceAddress,
2458    pub src_infos: DeviceAddress,
2459    pub src_infos_count: DeviceAddress,
2460}
2461
2462impl Default for BuildPartitionedAccelerationStructureInfoNV {
2463    #[inline]
2464    fn default() -> Self {
2465        Self {
2466            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2467            next: ptr::null_mut(),
2468            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2469            src_acceleration_structure_data: DeviceAddress::default(),
2470            dst_acceleration_structure_data: DeviceAddress::default(),
2471            scratch_data: DeviceAddress::default(),
2472            src_infos: DeviceAddress::default(),
2473            src_infos_count: DeviceAddress::default(),
2474        }
2475    }
2476}
2477
2478unsafe impl Send for BuildPartitionedAccelerationStructureInfoNV {}
2479unsafe impl Sync for BuildPartitionedAccelerationStructureInfoNV {}
2480
2481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2482#[repr(C)]
2483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2484pub struct CalibratedTimestampInfoKHR {
2485    pub s_type: StructureType,
2486    pub next: *const c_void,
2487    pub time_domain: TimeDomainKHR,
2488}
2489
2490impl Default for CalibratedTimestampInfoKHR {
2491    #[inline]
2492    fn default() -> Self {
2493        Self {
2494            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2495            next: ptr::null(),
2496            time_domain: TimeDomainKHR::default(),
2497        }
2498    }
2499}
2500
2501unsafe impl Send for CalibratedTimestampInfoKHR {}
2502unsafe impl Sync for CalibratedTimestampInfoKHR {}
2503
2504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2505#[repr(C)]
2506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2507pub struct CheckpointData2NV {
2508    pub s_type: StructureType,
2509    pub next: *mut c_void,
2510    pub stage: PipelineStageFlags2,
2511    pub checkpoint_marker: *mut c_void,
2512}
2513
2514impl Default for CheckpointData2NV {
2515    #[inline]
2516    fn default() -> Self {
2517        Self {
2518            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2519            next: ptr::null_mut(),
2520            stage: PipelineStageFlags2::default(),
2521            checkpoint_marker: ptr::null_mut(),
2522        }
2523    }
2524}
2525
2526unsafe impl Send for CheckpointData2NV {}
2527unsafe impl Sync for CheckpointData2NV {}
2528
2529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2530#[repr(C)]
2531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2532pub struct CheckpointDataNV {
2533    pub s_type: StructureType,
2534    pub next: *mut c_void,
2535    pub stage: PipelineStageFlags,
2536    pub checkpoint_marker: *mut c_void,
2537}
2538
2539impl Default for CheckpointDataNV {
2540    #[inline]
2541    fn default() -> Self {
2542        Self {
2543            s_type: StructureType::CHECKPOINT_DATA_NV,
2544            next: ptr::null_mut(),
2545            stage: PipelineStageFlags::default(),
2546            checkpoint_marker: ptr::null_mut(),
2547        }
2548    }
2549}
2550
2551unsafe impl Send for CheckpointDataNV {}
2552unsafe impl Sync for CheckpointDataNV {}
2553
2554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2555#[repr(C)]
2556#[derive(Copy, Clone, Default, Debug)]
2557pub struct ClearAttachment {
2558    pub aspect_mask: ImageAspectFlags,
2559    pub color_attachment: u32,
2560    pub clear_value: ClearValue,
2561}
2562
2563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2564#[repr(C)]
2565#[derive(Copy, Clone, Default, Debug, PartialEq)]
2566pub struct ClearDepthStencilValue {
2567    pub depth: f32,
2568    pub stencil: u32,
2569}
2570
2571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2572#[repr(C)]
2573#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2574pub struct ClearRect {
2575    pub rect: Rect2D,
2576    pub base_array_layer: u32,
2577    pub layer_count: u32,
2578}
2579
2580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2581#[repr(C)]
2582#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2583pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2584    pub cluster_references_count: u32,
2585    pub cluster_references_stride: u32,
2586    pub cluster_references: DeviceAddress,
2587}
2588
2589bitfields32! {
2590    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2591        (triangle_count, with_triangle_count)[0 .. 9],
2592        (vertex_count, with_vertex_count)[9 .. 18],
2593        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2594        (index_type, with_index_type)[24 .. 28],
2595        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2596    }
2597}
2598
2599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2600#[repr(C)]
2601#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2602pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2603    pub cluster_id: u32,
2604    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2605    pub base_geometry_index_and_geometry_flags:
2606        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2607    pub index_buffer_stride: u16,
2608    pub vertex_buffer_stride: u16,
2609    pub geometry_index_and_flags_buffer_stride: u16,
2610    pub opacity_micromap_index_buffer_stride: u16,
2611    pub index_buffer: DeviceAddress,
2612    pub vertex_buffer: DeviceAddress,
2613    pub geometry_index_and_flags_buffer: DeviceAddress,
2614    pub opacity_micromap_array: DeviceAddress,
2615    pub opacity_micromap_index_buffer: DeviceAddress,
2616    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2617}
2618
2619bitfields32! {
2620    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2621        (triangle_count, with_triangle_count)[0 .. 9],
2622        (vertex_count, with_vertex_count)[9 .. 18],
2623        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2624        (index_type, with_index_type)[24 .. 28],
2625        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2626    }
2627}
2628
2629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2630#[repr(C)]
2631#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2632pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2633    pub cluster_id: u32,
2634    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2635    pub base_geometry_index_and_geometry_flags:
2636        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2637    pub index_buffer_stride: u16,
2638    pub vertex_buffer_stride: u16,
2639    pub geometry_index_and_flags_buffer_stride: u16,
2640    pub opacity_micromap_index_buffer_stride: u16,
2641    pub index_buffer: DeviceAddress,
2642    pub vertex_buffer: DeviceAddress,
2643    pub geometry_index_and_flags_buffer: DeviceAddress,
2644    pub opacity_micromap_array: DeviceAddress,
2645    pub opacity_micromap_index_buffer: DeviceAddress,
2646    pub instantiation_bounding_box_limit: DeviceAddress,
2647    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2648}
2649
2650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2651#[repr(C)]
2652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2653pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2654    pub s_type: StructureType,
2655    pub next: *mut c_void,
2656    pub max_total_cluster_count: u32,
2657    pub max_cluster_count_per_acceleration_structure: u32,
2658}
2659
2660impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2661    #[inline]
2662    fn default() -> Self {
2663        Self {
2664            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2665            next: ptr::null_mut(),
2666            max_total_cluster_count: u32::default(),
2667            max_cluster_count_per_acceleration_structure: u32::default(),
2668        }
2669    }
2670}
2671
2672unsafe impl Send for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2673unsafe impl Sync for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2674
2675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2676#[repr(C)]
2677#[derive(Copy, Clone, Debug)]
2678pub struct ClusterAccelerationStructureCommandsInfoNV {
2679    pub s_type: StructureType,
2680    pub next: *mut c_void,
2681    pub input: ClusterAccelerationStructureInputInfoNV,
2682    pub dst_implicit_data: DeviceAddress,
2683    pub scratch_data: DeviceAddress,
2684    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2685    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2686    pub src_infos_array: StridedDeviceAddressRegionKHR,
2687    pub src_infos_count: DeviceAddress,
2688    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2689}
2690
2691impl Default for ClusterAccelerationStructureCommandsInfoNV {
2692    #[inline]
2693    fn default() -> Self {
2694        Self {
2695            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2696            next: ptr::null_mut(),
2697            input: ClusterAccelerationStructureInputInfoNV::default(),
2698            dst_implicit_data: DeviceAddress::default(),
2699            scratch_data: DeviceAddress::default(),
2700            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2701            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2702            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2703            src_infos_count: DeviceAddress::default(),
2704            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2705            ),
2706        }
2707    }
2708}
2709
2710unsafe impl Send for ClusterAccelerationStructureCommandsInfoNV {}
2711unsafe impl Sync for ClusterAccelerationStructureCommandsInfoNV {}
2712
2713bitfields32! {
2714    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2715        (geometry_index, with_geometry_index)[0 .. 24],
2716        (reserved, with_reserved)[24 .. 29],
2717        (geometry_flags, with_geometry_flags)[29 .. 32],
2718    }
2719}
2720
2721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2722#[repr(C)]
2723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2724pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2725    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2726}
2727
2728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html>
2729#[repr(C)]
2730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2731pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNV {
2732    pub cluster_template_address: DeviceAddress,
2733}
2734
2735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2736#[repr(C)]
2737#[derive(Copy, Clone, Debug)]
2738pub struct ClusterAccelerationStructureInputInfoNV {
2739    pub s_type: StructureType,
2740    pub next: *mut c_void,
2741    pub max_acceleration_structure_count: u32,
2742    pub flags: BuildAccelerationStructureFlagsKHR,
2743    pub op_type: ClusterAccelerationStructureOpTypeNV,
2744    pub op_mode: ClusterAccelerationStructureOpModeNV,
2745    pub op_input: ClusterAccelerationStructureOpInputNV,
2746}
2747
2748impl Default for ClusterAccelerationStructureInputInfoNV {
2749    #[inline]
2750    fn default() -> Self {
2751        Self {
2752            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2753            next: ptr::null_mut(),
2754            max_acceleration_structure_count: u32::default(),
2755            flags: BuildAccelerationStructureFlagsKHR::default(),
2756            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2757            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2758            op_input: ClusterAccelerationStructureOpInputNV::default(),
2759        }
2760    }
2761}
2762
2763unsafe impl Send for ClusterAccelerationStructureInputInfoNV {}
2764unsafe impl Sync for ClusterAccelerationStructureInputInfoNV {}
2765
2766bitfields32! {
2767    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2768        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2769        (reserved, with_reserved)[24 .. 32],
2770    }
2771}
2772
2773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2774#[repr(C)]
2775#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2776pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2777    pub cluster_id_offset: u32,
2778    pub cluster_template_address: DeviceAddress,
2779    pub vertex_buffer: StridedDeviceAddressNV,
2780    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2781}
2782
2783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2784#[repr(C)]
2785#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2786pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2787    pub src_acceleration_structure: DeviceAddress,
2788}
2789
2790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2791#[repr(C)]
2792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2793pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2794    pub s_type: StructureType,
2795    pub next: *mut c_void,
2796    pub type_: ClusterAccelerationStructureTypeNV,
2797    pub no_move_overlap: Bool32,
2798    pub max_moved_bytes: DeviceSize,
2799}
2800
2801impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2802    #[inline]
2803    fn default() -> Self {
2804        Self {
2805            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2806            next: ptr::null_mut(),
2807            type_: ClusterAccelerationStructureTypeNV::default(),
2808            no_move_overlap: Bool32::default(),
2809            max_moved_bytes: DeviceSize::default(),
2810        }
2811    }
2812}
2813
2814unsafe impl Send for ClusterAccelerationStructureMoveObjectsInputNV {}
2815unsafe impl Sync for ClusterAccelerationStructureMoveObjectsInputNV {}
2816
2817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2818#[repr(C)]
2819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2820pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2821    pub s_type: StructureType,
2822    pub next: *mut c_void,
2823    pub vertex_format: Format,
2824    pub max_geometry_index_value: u32,
2825    pub max_cluster_unique_geometry_count: u32,
2826    pub max_cluster_triangle_count: u32,
2827    pub max_cluster_vertex_count: u32,
2828    pub max_total_triangle_count: u32,
2829    pub max_total_vertex_count: u32,
2830    pub min_position_truncate_bit_count: u32,
2831}
2832
2833impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2834    #[inline]
2835    fn default() -> Self {
2836        Self {
2837            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2838            next: ptr::null_mut(),
2839            vertex_format: Format::default(),
2840            max_geometry_index_value: u32::default(),
2841            max_cluster_unique_geometry_count: u32::default(),
2842            max_cluster_triangle_count: u32::default(),
2843            max_cluster_vertex_count: u32::default(),
2844            max_total_triangle_count: u32::default(),
2845            max_total_vertex_count: u32::default(),
2846            min_position_truncate_bit_count: u32::default(),
2847        }
2848    }
2849}
2850
2851unsafe impl Send for ClusterAccelerationStructureTriangleClusterInputNV {}
2852unsafe impl Sync for ClusterAccelerationStructureTriangleClusterInputNV {}
2853
2854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2855#[repr(C)]
2856#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2857pub struct CoarseSampleLocationNV {
2858    pub pixel_x: u32,
2859    pub pixel_y: u32,
2860    pub sample: u32,
2861}
2862
2863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2864#[repr(C)]
2865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2866pub struct CoarseSampleOrderCustomNV {
2867    pub shading_rate: ShadingRatePaletteEntryNV,
2868    pub sample_count: u32,
2869    pub sample_location_count: u32,
2870    pub sample_locations: *const CoarseSampleLocationNV,
2871}
2872
2873impl Default for CoarseSampleOrderCustomNV {
2874    #[inline]
2875    fn default() -> Self {
2876        Self {
2877            shading_rate: ShadingRatePaletteEntryNV::default(),
2878            sample_count: u32::default(),
2879            sample_location_count: u32::default(),
2880            sample_locations: ptr::null(),
2881        }
2882    }
2883}
2884
2885unsafe impl Send for CoarseSampleOrderCustomNV {}
2886unsafe impl Sync for CoarseSampleOrderCustomNV {}
2887
2888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2889#[repr(C)]
2890#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2891pub struct ColorBlendAdvancedEXT {
2892    pub advanced_blend_op: BlendOp,
2893    pub src_premultiplied: Bool32,
2894    pub dst_premultiplied: Bool32,
2895    pub blend_overlap: BlendOverlapEXT,
2896    pub clamp_results: Bool32,
2897}
2898
2899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2900#[repr(C)]
2901#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2902pub struct ColorBlendEquationEXT {
2903    pub src_color_blend_factor: BlendFactor,
2904    pub dst_color_blend_factor: BlendFactor,
2905    pub color_blend_op: BlendOp,
2906    pub src_alpha_blend_factor: BlendFactor,
2907    pub dst_alpha_blend_factor: BlendFactor,
2908    pub alpha_blend_op: BlendOp,
2909}
2910
2911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2912#[repr(C)]
2913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2914pub struct CommandBufferAllocateInfo {
2915    pub s_type: StructureType,
2916    pub next: *const c_void,
2917    pub command_pool: CommandPool,
2918    pub level: CommandBufferLevel,
2919    pub command_buffer_count: u32,
2920}
2921
2922impl Default for CommandBufferAllocateInfo {
2923    #[inline]
2924    fn default() -> Self {
2925        Self {
2926            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2927            next: ptr::null(),
2928            command_pool: CommandPool::default(),
2929            level: CommandBufferLevel::default(),
2930            command_buffer_count: u32::default(),
2931        }
2932    }
2933}
2934
2935unsafe impl Send for CommandBufferAllocateInfo {}
2936unsafe impl Sync for CommandBufferAllocateInfo {}
2937
2938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2939#[repr(C)]
2940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2941pub struct CommandBufferBeginInfo {
2942    pub s_type: StructureType,
2943    pub next: *const c_void,
2944    pub flags: CommandBufferUsageFlags,
2945    pub inheritance_info: *const CommandBufferInheritanceInfo,
2946}
2947
2948impl Default for CommandBufferBeginInfo {
2949    #[inline]
2950    fn default() -> Self {
2951        Self {
2952            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
2953            next: ptr::null(),
2954            flags: CommandBufferUsageFlags::default(),
2955            inheritance_info: ptr::null(),
2956        }
2957    }
2958}
2959
2960unsafe impl Send for CommandBufferBeginInfo {}
2961unsafe impl Sync for CommandBufferBeginInfo {}
2962
2963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
2964#[repr(C)]
2965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2966pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
2967    pub s_type: StructureType,
2968    pub next: *const c_void,
2969    pub conditional_rendering_enable: Bool32,
2970}
2971
2972impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
2973    #[inline]
2974    fn default() -> Self {
2975        Self {
2976            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
2977            next: ptr::null(),
2978            conditional_rendering_enable: Bool32::default(),
2979        }
2980    }
2981}
2982
2983unsafe impl Send for CommandBufferInheritanceConditionalRenderingInfoEXT {}
2984unsafe impl Sync for CommandBufferInheritanceConditionalRenderingInfoEXT {}
2985
2986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
2987#[repr(C)]
2988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2989pub struct CommandBufferInheritanceInfo {
2990    pub s_type: StructureType,
2991    pub next: *const c_void,
2992    pub render_pass: RenderPass,
2993    pub subpass: u32,
2994    pub framebuffer: Framebuffer,
2995    pub occlusion_query_enable: Bool32,
2996    pub query_flags: QueryControlFlags,
2997    pub pipeline_statistics: QueryPipelineStatisticFlags,
2998}
2999
3000impl Default for CommandBufferInheritanceInfo {
3001    #[inline]
3002    fn default() -> Self {
3003        Self {
3004            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
3005            next: ptr::null(),
3006            render_pass: RenderPass::default(),
3007            subpass: u32::default(),
3008            framebuffer: Framebuffer::default(),
3009            occlusion_query_enable: Bool32::default(),
3010            query_flags: QueryControlFlags::default(),
3011            pipeline_statistics: QueryPipelineStatisticFlags::default(),
3012        }
3013    }
3014}
3015
3016unsafe impl Send for CommandBufferInheritanceInfo {}
3017unsafe impl Sync for CommandBufferInheritanceInfo {}
3018
3019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
3020#[repr(C)]
3021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3022pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
3023    pub s_type: StructureType,
3024    pub next: *const c_void,
3025    pub transform: SurfaceTransformFlagsKHR,
3026    pub render_area: Rect2D,
3027}
3028
3029impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
3030    #[inline]
3031    fn default() -> Self {
3032        Self {
3033            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
3034            next: ptr::null(),
3035            transform: SurfaceTransformFlagsKHR::default(),
3036            render_area: Rect2D::default(),
3037        }
3038    }
3039}
3040
3041unsafe impl Send for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3042unsafe impl Sync for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3043
3044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
3045#[repr(C)]
3046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3047pub struct CommandBufferInheritanceRenderingInfo {
3048    pub s_type: StructureType,
3049    pub next: *const c_void,
3050    pub flags: RenderingFlags,
3051    pub view_mask: u32,
3052    pub color_attachment_count: u32,
3053    pub color_attachment_formats: *const Format,
3054    pub depth_attachment_format: Format,
3055    pub stencil_attachment_format: Format,
3056    pub rasterization_samples: SampleCountFlags,
3057}
3058
3059impl Default for CommandBufferInheritanceRenderingInfo {
3060    #[inline]
3061    fn default() -> Self {
3062        Self {
3063            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
3064            next: ptr::null(),
3065            flags: RenderingFlags::default(),
3066            view_mask: u32::default(),
3067            color_attachment_count: u32::default(),
3068            color_attachment_formats: ptr::null(),
3069            depth_attachment_format: Format::default(),
3070            stencil_attachment_format: Format::default(),
3071            rasterization_samples: SampleCountFlags::default(),
3072        }
3073    }
3074}
3075
3076unsafe impl Send for CommandBufferInheritanceRenderingInfo {}
3077unsafe impl Sync for CommandBufferInheritanceRenderingInfo {}
3078
3079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
3080#[repr(C)]
3081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3082pub struct CommandBufferInheritanceViewportScissorInfoNV {
3083    pub s_type: StructureType,
3084    pub next: *const c_void,
3085    pub viewport_scissor_2d: Bool32,
3086    pub viewport_depth_count: u32,
3087    pub viewport_depths: *const Viewport,
3088}
3089
3090impl Default for CommandBufferInheritanceViewportScissorInfoNV {
3091    #[inline]
3092    fn default() -> Self {
3093        Self {
3094            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
3095            next: ptr::null(),
3096            viewport_scissor_2d: Bool32::default(),
3097            viewport_depth_count: u32::default(),
3098            viewport_depths: ptr::null(),
3099        }
3100    }
3101}
3102
3103unsafe impl Send for CommandBufferInheritanceViewportScissorInfoNV {}
3104unsafe impl Sync for CommandBufferInheritanceViewportScissorInfoNV {}
3105
3106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
3107#[repr(C)]
3108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3109pub struct CommandBufferSubmitInfo {
3110    pub s_type: StructureType,
3111    pub next: *const c_void,
3112    pub command_buffer: CommandBuffer,
3113    pub device_mask: u32,
3114}
3115
3116impl Default for CommandBufferSubmitInfo {
3117    #[inline]
3118    fn default() -> Self {
3119        Self {
3120            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
3121            next: ptr::null(),
3122            command_buffer: CommandBuffer::default(),
3123            device_mask: u32::default(),
3124        }
3125    }
3126}
3127
3128unsafe impl Send for CommandBufferSubmitInfo {}
3129unsafe impl Sync for CommandBufferSubmitInfo {}
3130
3131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
3132#[repr(C)]
3133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3134pub struct CommandPoolCreateInfo {
3135    pub s_type: StructureType,
3136    pub next: *const c_void,
3137    pub flags: CommandPoolCreateFlags,
3138    pub queue_family_index: u32,
3139}
3140
3141impl Default for CommandPoolCreateInfo {
3142    #[inline]
3143    fn default() -> Self {
3144        Self {
3145            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
3146            next: ptr::null(),
3147            flags: CommandPoolCreateFlags::default(),
3148            queue_family_index: u32::default(),
3149        }
3150    }
3151}
3152
3153unsafe impl Send for CommandPoolCreateInfo {}
3154unsafe impl Sync for CommandPoolCreateInfo {}
3155
3156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
3157#[repr(C)]
3158#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3159pub struct ComponentMapping {
3160    pub r: ComponentSwizzle,
3161    pub g: ComponentSwizzle,
3162    pub b: ComponentSwizzle,
3163    pub a: ComponentSwizzle,
3164}
3165
3166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
3167#[repr(C)]
3168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3169pub struct ComputePipelineCreateInfo {
3170    pub s_type: StructureType,
3171    pub next: *const c_void,
3172    pub flags: PipelineCreateFlags,
3173    pub stage: PipelineShaderStageCreateInfo,
3174    pub layout: PipelineLayout,
3175    pub base_pipeline_handle: Pipeline,
3176    pub base_pipeline_index: i32,
3177}
3178
3179impl Default for ComputePipelineCreateInfo {
3180    #[inline]
3181    fn default() -> Self {
3182        Self {
3183            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
3184            next: ptr::null(),
3185            flags: PipelineCreateFlags::default(),
3186            stage: PipelineShaderStageCreateInfo::default(),
3187            layout: PipelineLayout::default(),
3188            base_pipeline_handle: Pipeline::default(),
3189            base_pipeline_index: i32::default(),
3190        }
3191    }
3192}
3193
3194unsafe impl Send for ComputePipelineCreateInfo {}
3195unsafe impl Sync for ComputePipelineCreateInfo {}
3196
3197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
3198#[repr(C)]
3199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3200pub struct ComputePipelineIndirectBufferInfoNV {
3201    pub s_type: StructureType,
3202    pub next: *const c_void,
3203    pub device_address: DeviceAddress,
3204    pub size: DeviceSize,
3205    pub pipeline_device_address_capture_replay: DeviceAddress,
3206}
3207
3208impl Default for ComputePipelineIndirectBufferInfoNV {
3209    #[inline]
3210    fn default() -> Self {
3211        Self {
3212            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
3213            next: ptr::null(),
3214            device_address: DeviceAddress::default(),
3215            size: DeviceSize::default(),
3216            pipeline_device_address_capture_replay: DeviceAddress::default(),
3217        }
3218    }
3219}
3220
3221unsafe impl Send for ComputePipelineIndirectBufferInfoNV {}
3222unsafe impl Sync for ComputePipelineIndirectBufferInfoNV {}
3223
3224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
3225#[repr(C)]
3226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3227pub struct ConditionalRenderingBeginInfoEXT {
3228    pub s_type: StructureType,
3229    pub next: *const c_void,
3230    pub buffer: Buffer,
3231    pub offset: DeviceSize,
3232    pub flags: ConditionalRenderingFlagsEXT,
3233}
3234
3235impl Default for ConditionalRenderingBeginInfoEXT {
3236    #[inline]
3237    fn default() -> Self {
3238        Self {
3239            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
3240            next: ptr::null(),
3241            buffer: Buffer::default(),
3242            offset: DeviceSize::default(),
3243            flags: ConditionalRenderingFlagsEXT::default(),
3244        }
3245    }
3246}
3247
3248unsafe impl Send for ConditionalRenderingBeginInfoEXT {}
3249unsafe impl Sync for ConditionalRenderingBeginInfoEXT {}
3250
3251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
3252#[repr(C)]
3253#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3254pub struct ConformanceVersion {
3255    pub major: u8,
3256    pub minor: u8,
3257    pub subminor: u8,
3258    pub patch: u8,
3259}
3260
3261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
3262#[repr(C)]
3263#[derive(Copy, Clone, Debug)]
3264pub struct ConvertCooperativeVectorMatrixInfoNV {
3265    pub s_type: StructureType,
3266    pub next: *const c_void,
3267    pub src_size: usize,
3268    pub src_data: DeviceOrHostAddressConstKHR,
3269    pub dst_size: *mut usize,
3270    pub dst_data: DeviceOrHostAddressKHR,
3271    pub src_component_type: ComponentTypeKHR,
3272    pub dst_component_type: ComponentTypeKHR,
3273    pub num_rows: u32,
3274    pub num_columns: u32,
3275    pub src_layout: CooperativeVectorMatrixLayoutNV,
3276    pub src_stride: usize,
3277    pub dst_layout: CooperativeVectorMatrixLayoutNV,
3278    pub dst_stride: usize,
3279}
3280
3281impl Default for ConvertCooperativeVectorMatrixInfoNV {
3282    #[inline]
3283    fn default() -> Self {
3284        Self {
3285            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
3286            next: ptr::null(),
3287            src_size: usize::default(),
3288            src_data: DeviceOrHostAddressConstKHR::default(),
3289            dst_size: ptr::null_mut(),
3290            dst_data: DeviceOrHostAddressKHR::default(),
3291            src_component_type: ComponentTypeKHR::default(),
3292            dst_component_type: ComponentTypeKHR::default(),
3293            num_rows: u32::default(),
3294            num_columns: u32::default(),
3295            src_layout: CooperativeVectorMatrixLayoutNV::default(),
3296            src_stride: usize::default(),
3297            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
3298            dst_stride: usize::default(),
3299        }
3300    }
3301}
3302
3303unsafe impl Send for ConvertCooperativeVectorMatrixInfoNV {}
3304unsafe impl Sync for ConvertCooperativeVectorMatrixInfoNV {}
3305
3306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
3307#[repr(C)]
3308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3309pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
3310    pub s_type: StructureType,
3311    pub next: *mut c_void,
3312    pub m_granularity: u32,
3313    pub n_granularity: u32,
3314    pub k_granularity: u32,
3315    pub a_type: ComponentTypeKHR,
3316    pub b_type: ComponentTypeKHR,
3317    pub c_type: ComponentTypeKHR,
3318    pub result_type: ComponentTypeKHR,
3319    pub saturating_accumulation: Bool32,
3320    pub scope: ScopeKHR,
3321    pub workgroup_invocations: u32,
3322}
3323
3324impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
3325    #[inline]
3326    fn default() -> Self {
3327        Self {
3328            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
3329            next: ptr::null_mut(),
3330            m_granularity: u32::default(),
3331            n_granularity: u32::default(),
3332            k_granularity: u32::default(),
3333            a_type: ComponentTypeKHR::default(),
3334            b_type: ComponentTypeKHR::default(),
3335            c_type: ComponentTypeKHR::default(),
3336            result_type: ComponentTypeKHR::default(),
3337            saturating_accumulation: Bool32::default(),
3338            scope: ScopeKHR::default(),
3339            workgroup_invocations: u32::default(),
3340        }
3341    }
3342}
3343
3344unsafe impl Send for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3345unsafe impl Sync for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3346
3347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
3348#[repr(C)]
3349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3350pub struct CooperativeMatrixPropertiesKHR {
3351    pub s_type: StructureType,
3352    pub next: *mut c_void,
3353    pub m_size: u32,
3354    pub n_size: u32,
3355    pub k_size: u32,
3356    pub a_type: ComponentTypeKHR,
3357    pub b_type: ComponentTypeKHR,
3358    pub c_type: ComponentTypeKHR,
3359    pub result_type: ComponentTypeKHR,
3360    pub saturating_accumulation: Bool32,
3361    pub scope: ScopeKHR,
3362}
3363
3364impl Default for CooperativeMatrixPropertiesKHR {
3365    #[inline]
3366    fn default() -> Self {
3367        Self {
3368            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
3369            next: ptr::null_mut(),
3370            m_size: u32::default(),
3371            n_size: u32::default(),
3372            k_size: u32::default(),
3373            a_type: ComponentTypeKHR::default(),
3374            b_type: ComponentTypeKHR::default(),
3375            c_type: ComponentTypeKHR::default(),
3376            result_type: ComponentTypeKHR::default(),
3377            saturating_accumulation: Bool32::default(),
3378            scope: ScopeKHR::default(),
3379        }
3380    }
3381}
3382
3383unsafe impl Send for CooperativeMatrixPropertiesKHR {}
3384unsafe impl Sync for CooperativeMatrixPropertiesKHR {}
3385
3386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
3387#[repr(C)]
3388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3389pub struct CooperativeMatrixPropertiesNV {
3390    pub s_type: StructureType,
3391    pub next: *mut c_void,
3392    pub m_size: u32,
3393    pub n_size: u32,
3394    pub k_size: u32,
3395    pub a_type: ComponentTypeNV,
3396    pub b_type: ComponentTypeNV,
3397    pub c_type: ComponentTypeNV,
3398    pub d_type: ComponentTypeNV,
3399    pub scope: ScopeNV,
3400}
3401
3402impl Default for CooperativeMatrixPropertiesNV {
3403    #[inline]
3404    fn default() -> Self {
3405        Self {
3406            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
3407            next: ptr::null_mut(),
3408            m_size: u32::default(),
3409            n_size: u32::default(),
3410            k_size: u32::default(),
3411            a_type: ComponentTypeNV::default(),
3412            b_type: ComponentTypeNV::default(),
3413            c_type: ComponentTypeNV::default(),
3414            d_type: ComponentTypeNV::default(),
3415            scope: ScopeNV::default(),
3416        }
3417    }
3418}
3419
3420unsafe impl Send for CooperativeMatrixPropertiesNV {}
3421unsafe impl Sync for CooperativeMatrixPropertiesNV {}
3422
3423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3424#[repr(C)]
3425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3426pub struct CooperativeVectorPropertiesNV {
3427    pub s_type: StructureType,
3428    pub next: *mut c_void,
3429    pub input_type: ComponentTypeKHR,
3430    pub input_interpretation: ComponentTypeKHR,
3431    pub matrix_interpretation: ComponentTypeKHR,
3432    pub bias_interpretation: ComponentTypeKHR,
3433    pub result_type: ComponentTypeKHR,
3434    pub transpose: Bool32,
3435}
3436
3437impl Default for CooperativeVectorPropertiesNV {
3438    #[inline]
3439    fn default() -> Self {
3440        Self {
3441            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3442            next: ptr::null_mut(),
3443            input_type: ComponentTypeKHR::default(),
3444            input_interpretation: ComponentTypeKHR::default(),
3445            matrix_interpretation: ComponentTypeKHR::default(),
3446            bias_interpretation: ComponentTypeKHR::default(),
3447            result_type: ComponentTypeKHR::default(),
3448            transpose: Bool32::default(),
3449        }
3450    }
3451}
3452
3453unsafe impl Send for CooperativeVectorPropertiesNV {}
3454unsafe impl Sync for CooperativeVectorPropertiesNV {}
3455
3456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3457#[repr(C)]
3458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3459pub struct CopyAccelerationStructureInfoKHR {
3460    pub s_type: StructureType,
3461    pub next: *const c_void,
3462    pub src: AccelerationStructureKHR,
3463    pub dst: AccelerationStructureKHR,
3464    pub mode: CopyAccelerationStructureModeKHR,
3465}
3466
3467impl Default for CopyAccelerationStructureInfoKHR {
3468    #[inline]
3469    fn default() -> Self {
3470        Self {
3471            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3472            next: ptr::null(),
3473            src: AccelerationStructureKHR::default(),
3474            dst: AccelerationStructureKHR::default(),
3475            mode: CopyAccelerationStructureModeKHR::default(),
3476        }
3477    }
3478}
3479
3480unsafe impl Send for CopyAccelerationStructureInfoKHR {}
3481unsafe impl Sync for CopyAccelerationStructureInfoKHR {}
3482
3483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3484#[repr(C)]
3485#[derive(Copy, Clone, Debug)]
3486pub struct CopyAccelerationStructureToMemoryInfoKHR {
3487    pub s_type: StructureType,
3488    pub next: *const c_void,
3489    pub src: AccelerationStructureKHR,
3490    pub dst: DeviceOrHostAddressKHR,
3491    pub mode: CopyAccelerationStructureModeKHR,
3492}
3493
3494impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3495    #[inline]
3496    fn default() -> Self {
3497        Self {
3498            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3499            next: ptr::null(),
3500            src: AccelerationStructureKHR::default(),
3501            dst: DeviceOrHostAddressKHR::default(),
3502            mode: CopyAccelerationStructureModeKHR::default(),
3503        }
3504    }
3505}
3506
3507unsafe impl Send for CopyAccelerationStructureToMemoryInfoKHR {}
3508unsafe impl Sync for CopyAccelerationStructureToMemoryInfoKHR {}
3509
3510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3511#[repr(C)]
3512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3513pub struct CopyBufferInfo2 {
3514    pub s_type: StructureType,
3515    pub next: *const c_void,
3516    pub src_buffer: Buffer,
3517    pub dst_buffer: Buffer,
3518    pub region_count: u32,
3519    pub regions: *const BufferCopy2,
3520}
3521
3522impl Default for CopyBufferInfo2 {
3523    #[inline]
3524    fn default() -> Self {
3525        Self {
3526            s_type: StructureType::COPY_BUFFER_INFO_2,
3527            next: ptr::null(),
3528            src_buffer: Buffer::default(),
3529            dst_buffer: Buffer::default(),
3530            region_count: u32::default(),
3531            regions: ptr::null(),
3532        }
3533    }
3534}
3535
3536unsafe impl Send for CopyBufferInfo2 {}
3537unsafe impl Sync for CopyBufferInfo2 {}
3538
3539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3540#[repr(C)]
3541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3542pub struct CopyBufferToImageInfo2 {
3543    pub s_type: StructureType,
3544    pub next: *const c_void,
3545    pub src_buffer: Buffer,
3546    pub dst_image: Image,
3547    pub dst_image_layout: ImageLayout,
3548    pub region_count: u32,
3549    pub regions: *const BufferImageCopy2,
3550}
3551
3552impl Default for CopyBufferToImageInfo2 {
3553    #[inline]
3554    fn default() -> Self {
3555        Self {
3556            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3557            next: ptr::null(),
3558            src_buffer: Buffer::default(),
3559            dst_image: Image::default(),
3560            dst_image_layout: ImageLayout::default(),
3561            region_count: u32::default(),
3562            regions: ptr::null(),
3563        }
3564    }
3565}
3566
3567unsafe impl Send for CopyBufferToImageInfo2 {}
3568unsafe impl Sync for CopyBufferToImageInfo2 {}
3569
3570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3571#[repr(C)]
3572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3573pub struct CopyCommandTransformInfoQCOM {
3574    pub s_type: StructureType,
3575    pub next: *const c_void,
3576    pub transform: SurfaceTransformFlagsKHR,
3577}
3578
3579impl Default for CopyCommandTransformInfoQCOM {
3580    #[inline]
3581    fn default() -> Self {
3582        Self {
3583            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3584            next: ptr::null(),
3585            transform: SurfaceTransformFlagsKHR::default(),
3586        }
3587    }
3588}
3589
3590unsafe impl Send for CopyCommandTransformInfoQCOM {}
3591unsafe impl Sync for CopyCommandTransformInfoQCOM {}
3592
3593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3594#[repr(C)]
3595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3596pub struct CopyDescriptorSet {
3597    pub s_type: StructureType,
3598    pub next: *const c_void,
3599    pub src_set: DescriptorSet,
3600    pub src_binding: u32,
3601    pub src_array_element: u32,
3602    pub dst_set: DescriptorSet,
3603    pub dst_binding: u32,
3604    pub dst_array_element: u32,
3605    pub descriptor_count: u32,
3606}
3607
3608impl Default for CopyDescriptorSet {
3609    #[inline]
3610    fn default() -> Self {
3611        Self {
3612            s_type: StructureType::COPY_DESCRIPTOR_SET,
3613            next: ptr::null(),
3614            src_set: DescriptorSet::default(),
3615            src_binding: u32::default(),
3616            src_array_element: u32::default(),
3617            dst_set: DescriptorSet::default(),
3618            dst_binding: u32::default(),
3619            dst_array_element: u32::default(),
3620            descriptor_count: u32::default(),
3621        }
3622    }
3623}
3624
3625unsafe impl Send for CopyDescriptorSet {}
3626unsafe impl Sync for CopyDescriptorSet {}
3627
3628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3629#[repr(C)]
3630#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3631pub struct CopyImageInfo2 {
3632    pub s_type: StructureType,
3633    pub next: *const c_void,
3634    pub src_image: Image,
3635    pub src_image_layout: ImageLayout,
3636    pub dst_image: Image,
3637    pub dst_image_layout: ImageLayout,
3638    pub region_count: u32,
3639    pub regions: *const ImageCopy2,
3640}
3641
3642impl Default for CopyImageInfo2 {
3643    #[inline]
3644    fn default() -> Self {
3645        Self {
3646            s_type: StructureType::COPY_IMAGE_INFO_2,
3647            next: ptr::null(),
3648            src_image: Image::default(),
3649            src_image_layout: ImageLayout::default(),
3650            dst_image: Image::default(),
3651            dst_image_layout: ImageLayout::default(),
3652            region_count: u32::default(),
3653            regions: ptr::null(),
3654        }
3655    }
3656}
3657
3658unsafe impl Send for CopyImageInfo2 {}
3659unsafe impl Sync for CopyImageInfo2 {}
3660
3661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3662#[repr(C)]
3663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3664pub struct CopyImageToBufferInfo2 {
3665    pub s_type: StructureType,
3666    pub next: *const c_void,
3667    pub src_image: Image,
3668    pub src_image_layout: ImageLayout,
3669    pub dst_buffer: Buffer,
3670    pub region_count: u32,
3671    pub regions: *const BufferImageCopy2,
3672}
3673
3674impl Default for CopyImageToBufferInfo2 {
3675    #[inline]
3676    fn default() -> Self {
3677        Self {
3678            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3679            next: ptr::null(),
3680            src_image: Image::default(),
3681            src_image_layout: ImageLayout::default(),
3682            dst_buffer: Buffer::default(),
3683            region_count: u32::default(),
3684            regions: ptr::null(),
3685        }
3686    }
3687}
3688
3689unsafe impl Send for CopyImageToBufferInfo2 {}
3690unsafe impl Sync for CopyImageToBufferInfo2 {}
3691
3692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3693#[repr(C)]
3694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3695pub struct CopyImageToImageInfo {
3696    pub s_type: StructureType,
3697    pub next: *const c_void,
3698    pub flags: HostImageCopyFlags,
3699    pub src_image: Image,
3700    pub src_image_layout: ImageLayout,
3701    pub dst_image: Image,
3702    pub dst_image_layout: ImageLayout,
3703    pub region_count: u32,
3704    pub regions: *const ImageCopy2,
3705}
3706
3707impl Default for CopyImageToImageInfo {
3708    #[inline]
3709    fn default() -> Self {
3710        Self {
3711            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3712            next: ptr::null(),
3713            flags: HostImageCopyFlags::default(),
3714            src_image: Image::default(),
3715            src_image_layout: ImageLayout::default(),
3716            dst_image: Image::default(),
3717            dst_image_layout: ImageLayout::default(),
3718            region_count: u32::default(),
3719            regions: ptr::null(),
3720        }
3721    }
3722}
3723
3724unsafe impl Send for CopyImageToImageInfo {}
3725unsafe impl Sync for CopyImageToImageInfo {}
3726
3727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3728#[repr(C)]
3729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3730pub struct CopyImageToMemoryInfo {
3731    pub s_type: StructureType,
3732    pub next: *const c_void,
3733    pub flags: HostImageCopyFlags,
3734    pub src_image: Image,
3735    pub src_image_layout: ImageLayout,
3736    pub region_count: u32,
3737    pub regions: *const ImageToMemoryCopy,
3738}
3739
3740impl Default for CopyImageToMemoryInfo {
3741    #[inline]
3742    fn default() -> Self {
3743        Self {
3744            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3745            next: ptr::null(),
3746            flags: HostImageCopyFlags::default(),
3747            src_image: Image::default(),
3748            src_image_layout: ImageLayout::default(),
3749            region_count: u32::default(),
3750            regions: ptr::null(),
3751        }
3752    }
3753}
3754
3755unsafe impl Send for CopyImageToMemoryInfo {}
3756unsafe impl Sync for CopyImageToMemoryInfo {}
3757
3758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandKHR.html>
3759#[repr(C)]
3760#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3761pub struct CopyMemoryIndirectCommandKHR {
3762    pub src_address: DeviceAddress,
3763    pub dst_address: DeviceAddress,
3764    pub size: DeviceSize,
3765}
3766
3767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectInfoKHR.html>
3768#[repr(C)]
3769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3770pub struct CopyMemoryIndirectInfoKHR {
3771    pub s_type: StructureType,
3772    pub next: *const c_void,
3773    pub src_copy_flags: AddressCopyFlagsKHR,
3774    pub dst_copy_flags: AddressCopyFlagsKHR,
3775    pub copy_count: u32,
3776    pub copy_address_range: StridedDeviceAddressRangeKHR,
3777}
3778
3779impl Default for CopyMemoryIndirectInfoKHR {
3780    #[inline]
3781    fn default() -> Self {
3782        Self {
3783            s_type: StructureType::COPY_MEMORY_INDIRECT_INFO_KHR,
3784            next: ptr::null(),
3785            src_copy_flags: AddressCopyFlagsKHR::default(),
3786            dst_copy_flags: AddressCopyFlagsKHR::default(),
3787            copy_count: u32::default(),
3788            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3789        }
3790    }
3791}
3792
3793unsafe impl Send for CopyMemoryIndirectInfoKHR {}
3794unsafe impl Sync for CopyMemoryIndirectInfoKHR {}
3795
3796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3797#[repr(C)]
3798#[derive(Copy, Clone, Debug)]
3799pub struct CopyMemoryToAccelerationStructureInfoKHR {
3800    pub s_type: StructureType,
3801    pub next: *const c_void,
3802    pub src: DeviceOrHostAddressConstKHR,
3803    pub dst: AccelerationStructureKHR,
3804    pub mode: CopyAccelerationStructureModeKHR,
3805}
3806
3807impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3808    #[inline]
3809    fn default() -> Self {
3810        Self {
3811            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3812            next: ptr::null(),
3813            src: DeviceOrHostAddressConstKHR::default(),
3814            dst: AccelerationStructureKHR::default(),
3815            mode: CopyAccelerationStructureModeKHR::default(),
3816        }
3817    }
3818}
3819
3820unsafe impl Send for CopyMemoryToAccelerationStructureInfoKHR {}
3821unsafe impl Sync for CopyMemoryToAccelerationStructureInfoKHR {}
3822
3823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandKHR.html>
3824#[repr(C)]
3825#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3826pub struct CopyMemoryToImageIndirectCommandKHR {
3827    pub src_address: DeviceAddress,
3828    pub buffer_row_length: u32,
3829    pub buffer_image_height: u32,
3830    pub image_subresource: ImageSubresourceLayers,
3831    pub image_offset: Offset3D,
3832    pub image_extent: Extent3D,
3833}
3834
3835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectInfoKHR.html>
3836#[repr(C)]
3837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3838pub struct CopyMemoryToImageIndirectInfoKHR {
3839    pub s_type: StructureType,
3840    pub next: *const c_void,
3841    pub src_copy_flags: AddressCopyFlagsKHR,
3842    pub copy_count: u32,
3843    pub copy_address_range: StridedDeviceAddressRangeKHR,
3844    pub dst_image: Image,
3845    pub dst_image_layout: ImageLayout,
3846    pub image_subresources: *const ImageSubresourceLayers,
3847}
3848
3849impl Default for CopyMemoryToImageIndirectInfoKHR {
3850    #[inline]
3851    fn default() -> Self {
3852        Self {
3853            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR,
3854            next: ptr::null(),
3855            src_copy_flags: AddressCopyFlagsKHR::default(),
3856            copy_count: u32::default(),
3857            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3858            dst_image: Image::default(),
3859            dst_image_layout: ImageLayout::default(),
3860            image_subresources: ptr::null(),
3861        }
3862    }
3863}
3864
3865unsafe impl Send for CopyMemoryToImageIndirectInfoKHR {}
3866unsafe impl Sync for CopyMemoryToImageIndirectInfoKHR {}
3867
3868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3869#[repr(C)]
3870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3871pub struct CopyMemoryToImageInfo {
3872    pub s_type: StructureType,
3873    pub next: *const c_void,
3874    pub flags: HostImageCopyFlags,
3875    pub dst_image: Image,
3876    pub dst_image_layout: ImageLayout,
3877    pub region_count: u32,
3878    pub regions: *const MemoryToImageCopy,
3879}
3880
3881impl Default for CopyMemoryToImageInfo {
3882    #[inline]
3883    fn default() -> Self {
3884        Self {
3885            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3886            next: ptr::null(),
3887            flags: HostImageCopyFlags::default(),
3888            dst_image: Image::default(),
3889            dst_image_layout: ImageLayout::default(),
3890            region_count: u32::default(),
3891            regions: ptr::null(),
3892        }
3893    }
3894}
3895
3896unsafe impl Send for CopyMemoryToImageInfo {}
3897unsafe impl Sync for CopyMemoryToImageInfo {}
3898
3899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3900#[repr(C)]
3901#[derive(Copy, Clone, Debug)]
3902pub struct CopyMemoryToMicromapInfoEXT {
3903    pub s_type: StructureType,
3904    pub next: *const c_void,
3905    pub src: DeviceOrHostAddressConstKHR,
3906    pub dst: MicromapEXT,
3907    pub mode: CopyMicromapModeEXT,
3908}
3909
3910impl Default for CopyMemoryToMicromapInfoEXT {
3911    #[inline]
3912    fn default() -> Self {
3913        Self {
3914            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
3915            next: ptr::null(),
3916            src: DeviceOrHostAddressConstKHR::default(),
3917            dst: MicromapEXT::default(),
3918            mode: CopyMicromapModeEXT::default(),
3919        }
3920    }
3921}
3922
3923unsafe impl Send for CopyMemoryToMicromapInfoEXT {}
3924unsafe impl Sync for CopyMemoryToMicromapInfoEXT {}
3925
3926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
3927#[repr(C)]
3928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3929pub struct CopyMicromapInfoEXT {
3930    pub s_type: StructureType,
3931    pub next: *const c_void,
3932    pub src: MicromapEXT,
3933    pub dst: MicromapEXT,
3934    pub mode: CopyMicromapModeEXT,
3935}
3936
3937impl Default for CopyMicromapInfoEXT {
3938    #[inline]
3939    fn default() -> Self {
3940        Self {
3941            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
3942            next: ptr::null(),
3943            src: MicromapEXT::default(),
3944            dst: MicromapEXT::default(),
3945            mode: CopyMicromapModeEXT::default(),
3946        }
3947    }
3948}
3949
3950unsafe impl Send for CopyMicromapInfoEXT {}
3951unsafe impl Sync for CopyMicromapInfoEXT {}
3952
3953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
3954#[repr(C)]
3955#[derive(Copy, Clone, Debug)]
3956pub struct CopyMicromapToMemoryInfoEXT {
3957    pub s_type: StructureType,
3958    pub next: *const c_void,
3959    pub src: MicromapEXT,
3960    pub dst: DeviceOrHostAddressKHR,
3961    pub mode: CopyMicromapModeEXT,
3962}
3963
3964impl Default for CopyMicromapToMemoryInfoEXT {
3965    #[inline]
3966    fn default() -> Self {
3967        Self {
3968            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
3969            next: ptr::null(),
3970            src: MicromapEXT::default(),
3971            dst: DeviceOrHostAddressKHR::default(),
3972            mode: CopyMicromapModeEXT::default(),
3973        }
3974    }
3975}
3976
3977unsafe impl Send for CopyMicromapToMemoryInfoEXT {}
3978unsafe impl Sync for CopyMicromapToMemoryInfoEXT {}
3979
3980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html>
3981#[repr(C)]
3982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3983pub struct CopyTensorInfoARM {
3984    pub s_type: StructureType,
3985    pub next: *const c_void,
3986    pub src_tensor: TensorARM,
3987    pub dst_tensor: TensorARM,
3988    pub region_count: u32,
3989    pub regions: *const TensorCopyARM,
3990}
3991
3992impl Default for CopyTensorInfoARM {
3993    #[inline]
3994    fn default() -> Self {
3995        Self {
3996            s_type: StructureType::COPY_TENSOR_INFO_ARM,
3997            next: ptr::null(),
3998            src_tensor: TensorARM::default(),
3999            dst_tensor: TensorARM::default(),
4000            region_count: u32::default(),
4001            regions: ptr::null(),
4002        }
4003    }
4004}
4005
4006unsafe impl Send for CopyTensorInfoARM {}
4007unsafe impl Sync for CopyTensorInfoARM {}
4008
4009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
4010#[repr(C)]
4011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4012pub struct CuFunctionCreateInfoNVX {
4013    pub s_type: StructureType,
4014    pub next: *const c_void,
4015    pub module: CuModuleNVX,
4016    pub name: *const c_char,
4017}
4018
4019impl Default for CuFunctionCreateInfoNVX {
4020    #[inline]
4021    fn default() -> Self {
4022        Self {
4023            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
4024            next: ptr::null(),
4025            module: CuModuleNVX::default(),
4026            name: ptr::null(),
4027        }
4028    }
4029}
4030
4031unsafe impl Send for CuFunctionCreateInfoNVX {}
4032unsafe impl Sync for CuFunctionCreateInfoNVX {}
4033
4034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
4035#[repr(C)]
4036#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4037pub struct CuLaunchInfoNVX {
4038    pub s_type: StructureType,
4039    pub next: *const c_void,
4040    pub function: CuFunctionNVX,
4041    pub grid_dim_x: u32,
4042    pub grid_dim_y: u32,
4043    pub grid_dim_z: u32,
4044    pub block_dim_x: u32,
4045    pub block_dim_y: u32,
4046    pub block_dim_z: u32,
4047    pub shared_mem_bytes: u32,
4048    pub param_count: usize,
4049    pub params: *const c_void,
4050    pub extra_count: usize,
4051    pub extras: *const c_void,
4052}
4053
4054impl Default for CuLaunchInfoNVX {
4055    #[inline]
4056    fn default() -> Self {
4057        Self {
4058            s_type: StructureType::CU_LAUNCH_INFO_NVX,
4059            next: ptr::null(),
4060            function: CuFunctionNVX::default(),
4061            grid_dim_x: u32::default(),
4062            grid_dim_y: u32::default(),
4063            grid_dim_z: u32::default(),
4064            block_dim_x: u32::default(),
4065            block_dim_y: u32::default(),
4066            block_dim_z: u32::default(),
4067            shared_mem_bytes: u32::default(),
4068            param_count: usize::default(),
4069            params: ptr::null(),
4070            extra_count: usize::default(),
4071            extras: ptr::null(),
4072        }
4073    }
4074}
4075
4076unsafe impl Send for CuLaunchInfoNVX {}
4077unsafe impl Sync for CuLaunchInfoNVX {}
4078
4079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
4080#[repr(C)]
4081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4082pub struct CuModuleCreateInfoNVX {
4083    pub s_type: StructureType,
4084    pub next: *const c_void,
4085    pub data_size: usize,
4086    pub data: *const c_void,
4087}
4088
4089impl Default for CuModuleCreateInfoNVX {
4090    #[inline]
4091    fn default() -> Self {
4092        Self {
4093            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
4094            next: ptr::null(),
4095            data_size: usize::default(),
4096            data: ptr::null(),
4097        }
4098    }
4099}
4100
4101unsafe impl Send for CuModuleCreateInfoNVX {}
4102unsafe impl Sync for CuModuleCreateInfoNVX {}
4103
4104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
4105#[repr(C)]
4106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4107pub struct CuModuleTexturingModeCreateInfoNVX {
4108    pub s_type: StructureType,
4109    pub next: *const c_void,
4110    pub use64bit_texturing: Bool32,
4111}
4112
4113impl Default for CuModuleTexturingModeCreateInfoNVX {
4114    #[inline]
4115    fn default() -> Self {
4116        Self {
4117            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
4118            next: ptr::null(),
4119            use64bit_texturing: Bool32::default(),
4120        }
4121    }
4122}
4123
4124unsafe impl Send for CuModuleTexturingModeCreateInfoNVX {}
4125unsafe impl Sync for CuModuleTexturingModeCreateInfoNVX {}
4126
4127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
4128#[repr(C)]
4129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4130pub struct CudaFunctionCreateInfoNV {
4131    pub s_type: StructureType,
4132    pub next: *const c_void,
4133    pub module: CudaModuleNV,
4134    pub name: *const c_char,
4135}
4136
4137impl Default for CudaFunctionCreateInfoNV {
4138    #[inline]
4139    fn default() -> Self {
4140        Self {
4141            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
4142            next: ptr::null(),
4143            module: CudaModuleNV::default(),
4144            name: ptr::null(),
4145        }
4146    }
4147}
4148
4149unsafe impl Send for CudaFunctionCreateInfoNV {}
4150unsafe impl Sync for CudaFunctionCreateInfoNV {}
4151
4152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
4153#[repr(C)]
4154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4155pub struct CudaLaunchInfoNV {
4156    pub s_type: StructureType,
4157    pub next: *const c_void,
4158    pub function: CudaFunctionNV,
4159    pub grid_dim_x: u32,
4160    pub grid_dim_y: u32,
4161    pub grid_dim_z: u32,
4162    pub block_dim_x: u32,
4163    pub block_dim_y: u32,
4164    pub block_dim_z: u32,
4165    pub shared_mem_bytes: u32,
4166    pub param_count: usize,
4167    pub params: *const c_void,
4168    pub extra_count: usize,
4169    pub extras: *const c_void,
4170}
4171
4172impl Default for CudaLaunchInfoNV {
4173    #[inline]
4174    fn default() -> Self {
4175        Self {
4176            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
4177            next: ptr::null(),
4178            function: CudaFunctionNV::default(),
4179            grid_dim_x: u32::default(),
4180            grid_dim_y: u32::default(),
4181            grid_dim_z: u32::default(),
4182            block_dim_x: u32::default(),
4183            block_dim_y: u32::default(),
4184            block_dim_z: u32::default(),
4185            shared_mem_bytes: u32::default(),
4186            param_count: usize::default(),
4187            params: ptr::null(),
4188            extra_count: usize::default(),
4189            extras: ptr::null(),
4190        }
4191    }
4192}
4193
4194unsafe impl Send for CudaLaunchInfoNV {}
4195unsafe impl Sync for CudaLaunchInfoNV {}
4196
4197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
4198#[repr(C)]
4199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4200pub struct CudaModuleCreateInfoNV {
4201    pub s_type: StructureType,
4202    pub next: *const c_void,
4203    pub data_size: usize,
4204    pub data: *const c_void,
4205}
4206
4207impl Default for CudaModuleCreateInfoNV {
4208    #[inline]
4209    fn default() -> Self {
4210        Self {
4211            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
4212            next: ptr::null(),
4213            data_size: usize::default(),
4214            data: ptr::null(),
4215        }
4216    }
4217}
4218
4219unsafe impl Send for CudaModuleCreateInfoNV {}
4220unsafe impl Sync for CudaModuleCreateInfoNV {}
4221
4222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
4223#[repr(C)]
4224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4225pub struct D3D12FenceSubmitInfoKHR {
4226    pub s_type: StructureType,
4227    pub next: *const c_void,
4228    pub wait_semaphore_values_count: u32,
4229    pub wait_semaphore_values: *const u64,
4230    pub signal_semaphore_values_count: u32,
4231    pub signal_semaphore_values: *const u64,
4232}
4233
4234impl Default for D3D12FenceSubmitInfoKHR {
4235    #[inline]
4236    fn default() -> Self {
4237        Self {
4238            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
4239            next: ptr::null(),
4240            wait_semaphore_values_count: u32::default(),
4241            wait_semaphore_values: ptr::null(),
4242            signal_semaphore_values_count: u32::default(),
4243            signal_semaphore_values: ptr::null(),
4244        }
4245    }
4246}
4247
4248unsafe impl Send for D3D12FenceSubmitInfoKHR {}
4249unsafe impl Sync for D3D12FenceSubmitInfoKHR {}
4250
4251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineBuiltinModelCreateInfoQCOM.html>
4252#[repr(C)]
4253#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4254pub struct DataGraphPipelineBuiltinModelCreateInfoQCOM {
4255    pub s_type: StructureType,
4256    pub next: *const c_void,
4257    pub operation: *const PhysicalDeviceDataGraphOperationSupportARM,
4258}
4259
4260impl Default for DataGraphPipelineBuiltinModelCreateInfoQCOM {
4261    #[inline]
4262    fn default() -> Self {
4263        Self {
4264            s_type: StructureType::DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM,
4265            next: ptr::null(),
4266            operation: ptr::null(),
4267        }
4268    }
4269}
4270
4271unsafe impl Send for DataGraphPipelineBuiltinModelCreateInfoQCOM {}
4272unsafe impl Sync for DataGraphPipelineBuiltinModelCreateInfoQCOM {}
4273
4274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html>
4275#[repr(C)]
4276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4277pub struct DataGraphPipelineCompilerControlCreateInfoARM {
4278    pub s_type: StructureType,
4279    pub next: *const c_void,
4280    pub vendor_options: *const c_char,
4281}
4282
4283impl Default for DataGraphPipelineCompilerControlCreateInfoARM {
4284    #[inline]
4285    fn default() -> Self {
4286        Self {
4287            s_type: StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM,
4288            next: ptr::null(),
4289            vendor_options: ptr::null(),
4290        }
4291    }
4292}
4293
4294unsafe impl Send for DataGraphPipelineCompilerControlCreateInfoARM {}
4295unsafe impl Sync for DataGraphPipelineCompilerControlCreateInfoARM {}
4296
4297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html>
4298#[repr(C)]
4299#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4300pub struct DataGraphPipelineConstantARM {
4301    pub s_type: StructureType,
4302    pub next: *const c_void,
4303    pub id: u32,
4304    pub constant_data: *const c_void,
4305}
4306
4307impl Default for DataGraphPipelineConstantARM {
4308    #[inline]
4309    fn default() -> Self {
4310        Self {
4311            s_type: StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM,
4312            next: ptr::null(),
4313            id: u32::default(),
4314            constant_data: ptr::null(),
4315        }
4316    }
4317}
4318
4319unsafe impl Send for DataGraphPipelineConstantARM {}
4320unsafe impl Sync for DataGraphPipelineConstantARM {}
4321
4322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html>
4323#[repr(C)]
4324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4325pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4326    pub s_type: StructureType,
4327    pub next: *const c_void,
4328    pub dimension: u32,
4329    pub zero_count: u32,
4330    pub group_size: u32,
4331}
4332
4333impl Default for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4334    #[inline]
4335    fn default() -> Self {
4336        Self {
4337            s_type:
4338                StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM,
4339            next: ptr::null(),
4340            dimension: u32::default(),
4341            zero_count: u32::default(),
4342            group_size: u32::default(),
4343        }
4344    }
4345}
4346
4347unsafe impl Send for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4348unsafe impl Sync for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4349
4350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html>
4351#[repr(C)]
4352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4353pub struct DataGraphPipelineCreateInfoARM {
4354    pub s_type: StructureType,
4355    pub next: *const c_void,
4356    pub flags: PipelineCreateFlags2KHR,
4357    pub layout: PipelineLayout,
4358    pub resource_info_count: u32,
4359    pub resource_infos: *const DataGraphPipelineResourceInfoARM,
4360}
4361
4362impl Default for DataGraphPipelineCreateInfoARM {
4363    #[inline]
4364    fn default() -> Self {
4365        Self {
4366            s_type: StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM,
4367            next: ptr::null(),
4368            flags: PipelineCreateFlags2KHR::default(),
4369            layout: PipelineLayout::default(),
4370            resource_info_count: u32::default(),
4371            resource_infos: ptr::null(),
4372        }
4373    }
4374}
4375
4376unsafe impl Send for DataGraphPipelineCreateInfoARM {}
4377unsafe impl Sync for DataGraphPipelineCreateInfoARM {}
4378
4379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html>
4380#[repr(C)]
4381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4382pub struct DataGraphPipelineDispatchInfoARM {
4383    pub s_type: StructureType,
4384    pub next: *mut c_void,
4385    pub flags: DataGraphPipelineDispatchFlagsARM,
4386}
4387
4388impl Default for DataGraphPipelineDispatchInfoARM {
4389    #[inline]
4390    fn default() -> Self {
4391        Self {
4392            s_type: StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM,
4393            next: ptr::null_mut(),
4394            flags: DataGraphPipelineDispatchFlagsARM::default(),
4395        }
4396    }
4397}
4398
4399unsafe impl Send for DataGraphPipelineDispatchInfoARM {}
4400unsafe impl Sync for DataGraphPipelineDispatchInfoARM {}
4401
4402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html>
4403#[repr(C)]
4404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4405pub struct DataGraphPipelineIdentifierCreateInfoARM {
4406    pub s_type: StructureType,
4407    pub next: *const c_void,
4408    pub identifier_size: u32,
4409    pub identifier: *const u8,
4410}
4411
4412impl Default for DataGraphPipelineIdentifierCreateInfoARM {
4413    #[inline]
4414    fn default() -> Self {
4415        Self {
4416            s_type: StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM,
4417            next: ptr::null(),
4418            identifier_size: u32::default(),
4419            identifier: ptr::null(),
4420        }
4421    }
4422}
4423
4424unsafe impl Send for DataGraphPipelineIdentifierCreateInfoARM {}
4425unsafe impl Sync for DataGraphPipelineIdentifierCreateInfoARM {}
4426
4427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html>
4428#[repr(C)]
4429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4430pub struct DataGraphPipelineInfoARM {
4431    pub s_type: StructureType,
4432    pub next: *const c_void,
4433    pub data_graph_pipeline: Pipeline,
4434}
4435
4436impl Default for DataGraphPipelineInfoARM {
4437    #[inline]
4438    fn default() -> Self {
4439        Self {
4440            s_type: StructureType::DATA_GRAPH_PIPELINE_INFO_ARM,
4441            next: ptr::null(),
4442            data_graph_pipeline: Pipeline::default(),
4443        }
4444    }
4445}
4446
4447unsafe impl Send for DataGraphPipelineInfoARM {}
4448unsafe impl Sync for DataGraphPipelineInfoARM {}
4449
4450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html>
4451#[repr(C)]
4452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4453pub struct DataGraphPipelinePropertyQueryResultARM {
4454    pub s_type: StructureType,
4455    pub next: *const c_void,
4456    pub property: DataGraphPipelinePropertyARM,
4457    pub is_text: Bool32,
4458    pub data_size: usize,
4459    pub data: *mut c_void,
4460}
4461
4462impl Default for DataGraphPipelinePropertyQueryResultARM {
4463    #[inline]
4464    fn default() -> Self {
4465        Self {
4466            s_type: StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM,
4467            next: ptr::null(),
4468            property: DataGraphPipelinePropertyARM::default(),
4469            is_text: Bool32::default(),
4470            data_size: usize::default(),
4471            data: ptr::null_mut(),
4472        }
4473    }
4474}
4475
4476unsafe impl Send for DataGraphPipelinePropertyQueryResultARM {}
4477unsafe impl Sync for DataGraphPipelinePropertyQueryResultARM {}
4478
4479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html>
4480#[repr(C)]
4481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4482pub struct DataGraphPipelineResourceInfoARM {
4483    pub s_type: StructureType,
4484    pub next: *const c_void,
4485    pub descriptor_set: u32,
4486    pub binding: u32,
4487    pub array_element: u32,
4488}
4489
4490impl Default for DataGraphPipelineResourceInfoARM {
4491    #[inline]
4492    fn default() -> Self {
4493        Self {
4494            s_type: StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM,
4495            next: ptr::null(),
4496            descriptor_set: u32::default(),
4497            binding: u32::default(),
4498            array_element: u32::default(),
4499        }
4500    }
4501}
4502
4503unsafe impl Send for DataGraphPipelineResourceInfoARM {}
4504unsafe impl Sync for DataGraphPipelineResourceInfoARM {}
4505
4506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html>
4507#[repr(C)]
4508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4509pub struct DataGraphPipelineSessionBindPointRequirementARM {
4510    pub s_type: StructureType,
4511    pub next: *const c_void,
4512    pub bind_point: DataGraphPipelineSessionBindPointARM,
4513    pub bind_point_type: DataGraphPipelineSessionBindPointTypeARM,
4514    pub num_objects: u32,
4515}
4516
4517impl Default for DataGraphPipelineSessionBindPointRequirementARM {
4518    #[inline]
4519    fn default() -> Self {
4520        Self {
4521            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM,
4522            next: ptr::null(),
4523            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4524            bind_point_type: DataGraphPipelineSessionBindPointTypeARM::default(),
4525            num_objects: u32::default(),
4526        }
4527    }
4528}
4529
4530unsafe impl Send for DataGraphPipelineSessionBindPointRequirementARM {}
4531unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementARM {}
4532
4533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html>
4534#[repr(C)]
4535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4536pub struct DataGraphPipelineSessionBindPointRequirementsInfoARM {
4537    pub s_type: StructureType,
4538    pub next: *const c_void,
4539    pub session: DataGraphPipelineSessionARM,
4540}
4541
4542impl Default for DataGraphPipelineSessionBindPointRequirementsInfoARM {
4543    #[inline]
4544    fn default() -> Self {
4545        Self {
4546            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM,
4547            next: ptr::null(),
4548            session: DataGraphPipelineSessionARM::default(),
4549        }
4550    }
4551}
4552
4553unsafe impl Send for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4554unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4555
4556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html>
4557#[repr(C)]
4558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4559pub struct DataGraphPipelineSessionCreateInfoARM {
4560    pub s_type: StructureType,
4561    pub next: *const c_void,
4562    pub flags: DataGraphPipelineSessionCreateFlagsARM,
4563    pub data_graph_pipeline: Pipeline,
4564}
4565
4566impl Default for DataGraphPipelineSessionCreateInfoARM {
4567    #[inline]
4568    fn default() -> Self {
4569        Self {
4570            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM,
4571            next: ptr::null(),
4572            flags: DataGraphPipelineSessionCreateFlagsARM::default(),
4573            data_graph_pipeline: Pipeline::default(),
4574        }
4575    }
4576}
4577
4578unsafe impl Send for DataGraphPipelineSessionCreateInfoARM {}
4579unsafe impl Sync for DataGraphPipelineSessionCreateInfoARM {}
4580
4581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html>
4582#[repr(C)]
4583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4584pub struct DataGraphPipelineSessionMemoryRequirementsInfoARM {
4585    pub s_type: StructureType,
4586    pub next: *const c_void,
4587    pub session: DataGraphPipelineSessionARM,
4588    pub bind_point: DataGraphPipelineSessionBindPointARM,
4589    pub object_index: u32,
4590}
4591
4592impl Default for DataGraphPipelineSessionMemoryRequirementsInfoARM {
4593    #[inline]
4594    fn default() -> Self {
4595        Self {
4596            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM,
4597            next: ptr::null(),
4598            session: DataGraphPipelineSessionARM::default(),
4599            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4600            object_index: u32::default(),
4601        }
4602    }
4603}
4604
4605unsafe impl Send for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4606unsafe impl Sync for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4607
4608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html>
4609#[repr(C)]
4610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4611pub struct DataGraphPipelineShaderModuleCreateInfoARM {
4612    pub s_type: StructureType,
4613    pub next: *const c_void,
4614    pub module: ShaderModule,
4615    pub name: *const c_char,
4616    pub specialization_info: *const SpecializationInfo,
4617    pub constant_count: u32,
4618    pub constants: *const DataGraphPipelineConstantARM,
4619}
4620
4621impl Default for DataGraphPipelineShaderModuleCreateInfoARM {
4622    #[inline]
4623    fn default() -> Self {
4624        Self {
4625            s_type: StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM,
4626            next: ptr::null(),
4627            module: ShaderModule::default(),
4628            name: ptr::null(),
4629            specialization_info: ptr::null(),
4630            constant_count: u32::default(),
4631            constants: ptr::null(),
4632        }
4633    }
4634}
4635
4636unsafe impl Send for DataGraphPipelineShaderModuleCreateInfoARM {}
4637unsafe impl Sync for DataGraphPipelineShaderModuleCreateInfoARM {}
4638
4639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html>
4640#[repr(C)]
4641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4642pub struct DataGraphProcessingEngineCreateInfoARM {
4643    pub s_type: StructureType,
4644    pub next: *const c_void,
4645    pub processing_engine_count: u32,
4646    pub processing_engines: *mut PhysicalDeviceDataGraphProcessingEngineARM,
4647}
4648
4649impl Default for DataGraphProcessingEngineCreateInfoARM {
4650    #[inline]
4651    fn default() -> Self {
4652        Self {
4653            s_type: StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM,
4654            next: ptr::null(),
4655            processing_engine_count: u32::default(),
4656            processing_engines: ptr::null_mut(),
4657        }
4658    }
4659}
4660
4661unsafe impl Send for DataGraphProcessingEngineCreateInfoARM {}
4662unsafe impl Sync for DataGraphProcessingEngineCreateInfoARM {}
4663
4664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
4665#[repr(C)]
4666#[derive(Copy, Clone, Debug, PartialEq)]
4667pub struct DebugMarkerMarkerInfoEXT {
4668    pub s_type: StructureType,
4669    pub next: *const c_void,
4670    pub marker_name: *const c_char,
4671    pub color: [f32; 4],
4672}
4673
4674impl Default for DebugMarkerMarkerInfoEXT {
4675    #[inline]
4676    fn default() -> Self {
4677        Self {
4678            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
4679            next: ptr::null(),
4680            marker_name: ptr::null(),
4681            color: [f32::default(); 4],
4682        }
4683    }
4684}
4685
4686unsafe impl Send for DebugMarkerMarkerInfoEXT {}
4687unsafe impl Sync for DebugMarkerMarkerInfoEXT {}
4688
4689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
4690#[repr(C)]
4691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4692pub struct DebugMarkerObjectNameInfoEXT {
4693    pub s_type: StructureType,
4694    pub next: *const c_void,
4695    pub object_type: DebugReportObjectTypeEXT,
4696    pub object: u64,
4697    pub object_name: *const c_char,
4698}
4699
4700impl Default for DebugMarkerObjectNameInfoEXT {
4701    #[inline]
4702    fn default() -> Self {
4703        Self {
4704            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
4705            next: ptr::null(),
4706            object_type: DebugReportObjectTypeEXT::default(),
4707            object: u64::default(),
4708            object_name: ptr::null(),
4709        }
4710    }
4711}
4712
4713unsafe impl Send for DebugMarkerObjectNameInfoEXT {}
4714unsafe impl Sync for DebugMarkerObjectNameInfoEXT {}
4715
4716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
4717#[repr(C)]
4718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4719pub struct DebugMarkerObjectTagInfoEXT {
4720    pub s_type: StructureType,
4721    pub next: *const c_void,
4722    pub object_type: DebugReportObjectTypeEXT,
4723    pub object: u64,
4724    pub tag_name: u64,
4725    pub tag_size: usize,
4726    pub tag: *const c_void,
4727}
4728
4729impl Default for DebugMarkerObjectTagInfoEXT {
4730    #[inline]
4731    fn default() -> Self {
4732        Self {
4733            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
4734            next: ptr::null(),
4735            object_type: DebugReportObjectTypeEXT::default(),
4736            object: u64::default(),
4737            tag_name: u64::default(),
4738            tag_size: usize::default(),
4739            tag: ptr::null(),
4740        }
4741    }
4742}
4743
4744unsafe impl Send for DebugMarkerObjectTagInfoEXT {}
4745unsafe impl Sync for DebugMarkerObjectTagInfoEXT {}
4746
4747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
4748#[repr(C)]
4749#[derive(Copy, Clone)]
4750pub struct DebugReportCallbackCreateInfoEXT {
4751    pub s_type: StructureType,
4752    pub next: *const c_void,
4753    pub flags: DebugReportFlagsEXT,
4754    pub callback: PFN_vkDebugReportCallbackEXT,
4755    pub user_data: *mut c_void,
4756}
4757
4758impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
4759    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4760        f.debug_struct("DebugReportCallbackCreateInfoEXT")
4761            .field("s_type", &self.s_type)
4762            .field("next", &self.next)
4763            .field("flags", &self.flags)
4764            .field("callback", &(self.callback.map(|f| f as *const u8)))
4765            .field("user_data", &self.user_data)
4766            .finish()
4767    }
4768}
4769
4770impl Default for DebugReportCallbackCreateInfoEXT {
4771    #[inline]
4772    fn default() -> Self {
4773        Self {
4774            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
4775            next: ptr::null(),
4776            flags: DebugReportFlagsEXT::default(),
4777            callback: PFN_vkDebugReportCallbackEXT::default(),
4778            user_data: ptr::null_mut(),
4779        }
4780    }
4781}
4782
4783unsafe impl Send for DebugReportCallbackCreateInfoEXT {}
4784unsafe impl Sync for DebugReportCallbackCreateInfoEXT {}
4785
4786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
4787#[repr(C)]
4788#[derive(Copy, Clone, Debug, PartialEq)]
4789pub struct DebugUtilsLabelEXT {
4790    pub s_type: StructureType,
4791    pub next: *const c_void,
4792    pub label_name: *const c_char,
4793    pub color: [f32; 4],
4794}
4795
4796impl Default for DebugUtilsLabelEXT {
4797    #[inline]
4798    fn default() -> Self {
4799        Self {
4800            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
4801            next: ptr::null(),
4802            label_name: ptr::null(),
4803            color: [f32::default(); 4],
4804        }
4805    }
4806}
4807
4808unsafe impl Send for DebugUtilsLabelEXT {}
4809unsafe impl Sync for DebugUtilsLabelEXT {}
4810
4811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
4812#[repr(C)]
4813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4814pub struct DebugUtilsMessengerCallbackDataEXT {
4815    pub s_type: StructureType,
4816    pub next: *const c_void,
4817    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
4818    pub message_id_name: *const c_char,
4819    pub message_id_number: i32,
4820    pub message: *const c_char,
4821    pub queue_label_count: u32,
4822    pub queue_labels: *const DebugUtilsLabelEXT,
4823    pub cmd_buf_label_count: u32,
4824    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
4825    pub object_count: u32,
4826    pub objects: *const DebugUtilsObjectNameInfoEXT,
4827}
4828
4829impl Default for DebugUtilsMessengerCallbackDataEXT {
4830    #[inline]
4831    fn default() -> Self {
4832        Self {
4833            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
4834            next: ptr::null(),
4835            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
4836            message_id_name: ptr::null(),
4837            message_id_number: i32::default(),
4838            message: ptr::null(),
4839            queue_label_count: u32::default(),
4840            queue_labels: ptr::null(),
4841            cmd_buf_label_count: u32::default(),
4842            cmd_buf_labels: ptr::null(),
4843            object_count: u32::default(),
4844            objects: ptr::null(),
4845        }
4846    }
4847}
4848
4849unsafe impl Send for DebugUtilsMessengerCallbackDataEXT {}
4850unsafe impl Sync for DebugUtilsMessengerCallbackDataEXT {}
4851
4852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
4853#[repr(C)]
4854#[derive(Copy, Clone)]
4855pub struct DebugUtilsMessengerCreateInfoEXT {
4856    pub s_type: StructureType,
4857    pub next: *const c_void,
4858    pub flags: DebugUtilsMessengerCreateFlagsEXT,
4859    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
4860    pub message_type: DebugUtilsMessageTypeFlagsEXT,
4861    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
4862    pub user_data: *mut c_void,
4863}
4864
4865impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
4866    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4867        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
4868            .field("s_type", &self.s_type)
4869            .field("next", &self.next)
4870            .field("flags", &self.flags)
4871            .field("message_severity", &self.message_severity)
4872            .field("message_type", &self.message_type)
4873            .field(
4874                "user_callback",
4875                &(self.user_callback.map(|f| f as *const u8)),
4876            )
4877            .field("user_data", &self.user_data)
4878            .finish()
4879    }
4880}
4881
4882impl Default for DebugUtilsMessengerCreateInfoEXT {
4883    #[inline]
4884    fn default() -> Self {
4885        Self {
4886            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
4887            next: ptr::null(),
4888            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
4889            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
4890            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
4891            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
4892            user_data: ptr::null_mut(),
4893        }
4894    }
4895}
4896
4897unsafe impl Send for DebugUtilsMessengerCreateInfoEXT {}
4898unsafe impl Sync for DebugUtilsMessengerCreateInfoEXT {}
4899
4900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
4901#[repr(C)]
4902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4903pub struct DebugUtilsObjectNameInfoEXT {
4904    pub s_type: StructureType,
4905    pub next: *const c_void,
4906    pub object_type: ObjectType,
4907    pub object_handle: u64,
4908    pub object_name: *const c_char,
4909}
4910
4911impl Default for DebugUtilsObjectNameInfoEXT {
4912    #[inline]
4913    fn default() -> Self {
4914        Self {
4915            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
4916            next: ptr::null(),
4917            object_type: ObjectType::default(),
4918            object_handle: u64::default(),
4919            object_name: ptr::null(),
4920        }
4921    }
4922}
4923
4924unsafe impl Send for DebugUtilsObjectNameInfoEXT {}
4925unsafe impl Sync for DebugUtilsObjectNameInfoEXT {}
4926
4927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
4928#[repr(C)]
4929#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4930pub struct DebugUtilsObjectTagInfoEXT {
4931    pub s_type: StructureType,
4932    pub next: *const c_void,
4933    pub object_type: ObjectType,
4934    pub object_handle: u64,
4935    pub tag_name: u64,
4936    pub tag_size: usize,
4937    pub tag: *const c_void,
4938}
4939
4940impl Default for DebugUtilsObjectTagInfoEXT {
4941    #[inline]
4942    fn default() -> Self {
4943        Self {
4944            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
4945            next: ptr::null(),
4946            object_type: ObjectType::default(),
4947            object_handle: u64::default(),
4948            tag_name: u64::default(),
4949            tag_size: usize::default(),
4950            tag: ptr::null(),
4951        }
4952    }
4953}
4954
4955unsafe impl Send for DebugUtilsObjectTagInfoEXT {}
4956unsafe impl Sync for DebugUtilsObjectTagInfoEXT {}
4957
4958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryInfoEXT.html>
4959#[repr(C)]
4960#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4961pub struct DecompressMemoryInfoEXT {
4962    pub s_type: StructureType,
4963    pub next: *const c_void,
4964    pub decompression_method: MemoryDecompressionMethodFlagsEXT,
4965    pub region_count: u32,
4966    pub regions: *const DecompressMemoryRegionEXT,
4967}
4968
4969impl Default for DecompressMemoryInfoEXT {
4970    #[inline]
4971    fn default() -> Self {
4972        Self {
4973            s_type: StructureType::DECOMPRESS_MEMORY_INFO_EXT,
4974            next: ptr::null(),
4975            decompression_method: MemoryDecompressionMethodFlagsEXT::default(),
4976            region_count: u32::default(),
4977            regions: ptr::null(),
4978        }
4979    }
4980}
4981
4982unsafe impl Send for DecompressMemoryInfoEXT {}
4983unsafe impl Sync for DecompressMemoryInfoEXT {}
4984
4985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionEXT.html>
4986#[repr(C)]
4987#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4988pub struct DecompressMemoryRegionEXT {
4989    pub src_address: DeviceAddress,
4990    pub dst_address: DeviceAddress,
4991    pub compressed_size: DeviceSize,
4992    pub decompressed_size: DeviceSize,
4993}
4994
4995/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
4996#[repr(C)]
4997#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4998pub struct DecompressMemoryRegionNV {
4999    pub src_address: DeviceAddress,
5000    pub dst_address: DeviceAddress,
5001    pub compressed_size: DeviceSize,
5002    pub decompressed_size: DeviceSize,
5003    pub decompression_method: MemoryDecompressionMethodFlagsNV,
5004}
5005
5006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
5007#[repr(C)]
5008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5009pub struct DedicatedAllocationBufferCreateInfoNV {
5010    pub s_type: StructureType,
5011    pub next: *const c_void,
5012    pub dedicated_allocation: Bool32,
5013}
5014
5015impl Default for DedicatedAllocationBufferCreateInfoNV {
5016    #[inline]
5017    fn default() -> Self {
5018        Self {
5019            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
5020            next: ptr::null(),
5021            dedicated_allocation: Bool32::default(),
5022        }
5023    }
5024}
5025
5026unsafe impl Send for DedicatedAllocationBufferCreateInfoNV {}
5027unsafe impl Sync for DedicatedAllocationBufferCreateInfoNV {}
5028
5029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
5030#[repr(C)]
5031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5032pub struct DedicatedAllocationImageCreateInfoNV {
5033    pub s_type: StructureType,
5034    pub next: *const c_void,
5035    pub dedicated_allocation: Bool32,
5036}
5037
5038impl Default for DedicatedAllocationImageCreateInfoNV {
5039    #[inline]
5040    fn default() -> Self {
5041        Self {
5042            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
5043            next: ptr::null(),
5044            dedicated_allocation: Bool32::default(),
5045        }
5046    }
5047}
5048
5049unsafe impl Send for DedicatedAllocationImageCreateInfoNV {}
5050unsafe impl Sync for DedicatedAllocationImageCreateInfoNV {}
5051
5052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
5053#[repr(C)]
5054#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5055pub struct DedicatedAllocationMemoryAllocateInfoNV {
5056    pub s_type: StructureType,
5057    pub next: *const c_void,
5058    pub image: Image,
5059    pub buffer: Buffer,
5060}
5061
5062impl Default for DedicatedAllocationMemoryAllocateInfoNV {
5063    #[inline]
5064    fn default() -> Self {
5065        Self {
5066            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
5067            next: ptr::null(),
5068            image: Image::default(),
5069            buffer: Buffer::default(),
5070        }
5071    }
5072}
5073
5074unsafe impl Send for DedicatedAllocationMemoryAllocateInfoNV {}
5075unsafe impl Sync for DedicatedAllocationMemoryAllocateInfoNV {}
5076
5077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
5078#[repr(C)]
5079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5080pub struct DependencyInfo {
5081    pub s_type: StructureType,
5082    pub next: *const c_void,
5083    pub dependency_flags: DependencyFlags,
5084    pub memory_barrier_count: u32,
5085    pub memory_barriers: *const MemoryBarrier2,
5086    pub buffer_memory_barrier_count: u32,
5087    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
5088    pub image_memory_barrier_count: u32,
5089    pub image_memory_barriers: *const ImageMemoryBarrier2,
5090}
5091
5092impl Default for DependencyInfo {
5093    #[inline]
5094    fn default() -> Self {
5095        Self {
5096            s_type: StructureType::DEPENDENCY_INFO,
5097            next: ptr::null(),
5098            dependency_flags: DependencyFlags::default(),
5099            memory_barrier_count: u32::default(),
5100            memory_barriers: ptr::null(),
5101            buffer_memory_barrier_count: u32::default(),
5102            buffer_memory_barriers: ptr::null(),
5103            image_memory_barrier_count: u32::default(),
5104            image_memory_barriers: ptr::null(),
5105        }
5106    }
5107}
5108
5109unsafe impl Send for DependencyInfo {}
5110unsafe impl Sync for DependencyInfo {}
5111
5112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
5113#[repr(C)]
5114#[derive(Copy, Clone, Debug, PartialEq)]
5115pub struct DepthBiasInfoEXT {
5116    pub s_type: StructureType,
5117    pub next: *const c_void,
5118    pub depth_bias_constant_factor: f32,
5119    pub depth_bias_clamp: f32,
5120    pub depth_bias_slope_factor: f32,
5121}
5122
5123impl Default for DepthBiasInfoEXT {
5124    #[inline]
5125    fn default() -> Self {
5126        Self {
5127            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
5128            next: ptr::null(),
5129            depth_bias_constant_factor: f32::default(),
5130            depth_bias_clamp: f32::default(),
5131            depth_bias_slope_factor: f32::default(),
5132        }
5133    }
5134}
5135
5136unsafe impl Send for DepthBiasInfoEXT {}
5137unsafe impl Sync for DepthBiasInfoEXT {}
5138
5139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
5140#[repr(C)]
5141#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5142pub struct DepthBiasRepresentationInfoEXT {
5143    pub s_type: StructureType,
5144    pub next: *const c_void,
5145    pub depth_bias_representation: DepthBiasRepresentationEXT,
5146    pub depth_bias_exact: Bool32,
5147}
5148
5149impl Default for DepthBiasRepresentationInfoEXT {
5150    #[inline]
5151    fn default() -> Self {
5152        Self {
5153            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
5154            next: ptr::null(),
5155            depth_bias_representation: DepthBiasRepresentationEXT::default(),
5156            depth_bias_exact: Bool32::default(),
5157        }
5158    }
5159}
5160
5161unsafe impl Send for DepthBiasRepresentationInfoEXT {}
5162unsafe impl Sync for DepthBiasRepresentationInfoEXT {}
5163
5164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
5165#[repr(C)]
5166#[derive(Copy, Clone, Default, Debug, PartialEq)]
5167pub struct DepthClampRangeEXT {
5168    pub min_depth_clamp: f32,
5169    pub max_depth_clamp: f32,
5170}
5171
5172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
5173#[repr(C)]
5174#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5175pub struct DescriptorAddressInfoEXT {
5176    pub s_type: StructureType,
5177    pub next: *mut c_void,
5178    pub address: DeviceAddress,
5179    pub range: DeviceSize,
5180    pub format: Format,
5181}
5182
5183impl Default for DescriptorAddressInfoEXT {
5184    #[inline]
5185    fn default() -> Self {
5186        Self {
5187            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
5188            next: ptr::null_mut(),
5189            address: DeviceAddress::default(),
5190            range: DeviceSize::default(),
5191            format: Format::default(),
5192        }
5193    }
5194}
5195
5196unsafe impl Send for DescriptorAddressInfoEXT {}
5197unsafe impl Sync for DescriptorAddressInfoEXT {}
5198
5199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
5200#[repr(C)]
5201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5202pub struct DescriptorBufferBindingInfoEXT {
5203    pub s_type: StructureType,
5204    pub next: *const c_void,
5205    pub address: DeviceAddress,
5206    pub usage: BufferUsageFlags,
5207}
5208
5209impl Default for DescriptorBufferBindingInfoEXT {
5210    #[inline]
5211    fn default() -> Self {
5212        Self {
5213            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
5214            next: ptr::null(),
5215            address: DeviceAddress::default(),
5216            usage: BufferUsageFlags::default(),
5217        }
5218    }
5219}
5220
5221unsafe impl Send for DescriptorBufferBindingInfoEXT {}
5222unsafe impl Sync for DescriptorBufferBindingInfoEXT {}
5223
5224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
5225#[repr(C)]
5226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5227pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5228    pub s_type: StructureType,
5229    pub next: *const c_void,
5230    pub buffer: Buffer,
5231}
5232
5233impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5234    #[inline]
5235    fn default() -> Self {
5236        Self {
5237            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
5238            next: ptr::null(),
5239            buffer: Buffer::default(),
5240        }
5241    }
5242}
5243
5244unsafe impl Send for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5245unsafe impl Sync for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5246
5247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
5248#[repr(C)]
5249#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5250pub struct DescriptorBufferInfo {
5251    pub buffer: Buffer,
5252    pub offset: DeviceSize,
5253    pub range: DeviceSize,
5254}
5255
5256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
5257#[repr(C)]
5258#[derive(Copy, Clone, Debug)]
5259pub struct DescriptorGetInfoEXT {
5260    pub s_type: StructureType,
5261    pub next: *const c_void,
5262    pub type_: DescriptorType,
5263    pub data: DescriptorDataEXT,
5264}
5265
5266impl Default for DescriptorGetInfoEXT {
5267    #[inline]
5268    fn default() -> Self {
5269        Self {
5270            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
5271            next: ptr::null(),
5272            type_: DescriptorType::default(),
5273            data: DescriptorDataEXT::default(),
5274        }
5275    }
5276}
5277
5278unsafe impl Send for DescriptorGetInfoEXT {}
5279unsafe impl Sync for DescriptorGetInfoEXT {}
5280
5281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html>
5282#[repr(C)]
5283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5284pub struct DescriptorGetTensorInfoARM {
5285    pub s_type: StructureType,
5286    pub next: *const c_void,
5287    pub tensor_view: TensorViewARM,
5288}
5289
5290impl Default for DescriptorGetTensorInfoARM {
5291    #[inline]
5292    fn default() -> Self {
5293        Self {
5294            s_type: StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM,
5295            next: ptr::null(),
5296            tensor_view: TensorViewARM::default(),
5297        }
5298    }
5299}
5300
5301unsafe impl Send for DescriptorGetTensorInfoARM {}
5302unsafe impl Sync for DescriptorGetTensorInfoARM {}
5303
5304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
5305#[repr(C)]
5306#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5307pub struct DescriptorImageInfo {
5308    pub sampler: Sampler,
5309    pub image_view: ImageView,
5310    pub image_layout: ImageLayout,
5311}
5312
5313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
5314#[repr(C)]
5315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5316pub struct DescriptorPoolCreateInfo {
5317    pub s_type: StructureType,
5318    pub next: *const c_void,
5319    pub flags: DescriptorPoolCreateFlags,
5320    pub max_sets: u32,
5321    pub pool_size_count: u32,
5322    pub pool_sizes: *const DescriptorPoolSize,
5323}
5324
5325impl Default for DescriptorPoolCreateInfo {
5326    #[inline]
5327    fn default() -> Self {
5328        Self {
5329            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
5330            next: ptr::null(),
5331            flags: DescriptorPoolCreateFlags::default(),
5332            max_sets: u32::default(),
5333            pool_size_count: u32::default(),
5334            pool_sizes: ptr::null(),
5335        }
5336    }
5337}
5338
5339unsafe impl Send for DescriptorPoolCreateInfo {}
5340unsafe impl Sync for DescriptorPoolCreateInfo {}
5341
5342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
5343#[repr(C)]
5344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5345pub struct DescriptorPoolInlineUniformBlockCreateInfo {
5346    pub s_type: StructureType,
5347    pub next: *const c_void,
5348    pub max_inline_uniform_block_bindings: u32,
5349}
5350
5351impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
5352    #[inline]
5353    fn default() -> Self {
5354        Self {
5355            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
5356            next: ptr::null(),
5357            max_inline_uniform_block_bindings: u32::default(),
5358        }
5359    }
5360}
5361
5362unsafe impl Send for DescriptorPoolInlineUniformBlockCreateInfo {}
5363unsafe impl Sync for DescriptorPoolInlineUniformBlockCreateInfo {}
5364
5365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
5366#[repr(C)]
5367#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5368pub struct DescriptorPoolSize {
5369    pub type_: DescriptorType,
5370    pub descriptor_count: u32,
5371}
5372
5373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
5374#[repr(C)]
5375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5376pub struct DescriptorSetAllocateInfo {
5377    pub s_type: StructureType,
5378    pub next: *const c_void,
5379    pub descriptor_pool: DescriptorPool,
5380    pub descriptor_set_count: u32,
5381    pub set_layouts: *const DescriptorSetLayout,
5382}
5383
5384impl Default for DescriptorSetAllocateInfo {
5385    #[inline]
5386    fn default() -> Self {
5387        Self {
5388            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
5389            next: ptr::null(),
5390            descriptor_pool: DescriptorPool::default(),
5391            descriptor_set_count: u32::default(),
5392            set_layouts: ptr::null(),
5393        }
5394    }
5395}
5396
5397unsafe impl Send for DescriptorSetAllocateInfo {}
5398unsafe impl Sync for DescriptorSetAllocateInfo {}
5399
5400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
5401#[repr(C)]
5402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5403pub struct DescriptorSetBindingReferenceVALVE {
5404    pub s_type: StructureType,
5405    pub next: *const c_void,
5406    pub descriptor_set_layout: DescriptorSetLayout,
5407    pub binding: u32,
5408}
5409
5410impl Default for DescriptorSetBindingReferenceVALVE {
5411    #[inline]
5412    fn default() -> Self {
5413        Self {
5414            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
5415            next: ptr::null(),
5416            descriptor_set_layout: DescriptorSetLayout::default(),
5417            binding: u32::default(),
5418        }
5419    }
5420}
5421
5422unsafe impl Send for DescriptorSetBindingReferenceVALVE {}
5423unsafe impl Sync for DescriptorSetBindingReferenceVALVE {}
5424
5425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
5426#[repr(C)]
5427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5428pub struct DescriptorSetLayoutBinding {
5429    pub binding: u32,
5430    pub descriptor_type: DescriptorType,
5431    pub descriptor_count: u32,
5432    pub stage_flags: ShaderStageFlags,
5433    pub immutable_samplers: *const Sampler,
5434}
5435
5436impl Default for DescriptorSetLayoutBinding {
5437    #[inline]
5438    fn default() -> Self {
5439        Self {
5440            binding: u32::default(),
5441            descriptor_type: DescriptorType::default(),
5442            descriptor_count: u32::default(),
5443            stage_flags: ShaderStageFlags::default(),
5444            immutable_samplers: ptr::null(),
5445        }
5446    }
5447}
5448
5449unsafe impl Send for DescriptorSetLayoutBinding {}
5450unsafe impl Sync for DescriptorSetLayoutBinding {}
5451
5452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
5453#[repr(C)]
5454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5455pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
5456    pub s_type: StructureType,
5457    pub next: *const c_void,
5458    pub binding_count: u32,
5459    pub binding_flags: *const DescriptorBindingFlags,
5460}
5461
5462impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
5463    #[inline]
5464    fn default() -> Self {
5465        Self {
5466            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
5467            next: ptr::null(),
5468            binding_count: u32::default(),
5469            binding_flags: ptr::null(),
5470        }
5471    }
5472}
5473
5474unsafe impl Send for DescriptorSetLayoutBindingFlagsCreateInfo {}
5475unsafe impl Sync for DescriptorSetLayoutBindingFlagsCreateInfo {}
5476
5477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
5478#[repr(C)]
5479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5480pub struct DescriptorSetLayoutCreateInfo {
5481    pub s_type: StructureType,
5482    pub next: *const c_void,
5483    pub flags: DescriptorSetLayoutCreateFlags,
5484    pub binding_count: u32,
5485    pub bindings: *const DescriptorSetLayoutBinding,
5486}
5487
5488impl Default for DescriptorSetLayoutCreateInfo {
5489    #[inline]
5490    fn default() -> Self {
5491        Self {
5492            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
5493            next: ptr::null(),
5494            flags: DescriptorSetLayoutCreateFlags::default(),
5495            binding_count: u32::default(),
5496            bindings: ptr::null(),
5497        }
5498    }
5499}
5500
5501unsafe impl Send for DescriptorSetLayoutCreateInfo {}
5502unsafe impl Sync for DescriptorSetLayoutCreateInfo {}
5503
5504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
5505#[repr(C)]
5506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5507pub struct DescriptorSetLayoutHostMappingInfoVALVE {
5508    pub s_type: StructureType,
5509    pub next: *mut c_void,
5510    pub descriptor_offset: usize,
5511    pub descriptor_size: u32,
5512}
5513
5514impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
5515    #[inline]
5516    fn default() -> Self {
5517        Self {
5518            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
5519            next: ptr::null_mut(),
5520            descriptor_offset: usize::default(),
5521            descriptor_size: u32::default(),
5522        }
5523    }
5524}
5525
5526unsafe impl Send for DescriptorSetLayoutHostMappingInfoVALVE {}
5527unsafe impl Sync for DescriptorSetLayoutHostMappingInfoVALVE {}
5528
5529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
5530#[repr(C)]
5531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5532pub struct DescriptorSetLayoutSupport {
5533    pub s_type: StructureType,
5534    pub next: *mut c_void,
5535    pub supported: Bool32,
5536}
5537
5538impl Default for DescriptorSetLayoutSupport {
5539    #[inline]
5540    fn default() -> Self {
5541        Self {
5542            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
5543            next: ptr::null_mut(),
5544            supported: Bool32::default(),
5545        }
5546    }
5547}
5548
5549unsafe impl Send for DescriptorSetLayoutSupport {}
5550unsafe impl Sync for DescriptorSetLayoutSupport {}
5551
5552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
5553#[repr(C)]
5554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5555pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
5556    pub s_type: StructureType,
5557    pub next: *const c_void,
5558    pub descriptor_set_count: u32,
5559    pub descriptor_counts: *const u32,
5560}
5561
5562impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
5563    #[inline]
5564    fn default() -> Self {
5565        Self {
5566            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
5567            next: ptr::null(),
5568            descriptor_set_count: u32::default(),
5569            descriptor_counts: ptr::null(),
5570        }
5571    }
5572}
5573
5574unsafe impl Send for DescriptorSetVariableDescriptorCountAllocateInfo {}
5575unsafe impl Sync for DescriptorSetVariableDescriptorCountAllocateInfo {}
5576
5577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
5578#[repr(C)]
5579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5580pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
5581    pub s_type: StructureType,
5582    pub next: *mut c_void,
5583    pub max_variable_descriptor_count: u32,
5584}
5585
5586impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
5587    #[inline]
5588    fn default() -> Self {
5589        Self {
5590            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
5591            next: ptr::null_mut(),
5592            max_variable_descriptor_count: u32::default(),
5593        }
5594    }
5595}
5596
5597unsafe impl Send for DescriptorSetVariableDescriptorCountLayoutSupport {}
5598unsafe impl Sync for DescriptorSetVariableDescriptorCountLayoutSupport {}
5599
5600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
5601#[repr(C)]
5602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5603pub struct DescriptorUpdateTemplateCreateInfo {
5604    pub s_type: StructureType,
5605    pub next: *const c_void,
5606    pub flags: DescriptorUpdateTemplateCreateFlags,
5607    pub descriptor_update_entry_count: u32,
5608    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
5609    pub template_type: DescriptorUpdateTemplateType,
5610    pub descriptor_set_layout: DescriptorSetLayout,
5611    pub pipeline_bind_point: PipelineBindPoint,
5612    pub pipeline_layout: PipelineLayout,
5613    pub set: u32,
5614}
5615
5616impl Default for DescriptorUpdateTemplateCreateInfo {
5617    #[inline]
5618    fn default() -> Self {
5619        Self {
5620            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
5621            next: ptr::null(),
5622            flags: DescriptorUpdateTemplateCreateFlags::default(),
5623            descriptor_update_entry_count: u32::default(),
5624            descriptor_update_entries: ptr::null(),
5625            template_type: DescriptorUpdateTemplateType::default(),
5626            descriptor_set_layout: DescriptorSetLayout::default(),
5627            pipeline_bind_point: PipelineBindPoint::default(),
5628            pipeline_layout: PipelineLayout::default(),
5629            set: u32::default(),
5630        }
5631    }
5632}
5633
5634unsafe impl Send for DescriptorUpdateTemplateCreateInfo {}
5635unsafe impl Sync for DescriptorUpdateTemplateCreateInfo {}
5636
5637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
5638#[repr(C)]
5639#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5640pub struct DescriptorUpdateTemplateEntry {
5641    pub dst_binding: u32,
5642    pub dst_array_element: u32,
5643    pub descriptor_count: u32,
5644    pub descriptor_type: DescriptorType,
5645    pub offset: usize,
5646    pub stride: usize,
5647}
5648
5649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
5650#[repr(C)]
5651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5652pub struct DeviceAddressBindingCallbackDataEXT {
5653    pub s_type: StructureType,
5654    pub next: *mut c_void,
5655    pub flags: DeviceAddressBindingFlagsEXT,
5656    pub base_address: DeviceAddress,
5657    pub size: DeviceSize,
5658    pub binding_type: DeviceAddressBindingTypeEXT,
5659}
5660
5661impl Default for DeviceAddressBindingCallbackDataEXT {
5662    #[inline]
5663    fn default() -> Self {
5664        Self {
5665            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
5666            next: ptr::null_mut(),
5667            flags: DeviceAddressBindingFlagsEXT::default(),
5668            base_address: DeviceAddress::default(),
5669            size: DeviceSize::default(),
5670            binding_type: DeviceAddressBindingTypeEXT::default(),
5671        }
5672    }
5673}
5674
5675unsafe impl Send for DeviceAddressBindingCallbackDataEXT {}
5676unsafe impl Sync for DeviceAddressBindingCallbackDataEXT {}
5677
5678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
5679#[repr(C)]
5680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5681pub struct DeviceBufferMemoryRequirements {
5682    pub s_type: StructureType,
5683    pub next: *const c_void,
5684    pub create_info: *const BufferCreateInfo,
5685}
5686
5687impl Default for DeviceBufferMemoryRequirements {
5688    #[inline]
5689    fn default() -> Self {
5690        Self {
5691            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
5692            next: ptr::null(),
5693            create_info: ptr::null(),
5694        }
5695    }
5696}
5697
5698unsafe impl Send for DeviceBufferMemoryRequirements {}
5699unsafe impl Sync for DeviceBufferMemoryRequirements {}
5700
5701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
5702#[repr(C)]
5703#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5704pub struct DeviceCreateInfo {
5705    pub s_type: StructureType,
5706    pub next: *const c_void,
5707    pub flags: DeviceCreateFlags,
5708    pub queue_create_info_count: u32,
5709    pub queue_create_infos: *const DeviceQueueCreateInfo,
5710    pub enabled_layer_count: u32,
5711    pub enabled_layer_names: *const *const c_char,
5712    pub enabled_extension_count: u32,
5713    pub enabled_extension_names: *const *const c_char,
5714    pub enabled_features: *const PhysicalDeviceFeatures,
5715}
5716
5717impl Default for DeviceCreateInfo {
5718    #[inline]
5719    fn default() -> Self {
5720        Self {
5721            s_type: StructureType::DEVICE_CREATE_INFO,
5722            next: ptr::null(),
5723            flags: DeviceCreateFlags::default(),
5724            queue_create_info_count: u32::default(),
5725            queue_create_infos: ptr::null(),
5726            enabled_layer_count: u32::default(),
5727            enabled_layer_names: ptr::null(),
5728            enabled_extension_count: u32::default(),
5729            enabled_extension_names: ptr::null(),
5730            enabled_features: ptr::null(),
5731        }
5732    }
5733}
5734
5735unsafe impl Send for DeviceCreateInfo {}
5736unsafe impl Sync for DeviceCreateInfo {}
5737
5738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
5739#[repr(C)]
5740#[derive(Copy, Clone)]
5741pub struct DeviceDeviceMemoryReportCreateInfoEXT {
5742    pub s_type: StructureType,
5743    pub next: *const c_void,
5744    pub flags: DeviceMemoryReportFlagsEXT,
5745    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
5746    pub user_data: *mut c_void,
5747}
5748
5749impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
5750    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5751        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
5752            .field("s_type", &self.s_type)
5753            .field("next", &self.next)
5754            .field("flags", &self.flags)
5755            .field(
5756                "user_callback",
5757                &(self.user_callback.map(|f| f as *const u8)),
5758            )
5759            .field("user_data", &self.user_data)
5760            .finish()
5761    }
5762}
5763
5764impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
5765    #[inline]
5766    fn default() -> Self {
5767        Self {
5768            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
5769            next: ptr::null(),
5770            flags: DeviceMemoryReportFlagsEXT::default(),
5771            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
5772            user_data: ptr::null_mut(),
5773        }
5774    }
5775}
5776
5777unsafe impl Send for DeviceDeviceMemoryReportCreateInfoEXT {}
5778unsafe impl Sync for DeviceDeviceMemoryReportCreateInfoEXT {}
5779
5780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
5781#[repr(C)]
5782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5783pub struct DeviceDiagnosticsConfigCreateInfoNV {
5784    pub s_type: StructureType,
5785    pub next: *const c_void,
5786    pub flags: DeviceDiagnosticsConfigFlagsNV,
5787}
5788
5789impl Default for DeviceDiagnosticsConfigCreateInfoNV {
5790    #[inline]
5791    fn default() -> Self {
5792        Self {
5793            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
5794            next: ptr::null(),
5795            flags: DeviceDiagnosticsConfigFlagsNV::default(),
5796        }
5797    }
5798}
5799
5800unsafe impl Send for DeviceDiagnosticsConfigCreateInfoNV {}
5801unsafe impl Sync for DeviceDiagnosticsConfigCreateInfoNV {}
5802
5803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
5804#[repr(C)]
5805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5806pub struct DeviceEventInfoEXT {
5807    pub s_type: StructureType,
5808    pub next: *const c_void,
5809    pub device_event: DeviceEventTypeEXT,
5810}
5811
5812impl Default for DeviceEventInfoEXT {
5813    #[inline]
5814    fn default() -> Self {
5815        Self {
5816            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
5817            next: ptr::null(),
5818            device_event: DeviceEventTypeEXT::default(),
5819        }
5820    }
5821}
5822
5823unsafe impl Send for DeviceEventInfoEXT {}
5824unsafe impl Sync for DeviceEventInfoEXT {}
5825
5826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
5827#[repr(C)]
5828#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5829pub struct DeviceFaultAddressInfoEXT {
5830    pub address_type: DeviceFaultAddressTypeEXT,
5831    pub reported_address: DeviceAddress,
5832    pub address_precision: DeviceSize,
5833}
5834
5835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
5836#[repr(C)]
5837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5838pub struct DeviceFaultCountsEXT {
5839    pub s_type: StructureType,
5840    pub next: *mut c_void,
5841    pub address_info_count: u32,
5842    pub vendor_info_count: u32,
5843    pub vendor_binary_size: DeviceSize,
5844}
5845
5846impl Default for DeviceFaultCountsEXT {
5847    #[inline]
5848    fn default() -> Self {
5849        Self {
5850            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
5851            next: ptr::null_mut(),
5852            address_info_count: u32::default(),
5853            vendor_info_count: u32::default(),
5854            vendor_binary_size: DeviceSize::default(),
5855        }
5856    }
5857}
5858
5859unsafe impl Send for DeviceFaultCountsEXT {}
5860unsafe impl Sync for DeviceFaultCountsEXT {}
5861
5862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
5863#[repr(C)]
5864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5865pub struct DeviceFaultInfoEXT {
5866    pub s_type: StructureType,
5867    pub next: *mut c_void,
5868    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5869    pub address_infos: *mut DeviceFaultAddressInfoEXT,
5870    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
5871    pub vendor_binary_data: *mut c_void,
5872}
5873
5874impl Default for DeviceFaultInfoEXT {
5875    #[inline]
5876    fn default() -> Self {
5877        Self {
5878            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
5879            next: ptr::null_mut(),
5880            description: StringArray::default(),
5881            address_infos: ptr::null_mut(),
5882            vendor_infos: ptr::null_mut(),
5883            vendor_binary_data: ptr::null_mut(),
5884        }
5885    }
5886}
5887
5888unsafe impl Send for DeviceFaultInfoEXT {}
5889unsafe impl Sync for DeviceFaultInfoEXT {}
5890
5891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
5892#[repr(C)]
5893#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5894pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
5895    pub header_size: u32,
5896    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
5897    pub vendor_id: u32,
5898    pub device_id: u32,
5899    pub driver_version: u32,
5900    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
5901    pub application_name_offset: u32,
5902    pub application_version: u32,
5903    pub engine_name_offset: u32,
5904    pub engine_version: u32,
5905    pub api_version: u32,
5906}
5907
5908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
5909#[repr(C)]
5910#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5911pub struct DeviceFaultVendorInfoEXT {
5912    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5913    pub vendor_fault_code: u64,
5914    pub vendor_fault_data: u64,
5915}
5916
5917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
5918#[repr(C)]
5919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5920pub struct DeviceGroupBindSparseInfo {
5921    pub s_type: StructureType,
5922    pub next: *const c_void,
5923    pub resource_device_index: u32,
5924    pub memory_device_index: u32,
5925}
5926
5927impl Default for DeviceGroupBindSparseInfo {
5928    #[inline]
5929    fn default() -> Self {
5930        Self {
5931            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
5932            next: ptr::null(),
5933            resource_device_index: u32::default(),
5934            memory_device_index: u32::default(),
5935        }
5936    }
5937}
5938
5939unsafe impl Send for DeviceGroupBindSparseInfo {}
5940unsafe impl Sync for DeviceGroupBindSparseInfo {}
5941
5942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
5943#[repr(C)]
5944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5945pub struct DeviceGroupCommandBufferBeginInfo {
5946    pub s_type: StructureType,
5947    pub next: *const c_void,
5948    pub device_mask: u32,
5949}
5950
5951impl Default for DeviceGroupCommandBufferBeginInfo {
5952    #[inline]
5953    fn default() -> Self {
5954        Self {
5955            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
5956            next: ptr::null(),
5957            device_mask: u32::default(),
5958        }
5959    }
5960}
5961
5962unsafe impl Send for DeviceGroupCommandBufferBeginInfo {}
5963unsafe impl Sync for DeviceGroupCommandBufferBeginInfo {}
5964
5965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
5966#[repr(C)]
5967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5968pub struct DeviceGroupDeviceCreateInfo {
5969    pub s_type: StructureType,
5970    pub next: *const c_void,
5971    pub physical_device_count: u32,
5972    pub physical_devices: *const PhysicalDevice,
5973}
5974
5975impl Default for DeviceGroupDeviceCreateInfo {
5976    #[inline]
5977    fn default() -> Self {
5978        Self {
5979            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
5980            next: ptr::null(),
5981            physical_device_count: u32::default(),
5982            physical_devices: ptr::null(),
5983        }
5984    }
5985}
5986
5987unsafe impl Send for DeviceGroupDeviceCreateInfo {}
5988unsafe impl Sync for DeviceGroupDeviceCreateInfo {}
5989
5990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
5991#[repr(C)]
5992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5993pub struct DeviceGroupPresentCapabilitiesKHR {
5994    pub s_type: StructureType,
5995    pub next: *mut c_void,
5996    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE as usize],
5997    pub modes: DeviceGroupPresentModeFlagsKHR,
5998}
5999
6000impl Default for DeviceGroupPresentCapabilitiesKHR {
6001    #[inline]
6002    fn default() -> Self {
6003        Self {
6004            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
6005            next: ptr::null_mut(),
6006            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
6007            modes: DeviceGroupPresentModeFlagsKHR::default(),
6008        }
6009    }
6010}
6011
6012unsafe impl Send for DeviceGroupPresentCapabilitiesKHR {}
6013unsafe impl Sync for DeviceGroupPresentCapabilitiesKHR {}
6014
6015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
6016#[repr(C)]
6017#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6018pub struct DeviceGroupPresentInfoKHR {
6019    pub s_type: StructureType,
6020    pub next: *const c_void,
6021    pub swapchain_count: u32,
6022    pub device_masks: *const u32,
6023    pub mode: DeviceGroupPresentModeFlagsKHR,
6024}
6025
6026impl Default for DeviceGroupPresentInfoKHR {
6027    #[inline]
6028    fn default() -> Self {
6029        Self {
6030            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
6031            next: ptr::null(),
6032            swapchain_count: u32::default(),
6033            device_masks: ptr::null(),
6034            mode: DeviceGroupPresentModeFlagsKHR::default(),
6035        }
6036    }
6037}
6038
6039unsafe impl Send for DeviceGroupPresentInfoKHR {}
6040unsafe impl Sync for DeviceGroupPresentInfoKHR {}
6041
6042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
6043#[repr(C)]
6044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6045pub struct DeviceGroupRenderPassBeginInfo {
6046    pub s_type: StructureType,
6047    pub next: *const c_void,
6048    pub device_mask: u32,
6049    pub device_render_area_count: u32,
6050    pub device_render_areas: *const Rect2D,
6051}
6052
6053impl Default for DeviceGroupRenderPassBeginInfo {
6054    #[inline]
6055    fn default() -> Self {
6056        Self {
6057            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
6058            next: ptr::null(),
6059            device_mask: u32::default(),
6060            device_render_area_count: u32::default(),
6061            device_render_areas: ptr::null(),
6062        }
6063    }
6064}
6065
6066unsafe impl Send for DeviceGroupRenderPassBeginInfo {}
6067unsafe impl Sync for DeviceGroupRenderPassBeginInfo {}
6068
6069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
6070#[repr(C)]
6071#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6072pub struct DeviceGroupSubmitInfo {
6073    pub s_type: StructureType,
6074    pub next: *const c_void,
6075    pub wait_semaphore_count: u32,
6076    pub wait_semaphore_device_indices: *const u32,
6077    pub command_buffer_count: u32,
6078    pub command_buffer_device_masks: *const u32,
6079    pub signal_semaphore_count: u32,
6080    pub signal_semaphore_device_indices: *const u32,
6081}
6082
6083impl Default for DeviceGroupSubmitInfo {
6084    #[inline]
6085    fn default() -> Self {
6086        Self {
6087            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
6088            next: ptr::null(),
6089            wait_semaphore_count: u32::default(),
6090            wait_semaphore_device_indices: ptr::null(),
6091            command_buffer_count: u32::default(),
6092            command_buffer_device_masks: ptr::null(),
6093            signal_semaphore_count: u32::default(),
6094            signal_semaphore_device_indices: ptr::null(),
6095        }
6096    }
6097}
6098
6099unsafe impl Send for DeviceGroupSubmitInfo {}
6100unsafe impl Sync for DeviceGroupSubmitInfo {}
6101
6102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
6103#[repr(C)]
6104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6105pub struct DeviceGroupSwapchainCreateInfoKHR {
6106    pub s_type: StructureType,
6107    pub next: *const c_void,
6108    pub modes: DeviceGroupPresentModeFlagsKHR,
6109}
6110
6111impl Default for DeviceGroupSwapchainCreateInfoKHR {
6112    #[inline]
6113    fn default() -> Self {
6114        Self {
6115            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
6116            next: ptr::null(),
6117            modes: DeviceGroupPresentModeFlagsKHR::default(),
6118        }
6119    }
6120}
6121
6122unsafe impl Send for DeviceGroupSwapchainCreateInfoKHR {}
6123unsafe impl Sync for DeviceGroupSwapchainCreateInfoKHR {}
6124
6125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
6126#[repr(C)]
6127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6128pub struct DeviceImageMemoryRequirements {
6129    pub s_type: StructureType,
6130    pub next: *const c_void,
6131    pub create_info: *const ImageCreateInfo,
6132    pub plane_aspect: ImageAspectFlags,
6133}
6134
6135impl Default for DeviceImageMemoryRequirements {
6136    #[inline]
6137    fn default() -> Self {
6138        Self {
6139            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
6140            next: ptr::null(),
6141            create_info: ptr::null(),
6142            plane_aspect: ImageAspectFlags::default(),
6143        }
6144    }
6145}
6146
6147unsafe impl Send for DeviceImageMemoryRequirements {}
6148unsafe impl Sync for DeviceImageMemoryRequirements {}
6149
6150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
6151#[repr(C)]
6152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6153pub struct DeviceImageSubresourceInfo {
6154    pub s_type: StructureType,
6155    pub next: *const c_void,
6156    pub create_info: *const ImageCreateInfo,
6157    pub subresource: *const ImageSubresource2,
6158}
6159
6160impl Default for DeviceImageSubresourceInfo {
6161    #[inline]
6162    fn default() -> Self {
6163        Self {
6164            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
6165            next: ptr::null(),
6166            create_info: ptr::null(),
6167            subresource: ptr::null(),
6168        }
6169    }
6170}
6171
6172unsafe impl Send for DeviceImageSubresourceInfo {}
6173unsafe impl Sync for DeviceImageSubresourceInfo {}
6174
6175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
6176#[repr(C)]
6177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6178pub struct DeviceMemoryOpaqueCaptureAddressInfo {
6179    pub s_type: StructureType,
6180    pub next: *const c_void,
6181    pub memory: DeviceMemory,
6182}
6183
6184impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
6185    #[inline]
6186    fn default() -> Self {
6187        Self {
6188            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
6189            next: ptr::null(),
6190            memory: DeviceMemory::default(),
6191        }
6192    }
6193}
6194
6195unsafe impl Send for DeviceMemoryOpaqueCaptureAddressInfo {}
6196unsafe impl Sync for DeviceMemoryOpaqueCaptureAddressInfo {}
6197
6198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
6199#[repr(C)]
6200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6201pub struct DeviceMemoryOverallocationCreateInfoAMD {
6202    pub s_type: StructureType,
6203    pub next: *const c_void,
6204    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
6205}
6206
6207impl Default for DeviceMemoryOverallocationCreateInfoAMD {
6208    #[inline]
6209    fn default() -> Self {
6210        Self {
6211            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
6212            next: ptr::null(),
6213            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
6214        }
6215    }
6216}
6217
6218unsafe impl Send for DeviceMemoryOverallocationCreateInfoAMD {}
6219unsafe impl Sync for DeviceMemoryOverallocationCreateInfoAMD {}
6220
6221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
6222#[repr(C)]
6223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6224pub struct DeviceMemoryReportCallbackDataEXT {
6225    pub s_type: StructureType,
6226    pub next: *mut c_void,
6227    pub flags: DeviceMemoryReportFlagsEXT,
6228    pub type_: DeviceMemoryReportEventTypeEXT,
6229    pub memory_object_id: u64,
6230    pub size: DeviceSize,
6231    pub object_type: ObjectType,
6232    pub object_handle: u64,
6233    pub heap_index: u32,
6234}
6235
6236impl Default for DeviceMemoryReportCallbackDataEXT {
6237    #[inline]
6238    fn default() -> Self {
6239        Self {
6240            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
6241            next: ptr::null_mut(),
6242            flags: DeviceMemoryReportFlagsEXT::default(),
6243            type_: DeviceMemoryReportEventTypeEXT::default(),
6244            memory_object_id: u64::default(),
6245            size: DeviceSize::default(),
6246            object_type: ObjectType::default(),
6247            object_handle: u64::default(),
6248            heap_index: u32::default(),
6249        }
6250    }
6251}
6252
6253unsafe impl Send for DeviceMemoryReportCallbackDataEXT {}
6254unsafe impl Sync for DeviceMemoryReportCallbackDataEXT {}
6255
6256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
6257#[repr(C)]
6258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6259pub struct DevicePipelineBinaryInternalCacheControlKHR {
6260    pub s_type: StructureType,
6261    pub next: *const c_void,
6262    pub disable_internal_cache: Bool32,
6263}
6264
6265impl Default for DevicePipelineBinaryInternalCacheControlKHR {
6266    #[inline]
6267    fn default() -> Self {
6268        Self {
6269            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
6270            next: ptr::null(),
6271            disable_internal_cache: Bool32::default(),
6272        }
6273    }
6274}
6275
6276unsafe impl Send for DevicePipelineBinaryInternalCacheControlKHR {}
6277unsafe impl Sync for DevicePipelineBinaryInternalCacheControlKHR {}
6278
6279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
6280#[repr(C)]
6281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6282pub struct DevicePrivateDataCreateInfo {
6283    pub s_type: StructureType,
6284    pub next: *const c_void,
6285    pub private_data_slot_request_count: u32,
6286}
6287
6288impl Default for DevicePrivateDataCreateInfo {
6289    #[inline]
6290    fn default() -> Self {
6291        Self {
6292            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
6293            next: ptr::null(),
6294            private_data_slot_request_count: u32::default(),
6295        }
6296    }
6297}
6298
6299unsafe impl Send for DevicePrivateDataCreateInfo {}
6300unsafe impl Sync for DevicePrivateDataCreateInfo {}
6301
6302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
6303#[repr(C)]
6304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6305pub struct DeviceQueueCreateInfo {
6306    pub s_type: StructureType,
6307    pub next: *const c_void,
6308    pub flags: DeviceQueueCreateFlags,
6309    pub queue_family_index: u32,
6310    pub queue_count: u32,
6311    pub queue_priorities: *const f32,
6312}
6313
6314impl Default for DeviceQueueCreateInfo {
6315    #[inline]
6316    fn default() -> Self {
6317        Self {
6318            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
6319            next: ptr::null(),
6320            flags: DeviceQueueCreateFlags::default(),
6321            queue_family_index: u32::default(),
6322            queue_count: u32::default(),
6323            queue_priorities: ptr::null(),
6324        }
6325    }
6326}
6327
6328unsafe impl Send for DeviceQueueCreateInfo {}
6329unsafe impl Sync for DeviceQueueCreateInfo {}
6330
6331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
6332#[repr(C)]
6333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6334pub struct DeviceQueueGlobalPriorityCreateInfo {
6335    pub s_type: StructureType,
6336    pub next: *const c_void,
6337    pub global_priority: QueueGlobalPriority,
6338}
6339
6340impl Default for DeviceQueueGlobalPriorityCreateInfo {
6341    #[inline]
6342    fn default() -> Self {
6343        Self {
6344            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
6345            next: ptr::null(),
6346            global_priority: QueueGlobalPriority::default(),
6347        }
6348    }
6349}
6350
6351unsafe impl Send for DeviceQueueGlobalPriorityCreateInfo {}
6352unsafe impl Sync for DeviceQueueGlobalPriorityCreateInfo {}
6353
6354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
6355#[repr(C)]
6356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6357pub struct DeviceQueueInfo2 {
6358    pub s_type: StructureType,
6359    pub next: *const c_void,
6360    pub flags: DeviceQueueCreateFlags,
6361    pub queue_family_index: u32,
6362    pub queue_index: u32,
6363}
6364
6365impl Default for DeviceQueueInfo2 {
6366    #[inline]
6367    fn default() -> Self {
6368        Self {
6369            s_type: StructureType::DEVICE_QUEUE_INFO_2,
6370            next: ptr::null(),
6371            flags: DeviceQueueCreateFlags::default(),
6372            queue_family_index: u32::default(),
6373            queue_index: u32::default(),
6374        }
6375    }
6376}
6377
6378unsafe impl Send for DeviceQueueInfo2 {}
6379unsafe impl Sync for DeviceQueueInfo2 {}
6380
6381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
6382#[repr(C)]
6383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6384pub struct DeviceQueueShaderCoreControlCreateInfoARM {
6385    pub s_type: StructureType,
6386    pub next: *mut c_void,
6387    pub shader_core_count: u32,
6388}
6389
6390impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
6391    #[inline]
6392    fn default() -> Self {
6393        Self {
6394            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
6395            next: ptr::null_mut(),
6396            shader_core_count: u32::default(),
6397        }
6398    }
6399}
6400
6401unsafe impl Send for DeviceQueueShaderCoreControlCreateInfoARM {}
6402unsafe impl Sync for DeviceQueueShaderCoreControlCreateInfoARM {}
6403
6404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
6405#[repr(C)]
6406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6407pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6408    pub s_type: StructureType,
6409    pub next: *const c_void,
6410    pub semaphore_sci_sync_pool_request_count: u32,
6411}
6412
6413impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6414    #[inline]
6415    fn default() -> Self {
6416        Self {
6417            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
6418            next: ptr::null(),
6419            semaphore_sci_sync_pool_request_count: u32::default(),
6420        }
6421    }
6422}
6423
6424unsafe impl Send for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6425unsafe impl Sync for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6426
6427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html>
6428#[repr(C)]
6429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6430pub struct DeviceTensorMemoryRequirementsARM {
6431    pub s_type: StructureType,
6432    pub next: *const c_void,
6433    pub create_info: *const TensorCreateInfoARM,
6434}
6435
6436impl Default for DeviceTensorMemoryRequirementsARM {
6437    #[inline]
6438    fn default() -> Self {
6439        Self {
6440            s_type: StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM,
6441            next: ptr::null(),
6442            create_info: ptr::null(),
6443        }
6444    }
6445}
6446
6447unsafe impl Send for DeviceTensorMemoryRequirementsARM {}
6448unsafe impl Sync for DeviceTensorMemoryRequirementsARM {}
6449
6450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
6451#[repr(C)]
6452#[derive(Copy, Clone)]
6453pub struct DirectDriverLoadingInfoLUNARG {
6454    pub s_type: StructureType,
6455    pub next: *mut c_void,
6456    pub flags: DirectDriverLoadingFlagsLUNARG,
6457    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
6458}
6459
6460impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
6461    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6462        f.debug_struct("DirectDriverLoadingInfoLUNARG")
6463            .field("s_type", &self.s_type)
6464            .field("next", &self.next)
6465            .field("flags", &self.flags)
6466            .field(
6467                "get_instance_proc_addr",
6468                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
6469            )
6470            .finish()
6471    }
6472}
6473
6474impl Default for DirectDriverLoadingInfoLUNARG {
6475    #[inline]
6476    fn default() -> Self {
6477        Self {
6478            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
6479            next: ptr::null_mut(),
6480            flags: DirectDriverLoadingFlagsLUNARG::default(),
6481            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
6482        }
6483    }
6484}
6485
6486unsafe impl Send for DirectDriverLoadingInfoLUNARG {}
6487unsafe impl Sync for DirectDriverLoadingInfoLUNARG {}
6488
6489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
6490#[repr(C)]
6491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6492pub struct DirectDriverLoadingListLUNARG {
6493    pub s_type: StructureType,
6494    pub next: *const c_void,
6495    pub mode: DirectDriverLoadingModeLUNARG,
6496    pub driver_count: u32,
6497    pub drivers: *const DirectDriverLoadingInfoLUNARG,
6498}
6499
6500impl Default for DirectDriverLoadingListLUNARG {
6501    #[inline]
6502    fn default() -> Self {
6503        Self {
6504            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
6505            next: ptr::null(),
6506            mode: DirectDriverLoadingModeLUNARG::default(),
6507            driver_count: u32::default(),
6508            drivers: ptr::null(),
6509        }
6510    }
6511}
6512
6513unsafe impl Send for DirectDriverLoadingListLUNARG {}
6514unsafe impl Sync for DirectDriverLoadingListLUNARG {}
6515
6516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
6517#[repr(C)]
6518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6519pub struct DirectFBSurfaceCreateInfoEXT {
6520    pub s_type: StructureType,
6521    pub next: *const c_void,
6522    pub flags: DirectFBSurfaceCreateFlagsEXT,
6523    pub dfb: *mut IDirectFB,
6524    pub surface: *mut IDirectFBSurface,
6525}
6526
6527impl Default for DirectFBSurfaceCreateInfoEXT {
6528    #[inline]
6529    fn default() -> Self {
6530        Self {
6531            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
6532            next: ptr::null(),
6533            flags: DirectFBSurfaceCreateFlagsEXT::default(),
6534            dfb: ptr::null_mut(),
6535            surface: ptr::null_mut(),
6536        }
6537    }
6538}
6539
6540unsafe impl Send for DirectFBSurfaceCreateInfoEXT {}
6541unsafe impl Sync for DirectFBSurfaceCreateInfoEXT {}
6542
6543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
6544#[repr(C)]
6545#[derive(Copy, Clone, Default, Debug)]
6546pub struct DispatchGraphCountInfoAMDX {
6547    pub count: u32,
6548    pub infos: DeviceOrHostAddressConstAMDX,
6549    pub stride: u64,
6550}
6551
6552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
6553#[repr(C)]
6554#[derive(Copy, Clone, Default, Debug)]
6555pub struct DispatchGraphInfoAMDX {
6556    pub node_index: u32,
6557    pub payload_count: u32,
6558    pub payloads: DeviceOrHostAddressConstAMDX,
6559    pub payload_stride: u64,
6560}
6561
6562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
6563#[repr(C)]
6564#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6565pub struct DispatchIndirectCommand {
6566    pub x: u32,
6567    pub y: u32,
6568    pub z: u32,
6569}
6570
6571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html>
6572#[repr(C)]
6573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6574pub struct DispatchTileInfoQCOM {
6575    pub s_type: StructureType,
6576    pub next: *const c_void,
6577}
6578
6579impl Default for DispatchTileInfoQCOM {
6580    #[inline]
6581    fn default() -> Self {
6582        Self {
6583            s_type: StructureType::DISPATCH_TILE_INFO_QCOM,
6584            next: ptr::null(),
6585        }
6586    }
6587}
6588
6589unsafe impl Send for DispatchTileInfoQCOM {}
6590unsafe impl Sync for DispatchTileInfoQCOM {}
6591
6592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
6593#[repr(C)]
6594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6595pub struct DisplayEventInfoEXT {
6596    pub s_type: StructureType,
6597    pub next: *const c_void,
6598    pub display_event: DisplayEventTypeEXT,
6599}
6600
6601impl Default for DisplayEventInfoEXT {
6602    #[inline]
6603    fn default() -> Self {
6604        Self {
6605            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
6606            next: ptr::null(),
6607            display_event: DisplayEventTypeEXT::default(),
6608        }
6609    }
6610}
6611
6612unsafe impl Send for DisplayEventInfoEXT {}
6613unsafe impl Sync for DisplayEventInfoEXT {}
6614
6615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
6616#[repr(C)]
6617#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6618pub struct DisplayModeCreateInfoKHR {
6619    pub s_type: StructureType,
6620    pub next: *const c_void,
6621    pub flags: DisplayModeCreateFlagsKHR,
6622    pub parameters: DisplayModeParametersKHR,
6623}
6624
6625impl Default for DisplayModeCreateInfoKHR {
6626    #[inline]
6627    fn default() -> Self {
6628        Self {
6629            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
6630            next: ptr::null(),
6631            flags: DisplayModeCreateFlagsKHR::default(),
6632            parameters: DisplayModeParametersKHR::default(),
6633        }
6634    }
6635}
6636
6637unsafe impl Send for DisplayModeCreateInfoKHR {}
6638unsafe impl Sync for DisplayModeCreateInfoKHR {}
6639
6640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
6641#[repr(C)]
6642#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6643pub struct DisplayModeParametersKHR {
6644    pub visible_region: Extent2D,
6645    pub refresh_rate: u32,
6646}
6647
6648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
6649#[repr(C)]
6650#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6651pub struct DisplayModeProperties2KHR {
6652    pub s_type: StructureType,
6653    pub next: *mut c_void,
6654    pub display_mode_properties: DisplayModePropertiesKHR,
6655}
6656
6657impl Default for DisplayModeProperties2KHR {
6658    #[inline]
6659    fn default() -> Self {
6660        Self {
6661            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
6662            next: ptr::null_mut(),
6663            display_mode_properties: DisplayModePropertiesKHR::default(),
6664        }
6665    }
6666}
6667
6668unsafe impl Send for DisplayModeProperties2KHR {}
6669unsafe impl Sync for DisplayModeProperties2KHR {}
6670
6671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
6672#[repr(C)]
6673#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6674pub struct DisplayModePropertiesKHR {
6675    pub display_mode: DisplayModeKHR,
6676    pub parameters: DisplayModeParametersKHR,
6677}
6678
6679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
6680#[repr(C)]
6681#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6682pub struct DisplayModeStereoPropertiesNV {
6683    pub s_type: StructureType,
6684    pub next: *const c_void,
6685    pub hdmi_3d_supported: Bool32,
6686}
6687
6688impl Default for DisplayModeStereoPropertiesNV {
6689    #[inline]
6690    fn default() -> Self {
6691        Self {
6692            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
6693            next: ptr::null(),
6694            hdmi_3d_supported: Bool32::default(),
6695        }
6696    }
6697}
6698
6699unsafe impl Send for DisplayModeStereoPropertiesNV {}
6700unsafe impl Sync for DisplayModeStereoPropertiesNV {}
6701
6702/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
6703#[repr(C)]
6704#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6705pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
6706    pub s_type: StructureType,
6707    pub next: *mut c_void,
6708    pub local_dimming_support: Bool32,
6709}
6710
6711impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
6712    #[inline]
6713    fn default() -> Self {
6714        Self {
6715            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
6716            next: ptr::null_mut(),
6717            local_dimming_support: Bool32::default(),
6718        }
6719    }
6720}
6721
6722unsafe impl Send for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6723unsafe impl Sync for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6724
6725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
6726#[repr(C)]
6727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6728pub struct DisplayPlaneCapabilities2KHR {
6729    pub s_type: StructureType,
6730    pub next: *mut c_void,
6731    pub capabilities: DisplayPlaneCapabilitiesKHR,
6732}
6733
6734impl Default for DisplayPlaneCapabilities2KHR {
6735    #[inline]
6736    fn default() -> Self {
6737        Self {
6738            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
6739            next: ptr::null_mut(),
6740            capabilities: DisplayPlaneCapabilitiesKHR::default(),
6741        }
6742    }
6743}
6744
6745unsafe impl Send for DisplayPlaneCapabilities2KHR {}
6746unsafe impl Sync for DisplayPlaneCapabilities2KHR {}
6747
6748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
6749#[repr(C)]
6750#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6751pub struct DisplayPlaneCapabilitiesKHR {
6752    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
6753    pub min_src_position: Offset2D,
6754    pub max_src_position: Offset2D,
6755    pub min_src_extent: Extent2D,
6756    pub max_src_extent: Extent2D,
6757    pub min_dst_position: Offset2D,
6758    pub max_dst_position: Offset2D,
6759    pub min_dst_extent: Extent2D,
6760    pub max_dst_extent: Extent2D,
6761}
6762
6763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
6764#[repr(C)]
6765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6766pub struct DisplayPlaneInfo2KHR {
6767    pub s_type: StructureType,
6768    pub next: *const c_void,
6769    pub mode: DisplayModeKHR,
6770    pub plane_index: u32,
6771}
6772
6773impl Default for DisplayPlaneInfo2KHR {
6774    #[inline]
6775    fn default() -> Self {
6776        Self {
6777            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
6778            next: ptr::null(),
6779            mode: DisplayModeKHR::default(),
6780            plane_index: u32::default(),
6781        }
6782    }
6783}
6784
6785unsafe impl Send for DisplayPlaneInfo2KHR {}
6786unsafe impl Sync for DisplayPlaneInfo2KHR {}
6787
6788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
6789#[repr(C)]
6790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6791pub struct DisplayPlaneProperties2KHR {
6792    pub s_type: StructureType,
6793    pub next: *mut c_void,
6794    pub display_plane_properties: DisplayPlanePropertiesKHR,
6795}
6796
6797impl Default for DisplayPlaneProperties2KHR {
6798    #[inline]
6799    fn default() -> Self {
6800        Self {
6801            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
6802            next: ptr::null_mut(),
6803            display_plane_properties: DisplayPlanePropertiesKHR::default(),
6804        }
6805    }
6806}
6807
6808unsafe impl Send for DisplayPlaneProperties2KHR {}
6809unsafe impl Sync for DisplayPlaneProperties2KHR {}
6810
6811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
6812#[repr(C)]
6813#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6814pub struct DisplayPlanePropertiesKHR {
6815    pub current_display: DisplayKHR,
6816    pub current_stack_index: u32,
6817}
6818
6819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
6820#[repr(C)]
6821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6822pub struct DisplayPowerInfoEXT {
6823    pub s_type: StructureType,
6824    pub next: *const c_void,
6825    pub power_state: DisplayPowerStateEXT,
6826}
6827
6828impl Default for DisplayPowerInfoEXT {
6829    #[inline]
6830    fn default() -> Self {
6831        Self {
6832            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
6833            next: ptr::null(),
6834            power_state: DisplayPowerStateEXT::default(),
6835        }
6836    }
6837}
6838
6839unsafe impl Send for DisplayPowerInfoEXT {}
6840unsafe impl Sync for DisplayPowerInfoEXT {}
6841
6842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
6843#[repr(C)]
6844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6845pub struct DisplayPresentInfoKHR {
6846    pub s_type: StructureType,
6847    pub next: *const c_void,
6848    pub src_rect: Rect2D,
6849    pub dst_rect: Rect2D,
6850    pub persistent: Bool32,
6851}
6852
6853impl Default for DisplayPresentInfoKHR {
6854    #[inline]
6855    fn default() -> Self {
6856        Self {
6857            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
6858            next: ptr::null(),
6859            src_rect: Rect2D::default(),
6860            dst_rect: Rect2D::default(),
6861            persistent: Bool32::default(),
6862        }
6863    }
6864}
6865
6866unsafe impl Send for DisplayPresentInfoKHR {}
6867unsafe impl Sync for DisplayPresentInfoKHR {}
6868
6869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
6870#[repr(C)]
6871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6872pub struct DisplayProperties2KHR {
6873    pub s_type: StructureType,
6874    pub next: *mut c_void,
6875    pub display_properties: DisplayPropertiesKHR,
6876}
6877
6878impl Default for DisplayProperties2KHR {
6879    #[inline]
6880    fn default() -> Self {
6881        Self {
6882            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
6883            next: ptr::null_mut(),
6884            display_properties: DisplayPropertiesKHR::default(),
6885        }
6886    }
6887}
6888
6889unsafe impl Send for DisplayProperties2KHR {}
6890unsafe impl Sync for DisplayProperties2KHR {}
6891
6892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
6893#[repr(C)]
6894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6895pub struct DisplayPropertiesKHR {
6896    pub display: DisplayKHR,
6897    pub display_name: *const c_char,
6898    pub physical_dimensions: Extent2D,
6899    pub physical_resolution: Extent2D,
6900    pub supported_transforms: SurfaceTransformFlagsKHR,
6901    pub plane_reorder_possible: Bool32,
6902    pub persistent_content: Bool32,
6903}
6904
6905impl Default for DisplayPropertiesKHR {
6906    #[inline]
6907    fn default() -> Self {
6908        Self {
6909            display: DisplayKHR::default(),
6910            display_name: ptr::null(),
6911            physical_dimensions: Extent2D::default(),
6912            physical_resolution: Extent2D::default(),
6913            supported_transforms: SurfaceTransformFlagsKHR::default(),
6914            plane_reorder_possible: Bool32::default(),
6915            persistent_content: Bool32::default(),
6916        }
6917    }
6918}
6919
6920unsafe impl Send for DisplayPropertiesKHR {}
6921unsafe impl Sync for DisplayPropertiesKHR {}
6922
6923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
6924#[repr(C)]
6925#[derive(Copy, Clone, Debug, PartialEq)]
6926pub struct DisplaySurfaceCreateInfoKHR {
6927    pub s_type: StructureType,
6928    pub next: *const c_void,
6929    pub flags: DisplaySurfaceCreateFlagsKHR,
6930    pub display_mode: DisplayModeKHR,
6931    pub plane_index: u32,
6932    pub plane_stack_index: u32,
6933    pub transform: SurfaceTransformFlagsKHR,
6934    pub global_alpha: f32,
6935    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
6936    pub image_extent: Extent2D,
6937}
6938
6939impl Default for DisplaySurfaceCreateInfoKHR {
6940    #[inline]
6941    fn default() -> Self {
6942        Self {
6943            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
6944            next: ptr::null(),
6945            flags: DisplaySurfaceCreateFlagsKHR::default(),
6946            display_mode: DisplayModeKHR::default(),
6947            plane_index: u32::default(),
6948            plane_stack_index: u32::default(),
6949            transform: SurfaceTransformFlagsKHR::default(),
6950            global_alpha: f32::default(),
6951            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
6952            image_extent: Extent2D::default(),
6953        }
6954    }
6955}
6956
6957unsafe impl Send for DisplaySurfaceCreateInfoKHR {}
6958unsafe impl Sync for DisplaySurfaceCreateInfoKHR {}
6959
6960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
6961#[repr(C)]
6962#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6963pub struct DisplaySurfaceStereoCreateInfoNV {
6964    pub s_type: StructureType,
6965    pub next: *const c_void,
6966    pub stereo_type: DisplaySurfaceStereoTypeNV,
6967}
6968
6969impl Default for DisplaySurfaceStereoCreateInfoNV {
6970    #[inline]
6971    fn default() -> Self {
6972        Self {
6973            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
6974            next: ptr::null(),
6975            stereo_type: DisplaySurfaceStereoTypeNV::default(),
6976        }
6977    }
6978}
6979
6980unsafe impl Send for DisplaySurfaceStereoCreateInfoNV {}
6981unsafe impl Sync for DisplaySurfaceStereoCreateInfoNV {}
6982
6983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
6984#[repr(C)]
6985#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6986pub struct DrawIndexedIndirectCommand {
6987    pub index_count: u32,
6988    pub instance_count: u32,
6989    pub first_index: u32,
6990    pub vertex_offset: i32,
6991    pub first_instance: u32,
6992}
6993
6994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
6995#[repr(C)]
6996#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6997pub struct DrawIndirectCommand {
6998    pub vertex_count: u32,
6999    pub instance_count: u32,
7000    pub first_vertex: u32,
7001    pub first_instance: u32,
7002}
7003
7004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
7005#[repr(C)]
7006#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7007pub struct DrawIndirectCountIndirectCommandEXT {
7008    pub buffer_address: DeviceAddress,
7009    pub stride: u32,
7010    pub command_count: u32,
7011}
7012
7013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
7014#[repr(C)]
7015#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7016pub struct DrawMeshTasksIndirectCommandEXT {
7017    pub group_count_x: u32,
7018    pub group_count_y: u32,
7019    pub group_count_z: u32,
7020}
7021
7022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
7023#[repr(C)]
7024#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7025pub struct DrawMeshTasksIndirectCommandNV {
7026    pub task_count: u32,
7027    pub first_task: u32,
7028}
7029
7030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
7031#[repr(C)]
7032#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7033pub struct DrmFormatModifierProperties2EXT {
7034    pub drm_format_modifier: u64,
7035    pub drm_format_modifier_plane_count: u32,
7036    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
7037}
7038
7039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
7040#[repr(C)]
7041#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7042pub struct DrmFormatModifierPropertiesEXT {
7043    pub drm_format_modifier: u64,
7044    pub drm_format_modifier_plane_count: u32,
7045    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
7046}
7047
7048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
7049#[repr(C)]
7050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7051pub struct DrmFormatModifierPropertiesList2EXT {
7052    pub s_type: StructureType,
7053    pub next: *mut c_void,
7054    pub drm_format_modifier_count: u32,
7055    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
7056}
7057
7058impl Default for DrmFormatModifierPropertiesList2EXT {
7059    #[inline]
7060    fn default() -> Self {
7061        Self {
7062            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
7063            next: ptr::null_mut(),
7064            drm_format_modifier_count: u32::default(),
7065            drm_format_modifier_properties: ptr::null_mut(),
7066        }
7067    }
7068}
7069
7070unsafe impl Send for DrmFormatModifierPropertiesList2EXT {}
7071unsafe impl Sync for DrmFormatModifierPropertiesList2EXT {}
7072
7073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
7074#[repr(C)]
7075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7076pub struct DrmFormatModifierPropertiesListEXT {
7077    pub s_type: StructureType,
7078    pub next: *mut c_void,
7079    pub drm_format_modifier_count: u32,
7080    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
7081}
7082
7083impl Default for DrmFormatModifierPropertiesListEXT {
7084    #[inline]
7085    fn default() -> Self {
7086        Self {
7087            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
7088            next: ptr::null_mut(),
7089            drm_format_modifier_count: u32::default(),
7090            drm_format_modifier_properties: ptr::null_mut(),
7091        }
7092    }
7093}
7094
7095unsafe impl Send for DrmFormatModifierPropertiesListEXT {}
7096unsafe impl Sync for DrmFormatModifierPropertiesListEXT {}
7097
7098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
7099#[repr(C)]
7100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7101pub struct EventCreateInfo {
7102    pub s_type: StructureType,
7103    pub next: *const c_void,
7104    pub flags: EventCreateFlags,
7105}
7106
7107impl Default for EventCreateInfo {
7108    #[inline]
7109    fn default() -> Self {
7110        Self {
7111            s_type: StructureType::EVENT_CREATE_INFO,
7112            next: ptr::null(),
7113            flags: EventCreateFlags::default(),
7114        }
7115    }
7116}
7117
7118unsafe impl Send for EventCreateInfo {}
7119unsafe impl Sync for EventCreateInfo {}
7120
7121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
7122#[repr(C)]
7123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7124pub struct ExecutionGraphPipelineCreateInfoAMDX {
7125    pub s_type: StructureType,
7126    pub next: *const c_void,
7127    pub flags: PipelineCreateFlags,
7128    pub stage_count: u32,
7129    pub stages: *const PipelineShaderStageCreateInfo,
7130    pub library_info: *const PipelineLibraryCreateInfoKHR,
7131    pub layout: PipelineLayout,
7132    pub base_pipeline_handle: Pipeline,
7133    pub base_pipeline_index: i32,
7134}
7135
7136impl Default for ExecutionGraphPipelineCreateInfoAMDX {
7137    #[inline]
7138    fn default() -> Self {
7139        Self {
7140            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
7141            next: ptr::null(),
7142            flags: PipelineCreateFlags::default(),
7143            stage_count: u32::default(),
7144            stages: ptr::null(),
7145            library_info: ptr::null(),
7146            layout: PipelineLayout::default(),
7147            base_pipeline_handle: Pipeline::default(),
7148            base_pipeline_index: i32::default(),
7149        }
7150    }
7151}
7152
7153unsafe impl Send for ExecutionGraphPipelineCreateInfoAMDX {}
7154unsafe impl Sync for ExecutionGraphPipelineCreateInfoAMDX {}
7155
7156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
7157#[repr(C)]
7158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7159pub struct ExecutionGraphPipelineScratchSizeAMDX {
7160    pub s_type: StructureType,
7161    pub next: *mut c_void,
7162    pub min_size: DeviceSize,
7163    pub max_size: DeviceSize,
7164    pub size_granularity: DeviceSize,
7165}
7166
7167impl Default for ExecutionGraphPipelineScratchSizeAMDX {
7168    #[inline]
7169    fn default() -> Self {
7170        Self {
7171            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
7172            next: ptr::null_mut(),
7173            min_size: DeviceSize::default(),
7174            max_size: DeviceSize::default(),
7175            size_granularity: DeviceSize::default(),
7176        }
7177    }
7178}
7179
7180unsafe impl Send for ExecutionGraphPipelineScratchSizeAMDX {}
7181unsafe impl Sync for ExecutionGraphPipelineScratchSizeAMDX {}
7182
7183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
7184#[repr(C)]
7185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7186pub struct ExportFenceCreateInfo {
7187    pub s_type: StructureType,
7188    pub next: *const c_void,
7189    pub handle_types: ExternalFenceHandleTypeFlags,
7190}
7191
7192impl Default for ExportFenceCreateInfo {
7193    #[inline]
7194    fn default() -> Self {
7195        Self {
7196            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
7197            next: ptr::null(),
7198            handle_types: ExternalFenceHandleTypeFlags::default(),
7199        }
7200    }
7201}
7202
7203unsafe impl Send for ExportFenceCreateInfo {}
7204unsafe impl Sync for ExportFenceCreateInfo {}
7205
7206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
7207#[repr(C)]
7208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7209pub struct ExportFenceSciSyncInfoNV {
7210    pub s_type: StructureType,
7211    pub next: *const c_void,
7212    pub attributes: NvSciSyncAttrList,
7213}
7214
7215impl Default for ExportFenceSciSyncInfoNV {
7216    #[inline]
7217    fn default() -> Self {
7218        Self {
7219            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
7220            next: ptr::null(),
7221            attributes: ptr::null_mut(),
7222        }
7223    }
7224}
7225
7226unsafe impl Send for ExportFenceSciSyncInfoNV {}
7227unsafe impl Sync for ExportFenceSciSyncInfoNV {}
7228
7229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
7230#[repr(C)]
7231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7232pub struct ExportFenceWin32HandleInfoKHR {
7233    pub s_type: StructureType,
7234    pub next: *const c_void,
7235    pub attributes: *const SECURITY_ATTRIBUTES,
7236    pub dw_access: DWORD,
7237    pub name: LPCWSTR,
7238}
7239
7240impl Default for ExportFenceWin32HandleInfoKHR {
7241    #[inline]
7242    fn default() -> Self {
7243        Self {
7244            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
7245            next: ptr::null(),
7246            attributes: ptr::null(),
7247            dw_access: DWORD::default(),
7248            name: ptr::null_mut(),
7249        }
7250    }
7251}
7252
7253unsafe impl Send for ExportFenceWin32HandleInfoKHR {}
7254unsafe impl Sync for ExportFenceWin32HandleInfoKHR {}
7255
7256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
7257#[repr(C)]
7258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7259pub struct ExportMemoryAllocateInfo {
7260    pub s_type: StructureType,
7261    pub next: *const c_void,
7262    pub handle_types: ExternalMemoryHandleTypeFlags,
7263}
7264
7265impl Default for ExportMemoryAllocateInfo {
7266    #[inline]
7267    fn default() -> Self {
7268        Self {
7269            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
7270            next: ptr::null(),
7271            handle_types: ExternalMemoryHandleTypeFlags::default(),
7272        }
7273    }
7274}
7275
7276unsafe impl Send for ExportMemoryAllocateInfo {}
7277unsafe impl Sync for ExportMemoryAllocateInfo {}
7278
7279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
7280#[repr(C)]
7281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7282pub struct ExportMemoryAllocateInfoNV {
7283    pub s_type: StructureType,
7284    pub next: *const c_void,
7285    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7286}
7287
7288impl Default for ExportMemoryAllocateInfoNV {
7289    #[inline]
7290    fn default() -> Self {
7291        Self {
7292            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
7293            next: ptr::null(),
7294            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7295        }
7296    }
7297}
7298
7299unsafe impl Send for ExportMemoryAllocateInfoNV {}
7300unsafe impl Sync for ExportMemoryAllocateInfoNV {}
7301
7302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
7303#[repr(C)]
7304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7305pub struct ExportMemorySciBufInfoNV {
7306    pub s_type: StructureType,
7307    pub next: *const c_void,
7308    pub attributes: NvSciBufAttrList,
7309}
7310
7311impl Default for ExportMemorySciBufInfoNV {
7312    #[inline]
7313    fn default() -> Self {
7314        Self {
7315            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
7316            next: ptr::null(),
7317            attributes: ptr::null_mut(),
7318        }
7319    }
7320}
7321
7322unsafe impl Send for ExportMemorySciBufInfoNV {}
7323unsafe impl Sync for ExportMemorySciBufInfoNV {}
7324
7325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
7326#[repr(C)]
7327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7328pub struct ExportMemoryWin32HandleInfoKHR {
7329    pub s_type: StructureType,
7330    pub next: *const c_void,
7331    pub attributes: *const SECURITY_ATTRIBUTES,
7332    pub dw_access: DWORD,
7333    pub name: LPCWSTR,
7334}
7335
7336impl Default for ExportMemoryWin32HandleInfoKHR {
7337    #[inline]
7338    fn default() -> Self {
7339        Self {
7340            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
7341            next: ptr::null(),
7342            attributes: ptr::null(),
7343            dw_access: DWORD::default(),
7344            name: ptr::null_mut(),
7345        }
7346    }
7347}
7348
7349unsafe impl Send for ExportMemoryWin32HandleInfoKHR {}
7350unsafe impl Sync for ExportMemoryWin32HandleInfoKHR {}
7351
7352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
7353#[repr(C)]
7354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7355pub struct ExportMemoryWin32HandleInfoNV {
7356    pub s_type: StructureType,
7357    pub next: *const c_void,
7358    pub attributes: *const SECURITY_ATTRIBUTES,
7359    pub dw_access: DWORD,
7360}
7361
7362impl Default for ExportMemoryWin32HandleInfoNV {
7363    #[inline]
7364    fn default() -> Self {
7365        Self {
7366            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
7367            next: ptr::null(),
7368            attributes: ptr::null(),
7369            dw_access: DWORD::default(),
7370        }
7371    }
7372}
7373
7374unsafe impl Send for ExportMemoryWin32HandleInfoNV {}
7375unsafe impl Sync for ExportMemoryWin32HandleInfoNV {}
7376
7377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
7378#[repr(C)]
7379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7380pub struct ExportMetalBufferInfoEXT {
7381    pub s_type: StructureType,
7382    pub next: *const c_void,
7383    pub memory: DeviceMemory,
7384    pub mtl_buffer: MTLBuffer_id,
7385}
7386
7387impl Default for ExportMetalBufferInfoEXT {
7388    #[inline]
7389    fn default() -> Self {
7390        Self {
7391            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
7392            next: ptr::null(),
7393            memory: DeviceMemory::default(),
7394            mtl_buffer: ptr::null_mut(),
7395        }
7396    }
7397}
7398
7399unsafe impl Send for ExportMetalBufferInfoEXT {}
7400unsafe impl Sync for ExportMetalBufferInfoEXT {}
7401
7402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
7403#[repr(C)]
7404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7405pub struct ExportMetalCommandQueueInfoEXT {
7406    pub s_type: StructureType,
7407    pub next: *const c_void,
7408    pub queue: Queue,
7409    pub mtl_command_queue: MTLCommandQueue_id,
7410}
7411
7412impl Default for ExportMetalCommandQueueInfoEXT {
7413    #[inline]
7414    fn default() -> Self {
7415        Self {
7416            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
7417            next: ptr::null(),
7418            queue: Queue::default(),
7419            mtl_command_queue: ptr::null_mut(),
7420        }
7421    }
7422}
7423
7424unsafe impl Send for ExportMetalCommandQueueInfoEXT {}
7425unsafe impl Sync for ExportMetalCommandQueueInfoEXT {}
7426
7427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
7428#[repr(C)]
7429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7430pub struct ExportMetalDeviceInfoEXT {
7431    pub s_type: StructureType,
7432    pub next: *const c_void,
7433    pub mtl_device: MTLDevice_id,
7434}
7435
7436impl Default for ExportMetalDeviceInfoEXT {
7437    #[inline]
7438    fn default() -> Self {
7439        Self {
7440            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
7441            next: ptr::null(),
7442            mtl_device: ptr::null_mut(),
7443        }
7444    }
7445}
7446
7447unsafe impl Send for ExportMetalDeviceInfoEXT {}
7448unsafe impl Sync for ExportMetalDeviceInfoEXT {}
7449
7450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
7451#[repr(C)]
7452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7453pub struct ExportMetalIOSurfaceInfoEXT {
7454    pub s_type: StructureType,
7455    pub next: *const c_void,
7456    pub image: Image,
7457    pub io_surface: IOSurfaceRef,
7458}
7459
7460impl Default for ExportMetalIOSurfaceInfoEXT {
7461    #[inline]
7462    fn default() -> Self {
7463        Self {
7464            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
7465            next: ptr::null(),
7466            image: Image::default(),
7467            io_surface: ptr::null_mut(),
7468        }
7469    }
7470}
7471
7472unsafe impl Send for ExportMetalIOSurfaceInfoEXT {}
7473unsafe impl Sync for ExportMetalIOSurfaceInfoEXT {}
7474
7475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
7476#[repr(C)]
7477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7478pub struct ExportMetalObjectCreateInfoEXT {
7479    pub s_type: StructureType,
7480    pub next: *const c_void,
7481    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
7482}
7483
7484impl Default for ExportMetalObjectCreateInfoEXT {
7485    #[inline]
7486    fn default() -> Self {
7487        Self {
7488            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
7489            next: ptr::null(),
7490            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
7491        }
7492    }
7493}
7494
7495unsafe impl Send for ExportMetalObjectCreateInfoEXT {}
7496unsafe impl Sync for ExportMetalObjectCreateInfoEXT {}
7497
7498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
7499#[repr(C)]
7500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7501pub struct ExportMetalObjectsInfoEXT {
7502    pub s_type: StructureType,
7503    pub next: *const c_void,
7504}
7505
7506impl Default for ExportMetalObjectsInfoEXT {
7507    #[inline]
7508    fn default() -> Self {
7509        Self {
7510            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
7511            next: ptr::null(),
7512        }
7513    }
7514}
7515
7516unsafe impl Send for ExportMetalObjectsInfoEXT {}
7517unsafe impl Sync for ExportMetalObjectsInfoEXT {}
7518
7519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
7520#[repr(C)]
7521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7522pub struct ExportMetalSharedEventInfoEXT {
7523    pub s_type: StructureType,
7524    pub next: *const c_void,
7525    pub semaphore: Semaphore,
7526    pub event: Event,
7527    pub mtl_shared_event: MTLSharedEvent_id,
7528}
7529
7530impl Default for ExportMetalSharedEventInfoEXT {
7531    #[inline]
7532    fn default() -> Self {
7533        Self {
7534            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
7535            next: ptr::null(),
7536            semaphore: Semaphore::default(),
7537            event: Event::default(),
7538            mtl_shared_event: ptr::null_mut(),
7539        }
7540    }
7541}
7542
7543unsafe impl Send for ExportMetalSharedEventInfoEXT {}
7544unsafe impl Sync for ExportMetalSharedEventInfoEXT {}
7545
7546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
7547#[repr(C)]
7548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7549pub struct ExportMetalTextureInfoEXT {
7550    pub s_type: StructureType,
7551    pub next: *const c_void,
7552    pub image: Image,
7553    pub image_view: ImageView,
7554    pub buffer_view: BufferView,
7555    pub plane: ImageAspectFlags,
7556    pub mtl_texture: MTLTexture_id,
7557}
7558
7559impl Default for ExportMetalTextureInfoEXT {
7560    #[inline]
7561    fn default() -> Self {
7562        Self {
7563            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
7564            next: ptr::null(),
7565            image: Image::default(),
7566            image_view: ImageView::default(),
7567            buffer_view: BufferView::default(),
7568            plane: ImageAspectFlags::default(),
7569            mtl_texture: ptr::null_mut(),
7570        }
7571    }
7572}
7573
7574unsafe impl Send for ExportMetalTextureInfoEXT {}
7575unsafe impl Sync for ExportMetalTextureInfoEXT {}
7576
7577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
7578#[repr(C)]
7579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7580pub struct ExportSemaphoreCreateInfo {
7581    pub s_type: StructureType,
7582    pub next: *const c_void,
7583    pub handle_types: ExternalSemaphoreHandleTypeFlags,
7584}
7585
7586impl Default for ExportSemaphoreCreateInfo {
7587    #[inline]
7588    fn default() -> Self {
7589        Self {
7590            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
7591            next: ptr::null(),
7592            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7593        }
7594    }
7595}
7596
7597unsafe impl Send for ExportSemaphoreCreateInfo {}
7598unsafe impl Sync for ExportSemaphoreCreateInfo {}
7599
7600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
7601#[repr(C)]
7602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7603pub struct ExportSemaphoreSciSyncInfoNV {
7604    pub s_type: StructureType,
7605    pub next: *const c_void,
7606    pub attributes: NvSciSyncAttrList,
7607}
7608
7609impl Default for ExportSemaphoreSciSyncInfoNV {
7610    #[inline]
7611    fn default() -> Self {
7612        Self {
7613            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
7614            next: ptr::null(),
7615            attributes: ptr::null_mut(),
7616        }
7617    }
7618}
7619
7620unsafe impl Send for ExportSemaphoreSciSyncInfoNV {}
7621unsafe impl Sync for ExportSemaphoreSciSyncInfoNV {}
7622
7623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
7624#[repr(C)]
7625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7626pub struct ExportSemaphoreWin32HandleInfoKHR {
7627    pub s_type: StructureType,
7628    pub next: *const c_void,
7629    pub attributes: *const SECURITY_ATTRIBUTES,
7630    pub dw_access: DWORD,
7631    pub name: LPCWSTR,
7632}
7633
7634impl Default for ExportSemaphoreWin32HandleInfoKHR {
7635    #[inline]
7636    fn default() -> Self {
7637        Self {
7638            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
7639            next: ptr::null(),
7640            attributes: ptr::null(),
7641            dw_access: DWORD::default(),
7642            name: ptr::null_mut(),
7643        }
7644    }
7645}
7646
7647unsafe impl Send for ExportSemaphoreWin32HandleInfoKHR {}
7648unsafe impl Sync for ExportSemaphoreWin32HandleInfoKHR {}
7649
7650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
7651#[repr(C)]
7652#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7653pub struct ExtensionProperties {
7654    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
7655    pub spec_version: u32,
7656}
7657
7658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
7659#[repr(C)]
7660#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7661pub struct Extent2D {
7662    pub width: u32,
7663    pub height: u32,
7664}
7665
7666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
7667#[repr(C)]
7668#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7669pub struct Extent3D {
7670    pub width: u32,
7671    pub height: u32,
7672    pub depth: u32,
7673}
7674
7675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
7676#[repr(C)]
7677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7678pub struct ExternalBufferProperties {
7679    pub s_type: StructureType,
7680    pub next: *mut c_void,
7681    pub external_memory_properties: ExternalMemoryProperties,
7682}
7683
7684impl Default for ExternalBufferProperties {
7685    #[inline]
7686    fn default() -> Self {
7687        Self {
7688            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
7689            next: ptr::null_mut(),
7690            external_memory_properties: ExternalMemoryProperties::default(),
7691        }
7692    }
7693}
7694
7695unsafe impl Send for ExternalBufferProperties {}
7696unsafe impl Sync for ExternalBufferProperties {}
7697
7698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html>
7699#[repr(C)]
7700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7701pub struct ExternalComputeQueueCreateInfoNV {
7702    pub s_type: StructureType,
7703    pub next: *const c_void,
7704    pub preferred_queue: Queue,
7705}
7706
7707impl Default for ExternalComputeQueueCreateInfoNV {
7708    #[inline]
7709    fn default() -> Self {
7710        Self {
7711            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV,
7712            next: ptr::null(),
7713            preferred_queue: Queue::default(),
7714        }
7715    }
7716}
7717
7718unsafe impl Send for ExternalComputeQueueCreateInfoNV {}
7719unsafe impl Sync for ExternalComputeQueueCreateInfoNV {}
7720
7721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html>
7722#[repr(C)]
7723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7724pub struct ExternalComputeQueueDataParamsNV {
7725    pub s_type: StructureType,
7726    pub next: *const c_void,
7727    pub device_index: u32,
7728}
7729
7730impl Default for ExternalComputeQueueDataParamsNV {
7731    #[inline]
7732    fn default() -> Self {
7733        Self {
7734            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV,
7735            next: ptr::null(),
7736            device_index: u32::default(),
7737        }
7738    }
7739}
7740
7741unsafe impl Send for ExternalComputeQueueDataParamsNV {}
7742unsafe impl Sync for ExternalComputeQueueDataParamsNV {}
7743
7744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html>
7745#[repr(C)]
7746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7747pub struct ExternalComputeQueueDeviceCreateInfoNV {
7748    pub s_type: StructureType,
7749    pub next: *const c_void,
7750    pub reserved_external_queues: u32,
7751}
7752
7753impl Default for ExternalComputeQueueDeviceCreateInfoNV {
7754    #[inline]
7755    fn default() -> Self {
7756        Self {
7757            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV,
7758            next: ptr::null(),
7759            reserved_external_queues: u32::default(),
7760        }
7761    }
7762}
7763
7764unsafe impl Send for ExternalComputeQueueDeviceCreateInfoNV {}
7765unsafe impl Sync for ExternalComputeQueueDeviceCreateInfoNV {}
7766
7767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
7768#[repr(C)]
7769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7770pub struct ExternalFenceProperties {
7771    pub s_type: StructureType,
7772    pub next: *mut c_void,
7773    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
7774    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
7775    pub external_fence_features: ExternalFenceFeatureFlags,
7776}
7777
7778impl Default for ExternalFenceProperties {
7779    #[inline]
7780    fn default() -> Self {
7781        Self {
7782            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
7783            next: ptr::null_mut(),
7784            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
7785            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
7786            external_fence_features: ExternalFenceFeatureFlags::default(),
7787        }
7788    }
7789}
7790
7791unsafe impl Send for ExternalFenceProperties {}
7792unsafe impl Sync for ExternalFenceProperties {}
7793
7794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
7795#[repr(C)]
7796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7797pub struct ExternalFormatANDROID {
7798    pub s_type: StructureType,
7799    pub next: *mut c_void,
7800    pub external_format: u64,
7801}
7802
7803impl Default for ExternalFormatANDROID {
7804    #[inline]
7805    fn default() -> Self {
7806        Self {
7807            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
7808            next: ptr::null_mut(),
7809            external_format: u64::default(),
7810        }
7811    }
7812}
7813
7814unsafe impl Send for ExternalFormatANDROID {}
7815unsafe impl Sync for ExternalFormatANDROID {}
7816
7817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatOHOS.html>
7818#[repr(C)]
7819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7820pub struct ExternalFormatOHOS {
7821    pub s_type: StructureType,
7822    pub next: *mut c_void,
7823    pub external_format: u64,
7824}
7825
7826impl Default for ExternalFormatOHOS {
7827    #[inline]
7828    fn default() -> Self {
7829        Self {
7830            s_type: StructureType::EXTERNAL_FORMAT_OHOS,
7831            next: ptr::null_mut(),
7832            external_format: u64::default(),
7833        }
7834    }
7835}
7836
7837unsafe impl Send for ExternalFormatOHOS {}
7838unsafe impl Sync for ExternalFormatOHOS {}
7839
7840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
7841#[repr(C)]
7842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7843pub struct ExternalFormatQNX {
7844    pub s_type: StructureType,
7845    pub next: *mut c_void,
7846    pub external_format: u64,
7847}
7848
7849impl Default for ExternalFormatQNX {
7850    #[inline]
7851    fn default() -> Self {
7852        Self {
7853            s_type: StructureType::EXTERNAL_FORMAT_QNX,
7854            next: ptr::null_mut(),
7855            external_format: u64::default(),
7856        }
7857    }
7858}
7859
7860unsafe impl Send for ExternalFormatQNX {}
7861unsafe impl Sync for ExternalFormatQNX {}
7862
7863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
7864#[repr(C)]
7865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7866pub struct ExternalImageFormatProperties {
7867    pub s_type: StructureType,
7868    pub next: *mut c_void,
7869    pub external_memory_properties: ExternalMemoryProperties,
7870}
7871
7872impl Default for ExternalImageFormatProperties {
7873    #[inline]
7874    fn default() -> Self {
7875        Self {
7876            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
7877            next: ptr::null_mut(),
7878            external_memory_properties: ExternalMemoryProperties::default(),
7879        }
7880    }
7881}
7882
7883unsafe impl Send for ExternalImageFormatProperties {}
7884unsafe impl Sync for ExternalImageFormatProperties {}
7885
7886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
7887#[repr(C)]
7888#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7889pub struct ExternalImageFormatPropertiesNV {
7890    pub image_format_properties: ImageFormatProperties,
7891    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
7892    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
7893    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
7894}
7895
7896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
7897#[repr(C)]
7898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7899pub struct ExternalMemoryAcquireUnmodifiedEXT {
7900    pub s_type: StructureType,
7901    pub next: *const c_void,
7902    pub acquire_unmodified_memory: Bool32,
7903}
7904
7905impl Default for ExternalMemoryAcquireUnmodifiedEXT {
7906    #[inline]
7907    fn default() -> Self {
7908        Self {
7909            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
7910            next: ptr::null(),
7911            acquire_unmodified_memory: Bool32::default(),
7912        }
7913    }
7914}
7915
7916unsafe impl Send for ExternalMemoryAcquireUnmodifiedEXT {}
7917unsafe impl Sync for ExternalMemoryAcquireUnmodifiedEXT {}
7918
7919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
7920#[repr(C)]
7921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7922pub struct ExternalMemoryBufferCreateInfo {
7923    pub s_type: StructureType,
7924    pub next: *const c_void,
7925    pub handle_types: ExternalMemoryHandleTypeFlags,
7926}
7927
7928impl Default for ExternalMemoryBufferCreateInfo {
7929    #[inline]
7930    fn default() -> Self {
7931        Self {
7932            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
7933            next: ptr::null(),
7934            handle_types: ExternalMemoryHandleTypeFlags::default(),
7935        }
7936    }
7937}
7938
7939unsafe impl Send for ExternalMemoryBufferCreateInfo {}
7940unsafe impl Sync for ExternalMemoryBufferCreateInfo {}
7941
7942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
7943#[repr(C)]
7944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7945pub struct ExternalMemoryImageCreateInfo {
7946    pub s_type: StructureType,
7947    pub next: *const c_void,
7948    pub handle_types: ExternalMemoryHandleTypeFlags,
7949}
7950
7951impl Default for ExternalMemoryImageCreateInfo {
7952    #[inline]
7953    fn default() -> Self {
7954        Self {
7955            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
7956            next: ptr::null(),
7957            handle_types: ExternalMemoryHandleTypeFlags::default(),
7958        }
7959    }
7960}
7961
7962unsafe impl Send for ExternalMemoryImageCreateInfo {}
7963unsafe impl Sync for ExternalMemoryImageCreateInfo {}
7964
7965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
7966#[repr(C)]
7967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7968pub struct ExternalMemoryImageCreateInfoNV {
7969    pub s_type: StructureType,
7970    pub next: *const c_void,
7971    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7972}
7973
7974impl Default for ExternalMemoryImageCreateInfoNV {
7975    #[inline]
7976    fn default() -> Self {
7977        Self {
7978            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
7979            next: ptr::null(),
7980            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7981        }
7982    }
7983}
7984
7985unsafe impl Send for ExternalMemoryImageCreateInfoNV {}
7986unsafe impl Sync for ExternalMemoryImageCreateInfoNV {}
7987
7988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
7989#[repr(C)]
7990#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7991pub struct ExternalMemoryProperties {
7992    pub external_memory_features: ExternalMemoryFeatureFlags,
7993    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
7994    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
7995}
7996
7997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html>
7998#[repr(C)]
7999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8000pub struct ExternalMemoryTensorCreateInfoARM {
8001    pub s_type: StructureType,
8002    pub next: *const c_void,
8003    pub handle_types: ExternalMemoryHandleTypeFlags,
8004}
8005
8006impl Default for ExternalMemoryTensorCreateInfoARM {
8007    #[inline]
8008    fn default() -> Self {
8009        Self {
8010            s_type: StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM,
8011            next: ptr::null(),
8012            handle_types: ExternalMemoryHandleTypeFlags::default(),
8013        }
8014    }
8015}
8016
8017unsafe impl Send for ExternalMemoryTensorCreateInfoARM {}
8018unsafe impl Sync for ExternalMemoryTensorCreateInfoARM {}
8019
8020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
8021#[repr(C)]
8022#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8023pub struct ExternalSemaphoreProperties {
8024    pub s_type: StructureType,
8025    pub next: *mut c_void,
8026    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
8027    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
8028    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
8029}
8030
8031impl Default for ExternalSemaphoreProperties {
8032    #[inline]
8033    fn default() -> Self {
8034        Self {
8035            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
8036            next: ptr::null_mut(),
8037            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8038            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8039            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
8040        }
8041    }
8042}
8043
8044unsafe impl Send for ExternalSemaphoreProperties {}
8045unsafe impl Sync for ExternalSemaphoreProperties {}
8046
8047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html>
8048#[repr(C)]
8049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8050pub struct ExternalTensorPropertiesARM {
8051    pub s_type: StructureType,
8052    pub next: *const c_void,
8053    pub external_memory_properties: ExternalMemoryProperties,
8054}
8055
8056impl Default for ExternalTensorPropertiesARM {
8057    #[inline]
8058    fn default() -> Self {
8059        Self {
8060            s_type: StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM,
8061            next: ptr::null(),
8062            external_memory_properties: ExternalMemoryProperties::default(),
8063        }
8064    }
8065}
8066
8067unsafe impl Send for ExternalTensorPropertiesARM {}
8068unsafe impl Sync for ExternalTensorPropertiesARM {}
8069
8070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
8071#[repr(C)]
8072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8073pub struct FenceCreateInfo {
8074    pub s_type: StructureType,
8075    pub next: *const c_void,
8076    pub flags: FenceCreateFlags,
8077}
8078
8079impl Default for FenceCreateInfo {
8080    #[inline]
8081    fn default() -> Self {
8082        Self {
8083            s_type: StructureType::FENCE_CREATE_INFO,
8084            next: ptr::null(),
8085            flags: FenceCreateFlags::default(),
8086        }
8087    }
8088}
8089
8090unsafe impl Send for FenceCreateInfo {}
8091unsafe impl Sync for FenceCreateInfo {}
8092
8093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
8094#[repr(C)]
8095#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8096pub struct FenceGetFdInfoKHR {
8097    pub s_type: StructureType,
8098    pub next: *const c_void,
8099    pub fence: Fence,
8100    pub handle_type: ExternalFenceHandleTypeFlags,
8101}
8102
8103impl Default for FenceGetFdInfoKHR {
8104    #[inline]
8105    fn default() -> Self {
8106        Self {
8107            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
8108            next: ptr::null(),
8109            fence: Fence::default(),
8110            handle_type: ExternalFenceHandleTypeFlags::default(),
8111        }
8112    }
8113}
8114
8115unsafe impl Send for FenceGetFdInfoKHR {}
8116unsafe impl Sync for FenceGetFdInfoKHR {}
8117
8118/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
8119#[repr(C)]
8120#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8121pub struct FenceGetSciSyncInfoNV {
8122    pub s_type: StructureType,
8123    pub next: *const c_void,
8124    pub fence: Fence,
8125    pub handle_type: ExternalFenceHandleTypeFlags,
8126}
8127
8128impl Default for FenceGetSciSyncInfoNV {
8129    #[inline]
8130    fn default() -> Self {
8131        Self {
8132            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
8133            next: ptr::null(),
8134            fence: Fence::default(),
8135            handle_type: ExternalFenceHandleTypeFlags::default(),
8136        }
8137    }
8138}
8139
8140unsafe impl Send for FenceGetSciSyncInfoNV {}
8141unsafe impl Sync for FenceGetSciSyncInfoNV {}
8142
8143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
8144#[repr(C)]
8145#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8146pub struct FenceGetWin32HandleInfoKHR {
8147    pub s_type: StructureType,
8148    pub next: *const c_void,
8149    pub fence: Fence,
8150    pub handle_type: ExternalFenceHandleTypeFlags,
8151}
8152
8153impl Default for FenceGetWin32HandleInfoKHR {
8154    #[inline]
8155    fn default() -> Self {
8156        Self {
8157            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
8158            next: ptr::null(),
8159            fence: Fence::default(),
8160            handle_type: ExternalFenceHandleTypeFlags::default(),
8161        }
8162    }
8163}
8164
8165unsafe impl Send for FenceGetWin32HandleInfoKHR {}
8166unsafe impl Sync for FenceGetWin32HandleInfoKHR {}
8167
8168/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
8169#[repr(C)]
8170#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8171pub struct FilterCubicImageViewImageFormatPropertiesEXT {
8172    pub s_type: StructureType,
8173    pub next: *mut c_void,
8174    pub filter_cubic: Bool32,
8175    pub filter_cubic_minmax: Bool32,
8176}
8177
8178impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
8179    #[inline]
8180    fn default() -> Self {
8181        Self {
8182            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
8183            next: ptr::null_mut(),
8184            filter_cubic: Bool32::default(),
8185            filter_cubic_minmax: Bool32::default(),
8186        }
8187    }
8188}
8189
8190unsafe impl Send for FilterCubicImageViewImageFormatPropertiesEXT {}
8191unsafe impl Sync for FilterCubicImageViewImageFormatPropertiesEXT {}
8192
8193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
8194#[repr(C)]
8195#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8196pub struct FormatProperties {
8197    pub linear_tiling_features: FormatFeatureFlags,
8198    pub optimal_tiling_features: FormatFeatureFlags,
8199    pub buffer_features: FormatFeatureFlags,
8200}
8201
8202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
8203#[repr(C)]
8204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8205pub struct FormatProperties2 {
8206    pub s_type: StructureType,
8207    pub next: *mut c_void,
8208    pub format_properties: FormatProperties,
8209}
8210
8211impl Default for FormatProperties2 {
8212    #[inline]
8213    fn default() -> Self {
8214        Self {
8215            s_type: StructureType::FORMAT_PROPERTIES_2,
8216            next: ptr::null_mut(),
8217            format_properties: FormatProperties::default(),
8218        }
8219    }
8220}
8221
8222unsafe impl Send for FormatProperties2 {}
8223unsafe impl Sync for FormatProperties2 {}
8224
8225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
8226#[repr(C)]
8227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8228pub struct FormatProperties3 {
8229    pub s_type: StructureType,
8230    pub next: *mut c_void,
8231    pub linear_tiling_features: FormatFeatureFlags2,
8232    pub optimal_tiling_features: FormatFeatureFlags2,
8233    pub buffer_features: FormatFeatureFlags2,
8234}
8235
8236impl Default for FormatProperties3 {
8237    #[inline]
8238    fn default() -> Self {
8239        Self {
8240            s_type: StructureType::FORMAT_PROPERTIES_3,
8241            next: ptr::null_mut(),
8242            linear_tiling_features: FormatFeatureFlags2::default(),
8243            optimal_tiling_features: FormatFeatureFlags2::default(),
8244            buffer_features: FormatFeatureFlags2::default(),
8245        }
8246    }
8247}
8248
8249unsafe impl Send for FormatProperties3 {}
8250unsafe impl Sync for FormatProperties3 {}
8251
8252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
8253#[repr(C)]
8254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8255pub struct FragmentShadingRateAttachmentInfoKHR {
8256    pub s_type: StructureType,
8257    pub next: *const c_void,
8258    pub fragment_shading_rate_attachment: *const AttachmentReference2,
8259    pub shading_rate_attachment_texel_size: Extent2D,
8260}
8261
8262impl Default for FragmentShadingRateAttachmentInfoKHR {
8263    #[inline]
8264    fn default() -> Self {
8265        Self {
8266            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
8267            next: ptr::null(),
8268            fragment_shading_rate_attachment: ptr::null(),
8269            shading_rate_attachment_texel_size: Extent2D::default(),
8270        }
8271    }
8272}
8273
8274unsafe impl Send for FragmentShadingRateAttachmentInfoKHR {}
8275unsafe impl Sync for FragmentShadingRateAttachmentInfoKHR {}
8276
8277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
8278#[repr(C)]
8279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8280pub struct FrameBoundaryEXT {
8281    pub s_type: StructureType,
8282    pub next: *const c_void,
8283    pub flags: FrameBoundaryFlagsEXT,
8284    pub frame_id: u64,
8285    pub image_count: u32,
8286    pub images: *const Image,
8287    pub buffer_count: u32,
8288    pub buffers: *const Buffer,
8289    pub tag_name: u64,
8290    pub tag_size: usize,
8291    pub tag: *const c_void,
8292}
8293
8294impl Default for FrameBoundaryEXT {
8295    #[inline]
8296    fn default() -> Self {
8297        Self {
8298            s_type: StructureType::FRAME_BOUNDARY_EXT,
8299            next: ptr::null(),
8300            flags: FrameBoundaryFlagsEXT::default(),
8301            frame_id: u64::default(),
8302            image_count: u32::default(),
8303            images: ptr::null(),
8304            buffer_count: u32::default(),
8305            buffers: ptr::null(),
8306            tag_name: u64::default(),
8307            tag_size: usize::default(),
8308            tag: ptr::null(),
8309        }
8310    }
8311}
8312
8313unsafe impl Send for FrameBoundaryEXT {}
8314unsafe impl Sync for FrameBoundaryEXT {}
8315
8316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html>
8317#[repr(C)]
8318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8319pub struct FrameBoundaryTensorsARM {
8320    pub s_type: StructureType,
8321    pub next: *const c_void,
8322    pub tensor_count: u32,
8323    pub tensors: *const TensorARM,
8324}
8325
8326impl Default for FrameBoundaryTensorsARM {
8327    #[inline]
8328    fn default() -> Self {
8329        Self {
8330            s_type: StructureType::FRAME_BOUNDARY_TENSORS_ARM,
8331            next: ptr::null(),
8332            tensor_count: u32::default(),
8333            tensors: ptr::null(),
8334        }
8335    }
8336}
8337
8338unsafe impl Send for FrameBoundaryTensorsARM {}
8339unsafe impl Sync for FrameBoundaryTensorsARM {}
8340
8341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
8342#[repr(C)]
8343#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8344pub struct FramebufferAttachmentImageInfo {
8345    pub s_type: StructureType,
8346    pub next: *const c_void,
8347    pub flags: ImageCreateFlags,
8348    pub usage: ImageUsageFlags,
8349    pub width: u32,
8350    pub height: u32,
8351    pub layer_count: u32,
8352    pub view_format_count: u32,
8353    pub view_formats: *const Format,
8354}
8355
8356impl Default for FramebufferAttachmentImageInfo {
8357    #[inline]
8358    fn default() -> Self {
8359        Self {
8360            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
8361            next: ptr::null(),
8362            flags: ImageCreateFlags::default(),
8363            usage: ImageUsageFlags::default(),
8364            width: u32::default(),
8365            height: u32::default(),
8366            layer_count: u32::default(),
8367            view_format_count: u32::default(),
8368            view_formats: ptr::null(),
8369        }
8370    }
8371}
8372
8373unsafe impl Send for FramebufferAttachmentImageInfo {}
8374unsafe impl Sync for FramebufferAttachmentImageInfo {}
8375
8376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
8377#[repr(C)]
8378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8379pub struct FramebufferAttachmentsCreateInfo {
8380    pub s_type: StructureType,
8381    pub next: *const c_void,
8382    pub attachment_image_info_count: u32,
8383    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
8384}
8385
8386impl Default for FramebufferAttachmentsCreateInfo {
8387    #[inline]
8388    fn default() -> Self {
8389        Self {
8390            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
8391            next: ptr::null(),
8392            attachment_image_info_count: u32::default(),
8393            attachment_image_infos: ptr::null(),
8394        }
8395    }
8396}
8397
8398unsafe impl Send for FramebufferAttachmentsCreateInfo {}
8399unsafe impl Sync for FramebufferAttachmentsCreateInfo {}
8400
8401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
8402#[repr(C)]
8403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8404pub struct FramebufferCreateInfo {
8405    pub s_type: StructureType,
8406    pub next: *const c_void,
8407    pub flags: FramebufferCreateFlags,
8408    pub render_pass: RenderPass,
8409    pub attachment_count: u32,
8410    pub attachments: *const ImageView,
8411    pub width: u32,
8412    pub height: u32,
8413    pub layers: u32,
8414}
8415
8416impl Default for FramebufferCreateInfo {
8417    #[inline]
8418    fn default() -> Self {
8419        Self {
8420            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
8421            next: ptr::null(),
8422            flags: FramebufferCreateFlags::default(),
8423            render_pass: RenderPass::default(),
8424            attachment_count: u32::default(),
8425            attachments: ptr::null(),
8426            width: u32::default(),
8427            height: u32::default(),
8428            layers: u32::default(),
8429        }
8430    }
8431}
8432
8433unsafe impl Send for FramebufferCreateInfo {}
8434unsafe impl Sync for FramebufferCreateInfo {}
8435
8436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
8437#[repr(C)]
8438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8439pub struct FramebufferMixedSamplesCombinationNV {
8440    pub s_type: StructureType,
8441    pub next: *mut c_void,
8442    pub coverage_reduction_mode: CoverageReductionModeNV,
8443    pub rasterization_samples: SampleCountFlags,
8444    pub depth_stencil_samples: SampleCountFlags,
8445    pub color_samples: SampleCountFlags,
8446}
8447
8448impl Default for FramebufferMixedSamplesCombinationNV {
8449    #[inline]
8450    fn default() -> Self {
8451        Self {
8452            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
8453            next: ptr::null_mut(),
8454            coverage_reduction_mode: CoverageReductionModeNV::default(),
8455            rasterization_samples: SampleCountFlags::default(),
8456            depth_stencil_samples: SampleCountFlags::default(),
8457            color_samples: SampleCountFlags::default(),
8458        }
8459    }
8460}
8461
8462unsafe impl Send for FramebufferMixedSamplesCombinationNV {}
8463unsafe impl Sync for FramebufferMixedSamplesCombinationNV {}
8464
8465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
8466#[repr(C)]
8467#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8468pub struct GeneratedCommandsInfoEXT {
8469    pub s_type: StructureType,
8470    pub next: *const c_void,
8471    pub shader_stages: ShaderStageFlags,
8472    pub indirect_execution_set: IndirectExecutionSetEXT,
8473    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8474    pub indirect_address: DeviceAddress,
8475    pub indirect_address_size: DeviceSize,
8476    pub preprocess_address: DeviceAddress,
8477    pub preprocess_size: DeviceSize,
8478    pub max_sequence_count: u32,
8479    pub sequence_count_address: DeviceAddress,
8480    pub max_draw_count: u32,
8481}
8482
8483impl Default for GeneratedCommandsInfoEXT {
8484    #[inline]
8485    fn default() -> Self {
8486        Self {
8487            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
8488            next: ptr::null(),
8489            shader_stages: ShaderStageFlags::default(),
8490            indirect_execution_set: IndirectExecutionSetEXT::default(),
8491            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8492            indirect_address: DeviceAddress::default(),
8493            indirect_address_size: DeviceSize::default(),
8494            preprocess_address: DeviceAddress::default(),
8495            preprocess_size: DeviceSize::default(),
8496            max_sequence_count: u32::default(),
8497            sequence_count_address: DeviceAddress::default(),
8498            max_draw_count: u32::default(),
8499        }
8500    }
8501}
8502
8503unsafe impl Send for GeneratedCommandsInfoEXT {}
8504unsafe impl Sync for GeneratedCommandsInfoEXT {}
8505
8506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
8507#[repr(C)]
8508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8509pub struct GeneratedCommandsInfoNV {
8510    pub s_type: StructureType,
8511    pub next: *const c_void,
8512    pub pipeline_bind_point: PipelineBindPoint,
8513    pub pipeline: Pipeline,
8514    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8515    pub stream_count: u32,
8516    pub streams: *const IndirectCommandsStreamNV,
8517    pub sequences_count: u32,
8518    pub preprocess_buffer: Buffer,
8519    pub preprocess_offset: DeviceSize,
8520    pub preprocess_size: DeviceSize,
8521    pub sequences_count_buffer: Buffer,
8522    pub sequences_count_offset: DeviceSize,
8523    pub sequences_index_buffer: Buffer,
8524    pub sequences_index_offset: DeviceSize,
8525}
8526
8527impl Default for GeneratedCommandsInfoNV {
8528    #[inline]
8529    fn default() -> Self {
8530        Self {
8531            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
8532            next: ptr::null(),
8533            pipeline_bind_point: PipelineBindPoint::default(),
8534            pipeline: Pipeline::default(),
8535            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8536            stream_count: u32::default(),
8537            streams: ptr::null(),
8538            sequences_count: u32::default(),
8539            preprocess_buffer: Buffer::default(),
8540            preprocess_offset: DeviceSize::default(),
8541            preprocess_size: DeviceSize::default(),
8542            sequences_count_buffer: Buffer::default(),
8543            sequences_count_offset: DeviceSize::default(),
8544            sequences_index_buffer: Buffer::default(),
8545            sequences_index_offset: DeviceSize::default(),
8546        }
8547    }
8548}
8549
8550unsafe impl Send for GeneratedCommandsInfoNV {}
8551unsafe impl Sync for GeneratedCommandsInfoNV {}
8552
8553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
8554#[repr(C)]
8555#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8556pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
8557    pub s_type: StructureType,
8558    pub next: *const c_void,
8559    pub indirect_execution_set: IndirectExecutionSetEXT,
8560    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8561    pub max_sequence_count: u32,
8562    pub max_draw_count: u32,
8563}
8564
8565impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
8566    #[inline]
8567    fn default() -> Self {
8568        Self {
8569            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
8570            next: ptr::null(),
8571            indirect_execution_set: IndirectExecutionSetEXT::default(),
8572            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8573            max_sequence_count: u32::default(),
8574            max_draw_count: u32::default(),
8575        }
8576    }
8577}
8578
8579unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoEXT {}
8580unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoEXT {}
8581
8582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
8583#[repr(C)]
8584#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8585pub struct GeneratedCommandsMemoryRequirementsInfoNV {
8586    pub s_type: StructureType,
8587    pub next: *const c_void,
8588    pub pipeline_bind_point: PipelineBindPoint,
8589    pub pipeline: Pipeline,
8590    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8591    pub max_sequences_count: u32,
8592}
8593
8594impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
8595    #[inline]
8596    fn default() -> Self {
8597        Self {
8598            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
8599            next: ptr::null(),
8600            pipeline_bind_point: PipelineBindPoint::default(),
8601            pipeline: Pipeline::default(),
8602            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8603            max_sequences_count: u32::default(),
8604        }
8605    }
8606}
8607
8608unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoNV {}
8609unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoNV {}
8610
8611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
8612#[repr(C)]
8613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8614pub struct GeneratedCommandsPipelineInfoEXT {
8615    pub s_type: StructureType,
8616    pub next: *mut c_void,
8617    pub pipeline: Pipeline,
8618}
8619
8620impl Default for GeneratedCommandsPipelineInfoEXT {
8621    #[inline]
8622    fn default() -> Self {
8623        Self {
8624            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
8625            next: ptr::null_mut(),
8626            pipeline: Pipeline::default(),
8627        }
8628    }
8629}
8630
8631unsafe impl Send for GeneratedCommandsPipelineInfoEXT {}
8632unsafe impl Sync for GeneratedCommandsPipelineInfoEXT {}
8633
8634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
8635#[repr(C)]
8636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8637pub struct GeneratedCommandsShaderInfoEXT {
8638    pub s_type: StructureType,
8639    pub next: *mut c_void,
8640    pub shader_count: u32,
8641    pub shaders: *const ShaderEXT,
8642}
8643
8644impl Default for GeneratedCommandsShaderInfoEXT {
8645    #[inline]
8646    fn default() -> Self {
8647        Self {
8648            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
8649            next: ptr::null_mut(),
8650            shader_count: u32::default(),
8651            shaders: ptr::null(),
8652        }
8653    }
8654}
8655
8656unsafe impl Send for GeneratedCommandsShaderInfoEXT {}
8657unsafe impl Sync for GeneratedCommandsShaderInfoEXT {}
8658
8659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
8660#[repr(C)]
8661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8662pub struct GeometryAABBNV {
8663    pub s_type: StructureType,
8664    pub next: *const c_void,
8665    pub aabb_data: Buffer,
8666    pub num_aab_bs: u32,
8667    pub stride: u32,
8668    pub offset: DeviceSize,
8669}
8670
8671impl Default for GeometryAABBNV {
8672    #[inline]
8673    fn default() -> Self {
8674        Self {
8675            s_type: StructureType::GEOMETRY_AABB_NV,
8676            next: ptr::null(),
8677            aabb_data: Buffer::default(),
8678            num_aab_bs: u32::default(),
8679            stride: u32::default(),
8680            offset: DeviceSize::default(),
8681        }
8682    }
8683}
8684
8685unsafe impl Send for GeometryAABBNV {}
8686unsafe impl Sync for GeometryAABBNV {}
8687
8688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
8689#[repr(C)]
8690#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8691pub struct GeometryDataNV {
8692    pub triangles: GeometryTrianglesNV,
8693    pub aabbs: GeometryAABBNV,
8694}
8695
8696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
8697#[repr(C)]
8698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8699pub struct GeometryNV {
8700    pub s_type: StructureType,
8701    pub next: *const c_void,
8702    pub geometry_type: GeometryTypeKHR,
8703    pub geometry: GeometryDataNV,
8704    pub flags: GeometryFlagsKHR,
8705}
8706
8707impl Default for GeometryNV {
8708    #[inline]
8709    fn default() -> Self {
8710        Self {
8711            s_type: StructureType::GEOMETRY_NV,
8712            next: ptr::null(),
8713            geometry_type: GeometryTypeKHR::default(),
8714            geometry: GeometryDataNV::default(),
8715            flags: GeometryFlagsKHR::default(),
8716        }
8717    }
8718}
8719
8720unsafe impl Send for GeometryNV {}
8721unsafe impl Sync for GeometryNV {}
8722
8723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
8724#[repr(C)]
8725#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8726pub struct GeometryTrianglesNV {
8727    pub s_type: StructureType,
8728    pub next: *const c_void,
8729    pub vertex_data: Buffer,
8730    pub vertex_offset: DeviceSize,
8731    pub vertex_count: u32,
8732    pub vertex_stride: DeviceSize,
8733    pub vertex_format: Format,
8734    pub index_data: Buffer,
8735    pub index_offset: DeviceSize,
8736    pub index_count: u32,
8737    pub index_type: IndexType,
8738    pub transform_data: Buffer,
8739    pub transform_offset: DeviceSize,
8740}
8741
8742impl Default for GeometryTrianglesNV {
8743    #[inline]
8744    fn default() -> Self {
8745        Self {
8746            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
8747            next: ptr::null(),
8748            vertex_data: Buffer::default(),
8749            vertex_offset: DeviceSize::default(),
8750            vertex_count: u32::default(),
8751            vertex_stride: DeviceSize::default(),
8752            vertex_format: Format::default(),
8753            index_data: Buffer::default(),
8754            index_offset: DeviceSize::default(),
8755            index_count: u32::default(),
8756            index_type: IndexType::default(),
8757            transform_data: Buffer::default(),
8758            transform_offset: DeviceSize::default(),
8759        }
8760    }
8761}
8762
8763unsafe impl Send for GeometryTrianglesNV {}
8764unsafe impl Sync for GeometryTrianglesNV {}
8765
8766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
8767#[repr(C)]
8768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8769pub struct GetLatencyMarkerInfoNV {
8770    pub s_type: StructureType,
8771    pub next: *const c_void,
8772    pub timing_count: u32,
8773    pub timings: *mut LatencyTimingsFrameReportNV,
8774}
8775
8776impl Default for GetLatencyMarkerInfoNV {
8777    #[inline]
8778    fn default() -> Self {
8779        Self {
8780            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
8781            next: ptr::null(),
8782            timing_count: u32::default(),
8783            timings: ptr::null_mut(),
8784        }
8785    }
8786}
8787
8788unsafe impl Send for GetLatencyMarkerInfoNV {}
8789unsafe impl Sync for GetLatencyMarkerInfoNV {}
8790
8791/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
8792#[repr(C)]
8793#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8794pub struct GraphicsPipelineCreateInfo {
8795    pub s_type: StructureType,
8796    pub next: *const c_void,
8797    pub flags: PipelineCreateFlags,
8798    pub stage_count: u32,
8799    pub stages: *const PipelineShaderStageCreateInfo,
8800    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8801    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
8802    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8803    pub viewport_state: *const PipelineViewportStateCreateInfo,
8804    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
8805    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
8806    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
8807    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
8808    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
8809    pub layout: PipelineLayout,
8810    pub render_pass: RenderPass,
8811    pub subpass: u32,
8812    pub base_pipeline_handle: Pipeline,
8813    pub base_pipeline_index: i32,
8814}
8815
8816impl Default for GraphicsPipelineCreateInfo {
8817    #[inline]
8818    fn default() -> Self {
8819        Self {
8820            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
8821            next: ptr::null(),
8822            flags: PipelineCreateFlags::default(),
8823            stage_count: u32::default(),
8824            stages: ptr::null(),
8825            vertex_input_state: ptr::null(),
8826            input_assembly_state: ptr::null(),
8827            tessellation_state: ptr::null(),
8828            viewport_state: ptr::null(),
8829            rasterization_state: ptr::null(),
8830            multisample_state: ptr::null(),
8831            depth_stencil_state: ptr::null(),
8832            color_blend_state: ptr::null(),
8833            dynamic_state: ptr::null(),
8834            layout: PipelineLayout::default(),
8835            render_pass: RenderPass::default(),
8836            subpass: u32::default(),
8837            base_pipeline_handle: Pipeline::default(),
8838            base_pipeline_index: i32::default(),
8839        }
8840    }
8841}
8842
8843unsafe impl Send for GraphicsPipelineCreateInfo {}
8844unsafe impl Sync for GraphicsPipelineCreateInfo {}
8845
8846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
8847#[repr(C)]
8848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8849pub struct GraphicsPipelineLibraryCreateInfoEXT {
8850    pub s_type: StructureType,
8851    pub next: *const c_void,
8852    pub flags: GraphicsPipelineLibraryFlagsEXT,
8853}
8854
8855impl Default for GraphicsPipelineLibraryCreateInfoEXT {
8856    #[inline]
8857    fn default() -> Self {
8858        Self {
8859            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
8860            next: ptr::null(),
8861            flags: GraphicsPipelineLibraryFlagsEXT::default(),
8862        }
8863    }
8864}
8865
8866unsafe impl Send for GraphicsPipelineLibraryCreateInfoEXT {}
8867unsafe impl Sync for GraphicsPipelineLibraryCreateInfoEXT {}
8868
8869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
8870#[repr(C)]
8871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8872pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
8873    pub s_type: StructureType,
8874    pub next: *const c_void,
8875    pub group_count: u32,
8876    pub groups: *const GraphicsShaderGroupCreateInfoNV,
8877    pub pipeline_count: u32,
8878    pub pipelines: *const Pipeline,
8879}
8880
8881impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
8882    #[inline]
8883    fn default() -> Self {
8884        Self {
8885            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
8886            next: ptr::null(),
8887            group_count: u32::default(),
8888            groups: ptr::null(),
8889            pipeline_count: u32::default(),
8890            pipelines: ptr::null(),
8891        }
8892    }
8893}
8894
8895unsafe impl Send for GraphicsPipelineShaderGroupsCreateInfoNV {}
8896unsafe impl Sync for GraphicsPipelineShaderGroupsCreateInfoNV {}
8897
8898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
8899#[repr(C)]
8900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8901pub struct GraphicsShaderGroupCreateInfoNV {
8902    pub s_type: StructureType,
8903    pub next: *const c_void,
8904    pub stage_count: u32,
8905    pub stages: *const PipelineShaderStageCreateInfo,
8906    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8907    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8908}
8909
8910impl Default for GraphicsShaderGroupCreateInfoNV {
8911    #[inline]
8912    fn default() -> Self {
8913        Self {
8914            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
8915            next: ptr::null(),
8916            stage_count: u32::default(),
8917            stages: ptr::null(),
8918            vertex_input_state: ptr::null(),
8919            tessellation_state: ptr::null(),
8920        }
8921    }
8922}
8923
8924unsafe impl Send for GraphicsShaderGroupCreateInfoNV {}
8925unsafe impl Sync for GraphicsShaderGroupCreateInfoNV {}
8926
8927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
8928#[repr(C)]
8929#[derive(Copy, Clone, Debug, PartialEq)]
8930pub struct HdrMetadataEXT {
8931    pub s_type: StructureType,
8932    pub next: *const c_void,
8933    pub display_primary_red: XYColorEXT,
8934    pub display_primary_green: XYColorEXT,
8935    pub display_primary_blue: XYColorEXT,
8936    pub white_point: XYColorEXT,
8937    pub max_luminance: f32,
8938    pub min_luminance: f32,
8939    pub max_content_light_level: f32,
8940    pub max_frame_average_light_level: f32,
8941}
8942
8943impl Default for HdrMetadataEXT {
8944    #[inline]
8945    fn default() -> Self {
8946        Self {
8947            s_type: StructureType::HDR_METADATA_EXT,
8948            next: ptr::null(),
8949            display_primary_red: XYColorEXT::default(),
8950            display_primary_green: XYColorEXT::default(),
8951            display_primary_blue: XYColorEXT::default(),
8952            white_point: XYColorEXT::default(),
8953            max_luminance: f32::default(),
8954            min_luminance: f32::default(),
8955            max_content_light_level: f32::default(),
8956            max_frame_average_light_level: f32::default(),
8957        }
8958    }
8959}
8960
8961unsafe impl Send for HdrMetadataEXT {}
8962unsafe impl Sync for HdrMetadataEXT {}
8963
8964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
8965#[repr(C)]
8966#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8967pub struct HdrVividDynamicMetadataHUAWEI {
8968    pub s_type: StructureType,
8969    pub next: *const c_void,
8970    pub dynamic_metadata_size: usize,
8971    pub dynamic_metadata: *const c_void,
8972}
8973
8974impl Default for HdrVividDynamicMetadataHUAWEI {
8975    #[inline]
8976    fn default() -> Self {
8977        Self {
8978            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
8979            next: ptr::null(),
8980            dynamic_metadata_size: usize::default(),
8981            dynamic_metadata: ptr::null(),
8982        }
8983    }
8984}
8985
8986unsafe impl Send for HdrVividDynamicMetadataHUAWEI {}
8987unsafe impl Sync for HdrVividDynamicMetadataHUAWEI {}
8988
8989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
8990#[repr(C)]
8991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8992pub struct HeadlessSurfaceCreateInfoEXT {
8993    pub s_type: StructureType,
8994    pub next: *const c_void,
8995    pub flags: HeadlessSurfaceCreateFlagsEXT,
8996}
8997
8998impl Default for HeadlessSurfaceCreateInfoEXT {
8999    #[inline]
9000    fn default() -> Self {
9001        Self {
9002            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
9003            next: ptr::null(),
9004            flags: HeadlessSurfaceCreateFlagsEXT::default(),
9005        }
9006    }
9007}
9008
9009unsafe impl Send for HeadlessSurfaceCreateInfoEXT {}
9010unsafe impl Sync for HeadlessSurfaceCreateInfoEXT {}
9011
9012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
9013#[repr(C)]
9014#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9015pub struct HostImageCopyDevicePerformanceQuery {
9016    pub s_type: StructureType,
9017    pub next: *mut c_void,
9018    pub optimal_device_access: Bool32,
9019    pub identical_memory_layout: Bool32,
9020}
9021
9022impl Default for HostImageCopyDevicePerformanceQuery {
9023    #[inline]
9024    fn default() -> Self {
9025        Self {
9026            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
9027            next: ptr::null_mut(),
9028            optimal_device_access: Bool32::default(),
9029            identical_memory_layout: Bool32::default(),
9030        }
9031    }
9032}
9033
9034unsafe impl Send for HostImageCopyDevicePerformanceQuery {}
9035unsafe impl Sync for HostImageCopyDevicePerformanceQuery {}
9036
9037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
9038#[repr(C)]
9039#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9040pub struct HostImageLayoutTransitionInfo {
9041    pub s_type: StructureType,
9042    pub next: *const c_void,
9043    pub image: Image,
9044    pub old_layout: ImageLayout,
9045    pub new_layout: ImageLayout,
9046    pub subresource_range: ImageSubresourceRange,
9047}
9048
9049impl Default for HostImageLayoutTransitionInfo {
9050    #[inline]
9051    fn default() -> Self {
9052        Self {
9053            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
9054            next: ptr::null(),
9055            image: Image::default(),
9056            old_layout: ImageLayout::default(),
9057            new_layout: ImageLayout::default(),
9058            subresource_range: ImageSubresourceRange::default(),
9059        }
9060    }
9061}
9062
9063unsafe impl Send for HostImageLayoutTransitionInfo {}
9064unsafe impl Sync for HostImageLayoutTransitionInfo {}
9065
9066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
9067#[repr(C)]
9068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9069pub struct IOSSurfaceCreateInfoMVK {
9070    pub s_type: StructureType,
9071    pub next: *const c_void,
9072    pub flags: IOSSurfaceCreateFlagsMVK,
9073    pub view: *const c_void,
9074}
9075
9076impl Default for IOSSurfaceCreateInfoMVK {
9077    #[inline]
9078    fn default() -> Self {
9079        Self {
9080            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
9081            next: ptr::null(),
9082            flags: IOSSurfaceCreateFlagsMVK::default(),
9083            view: ptr::null(),
9084        }
9085    }
9086}
9087
9088unsafe impl Send for IOSSurfaceCreateInfoMVK {}
9089unsafe impl Sync for IOSSurfaceCreateInfoMVK {}
9090
9091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
9092#[repr(C)]
9093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9094pub struct ImageAlignmentControlCreateInfoMESA {
9095    pub s_type: StructureType,
9096    pub next: *const c_void,
9097    pub maximum_requested_alignment: u32,
9098}
9099
9100impl Default for ImageAlignmentControlCreateInfoMESA {
9101    #[inline]
9102    fn default() -> Self {
9103        Self {
9104            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
9105            next: ptr::null(),
9106            maximum_requested_alignment: u32::default(),
9107        }
9108    }
9109}
9110
9111unsafe impl Send for ImageAlignmentControlCreateInfoMESA {}
9112unsafe impl Sync for ImageAlignmentControlCreateInfoMESA {}
9113
9114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
9115#[repr(C)]
9116#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9117pub struct ImageBlit {
9118    pub src_subresource: ImageSubresourceLayers,
9119    pub src_offsets: [Offset3D; 2],
9120    pub dst_subresource: ImageSubresourceLayers,
9121    pub dst_offsets: [Offset3D; 2],
9122}
9123
9124/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
9125#[repr(C)]
9126#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9127pub struct ImageBlit2 {
9128    pub s_type: StructureType,
9129    pub next: *const c_void,
9130    pub src_subresource: ImageSubresourceLayers,
9131    pub src_offsets: [Offset3D; 2],
9132    pub dst_subresource: ImageSubresourceLayers,
9133    pub dst_offsets: [Offset3D; 2],
9134}
9135
9136impl Default for ImageBlit2 {
9137    #[inline]
9138    fn default() -> Self {
9139        Self {
9140            s_type: StructureType::IMAGE_BLIT_2,
9141            next: ptr::null(),
9142            src_subresource: ImageSubresourceLayers::default(),
9143            src_offsets: [Offset3D::default(); 2],
9144            dst_subresource: ImageSubresourceLayers::default(),
9145            dst_offsets: [Offset3D::default(); 2],
9146        }
9147    }
9148}
9149
9150unsafe impl Send for ImageBlit2 {}
9151unsafe impl Sync for ImageBlit2 {}
9152
9153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
9154#[repr(C)]
9155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9156pub struct ImageCaptureDescriptorDataInfoEXT {
9157    pub s_type: StructureType,
9158    pub next: *const c_void,
9159    pub image: Image,
9160}
9161
9162impl Default for ImageCaptureDescriptorDataInfoEXT {
9163    #[inline]
9164    fn default() -> Self {
9165        Self {
9166            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9167            next: ptr::null(),
9168            image: Image::default(),
9169        }
9170    }
9171}
9172
9173unsafe impl Send for ImageCaptureDescriptorDataInfoEXT {}
9174unsafe impl Sync for ImageCaptureDescriptorDataInfoEXT {}
9175
9176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
9177#[repr(C)]
9178#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9179pub struct ImageCompressionControlEXT {
9180    pub s_type: StructureType,
9181    pub next: *const c_void,
9182    pub flags: ImageCompressionFlagsEXT,
9183    pub compression_control_plane_count: u32,
9184    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
9185}
9186
9187impl Default for ImageCompressionControlEXT {
9188    #[inline]
9189    fn default() -> Self {
9190        Self {
9191            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
9192            next: ptr::null(),
9193            flags: ImageCompressionFlagsEXT::default(),
9194            compression_control_plane_count: u32::default(),
9195            fixed_rate_flags: ptr::null_mut(),
9196        }
9197    }
9198}
9199
9200unsafe impl Send for ImageCompressionControlEXT {}
9201unsafe impl Sync for ImageCompressionControlEXT {}
9202
9203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
9204#[repr(C)]
9205#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9206pub struct ImageCompressionPropertiesEXT {
9207    pub s_type: StructureType,
9208    pub next: *mut c_void,
9209    pub image_compression_flags: ImageCompressionFlagsEXT,
9210    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
9211}
9212
9213impl Default for ImageCompressionPropertiesEXT {
9214    #[inline]
9215    fn default() -> Self {
9216        Self {
9217            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
9218            next: ptr::null_mut(),
9219            image_compression_flags: ImageCompressionFlagsEXT::default(),
9220            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
9221        }
9222    }
9223}
9224
9225unsafe impl Send for ImageCompressionPropertiesEXT {}
9226unsafe impl Sync for ImageCompressionPropertiesEXT {}
9227
9228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
9229#[repr(C)]
9230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9231pub struct ImageConstraintsInfoFUCHSIA {
9232    pub s_type: StructureType,
9233    pub next: *const c_void,
9234    pub format_constraints_count: u32,
9235    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
9236    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
9237    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
9238}
9239
9240impl Default for ImageConstraintsInfoFUCHSIA {
9241    #[inline]
9242    fn default() -> Self {
9243        Self {
9244            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
9245            next: ptr::null(),
9246            format_constraints_count: u32::default(),
9247            format_constraints: ptr::null(),
9248            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
9249            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
9250        }
9251    }
9252}
9253
9254unsafe impl Send for ImageConstraintsInfoFUCHSIA {}
9255unsafe impl Sync for ImageConstraintsInfoFUCHSIA {}
9256
9257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
9258#[repr(C)]
9259#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9260pub struct ImageCopy {
9261    pub src_subresource: ImageSubresourceLayers,
9262    pub src_offset: Offset3D,
9263    pub dst_subresource: ImageSubresourceLayers,
9264    pub dst_offset: Offset3D,
9265    pub extent: Extent3D,
9266}
9267
9268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
9269#[repr(C)]
9270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9271pub struct ImageCopy2 {
9272    pub s_type: StructureType,
9273    pub next: *const c_void,
9274    pub src_subresource: ImageSubresourceLayers,
9275    pub src_offset: Offset3D,
9276    pub dst_subresource: ImageSubresourceLayers,
9277    pub dst_offset: Offset3D,
9278    pub extent: Extent3D,
9279}
9280
9281impl Default for ImageCopy2 {
9282    #[inline]
9283    fn default() -> Self {
9284        Self {
9285            s_type: StructureType::IMAGE_COPY_2,
9286            next: ptr::null(),
9287            src_subresource: ImageSubresourceLayers::default(),
9288            src_offset: Offset3D::default(),
9289            dst_subresource: ImageSubresourceLayers::default(),
9290            dst_offset: Offset3D::default(),
9291            extent: Extent3D::default(),
9292        }
9293    }
9294}
9295
9296unsafe impl Send for ImageCopy2 {}
9297unsafe impl Sync for ImageCopy2 {}
9298
9299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
9300#[repr(C)]
9301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9302pub struct ImageCreateInfo {
9303    pub s_type: StructureType,
9304    pub next: *const c_void,
9305    pub flags: ImageCreateFlags,
9306    pub image_type: ImageType,
9307    pub format: Format,
9308    pub extent: Extent3D,
9309    pub mip_levels: u32,
9310    pub array_layers: u32,
9311    pub samples: SampleCountFlags,
9312    pub tiling: ImageTiling,
9313    pub usage: ImageUsageFlags,
9314    pub sharing_mode: SharingMode,
9315    pub queue_family_index_count: u32,
9316    pub queue_family_indices: *const u32,
9317    pub initial_layout: ImageLayout,
9318}
9319
9320impl Default for ImageCreateInfo {
9321    #[inline]
9322    fn default() -> Self {
9323        Self {
9324            s_type: StructureType::IMAGE_CREATE_INFO,
9325            next: ptr::null(),
9326            flags: ImageCreateFlags::default(),
9327            image_type: ImageType::default(),
9328            format: Format::default(),
9329            extent: Extent3D::default(),
9330            mip_levels: u32::default(),
9331            array_layers: u32::default(),
9332            samples: SampleCountFlags::default(),
9333            tiling: ImageTiling::default(),
9334            usage: ImageUsageFlags::default(),
9335            sharing_mode: SharingMode::default(),
9336            queue_family_index_count: u32::default(),
9337            queue_family_indices: ptr::null(),
9338            initial_layout: ImageLayout::default(),
9339        }
9340    }
9341}
9342
9343unsafe impl Send for ImageCreateInfo {}
9344unsafe impl Sync for ImageCreateInfo {}
9345
9346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
9347#[repr(C)]
9348#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9349pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
9350    pub s_type: StructureType,
9351    pub next: *const c_void,
9352    pub drm_format_modifier: u64,
9353    pub drm_format_modifier_plane_count: u32,
9354    pub plane_layouts: *const SubresourceLayout,
9355}
9356
9357impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
9358    #[inline]
9359    fn default() -> Self {
9360        Self {
9361            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
9362            next: ptr::null(),
9363            drm_format_modifier: u64::default(),
9364            drm_format_modifier_plane_count: u32::default(),
9365            plane_layouts: ptr::null(),
9366        }
9367    }
9368}
9369
9370unsafe impl Send for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9371unsafe impl Sync for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9372
9373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
9374#[repr(C)]
9375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9376pub struct ImageDrmFormatModifierListCreateInfoEXT {
9377    pub s_type: StructureType,
9378    pub next: *const c_void,
9379    pub drm_format_modifier_count: u32,
9380    pub drm_format_modifiers: *const u64,
9381}
9382
9383impl Default for ImageDrmFormatModifierListCreateInfoEXT {
9384    #[inline]
9385    fn default() -> Self {
9386        Self {
9387            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
9388            next: ptr::null(),
9389            drm_format_modifier_count: u32::default(),
9390            drm_format_modifiers: ptr::null(),
9391        }
9392    }
9393}
9394
9395unsafe impl Send for ImageDrmFormatModifierListCreateInfoEXT {}
9396unsafe impl Sync for ImageDrmFormatModifierListCreateInfoEXT {}
9397
9398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
9399#[repr(C)]
9400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9401pub struct ImageDrmFormatModifierPropertiesEXT {
9402    pub s_type: StructureType,
9403    pub next: *mut c_void,
9404    pub drm_format_modifier: u64,
9405}
9406
9407impl Default for ImageDrmFormatModifierPropertiesEXT {
9408    #[inline]
9409    fn default() -> Self {
9410        Self {
9411            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
9412            next: ptr::null_mut(),
9413            drm_format_modifier: u64::default(),
9414        }
9415    }
9416}
9417
9418unsafe impl Send for ImageDrmFormatModifierPropertiesEXT {}
9419unsafe impl Sync for ImageDrmFormatModifierPropertiesEXT {}
9420
9421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
9422#[repr(C)]
9423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9424pub struct ImageFormatConstraintsInfoFUCHSIA {
9425    pub s_type: StructureType,
9426    pub next: *const c_void,
9427    pub image_create_info: ImageCreateInfo,
9428    pub required_format_features: FormatFeatureFlags,
9429    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
9430    pub sysmem_pixel_format: u64,
9431    pub color_space_count: u32,
9432    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
9433}
9434
9435impl Default for ImageFormatConstraintsInfoFUCHSIA {
9436    #[inline]
9437    fn default() -> Self {
9438        Self {
9439            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
9440            next: ptr::null(),
9441            image_create_info: ImageCreateInfo::default(),
9442            required_format_features: FormatFeatureFlags::default(),
9443            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
9444            sysmem_pixel_format: u64::default(),
9445            color_space_count: u32::default(),
9446            color_spaces: ptr::null(),
9447        }
9448    }
9449}
9450
9451unsafe impl Send for ImageFormatConstraintsInfoFUCHSIA {}
9452unsafe impl Sync for ImageFormatConstraintsInfoFUCHSIA {}
9453
9454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
9455#[repr(C)]
9456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9457pub struct ImageFormatListCreateInfo {
9458    pub s_type: StructureType,
9459    pub next: *const c_void,
9460    pub view_format_count: u32,
9461    pub view_formats: *const Format,
9462}
9463
9464impl Default for ImageFormatListCreateInfo {
9465    #[inline]
9466    fn default() -> Self {
9467        Self {
9468            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
9469            next: ptr::null(),
9470            view_format_count: u32::default(),
9471            view_formats: ptr::null(),
9472        }
9473    }
9474}
9475
9476unsafe impl Send for ImageFormatListCreateInfo {}
9477unsafe impl Sync for ImageFormatListCreateInfo {}
9478
9479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
9480#[repr(C)]
9481#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9482pub struct ImageFormatProperties {
9483    pub max_extent: Extent3D,
9484    pub max_mip_levels: u32,
9485    pub max_array_layers: u32,
9486    pub sample_counts: SampleCountFlags,
9487    pub max_resource_size: DeviceSize,
9488}
9489
9490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
9491#[repr(C)]
9492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9493pub struct ImageFormatProperties2 {
9494    pub s_type: StructureType,
9495    pub next: *mut c_void,
9496    pub image_format_properties: ImageFormatProperties,
9497}
9498
9499impl Default for ImageFormatProperties2 {
9500    #[inline]
9501    fn default() -> Self {
9502        Self {
9503            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
9504            next: ptr::null_mut(),
9505            image_format_properties: ImageFormatProperties::default(),
9506        }
9507    }
9508}
9509
9510unsafe impl Send for ImageFormatProperties2 {}
9511unsafe impl Sync for ImageFormatProperties2 {}
9512
9513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
9514#[repr(C)]
9515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9516pub struct ImageMemoryBarrier {
9517    pub s_type: StructureType,
9518    pub next: *const c_void,
9519    pub src_access_mask: AccessFlags,
9520    pub dst_access_mask: AccessFlags,
9521    pub old_layout: ImageLayout,
9522    pub new_layout: ImageLayout,
9523    pub src_queue_family_index: u32,
9524    pub dst_queue_family_index: u32,
9525    pub image: Image,
9526    pub subresource_range: ImageSubresourceRange,
9527}
9528
9529impl Default for ImageMemoryBarrier {
9530    #[inline]
9531    fn default() -> Self {
9532        Self {
9533            s_type: StructureType::IMAGE_MEMORY_BARRIER,
9534            next: ptr::null(),
9535            src_access_mask: AccessFlags::default(),
9536            dst_access_mask: AccessFlags::default(),
9537            old_layout: ImageLayout::default(),
9538            new_layout: ImageLayout::default(),
9539            src_queue_family_index: u32::default(),
9540            dst_queue_family_index: u32::default(),
9541            image: Image::default(),
9542            subresource_range: ImageSubresourceRange::default(),
9543        }
9544    }
9545}
9546
9547unsafe impl Send for ImageMemoryBarrier {}
9548unsafe impl Sync for ImageMemoryBarrier {}
9549
9550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
9551#[repr(C)]
9552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9553pub struct ImageMemoryBarrier2 {
9554    pub s_type: StructureType,
9555    pub next: *const c_void,
9556    pub src_stage_mask: PipelineStageFlags2,
9557    pub src_access_mask: AccessFlags2,
9558    pub dst_stage_mask: PipelineStageFlags2,
9559    pub dst_access_mask: AccessFlags2,
9560    pub old_layout: ImageLayout,
9561    pub new_layout: ImageLayout,
9562    pub src_queue_family_index: u32,
9563    pub dst_queue_family_index: u32,
9564    pub image: Image,
9565    pub subresource_range: ImageSubresourceRange,
9566}
9567
9568impl Default for ImageMemoryBarrier2 {
9569    #[inline]
9570    fn default() -> Self {
9571        Self {
9572            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
9573            next: ptr::null(),
9574            src_stage_mask: PipelineStageFlags2::default(),
9575            src_access_mask: AccessFlags2::default(),
9576            dst_stage_mask: PipelineStageFlags2::default(),
9577            dst_access_mask: AccessFlags2::default(),
9578            old_layout: ImageLayout::default(),
9579            new_layout: ImageLayout::default(),
9580            src_queue_family_index: u32::default(),
9581            dst_queue_family_index: u32::default(),
9582            image: Image::default(),
9583            subresource_range: ImageSubresourceRange::default(),
9584        }
9585    }
9586}
9587
9588unsafe impl Send for ImageMemoryBarrier2 {}
9589unsafe impl Sync for ImageMemoryBarrier2 {}
9590
9591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
9592#[repr(C)]
9593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9594pub struct ImageMemoryRequirementsInfo2 {
9595    pub s_type: StructureType,
9596    pub next: *const c_void,
9597    pub image: Image,
9598}
9599
9600impl Default for ImageMemoryRequirementsInfo2 {
9601    #[inline]
9602    fn default() -> Self {
9603        Self {
9604            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
9605            next: ptr::null(),
9606            image: Image::default(),
9607        }
9608    }
9609}
9610
9611unsafe impl Send for ImageMemoryRequirementsInfo2 {}
9612unsafe impl Sync for ImageMemoryRequirementsInfo2 {}
9613
9614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
9615#[repr(C)]
9616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9617pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
9618    pub s_type: StructureType,
9619    pub next: *const c_void,
9620    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
9621    pub image_pipe_handle: zx_handle_t,
9622}
9623
9624impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
9625    #[inline]
9626    fn default() -> Self {
9627        Self {
9628            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
9629            next: ptr::null(),
9630            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
9631            image_pipe_handle: zx_handle_t::default(),
9632        }
9633    }
9634}
9635
9636unsafe impl Send for ImagePipeSurfaceCreateInfoFUCHSIA {}
9637unsafe impl Sync for ImagePipeSurfaceCreateInfoFUCHSIA {}
9638
9639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
9640#[repr(C)]
9641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9642pub struct ImagePlaneMemoryRequirementsInfo {
9643    pub s_type: StructureType,
9644    pub next: *const c_void,
9645    pub plane_aspect: ImageAspectFlags,
9646}
9647
9648impl Default for ImagePlaneMemoryRequirementsInfo {
9649    #[inline]
9650    fn default() -> Self {
9651        Self {
9652            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
9653            next: ptr::null(),
9654            plane_aspect: ImageAspectFlags::default(),
9655        }
9656    }
9657}
9658
9659unsafe impl Send for ImagePlaneMemoryRequirementsInfo {}
9660unsafe impl Sync for ImagePlaneMemoryRequirementsInfo {}
9661
9662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
9663#[repr(C)]
9664#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9665pub struct ImageResolve {
9666    pub src_subresource: ImageSubresourceLayers,
9667    pub src_offset: Offset3D,
9668    pub dst_subresource: ImageSubresourceLayers,
9669    pub dst_offset: Offset3D,
9670    pub extent: Extent3D,
9671}
9672
9673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
9674#[repr(C)]
9675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9676pub struct ImageResolve2 {
9677    pub s_type: StructureType,
9678    pub next: *const c_void,
9679    pub src_subresource: ImageSubresourceLayers,
9680    pub src_offset: Offset3D,
9681    pub dst_subresource: ImageSubresourceLayers,
9682    pub dst_offset: Offset3D,
9683    pub extent: Extent3D,
9684}
9685
9686impl Default for ImageResolve2 {
9687    #[inline]
9688    fn default() -> Self {
9689        Self {
9690            s_type: StructureType::IMAGE_RESOLVE_2,
9691            next: ptr::null(),
9692            src_subresource: ImageSubresourceLayers::default(),
9693            src_offset: Offset3D::default(),
9694            dst_subresource: ImageSubresourceLayers::default(),
9695            dst_offset: Offset3D::default(),
9696            extent: Extent3D::default(),
9697        }
9698    }
9699}
9700
9701unsafe impl Send for ImageResolve2 {}
9702unsafe impl Sync for ImageResolve2 {}
9703
9704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
9705#[repr(C)]
9706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9707pub struct ImageSparseMemoryRequirementsInfo2 {
9708    pub s_type: StructureType,
9709    pub next: *const c_void,
9710    pub image: Image,
9711}
9712
9713impl Default for ImageSparseMemoryRequirementsInfo2 {
9714    #[inline]
9715    fn default() -> Self {
9716        Self {
9717            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
9718            next: ptr::null(),
9719            image: Image::default(),
9720        }
9721    }
9722}
9723
9724unsafe impl Send for ImageSparseMemoryRequirementsInfo2 {}
9725unsafe impl Sync for ImageSparseMemoryRequirementsInfo2 {}
9726
9727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
9728#[repr(C)]
9729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9730pub struct ImageStencilUsageCreateInfo {
9731    pub s_type: StructureType,
9732    pub next: *const c_void,
9733    pub stencil_usage: ImageUsageFlags,
9734}
9735
9736impl Default for ImageStencilUsageCreateInfo {
9737    #[inline]
9738    fn default() -> Self {
9739        Self {
9740            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
9741            next: ptr::null(),
9742            stencil_usage: ImageUsageFlags::default(),
9743        }
9744    }
9745}
9746
9747unsafe impl Send for ImageStencilUsageCreateInfo {}
9748unsafe impl Sync for ImageStencilUsageCreateInfo {}
9749
9750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
9751#[repr(C)]
9752#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9753pub struct ImageSubresource {
9754    pub aspect_mask: ImageAspectFlags,
9755    pub mip_level: u32,
9756    pub array_layer: u32,
9757}
9758
9759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
9760#[repr(C)]
9761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9762pub struct ImageSubresource2 {
9763    pub s_type: StructureType,
9764    pub next: *mut c_void,
9765    pub image_subresource: ImageSubresource,
9766}
9767
9768impl Default for ImageSubresource2 {
9769    #[inline]
9770    fn default() -> Self {
9771        Self {
9772            s_type: StructureType::IMAGE_SUBRESOURCE_2,
9773            next: ptr::null_mut(),
9774            image_subresource: ImageSubresource::default(),
9775        }
9776    }
9777}
9778
9779unsafe impl Send for ImageSubresource2 {}
9780unsafe impl Sync for ImageSubresource2 {}
9781
9782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
9783#[repr(C)]
9784#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9785pub struct ImageSubresourceLayers {
9786    pub aspect_mask: ImageAspectFlags,
9787    pub mip_level: u32,
9788    pub base_array_layer: u32,
9789    pub layer_count: u32,
9790}
9791
9792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
9793#[repr(C)]
9794#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9795pub struct ImageSubresourceRange {
9796    pub aspect_mask: ImageAspectFlags,
9797    pub base_mip_level: u32,
9798    pub level_count: u32,
9799    pub base_array_layer: u32,
9800    pub layer_count: u32,
9801}
9802
9803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
9804#[repr(C)]
9805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9806pub struct ImageSwapchainCreateInfoKHR {
9807    pub s_type: StructureType,
9808    pub next: *const c_void,
9809    pub swapchain: SwapchainKHR,
9810}
9811
9812impl Default for ImageSwapchainCreateInfoKHR {
9813    #[inline]
9814    fn default() -> Self {
9815        Self {
9816            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
9817            next: ptr::null(),
9818            swapchain: SwapchainKHR::default(),
9819        }
9820    }
9821}
9822
9823unsafe impl Send for ImageSwapchainCreateInfoKHR {}
9824unsafe impl Sync for ImageSwapchainCreateInfoKHR {}
9825
9826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
9827#[repr(C)]
9828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9829pub struct ImageToMemoryCopy {
9830    pub s_type: StructureType,
9831    pub next: *const c_void,
9832    pub host_pointer: *mut c_void,
9833    pub memory_row_length: u32,
9834    pub memory_image_height: u32,
9835    pub image_subresource: ImageSubresourceLayers,
9836    pub image_offset: Offset3D,
9837    pub image_extent: Extent3D,
9838}
9839
9840impl Default for ImageToMemoryCopy {
9841    #[inline]
9842    fn default() -> Self {
9843        Self {
9844            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
9845            next: ptr::null(),
9846            host_pointer: ptr::null_mut(),
9847            memory_row_length: u32::default(),
9848            memory_image_height: u32::default(),
9849            image_subresource: ImageSubresourceLayers::default(),
9850            image_offset: Offset3D::default(),
9851            image_extent: Extent3D::default(),
9852        }
9853    }
9854}
9855
9856unsafe impl Send for ImageToMemoryCopy {}
9857unsafe impl Sync for ImageToMemoryCopy {}
9858
9859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
9860#[repr(C)]
9861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9862pub struct ImageViewASTCDecodeModeEXT {
9863    pub s_type: StructureType,
9864    pub next: *const c_void,
9865    pub decode_mode: Format,
9866}
9867
9868impl Default for ImageViewASTCDecodeModeEXT {
9869    #[inline]
9870    fn default() -> Self {
9871        Self {
9872            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
9873            next: ptr::null(),
9874            decode_mode: Format::default(),
9875        }
9876    }
9877}
9878
9879unsafe impl Send for ImageViewASTCDecodeModeEXT {}
9880unsafe impl Sync for ImageViewASTCDecodeModeEXT {}
9881
9882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
9883#[repr(C)]
9884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9885pub struct ImageViewAddressPropertiesNVX {
9886    pub s_type: StructureType,
9887    pub next: *mut c_void,
9888    pub device_address: DeviceAddress,
9889    pub size: DeviceSize,
9890}
9891
9892impl Default for ImageViewAddressPropertiesNVX {
9893    #[inline]
9894    fn default() -> Self {
9895        Self {
9896            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
9897            next: ptr::null_mut(),
9898            device_address: DeviceAddress::default(),
9899            size: DeviceSize::default(),
9900        }
9901    }
9902}
9903
9904unsafe impl Send for ImageViewAddressPropertiesNVX {}
9905unsafe impl Sync for ImageViewAddressPropertiesNVX {}
9906
9907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
9908#[repr(C)]
9909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9910pub struct ImageViewCaptureDescriptorDataInfoEXT {
9911    pub s_type: StructureType,
9912    pub next: *const c_void,
9913    pub image_view: ImageView,
9914}
9915
9916impl Default for ImageViewCaptureDescriptorDataInfoEXT {
9917    #[inline]
9918    fn default() -> Self {
9919        Self {
9920            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9921            next: ptr::null(),
9922            image_view: ImageView::default(),
9923        }
9924    }
9925}
9926
9927unsafe impl Send for ImageViewCaptureDescriptorDataInfoEXT {}
9928unsafe impl Sync for ImageViewCaptureDescriptorDataInfoEXT {}
9929
9930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
9931#[repr(C)]
9932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9933pub struct ImageViewCreateInfo {
9934    pub s_type: StructureType,
9935    pub next: *const c_void,
9936    pub flags: ImageViewCreateFlags,
9937    pub image: Image,
9938    pub view_type: ImageViewType,
9939    pub format: Format,
9940    pub components: ComponentMapping,
9941    pub subresource_range: ImageSubresourceRange,
9942}
9943
9944impl Default for ImageViewCreateInfo {
9945    #[inline]
9946    fn default() -> Self {
9947        Self {
9948            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
9949            next: ptr::null(),
9950            flags: ImageViewCreateFlags::default(),
9951            image: Image::default(),
9952            view_type: ImageViewType::default(),
9953            format: Format::default(),
9954            components: ComponentMapping::default(),
9955            subresource_range: ImageSubresourceRange::default(),
9956        }
9957    }
9958}
9959
9960unsafe impl Send for ImageViewCreateInfo {}
9961unsafe impl Sync for ImageViewCreateInfo {}
9962
9963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
9964#[repr(C)]
9965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9966pub struct ImageViewHandleInfoNVX {
9967    pub s_type: StructureType,
9968    pub next: *const c_void,
9969    pub image_view: ImageView,
9970    pub descriptor_type: DescriptorType,
9971    pub sampler: Sampler,
9972}
9973
9974impl Default for ImageViewHandleInfoNVX {
9975    #[inline]
9976    fn default() -> Self {
9977        Self {
9978            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
9979            next: ptr::null(),
9980            image_view: ImageView::default(),
9981            descriptor_type: DescriptorType::default(),
9982            sampler: Sampler::default(),
9983        }
9984    }
9985}
9986
9987unsafe impl Send for ImageViewHandleInfoNVX {}
9988unsafe impl Sync for ImageViewHandleInfoNVX {}
9989
9990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
9991#[repr(C)]
9992#[derive(Copy, Clone, Debug, PartialEq)]
9993pub struct ImageViewMinLodCreateInfoEXT {
9994    pub s_type: StructureType,
9995    pub next: *const c_void,
9996    pub min_lod: f32,
9997}
9998
9999impl Default for ImageViewMinLodCreateInfoEXT {
10000    #[inline]
10001    fn default() -> Self {
10002        Self {
10003            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
10004            next: ptr::null(),
10005            min_lod: f32::default(),
10006        }
10007    }
10008}
10009
10010unsafe impl Send for ImageViewMinLodCreateInfoEXT {}
10011unsafe impl Sync for ImageViewMinLodCreateInfoEXT {}
10012
10013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
10014#[repr(C)]
10015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10016pub struct ImageViewSampleWeightCreateInfoQCOM {
10017    pub s_type: StructureType,
10018    pub next: *const c_void,
10019    pub filter_center: Offset2D,
10020    pub filter_size: Extent2D,
10021    pub num_phases: u32,
10022}
10023
10024impl Default for ImageViewSampleWeightCreateInfoQCOM {
10025    #[inline]
10026    fn default() -> Self {
10027        Self {
10028            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
10029            next: ptr::null(),
10030            filter_center: Offset2D::default(),
10031            filter_size: Extent2D::default(),
10032            num_phases: u32::default(),
10033        }
10034    }
10035}
10036
10037unsafe impl Send for ImageViewSampleWeightCreateInfoQCOM {}
10038unsafe impl Sync for ImageViewSampleWeightCreateInfoQCOM {}
10039
10040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
10041#[repr(C)]
10042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10043pub struct ImageViewSlicedCreateInfoEXT {
10044    pub s_type: StructureType,
10045    pub next: *const c_void,
10046    pub slice_offset: u32,
10047    pub slice_count: u32,
10048}
10049
10050impl Default for ImageViewSlicedCreateInfoEXT {
10051    #[inline]
10052    fn default() -> Self {
10053        Self {
10054            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
10055            next: ptr::null(),
10056            slice_offset: u32::default(),
10057            slice_count: u32::default(),
10058        }
10059    }
10060}
10061
10062unsafe impl Send for ImageViewSlicedCreateInfoEXT {}
10063unsafe impl Sync for ImageViewSlicedCreateInfoEXT {}
10064
10065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
10066#[repr(C)]
10067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10068pub struct ImageViewUsageCreateInfo {
10069    pub s_type: StructureType,
10070    pub next: *const c_void,
10071    pub usage: ImageUsageFlags,
10072}
10073
10074impl Default for ImageViewUsageCreateInfo {
10075    #[inline]
10076    fn default() -> Self {
10077        Self {
10078            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
10079            next: ptr::null(),
10080            usage: ImageUsageFlags::default(),
10081        }
10082    }
10083}
10084
10085unsafe impl Send for ImageViewUsageCreateInfo {}
10086unsafe impl Sync for ImageViewUsageCreateInfo {}
10087
10088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
10089#[repr(C)]
10090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10091pub struct ImportAndroidHardwareBufferInfoANDROID {
10092    pub s_type: StructureType,
10093    pub next: *const c_void,
10094    pub buffer: *mut AHardwareBuffer,
10095}
10096
10097impl Default for ImportAndroidHardwareBufferInfoANDROID {
10098    #[inline]
10099    fn default() -> Self {
10100        Self {
10101            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
10102            next: ptr::null(),
10103            buffer: ptr::null_mut(),
10104        }
10105    }
10106}
10107
10108unsafe impl Send for ImportAndroidHardwareBufferInfoANDROID {}
10109unsafe impl Sync for ImportAndroidHardwareBufferInfoANDROID {}
10110
10111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
10112#[repr(C)]
10113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10114pub struct ImportFenceFdInfoKHR {
10115    pub s_type: StructureType,
10116    pub next: *const c_void,
10117    pub fence: Fence,
10118    pub flags: FenceImportFlags,
10119    pub handle_type: ExternalFenceHandleTypeFlags,
10120    pub fd: c_int,
10121}
10122
10123impl Default for ImportFenceFdInfoKHR {
10124    #[inline]
10125    fn default() -> Self {
10126        Self {
10127            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
10128            next: ptr::null(),
10129            fence: Fence::default(),
10130            flags: FenceImportFlags::default(),
10131            handle_type: ExternalFenceHandleTypeFlags::default(),
10132            fd: c_int::default(),
10133        }
10134    }
10135}
10136
10137unsafe impl Send for ImportFenceFdInfoKHR {}
10138unsafe impl Sync for ImportFenceFdInfoKHR {}
10139
10140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
10141#[repr(C)]
10142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10143pub struct ImportFenceSciSyncInfoNV {
10144    pub s_type: StructureType,
10145    pub next: *const c_void,
10146    pub fence: Fence,
10147    pub handle_type: ExternalFenceHandleTypeFlags,
10148    pub handle: *mut c_void,
10149}
10150
10151impl Default for ImportFenceSciSyncInfoNV {
10152    #[inline]
10153    fn default() -> Self {
10154        Self {
10155            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
10156            next: ptr::null(),
10157            fence: Fence::default(),
10158            handle_type: ExternalFenceHandleTypeFlags::default(),
10159            handle: ptr::null_mut(),
10160        }
10161    }
10162}
10163
10164unsafe impl Send for ImportFenceSciSyncInfoNV {}
10165unsafe impl Sync for ImportFenceSciSyncInfoNV {}
10166
10167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
10168#[repr(C)]
10169#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10170pub struct ImportFenceWin32HandleInfoKHR {
10171    pub s_type: StructureType,
10172    pub next: *const c_void,
10173    pub fence: Fence,
10174    pub flags: FenceImportFlags,
10175    pub handle_type: ExternalFenceHandleTypeFlags,
10176    pub handle: HANDLE,
10177    pub name: LPCWSTR,
10178}
10179
10180impl Default for ImportFenceWin32HandleInfoKHR {
10181    #[inline]
10182    fn default() -> Self {
10183        Self {
10184            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
10185            next: ptr::null(),
10186            fence: Fence::default(),
10187            flags: FenceImportFlags::default(),
10188            handle_type: ExternalFenceHandleTypeFlags::default(),
10189            handle: ptr::null_mut(),
10190            name: ptr::null_mut(),
10191        }
10192    }
10193}
10194
10195unsafe impl Send for ImportFenceWin32HandleInfoKHR {}
10196unsafe impl Sync for ImportFenceWin32HandleInfoKHR {}
10197
10198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
10199#[repr(C)]
10200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10201pub struct ImportMemoryBufferCollectionFUCHSIA {
10202    pub s_type: StructureType,
10203    pub next: *const c_void,
10204    pub collection: BufferCollectionFUCHSIA,
10205    pub index: u32,
10206}
10207
10208impl Default for ImportMemoryBufferCollectionFUCHSIA {
10209    #[inline]
10210    fn default() -> Self {
10211        Self {
10212            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
10213            next: ptr::null(),
10214            collection: BufferCollectionFUCHSIA::default(),
10215            index: u32::default(),
10216        }
10217    }
10218}
10219
10220unsafe impl Send for ImportMemoryBufferCollectionFUCHSIA {}
10221unsafe impl Sync for ImportMemoryBufferCollectionFUCHSIA {}
10222
10223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
10224#[repr(C)]
10225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10226pub struct ImportMemoryFdInfoKHR {
10227    pub s_type: StructureType,
10228    pub next: *const c_void,
10229    pub handle_type: ExternalMemoryHandleTypeFlags,
10230    pub fd: c_int,
10231}
10232
10233impl Default for ImportMemoryFdInfoKHR {
10234    #[inline]
10235    fn default() -> Self {
10236        Self {
10237            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
10238            next: ptr::null(),
10239            handle_type: ExternalMemoryHandleTypeFlags::default(),
10240            fd: c_int::default(),
10241        }
10242    }
10243}
10244
10245unsafe impl Send for ImportMemoryFdInfoKHR {}
10246unsafe impl Sync for ImportMemoryFdInfoKHR {}
10247
10248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
10249#[repr(C)]
10250#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10251pub struct ImportMemoryHostPointerInfoEXT {
10252    pub s_type: StructureType,
10253    pub next: *const c_void,
10254    pub handle_type: ExternalMemoryHandleTypeFlags,
10255    pub host_pointer: *mut c_void,
10256}
10257
10258impl Default for ImportMemoryHostPointerInfoEXT {
10259    #[inline]
10260    fn default() -> Self {
10261        Self {
10262            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
10263            next: ptr::null(),
10264            handle_type: ExternalMemoryHandleTypeFlags::default(),
10265            host_pointer: ptr::null_mut(),
10266        }
10267    }
10268}
10269
10270unsafe impl Send for ImportMemoryHostPointerInfoEXT {}
10271unsafe impl Sync for ImportMemoryHostPointerInfoEXT {}
10272
10273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
10274#[repr(C)]
10275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10276pub struct ImportMemoryMetalHandleInfoEXT {
10277    pub s_type: StructureType,
10278    pub next: *const c_void,
10279    pub handle_type: ExternalMemoryHandleTypeFlags,
10280    pub handle: *mut c_void,
10281}
10282
10283impl Default for ImportMemoryMetalHandleInfoEXT {
10284    #[inline]
10285    fn default() -> Self {
10286        Self {
10287            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
10288            next: ptr::null(),
10289            handle_type: ExternalMemoryHandleTypeFlags::default(),
10290            handle: ptr::null_mut(),
10291        }
10292    }
10293}
10294
10295unsafe impl Send for ImportMemoryMetalHandleInfoEXT {}
10296unsafe impl Sync for ImportMemoryMetalHandleInfoEXT {}
10297
10298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
10299#[repr(C)]
10300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10301pub struct ImportMemorySciBufInfoNV {
10302    pub s_type: StructureType,
10303    pub next: *const c_void,
10304    pub handle_type: ExternalMemoryHandleTypeFlags,
10305    pub handle: NvSciBufObj,
10306}
10307
10308impl Default for ImportMemorySciBufInfoNV {
10309    #[inline]
10310    fn default() -> Self {
10311        Self {
10312            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
10313            next: ptr::null(),
10314            handle_type: ExternalMemoryHandleTypeFlags::default(),
10315            handle: ptr::null_mut(),
10316        }
10317    }
10318}
10319
10320unsafe impl Send for ImportMemorySciBufInfoNV {}
10321unsafe impl Sync for ImportMemorySciBufInfoNV {}
10322
10323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
10324#[repr(C)]
10325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10326pub struct ImportMemoryWin32HandleInfoKHR {
10327    pub s_type: StructureType,
10328    pub next: *const c_void,
10329    pub handle_type: ExternalMemoryHandleTypeFlags,
10330    pub handle: HANDLE,
10331    pub name: LPCWSTR,
10332}
10333
10334impl Default for ImportMemoryWin32HandleInfoKHR {
10335    #[inline]
10336    fn default() -> Self {
10337        Self {
10338            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
10339            next: ptr::null(),
10340            handle_type: ExternalMemoryHandleTypeFlags::default(),
10341            handle: ptr::null_mut(),
10342            name: ptr::null_mut(),
10343        }
10344    }
10345}
10346
10347unsafe impl Send for ImportMemoryWin32HandleInfoKHR {}
10348unsafe impl Sync for ImportMemoryWin32HandleInfoKHR {}
10349
10350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
10351#[repr(C)]
10352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10353pub struct ImportMemoryWin32HandleInfoNV {
10354    pub s_type: StructureType,
10355    pub next: *const c_void,
10356    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
10357    pub handle: HANDLE,
10358}
10359
10360impl Default for ImportMemoryWin32HandleInfoNV {
10361    #[inline]
10362    fn default() -> Self {
10363        Self {
10364            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
10365            next: ptr::null(),
10366            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
10367            handle: ptr::null_mut(),
10368        }
10369    }
10370}
10371
10372unsafe impl Send for ImportMemoryWin32HandleInfoNV {}
10373unsafe impl Sync for ImportMemoryWin32HandleInfoNV {}
10374
10375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
10376#[repr(C)]
10377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10378pub struct ImportMemoryZirconHandleInfoFUCHSIA {
10379    pub s_type: StructureType,
10380    pub next: *const c_void,
10381    pub handle_type: ExternalMemoryHandleTypeFlags,
10382    pub handle: zx_handle_t,
10383}
10384
10385impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
10386    #[inline]
10387    fn default() -> Self {
10388        Self {
10389            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
10390            next: ptr::null(),
10391            handle_type: ExternalMemoryHandleTypeFlags::default(),
10392            handle: zx_handle_t::default(),
10393        }
10394    }
10395}
10396
10397unsafe impl Send for ImportMemoryZirconHandleInfoFUCHSIA {}
10398unsafe impl Sync for ImportMemoryZirconHandleInfoFUCHSIA {}
10399
10400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
10401#[repr(C)]
10402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10403pub struct ImportMetalBufferInfoEXT {
10404    pub s_type: StructureType,
10405    pub next: *const c_void,
10406    pub mtl_buffer: MTLBuffer_id,
10407}
10408
10409impl Default for ImportMetalBufferInfoEXT {
10410    #[inline]
10411    fn default() -> Self {
10412        Self {
10413            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
10414            next: ptr::null(),
10415            mtl_buffer: ptr::null_mut(),
10416        }
10417    }
10418}
10419
10420unsafe impl Send for ImportMetalBufferInfoEXT {}
10421unsafe impl Sync for ImportMetalBufferInfoEXT {}
10422
10423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
10424#[repr(C)]
10425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10426pub struct ImportMetalIOSurfaceInfoEXT {
10427    pub s_type: StructureType,
10428    pub next: *const c_void,
10429    pub io_surface: IOSurfaceRef,
10430}
10431
10432impl Default for ImportMetalIOSurfaceInfoEXT {
10433    #[inline]
10434    fn default() -> Self {
10435        Self {
10436            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
10437            next: ptr::null(),
10438            io_surface: ptr::null_mut(),
10439        }
10440    }
10441}
10442
10443unsafe impl Send for ImportMetalIOSurfaceInfoEXT {}
10444unsafe impl Sync for ImportMetalIOSurfaceInfoEXT {}
10445
10446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
10447#[repr(C)]
10448#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10449pub struct ImportMetalSharedEventInfoEXT {
10450    pub s_type: StructureType,
10451    pub next: *const c_void,
10452    pub mtl_shared_event: MTLSharedEvent_id,
10453}
10454
10455impl Default for ImportMetalSharedEventInfoEXT {
10456    #[inline]
10457    fn default() -> Self {
10458        Self {
10459            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
10460            next: ptr::null(),
10461            mtl_shared_event: ptr::null_mut(),
10462        }
10463    }
10464}
10465
10466unsafe impl Send for ImportMetalSharedEventInfoEXT {}
10467unsafe impl Sync for ImportMetalSharedEventInfoEXT {}
10468
10469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
10470#[repr(C)]
10471#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10472pub struct ImportMetalTextureInfoEXT {
10473    pub s_type: StructureType,
10474    pub next: *const c_void,
10475    pub plane: ImageAspectFlags,
10476    pub mtl_texture: MTLTexture_id,
10477}
10478
10479impl Default for ImportMetalTextureInfoEXT {
10480    #[inline]
10481    fn default() -> Self {
10482        Self {
10483            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
10484            next: ptr::null(),
10485            plane: ImageAspectFlags::default(),
10486            mtl_texture: ptr::null_mut(),
10487        }
10488    }
10489}
10490
10491unsafe impl Send for ImportMetalTextureInfoEXT {}
10492unsafe impl Sync for ImportMetalTextureInfoEXT {}
10493
10494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportNativeBufferInfoOHOS.html>
10495#[repr(C)]
10496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10497pub struct ImportNativeBufferInfoOHOS {
10498    pub s_type: StructureType,
10499    pub next: *const c_void,
10500    pub buffer: *mut OH_NativeBuffer,
10501}
10502
10503impl Default for ImportNativeBufferInfoOHOS {
10504    #[inline]
10505    fn default() -> Self {
10506        Self {
10507            s_type: StructureType::IMPORT_NATIVE_BUFFER_INFO_OHOS,
10508            next: ptr::null(),
10509            buffer: ptr::null_mut(),
10510        }
10511    }
10512}
10513
10514unsafe impl Send for ImportNativeBufferInfoOHOS {}
10515unsafe impl Sync for ImportNativeBufferInfoOHOS {}
10516
10517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
10518#[repr(C)]
10519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10520pub struct ImportScreenBufferInfoQNX {
10521    pub s_type: StructureType,
10522    pub next: *const c_void,
10523    pub buffer: *mut _screen_buffer,
10524}
10525
10526impl Default for ImportScreenBufferInfoQNX {
10527    #[inline]
10528    fn default() -> Self {
10529        Self {
10530            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
10531            next: ptr::null(),
10532            buffer: ptr::null_mut(),
10533        }
10534    }
10535}
10536
10537unsafe impl Send for ImportScreenBufferInfoQNX {}
10538unsafe impl Sync for ImportScreenBufferInfoQNX {}
10539
10540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
10541#[repr(C)]
10542#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10543pub struct ImportSemaphoreFdInfoKHR {
10544    pub s_type: StructureType,
10545    pub next: *const c_void,
10546    pub semaphore: Semaphore,
10547    pub flags: SemaphoreImportFlags,
10548    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10549    pub fd: c_int,
10550}
10551
10552impl Default for ImportSemaphoreFdInfoKHR {
10553    #[inline]
10554    fn default() -> Self {
10555        Self {
10556            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
10557            next: ptr::null(),
10558            semaphore: Semaphore::default(),
10559            flags: SemaphoreImportFlags::default(),
10560            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10561            fd: c_int::default(),
10562        }
10563    }
10564}
10565
10566unsafe impl Send for ImportSemaphoreFdInfoKHR {}
10567unsafe impl Sync for ImportSemaphoreFdInfoKHR {}
10568
10569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
10570#[repr(C)]
10571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10572pub struct ImportSemaphoreSciSyncInfoNV {
10573    pub s_type: StructureType,
10574    pub next: *const c_void,
10575    pub semaphore: Semaphore,
10576    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10577    pub handle: *mut c_void,
10578}
10579
10580impl Default for ImportSemaphoreSciSyncInfoNV {
10581    #[inline]
10582    fn default() -> Self {
10583        Self {
10584            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
10585            next: ptr::null(),
10586            semaphore: Semaphore::default(),
10587            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10588            handle: ptr::null_mut(),
10589        }
10590    }
10591}
10592
10593unsafe impl Send for ImportSemaphoreSciSyncInfoNV {}
10594unsafe impl Sync for ImportSemaphoreSciSyncInfoNV {}
10595
10596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
10597#[repr(C)]
10598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10599pub struct ImportSemaphoreWin32HandleInfoKHR {
10600    pub s_type: StructureType,
10601    pub next: *const c_void,
10602    pub semaphore: Semaphore,
10603    pub flags: SemaphoreImportFlags,
10604    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10605    pub handle: HANDLE,
10606    pub name: LPCWSTR,
10607}
10608
10609impl Default for ImportSemaphoreWin32HandleInfoKHR {
10610    #[inline]
10611    fn default() -> Self {
10612        Self {
10613            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
10614            next: ptr::null(),
10615            semaphore: Semaphore::default(),
10616            flags: SemaphoreImportFlags::default(),
10617            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10618            handle: ptr::null_mut(),
10619            name: ptr::null_mut(),
10620        }
10621    }
10622}
10623
10624unsafe impl Send for ImportSemaphoreWin32HandleInfoKHR {}
10625unsafe impl Sync for ImportSemaphoreWin32HandleInfoKHR {}
10626
10627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
10628#[repr(C)]
10629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10630pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
10631    pub s_type: StructureType,
10632    pub next: *const c_void,
10633    pub semaphore: Semaphore,
10634    pub flags: SemaphoreImportFlags,
10635    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10636    pub zircon_handle: zx_handle_t,
10637}
10638
10639impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
10640    #[inline]
10641    fn default() -> Self {
10642        Self {
10643            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
10644            next: ptr::null(),
10645            semaphore: Semaphore::default(),
10646            flags: SemaphoreImportFlags::default(),
10647            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10648            zircon_handle: zx_handle_t::default(),
10649        }
10650    }
10651}
10652
10653unsafe impl Send for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10654unsafe impl Sync for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10655
10656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
10657#[repr(C)]
10658#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10659pub struct IndirectCommandsExecutionSetTokenEXT {
10660    pub type_: IndirectExecutionSetInfoTypeEXT,
10661    pub shader_stages: ShaderStageFlags,
10662}
10663
10664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
10665#[repr(C)]
10666#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10667pub struct IndirectCommandsIndexBufferTokenEXT {
10668    pub mode: IndirectCommandsInputModeFlagsEXT,
10669}
10670
10671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
10672#[repr(C)]
10673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10674pub struct IndirectCommandsLayoutCreateInfoEXT {
10675    pub s_type: StructureType,
10676    pub next: *const c_void,
10677    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
10678    pub shader_stages: ShaderStageFlags,
10679    pub indirect_stride: u32,
10680    pub pipeline_layout: PipelineLayout,
10681    pub token_count: u32,
10682    pub tokens: *const IndirectCommandsLayoutTokenEXT,
10683}
10684
10685impl Default for IndirectCommandsLayoutCreateInfoEXT {
10686    #[inline]
10687    fn default() -> Self {
10688        Self {
10689            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
10690            next: ptr::null(),
10691            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
10692            shader_stages: ShaderStageFlags::default(),
10693            indirect_stride: u32::default(),
10694            pipeline_layout: PipelineLayout::default(),
10695            token_count: u32::default(),
10696            tokens: ptr::null(),
10697        }
10698    }
10699}
10700
10701unsafe impl Send for IndirectCommandsLayoutCreateInfoEXT {}
10702unsafe impl Sync for IndirectCommandsLayoutCreateInfoEXT {}
10703
10704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
10705#[repr(C)]
10706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10707pub struct IndirectCommandsLayoutCreateInfoNV {
10708    pub s_type: StructureType,
10709    pub next: *const c_void,
10710    pub flags: IndirectCommandsLayoutUsageFlagsNV,
10711    pub pipeline_bind_point: PipelineBindPoint,
10712    pub token_count: u32,
10713    pub tokens: *const IndirectCommandsLayoutTokenNV,
10714    pub stream_count: u32,
10715    pub stream_strides: *const u32,
10716}
10717
10718impl Default for IndirectCommandsLayoutCreateInfoNV {
10719    #[inline]
10720    fn default() -> Self {
10721        Self {
10722            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
10723            next: ptr::null(),
10724            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
10725            pipeline_bind_point: PipelineBindPoint::default(),
10726            token_count: u32::default(),
10727            tokens: ptr::null(),
10728            stream_count: u32::default(),
10729            stream_strides: ptr::null(),
10730        }
10731    }
10732}
10733
10734unsafe impl Send for IndirectCommandsLayoutCreateInfoNV {}
10735unsafe impl Sync for IndirectCommandsLayoutCreateInfoNV {}
10736
10737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
10738#[repr(C)]
10739#[derive(Copy, Clone, Debug)]
10740pub struct IndirectCommandsLayoutTokenEXT {
10741    pub s_type: StructureType,
10742    pub next: *const c_void,
10743    pub type_: IndirectCommandsTokenTypeEXT,
10744    pub data: IndirectCommandsTokenDataEXT,
10745    pub offset: u32,
10746}
10747
10748impl Default for IndirectCommandsLayoutTokenEXT {
10749    #[inline]
10750    fn default() -> Self {
10751        Self {
10752            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
10753            next: ptr::null(),
10754            type_: IndirectCommandsTokenTypeEXT::default(),
10755            data: IndirectCommandsTokenDataEXT::default(),
10756            offset: u32::default(),
10757        }
10758    }
10759}
10760
10761unsafe impl Send for IndirectCommandsLayoutTokenEXT {}
10762unsafe impl Sync for IndirectCommandsLayoutTokenEXT {}
10763
10764/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
10765#[repr(C)]
10766#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10767pub struct IndirectCommandsLayoutTokenNV {
10768    pub s_type: StructureType,
10769    pub next: *const c_void,
10770    pub token_type: IndirectCommandsTokenTypeNV,
10771    pub stream: u32,
10772    pub offset: u32,
10773    pub vertex_binding_unit: u32,
10774    pub vertex_dynamic_stride: Bool32,
10775    pub pushconstant_pipeline_layout: PipelineLayout,
10776    pub pushconstant_shader_stage_flags: ShaderStageFlags,
10777    pub pushconstant_offset: u32,
10778    pub pushconstant_size: u32,
10779    pub indirect_state_flags: IndirectStateFlagsNV,
10780    pub index_type_count: u32,
10781    pub index_types: *const IndexType,
10782    pub index_type_values: *const u32,
10783}
10784
10785impl Default for IndirectCommandsLayoutTokenNV {
10786    #[inline]
10787    fn default() -> Self {
10788        Self {
10789            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
10790            next: ptr::null(),
10791            token_type: IndirectCommandsTokenTypeNV::default(),
10792            stream: u32::default(),
10793            offset: u32::default(),
10794            vertex_binding_unit: u32::default(),
10795            vertex_dynamic_stride: Bool32::default(),
10796            pushconstant_pipeline_layout: PipelineLayout::default(),
10797            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
10798            pushconstant_offset: u32::default(),
10799            pushconstant_size: u32::default(),
10800            indirect_state_flags: IndirectStateFlagsNV::default(),
10801            index_type_count: u32::default(),
10802            index_types: ptr::null(),
10803            index_type_values: ptr::null(),
10804        }
10805    }
10806}
10807
10808unsafe impl Send for IndirectCommandsLayoutTokenNV {}
10809unsafe impl Sync for IndirectCommandsLayoutTokenNV {}
10810
10811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
10812#[repr(C)]
10813#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10814pub struct IndirectCommandsPushConstantTokenEXT {
10815    pub update_range: PushConstantRange,
10816}
10817
10818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
10819#[repr(C)]
10820#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10821pub struct IndirectCommandsStreamNV {
10822    pub buffer: Buffer,
10823    pub offset: DeviceSize,
10824}
10825
10826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
10827#[repr(C)]
10828#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10829pub struct IndirectCommandsVertexBufferTokenEXT {
10830    pub vertex_binding_unit: u32,
10831}
10832
10833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
10834#[repr(C)]
10835#[derive(Copy, Clone, Debug)]
10836pub struct IndirectExecutionSetCreateInfoEXT {
10837    pub s_type: StructureType,
10838    pub next: *const c_void,
10839    pub type_: IndirectExecutionSetInfoTypeEXT,
10840    pub info: IndirectExecutionSetInfoEXT,
10841}
10842
10843impl Default for IndirectExecutionSetCreateInfoEXT {
10844    #[inline]
10845    fn default() -> Self {
10846        Self {
10847            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
10848            next: ptr::null(),
10849            type_: IndirectExecutionSetInfoTypeEXT::default(),
10850            info: IndirectExecutionSetInfoEXT::default(),
10851        }
10852    }
10853}
10854
10855unsafe impl Send for IndirectExecutionSetCreateInfoEXT {}
10856unsafe impl Sync for IndirectExecutionSetCreateInfoEXT {}
10857
10858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
10859#[repr(C)]
10860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10861pub struct IndirectExecutionSetPipelineInfoEXT {
10862    pub s_type: StructureType,
10863    pub next: *const c_void,
10864    pub initial_pipeline: Pipeline,
10865    pub max_pipeline_count: u32,
10866}
10867
10868impl Default for IndirectExecutionSetPipelineInfoEXT {
10869    #[inline]
10870    fn default() -> Self {
10871        Self {
10872            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
10873            next: ptr::null(),
10874            initial_pipeline: Pipeline::default(),
10875            max_pipeline_count: u32::default(),
10876        }
10877    }
10878}
10879
10880unsafe impl Send for IndirectExecutionSetPipelineInfoEXT {}
10881unsafe impl Sync for IndirectExecutionSetPipelineInfoEXT {}
10882
10883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
10884#[repr(C)]
10885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10886pub struct IndirectExecutionSetShaderInfoEXT {
10887    pub s_type: StructureType,
10888    pub next: *const c_void,
10889    pub shader_count: u32,
10890    pub initial_shaders: *const ShaderEXT,
10891    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
10892    pub max_shader_count: u32,
10893    pub push_constant_range_count: u32,
10894    pub push_constant_ranges: *const PushConstantRange,
10895}
10896
10897impl Default for IndirectExecutionSetShaderInfoEXT {
10898    #[inline]
10899    fn default() -> Self {
10900        Self {
10901            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
10902            next: ptr::null(),
10903            shader_count: u32::default(),
10904            initial_shaders: ptr::null(),
10905            set_layout_infos: ptr::null(),
10906            max_shader_count: u32::default(),
10907            push_constant_range_count: u32::default(),
10908            push_constant_ranges: ptr::null(),
10909        }
10910    }
10911}
10912
10913unsafe impl Send for IndirectExecutionSetShaderInfoEXT {}
10914unsafe impl Sync for IndirectExecutionSetShaderInfoEXT {}
10915
10916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
10917#[repr(C)]
10918#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10919pub struct IndirectExecutionSetShaderLayoutInfoEXT {
10920    pub s_type: StructureType,
10921    pub next: *const c_void,
10922    pub set_layout_count: u32,
10923    pub set_layouts: *const DescriptorSetLayout,
10924}
10925
10926impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
10927    #[inline]
10928    fn default() -> Self {
10929        Self {
10930            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
10931            next: ptr::null(),
10932            set_layout_count: u32::default(),
10933            set_layouts: ptr::null(),
10934        }
10935    }
10936}
10937
10938unsafe impl Send for IndirectExecutionSetShaderLayoutInfoEXT {}
10939unsafe impl Sync for IndirectExecutionSetShaderLayoutInfoEXT {}
10940
10941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
10942#[repr(C)]
10943#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10944pub struct InitializePerformanceApiInfoINTEL {
10945    pub s_type: StructureType,
10946    pub next: *const c_void,
10947    pub user_data: *mut c_void,
10948}
10949
10950impl Default for InitializePerformanceApiInfoINTEL {
10951    #[inline]
10952    fn default() -> Self {
10953        Self {
10954            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
10955            next: ptr::null(),
10956            user_data: ptr::null_mut(),
10957        }
10958    }
10959}
10960
10961unsafe impl Send for InitializePerformanceApiInfoINTEL {}
10962unsafe impl Sync for InitializePerformanceApiInfoINTEL {}
10963
10964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
10965#[repr(C)]
10966#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10967pub struct InputAttachmentAspectReference {
10968    pub subpass: u32,
10969    pub input_attachment_index: u32,
10970    pub aspect_mask: ImageAspectFlags,
10971}
10972
10973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
10974#[repr(C)]
10975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10976pub struct InstanceCreateInfo {
10977    pub s_type: StructureType,
10978    pub next: *const c_void,
10979    pub flags: InstanceCreateFlags,
10980    pub application_info: *const ApplicationInfo,
10981    pub enabled_layer_count: u32,
10982    pub enabled_layer_names: *const *const c_char,
10983    pub enabled_extension_count: u32,
10984    pub enabled_extension_names: *const *const c_char,
10985}
10986
10987impl Default for InstanceCreateInfo {
10988    #[inline]
10989    fn default() -> Self {
10990        Self {
10991            s_type: StructureType::INSTANCE_CREATE_INFO,
10992            next: ptr::null(),
10993            flags: InstanceCreateFlags::default(),
10994            application_info: ptr::null(),
10995            enabled_layer_count: u32::default(),
10996            enabled_layer_names: ptr::null(),
10997            enabled_extension_count: u32::default(),
10998            enabled_extension_names: ptr::null(),
10999        }
11000    }
11001}
11002
11003unsafe impl Send for InstanceCreateInfo {}
11004unsafe impl Sync for InstanceCreateInfo {}
11005
11006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
11007#[repr(C)]
11008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11009pub struct LatencySleepInfoNV {
11010    pub s_type: StructureType,
11011    pub next: *const c_void,
11012    pub signal_semaphore: Semaphore,
11013    pub value: u64,
11014}
11015
11016impl Default for LatencySleepInfoNV {
11017    #[inline]
11018    fn default() -> Self {
11019        Self {
11020            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
11021            next: ptr::null(),
11022            signal_semaphore: Semaphore::default(),
11023            value: u64::default(),
11024        }
11025    }
11026}
11027
11028unsafe impl Send for LatencySleepInfoNV {}
11029unsafe impl Sync for LatencySleepInfoNV {}
11030
11031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
11032#[repr(C)]
11033#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11034pub struct LatencySleepModeInfoNV {
11035    pub s_type: StructureType,
11036    pub next: *const c_void,
11037    pub low_latency_mode: Bool32,
11038    pub low_latency_boost: Bool32,
11039    pub minimum_interval_us: u32,
11040}
11041
11042impl Default for LatencySleepModeInfoNV {
11043    #[inline]
11044    fn default() -> Self {
11045        Self {
11046            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
11047            next: ptr::null(),
11048            low_latency_mode: Bool32::default(),
11049            low_latency_boost: Bool32::default(),
11050            minimum_interval_us: u32::default(),
11051        }
11052    }
11053}
11054
11055unsafe impl Send for LatencySleepModeInfoNV {}
11056unsafe impl Sync for LatencySleepModeInfoNV {}
11057
11058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
11059#[repr(C)]
11060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11061pub struct LatencySubmissionPresentIdNV {
11062    pub s_type: StructureType,
11063    pub next: *const c_void,
11064    pub present_id: u64,
11065}
11066
11067impl Default for LatencySubmissionPresentIdNV {
11068    #[inline]
11069    fn default() -> Self {
11070        Self {
11071            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
11072            next: ptr::null(),
11073            present_id: u64::default(),
11074        }
11075    }
11076}
11077
11078unsafe impl Send for LatencySubmissionPresentIdNV {}
11079unsafe impl Sync for LatencySubmissionPresentIdNV {}
11080
11081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
11082#[repr(C)]
11083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11084pub struct LatencySurfaceCapabilitiesNV {
11085    pub s_type: StructureType,
11086    pub next: *const c_void,
11087    pub present_mode_count: u32,
11088    pub present_modes: *mut PresentModeKHR,
11089}
11090
11091impl Default for LatencySurfaceCapabilitiesNV {
11092    #[inline]
11093    fn default() -> Self {
11094        Self {
11095            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
11096            next: ptr::null(),
11097            present_mode_count: u32::default(),
11098            present_modes: ptr::null_mut(),
11099        }
11100    }
11101}
11102
11103unsafe impl Send for LatencySurfaceCapabilitiesNV {}
11104unsafe impl Sync for LatencySurfaceCapabilitiesNV {}
11105
11106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
11107#[repr(C)]
11108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11109pub struct LatencyTimingsFrameReportNV {
11110    pub s_type: StructureType,
11111    pub next: *const c_void,
11112    pub present_id: u64,
11113    pub input_sample_time_us: u64,
11114    pub sim_start_time_us: u64,
11115    pub sim_end_time_us: u64,
11116    pub render_submit_start_time_us: u64,
11117    pub render_submit_end_time_us: u64,
11118    pub present_start_time_us: u64,
11119    pub present_end_time_us: u64,
11120    pub driver_start_time_us: u64,
11121    pub driver_end_time_us: u64,
11122    pub os_render_queue_start_time_us: u64,
11123    pub os_render_queue_end_time_us: u64,
11124    pub gpu_render_start_time_us: u64,
11125    pub gpu_render_end_time_us: u64,
11126}
11127
11128impl Default for LatencyTimingsFrameReportNV {
11129    #[inline]
11130    fn default() -> Self {
11131        Self {
11132            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
11133            next: ptr::null(),
11134            present_id: u64::default(),
11135            input_sample_time_us: u64::default(),
11136            sim_start_time_us: u64::default(),
11137            sim_end_time_us: u64::default(),
11138            render_submit_start_time_us: u64::default(),
11139            render_submit_end_time_us: u64::default(),
11140            present_start_time_us: u64::default(),
11141            present_end_time_us: u64::default(),
11142            driver_start_time_us: u64::default(),
11143            driver_end_time_us: u64::default(),
11144            os_render_queue_start_time_us: u64::default(),
11145            os_render_queue_end_time_us: u64::default(),
11146            gpu_render_start_time_us: u64::default(),
11147            gpu_render_end_time_us: u64::default(),
11148        }
11149    }
11150}
11151
11152unsafe impl Send for LatencyTimingsFrameReportNV {}
11153unsafe impl Sync for LatencyTimingsFrameReportNV {}
11154
11155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
11156#[repr(C)]
11157#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11158pub struct LayerProperties {
11159    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
11160    pub spec_version: u32,
11161    pub implementation_version: u32,
11162    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
11163}
11164
11165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
11166#[repr(C)]
11167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11168pub struct LayerSettingEXT {
11169    pub layer_name: *const c_char,
11170    pub setting_name: *const c_char,
11171    pub type_: LayerSettingTypeEXT,
11172    pub value_count: u32,
11173    pub values: *const c_void,
11174}
11175
11176impl Default for LayerSettingEXT {
11177    #[inline]
11178    fn default() -> Self {
11179        Self {
11180            layer_name: ptr::null(),
11181            setting_name: ptr::null(),
11182            type_: LayerSettingTypeEXT::default(),
11183            value_count: u32::default(),
11184            values: ptr::null(),
11185        }
11186    }
11187}
11188
11189unsafe impl Send for LayerSettingEXT {}
11190unsafe impl Sync for LayerSettingEXT {}
11191
11192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
11193#[repr(C)]
11194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11195pub struct LayerSettingsCreateInfoEXT {
11196    pub s_type: StructureType,
11197    pub next: *const c_void,
11198    pub setting_count: u32,
11199    pub settings: *const LayerSettingEXT,
11200}
11201
11202impl Default for LayerSettingsCreateInfoEXT {
11203    #[inline]
11204    fn default() -> Self {
11205        Self {
11206            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
11207            next: ptr::null(),
11208            setting_count: u32::default(),
11209            settings: ptr::null(),
11210        }
11211    }
11212}
11213
11214unsafe impl Send for LayerSettingsCreateInfoEXT {}
11215unsafe impl Sync for LayerSettingsCreateInfoEXT {}
11216
11217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
11218#[repr(C)]
11219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11220pub struct MacOSSurfaceCreateInfoMVK {
11221    pub s_type: StructureType,
11222    pub next: *const c_void,
11223    pub flags: MacOSSurfaceCreateFlagsMVK,
11224    pub view: *const c_void,
11225}
11226
11227impl Default for MacOSSurfaceCreateInfoMVK {
11228    #[inline]
11229    fn default() -> Self {
11230        Self {
11231            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
11232            next: ptr::null(),
11233            flags: MacOSSurfaceCreateFlagsMVK::default(),
11234            view: ptr::null(),
11235        }
11236    }
11237}
11238
11239unsafe impl Send for MacOSSurfaceCreateInfoMVK {}
11240unsafe impl Sync for MacOSSurfaceCreateInfoMVK {}
11241
11242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
11243#[repr(C)]
11244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11245pub struct MappedMemoryRange {
11246    pub s_type: StructureType,
11247    pub next: *const c_void,
11248    pub memory: DeviceMemory,
11249    pub offset: DeviceSize,
11250    pub size: DeviceSize,
11251}
11252
11253impl Default for MappedMemoryRange {
11254    #[inline]
11255    fn default() -> Self {
11256        Self {
11257            s_type: StructureType::MAPPED_MEMORY_RANGE,
11258            next: ptr::null(),
11259            memory: DeviceMemory::default(),
11260            offset: DeviceSize::default(),
11261            size: DeviceSize::default(),
11262        }
11263    }
11264}
11265
11266unsafe impl Send for MappedMemoryRange {}
11267unsafe impl Sync for MappedMemoryRange {}
11268
11269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
11270#[repr(C)]
11271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11272pub struct MemoryAllocateFlagsInfo {
11273    pub s_type: StructureType,
11274    pub next: *const c_void,
11275    pub flags: MemoryAllocateFlags,
11276    pub device_mask: u32,
11277}
11278
11279impl Default for MemoryAllocateFlagsInfo {
11280    #[inline]
11281    fn default() -> Self {
11282        Self {
11283            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
11284            next: ptr::null(),
11285            flags: MemoryAllocateFlags::default(),
11286            device_mask: u32::default(),
11287        }
11288    }
11289}
11290
11291unsafe impl Send for MemoryAllocateFlagsInfo {}
11292unsafe impl Sync for MemoryAllocateFlagsInfo {}
11293
11294/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
11295#[repr(C)]
11296#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11297pub struct MemoryAllocateInfo {
11298    pub s_type: StructureType,
11299    pub next: *const c_void,
11300    pub allocation_size: DeviceSize,
11301    pub memory_type_index: u32,
11302}
11303
11304impl Default for MemoryAllocateInfo {
11305    #[inline]
11306    fn default() -> Self {
11307        Self {
11308            s_type: StructureType::MEMORY_ALLOCATE_INFO,
11309            next: ptr::null(),
11310            allocation_size: DeviceSize::default(),
11311            memory_type_index: u32::default(),
11312        }
11313    }
11314}
11315
11316unsafe impl Send for MemoryAllocateInfo {}
11317unsafe impl Sync for MemoryAllocateInfo {}
11318
11319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
11320#[repr(C)]
11321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11322pub struct MemoryBarrier {
11323    pub s_type: StructureType,
11324    pub next: *const c_void,
11325    pub src_access_mask: AccessFlags,
11326    pub dst_access_mask: AccessFlags,
11327}
11328
11329impl Default for MemoryBarrier {
11330    #[inline]
11331    fn default() -> Self {
11332        Self {
11333            s_type: StructureType::MEMORY_BARRIER,
11334            next: ptr::null(),
11335            src_access_mask: AccessFlags::default(),
11336            dst_access_mask: AccessFlags::default(),
11337        }
11338    }
11339}
11340
11341unsafe impl Send for MemoryBarrier {}
11342unsafe impl Sync for MemoryBarrier {}
11343
11344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
11345#[repr(C)]
11346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11347pub struct MemoryBarrier2 {
11348    pub s_type: StructureType,
11349    pub next: *const c_void,
11350    pub src_stage_mask: PipelineStageFlags2,
11351    pub src_access_mask: AccessFlags2,
11352    pub dst_stage_mask: PipelineStageFlags2,
11353    pub dst_access_mask: AccessFlags2,
11354}
11355
11356impl Default for MemoryBarrier2 {
11357    #[inline]
11358    fn default() -> Self {
11359        Self {
11360            s_type: StructureType::MEMORY_BARRIER_2,
11361            next: ptr::null(),
11362            src_stage_mask: PipelineStageFlags2::default(),
11363            src_access_mask: AccessFlags2::default(),
11364            dst_stage_mask: PipelineStageFlags2::default(),
11365            dst_access_mask: AccessFlags2::default(),
11366        }
11367    }
11368}
11369
11370unsafe impl Send for MemoryBarrier2 {}
11371unsafe impl Sync for MemoryBarrier2 {}
11372
11373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
11374#[repr(C)]
11375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11376pub struct MemoryBarrierAccessFlags3KHR {
11377    pub s_type: StructureType,
11378    pub next: *const c_void,
11379    pub src_access_mask3: AccessFlags3KHR,
11380    pub dst_access_mask3: AccessFlags3KHR,
11381}
11382
11383impl Default for MemoryBarrierAccessFlags3KHR {
11384    #[inline]
11385    fn default() -> Self {
11386        Self {
11387            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
11388            next: ptr::null(),
11389            src_access_mask3: AccessFlags3KHR::default(),
11390            dst_access_mask3: AccessFlags3KHR::default(),
11391        }
11392    }
11393}
11394
11395unsafe impl Send for MemoryBarrierAccessFlags3KHR {}
11396unsafe impl Sync for MemoryBarrierAccessFlags3KHR {}
11397
11398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
11399#[repr(C)]
11400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11401pub struct MemoryDedicatedAllocateInfo {
11402    pub s_type: StructureType,
11403    pub next: *const c_void,
11404    pub image: Image,
11405    pub buffer: Buffer,
11406}
11407
11408impl Default for MemoryDedicatedAllocateInfo {
11409    #[inline]
11410    fn default() -> Self {
11411        Self {
11412            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
11413            next: ptr::null(),
11414            image: Image::default(),
11415            buffer: Buffer::default(),
11416        }
11417    }
11418}
11419
11420unsafe impl Send for MemoryDedicatedAllocateInfo {}
11421unsafe impl Sync for MemoryDedicatedAllocateInfo {}
11422
11423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html>
11424#[repr(C)]
11425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11426pub struct MemoryDedicatedAllocateInfoTensorARM {
11427    pub s_type: StructureType,
11428    pub next: *const c_void,
11429    pub tensor: TensorARM,
11430}
11431
11432impl Default for MemoryDedicatedAllocateInfoTensorARM {
11433    #[inline]
11434    fn default() -> Self {
11435        Self {
11436            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM,
11437            next: ptr::null(),
11438            tensor: TensorARM::default(),
11439        }
11440    }
11441}
11442
11443unsafe impl Send for MemoryDedicatedAllocateInfoTensorARM {}
11444unsafe impl Sync for MemoryDedicatedAllocateInfoTensorARM {}
11445
11446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
11447#[repr(C)]
11448#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11449pub struct MemoryDedicatedRequirements {
11450    pub s_type: StructureType,
11451    pub next: *mut c_void,
11452    pub prefers_dedicated_allocation: Bool32,
11453    pub requires_dedicated_allocation: Bool32,
11454}
11455
11456impl Default for MemoryDedicatedRequirements {
11457    #[inline]
11458    fn default() -> Self {
11459        Self {
11460            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
11461            next: ptr::null_mut(),
11462            prefers_dedicated_allocation: Bool32::default(),
11463            requires_dedicated_allocation: Bool32::default(),
11464        }
11465    }
11466}
11467
11468unsafe impl Send for MemoryDedicatedRequirements {}
11469unsafe impl Sync for MemoryDedicatedRequirements {}
11470
11471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
11472#[repr(C)]
11473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11474pub struct MemoryFdPropertiesKHR {
11475    pub s_type: StructureType,
11476    pub next: *mut c_void,
11477    pub memory_type_bits: u32,
11478}
11479
11480impl Default for MemoryFdPropertiesKHR {
11481    #[inline]
11482    fn default() -> Self {
11483        Self {
11484            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
11485            next: ptr::null_mut(),
11486            memory_type_bits: u32::default(),
11487        }
11488    }
11489}
11490
11491unsafe impl Send for MemoryFdPropertiesKHR {}
11492unsafe impl Sync for MemoryFdPropertiesKHR {}
11493
11494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
11495#[repr(C)]
11496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11497pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
11498    pub s_type: StructureType,
11499    pub next: *const c_void,
11500    pub memory: DeviceMemory,
11501}
11502
11503impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
11504    #[inline]
11505    fn default() -> Self {
11506        Self {
11507            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
11508            next: ptr::null(),
11509            memory: DeviceMemory::default(),
11510        }
11511    }
11512}
11513
11514unsafe impl Send for MemoryGetAndroidHardwareBufferInfoANDROID {}
11515unsafe impl Sync for MemoryGetAndroidHardwareBufferInfoANDROID {}
11516
11517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
11518#[repr(C)]
11519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11520pub struct MemoryGetFdInfoKHR {
11521    pub s_type: StructureType,
11522    pub next: *const c_void,
11523    pub memory: DeviceMemory,
11524    pub handle_type: ExternalMemoryHandleTypeFlags,
11525}
11526
11527impl Default for MemoryGetFdInfoKHR {
11528    #[inline]
11529    fn default() -> Self {
11530        Self {
11531            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
11532            next: ptr::null(),
11533            memory: DeviceMemory::default(),
11534            handle_type: ExternalMemoryHandleTypeFlags::default(),
11535        }
11536    }
11537}
11538
11539unsafe impl Send for MemoryGetFdInfoKHR {}
11540unsafe impl Sync for MemoryGetFdInfoKHR {}
11541
11542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
11543#[repr(C)]
11544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11545pub struct MemoryGetMetalHandleInfoEXT {
11546    pub s_type: StructureType,
11547    pub next: *const c_void,
11548    pub memory: DeviceMemory,
11549    pub handle_type: ExternalMemoryHandleTypeFlags,
11550}
11551
11552impl Default for MemoryGetMetalHandleInfoEXT {
11553    #[inline]
11554    fn default() -> Self {
11555        Self {
11556            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
11557            next: ptr::null(),
11558            memory: DeviceMemory::default(),
11559            handle_type: ExternalMemoryHandleTypeFlags::default(),
11560        }
11561    }
11562}
11563
11564unsafe impl Send for MemoryGetMetalHandleInfoEXT {}
11565unsafe impl Sync for MemoryGetMetalHandleInfoEXT {}
11566
11567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetNativeBufferInfoOHOS.html>
11568#[repr(C)]
11569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11570pub struct MemoryGetNativeBufferInfoOHOS {
11571    pub s_type: StructureType,
11572    pub next: *const c_void,
11573    pub memory: DeviceMemory,
11574}
11575
11576impl Default for MemoryGetNativeBufferInfoOHOS {
11577    #[inline]
11578    fn default() -> Self {
11579        Self {
11580            s_type: StructureType::MEMORY_GET_NATIVE_BUFFER_INFO_OHOS,
11581            next: ptr::null(),
11582            memory: DeviceMemory::default(),
11583        }
11584    }
11585}
11586
11587unsafe impl Send for MemoryGetNativeBufferInfoOHOS {}
11588unsafe impl Sync for MemoryGetNativeBufferInfoOHOS {}
11589
11590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
11591#[repr(C)]
11592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11593pub struct MemoryGetRemoteAddressInfoNV {
11594    pub s_type: StructureType,
11595    pub next: *const c_void,
11596    pub memory: DeviceMemory,
11597    pub handle_type: ExternalMemoryHandleTypeFlags,
11598}
11599
11600impl Default for MemoryGetRemoteAddressInfoNV {
11601    #[inline]
11602    fn default() -> Self {
11603        Self {
11604            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
11605            next: ptr::null(),
11606            memory: DeviceMemory::default(),
11607            handle_type: ExternalMemoryHandleTypeFlags::default(),
11608        }
11609    }
11610}
11611
11612unsafe impl Send for MemoryGetRemoteAddressInfoNV {}
11613unsafe impl Sync for MemoryGetRemoteAddressInfoNV {}
11614
11615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
11616#[repr(C)]
11617#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11618pub struct MemoryGetSciBufInfoNV {
11619    pub s_type: StructureType,
11620    pub next: *const c_void,
11621    pub memory: DeviceMemory,
11622    pub handle_type: ExternalMemoryHandleTypeFlags,
11623}
11624
11625impl Default for MemoryGetSciBufInfoNV {
11626    #[inline]
11627    fn default() -> Self {
11628        Self {
11629            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
11630            next: ptr::null(),
11631            memory: DeviceMemory::default(),
11632            handle_type: ExternalMemoryHandleTypeFlags::default(),
11633        }
11634    }
11635}
11636
11637unsafe impl Send for MemoryGetSciBufInfoNV {}
11638unsafe impl Sync for MemoryGetSciBufInfoNV {}
11639
11640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
11641#[repr(C)]
11642#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11643pub struct MemoryGetWin32HandleInfoKHR {
11644    pub s_type: StructureType,
11645    pub next: *const c_void,
11646    pub memory: DeviceMemory,
11647    pub handle_type: ExternalMemoryHandleTypeFlags,
11648}
11649
11650impl Default for MemoryGetWin32HandleInfoKHR {
11651    #[inline]
11652    fn default() -> Self {
11653        Self {
11654            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
11655            next: ptr::null(),
11656            memory: DeviceMemory::default(),
11657            handle_type: ExternalMemoryHandleTypeFlags::default(),
11658        }
11659    }
11660}
11661
11662unsafe impl Send for MemoryGetWin32HandleInfoKHR {}
11663unsafe impl Sync for MemoryGetWin32HandleInfoKHR {}
11664
11665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
11666#[repr(C)]
11667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11668pub struct MemoryGetZirconHandleInfoFUCHSIA {
11669    pub s_type: StructureType,
11670    pub next: *const c_void,
11671    pub memory: DeviceMemory,
11672    pub handle_type: ExternalMemoryHandleTypeFlags,
11673}
11674
11675impl Default for MemoryGetZirconHandleInfoFUCHSIA {
11676    #[inline]
11677    fn default() -> Self {
11678        Self {
11679            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
11680            next: ptr::null(),
11681            memory: DeviceMemory::default(),
11682            handle_type: ExternalMemoryHandleTypeFlags::default(),
11683        }
11684    }
11685}
11686
11687unsafe impl Send for MemoryGetZirconHandleInfoFUCHSIA {}
11688unsafe impl Sync for MemoryGetZirconHandleInfoFUCHSIA {}
11689
11690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
11691#[repr(C)]
11692#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11693pub struct MemoryHeap {
11694    pub size: DeviceSize,
11695    pub flags: MemoryHeapFlags,
11696}
11697
11698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
11699#[repr(C)]
11700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11701pub struct MemoryHostPointerPropertiesEXT {
11702    pub s_type: StructureType,
11703    pub next: *mut c_void,
11704    pub memory_type_bits: u32,
11705}
11706
11707impl Default for MemoryHostPointerPropertiesEXT {
11708    #[inline]
11709    fn default() -> Self {
11710        Self {
11711            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
11712            next: ptr::null_mut(),
11713            memory_type_bits: u32::default(),
11714        }
11715    }
11716}
11717
11718unsafe impl Send for MemoryHostPointerPropertiesEXT {}
11719unsafe impl Sync for MemoryHostPointerPropertiesEXT {}
11720
11721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
11722#[repr(C)]
11723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11724pub struct MemoryMapInfo {
11725    pub s_type: StructureType,
11726    pub next: *const c_void,
11727    pub flags: MemoryMapFlags,
11728    pub memory: DeviceMemory,
11729    pub offset: DeviceSize,
11730    pub size: DeviceSize,
11731}
11732
11733impl Default for MemoryMapInfo {
11734    #[inline]
11735    fn default() -> Self {
11736        Self {
11737            s_type: StructureType::MEMORY_MAP_INFO,
11738            next: ptr::null(),
11739            flags: MemoryMapFlags::default(),
11740            memory: DeviceMemory::default(),
11741            offset: DeviceSize::default(),
11742            size: DeviceSize::default(),
11743        }
11744    }
11745}
11746
11747unsafe impl Send for MemoryMapInfo {}
11748unsafe impl Sync for MemoryMapInfo {}
11749
11750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
11751#[repr(C)]
11752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11753pub struct MemoryMapPlacedInfoEXT {
11754    pub s_type: StructureType,
11755    pub next: *const c_void,
11756    pub placed_address: *mut c_void,
11757}
11758
11759impl Default for MemoryMapPlacedInfoEXT {
11760    #[inline]
11761    fn default() -> Self {
11762        Self {
11763            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
11764            next: ptr::null(),
11765            placed_address: ptr::null_mut(),
11766        }
11767    }
11768}
11769
11770unsafe impl Send for MemoryMapPlacedInfoEXT {}
11771unsafe impl Sync for MemoryMapPlacedInfoEXT {}
11772
11773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
11774#[repr(C)]
11775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11776pub struct MemoryMetalHandlePropertiesEXT {
11777    pub s_type: StructureType,
11778    pub next: *mut c_void,
11779    pub memory_type_bits: u32,
11780}
11781
11782impl Default for MemoryMetalHandlePropertiesEXT {
11783    #[inline]
11784    fn default() -> Self {
11785        Self {
11786            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
11787            next: ptr::null_mut(),
11788            memory_type_bits: u32::default(),
11789        }
11790    }
11791}
11792
11793unsafe impl Send for MemoryMetalHandlePropertiesEXT {}
11794unsafe impl Sync for MemoryMetalHandlePropertiesEXT {}
11795
11796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
11797#[repr(C)]
11798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11799pub struct MemoryOpaqueCaptureAddressAllocateInfo {
11800    pub s_type: StructureType,
11801    pub next: *const c_void,
11802    pub opaque_capture_address: u64,
11803}
11804
11805impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
11806    #[inline]
11807    fn default() -> Self {
11808        Self {
11809            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
11810            next: ptr::null(),
11811            opaque_capture_address: u64::default(),
11812        }
11813    }
11814}
11815
11816unsafe impl Send for MemoryOpaqueCaptureAddressAllocateInfo {}
11817unsafe impl Sync for MemoryOpaqueCaptureAddressAllocateInfo {}
11818
11819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
11820#[repr(C)]
11821#[derive(Copy, Clone, Debug, PartialEq)]
11822pub struct MemoryPriorityAllocateInfoEXT {
11823    pub s_type: StructureType,
11824    pub next: *const c_void,
11825    pub priority: f32,
11826}
11827
11828impl Default for MemoryPriorityAllocateInfoEXT {
11829    #[inline]
11830    fn default() -> Self {
11831        Self {
11832            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
11833            next: ptr::null(),
11834            priority: f32::default(),
11835        }
11836    }
11837}
11838
11839unsafe impl Send for MemoryPriorityAllocateInfoEXT {}
11840unsafe impl Sync for MemoryPriorityAllocateInfoEXT {}
11841
11842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
11843#[repr(C)]
11844#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11845pub struct MemoryRequirements {
11846    pub size: DeviceSize,
11847    pub alignment: DeviceSize,
11848    pub memory_type_bits: u32,
11849}
11850
11851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
11852#[repr(C)]
11853#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11854pub struct MemoryRequirements2 {
11855    pub s_type: StructureType,
11856    pub next: *mut c_void,
11857    pub memory_requirements: MemoryRequirements,
11858}
11859
11860impl Default for MemoryRequirements2 {
11861    #[inline]
11862    fn default() -> Self {
11863        Self {
11864            s_type: StructureType::MEMORY_REQUIREMENTS_2,
11865            next: ptr::null_mut(),
11866            memory_requirements: MemoryRequirements::default(),
11867        }
11868    }
11869}
11870
11871unsafe impl Send for MemoryRequirements2 {}
11872unsafe impl Sync for MemoryRequirements2 {}
11873
11874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
11875#[repr(C)]
11876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11877pub struct MemorySciBufPropertiesNV {
11878    pub s_type: StructureType,
11879    pub next: *const c_void,
11880    pub memory_type_bits: u32,
11881}
11882
11883impl Default for MemorySciBufPropertiesNV {
11884    #[inline]
11885    fn default() -> Self {
11886        Self {
11887            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
11888            next: ptr::null(),
11889            memory_type_bits: u32::default(),
11890        }
11891    }
11892}
11893
11894unsafe impl Send for MemorySciBufPropertiesNV {}
11895unsafe impl Sync for MemorySciBufPropertiesNV {}
11896
11897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
11898#[repr(C)]
11899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11900pub struct MemoryToImageCopy {
11901    pub s_type: StructureType,
11902    pub next: *const c_void,
11903    pub host_pointer: *const c_void,
11904    pub memory_row_length: u32,
11905    pub memory_image_height: u32,
11906    pub image_subresource: ImageSubresourceLayers,
11907    pub image_offset: Offset3D,
11908    pub image_extent: Extent3D,
11909}
11910
11911impl Default for MemoryToImageCopy {
11912    #[inline]
11913    fn default() -> Self {
11914        Self {
11915            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
11916            next: ptr::null(),
11917            host_pointer: ptr::null(),
11918            memory_row_length: u32::default(),
11919            memory_image_height: u32::default(),
11920            image_subresource: ImageSubresourceLayers::default(),
11921            image_offset: Offset3D::default(),
11922            image_extent: Extent3D::default(),
11923        }
11924    }
11925}
11926
11927unsafe impl Send for MemoryToImageCopy {}
11928unsafe impl Sync for MemoryToImageCopy {}
11929
11930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
11931#[repr(C)]
11932#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11933pub struct MemoryType {
11934    pub property_flags: MemoryPropertyFlags,
11935    pub heap_index: u32,
11936}
11937
11938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
11939#[repr(C)]
11940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11941pub struct MemoryUnmapInfo {
11942    pub s_type: StructureType,
11943    pub next: *const c_void,
11944    pub flags: MemoryUnmapFlags,
11945    pub memory: DeviceMemory,
11946}
11947
11948impl Default for MemoryUnmapInfo {
11949    #[inline]
11950    fn default() -> Self {
11951        Self {
11952            s_type: StructureType::MEMORY_UNMAP_INFO,
11953            next: ptr::null(),
11954            flags: MemoryUnmapFlags::default(),
11955            memory: DeviceMemory::default(),
11956        }
11957    }
11958}
11959
11960unsafe impl Send for MemoryUnmapInfo {}
11961unsafe impl Sync for MemoryUnmapInfo {}
11962
11963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
11964#[repr(C)]
11965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11966pub struct MemoryWin32HandlePropertiesKHR {
11967    pub s_type: StructureType,
11968    pub next: *mut c_void,
11969    pub memory_type_bits: u32,
11970}
11971
11972impl Default for MemoryWin32HandlePropertiesKHR {
11973    #[inline]
11974    fn default() -> Self {
11975        Self {
11976            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
11977            next: ptr::null_mut(),
11978            memory_type_bits: u32::default(),
11979        }
11980    }
11981}
11982
11983unsafe impl Send for MemoryWin32HandlePropertiesKHR {}
11984unsafe impl Sync for MemoryWin32HandlePropertiesKHR {}
11985
11986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
11987#[repr(C)]
11988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11989pub struct MemoryZirconHandlePropertiesFUCHSIA {
11990    pub s_type: StructureType,
11991    pub next: *mut c_void,
11992    pub memory_type_bits: u32,
11993}
11994
11995impl Default for MemoryZirconHandlePropertiesFUCHSIA {
11996    #[inline]
11997    fn default() -> Self {
11998        Self {
11999            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
12000            next: ptr::null_mut(),
12001            memory_type_bits: u32::default(),
12002        }
12003    }
12004}
12005
12006unsafe impl Send for MemoryZirconHandlePropertiesFUCHSIA {}
12007unsafe impl Sync for MemoryZirconHandlePropertiesFUCHSIA {}
12008
12009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
12010#[repr(C)]
12011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12012pub struct MetalSurfaceCreateInfoEXT {
12013    pub s_type: StructureType,
12014    pub next: *const c_void,
12015    pub flags: MetalSurfaceCreateFlagsEXT,
12016    pub layer: *const CAMetalLayer,
12017}
12018
12019impl Default for MetalSurfaceCreateInfoEXT {
12020    #[inline]
12021    fn default() -> Self {
12022        Self {
12023            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
12024            next: ptr::null(),
12025            flags: MetalSurfaceCreateFlagsEXT::default(),
12026            layer: ptr::null(),
12027        }
12028    }
12029}
12030
12031unsafe impl Send for MetalSurfaceCreateInfoEXT {}
12032unsafe impl Sync for MetalSurfaceCreateInfoEXT {}
12033
12034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
12035#[repr(C)]
12036#[derive(Copy, Clone, Debug)]
12037pub struct MicromapBuildInfoEXT {
12038    pub s_type: StructureType,
12039    pub next: *const c_void,
12040    pub type_: MicromapTypeEXT,
12041    pub flags: BuildMicromapFlagsEXT,
12042    pub mode: BuildMicromapModeEXT,
12043    pub dst_micromap: MicromapEXT,
12044    pub usage_counts_count: u32,
12045    pub usage_counts: *const MicromapUsageEXT,
12046    pub pointer_usage_counts: *const *const MicromapUsageEXT,
12047    pub data: DeviceOrHostAddressConstKHR,
12048    pub scratch_data: DeviceOrHostAddressKHR,
12049    pub triangle_array: DeviceOrHostAddressConstKHR,
12050    pub triangle_array_stride: DeviceSize,
12051}
12052
12053impl Default for MicromapBuildInfoEXT {
12054    #[inline]
12055    fn default() -> Self {
12056        Self {
12057            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
12058            next: ptr::null(),
12059            type_: MicromapTypeEXT::default(),
12060            flags: BuildMicromapFlagsEXT::default(),
12061            mode: BuildMicromapModeEXT::default(),
12062            dst_micromap: MicromapEXT::default(),
12063            usage_counts_count: u32::default(),
12064            usage_counts: ptr::null(),
12065            pointer_usage_counts: ptr::null(),
12066            data: DeviceOrHostAddressConstKHR::default(),
12067            scratch_data: DeviceOrHostAddressKHR::default(),
12068            triangle_array: DeviceOrHostAddressConstKHR::default(),
12069            triangle_array_stride: DeviceSize::default(),
12070        }
12071    }
12072}
12073
12074unsafe impl Send for MicromapBuildInfoEXT {}
12075unsafe impl Sync for MicromapBuildInfoEXT {}
12076
12077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
12078#[repr(C)]
12079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12080pub struct MicromapBuildSizesInfoEXT {
12081    pub s_type: StructureType,
12082    pub next: *const c_void,
12083    pub micromap_size: DeviceSize,
12084    pub build_scratch_size: DeviceSize,
12085    pub discardable: Bool32,
12086}
12087
12088impl Default for MicromapBuildSizesInfoEXT {
12089    #[inline]
12090    fn default() -> Self {
12091        Self {
12092            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
12093            next: ptr::null(),
12094            micromap_size: DeviceSize::default(),
12095            build_scratch_size: DeviceSize::default(),
12096            discardable: Bool32::default(),
12097        }
12098    }
12099}
12100
12101unsafe impl Send for MicromapBuildSizesInfoEXT {}
12102unsafe impl Sync for MicromapBuildSizesInfoEXT {}
12103
12104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
12105#[repr(C)]
12106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12107pub struct MicromapCreateInfoEXT {
12108    pub s_type: StructureType,
12109    pub next: *const c_void,
12110    pub create_flags: MicromapCreateFlagsEXT,
12111    pub buffer: Buffer,
12112    pub offset: DeviceSize,
12113    pub size: DeviceSize,
12114    pub type_: MicromapTypeEXT,
12115    pub device_address: DeviceAddress,
12116}
12117
12118impl Default for MicromapCreateInfoEXT {
12119    #[inline]
12120    fn default() -> Self {
12121        Self {
12122            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
12123            next: ptr::null(),
12124            create_flags: MicromapCreateFlagsEXT::default(),
12125            buffer: Buffer::default(),
12126            offset: DeviceSize::default(),
12127            size: DeviceSize::default(),
12128            type_: MicromapTypeEXT::default(),
12129            device_address: DeviceAddress::default(),
12130        }
12131    }
12132}
12133
12134unsafe impl Send for MicromapCreateInfoEXT {}
12135unsafe impl Sync for MicromapCreateInfoEXT {}
12136
12137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
12138#[repr(C)]
12139#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12140pub struct MicromapTriangleEXT {
12141    pub data_offset: u32,
12142    pub subdivision_level: u16,
12143    pub format: u16,
12144}
12145
12146/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
12147#[repr(C)]
12148#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12149pub struct MicromapUsageEXT {
12150    pub count: u32,
12151    pub subdivision_level: u32,
12152    pub format: u32,
12153}
12154
12155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
12156#[repr(C)]
12157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12158pub struct MicromapVersionInfoEXT {
12159    pub s_type: StructureType,
12160    pub next: *const c_void,
12161    pub version_data: *const u8,
12162}
12163
12164impl Default for MicromapVersionInfoEXT {
12165    #[inline]
12166    fn default() -> Self {
12167        Self {
12168            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
12169            next: ptr::null(),
12170            version_data: ptr::null(),
12171        }
12172    }
12173}
12174
12175unsafe impl Send for MicromapVersionInfoEXT {}
12176unsafe impl Sync for MicromapVersionInfoEXT {}
12177
12178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
12179#[repr(C)]
12180#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12181pub struct MultiDrawIndexedInfoEXT {
12182    pub first_index: u32,
12183    pub index_count: u32,
12184    pub vertex_offset: i32,
12185}
12186
12187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
12188#[repr(C)]
12189#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12190pub struct MultiDrawInfoEXT {
12191    pub first_vertex: u32,
12192    pub vertex_count: u32,
12193}
12194
12195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
12196#[repr(C)]
12197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12198pub struct MultisamplePropertiesEXT {
12199    pub s_type: StructureType,
12200    pub next: *mut c_void,
12201    pub max_sample_location_grid_size: Extent2D,
12202}
12203
12204impl Default for MultisamplePropertiesEXT {
12205    #[inline]
12206    fn default() -> Self {
12207        Self {
12208            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
12209            next: ptr::null_mut(),
12210            max_sample_location_grid_size: Extent2D::default(),
12211        }
12212    }
12213}
12214
12215unsafe impl Send for MultisamplePropertiesEXT {}
12216unsafe impl Sync for MultisamplePropertiesEXT {}
12217
12218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
12219#[repr(C)]
12220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12221pub struct MultisampledRenderToSingleSampledInfoEXT {
12222    pub s_type: StructureType,
12223    pub next: *const c_void,
12224    pub multisampled_render_to_single_sampled_enable: Bool32,
12225    pub rasterization_samples: SampleCountFlags,
12226}
12227
12228impl Default for MultisampledRenderToSingleSampledInfoEXT {
12229    #[inline]
12230    fn default() -> Self {
12231        Self {
12232            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
12233            next: ptr::null(),
12234            multisampled_render_to_single_sampled_enable: Bool32::default(),
12235            rasterization_samples: SampleCountFlags::default(),
12236        }
12237    }
12238}
12239
12240unsafe impl Send for MultisampledRenderToSingleSampledInfoEXT {}
12241unsafe impl Sync for MultisampledRenderToSingleSampledInfoEXT {}
12242
12243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
12244#[repr(C)]
12245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12246pub struct MultiviewPerViewAttributesInfoNVX {
12247    pub s_type: StructureType,
12248    pub next: *const c_void,
12249    pub per_view_attributes: Bool32,
12250    pub per_view_attributes_position_x_only: Bool32,
12251}
12252
12253impl Default for MultiviewPerViewAttributesInfoNVX {
12254    #[inline]
12255    fn default() -> Self {
12256        Self {
12257            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
12258            next: ptr::null(),
12259            per_view_attributes: Bool32::default(),
12260            per_view_attributes_position_x_only: Bool32::default(),
12261        }
12262    }
12263}
12264
12265unsafe impl Send for MultiviewPerViewAttributesInfoNVX {}
12266unsafe impl Sync for MultiviewPerViewAttributesInfoNVX {}
12267
12268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
12269#[repr(C)]
12270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12271pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12272    pub s_type: StructureType,
12273    pub next: *const c_void,
12274    pub per_view_render_area_count: u32,
12275    pub per_view_render_areas: *const Rect2D,
12276}
12277
12278impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12279    #[inline]
12280    fn default() -> Self {
12281        Self {
12282            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
12283            next: ptr::null(),
12284            per_view_render_area_count: u32::default(),
12285            per_view_render_areas: ptr::null(),
12286        }
12287    }
12288}
12289
12290unsafe impl Send for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12291unsafe impl Sync for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12292
12293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
12294#[repr(C)]
12295#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12296pub struct MutableDescriptorTypeCreateInfoEXT {
12297    pub s_type: StructureType,
12298    pub next: *const c_void,
12299    pub mutable_descriptor_type_list_count: u32,
12300    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
12301}
12302
12303impl Default for MutableDescriptorTypeCreateInfoEXT {
12304    #[inline]
12305    fn default() -> Self {
12306        Self {
12307            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
12308            next: ptr::null(),
12309            mutable_descriptor_type_list_count: u32::default(),
12310            mutable_descriptor_type_lists: ptr::null(),
12311        }
12312    }
12313}
12314
12315unsafe impl Send for MutableDescriptorTypeCreateInfoEXT {}
12316unsafe impl Sync for MutableDescriptorTypeCreateInfoEXT {}
12317
12318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
12319#[repr(C)]
12320#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12321pub struct MutableDescriptorTypeListEXT {
12322    pub descriptor_type_count: u32,
12323    pub descriptor_types: *const DescriptorType,
12324}
12325
12326impl Default for MutableDescriptorTypeListEXT {
12327    #[inline]
12328    fn default() -> Self {
12329        Self {
12330            descriptor_type_count: u32::default(),
12331            descriptor_types: ptr::null(),
12332        }
12333    }
12334}
12335
12336unsafe impl Send for MutableDescriptorTypeListEXT {}
12337unsafe impl Sync for MutableDescriptorTypeListEXT {}
12338
12339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferFormatPropertiesOHOS.html>
12340#[repr(C)]
12341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12342pub struct NativeBufferFormatPropertiesOHOS {
12343    pub s_type: StructureType,
12344    pub next: *mut c_void,
12345    pub format: Format,
12346    pub external_format: u64,
12347    pub format_features: FormatFeatureFlags,
12348    pub sampler_ycbcr_conversion_components: ComponentMapping,
12349    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
12350    pub suggested_ycbcr_range: SamplerYcbcrRange,
12351    pub suggested_x_chroma_offset: ChromaLocation,
12352    pub suggested_y_chroma_offset: ChromaLocation,
12353}
12354
12355impl Default for NativeBufferFormatPropertiesOHOS {
12356    #[inline]
12357    fn default() -> Self {
12358        Self {
12359            s_type: StructureType::NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS,
12360            next: ptr::null_mut(),
12361            format: Format::default(),
12362            external_format: u64::default(),
12363            format_features: FormatFeatureFlags::default(),
12364            sampler_ycbcr_conversion_components: ComponentMapping::default(),
12365            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
12366            suggested_ycbcr_range: SamplerYcbcrRange::default(),
12367            suggested_x_chroma_offset: ChromaLocation::default(),
12368            suggested_y_chroma_offset: ChromaLocation::default(),
12369        }
12370    }
12371}
12372
12373unsafe impl Send for NativeBufferFormatPropertiesOHOS {}
12374unsafe impl Sync for NativeBufferFormatPropertiesOHOS {}
12375
12376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferOHOS.html>
12377#[repr(C)]
12378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12379pub struct NativeBufferOHOS {
12380    pub s_type: StructureType,
12381    pub next: *const c_void,
12382    pub handle: *mut OHBufferHandle,
12383}
12384
12385impl Default for NativeBufferOHOS {
12386    #[inline]
12387    fn default() -> Self {
12388        Self {
12389            s_type: StructureType::NATIVE_BUFFER_OHOS,
12390            next: ptr::null(),
12391            handle: ptr::null_mut(),
12392        }
12393    }
12394}
12395
12396unsafe impl Send for NativeBufferOHOS {}
12397unsafe impl Sync for NativeBufferOHOS {}
12398
12399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferPropertiesOHOS.html>
12400#[repr(C)]
12401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12402pub struct NativeBufferPropertiesOHOS {
12403    pub s_type: StructureType,
12404    pub next: *mut c_void,
12405    pub allocation_size: DeviceSize,
12406    pub memory_type_bits: u32,
12407}
12408
12409impl Default for NativeBufferPropertiesOHOS {
12410    #[inline]
12411    fn default() -> Self {
12412        Self {
12413            s_type: StructureType::NATIVE_BUFFER_PROPERTIES_OHOS,
12414            next: ptr::null_mut(),
12415            allocation_size: DeviceSize::default(),
12416            memory_type_bits: u32::default(),
12417        }
12418    }
12419}
12420
12421unsafe impl Send for NativeBufferPropertiesOHOS {}
12422unsafe impl Sync for NativeBufferPropertiesOHOS {}
12423
12424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferUsageOHOS.html>
12425#[repr(C)]
12426#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12427pub struct NativeBufferUsageOHOS {
12428    pub s_type: StructureType,
12429    pub next: *mut c_void,
12430    pub ohos_native_buffer_usage: u64,
12431}
12432
12433impl Default for NativeBufferUsageOHOS {
12434    #[inline]
12435    fn default() -> Self {
12436        Self {
12437            s_type: StructureType::NATIVE_BUFFER_USAGE_OHOS,
12438            next: ptr::null_mut(),
12439            ohos_native_buffer_usage: u64::default(),
12440        }
12441    }
12442}
12443
12444unsafe impl Send for NativeBufferUsageOHOS {}
12445unsafe impl Sync for NativeBufferUsageOHOS {}
12446
12447/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
12448#[repr(C)]
12449#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12450pub struct Offset2D {
12451    pub x: i32,
12452    pub y: i32,
12453}
12454
12455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
12456#[repr(C)]
12457#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12458pub struct Offset3D {
12459    pub x: i32,
12460    pub y: i32,
12461    pub z: i32,
12462}
12463
12464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
12465#[repr(C)]
12466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12467pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
12468    pub s_type: StructureType,
12469    pub next: *const c_void,
12470    pub opaque_capture_descriptor_data: *const c_void,
12471}
12472
12473impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
12474    #[inline]
12475    fn default() -> Self {
12476        Self {
12477            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
12478            next: ptr::null(),
12479            opaque_capture_descriptor_data: ptr::null(),
12480        }
12481    }
12482}
12483
12484unsafe impl Send for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12485unsafe impl Sync for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12486
12487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
12488#[repr(C)]
12489#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12490pub struct OpticalFlowExecuteInfoNV {
12491    pub s_type: StructureType,
12492    pub next: *mut c_void,
12493    pub flags: OpticalFlowExecuteFlagsNV,
12494    pub region_count: u32,
12495    pub regions: *const Rect2D,
12496}
12497
12498impl Default for OpticalFlowExecuteInfoNV {
12499    #[inline]
12500    fn default() -> Self {
12501        Self {
12502            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
12503            next: ptr::null_mut(),
12504            flags: OpticalFlowExecuteFlagsNV::default(),
12505            region_count: u32::default(),
12506            regions: ptr::null(),
12507        }
12508    }
12509}
12510
12511unsafe impl Send for OpticalFlowExecuteInfoNV {}
12512unsafe impl Sync for OpticalFlowExecuteInfoNV {}
12513
12514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
12515#[repr(C)]
12516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12517pub struct OpticalFlowImageFormatInfoNV {
12518    pub s_type: StructureType,
12519    pub next: *const c_void,
12520    pub usage: OpticalFlowUsageFlagsNV,
12521}
12522
12523impl Default for OpticalFlowImageFormatInfoNV {
12524    #[inline]
12525    fn default() -> Self {
12526        Self {
12527            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
12528            next: ptr::null(),
12529            usage: OpticalFlowUsageFlagsNV::default(),
12530        }
12531    }
12532}
12533
12534unsafe impl Send for OpticalFlowImageFormatInfoNV {}
12535unsafe impl Sync for OpticalFlowImageFormatInfoNV {}
12536
12537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
12538#[repr(C)]
12539#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12540pub struct OpticalFlowImageFormatPropertiesNV {
12541    pub s_type: StructureType,
12542    pub next: *const c_void,
12543    pub format: Format,
12544}
12545
12546impl Default for OpticalFlowImageFormatPropertiesNV {
12547    #[inline]
12548    fn default() -> Self {
12549        Self {
12550            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
12551            next: ptr::null(),
12552            format: Format::default(),
12553        }
12554    }
12555}
12556
12557unsafe impl Send for OpticalFlowImageFormatPropertiesNV {}
12558unsafe impl Sync for OpticalFlowImageFormatPropertiesNV {}
12559
12560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
12561#[repr(C)]
12562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12563pub struct OpticalFlowSessionCreateInfoNV {
12564    pub s_type: StructureType,
12565    pub next: *mut c_void,
12566    pub width: u32,
12567    pub height: u32,
12568    pub image_format: Format,
12569    pub flow_vector_format: Format,
12570    pub cost_format: Format,
12571    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
12572    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
12573    pub performance_level: OpticalFlowPerformanceLevelNV,
12574    pub flags: OpticalFlowSessionCreateFlagsNV,
12575}
12576
12577impl Default for OpticalFlowSessionCreateInfoNV {
12578    #[inline]
12579    fn default() -> Self {
12580        Self {
12581            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
12582            next: ptr::null_mut(),
12583            width: u32::default(),
12584            height: u32::default(),
12585            image_format: Format::default(),
12586            flow_vector_format: Format::default(),
12587            cost_format: Format::default(),
12588            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12589            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12590            performance_level: OpticalFlowPerformanceLevelNV::default(),
12591            flags: OpticalFlowSessionCreateFlagsNV::default(),
12592        }
12593    }
12594}
12595
12596unsafe impl Send for OpticalFlowSessionCreateInfoNV {}
12597unsafe impl Sync for OpticalFlowSessionCreateInfoNV {}
12598
12599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
12600#[repr(C)]
12601#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12602pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
12603    pub s_type: StructureType,
12604    pub next: *mut c_void,
12605    pub id: u32,
12606    pub size: u32,
12607    pub private_data: *const c_void,
12608}
12609
12610impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
12611    #[inline]
12612    fn default() -> Self {
12613        Self {
12614            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
12615            next: ptr::null_mut(),
12616            id: u32::default(),
12617            size: u32::default(),
12618            private_data: ptr::null(),
12619        }
12620    }
12621}
12622
12623unsafe impl Send for OpticalFlowSessionCreatePrivateDataInfoNV {}
12624unsafe impl Sync for OpticalFlowSessionCreatePrivateDataInfoNV {}
12625
12626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
12627#[repr(C)]
12628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12629pub struct OutOfBandQueueTypeInfoNV {
12630    pub s_type: StructureType,
12631    pub next: *const c_void,
12632    pub queue_type: OutOfBandQueueTypeNV,
12633}
12634
12635impl Default for OutOfBandQueueTypeInfoNV {
12636    #[inline]
12637    fn default() -> Self {
12638        Self {
12639            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
12640            next: ptr::null(),
12641            queue_type: OutOfBandQueueTypeNV::default(),
12642        }
12643    }
12644}
12645
12646unsafe impl Send for OutOfBandQueueTypeInfoNV {}
12647unsafe impl Sync for OutOfBandQueueTypeInfoNV {}
12648
12649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
12650#[repr(C)]
12651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12652pub struct PartitionedAccelerationStructureFlagsNV {
12653    pub s_type: StructureType,
12654    pub next: *mut c_void,
12655    pub enable_partition_translation: Bool32,
12656}
12657
12658impl Default for PartitionedAccelerationStructureFlagsNV {
12659    #[inline]
12660    fn default() -> Self {
12661        Self {
12662            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
12663            next: ptr::null_mut(),
12664            enable_partition_translation: Bool32::default(),
12665        }
12666    }
12667}
12668
12669unsafe impl Send for PartitionedAccelerationStructureFlagsNV {}
12670unsafe impl Sync for PartitionedAccelerationStructureFlagsNV {}
12671
12672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
12673#[repr(C)]
12674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12675pub struct PartitionedAccelerationStructureInstancesInputNV {
12676    pub s_type: StructureType,
12677    pub next: *mut c_void,
12678    pub flags: BuildAccelerationStructureFlagsKHR,
12679    pub instance_count: u32,
12680    pub max_instance_per_partition_count: u32,
12681    pub partition_count: u32,
12682    pub max_instance_in_global_partition_count: u32,
12683}
12684
12685impl Default for PartitionedAccelerationStructureInstancesInputNV {
12686    #[inline]
12687    fn default() -> Self {
12688        Self {
12689            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
12690            next: ptr::null_mut(),
12691            flags: BuildAccelerationStructureFlagsKHR::default(),
12692            instance_count: u32::default(),
12693            max_instance_per_partition_count: u32::default(),
12694            partition_count: u32::default(),
12695            max_instance_in_global_partition_count: u32::default(),
12696        }
12697    }
12698}
12699
12700unsafe impl Send for PartitionedAccelerationStructureInstancesInputNV {}
12701unsafe impl Sync for PartitionedAccelerationStructureInstancesInputNV {}
12702
12703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
12704#[repr(C)]
12705#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12706pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
12707    pub instance_index: u32,
12708    pub instance_contribution_to_hit_group_index: u32,
12709    pub acceleration_structure: DeviceAddress,
12710}
12711
12712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
12713#[repr(C)]
12714#[derive(Copy, Clone, Default, Debug, PartialEq)]
12715pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
12716    pub transform: TransformMatrixKHR,
12717    pub explicit_aabb: [f32; 6],
12718    pub instance_id: u32,
12719    pub instance_mask: u32,
12720    pub instance_contribution_to_hit_group_index: u32,
12721    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
12722    pub instance_index: u32,
12723    pub partition_index: u32,
12724    pub acceleration_structure: DeviceAddress,
12725}
12726
12727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
12728#[repr(C)]
12729#[derive(Copy, Clone, Default, Debug, PartialEq)]
12730pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
12731    pub partition_index: u32,
12732    pub partition_translation: [f32; 3],
12733}
12734
12735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
12736#[repr(C)]
12737#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12738pub struct PastPresentationTimingGOOGLE {
12739    pub present_id: u32,
12740    pub desired_present_time: u64,
12741    pub actual_present_time: u64,
12742    pub earliest_present_time: u64,
12743    pub present_margin: u64,
12744}
12745
12746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html>
12747#[repr(C)]
12748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12749pub struct PerTileBeginInfoQCOM {
12750    pub s_type: StructureType,
12751    pub next: *const c_void,
12752}
12753
12754impl Default for PerTileBeginInfoQCOM {
12755    #[inline]
12756    fn default() -> Self {
12757        Self {
12758            s_type: StructureType::PER_TILE_BEGIN_INFO_QCOM,
12759            next: ptr::null(),
12760        }
12761    }
12762}
12763
12764unsafe impl Send for PerTileBeginInfoQCOM {}
12765unsafe impl Sync for PerTileBeginInfoQCOM {}
12766
12767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html>
12768#[repr(C)]
12769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12770pub struct PerTileEndInfoQCOM {
12771    pub s_type: StructureType,
12772    pub next: *const c_void,
12773}
12774
12775impl Default for PerTileEndInfoQCOM {
12776    #[inline]
12777    fn default() -> Self {
12778        Self {
12779            s_type: StructureType::PER_TILE_END_INFO_QCOM,
12780            next: ptr::null(),
12781        }
12782    }
12783}
12784
12785unsafe impl Send for PerTileEndInfoQCOM {}
12786unsafe impl Sync for PerTileEndInfoQCOM {}
12787
12788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
12789#[repr(C)]
12790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12791pub struct PerformanceConfigurationAcquireInfoINTEL {
12792    pub s_type: StructureType,
12793    pub next: *const c_void,
12794    pub type_: PerformanceConfigurationTypeINTEL,
12795}
12796
12797impl Default for PerformanceConfigurationAcquireInfoINTEL {
12798    #[inline]
12799    fn default() -> Self {
12800        Self {
12801            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
12802            next: ptr::null(),
12803            type_: PerformanceConfigurationTypeINTEL::default(),
12804        }
12805    }
12806}
12807
12808unsafe impl Send for PerformanceConfigurationAcquireInfoINTEL {}
12809unsafe impl Sync for PerformanceConfigurationAcquireInfoINTEL {}
12810
12811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterARM.html>
12812#[repr(C)]
12813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12814pub struct PerformanceCounterARM {
12815    pub s_type: StructureType,
12816    pub next: *mut c_void,
12817    pub counter_id: u32,
12818}
12819
12820impl Default for PerformanceCounterARM {
12821    #[inline]
12822    fn default() -> Self {
12823        Self {
12824            s_type: StructureType::PERFORMANCE_COUNTER_ARM,
12825            next: ptr::null_mut(),
12826            counter_id: u32::default(),
12827        }
12828    }
12829}
12830
12831unsafe impl Send for PerformanceCounterARM {}
12832unsafe impl Sync for PerformanceCounterARM {}
12833
12834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionARM.html>
12835#[repr(C)]
12836#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12837pub struct PerformanceCounterDescriptionARM {
12838    pub s_type: StructureType,
12839    pub next: *mut c_void,
12840    pub flags: PerformanceCounterDescriptionFlagsARM,
12841    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
12842}
12843
12844impl Default for PerformanceCounterDescriptionARM {
12845    #[inline]
12846    fn default() -> Self {
12847        Self {
12848            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_ARM,
12849            next: ptr::null_mut(),
12850            flags: PerformanceCounterDescriptionFlagsARM::default(),
12851            name: StringArray::default(),
12852        }
12853    }
12854}
12855
12856unsafe impl Send for PerformanceCounterDescriptionARM {}
12857unsafe impl Sync for PerformanceCounterDescriptionARM {}
12858
12859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
12860#[repr(C)]
12861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12862pub struct PerformanceCounterDescriptionKHR {
12863    pub s_type: StructureType,
12864    pub next: *mut c_void,
12865    pub flags: PerformanceCounterDescriptionFlagsKHR,
12866    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
12867    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
12868    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
12869}
12870
12871impl Default for PerformanceCounterDescriptionKHR {
12872    #[inline]
12873    fn default() -> Self {
12874        Self {
12875            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
12876            next: ptr::null_mut(),
12877            flags: PerformanceCounterDescriptionFlagsKHR::default(),
12878            name: StringArray::default(),
12879            category: StringArray::default(),
12880            description: StringArray::default(),
12881        }
12882    }
12883}
12884
12885unsafe impl Send for PerformanceCounterDescriptionKHR {}
12886unsafe impl Sync for PerformanceCounterDescriptionKHR {}
12887
12888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
12889#[repr(C)]
12890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12891pub struct PerformanceCounterKHR {
12892    pub s_type: StructureType,
12893    pub next: *mut c_void,
12894    pub unit: PerformanceCounterUnitKHR,
12895    pub scope: PerformanceCounterScopeKHR,
12896    pub storage: PerformanceCounterStorageKHR,
12897    pub uuid: ByteArray<UUID_SIZE>,
12898}
12899
12900impl Default for PerformanceCounterKHR {
12901    #[inline]
12902    fn default() -> Self {
12903        Self {
12904            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
12905            next: ptr::null_mut(),
12906            unit: PerformanceCounterUnitKHR::default(),
12907            scope: PerformanceCounterScopeKHR::default(),
12908            storage: PerformanceCounterStorageKHR::default(),
12909            uuid: ByteArray::default(),
12910        }
12911    }
12912}
12913
12914unsafe impl Send for PerformanceCounterKHR {}
12915unsafe impl Sync for PerformanceCounterKHR {}
12916
12917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
12918#[repr(C)]
12919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12920pub struct PerformanceMarkerInfoINTEL {
12921    pub s_type: StructureType,
12922    pub next: *const c_void,
12923    pub marker: u64,
12924}
12925
12926impl Default for PerformanceMarkerInfoINTEL {
12927    #[inline]
12928    fn default() -> Self {
12929        Self {
12930            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
12931            next: ptr::null(),
12932            marker: u64::default(),
12933        }
12934    }
12935}
12936
12937unsafe impl Send for PerformanceMarkerInfoINTEL {}
12938unsafe impl Sync for PerformanceMarkerInfoINTEL {}
12939
12940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
12941#[repr(C)]
12942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12943pub struct PerformanceOverrideInfoINTEL {
12944    pub s_type: StructureType,
12945    pub next: *const c_void,
12946    pub type_: PerformanceOverrideTypeINTEL,
12947    pub enable: Bool32,
12948    pub parameter: u64,
12949}
12950
12951impl Default for PerformanceOverrideInfoINTEL {
12952    #[inline]
12953    fn default() -> Self {
12954        Self {
12955            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
12956            next: ptr::null(),
12957            type_: PerformanceOverrideTypeINTEL::default(),
12958            enable: Bool32::default(),
12959            parameter: u64::default(),
12960        }
12961    }
12962}
12963
12964unsafe impl Send for PerformanceOverrideInfoINTEL {}
12965unsafe impl Sync for PerformanceOverrideInfoINTEL {}
12966
12967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
12968#[repr(C)]
12969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12970pub struct PerformanceQueryReservationInfoKHR {
12971    pub s_type: StructureType,
12972    pub next: *const c_void,
12973    pub max_performance_queries_per_pool: u32,
12974}
12975
12976impl Default for PerformanceQueryReservationInfoKHR {
12977    #[inline]
12978    fn default() -> Self {
12979        Self {
12980            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
12981            next: ptr::null(),
12982            max_performance_queries_per_pool: u32::default(),
12983        }
12984    }
12985}
12986
12987unsafe impl Send for PerformanceQueryReservationInfoKHR {}
12988unsafe impl Sync for PerformanceQueryReservationInfoKHR {}
12989
12990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
12991#[repr(C)]
12992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12993pub struct PerformanceQuerySubmitInfoKHR {
12994    pub s_type: StructureType,
12995    pub next: *const c_void,
12996    pub counter_pass_index: u32,
12997}
12998
12999impl Default for PerformanceQuerySubmitInfoKHR {
13000    #[inline]
13001    fn default() -> Self {
13002        Self {
13003            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
13004            next: ptr::null(),
13005            counter_pass_index: u32::default(),
13006        }
13007    }
13008}
13009
13010unsafe impl Send for PerformanceQuerySubmitInfoKHR {}
13011unsafe impl Sync for PerformanceQuerySubmitInfoKHR {}
13012
13013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
13014#[repr(C)]
13015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13016pub struct PerformanceStreamMarkerInfoINTEL {
13017    pub s_type: StructureType,
13018    pub next: *const c_void,
13019    pub marker: u32,
13020}
13021
13022impl Default for PerformanceStreamMarkerInfoINTEL {
13023    #[inline]
13024    fn default() -> Self {
13025        Self {
13026            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
13027            next: ptr::null(),
13028            marker: u32::default(),
13029        }
13030    }
13031}
13032
13033unsafe impl Send for PerformanceStreamMarkerInfoINTEL {}
13034unsafe impl Sync for PerformanceStreamMarkerInfoINTEL {}
13035
13036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
13037#[repr(C)]
13038#[derive(Copy, Clone, Default, Debug)]
13039pub struct PerformanceValueINTEL {
13040    pub type_: PerformanceValueTypeINTEL,
13041    pub data: PerformanceValueDataINTEL,
13042}
13043
13044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
13045#[repr(C)]
13046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13047pub struct PhysicalDevice16BitStorageFeatures {
13048    pub s_type: StructureType,
13049    pub next: *mut c_void,
13050    pub storage_buffer_16bit_access: Bool32,
13051    pub uniform_and_storage_buffer_16bit_access: Bool32,
13052    pub storage_push_constant16: Bool32,
13053    pub storage_input_output16: Bool32,
13054}
13055
13056impl Default for PhysicalDevice16BitStorageFeatures {
13057    #[inline]
13058    fn default() -> Self {
13059        Self {
13060            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
13061            next: ptr::null_mut(),
13062            storage_buffer_16bit_access: Bool32::default(),
13063            uniform_and_storage_buffer_16bit_access: Bool32::default(),
13064            storage_push_constant16: Bool32::default(),
13065            storage_input_output16: Bool32::default(),
13066        }
13067    }
13068}
13069
13070unsafe impl Send for PhysicalDevice16BitStorageFeatures {}
13071unsafe impl Sync for PhysicalDevice16BitStorageFeatures {}
13072
13073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
13074#[repr(C)]
13075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13076pub struct PhysicalDevice4444FormatsFeaturesEXT {
13077    pub s_type: StructureType,
13078    pub next: *mut c_void,
13079    pub format_a4_r4_g4_b4: Bool32,
13080    pub format_a4_b4_g4_r4: Bool32,
13081}
13082
13083impl Default for PhysicalDevice4444FormatsFeaturesEXT {
13084    #[inline]
13085    fn default() -> Self {
13086        Self {
13087            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
13088            next: ptr::null_mut(),
13089            format_a4_r4_g4_b4: Bool32::default(),
13090            format_a4_b4_g4_r4: Bool32::default(),
13091        }
13092    }
13093}
13094
13095unsafe impl Send for PhysicalDevice4444FormatsFeaturesEXT {}
13096unsafe impl Sync for PhysicalDevice4444FormatsFeaturesEXT {}
13097
13098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
13099#[repr(C)]
13100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13101pub struct PhysicalDevice8BitStorageFeatures {
13102    pub s_type: StructureType,
13103    pub next: *mut c_void,
13104    pub storage_buffer_8bit_access: Bool32,
13105    pub uniform_and_storage_buffer_8bit_access: Bool32,
13106    pub storage_push_constant8: Bool32,
13107}
13108
13109impl Default for PhysicalDevice8BitStorageFeatures {
13110    #[inline]
13111    fn default() -> Self {
13112        Self {
13113            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
13114            next: ptr::null_mut(),
13115            storage_buffer_8bit_access: Bool32::default(),
13116            uniform_and_storage_buffer_8bit_access: Bool32::default(),
13117            storage_push_constant8: Bool32::default(),
13118        }
13119    }
13120}
13121
13122unsafe impl Send for PhysicalDevice8BitStorageFeatures {}
13123unsafe impl Sync for PhysicalDevice8BitStorageFeatures {}
13124
13125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
13126#[repr(C)]
13127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13128pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
13129    pub s_type: StructureType,
13130    pub next: *mut c_void,
13131    pub decode_mode_shared_exponent: Bool32,
13132}
13133
13134impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
13135    #[inline]
13136    fn default() -> Self {
13137        Self {
13138            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
13139            next: ptr::null_mut(),
13140            decode_mode_shared_exponent: Bool32::default(),
13141        }
13142    }
13143}
13144
13145unsafe impl Send for PhysicalDeviceASTCDecodeFeaturesEXT {}
13146unsafe impl Sync for PhysicalDeviceASTCDecodeFeaturesEXT {}
13147
13148/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
13149#[repr(C)]
13150#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13151pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
13152    pub s_type: StructureType,
13153    pub next: *mut c_void,
13154    pub acceleration_structure: Bool32,
13155    pub acceleration_structure_capture_replay: Bool32,
13156    pub acceleration_structure_indirect_build: Bool32,
13157    pub acceleration_structure_host_commands: Bool32,
13158    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
13159}
13160
13161impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
13162    #[inline]
13163    fn default() -> Self {
13164        Self {
13165            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
13166            next: ptr::null_mut(),
13167            acceleration_structure: Bool32::default(),
13168            acceleration_structure_capture_replay: Bool32::default(),
13169            acceleration_structure_indirect_build: Bool32::default(),
13170            acceleration_structure_host_commands: Bool32::default(),
13171            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
13172        }
13173    }
13174}
13175
13176unsafe impl Send for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13177unsafe impl Sync for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13178
13179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
13180#[repr(C)]
13181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13182pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
13183    pub s_type: StructureType,
13184    pub next: *mut c_void,
13185    pub max_geometry_count: u64,
13186    pub max_instance_count: u64,
13187    pub max_primitive_count: u64,
13188    pub max_per_stage_descriptor_acceleration_structures: u32,
13189    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
13190    pub max_descriptor_set_acceleration_structures: u32,
13191    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
13192    pub min_acceleration_structure_scratch_offset_alignment: u32,
13193}
13194
13195impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
13196    #[inline]
13197    fn default() -> Self {
13198        Self {
13199            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
13200            next: ptr::null_mut(),
13201            max_geometry_count: u64::default(),
13202            max_instance_count: u64::default(),
13203            max_primitive_count: u64::default(),
13204            max_per_stage_descriptor_acceleration_structures: u32::default(),
13205            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
13206            max_descriptor_set_acceleration_structures: u32::default(),
13207            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
13208            min_acceleration_structure_scratch_offset_alignment: u32::default(),
13209        }
13210    }
13211}
13212
13213unsafe impl Send for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13214unsafe impl Sync for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13215
13216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
13217#[repr(C)]
13218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13219pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
13220    pub s_type: StructureType,
13221    pub next: *mut c_void,
13222    pub report_address_binding: Bool32,
13223}
13224
13225impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
13226    #[inline]
13227    fn default() -> Self {
13228        Self {
13229            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
13230            next: ptr::null_mut(),
13231            report_address_binding: Bool32::default(),
13232        }
13233    }
13234}
13235
13236unsafe impl Send for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13237unsafe impl Sync for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13238
13239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
13240#[repr(C)]
13241#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13242pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
13243    pub s_type: StructureType,
13244    pub next: *mut c_void,
13245    pub amigo_profiling: Bool32,
13246}
13247
13248impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
13249    #[inline]
13250    fn default() -> Self {
13251        Self {
13252            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
13253            next: ptr::null_mut(),
13254            amigo_profiling: Bool32::default(),
13255        }
13256    }
13257}
13258
13259unsafe impl Send for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13260unsafe impl Sync for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13261
13262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
13263#[repr(C)]
13264#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13265pub struct PhysicalDeviceAntiLagFeaturesAMD {
13266    pub s_type: StructureType,
13267    pub next: *mut c_void,
13268    pub anti_lag: Bool32,
13269}
13270
13271impl Default for PhysicalDeviceAntiLagFeaturesAMD {
13272    #[inline]
13273    fn default() -> Self {
13274        Self {
13275            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
13276            next: ptr::null_mut(),
13277            anti_lag: Bool32::default(),
13278        }
13279    }
13280}
13281
13282unsafe impl Send for PhysicalDeviceAntiLagFeaturesAMD {}
13283unsafe impl Sync for PhysicalDeviceAntiLagFeaturesAMD {}
13284
13285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
13286#[repr(C)]
13287#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13288pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13289    pub s_type: StructureType,
13290    pub next: *mut c_void,
13291    pub attachment_feedback_loop_dynamic_state: Bool32,
13292}
13293
13294impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13295    #[inline]
13296    fn default() -> Self {
13297        Self {
13298            s_type:
13299                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
13300            next: ptr::null_mut(),
13301            attachment_feedback_loop_dynamic_state: Bool32::default(),
13302        }
13303    }
13304}
13305
13306unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13307unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13308
13309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
13310#[repr(C)]
13311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13312pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13313    pub s_type: StructureType,
13314    pub next: *mut c_void,
13315    pub attachment_feedback_loop_layout: Bool32,
13316}
13317
13318impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13319    #[inline]
13320    fn default() -> Self {
13321        Self {
13322            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
13323            next: ptr::null_mut(),
13324            attachment_feedback_loop_layout: Bool32::default(),
13325        }
13326    }
13327}
13328
13329unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13330unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13331
13332/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
13333#[repr(C)]
13334#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13335pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13336    pub s_type: StructureType,
13337    pub next: *mut c_void,
13338    pub advanced_blend_coherent_operations: Bool32,
13339}
13340
13341impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13342    #[inline]
13343    fn default() -> Self {
13344        Self {
13345            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
13346            next: ptr::null_mut(),
13347            advanced_blend_coherent_operations: Bool32::default(),
13348        }
13349    }
13350}
13351
13352unsafe impl Send for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13353unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13354
13355/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
13356#[repr(C)]
13357#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13358pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13359    pub s_type: StructureType,
13360    pub next: *mut c_void,
13361    pub advanced_blend_max_color_attachments: u32,
13362    pub advanced_blend_independent_blend: Bool32,
13363    pub advanced_blend_non_premultiplied_src_color: Bool32,
13364    pub advanced_blend_non_premultiplied_dst_color: Bool32,
13365    pub advanced_blend_correlated_overlap: Bool32,
13366    pub advanced_blend_all_operations: Bool32,
13367}
13368
13369impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13370    #[inline]
13371    fn default() -> Self {
13372        Self {
13373            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
13374            next: ptr::null_mut(),
13375            advanced_blend_max_color_attachments: u32::default(),
13376            advanced_blend_independent_blend: Bool32::default(),
13377            advanced_blend_non_premultiplied_src_color: Bool32::default(),
13378            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
13379            advanced_blend_correlated_overlap: Bool32::default(),
13380            advanced_blend_all_operations: Bool32::default(),
13381        }
13382    }
13383}
13384
13385unsafe impl Send for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13386unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13387
13388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
13389#[repr(C)]
13390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13391pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13392    pub s_type: StructureType,
13393    pub next: *mut c_void,
13394    pub border_color_swizzle: Bool32,
13395    pub border_color_swizzle_from_image: Bool32,
13396}
13397
13398impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13399    #[inline]
13400    fn default() -> Self {
13401        Self {
13402            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
13403            next: ptr::null_mut(),
13404            border_color_swizzle: Bool32::default(),
13405            border_color_swizzle_from_image: Bool32::default(),
13406        }
13407    }
13408}
13409
13410unsafe impl Send for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13411unsafe impl Sync for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13412
13413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
13414#[repr(C)]
13415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13416pub struct PhysicalDeviceBufferDeviceAddressFeatures {
13417    pub s_type: StructureType,
13418    pub next: *mut c_void,
13419    pub buffer_device_address: Bool32,
13420    pub buffer_device_address_capture_replay: Bool32,
13421    pub buffer_device_address_multi_device: Bool32,
13422}
13423
13424impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
13425    #[inline]
13426    fn default() -> Self {
13427        Self {
13428            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
13429            next: ptr::null_mut(),
13430            buffer_device_address: Bool32::default(),
13431            buffer_device_address_capture_replay: Bool32::default(),
13432            buffer_device_address_multi_device: Bool32::default(),
13433        }
13434    }
13435}
13436
13437unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeatures {}
13438unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeatures {}
13439
13440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
13441#[repr(C)]
13442#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13443pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13444    pub s_type: StructureType,
13445    pub next: *mut c_void,
13446    pub buffer_device_address: Bool32,
13447    pub buffer_device_address_capture_replay: Bool32,
13448    pub buffer_device_address_multi_device: Bool32,
13449}
13450
13451impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13452    #[inline]
13453    fn default() -> Self {
13454        Self {
13455            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
13456            next: ptr::null_mut(),
13457            buffer_device_address: Bool32::default(),
13458            buffer_device_address_capture_replay: Bool32::default(),
13459            buffer_device_address_multi_device: Bool32::default(),
13460        }
13461    }
13462}
13463
13464unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13465unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13466
13467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
13468#[repr(C)]
13469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13470pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13471    pub s_type: StructureType,
13472    pub next: *mut c_void,
13473    pub cluster_acceleration_structure: Bool32,
13474}
13475
13476impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13477    #[inline]
13478    fn default() -> Self {
13479        Self {
13480            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
13481            next: ptr::null_mut(),
13482            cluster_acceleration_structure: Bool32::default(),
13483        }
13484    }
13485}
13486
13487unsafe impl Send for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13488unsafe impl Sync for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13489
13490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
13491#[repr(C)]
13492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13493pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13494    pub s_type: StructureType,
13495    pub next: *mut c_void,
13496    pub max_vertices_per_cluster: u32,
13497    pub max_triangles_per_cluster: u32,
13498    pub cluster_scratch_byte_alignment: u32,
13499    pub cluster_byte_alignment: u32,
13500    pub cluster_template_byte_alignment: u32,
13501    pub cluster_bottom_level_byte_alignment: u32,
13502    pub cluster_template_bounds_byte_alignment: u32,
13503    pub max_cluster_geometry_index: u32,
13504}
13505
13506impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13507    #[inline]
13508    fn default() -> Self {
13509        Self {
13510            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
13511            next: ptr::null_mut(),
13512            max_vertices_per_cluster: u32::default(),
13513            max_triangles_per_cluster: u32::default(),
13514            cluster_scratch_byte_alignment: u32::default(),
13515            cluster_byte_alignment: u32::default(),
13516            cluster_template_byte_alignment: u32::default(),
13517            cluster_bottom_level_byte_alignment: u32::default(),
13518            cluster_template_bounds_byte_alignment: u32::default(),
13519            max_cluster_geometry_index: u32::default(),
13520        }
13521    }
13522}
13523
13524unsafe impl Send for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13525unsafe impl Sync for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13526
13527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
13528#[repr(C)]
13529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13530pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13531    pub s_type: StructureType,
13532    pub next: *mut c_void,
13533    pub clusterculling_shader: Bool32,
13534    pub multiview_cluster_culling_shader: Bool32,
13535}
13536
13537impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13538    #[inline]
13539    fn default() -> Self {
13540        Self {
13541            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
13542            next: ptr::null_mut(),
13543            clusterculling_shader: Bool32::default(),
13544            multiview_cluster_culling_shader: Bool32::default(),
13545        }
13546    }
13547}
13548
13549unsafe impl Send for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13550unsafe impl Sync for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13551
13552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
13553#[repr(C)]
13554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13555pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13556    pub s_type: StructureType,
13557    pub next: *mut c_void,
13558    pub max_work_group_count: [u32; 3],
13559    pub max_work_group_size: [u32; 3],
13560    pub max_output_cluster_count: u32,
13561    pub indirect_buffer_offset_alignment: DeviceSize,
13562}
13563
13564impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13565    #[inline]
13566    fn default() -> Self {
13567        Self {
13568            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
13569            next: ptr::null_mut(),
13570            max_work_group_count: [u32::default(); 3],
13571            max_work_group_size: [u32::default(); 3],
13572            max_output_cluster_count: u32::default(),
13573            indirect_buffer_offset_alignment: DeviceSize::default(),
13574        }
13575    }
13576}
13577
13578unsafe impl Send for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13579unsafe impl Sync for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13580
13581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
13582#[repr(C)]
13583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13584pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13585    pub s_type: StructureType,
13586    pub next: *mut c_void,
13587    pub cluster_shading_rate: Bool32,
13588}
13589
13590impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13591    #[inline]
13592    fn default() -> Self {
13593        Self {
13594            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
13595            next: ptr::null_mut(),
13596            cluster_shading_rate: Bool32::default(),
13597        }
13598    }
13599}
13600
13601unsafe impl Send for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13602unsafe impl Sync for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13603
13604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
13605#[repr(C)]
13606#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13607pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
13608    pub s_type: StructureType,
13609    pub next: *mut c_void,
13610    pub device_coherent_memory: Bool32,
13611}
13612
13613impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
13614    #[inline]
13615    fn default() -> Self {
13616        Self {
13617            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
13618            next: ptr::null_mut(),
13619            device_coherent_memory: Bool32::default(),
13620        }
13621    }
13622}
13623
13624unsafe impl Send for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13625unsafe impl Sync for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13626
13627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
13628#[repr(C)]
13629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13630pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
13631    pub s_type: StructureType,
13632    pub next: *mut c_void,
13633    pub color_write_enable: Bool32,
13634}
13635
13636impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
13637    #[inline]
13638    fn default() -> Self {
13639        Self {
13640            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
13641            next: ptr::null_mut(),
13642            color_write_enable: Bool32::default(),
13643        }
13644    }
13645}
13646
13647unsafe impl Send for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13648unsafe impl Sync for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13649
13650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
13651#[repr(C)]
13652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13653pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13654    pub s_type: StructureType,
13655    pub next: *mut c_void,
13656    pub command_buffer_inheritance: Bool32,
13657}
13658
13659impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13660    #[inline]
13661    fn default() -> Self {
13662        Self {
13663            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
13664            next: ptr::null_mut(),
13665            command_buffer_inheritance: Bool32::default(),
13666        }
13667    }
13668}
13669
13670unsafe impl Send for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13671unsafe impl Sync for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13672
13673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
13674#[repr(C)]
13675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13676pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13677    pub s_type: StructureType,
13678    pub next: *mut c_void,
13679    pub compute_derivative_group_quads: Bool32,
13680    pub compute_derivative_group_linear: Bool32,
13681}
13682
13683impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13684    #[inline]
13685    fn default() -> Self {
13686        Self {
13687            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
13688            next: ptr::null_mut(),
13689            compute_derivative_group_quads: Bool32::default(),
13690            compute_derivative_group_linear: Bool32::default(),
13691        }
13692    }
13693}
13694
13695unsafe impl Send for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13696unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13697
13698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
13699#[repr(C)]
13700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13701pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13702    pub s_type: StructureType,
13703    pub next: *mut c_void,
13704    pub mesh_and_task_shader_derivatives: Bool32,
13705}
13706
13707impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13708    #[inline]
13709    fn default() -> Self {
13710        Self {
13711            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
13712            next: ptr::null_mut(),
13713            mesh_and_task_shader_derivatives: Bool32::default(),
13714        }
13715    }
13716}
13717
13718unsafe impl Send for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13719unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13720
13721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
13722#[repr(C)]
13723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13724pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
13725    pub s_type: StructureType,
13726    pub next: *mut c_void,
13727    pub conditional_rendering: Bool32,
13728    pub inherited_conditional_rendering: Bool32,
13729}
13730
13731impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
13732    #[inline]
13733    fn default() -> Self {
13734        Self {
13735            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
13736            next: ptr::null_mut(),
13737            conditional_rendering: Bool32::default(),
13738            inherited_conditional_rendering: Bool32::default(),
13739        }
13740    }
13741}
13742
13743unsafe impl Send for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13744unsafe impl Sync for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13745
13746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
13747#[repr(C)]
13748#[derive(Copy, Clone, Debug, PartialEq)]
13749pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
13750    pub s_type: StructureType,
13751    pub next: *mut c_void,
13752    pub primitive_overestimation_size: f32,
13753    pub max_extra_primitive_overestimation_size: f32,
13754    pub extra_primitive_overestimation_size_granularity: f32,
13755    pub primitive_underestimation: Bool32,
13756    pub conservative_point_and_line_rasterization: Bool32,
13757    pub degenerate_triangles_rasterized: Bool32,
13758    pub degenerate_lines_rasterized: Bool32,
13759    pub fully_covered_fragment_shader_input_variable: Bool32,
13760    pub conservative_rasterization_post_depth_coverage: Bool32,
13761}
13762
13763impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
13764    #[inline]
13765    fn default() -> Self {
13766        Self {
13767            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
13768            next: ptr::null_mut(),
13769            primitive_overestimation_size: f32::default(),
13770            max_extra_primitive_overestimation_size: f32::default(),
13771            extra_primitive_overestimation_size_granularity: f32::default(),
13772            primitive_underestimation: Bool32::default(),
13773            conservative_point_and_line_rasterization: Bool32::default(),
13774            degenerate_triangles_rasterized: Bool32::default(),
13775            degenerate_lines_rasterized: Bool32::default(),
13776            fully_covered_fragment_shader_input_variable: Bool32::default(),
13777            conservative_rasterization_post_depth_coverage: Bool32::default(),
13778        }
13779    }
13780}
13781
13782unsafe impl Send for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13783unsafe impl Sync for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13784
13785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
13786#[repr(C)]
13787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13788pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
13789    pub s_type: StructureType,
13790    pub next: *mut c_void,
13791    pub cooperative_matrix_workgroup_scope: Bool32,
13792    pub cooperative_matrix_flexible_dimensions: Bool32,
13793    pub cooperative_matrix_reductions: Bool32,
13794    pub cooperative_matrix_conversions: Bool32,
13795    pub cooperative_matrix_per_element_operations: Bool32,
13796    pub cooperative_matrix_tensor_addressing: Bool32,
13797    pub cooperative_matrix_block_loads: Bool32,
13798}
13799
13800impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
13801    #[inline]
13802    fn default() -> Self {
13803        Self {
13804            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
13805            next: ptr::null_mut(),
13806            cooperative_matrix_workgroup_scope: Bool32::default(),
13807            cooperative_matrix_flexible_dimensions: Bool32::default(),
13808            cooperative_matrix_reductions: Bool32::default(),
13809            cooperative_matrix_conversions: Bool32::default(),
13810            cooperative_matrix_per_element_operations: Bool32::default(),
13811            cooperative_matrix_tensor_addressing: Bool32::default(),
13812            cooperative_matrix_block_loads: Bool32::default(),
13813        }
13814    }
13815}
13816
13817unsafe impl Send for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13818unsafe impl Sync for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13819
13820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
13821#[repr(C)]
13822#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13823pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
13824    pub s_type: StructureType,
13825    pub next: *mut c_void,
13826    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
13827    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
13828    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
13829}
13830
13831impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
13832    #[inline]
13833    fn default() -> Self {
13834        Self {
13835            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
13836            next: ptr::null_mut(),
13837            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
13838            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
13839            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
13840        }
13841    }
13842}
13843
13844unsafe impl Send for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
13845unsafe impl Sync for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
13846
13847/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
13848#[repr(C)]
13849#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13850pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
13851    pub s_type: StructureType,
13852    pub next: *mut c_void,
13853    pub cooperative_matrix: Bool32,
13854    pub cooperative_matrix_robust_buffer_access: Bool32,
13855}
13856
13857impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
13858    #[inline]
13859    fn default() -> Self {
13860        Self {
13861            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
13862            next: ptr::null_mut(),
13863            cooperative_matrix: Bool32::default(),
13864            cooperative_matrix_robust_buffer_access: Bool32::default(),
13865        }
13866    }
13867}
13868
13869unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
13870unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
13871
13872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
13873#[repr(C)]
13874#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13875pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
13876    pub s_type: StructureType,
13877    pub next: *mut c_void,
13878    pub cooperative_matrix: Bool32,
13879    pub cooperative_matrix_robust_buffer_access: Bool32,
13880}
13881
13882impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
13883    #[inline]
13884    fn default() -> Self {
13885        Self {
13886            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
13887            next: ptr::null_mut(),
13888            cooperative_matrix: Bool32::default(),
13889            cooperative_matrix_robust_buffer_access: Bool32::default(),
13890        }
13891    }
13892}
13893
13894unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesNV {}
13895unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesNV {}
13896
13897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
13898#[repr(C)]
13899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13900pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
13901    pub s_type: StructureType,
13902    pub next: *mut c_void,
13903    pub cooperative_matrix_supported_stages: ShaderStageFlags,
13904}
13905
13906impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
13907    #[inline]
13908    fn default() -> Self {
13909        Self {
13910            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
13911            next: ptr::null_mut(),
13912            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
13913        }
13914    }
13915}
13916
13917unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
13918unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
13919
13920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
13921#[repr(C)]
13922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13923pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
13924    pub s_type: StructureType,
13925    pub next: *mut c_void,
13926    pub cooperative_matrix_supported_stages: ShaderStageFlags,
13927}
13928
13929impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
13930    #[inline]
13931    fn default() -> Self {
13932        Self {
13933            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
13934            next: ptr::null_mut(),
13935            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
13936        }
13937    }
13938}
13939
13940unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesNV {}
13941unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesNV {}
13942
13943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
13944#[repr(C)]
13945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13946pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
13947    pub s_type: StructureType,
13948    pub next: *mut c_void,
13949    pub cooperative_vector: Bool32,
13950    pub cooperative_vector_training: Bool32,
13951}
13952
13953impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
13954    #[inline]
13955    fn default() -> Self {
13956        Self {
13957            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
13958            next: ptr::null_mut(),
13959            cooperative_vector: Bool32::default(),
13960            cooperative_vector_training: Bool32::default(),
13961        }
13962    }
13963}
13964
13965unsafe impl Send for PhysicalDeviceCooperativeVectorFeaturesNV {}
13966unsafe impl Sync for PhysicalDeviceCooperativeVectorFeaturesNV {}
13967
13968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
13969#[repr(C)]
13970#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13971pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
13972    pub s_type: StructureType,
13973    pub next: *mut c_void,
13974    pub cooperative_vector_supported_stages: ShaderStageFlags,
13975    pub cooperative_vector_training_float16_accumulation: Bool32,
13976    pub cooperative_vector_training_float32_accumulation: Bool32,
13977    pub max_cooperative_vector_components: u32,
13978}
13979
13980impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
13981    #[inline]
13982    fn default() -> Self {
13983        Self {
13984            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
13985            next: ptr::null_mut(),
13986            cooperative_vector_supported_stages: ShaderStageFlags::default(),
13987            cooperative_vector_training_float16_accumulation: Bool32::default(),
13988            cooperative_vector_training_float32_accumulation: Bool32::default(),
13989            max_cooperative_vector_components: u32::default(),
13990        }
13991    }
13992}
13993
13994unsafe impl Send for PhysicalDeviceCooperativeVectorPropertiesNV {}
13995unsafe impl Sync for PhysicalDeviceCooperativeVectorPropertiesNV {}
13996
13997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR.html>
13998#[repr(C)]
13999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14000pub struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
14001    pub s_type: StructureType,
14002    pub next: *mut c_void,
14003    pub indirect_memory_copy: Bool32,
14004    pub indirect_memory_to_image_copy: Bool32,
14005}
14006
14007impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
14008    #[inline]
14009    fn default() -> Self {
14010        Self {
14011            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR,
14012            next: ptr::null_mut(),
14013            indirect_memory_copy: Bool32::default(),
14014            indirect_memory_to_image_copy: Bool32::default(),
14015        }
14016    }
14017}
14018
14019unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
14020unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
14021
14022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
14023#[repr(C)]
14024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14025pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14026    pub s_type: StructureType,
14027    pub next: *mut c_void,
14028    pub indirect_copy: Bool32,
14029}
14030
14031impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14032    #[inline]
14033    fn default() -> Self {
14034        Self {
14035            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
14036            next: ptr::null_mut(),
14037            indirect_copy: Bool32::default(),
14038        }
14039    }
14040}
14041
14042unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14043unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14044
14045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR.html>
14046#[repr(C)]
14047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14048pub struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14049    pub s_type: StructureType,
14050    pub next: *mut c_void,
14051    pub supported_queues: QueueFlags,
14052}
14053
14054impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14055    #[inline]
14056    fn default() -> Self {
14057        Self {
14058            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR,
14059            next: ptr::null_mut(),
14060            supported_queues: QueueFlags::default(),
14061        }
14062    }
14063}
14064
14065unsafe impl Send for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14066unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14067
14068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
14069#[repr(C)]
14070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14071pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
14072    pub s_type: StructureType,
14073    pub next: *mut c_void,
14074    pub corner_sampled_image: Bool32,
14075}
14076
14077impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
14078    #[inline]
14079    fn default() -> Self {
14080        Self {
14081            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
14082            next: ptr::null_mut(),
14083            corner_sampled_image: Bool32::default(),
14084        }
14085    }
14086}
14087
14088unsafe impl Send for PhysicalDeviceCornerSampledImageFeaturesNV {}
14089unsafe impl Sync for PhysicalDeviceCornerSampledImageFeaturesNV {}
14090
14091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
14092#[repr(C)]
14093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14094pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
14095    pub s_type: StructureType,
14096    pub next: *mut c_void,
14097    pub coverage_reduction_mode: Bool32,
14098}
14099
14100impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
14101    #[inline]
14102    fn default() -> Self {
14103        Self {
14104            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
14105            next: ptr::null_mut(),
14106            coverage_reduction_mode: Bool32::default(),
14107        }
14108    }
14109}
14110
14111unsafe impl Send for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14112unsafe impl Sync for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14113
14114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
14115#[repr(C)]
14116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14117pub struct PhysicalDeviceCubicClampFeaturesQCOM {
14118    pub s_type: StructureType,
14119    pub next: *mut c_void,
14120    pub cubic_range_clamp: Bool32,
14121}
14122
14123impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
14124    #[inline]
14125    fn default() -> Self {
14126        Self {
14127            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
14128            next: ptr::null_mut(),
14129            cubic_range_clamp: Bool32::default(),
14130        }
14131    }
14132}
14133
14134unsafe impl Send for PhysicalDeviceCubicClampFeaturesQCOM {}
14135unsafe impl Sync for PhysicalDeviceCubicClampFeaturesQCOM {}
14136
14137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
14138#[repr(C)]
14139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14140pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
14141    pub s_type: StructureType,
14142    pub next: *mut c_void,
14143    pub selectable_cubic_weights: Bool32,
14144}
14145
14146impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
14147    #[inline]
14148    fn default() -> Self {
14149        Self {
14150            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
14151            next: ptr::null_mut(),
14152            selectable_cubic_weights: Bool32::default(),
14153        }
14154    }
14155}
14156
14157unsafe impl Send for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14158unsafe impl Sync for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14159
14160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
14161#[repr(C)]
14162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14163pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
14164    pub s_type: StructureType,
14165    pub next: *mut c_void,
14166    pub cuda_kernel_launch_features: Bool32,
14167}
14168
14169impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
14170    #[inline]
14171    fn default() -> Self {
14172        Self {
14173            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
14174            next: ptr::null_mut(),
14175            cuda_kernel_launch_features: Bool32::default(),
14176        }
14177    }
14178}
14179
14180unsafe impl Send for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14181unsafe impl Sync for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14182
14183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
14184#[repr(C)]
14185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14186pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
14187    pub s_type: StructureType,
14188    pub next: *mut c_void,
14189    pub compute_capability_minor: u32,
14190    pub compute_capability_major: u32,
14191}
14192
14193impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
14194    #[inline]
14195    fn default() -> Self {
14196        Self {
14197            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
14198            next: ptr::null_mut(),
14199            compute_capability_minor: u32::default(),
14200            compute_capability_major: u32::default(),
14201        }
14202    }
14203}
14204
14205unsafe impl Send for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14206unsafe impl Sync for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14207
14208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
14209#[repr(C)]
14210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14211pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
14212    pub s_type: StructureType,
14213    pub next: *mut c_void,
14214    pub custom_border_colors: Bool32,
14215    pub custom_border_color_without_format: Bool32,
14216}
14217
14218impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
14219    #[inline]
14220    fn default() -> Self {
14221        Self {
14222            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
14223            next: ptr::null_mut(),
14224            custom_border_colors: Bool32::default(),
14225            custom_border_color_without_format: Bool32::default(),
14226        }
14227    }
14228}
14229
14230unsafe impl Send for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14231unsafe impl Sync for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14232
14233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
14234#[repr(C)]
14235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14236pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
14237    pub s_type: StructureType,
14238    pub next: *mut c_void,
14239    pub max_custom_border_color_samplers: u32,
14240}
14241
14242impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
14243    #[inline]
14244    fn default() -> Self {
14245        Self {
14246            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
14247            next: ptr::null_mut(),
14248            max_custom_border_color_samplers: u32::default(),
14249        }
14250    }
14251}
14252
14253unsafe impl Send for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14254unsafe impl Sync for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14255
14256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html>
14257#[repr(C)]
14258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14259pub struct PhysicalDeviceDataGraphFeaturesARM {
14260    pub s_type: StructureType,
14261    pub next: *mut c_void,
14262    pub data_graph: Bool32,
14263    pub data_graph_update_after_bind: Bool32,
14264    pub data_graph_specialization_constants: Bool32,
14265    pub data_graph_descriptor_buffer: Bool32,
14266    pub data_graph_shader_module: Bool32,
14267}
14268
14269impl Default for PhysicalDeviceDataGraphFeaturesARM {
14270    #[inline]
14271    fn default() -> Self {
14272        Self {
14273            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM,
14274            next: ptr::null_mut(),
14275            data_graph: Bool32::default(),
14276            data_graph_update_after_bind: Bool32::default(),
14277            data_graph_specialization_constants: Bool32::default(),
14278            data_graph_descriptor_buffer: Bool32::default(),
14279            data_graph_shader_module: Bool32::default(),
14280        }
14281    }
14282}
14283
14284unsafe impl Send for PhysicalDeviceDataGraphFeaturesARM {}
14285unsafe impl Sync for PhysicalDeviceDataGraphFeaturesARM {}
14286
14287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphModelFeaturesQCOM.html>
14288#[repr(C)]
14289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14290pub struct PhysicalDeviceDataGraphModelFeaturesQCOM {
14291    pub s_type: StructureType,
14292    pub next: *const c_void,
14293    pub data_graph_model: Bool32,
14294}
14295
14296impl Default for PhysicalDeviceDataGraphModelFeaturesQCOM {
14297    #[inline]
14298    fn default() -> Self {
14299        Self {
14300            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM,
14301            next: ptr::null(),
14302            data_graph_model: Bool32::default(),
14303        }
14304    }
14305}
14306
14307unsafe impl Send for PhysicalDeviceDataGraphModelFeaturesQCOM {}
14308unsafe impl Sync for PhysicalDeviceDataGraphModelFeaturesQCOM {}
14309
14310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html>
14311#[repr(C)]
14312#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14313pub struct PhysicalDeviceDataGraphOperationSupportARM {
14314    pub operation_type: PhysicalDeviceDataGraphOperationTypeARM,
14315    pub name: StringArray<MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM>,
14316    pub version: u32,
14317}
14318
14319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html>
14320#[repr(C)]
14321#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14322pub struct PhysicalDeviceDataGraphProcessingEngineARM {
14323    pub type_: PhysicalDeviceDataGraphProcessingEngineTypeARM,
14324    pub is_foreign: Bool32,
14325}
14326
14327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
14328#[repr(C)]
14329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14330pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14331    pub s_type: StructureType,
14332    pub next: *mut c_void,
14333    pub dedicated_allocation_image_aliasing: Bool32,
14334}
14335
14336impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14337    #[inline]
14338    fn default() -> Self {
14339        Self {
14340            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
14341            next: ptr::null_mut(),
14342            dedicated_allocation_image_aliasing: Bool32::default(),
14343        }
14344    }
14345}
14346
14347unsafe impl Send for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14348unsafe impl Sync for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14349
14350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX.html>
14351#[repr(C)]
14352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14353pub struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14354    pub s_type: StructureType,
14355    pub next: *mut c_void,
14356    pub dense_geometry_format: Bool32,
14357}
14358
14359impl Default for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14360    #[inline]
14361    fn default() -> Self {
14362        Self {
14363            s_type: StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX,
14364            next: ptr::null_mut(),
14365            dense_geometry_format: Bool32::default(),
14366        }
14367    }
14368}
14369
14370unsafe impl Send for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14371unsafe impl Sync for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14372
14373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
14374#[repr(C)]
14375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14376pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
14377    pub s_type: StructureType,
14378    pub next: *mut c_void,
14379    pub depth_bias_control: Bool32,
14380    pub least_representable_value_force_unorm_representation: Bool32,
14381    pub float_representation: Bool32,
14382    pub depth_bias_exact: Bool32,
14383}
14384
14385impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
14386    #[inline]
14387    fn default() -> Self {
14388        Self {
14389            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
14390            next: ptr::null_mut(),
14391            depth_bias_control: Bool32::default(),
14392            least_representable_value_force_unorm_representation: Bool32::default(),
14393            float_representation: Bool32::default(),
14394            depth_bias_exact: Bool32::default(),
14395        }
14396    }
14397}
14398
14399unsafe impl Send for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14400unsafe impl Sync for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14401
14402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
14403#[repr(C)]
14404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14405pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
14406    pub s_type: StructureType,
14407    pub next: *mut c_void,
14408    pub depth_clamp_control: Bool32,
14409}
14410
14411impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
14412    #[inline]
14413    fn default() -> Self {
14414        Self {
14415            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
14416            next: ptr::null_mut(),
14417            depth_clamp_control: Bool32::default(),
14418        }
14419    }
14420}
14421
14422unsafe impl Send for PhysicalDeviceDepthClampControlFeaturesEXT {}
14423unsafe impl Sync for PhysicalDeviceDepthClampControlFeaturesEXT {}
14424
14425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
14426#[repr(C)]
14427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14428pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14429    pub s_type: StructureType,
14430    pub next: *mut c_void,
14431    pub depth_clamp_zero_one: Bool32,
14432}
14433
14434impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14435    #[inline]
14436    fn default() -> Self {
14437        Self {
14438            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
14439            next: ptr::null_mut(),
14440            depth_clamp_zero_one: Bool32::default(),
14441        }
14442    }
14443}
14444
14445unsafe impl Send for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14446unsafe impl Sync for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14447
14448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
14449#[repr(C)]
14450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14451pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
14452    pub s_type: StructureType,
14453    pub next: *mut c_void,
14454    pub depth_clip_control: Bool32,
14455}
14456
14457impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
14458    #[inline]
14459    fn default() -> Self {
14460        Self {
14461            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
14462            next: ptr::null_mut(),
14463            depth_clip_control: Bool32::default(),
14464        }
14465    }
14466}
14467
14468unsafe impl Send for PhysicalDeviceDepthClipControlFeaturesEXT {}
14469unsafe impl Sync for PhysicalDeviceDepthClipControlFeaturesEXT {}
14470
14471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
14472#[repr(C)]
14473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14474pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
14475    pub s_type: StructureType,
14476    pub next: *mut c_void,
14477    pub depth_clip_enable: Bool32,
14478}
14479
14480impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
14481    #[inline]
14482    fn default() -> Self {
14483        Self {
14484            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
14485            next: ptr::null_mut(),
14486            depth_clip_enable: Bool32::default(),
14487        }
14488    }
14489}
14490
14491unsafe impl Send for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14492unsafe impl Sync for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14493
14494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
14495#[repr(C)]
14496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14497pub struct PhysicalDeviceDepthStencilResolveProperties {
14498    pub s_type: StructureType,
14499    pub next: *mut c_void,
14500    pub supported_depth_resolve_modes: ResolveModeFlags,
14501    pub supported_stencil_resolve_modes: ResolveModeFlags,
14502    pub independent_resolve_none: Bool32,
14503    pub independent_resolve: Bool32,
14504}
14505
14506impl Default for PhysicalDeviceDepthStencilResolveProperties {
14507    #[inline]
14508    fn default() -> Self {
14509        Self {
14510            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
14511            next: ptr::null_mut(),
14512            supported_depth_resolve_modes: ResolveModeFlags::default(),
14513            supported_stencil_resolve_modes: ResolveModeFlags::default(),
14514            independent_resolve_none: Bool32::default(),
14515            independent_resolve: Bool32::default(),
14516        }
14517    }
14518}
14519
14520unsafe impl Send for PhysicalDeviceDepthStencilResolveProperties {}
14521unsafe impl Sync for PhysicalDeviceDepthStencilResolveProperties {}
14522
14523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
14524#[repr(C)]
14525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14526pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14527    pub s_type: StructureType,
14528    pub next: *mut c_void,
14529    pub combined_image_sampler_density_map_descriptor_size: usize,
14530}
14531
14532impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14533    #[inline]
14534    fn default() -> Self {
14535        Self {
14536            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
14537            next: ptr::null_mut(),
14538            combined_image_sampler_density_map_descriptor_size: usize::default(),
14539        }
14540    }
14541}
14542
14543unsafe impl Send for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14544unsafe impl Sync for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14545
14546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
14547#[repr(C)]
14548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14549pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
14550    pub s_type: StructureType,
14551    pub next: *mut c_void,
14552    pub descriptor_buffer: Bool32,
14553    pub descriptor_buffer_capture_replay: Bool32,
14554    pub descriptor_buffer_image_layout_ignored: Bool32,
14555    pub descriptor_buffer_push_descriptors: Bool32,
14556}
14557
14558impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
14559    #[inline]
14560    fn default() -> Self {
14561        Self {
14562            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
14563            next: ptr::null_mut(),
14564            descriptor_buffer: Bool32::default(),
14565            descriptor_buffer_capture_replay: Bool32::default(),
14566            descriptor_buffer_image_layout_ignored: Bool32::default(),
14567            descriptor_buffer_push_descriptors: Bool32::default(),
14568        }
14569    }
14570}
14571
14572unsafe impl Send for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14573unsafe impl Sync for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14574
14575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
14576#[repr(C)]
14577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14578pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
14579    pub s_type: StructureType,
14580    pub next: *mut c_void,
14581    pub combined_image_sampler_descriptor_single_array: Bool32,
14582    pub bufferless_push_descriptors: Bool32,
14583    pub allow_sampler_image_view_post_submit_creation: Bool32,
14584    pub descriptor_buffer_offset_alignment: DeviceSize,
14585    pub max_descriptor_buffer_bindings: u32,
14586    pub max_resource_descriptor_buffer_bindings: u32,
14587    pub max_sampler_descriptor_buffer_bindings: u32,
14588    pub max_embedded_immutable_sampler_bindings: u32,
14589    pub max_embedded_immutable_samplers: u32,
14590    pub buffer_capture_replay_descriptor_data_size: usize,
14591    pub image_capture_replay_descriptor_data_size: usize,
14592    pub image_view_capture_replay_descriptor_data_size: usize,
14593    pub sampler_capture_replay_descriptor_data_size: usize,
14594    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
14595    pub sampler_descriptor_size: usize,
14596    pub combined_image_sampler_descriptor_size: usize,
14597    pub sampled_image_descriptor_size: usize,
14598    pub storage_image_descriptor_size: usize,
14599    pub uniform_texel_buffer_descriptor_size: usize,
14600    pub robust_uniform_texel_buffer_descriptor_size: usize,
14601    pub storage_texel_buffer_descriptor_size: usize,
14602    pub robust_storage_texel_buffer_descriptor_size: usize,
14603    pub uniform_buffer_descriptor_size: usize,
14604    pub robust_uniform_buffer_descriptor_size: usize,
14605    pub storage_buffer_descriptor_size: usize,
14606    pub robust_storage_buffer_descriptor_size: usize,
14607    pub input_attachment_descriptor_size: usize,
14608    pub acceleration_structure_descriptor_size: usize,
14609    pub max_sampler_descriptor_buffer_range: DeviceSize,
14610    pub max_resource_descriptor_buffer_range: DeviceSize,
14611    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
14612    pub resource_descriptor_buffer_address_space_size: DeviceSize,
14613    pub descriptor_buffer_address_space_size: DeviceSize,
14614}
14615
14616impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
14617    #[inline]
14618    fn default() -> Self {
14619        Self {
14620            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
14621            next: ptr::null_mut(),
14622            combined_image_sampler_descriptor_single_array: Bool32::default(),
14623            bufferless_push_descriptors: Bool32::default(),
14624            allow_sampler_image_view_post_submit_creation: Bool32::default(),
14625            descriptor_buffer_offset_alignment: DeviceSize::default(),
14626            max_descriptor_buffer_bindings: u32::default(),
14627            max_resource_descriptor_buffer_bindings: u32::default(),
14628            max_sampler_descriptor_buffer_bindings: u32::default(),
14629            max_embedded_immutable_sampler_bindings: u32::default(),
14630            max_embedded_immutable_samplers: u32::default(),
14631            buffer_capture_replay_descriptor_data_size: usize::default(),
14632            image_capture_replay_descriptor_data_size: usize::default(),
14633            image_view_capture_replay_descriptor_data_size: usize::default(),
14634            sampler_capture_replay_descriptor_data_size: usize::default(),
14635            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
14636            sampler_descriptor_size: usize::default(),
14637            combined_image_sampler_descriptor_size: usize::default(),
14638            sampled_image_descriptor_size: usize::default(),
14639            storage_image_descriptor_size: usize::default(),
14640            uniform_texel_buffer_descriptor_size: usize::default(),
14641            robust_uniform_texel_buffer_descriptor_size: usize::default(),
14642            storage_texel_buffer_descriptor_size: usize::default(),
14643            robust_storage_texel_buffer_descriptor_size: usize::default(),
14644            uniform_buffer_descriptor_size: usize::default(),
14645            robust_uniform_buffer_descriptor_size: usize::default(),
14646            storage_buffer_descriptor_size: usize::default(),
14647            robust_storage_buffer_descriptor_size: usize::default(),
14648            input_attachment_descriptor_size: usize::default(),
14649            acceleration_structure_descriptor_size: usize::default(),
14650            max_sampler_descriptor_buffer_range: DeviceSize::default(),
14651            max_resource_descriptor_buffer_range: DeviceSize::default(),
14652            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
14653            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
14654            descriptor_buffer_address_space_size: DeviceSize::default(),
14655        }
14656    }
14657}
14658
14659unsafe impl Send for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14660unsafe impl Sync for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14661
14662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html>
14663#[repr(C)]
14664#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14665pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14666    pub s_type: StructureType,
14667    pub next: *mut c_void,
14668    pub descriptor_buffer_tensor_descriptors: Bool32,
14669}
14670
14671impl Default for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14672    #[inline]
14673    fn default() -> Self {
14674        Self {
14675            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM,
14676            next: ptr::null_mut(),
14677            descriptor_buffer_tensor_descriptors: Bool32::default(),
14678        }
14679    }
14680}
14681
14682unsafe impl Send for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14683unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14684
14685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html>
14686#[repr(C)]
14687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14688pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14689    pub s_type: StructureType,
14690    pub next: *mut c_void,
14691    pub tensor_capture_replay_descriptor_data_size: usize,
14692    pub tensor_view_capture_replay_descriptor_data_size: usize,
14693    pub tensor_descriptor_size: usize,
14694}
14695
14696impl Default for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14697    #[inline]
14698    fn default() -> Self {
14699        Self {
14700            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM,
14701            next: ptr::null_mut(),
14702            tensor_capture_replay_descriptor_data_size: usize::default(),
14703            tensor_view_capture_replay_descriptor_data_size: usize::default(),
14704            tensor_descriptor_size: usize::default(),
14705        }
14706    }
14707}
14708
14709unsafe impl Send for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14710unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14711
14712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
14713#[repr(C)]
14714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14715pub struct PhysicalDeviceDescriptorIndexingFeatures {
14716    pub s_type: StructureType,
14717    pub next: *mut c_void,
14718    pub shader_input_attachment_array_dynamic_indexing: Bool32,
14719    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
14720    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
14721    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
14722    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
14723    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
14724    pub shader_storage_image_array_non_uniform_indexing: Bool32,
14725    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
14726    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
14727    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
14728    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
14729    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
14730    pub descriptor_binding_storage_image_update_after_bind: Bool32,
14731    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
14732    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
14733    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
14734    pub descriptor_binding_update_unused_while_pending: Bool32,
14735    pub descriptor_binding_partially_bound: Bool32,
14736    pub descriptor_binding_variable_descriptor_count: Bool32,
14737    pub runtime_descriptor_array: Bool32,
14738}
14739
14740impl Default for PhysicalDeviceDescriptorIndexingFeatures {
14741    #[inline]
14742    fn default() -> Self {
14743        Self {
14744            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
14745            next: ptr::null_mut(),
14746            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
14747            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
14748            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
14749            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
14750            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
14751            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
14752            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
14753            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
14754            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14755            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14756            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
14757            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
14758            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
14759            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
14760            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
14761            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
14762            descriptor_binding_update_unused_while_pending: Bool32::default(),
14763            descriptor_binding_partially_bound: Bool32::default(),
14764            descriptor_binding_variable_descriptor_count: Bool32::default(),
14765            runtime_descriptor_array: Bool32::default(),
14766        }
14767    }
14768}
14769
14770unsafe impl Send for PhysicalDeviceDescriptorIndexingFeatures {}
14771unsafe impl Sync for PhysicalDeviceDescriptorIndexingFeatures {}
14772
14773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
14774#[repr(C)]
14775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14776pub struct PhysicalDeviceDescriptorIndexingProperties {
14777    pub s_type: StructureType,
14778    pub next: *mut c_void,
14779    pub max_update_after_bind_descriptors_in_all_pools: u32,
14780    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
14781    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
14782    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
14783    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
14784    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
14785    pub robust_buffer_access_update_after_bind: Bool32,
14786    pub quad_divergent_implicit_lod: Bool32,
14787    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
14788    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
14789    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
14790    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
14791    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
14792    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
14793    pub max_per_stage_update_after_bind_resources: u32,
14794    pub max_descriptor_set_update_after_bind_samplers: u32,
14795    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
14796    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
14797    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
14798    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
14799    pub max_descriptor_set_update_after_bind_sampled_images: u32,
14800    pub max_descriptor_set_update_after_bind_storage_images: u32,
14801    pub max_descriptor_set_update_after_bind_input_attachments: u32,
14802}
14803
14804impl Default for PhysicalDeviceDescriptorIndexingProperties {
14805    #[inline]
14806    fn default() -> Self {
14807        Self {
14808            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
14809            next: ptr::null_mut(),
14810            max_update_after_bind_descriptors_in_all_pools: u32::default(),
14811            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
14812            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
14813            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
14814            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
14815            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
14816            robust_buffer_access_update_after_bind: Bool32::default(),
14817            quad_divergent_implicit_lod: Bool32::default(),
14818            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
14819            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
14820            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
14821            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
14822            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
14823            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
14824            max_per_stage_update_after_bind_resources: u32::default(),
14825            max_descriptor_set_update_after_bind_samplers: u32::default(),
14826            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
14827            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
14828            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
14829            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
14830            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
14831            max_descriptor_set_update_after_bind_storage_images: u32::default(),
14832            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
14833        }
14834    }
14835}
14836
14837unsafe impl Send for PhysicalDeviceDescriptorIndexingProperties {}
14838unsafe impl Sync for PhysicalDeviceDescriptorIndexingProperties {}
14839
14840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
14841#[repr(C)]
14842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14843pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
14844    pub s_type: StructureType,
14845    pub next: *mut c_void,
14846    pub descriptor_pool_overallocation: Bool32,
14847}
14848
14849impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
14850    #[inline]
14851    fn default() -> Self {
14852        Self {
14853            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
14854            next: ptr::null_mut(),
14855            descriptor_pool_overallocation: Bool32::default(),
14856        }
14857    }
14858}
14859
14860unsafe impl Send for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
14861unsafe impl Sync for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
14862
14863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
14864#[repr(C)]
14865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14866pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
14867    pub s_type: StructureType,
14868    pub next: *mut c_void,
14869    pub descriptor_set_host_mapping: Bool32,
14870}
14871
14872impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
14873    #[inline]
14874    fn default() -> Self {
14875        Self {
14876            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
14877            next: ptr::null_mut(),
14878            descriptor_set_host_mapping: Bool32::default(),
14879        }
14880    }
14881}
14882
14883unsafe impl Send for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
14884unsafe impl Sync for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
14885
14886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
14887#[repr(C)]
14888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14889pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
14890    pub s_type: StructureType,
14891    pub next: *mut c_void,
14892    pub device_generated_compute: Bool32,
14893    pub device_generated_compute_pipelines: Bool32,
14894    pub device_generated_compute_capture_replay: Bool32,
14895}
14896
14897impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
14898    #[inline]
14899    fn default() -> Self {
14900        Self {
14901            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
14902            next: ptr::null_mut(),
14903            device_generated_compute: Bool32::default(),
14904            device_generated_compute_pipelines: Bool32::default(),
14905            device_generated_compute_capture_replay: Bool32::default(),
14906        }
14907    }
14908}
14909
14910unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
14911unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
14912
14913/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
14914#[repr(C)]
14915#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14916pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
14917    pub s_type: StructureType,
14918    pub next: *mut c_void,
14919    pub device_generated_commands: Bool32,
14920    pub dynamic_generated_pipeline_layout: Bool32,
14921}
14922
14923impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
14924    #[inline]
14925    fn default() -> Self {
14926        Self {
14927            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
14928            next: ptr::null_mut(),
14929            device_generated_commands: Bool32::default(),
14930            dynamic_generated_pipeline_layout: Bool32::default(),
14931        }
14932    }
14933}
14934
14935unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
14936unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
14937
14938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
14939#[repr(C)]
14940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14941pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
14942    pub s_type: StructureType,
14943    pub next: *mut c_void,
14944    pub device_generated_commands: Bool32,
14945}
14946
14947impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
14948    #[inline]
14949    fn default() -> Self {
14950        Self {
14951            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
14952            next: ptr::null_mut(),
14953            device_generated_commands: Bool32::default(),
14954        }
14955    }
14956}
14957
14958unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
14959unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
14960
14961/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
14962#[repr(C)]
14963#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14964pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
14965    pub s_type: StructureType,
14966    pub next: *mut c_void,
14967    pub max_indirect_pipeline_count: u32,
14968    pub max_indirect_shader_object_count: u32,
14969    pub max_indirect_sequence_count: u32,
14970    pub max_indirect_commands_token_count: u32,
14971    pub max_indirect_commands_token_offset: u32,
14972    pub max_indirect_commands_indirect_stride: u32,
14973    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
14974    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
14975    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
14976    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
14977    pub device_generated_commands_transform_feedback: Bool32,
14978    pub device_generated_commands_multi_draw_indirect_count: Bool32,
14979}
14980
14981impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
14982    #[inline]
14983    fn default() -> Self {
14984        Self {
14985            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
14986            next: ptr::null_mut(),
14987            max_indirect_pipeline_count: u32::default(),
14988            max_indirect_shader_object_count: u32::default(),
14989            max_indirect_sequence_count: u32::default(),
14990            max_indirect_commands_token_count: u32::default(),
14991            max_indirect_commands_token_offset: u32::default(),
14992            max_indirect_commands_indirect_stride: u32::default(),
14993            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
14994            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
14995            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
14996            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
14997            device_generated_commands_transform_feedback: Bool32::default(),
14998            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
14999        }
15000    }
15001}
15002
15003unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
15004unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
15005
15006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
15007#[repr(C)]
15008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15009pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15010    pub s_type: StructureType,
15011    pub next: *mut c_void,
15012    pub max_graphics_shader_group_count: u32,
15013    pub max_indirect_sequence_count: u32,
15014    pub max_indirect_commands_token_count: u32,
15015    pub max_indirect_commands_stream_count: u32,
15016    pub max_indirect_commands_token_offset: u32,
15017    pub max_indirect_commands_stream_stride: u32,
15018    pub min_sequences_count_buffer_offset_alignment: u32,
15019    pub min_sequences_index_buffer_offset_alignment: u32,
15020    pub min_indirect_commands_buffer_offset_alignment: u32,
15021}
15022
15023impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15024    #[inline]
15025    fn default() -> Self {
15026        Self {
15027            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
15028            next: ptr::null_mut(),
15029            max_graphics_shader_group_count: u32::default(),
15030            max_indirect_sequence_count: u32::default(),
15031            max_indirect_commands_token_count: u32::default(),
15032            max_indirect_commands_stream_count: u32::default(),
15033            max_indirect_commands_token_offset: u32::default(),
15034            max_indirect_commands_stream_stride: u32::default(),
15035            min_sequences_count_buffer_offset_alignment: u32::default(),
15036            min_sequences_index_buffer_offset_alignment: u32::default(),
15037            min_indirect_commands_buffer_offset_alignment: u32::default(),
15038        }
15039    }
15040}
15041
15042unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
15043unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
15044
15045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
15046#[repr(C)]
15047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15048pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15049    pub s_type: StructureType,
15050    pub next: *mut c_void,
15051    pub device_memory_report: Bool32,
15052}
15053
15054impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15055    #[inline]
15056    fn default() -> Self {
15057        Self {
15058            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
15059            next: ptr::null_mut(),
15060            device_memory_report: Bool32::default(),
15061        }
15062    }
15063}
15064
15065unsafe impl Send for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15066unsafe impl Sync for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15067
15068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
15069#[repr(C)]
15070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15071pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
15072    pub s_type: StructureType,
15073    pub next: *mut c_void,
15074    pub diagnostics_config: Bool32,
15075}
15076
15077impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
15078    #[inline]
15079    fn default() -> Self {
15080        Self {
15081            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
15082            next: ptr::null_mut(),
15083            diagnostics_config: Bool32::default(),
15084        }
15085    }
15086}
15087
15088unsafe impl Send for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15089unsafe impl Sync for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15090
15091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
15092#[repr(C)]
15093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15094pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
15095    pub s_type: StructureType,
15096    pub next: *mut c_void,
15097    pub max_discard_rectangles: u32,
15098}
15099
15100impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
15101    #[inline]
15102    fn default() -> Self {
15103        Self {
15104            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
15105            next: ptr::null_mut(),
15106            max_discard_rectangles: u32::default(),
15107        }
15108    }
15109}
15110
15111unsafe impl Send for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15112unsafe impl Sync for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15113
15114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
15115#[repr(C)]
15116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15117pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
15118    pub s_type: StructureType,
15119    pub next: *mut c_void,
15120    pub displacement_micromap: Bool32,
15121}
15122
15123impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
15124    #[inline]
15125    fn default() -> Self {
15126        Self {
15127            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
15128            next: ptr::null_mut(),
15129            displacement_micromap: Bool32::default(),
15130        }
15131    }
15132}
15133
15134unsafe impl Send for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15135unsafe impl Sync for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15136
15137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
15138#[repr(C)]
15139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15140pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
15141    pub s_type: StructureType,
15142    pub next: *mut c_void,
15143    pub max_displacement_micromap_subdivision_level: u32,
15144}
15145
15146impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
15147    #[inline]
15148    fn default() -> Self {
15149        Self {
15150            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
15151            next: ptr::null_mut(),
15152            max_displacement_micromap_subdivision_level: u32::default(),
15153        }
15154    }
15155}
15156
15157unsafe impl Send for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15158unsafe impl Sync for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15159
15160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
15161#[repr(C)]
15162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15163pub struct PhysicalDeviceDriverProperties {
15164    pub s_type: StructureType,
15165    pub next: *mut c_void,
15166    pub driver_id: DriverId,
15167    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
15168    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
15169    pub conformance_version: ConformanceVersion,
15170}
15171
15172impl Default for PhysicalDeviceDriverProperties {
15173    #[inline]
15174    fn default() -> Self {
15175        Self {
15176            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
15177            next: ptr::null_mut(),
15178            driver_id: DriverId::default(),
15179            driver_name: StringArray::default(),
15180            driver_info: StringArray::default(),
15181            conformance_version: ConformanceVersion::default(),
15182        }
15183    }
15184}
15185
15186unsafe impl Send for PhysicalDeviceDriverProperties {}
15187unsafe impl Sync for PhysicalDeviceDriverProperties {}
15188
15189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
15190#[repr(C)]
15191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15192pub struct PhysicalDeviceDrmPropertiesEXT {
15193    pub s_type: StructureType,
15194    pub next: *mut c_void,
15195    pub has_primary: Bool32,
15196    pub has_render: Bool32,
15197    pub primary_major: i64,
15198    pub primary_minor: i64,
15199    pub render_major: i64,
15200    pub render_minor: i64,
15201}
15202
15203impl Default for PhysicalDeviceDrmPropertiesEXT {
15204    #[inline]
15205    fn default() -> Self {
15206        Self {
15207            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
15208            next: ptr::null_mut(),
15209            has_primary: Bool32::default(),
15210            has_render: Bool32::default(),
15211            primary_major: i64::default(),
15212            primary_minor: i64::default(),
15213            render_major: i64::default(),
15214            render_minor: i64::default(),
15215        }
15216    }
15217}
15218
15219unsafe impl Send for PhysicalDeviceDrmPropertiesEXT {}
15220unsafe impl Sync for PhysicalDeviceDrmPropertiesEXT {}
15221
15222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
15223#[repr(C)]
15224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15225pub struct PhysicalDeviceDynamicRenderingFeatures {
15226    pub s_type: StructureType,
15227    pub next: *mut c_void,
15228    pub dynamic_rendering: Bool32,
15229}
15230
15231impl Default for PhysicalDeviceDynamicRenderingFeatures {
15232    #[inline]
15233    fn default() -> Self {
15234        Self {
15235            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
15236            next: ptr::null_mut(),
15237            dynamic_rendering: Bool32::default(),
15238        }
15239    }
15240}
15241
15242unsafe impl Send for PhysicalDeviceDynamicRenderingFeatures {}
15243unsafe impl Sync for PhysicalDeviceDynamicRenderingFeatures {}
15244
15245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
15246#[repr(C)]
15247#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15248pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
15249    pub s_type: StructureType,
15250    pub next: *mut c_void,
15251    pub dynamic_rendering_local_read: Bool32,
15252}
15253
15254impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
15255    #[inline]
15256    fn default() -> Self {
15257        Self {
15258            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
15259            next: ptr::null_mut(),
15260            dynamic_rendering_local_read: Bool32::default(),
15261        }
15262    }
15263}
15264
15265unsafe impl Send for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15266unsafe impl Sync for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15267
15268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
15269#[repr(C)]
15270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15271pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15272    pub s_type: StructureType,
15273    pub next: *mut c_void,
15274    pub dynamic_rendering_unused_attachments: Bool32,
15275}
15276
15277impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15278    #[inline]
15279    fn default() -> Self {
15280        Self {
15281            s_type:
15282                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
15283            next: ptr::null_mut(),
15284            dynamic_rendering_unused_attachments: Bool32::default(),
15285        }
15286    }
15287}
15288
15289unsafe impl Send for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
15290unsafe impl Sync for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
15291
15292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
15293#[repr(C)]
15294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15295pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
15296    pub s_type: StructureType,
15297    pub next: *mut c_void,
15298    pub exclusive_scissor: Bool32,
15299}
15300
15301impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
15302    #[inline]
15303    fn default() -> Self {
15304        Self {
15305            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
15306            next: ptr::null_mut(),
15307            exclusive_scissor: Bool32::default(),
15308        }
15309    }
15310}
15311
15312unsafe impl Send for PhysicalDeviceExclusiveScissorFeaturesNV {}
15313unsafe impl Sync for PhysicalDeviceExclusiveScissorFeaturesNV {}
15314
15315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
15316#[repr(C)]
15317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15318pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15319    pub s_type: StructureType,
15320    pub next: *mut c_void,
15321    pub extended_dynamic_state2: Bool32,
15322    pub extended_dynamic_state2_logic_op: Bool32,
15323    pub extended_dynamic_state2_patch_control_points: Bool32,
15324}
15325
15326impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15327    #[inline]
15328    fn default() -> Self {
15329        Self {
15330            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
15331            next: ptr::null_mut(),
15332            extended_dynamic_state2: Bool32::default(),
15333            extended_dynamic_state2_logic_op: Bool32::default(),
15334            extended_dynamic_state2_patch_control_points: Bool32::default(),
15335        }
15336    }
15337}
15338
15339unsafe impl Send for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15340unsafe impl Sync for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15341
15342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
15343#[repr(C)]
15344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15345pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15346    pub s_type: StructureType,
15347    pub next: *mut c_void,
15348    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
15349    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
15350    pub extended_dynamic_state3_polygon_mode: Bool32,
15351    pub extended_dynamic_state3_rasterization_samples: Bool32,
15352    pub extended_dynamic_state3_sample_mask: Bool32,
15353    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
15354    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
15355    pub extended_dynamic_state3_logic_op_enable: Bool32,
15356    pub extended_dynamic_state3_color_blend_enable: Bool32,
15357    pub extended_dynamic_state3_color_blend_equation: Bool32,
15358    pub extended_dynamic_state3_color_write_mask: Bool32,
15359    pub extended_dynamic_state3_rasterization_stream: Bool32,
15360    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
15361    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
15362    pub extended_dynamic_state_3depth_clip_enable: Bool32,
15363    pub extended_dynamic_state3_sample_locations_enable: Bool32,
15364    pub extended_dynamic_state3_color_blend_advanced: Bool32,
15365    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
15366    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
15367    pub extended_dynamic_state3_line_stipple_enable: Bool32,
15368    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
15369    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
15370    pub extended_dynamic_state3_viewport_swizzle: Bool32,
15371    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
15372    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
15373    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
15374    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
15375    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
15376    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
15377    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
15378    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
15379}
15380
15381impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15382    #[inline]
15383    fn default() -> Self {
15384        Self {
15385            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
15386            next: ptr::null_mut(),
15387            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
15388            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
15389            extended_dynamic_state3_polygon_mode: Bool32::default(),
15390            extended_dynamic_state3_rasterization_samples: Bool32::default(),
15391            extended_dynamic_state3_sample_mask: Bool32::default(),
15392            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
15393            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
15394            extended_dynamic_state3_logic_op_enable: Bool32::default(),
15395            extended_dynamic_state3_color_blend_enable: Bool32::default(),
15396            extended_dynamic_state3_color_blend_equation: Bool32::default(),
15397            extended_dynamic_state3_color_write_mask: Bool32::default(),
15398            extended_dynamic_state3_rasterization_stream: Bool32::default(),
15399            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
15400            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
15401            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
15402            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
15403            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
15404            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
15405            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
15406            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
15407            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
15408            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
15409            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
15410            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
15411            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
15412            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
15413            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
15414            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
15415            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
15416            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
15417            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
15418        }
15419    }
15420}
15421
15422unsafe impl Send for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15423unsafe impl Sync for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15424
15425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
15426#[repr(C)]
15427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15428pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15429    pub s_type: StructureType,
15430    pub next: *mut c_void,
15431    pub dynamic_primitive_topology_unrestricted: Bool32,
15432}
15433
15434impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15435    #[inline]
15436    fn default() -> Self {
15437        Self {
15438            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
15439            next: ptr::null_mut(),
15440            dynamic_primitive_topology_unrestricted: Bool32::default(),
15441        }
15442    }
15443}
15444
15445unsafe impl Send for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15446unsafe impl Sync for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15447
15448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
15449#[repr(C)]
15450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15451pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15452    pub s_type: StructureType,
15453    pub next: *mut c_void,
15454    pub extended_dynamic_state: Bool32,
15455}
15456
15457impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15458    #[inline]
15459    fn default() -> Self {
15460        Self {
15461            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
15462            next: ptr::null_mut(),
15463            extended_dynamic_state: Bool32::default(),
15464        }
15465    }
15466}
15467
15468unsafe impl Send for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15469unsafe impl Sync for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15470
15471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
15472#[repr(C)]
15473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15474pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15475    pub s_type: StructureType,
15476    pub next: *mut c_void,
15477    pub extended_sparse_address_space: Bool32,
15478}
15479
15480impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15481    #[inline]
15482    fn default() -> Self {
15483        Self {
15484            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
15485            next: ptr::null_mut(),
15486            extended_sparse_address_space: Bool32::default(),
15487        }
15488    }
15489}
15490
15491unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15492unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15493
15494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
15495#[repr(C)]
15496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15497pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15498    pub s_type: StructureType,
15499    pub next: *mut c_void,
15500    pub extended_sparse_address_space_size: DeviceSize,
15501    pub extended_sparse_image_usage_flags: ImageUsageFlags,
15502    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
15503}
15504
15505impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15506    #[inline]
15507    fn default() -> Self {
15508        Self {
15509            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
15510            next: ptr::null_mut(),
15511            extended_sparse_address_space_size: DeviceSize::default(),
15512            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
15513            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
15514        }
15515    }
15516}
15517
15518unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15519unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15520
15521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
15522#[repr(C)]
15523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15524pub struct PhysicalDeviceExternalBufferInfo {
15525    pub s_type: StructureType,
15526    pub next: *const c_void,
15527    pub flags: BufferCreateFlags,
15528    pub usage: BufferUsageFlags,
15529    pub handle_type: ExternalMemoryHandleTypeFlags,
15530}
15531
15532impl Default for PhysicalDeviceExternalBufferInfo {
15533    #[inline]
15534    fn default() -> Self {
15535        Self {
15536            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
15537            next: ptr::null(),
15538            flags: BufferCreateFlags::default(),
15539            usage: BufferUsageFlags::default(),
15540            handle_type: ExternalMemoryHandleTypeFlags::default(),
15541        }
15542    }
15543}
15544
15545unsafe impl Send for PhysicalDeviceExternalBufferInfo {}
15546unsafe impl Sync for PhysicalDeviceExternalBufferInfo {}
15547
15548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html>
15549#[repr(C)]
15550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15551pub struct PhysicalDeviceExternalComputeQueuePropertiesNV {
15552    pub s_type: StructureType,
15553    pub next: *mut c_void,
15554    pub external_data_size: u32,
15555    pub max_external_queues: u32,
15556}
15557
15558impl Default for PhysicalDeviceExternalComputeQueuePropertiesNV {
15559    #[inline]
15560    fn default() -> Self {
15561        Self {
15562            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV,
15563            next: ptr::null_mut(),
15564            external_data_size: u32::default(),
15565            max_external_queues: u32::default(),
15566        }
15567    }
15568}
15569
15570unsafe impl Send for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15571unsafe impl Sync for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15572
15573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
15574#[repr(C)]
15575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15576pub struct PhysicalDeviceExternalFenceInfo {
15577    pub s_type: StructureType,
15578    pub next: *const c_void,
15579    pub handle_type: ExternalFenceHandleTypeFlags,
15580}
15581
15582impl Default for PhysicalDeviceExternalFenceInfo {
15583    #[inline]
15584    fn default() -> Self {
15585        Self {
15586            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
15587            next: ptr::null(),
15588            handle_type: ExternalFenceHandleTypeFlags::default(),
15589        }
15590    }
15591}
15592
15593unsafe impl Send for PhysicalDeviceExternalFenceInfo {}
15594unsafe impl Sync for PhysicalDeviceExternalFenceInfo {}
15595
15596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
15597#[repr(C)]
15598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15599pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15600    pub s_type: StructureType,
15601    pub next: *mut c_void,
15602    pub external_format_resolve: Bool32,
15603}
15604
15605impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15606    #[inline]
15607    fn default() -> Self {
15608        Self {
15609            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
15610            next: ptr::null_mut(),
15611            external_format_resolve: Bool32::default(),
15612        }
15613    }
15614}
15615
15616unsafe impl Send for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15617unsafe impl Sync for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15618
15619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
15620#[repr(C)]
15621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15622pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15623    pub s_type: StructureType,
15624    pub next: *mut c_void,
15625    pub null_color_attachment_with_external_format_resolve: Bool32,
15626    pub external_format_resolve_chroma_offset_x: ChromaLocation,
15627    pub external_format_resolve_chroma_offset_y: ChromaLocation,
15628}
15629
15630impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15631    #[inline]
15632    fn default() -> Self {
15633        Self {
15634            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
15635            next: ptr::null_mut(),
15636            null_color_attachment_with_external_format_resolve: Bool32::default(),
15637            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
15638            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
15639        }
15640    }
15641}
15642
15643unsafe impl Send for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15644unsafe impl Sync for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15645
15646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
15647#[repr(C)]
15648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15649pub struct PhysicalDeviceExternalImageFormatInfo {
15650    pub s_type: StructureType,
15651    pub next: *const c_void,
15652    pub handle_type: ExternalMemoryHandleTypeFlags,
15653}
15654
15655impl Default for PhysicalDeviceExternalImageFormatInfo {
15656    #[inline]
15657    fn default() -> Self {
15658        Self {
15659            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
15660            next: ptr::null(),
15661            handle_type: ExternalMemoryHandleTypeFlags::default(),
15662        }
15663    }
15664}
15665
15666unsafe impl Send for PhysicalDeviceExternalImageFormatInfo {}
15667unsafe impl Sync for PhysicalDeviceExternalImageFormatInfo {}
15668
15669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
15670#[repr(C)]
15671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15672pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
15673    pub s_type: StructureType,
15674    pub next: *mut c_void,
15675    pub min_imported_host_pointer_alignment: DeviceSize,
15676}
15677
15678impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
15679    #[inline]
15680    fn default() -> Self {
15681        Self {
15682            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
15683            next: ptr::null_mut(),
15684            min_imported_host_pointer_alignment: DeviceSize::default(),
15685        }
15686    }
15687}
15688
15689unsafe impl Send for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15690unsafe impl Sync for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15691
15692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
15693#[repr(C)]
15694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15695pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15696    pub s_type: StructureType,
15697    pub next: *mut c_void,
15698    pub external_memory_rdma: Bool32,
15699}
15700
15701impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15702    #[inline]
15703    fn default() -> Self {
15704        Self {
15705            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
15706            next: ptr::null_mut(),
15707            external_memory_rdma: Bool32::default(),
15708        }
15709    }
15710}
15711
15712unsafe impl Send for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15713unsafe impl Sync for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15714
15715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
15716#[repr(C)]
15717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15718pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
15719    pub s_type: StructureType,
15720    pub next: *mut c_void,
15721    pub sci_buf_import: Bool32,
15722    pub sci_buf_export: Bool32,
15723}
15724
15725impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
15726    #[inline]
15727    fn default() -> Self {
15728        Self {
15729            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
15730            next: ptr::null_mut(),
15731            sci_buf_import: Bool32::default(),
15732            sci_buf_export: Bool32::default(),
15733        }
15734    }
15735}
15736
15737unsafe impl Send for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15738unsafe impl Sync for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15739
15740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
15741#[repr(C)]
15742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15743pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15744    pub s_type: StructureType,
15745    pub next: *mut c_void,
15746    pub screen_buffer_import: Bool32,
15747}
15748
15749impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15750    #[inline]
15751    fn default() -> Self {
15752        Self {
15753            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
15754            next: ptr::null_mut(),
15755            screen_buffer_import: Bool32::default(),
15756        }
15757    }
15758}
15759
15760unsafe impl Send for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15761unsafe impl Sync for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15762
15763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
15764#[repr(C)]
15765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15766pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
15767    pub s_type: StructureType,
15768    pub next: *mut c_void,
15769    pub sci_sync_fence: Bool32,
15770    pub sci_sync_semaphore2: Bool32,
15771    pub sci_sync_import: Bool32,
15772    pub sci_sync_export: Bool32,
15773}
15774
15775impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
15776    #[inline]
15777    fn default() -> Self {
15778        Self {
15779            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
15780            next: ptr::null_mut(),
15781            sci_sync_fence: Bool32::default(),
15782            sci_sync_semaphore2: Bool32::default(),
15783            sci_sync_import: Bool32::default(),
15784            sci_sync_export: Bool32::default(),
15785        }
15786    }
15787}
15788
15789unsafe impl Send for PhysicalDeviceExternalSciSync2FeaturesNV {}
15790unsafe impl Sync for PhysicalDeviceExternalSciSync2FeaturesNV {}
15791
15792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
15793#[repr(C)]
15794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15795pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
15796    pub s_type: StructureType,
15797    pub next: *mut c_void,
15798    pub sci_sync_fence: Bool32,
15799    pub sci_sync_semaphore: Bool32,
15800    pub sci_sync_import: Bool32,
15801    pub sci_sync_export: Bool32,
15802}
15803
15804impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
15805    #[inline]
15806    fn default() -> Self {
15807        Self {
15808            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
15809            next: ptr::null_mut(),
15810            sci_sync_fence: Bool32::default(),
15811            sci_sync_semaphore: Bool32::default(),
15812            sci_sync_import: Bool32::default(),
15813            sci_sync_export: Bool32::default(),
15814        }
15815    }
15816}
15817
15818unsafe impl Send for PhysicalDeviceExternalSciSyncFeaturesNV {}
15819unsafe impl Sync for PhysicalDeviceExternalSciSyncFeaturesNV {}
15820
15821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
15822#[repr(C)]
15823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15824pub struct PhysicalDeviceExternalSemaphoreInfo {
15825    pub s_type: StructureType,
15826    pub next: *const c_void,
15827    pub handle_type: ExternalSemaphoreHandleTypeFlags,
15828}
15829
15830impl Default for PhysicalDeviceExternalSemaphoreInfo {
15831    #[inline]
15832    fn default() -> Self {
15833        Self {
15834            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
15835            next: ptr::null(),
15836            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
15837        }
15838    }
15839}
15840
15841unsafe impl Send for PhysicalDeviceExternalSemaphoreInfo {}
15842unsafe impl Sync for PhysicalDeviceExternalSemaphoreInfo {}
15843
15844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html>
15845#[repr(C)]
15846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15847pub struct PhysicalDeviceExternalTensorInfoARM {
15848    pub s_type: StructureType,
15849    pub next: *const c_void,
15850    pub flags: TensorCreateFlagsARM,
15851    pub description: *const TensorDescriptionARM,
15852    pub handle_type: ExternalMemoryHandleTypeFlags,
15853}
15854
15855impl Default for PhysicalDeviceExternalTensorInfoARM {
15856    #[inline]
15857    fn default() -> Self {
15858        Self {
15859            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM,
15860            next: ptr::null(),
15861            flags: TensorCreateFlagsARM::default(),
15862            description: ptr::null(),
15863            handle_type: ExternalMemoryHandleTypeFlags::default(),
15864        }
15865    }
15866}
15867
15868unsafe impl Send for PhysicalDeviceExternalTensorInfoARM {}
15869unsafe impl Sync for PhysicalDeviceExternalTensorInfoARM {}
15870
15871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
15872#[repr(C)]
15873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15874pub struct PhysicalDeviceFaultFeaturesEXT {
15875    pub s_type: StructureType,
15876    pub next: *mut c_void,
15877    pub device_fault: Bool32,
15878    pub device_fault_vendor_binary: Bool32,
15879}
15880
15881impl Default for PhysicalDeviceFaultFeaturesEXT {
15882    #[inline]
15883    fn default() -> Self {
15884        Self {
15885            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
15886            next: ptr::null_mut(),
15887            device_fault: Bool32::default(),
15888            device_fault_vendor_binary: Bool32::default(),
15889        }
15890    }
15891}
15892
15893unsafe impl Send for PhysicalDeviceFaultFeaturesEXT {}
15894unsafe impl Sync for PhysicalDeviceFaultFeaturesEXT {}
15895
15896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
15897#[repr(C)]
15898#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
15899pub struct PhysicalDeviceFeatures {
15900    pub robust_buffer_access: Bool32,
15901    pub full_draw_index_uint32: Bool32,
15902    pub image_cube_array: Bool32,
15903    pub independent_blend: Bool32,
15904    pub geometry_shader: Bool32,
15905    pub tessellation_shader: Bool32,
15906    pub sample_rate_shading: Bool32,
15907    pub dual_src_blend: Bool32,
15908    pub logic_op: Bool32,
15909    pub multi_draw_indirect: Bool32,
15910    pub draw_indirect_first_instance: Bool32,
15911    pub depth_clamp: Bool32,
15912    pub depth_bias_clamp: Bool32,
15913    pub fill_mode_non_solid: Bool32,
15914    pub depth_bounds: Bool32,
15915    pub wide_lines: Bool32,
15916    pub large_points: Bool32,
15917    pub alpha_to_one: Bool32,
15918    pub multi_viewport: Bool32,
15919    pub sampler_anisotropy: Bool32,
15920    pub texture_compression_etc2: Bool32,
15921    pub texture_compression_astc_ldr: Bool32,
15922    pub texture_compression_bc: Bool32,
15923    pub occlusion_query_precise: Bool32,
15924    pub pipeline_statistics_query: Bool32,
15925    pub vertex_pipeline_stores_and_atomics: Bool32,
15926    pub fragment_stores_and_atomics: Bool32,
15927    pub shader_tessellation_and_geometry_point_size: Bool32,
15928    pub shader_image_gather_extended: Bool32,
15929    pub shader_storage_image_extended_formats: Bool32,
15930    pub shader_storage_image_multisample: Bool32,
15931    pub shader_storage_image_read_without_format: Bool32,
15932    pub shader_storage_image_write_without_format: Bool32,
15933    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
15934    pub shader_sampled_image_array_dynamic_indexing: Bool32,
15935    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
15936    pub shader_storage_image_array_dynamic_indexing: Bool32,
15937    pub shader_clip_distance: Bool32,
15938    pub shader_cull_distance: Bool32,
15939    pub shader_float64: Bool32,
15940    pub shader_int64: Bool32,
15941    pub shader_int16: Bool32,
15942    pub shader_resource_residency: Bool32,
15943    pub shader_resource_min_lod: Bool32,
15944    pub sparse_binding: Bool32,
15945    pub sparse_residency_buffer: Bool32,
15946    pub sparse_residency_image_2d: Bool32,
15947    pub sparse_residency_image_3d: Bool32,
15948    pub sparse_residency2_samples: Bool32,
15949    pub sparse_residency4_samples: Bool32,
15950    pub sparse_residency8_samples: Bool32,
15951    pub sparse_residency16_samples: Bool32,
15952    pub sparse_residency_aliased: Bool32,
15953    pub variable_multisample_rate: Bool32,
15954    pub inherited_queries: Bool32,
15955}
15956
15957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
15958#[repr(C)]
15959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15960pub struct PhysicalDeviceFeatures2 {
15961    pub s_type: StructureType,
15962    pub next: *mut c_void,
15963    pub features: PhysicalDeviceFeatures,
15964}
15965
15966impl Default for PhysicalDeviceFeatures2 {
15967    #[inline]
15968    fn default() -> Self {
15969        Self {
15970            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
15971            next: ptr::null_mut(),
15972            features: PhysicalDeviceFeatures::default(),
15973        }
15974    }
15975}
15976
15977unsafe impl Send for PhysicalDeviceFeatures2 {}
15978unsafe impl Sync for PhysicalDeviceFeatures2 {}
15979
15980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
15981#[repr(C)]
15982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15983pub struct PhysicalDeviceFloatControlsProperties {
15984    pub s_type: StructureType,
15985    pub next: *mut c_void,
15986    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
15987    pub rounding_mode_independence: ShaderFloatControlsIndependence,
15988    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
15989    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
15990    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
15991    pub shader_denorm_preserve_float16: Bool32,
15992    pub shader_denorm_preserve_float32: Bool32,
15993    pub shader_denorm_preserve_float64: Bool32,
15994    pub shader_denorm_flush_to_zero_float16: Bool32,
15995    pub shader_denorm_flush_to_zero_float32: Bool32,
15996    pub shader_denorm_flush_to_zero_float64: Bool32,
15997    pub shader_rounding_mode_rte_float16: Bool32,
15998    pub shader_rounding_mode_rte_float32: Bool32,
15999    pub shader_rounding_mode_rte_float64: Bool32,
16000    pub shader_rounding_mode_rtz_float16: Bool32,
16001    pub shader_rounding_mode_rtz_float32: Bool32,
16002    pub shader_rounding_mode_rtz_float64: Bool32,
16003}
16004
16005impl Default for PhysicalDeviceFloatControlsProperties {
16006    #[inline]
16007    fn default() -> Self {
16008        Self {
16009            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
16010            next: ptr::null_mut(),
16011            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
16012            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
16013            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
16014            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
16015            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
16016            shader_denorm_preserve_float16: Bool32::default(),
16017            shader_denorm_preserve_float32: Bool32::default(),
16018            shader_denorm_preserve_float64: Bool32::default(),
16019            shader_denorm_flush_to_zero_float16: Bool32::default(),
16020            shader_denorm_flush_to_zero_float32: Bool32::default(),
16021            shader_denorm_flush_to_zero_float64: Bool32::default(),
16022            shader_rounding_mode_rte_float16: Bool32::default(),
16023            shader_rounding_mode_rte_float32: Bool32::default(),
16024            shader_rounding_mode_rte_float64: Bool32::default(),
16025            shader_rounding_mode_rtz_float16: Bool32::default(),
16026            shader_rounding_mode_rtz_float32: Bool32::default(),
16027            shader_rounding_mode_rtz_float64: Bool32::default(),
16028        }
16029    }
16030}
16031
16032unsafe impl Send for PhysicalDeviceFloatControlsProperties {}
16033unsafe impl Sync for PhysicalDeviceFloatControlsProperties {}
16034
16035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html>
16036#[repr(C)]
16037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16038pub struct PhysicalDeviceFormatPackFeaturesARM {
16039    pub s_type: StructureType,
16040    pub next: *mut c_void,
16041    pub format_pack: Bool32,
16042}
16043
16044impl Default for PhysicalDeviceFormatPackFeaturesARM {
16045    #[inline]
16046    fn default() -> Self {
16047        Self {
16048            s_type: StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM,
16049            next: ptr::null_mut(),
16050            format_pack: Bool32::default(),
16051        }
16052    }
16053}
16054
16055unsafe impl Send for PhysicalDeviceFormatPackFeaturesARM {}
16056unsafe impl Sync for PhysicalDeviceFormatPackFeaturesARM {}
16057
16058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
16059#[repr(C)]
16060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16061pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16062    pub s_type: StructureType,
16063    pub next: *mut c_void,
16064    pub fragment_density_map_deferred: Bool32,
16065}
16066
16067impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16068    #[inline]
16069    fn default() -> Self {
16070        Self {
16071            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
16072            next: ptr::null_mut(),
16073            fragment_density_map_deferred: Bool32::default(),
16074        }
16075    }
16076}
16077
16078unsafe impl Send for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16079unsafe impl Sync for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16080
16081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
16082#[repr(C)]
16083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16084pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16085    pub s_type: StructureType,
16086    pub next: *mut c_void,
16087    pub subsampled_loads: Bool32,
16088    pub subsampled_coarse_reconstruction_early_access: Bool32,
16089    pub max_subsampled_array_layers: u32,
16090    pub max_descriptor_set_subsampled_samplers: u32,
16091}
16092
16093impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16094    #[inline]
16095    fn default() -> Self {
16096        Self {
16097            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
16098            next: ptr::null_mut(),
16099            subsampled_loads: Bool32::default(),
16100            subsampled_coarse_reconstruction_early_access: Bool32::default(),
16101            max_subsampled_array_layers: u32::default(),
16102            max_descriptor_set_subsampled_samplers: u32::default(),
16103        }
16104    }
16105}
16106
16107unsafe impl Send for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16108unsafe impl Sync for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16109
16110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
16111#[repr(C)]
16112#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16113pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
16114    pub s_type: StructureType,
16115    pub next: *mut c_void,
16116    pub fragment_density_map: Bool32,
16117    pub fragment_density_map_dynamic: Bool32,
16118    pub fragment_density_map_non_subsampled_images: Bool32,
16119}
16120
16121impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
16122    #[inline]
16123    fn default() -> Self {
16124        Self {
16125            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
16126            next: ptr::null_mut(),
16127            fragment_density_map: Bool32::default(),
16128            fragment_density_map_dynamic: Bool32::default(),
16129            fragment_density_map_non_subsampled_images: Bool32::default(),
16130        }
16131    }
16132}
16133
16134unsafe impl Send for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16135unsafe impl Sync for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16136
16137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html>
16138#[repr(C)]
16139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16140pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16141    pub s_type: StructureType,
16142    pub next: *mut c_void,
16143    pub fragment_density_map_layered: Bool32,
16144}
16145
16146impl Default for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16147    #[inline]
16148    fn default() -> Self {
16149        Self {
16150            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE,
16151            next: ptr::null_mut(),
16152            fragment_density_map_layered: Bool32::default(),
16153        }
16154    }
16155}
16156
16157unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16158unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16159
16160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html>
16161#[repr(C)]
16162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16163pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16164    pub s_type: StructureType,
16165    pub next: *mut c_void,
16166    pub max_fragment_density_map_layers: u32,
16167}
16168
16169impl Default for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16170    #[inline]
16171    fn default() -> Self {
16172        Self {
16173            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE,
16174            next: ptr::null_mut(),
16175            max_fragment_density_map_layers: u32::default(),
16176        }
16177    }
16178}
16179
16180unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16181unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16182
16183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html>
16184#[repr(C)]
16185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16186pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16187    pub s_type: StructureType,
16188    pub next: *mut c_void,
16189    pub fragment_density_map_offset: Bool32,
16190}
16191
16192impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16193    #[inline]
16194    fn default() -> Self {
16195        Self {
16196            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
16197            next: ptr::null_mut(),
16198            fragment_density_map_offset: Bool32::default(),
16199        }
16200    }
16201}
16202
16203unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16204unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16205
16206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html>
16207#[repr(C)]
16208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16209pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16210    pub s_type: StructureType,
16211    pub next: *mut c_void,
16212    pub fragment_density_offset_granularity: Extent2D,
16213}
16214
16215impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16216    #[inline]
16217    fn default() -> Self {
16218        Self {
16219            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
16220            next: ptr::null_mut(),
16221            fragment_density_offset_granularity: Extent2D::default(),
16222        }
16223    }
16224}
16225
16226unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16227unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16228
16229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
16230#[repr(C)]
16231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16232pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
16233    pub s_type: StructureType,
16234    pub next: *mut c_void,
16235    pub min_fragment_density_texel_size: Extent2D,
16236    pub max_fragment_density_texel_size: Extent2D,
16237    pub fragment_density_invocations: Bool32,
16238}
16239
16240impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
16241    #[inline]
16242    fn default() -> Self {
16243        Self {
16244            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
16245            next: ptr::null_mut(),
16246            min_fragment_density_texel_size: Extent2D::default(),
16247            max_fragment_density_texel_size: Extent2D::default(),
16248            fragment_density_invocations: Bool32::default(),
16249        }
16250    }
16251}
16252
16253unsafe impl Send for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16254unsafe impl Sync for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16255
16256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
16257#[repr(C)]
16258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16259pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16260    pub s_type: StructureType,
16261    pub next: *mut c_void,
16262    pub fragment_shader_barycentric: Bool32,
16263}
16264
16265impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16266    #[inline]
16267    fn default() -> Self {
16268        Self {
16269            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
16270            next: ptr::null_mut(),
16271            fragment_shader_barycentric: Bool32::default(),
16272        }
16273    }
16274}
16275
16276unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
16277unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
16278
16279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
16280#[repr(C)]
16281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16282pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
16283    pub s_type: StructureType,
16284    pub next: *mut c_void,
16285    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
16286}
16287
16288impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
16289    #[inline]
16290    fn default() -> Self {
16291        Self {
16292            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
16293            next: ptr::null_mut(),
16294            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
16295        }
16296    }
16297}
16298
16299unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
16300unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
16301
16302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
16303#[repr(C)]
16304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16305pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16306    pub s_type: StructureType,
16307    pub next: *mut c_void,
16308    pub fragment_shader_sample_interlock: Bool32,
16309    pub fragment_shader_pixel_interlock: Bool32,
16310    pub fragment_shader_shading_rate_interlock: Bool32,
16311}
16312
16313impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16314    #[inline]
16315    fn default() -> Self {
16316        Self {
16317            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
16318            next: ptr::null_mut(),
16319            fragment_shader_sample_interlock: Bool32::default(),
16320            fragment_shader_pixel_interlock: Bool32::default(),
16321            fragment_shader_shading_rate_interlock: Bool32::default(),
16322        }
16323    }
16324}
16325
16326unsafe impl Send for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16327unsafe impl Sync for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16328
16329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
16330#[repr(C)]
16331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16332pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16333    pub s_type: StructureType,
16334    pub next: *mut c_void,
16335    pub fragment_shading_rate_enums: Bool32,
16336    pub supersample_fragment_shading_rates: Bool32,
16337    pub no_invocation_fragment_shading_rates: Bool32,
16338}
16339
16340impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16341    #[inline]
16342    fn default() -> Self {
16343        Self {
16344            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
16345            next: ptr::null_mut(),
16346            fragment_shading_rate_enums: Bool32::default(),
16347            supersample_fragment_shading_rates: Bool32::default(),
16348            no_invocation_fragment_shading_rates: Bool32::default(),
16349        }
16350    }
16351}
16352
16353unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16354unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16355
16356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
16357#[repr(C)]
16358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16359pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16360    pub s_type: StructureType,
16361    pub next: *mut c_void,
16362    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
16363}
16364
16365impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16366    #[inline]
16367    fn default() -> Self {
16368        Self {
16369            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
16370            next: ptr::null_mut(),
16371            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
16372        }
16373    }
16374}
16375
16376unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16377unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16378
16379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
16380#[repr(C)]
16381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16382pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
16383    pub s_type: StructureType,
16384    pub next: *mut c_void,
16385    pub pipeline_fragment_shading_rate: Bool32,
16386    pub primitive_fragment_shading_rate: Bool32,
16387    pub attachment_fragment_shading_rate: Bool32,
16388}
16389
16390impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
16391    #[inline]
16392    fn default() -> Self {
16393        Self {
16394            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
16395            next: ptr::null_mut(),
16396            pipeline_fragment_shading_rate: Bool32::default(),
16397            primitive_fragment_shading_rate: Bool32::default(),
16398            attachment_fragment_shading_rate: Bool32::default(),
16399        }
16400    }
16401}
16402
16403unsafe impl Send for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16404unsafe impl Sync for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16405
16406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
16407#[repr(C)]
16408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16409pub struct PhysicalDeviceFragmentShadingRateKHR {
16410    pub s_type: StructureType,
16411    pub next: *mut c_void,
16412    pub sample_counts: SampleCountFlags,
16413    pub fragment_size: Extent2D,
16414}
16415
16416impl Default for PhysicalDeviceFragmentShadingRateKHR {
16417    #[inline]
16418    fn default() -> Self {
16419        Self {
16420            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
16421            next: ptr::null_mut(),
16422            sample_counts: SampleCountFlags::default(),
16423            fragment_size: Extent2D::default(),
16424        }
16425    }
16426}
16427
16428unsafe impl Send for PhysicalDeviceFragmentShadingRateKHR {}
16429unsafe impl Sync for PhysicalDeviceFragmentShadingRateKHR {}
16430
16431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
16432#[repr(C)]
16433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16434pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
16435    pub s_type: StructureType,
16436    pub next: *mut c_void,
16437    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
16438    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
16439    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
16440    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
16441    pub layered_shading_rate_attachments: Bool32,
16442    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
16443    pub max_fragment_size: Extent2D,
16444    pub max_fragment_size_aspect_ratio: u32,
16445    pub max_fragment_shading_rate_coverage_samples: u32,
16446    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
16447    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
16448    pub fragment_shading_rate_with_sample_mask: Bool32,
16449    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
16450    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
16451    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
16452    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
16453    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
16454}
16455
16456impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
16457    #[inline]
16458    fn default() -> Self {
16459        Self {
16460            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
16461            next: ptr::null_mut(),
16462            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16463            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16464            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
16465            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
16466            layered_shading_rate_attachments: Bool32::default(),
16467            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
16468            max_fragment_size: Extent2D::default(),
16469            max_fragment_size_aspect_ratio: u32::default(),
16470            max_fragment_shading_rate_coverage_samples: u32::default(),
16471            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
16472            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
16473            fragment_shading_rate_with_sample_mask: Bool32::default(),
16474            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
16475            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
16476            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
16477            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
16478            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
16479        }
16480    }
16481}
16482
16483unsafe impl Send for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16484unsafe impl Sync for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16485
16486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
16487#[repr(C)]
16488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16489pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
16490    pub s_type: StructureType,
16491    pub next: *mut c_void,
16492    pub frame_boundary: Bool32,
16493}
16494
16495impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
16496    #[inline]
16497    fn default() -> Self {
16498        Self {
16499            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
16500            next: ptr::null_mut(),
16501            frame_boundary: Bool32::default(),
16502        }
16503    }
16504}
16505
16506unsafe impl Send for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16507unsafe impl Sync for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16508
16509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
16510#[repr(C)]
16511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16512pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
16513    pub s_type: StructureType,
16514    pub next: *mut c_void,
16515    pub global_priority_query: Bool32,
16516}
16517
16518impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
16519    #[inline]
16520    fn default() -> Self {
16521        Self {
16522            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
16523            next: ptr::null_mut(),
16524            global_priority_query: Bool32::default(),
16525        }
16526    }
16527}
16528
16529unsafe impl Send for PhysicalDeviceGlobalPriorityQueryFeatures {}
16530unsafe impl Sync for PhysicalDeviceGlobalPriorityQueryFeatures {}
16531
16532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
16533#[repr(C)]
16534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16535pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16536    pub s_type: StructureType,
16537    pub next: *mut c_void,
16538    pub graphics_pipeline_library: Bool32,
16539}
16540
16541impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16542    #[inline]
16543    fn default() -> Self {
16544        Self {
16545            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
16546            next: ptr::null_mut(),
16547            graphics_pipeline_library: Bool32::default(),
16548        }
16549    }
16550}
16551
16552unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16553unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16554
16555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
16556#[repr(C)]
16557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16558pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16559    pub s_type: StructureType,
16560    pub next: *mut c_void,
16561    pub graphics_pipeline_library_fast_linking: Bool32,
16562    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
16563}
16564
16565impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16566    #[inline]
16567    fn default() -> Self {
16568        Self {
16569            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
16570            next: ptr::null_mut(),
16571            graphics_pipeline_library_fast_linking: Bool32::default(),
16572            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
16573        }
16574    }
16575}
16576
16577unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16578unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16579
16580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
16581#[repr(C)]
16582#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16583pub struct PhysicalDeviceGroupProperties {
16584    pub s_type: StructureType,
16585    pub next: *mut c_void,
16586    pub physical_device_count: u32,
16587    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE as usize],
16588    pub subset_allocation: Bool32,
16589}
16590
16591impl Default for PhysicalDeviceGroupProperties {
16592    #[inline]
16593    fn default() -> Self {
16594        Self {
16595            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
16596            next: ptr::null_mut(),
16597            physical_device_count: u32::default(),
16598            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
16599            subset_allocation: Bool32::default(),
16600        }
16601    }
16602}
16603
16604unsafe impl Send for PhysicalDeviceGroupProperties {}
16605unsafe impl Sync for PhysicalDeviceGroupProperties {}
16606
16607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
16608#[repr(C)]
16609#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16610pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
16611    pub s_type: StructureType,
16612    pub next: *mut c_void,
16613    pub hdr_vivid: Bool32,
16614}
16615
16616impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
16617    #[inline]
16618    fn default() -> Self {
16619        Self {
16620            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
16621            next: ptr::null_mut(),
16622            hdr_vivid: Bool32::default(),
16623        }
16624    }
16625}
16626
16627unsafe impl Send for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16628unsafe impl Sync for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16629
16630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
16631#[repr(C)]
16632#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16633pub struct PhysicalDeviceHostImageCopyFeatures {
16634    pub s_type: StructureType,
16635    pub next: *mut c_void,
16636    pub host_image_copy: Bool32,
16637}
16638
16639impl Default for PhysicalDeviceHostImageCopyFeatures {
16640    #[inline]
16641    fn default() -> Self {
16642        Self {
16643            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
16644            next: ptr::null_mut(),
16645            host_image_copy: Bool32::default(),
16646        }
16647    }
16648}
16649
16650unsafe impl Send for PhysicalDeviceHostImageCopyFeatures {}
16651unsafe impl Sync for PhysicalDeviceHostImageCopyFeatures {}
16652
16653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
16654#[repr(C)]
16655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16656pub struct PhysicalDeviceHostImageCopyProperties {
16657    pub s_type: StructureType,
16658    pub next: *mut c_void,
16659    pub copy_src_layout_count: u32,
16660    pub copy_src_layouts: *mut ImageLayout,
16661    pub copy_dst_layout_count: u32,
16662    pub copy_dst_layouts: *mut ImageLayout,
16663    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
16664    pub identical_memory_type_requirements: Bool32,
16665}
16666
16667impl Default for PhysicalDeviceHostImageCopyProperties {
16668    #[inline]
16669    fn default() -> Self {
16670        Self {
16671            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
16672            next: ptr::null_mut(),
16673            copy_src_layout_count: u32::default(),
16674            copy_src_layouts: ptr::null_mut(),
16675            copy_dst_layout_count: u32::default(),
16676            copy_dst_layouts: ptr::null_mut(),
16677            optimal_tiling_layout_uuid: ByteArray::default(),
16678            identical_memory_type_requirements: Bool32::default(),
16679        }
16680    }
16681}
16682
16683unsafe impl Send for PhysicalDeviceHostImageCopyProperties {}
16684unsafe impl Sync for PhysicalDeviceHostImageCopyProperties {}
16685
16686/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
16687#[repr(C)]
16688#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16689pub struct PhysicalDeviceHostQueryResetFeatures {
16690    pub s_type: StructureType,
16691    pub next: *mut c_void,
16692    pub host_query_reset: Bool32,
16693}
16694
16695impl Default for PhysicalDeviceHostQueryResetFeatures {
16696    #[inline]
16697    fn default() -> Self {
16698        Self {
16699            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
16700            next: ptr::null_mut(),
16701            host_query_reset: Bool32::default(),
16702        }
16703    }
16704}
16705
16706unsafe impl Send for PhysicalDeviceHostQueryResetFeatures {}
16707unsafe impl Sync for PhysicalDeviceHostQueryResetFeatures {}
16708
16709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
16710#[repr(C)]
16711#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16712pub struct PhysicalDeviceIDProperties {
16713    pub s_type: StructureType,
16714    pub next: *mut c_void,
16715    pub device_uuid: ByteArray<UUID_SIZE>,
16716    pub driver_uuid: ByteArray<UUID_SIZE>,
16717    pub device_luid: ByteArray<LUID_SIZE>,
16718    pub device_node_mask: u32,
16719    pub device_luid_valid: Bool32,
16720}
16721
16722impl Default for PhysicalDeviceIDProperties {
16723    #[inline]
16724    fn default() -> Self {
16725        Self {
16726            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
16727            next: ptr::null_mut(),
16728            device_uuid: ByteArray::default(),
16729            driver_uuid: ByteArray::default(),
16730            device_luid: ByteArray::default(),
16731            device_node_mask: u32::default(),
16732            device_luid_valid: Bool32::default(),
16733        }
16734    }
16735}
16736
16737unsafe impl Send for PhysicalDeviceIDProperties {}
16738unsafe impl Sync for PhysicalDeviceIDProperties {}
16739
16740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
16741#[repr(C)]
16742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16743pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16744    pub s_type: StructureType,
16745    pub next: *mut c_void,
16746    pub image_2d_view_of_3d: Bool32,
16747    pub sampler_2d_view_of_3d: Bool32,
16748}
16749
16750impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16751    #[inline]
16752    fn default() -> Self {
16753        Self {
16754            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
16755            next: ptr::null_mut(),
16756            image_2d_view_of_3d: Bool32::default(),
16757            sampler_2d_view_of_3d: Bool32::default(),
16758        }
16759    }
16760}
16761
16762unsafe impl Send for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16763unsafe impl Sync for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16764
16765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
16766#[repr(C)]
16767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16768pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
16769    pub s_type: StructureType,
16770    pub next: *mut c_void,
16771    pub image_alignment_control: Bool32,
16772}
16773
16774impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
16775    #[inline]
16776    fn default() -> Self {
16777        Self {
16778            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
16779            next: ptr::null_mut(),
16780            image_alignment_control: Bool32::default(),
16781        }
16782    }
16783}
16784
16785unsafe impl Send for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16786unsafe impl Sync for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16787
16788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
16789#[repr(C)]
16790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16791pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
16792    pub s_type: StructureType,
16793    pub next: *mut c_void,
16794    pub supported_image_alignment_mask: u32,
16795}
16796
16797impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
16798    #[inline]
16799    fn default() -> Self {
16800        Self {
16801            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
16802            next: ptr::null_mut(),
16803            supported_image_alignment_mask: u32::default(),
16804        }
16805    }
16806}
16807
16808unsafe impl Send for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16809unsafe impl Sync for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16810
16811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
16812#[repr(C)]
16813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16814pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
16815    pub s_type: StructureType,
16816    pub next: *mut c_void,
16817    pub image_compression_control: Bool32,
16818}
16819
16820impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
16821    #[inline]
16822    fn default() -> Self {
16823        Self {
16824            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
16825            next: ptr::null_mut(),
16826            image_compression_control: Bool32::default(),
16827        }
16828    }
16829}
16830
16831unsafe impl Send for PhysicalDeviceImageCompressionControlFeaturesEXT {}
16832unsafe impl Sync for PhysicalDeviceImageCompressionControlFeaturesEXT {}
16833
16834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
16835#[repr(C)]
16836#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16837pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
16838    pub s_type: StructureType,
16839    pub next: *mut c_void,
16840    pub image_compression_control_swapchain: Bool32,
16841}
16842
16843impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
16844    #[inline]
16845    fn default() -> Self {
16846        Self {
16847            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
16848            next: ptr::null_mut(),
16849            image_compression_control_swapchain: Bool32::default(),
16850        }
16851    }
16852}
16853
16854unsafe impl Send for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
16855unsafe impl Sync for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
16856
16857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
16858#[repr(C)]
16859#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16860pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
16861    pub s_type: StructureType,
16862    pub next: *const c_void,
16863    pub drm_format_modifier: u64,
16864    pub sharing_mode: SharingMode,
16865    pub queue_family_index_count: u32,
16866    pub queue_family_indices: *const u32,
16867}
16868
16869impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
16870    #[inline]
16871    fn default() -> Self {
16872        Self {
16873            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
16874            next: ptr::null(),
16875            drm_format_modifier: u64::default(),
16876            sharing_mode: SharingMode::default(),
16877            queue_family_index_count: u32::default(),
16878            queue_family_indices: ptr::null(),
16879        }
16880    }
16881}
16882
16883unsafe impl Send for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
16884unsafe impl Sync for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
16885
16886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
16887#[repr(C)]
16888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16889pub struct PhysicalDeviceImageFormatInfo2 {
16890    pub s_type: StructureType,
16891    pub next: *const c_void,
16892    pub format: Format,
16893    pub type_: ImageType,
16894    pub tiling: ImageTiling,
16895    pub usage: ImageUsageFlags,
16896    pub flags: ImageCreateFlags,
16897}
16898
16899impl Default for PhysicalDeviceImageFormatInfo2 {
16900    #[inline]
16901    fn default() -> Self {
16902        Self {
16903            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
16904            next: ptr::null(),
16905            format: Format::default(),
16906            type_: ImageType::default(),
16907            tiling: ImageTiling::default(),
16908            usage: ImageUsageFlags::default(),
16909            flags: ImageCreateFlags::default(),
16910        }
16911    }
16912}
16913
16914unsafe impl Send for PhysicalDeviceImageFormatInfo2 {}
16915unsafe impl Sync for PhysicalDeviceImageFormatInfo2 {}
16916
16917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
16918#[repr(C)]
16919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16920pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
16921    pub s_type: StructureType,
16922    pub next: *mut c_void,
16923    pub texture_block_match2: Bool32,
16924}
16925
16926impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
16927    #[inline]
16928    fn default() -> Self {
16929        Self {
16930            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
16931            next: ptr::null_mut(),
16932            texture_block_match2: Bool32::default(),
16933        }
16934    }
16935}
16936
16937unsafe impl Send for PhysicalDeviceImageProcessing2FeaturesQCOM {}
16938unsafe impl Sync for PhysicalDeviceImageProcessing2FeaturesQCOM {}
16939
16940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
16941#[repr(C)]
16942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16943pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
16944    pub s_type: StructureType,
16945    pub next: *mut c_void,
16946    pub max_block_match_window: Extent2D,
16947}
16948
16949impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
16950    #[inline]
16951    fn default() -> Self {
16952        Self {
16953            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
16954            next: ptr::null_mut(),
16955            max_block_match_window: Extent2D::default(),
16956        }
16957    }
16958}
16959
16960unsafe impl Send for PhysicalDeviceImageProcessing2PropertiesQCOM {}
16961unsafe impl Sync for PhysicalDeviceImageProcessing2PropertiesQCOM {}
16962
16963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
16964#[repr(C)]
16965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16966pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
16967    pub s_type: StructureType,
16968    pub next: *mut c_void,
16969    pub texture_sample_weighted: Bool32,
16970    pub texture_box_filter: Bool32,
16971    pub texture_block_match: Bool32,
16972}
16973
16974impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
16975    #[inline]
16976    fn default() -> Self {
16977        Self {
16978            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
16979            next: ptr::null_mut(),
16980            texture_sample_weighted: Bool32::default(),
16981            texture_box_filter: Bool32::default(),
16982            texture_block_match: Bool32::default(),
16983        }
16984    }
16985}
16986
16987unsafe impl Send for PhysicalDeviceImageProcessingFeaturesQCOM {}
16988unsafe impl Sync for PhysicalDeviceImageProcessingFeaturesQCOM {}
16989
16990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
16991#[repr(C)]
16992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16993pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
16994    pub s_type: StructureType,
16995    pub next: *mut c_void,
16996    pub max_weight_filter_phases: u32,
16997    pub max_weight_filter_dimension: Extent2D,
16998    pub max_block_match_region: Extent2D,
16999    pub max_box_filter_block_size: Extent2D,
17000}
17001
17002impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
17003    #[inline]
17004    fn default() -> Self {
17005        Self {
17006            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
17007            next: ptr::null_mut(),
17008            max_weight_filter_phases: u32::default(),
17009            max_weight_filter_dimension: Extent2D::default(),
17010            max_block_match_region: Extent2D::default(),
17011            max_box_filter_block_size: Extent2D::default(),
17012        }
17013    }
17014}
17015
17016unsafe impl Send for PhysicalDeviceImageProcessingPropertiesQCOM {}
17017unsafe impl Sync for PhysicalDeviceImageProcessingPropertiesQCOM {}
17018
17019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
17020#[repr(C)]
17021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17022pub struct PhysicalDeviceImageRobustnessFeatures {
17023    pub s_type: StructureType,
17024    pub next: *mut c_void,
17025    pub robust_image_access: Bool32,
17026}
17027
17028impl Default for PhysicalDeviceImageRobustnessFeatures {
17029    #[inline]
17030    fn default() -> Self {
17031        Self {
17032            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
17033            next: ptr::null_mut(),
17034            robust_image_access: Bool32::default(),
17035        }
17036    }
17037}
17038
17039unsafe impl Send for PhysicalDeviceImageRobustnessFeatures {}
17040unsafe impl Sync for PhysicalDeviceImageRobustnessFeatures {}
17041
17042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
17043#[repr(C)]
17044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17045pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17046    pub s_type: StructureType,
17047    pub next: *mut c_void,
17048    pub image_sliced_view_of_3d: Bool32,
17049}
17050
17051impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17052    #[inline]
17053    fn default() -> Self {
17054        Self {
17055            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
17056            next: ptr::null_mut(),
17057            image_sliced_view_of_3d: Bool32::default(),
17058        }
17059    }
17060}
17061
17062unsafe impl Send for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17063unsafe impl Sync for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17064
17065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
17066#[repr(C)]
17067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17068pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
17069    pub s_type: StructureType,
17070    pub next: *mut c_void,
17071    pub image_view_type: ImageViewType,
17072}
17073
17074impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
17075    #[inline]
17076    fn default() -> Self {
17077        Self {
17078            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
17079            next: ptr::null_mut(),
17080            image_view_type: ImageViewType::default(),
17081        }
17082    }
17083}
17084
17085unsafe impl Send for PhysicalDeviceImageViewImageFormatInfoEXT {}
17086unsafe impl Sync for PhysicalDeviceImageViewImageFormatInfoEXT {}
17087
17088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
17089#[repr(C)]
17090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17091pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
17092    pub s_type: StructureType,
17093    pub next: *mut c_void,
17094    pub min_lod: Bool32,
17095}
17096
17097impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
17098    #[inline]
17099    fn default() -> Self {
17100        Self {
17101            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
17102            next: ptr::null_mut(),
17103            min_lod: Bool32::default(),
17104        }
17105    }
17106}
17107
17108unsafe impl Send for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17109unsafe impl Sync for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17110
17111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
17112#[repr(C)]
17113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17114pub struct PhysicalDeviceImagelessFramebufferFeatures {
17115    pub s_type: StructureType,
17116    pub next: *mut c_void,
17117    pub imageless_framebuffer: Bool32,
17118}
17119
17120impl Default for PhysicalDeviceImagelessFramebufferFeatures {
17121    #[inline]
17122    fn default() -> Self {
17123        Self {
17124            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
17125            next: ptr::null_mut(),
17126            imageless_framebuffer: Bool32::default(),
17127        }
17128    }
17129}
17130
17131unsafe impl Send for PhysicalDeviceImagelessFramebufferFeatures {}
17132unsafe impl Sync for PhysicalDeviceImagelessFramebufferFeatures {}
17133
17134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
17135#[repr(C)]
17136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17137pub struct PhysicalDeviceIndexTypeUint8Features {
17138    pub s_type: StructureType,
17139    pub next: *mut c_void,
17140    pub index_type_uint8: Bool32,
17141}
17142
17143impl Default for PhysicalDeviceIndexTypeUint8Features {
17144    #[inline]
17145    fn default() -> Self {
17146        Self {
17147            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
17148            next: ptr::null_mut(),
17149            index_type_uint8: Bool32::default(),
17150        }
17151    }
17152}
17153
17154unsafe impl Send for PhysicalDeviceIndexTypeUint8Features {}
17155unsafe impl Sync for PhysicalDeviceIndexTypeUint8Features {}
17156
17157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
17158#[repr(C)]
17159#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17160pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
17161    pub s_type: StructureType,
17162    pub next: *mut c_void,
17163    pub inherited_viewport_scissor_2d: Bool32,
17164}
17165
17166impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
17167    #[inline]
17168    fn default() -> Self {
17169        Self {
17170            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
17171            next: ptr::null_mut(),
17172            inherited_viewport_scissor_2d: Bool32::default(),
17173        }
17174    }
17175}
17176
17177unsafe impl Send for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17178unsafe impl Sync for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17179
17180/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
17181#[repr(C)]
17182#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17183pub struct PhysicalDeviceInlineUniformBlockFeatures {
17184    pub s_type: StructureType,
17185    pub next: *mut c_void,
17186    pub inline_uniform_block: Bool32,
17187    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
17188}
17189
17190impl Default for PhysicalDeviceInlineUniformBlockFeatures {
17191    #[inline]
17192    fn default() -> Self {
17193        Self {
17194            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
17195            next: ptr::null_mut(),
17196            inline_uniform_block: Bool32::default(),
17197            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
17198        }
17199    }
17200}
17201
17202unsafe impl Send for PhysicalDeviceInlineUniformBlockFeatures {}
17203unsafe impl Sync for PhysicalDeviceInlineUniformBlockFeatures {}
17204
17205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
17206#[repr(C)]
17207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17208pub struct PhysicalDeviceInlineUniformBlockProperties {
17209    pub s_type: StructureType,
17210    pub next: *mut c_void,
17211    pub max_inline_uniform_block_size: u32,
17212    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
17213    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
17214    pub max_descriptor_set_inline_uniform_blocks: u32,
17215    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
17216}
17217
17218impl Default for PhysicalDeviceInlineUniformBlockProperties {
17219    #[inline]
17220    fn default() -> Self {
17221        Self {
17222            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
17223            next: ptr::null_mut(),
17224            max_inline_uniform_block_size: u32::default(),
17225            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
17226            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
17227            max_descriptor_set_inline_uniform_blocks: u32::default(),
17228            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
17229        }
17230    }
17231}
17232
17233unsafe impl Send for PhysicalDeviceInlineUniformBlockProperties {}
17234unsafe impl Sync for PhysicalDeviceInlineUniformBlockProperties {}
17235
17236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
17237#[repr(C)]
17238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17239pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17240    pub s_type: StructureType,
17241    pub next: *mut c_void,
17242    pub invocation_mask: Bool32,
17243}
17244
17245impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17246    #[inline]
17247    fn default() -> Self {
17248        Self {
17249            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
17250            next: ptr::null_mut(),
17251            invocation_mask: Bool32::default(),
17252        }
17253    }
17254}
17255
17256unsafe impl Send for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
17257unsafe impl Sync for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
17258
17259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
17260#[repr(C)]
17261#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17262pub struct PhysicalDeviceLayeredApiPropertiesKHR {
17263    pub s_type: StructureType,
17264    pub next: *mut c_void,
17265    pub vendor_id: u32,
17266    pub device_id: u32,
17267    pub layered_api: PhysicalDeviceLayeredApiKHR,
17268    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
17269}
17270
17271impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
17272    #[inline]
17273    fn default() -> Self {
17274        Self {
17275            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
17276            next: ptr::null_mut(),
17277            vendor_id: u32::default(),
17278            device_id: u32::default(),
17279            layered_api: PhysicalDeviceLayeredApiKHR::default(),
17280            device_name: StringArray::default(),
17281        }
17282    }
17283}
17284
17285unsafe impl Send for PhysicalDeviceLayeredApiPropertiesKHR {}
17286unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesKHR {}
17287
17288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
17289#[repr(C)]
17290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17291pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
17292    pub s_type: StructureType,
17293    pub next: *mut c_void,
17294    pub layered_api_count: u32,
17295    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
17296}
17297
17298impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
17299    #[inline]
17300    fn default() -> Self {
17301        Self {
17302            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
17303            next: ptr::null_mut(),
17304            layered_api_count: u32::default(),
17305            layered_apis: ptr::null_mut(),
17306        }
17307    }
17308}
17309
17310unsafe impl Send for PhysicalDeviceLayeredApiPropertiesListKHR {}
17311unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesListKHR {}
17312
17313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
17314#[repr(C)]
17315#[derive(Copy, Clone, Debug, PartialEq)]
17316pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17317    pub s_type: StructureType,
17318    pub next: *mut c_void,
17319    pub properties: PhysicalDeviceProperties2,
17320}
17321
17322impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17323    #[inline]
17324    fn default() -> Self {
17325        Self {
17326            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
17327            next: ptr::null_mut(),
17328            properties: PhysicalDeviceProperties2::default(),
17329        }
17330    }
17331}
17332
17333unsafe impl Send for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17334unsafe impl Sync for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17335
17336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
17337#[repr(C)]
17338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17339pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
17340    pub s_type: StructureType,
17341    pub next: *mut c_void,
17342    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
17343}
17344
17345impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
17346    #[inline]
17347    fn default() -> Self {
17348        Self {
17349            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
17350            next: ptr::null_mut(),
17351            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
17352        }
17353    }
17354}
17355
17356unsafe impl Send for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17357unsafe impl Sync for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17358
17359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
17360#[repr(C)]
17361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17362pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
17363    pub s_type: StructureType,
17364    pub next: *mut c_void,
17365    pub legacy_dithering: Bool32,
17366}
17367
17368impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
17369    #[inline]
17370    fn default() -> Self {
17371        Self {
17372            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
17373            next: ptr::null_mut(),
17374            legacy_dithering: Bool32::default(),
17375        }
17376    }
17377}
17378
17379unsafe impl Send for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17380unsafe impl Sync for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17381
17382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
17383#[repr(C)]
17384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17385pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17386    pub s_type: StructureType,
17387    pub next: *mut c_void,
17388    pub legacy_vertex_attributes: Bool32,
17389}
17390
17391impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17392    #[inline]
17393    fn default() -> Self {
17394        Self {
17395            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
17396            next: ptr::null_mut(),
17397            legacy_vertex_attributes: Bool32::default(),
17398        }
17399    }
17400}
17401
17402unsafe impl Send for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17403unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17404
17405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
17406#[repr(C)]
17407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17408pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17409    pub s_type: StructureType,
17410    pub next: *mut c_void,
17411    pub native_unaligned_performance: Bool32,
17412}
17413
17414impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17415    #[inline]
17416    fn default() -> Self {
17417        Self {
17418            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
17419            next: ptr::null_mut(),
17420            native_unaligned_performance: Bool32::default(),
17421        }
17422    }
17423}
17424
17425unsafe impl Send for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17426unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17427
17428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
17429#[repr(C)]
17430#[derive(Copy, Clone, Default, Debug, PartialEq)]
17431pub struct PhysicalDeviceLimits {
17432    pub max_image_dimension_1d: u32,
17433    pub max_image_dimension_2d: u32,
17434    pub max_image_dimension_3d: u32,
17435    pub max_image_dimension_cube: u32,
17436    pub max_image_array_layers: u32,
17437    pub max_texel_buffer_elements: u32,
17438    pub max_uniform_buffer_range: u32,
17439    pub max_storage_buffer_range: u32,
17440    pub max_push_constants_size: u32,
17441    pub max_memory_allocation_count: u32,
17442    pub max_sampler_allocation_count: u32,
17443    pub buffer_image_granularity: DeviceSize,
17444    pub sparse_address_space_size: DeviceSize,
17445    pub max_bound_descriptor_sets: u32,
17446    pub max_per_stage_descriptor_samplers: u32,
17447    pub max_per_stage_descriptor_uniform_buffers: u32,
17448    pub max_per_stage_descriptor_storage_buffers: u32,
17449    pub max_per_stage_descriptor_sampled_images: u32,
17450    pub max_per_stage_descriptor_storage_images: u32,
17451    pub max_per_stage_descriptor_input_attachments: u32,
17452    pub max_per_stage_resources: u32,
17453    pub max_descriptor_set_samplers: u32,
17454    pub max_descriptor_set_uniform_buffers: u32,
17455    pub max_descriptor_set_uniform_buffers_dynamic: u32,
17456    pub max_descriptor_set_storage_buffers: u32,
17457    pub max_descriptor_set_storage_buffers_dynamic: u32,
17458    pub max_descriptor_set_sampled_images: u32,
17459    pub max_descriptor_set_storage_images: u32,
17460    pub max_descriptor_set_input_attachments: u32,
17461    pub max_vertex_input_attributes: u32,
17462    pub max_vertex_input_bindings: u32,
17463    pub max_vertex_input_attribute_offset: u32,
17464    pub max_vertex_input_binding_stride: u32,
17465    pub max_vertex_output_components: u32,
17466    pub max_tessellation_generation_level: u32,
17467    pub max_tessellation_patch_size: u32,
17468    pub max_tessellation_control_per_vertex_input_components: u32,
17469    pub max_tessellation_control_per_vertex_output_components: u32,
17470    pub max_tessellation_control_per_patch_output_components: u32,
17471    pub max_tessellation_control_total_output_components: u32,
17472    pub max_tessellation_evaluation_input_components: u32,
17473    pub max_tessellation_evaluation_output_components: u32,
17474    pub max_geometry_shader_invocations: u32,
17475    pub max_geometry_input_components: u32,
17476    pub max_geometry_output_components: u32,
17477    pub max_geometry_output_vertices: u32,
17478    pub max_geometry_total_output_components: u32,
17479    pub max_fragment_input_components: u32,
17480    pub max_fragment_output_attachments: u32,
17481    pub max_fragment_dual_src_attachments: u32,
17482    pub max_fragment_combined_output_resources: u32,
17483    pub max_compute_shared_memory_size: u32,
17484    pub max_compute_work_group_count: [u32; 3],
17485    pub max_compute_work_group_invocations: u32,
17486    pub max_compute_work_group_size: [u32; 3],
17487    pub sub_pixel_precision_bits: u32,
17488    pub sub_texel_precision_bits: u32,
17489    pub mipmap_precision_bits: u32,
17490    pub max_draw_indexed_index_value: u32,
17491    pub max_draw_indirect_count: u32,
17492    pub max_sampler_lod_bias: f32,
17493    pub max_sampler_anisotropy: f32,
17494    pub max_viewports: u32,
17495    pub max_viewport_dimensions: [u32; 2],
17496    pub viewport_bounds_range: [f32; 2],
17497    pub viewport_sub_pixel_bits: u32,
17498    pub min_memory_map_alignment: usize,
17499    pub min_texel_buffer_offset_alignment: DeviceSize,
17500    pub min_uniform_buffer_offset_alignment: DeviceSize,
17501    pub min_storage_buffer_offset_alignment: DeviceSize,
17502    pub min_texel_offset: i32,
17503    pub max_texel_offset: u32,
17504    pub min_texel_gather_offset: i32,
17505    pub max_texel_gather_offset: u32,
17506    pub min_interpolation_offset: f32,
17507    pub max_interpolation_offset: f32,
17508    pub sub_pixel_interpolation_offset_bits: u32,
17509    pub max_framebuffer_width: u32,
17510    pub max_framebuffer_height: u32,
17511    pub max_framebuffer_layers: u32,
17512    pub framebuffer_color_sample_counts: SampleCountFlags,
17513    pub framebuffer_depth_sample_counts: SampleCountFlags,
17514    pub framebuffer_stencil_sample_counts: SampleCountFlags,
17515    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
17516    pub max_color_attachments: u32,
17517    pub sampled_image_color_sample_counts: SampleCountFlags,
17518    pub sampled_image_integer_sample_counts: SampleCountFlags,
17519    pub sampled_image_depth_sample_counts: SampleCountFlags,
17520    pub sampled_image_stencil_sample_counts: SampleCountFlags,
17521    pub storage_image_sample_counts: SampleCountFlags,
17522    pub max_sample_mask_words: u32,
17523    pub timestamp_compute_and_graphics: Bool32,
17524    pub timestamp_period: f32,
17525    pub max_clip_distances: u32,
17526    pub max_cull_distances: u32,
17527    pub max_combined_clip_and_cull_distances: u32,
17528    pub discrete_queue_priorities: u32,
17529    pub point_size_range: [f32; 2],
17530    pub line_width_range: [f32; 2],
17531    pub point_size_granularity: f32,
17532    pub line_width_granularity: f32,
17533    pub strict_lines: Bool32,
17534    pub standard_sample_locations: Bool32,
17535    pub optimal_buffer_copy_offset_alignment: DeviceSize,
17536    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
17537    pub non_coherent_atom_size: DeviceSize,
17538}
17539
17540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
17541#[repr(C)]
17542#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17543pub struct PhysicalDeviceLineRasterizationFeatures {
17544    pub s_type: StructureType,
17545    pub next: *mut c_void,
17546    pub rectangular_lines: Bool32,
17547    pub bresenham_lines: Bool32,
17548    pub smooth_lines: Bool32,
17549    pub stippled_rectangular_lines: Bool32,
17550    pub stippled_bresenham_lines: Bool32,
17551    pub stippled_smooth_lines: Bool32,
17552}
17553
17554impl Default for PhysicalDeviceLineRasterizationFeatures {
17555    #[inline]
17556    fn default() -> Self {
17557        Self {
17558            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
17559            next: ptr::null_mut(),
17560            rectangular_lines: Bool32::default(),
17561            bresenham_lines: Bool32::default(),
17562            smooth_lines: Bool32::default(),
17563            stippled_rectangular_lines: Bool32::default(),
17564            stippled_bresenham_lines: Bool32::default(),
17565            stippled_smooth_lines: Bool32::default(),
17566        }
17567    }
17568}
17569
17570unsafe impl Send for PhysicalDeviceLineRasterizationFeatures {}
17571unsafe impl Sync for PhysicalDeviceLineRasterizationFeatures {}
17572
17573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
17574#[repr(C)]
17575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17576pub struct PhysicalDeviceLineRasterizationProperties {
17577    pub s_type: StructureType,
17578    pub next: *mut c_void,
17579    pub line_sub_pixel_precision_bits: u32,
17580}
17581
17582impl Default for PhysicalDeviceLineRasterizationProperties {
17583    #[inline]
17584    fn default() -> Self {
17585        Self {
17586            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
17587            next: ptr::null_mut(),
17588            line_sub_pixel_precision_bits: u32::default(),
17589        }
17590    }
17591}
17592
17593unsafe impl Send for PhysicalDeviceLineRasterizationProperties {}
17594unsafe impl Sync for PhysicalDeviceLineRasterizationProperties {}
17595
17596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
17597#[repr(C)]
17598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17599pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
17600    pub s_type: StructureType,
17601    pub next: *mut c_void,
17602    pub linear_color_attachment: Bool32,
17603}
17604
17605impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
17606    #[inline]
17607    fn default() -> Self {
17608        Self {
17609            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
17610            next: ptr::null_mut(),
17611            linear_color_attachment: Bool32::default(),
17612        }
17613    }
17614}
17615
17616unsafe impl Send for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17617unsafe impl Sync for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17618
17619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10FeaturesKHR.html>
17620#[repr(C)]
17621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17622pub struct PhysicalDeviceMaintenance10FeaturesKHR {
17623    pub s_type: StructureType,
17624    pub next: *mut c_void,
17625    pub maintenance10: Bool32,
17626}
17627
17628impl Default for PhysicalDeviceMaintenance10FeaturesKHR {
17629    #[inline]
17630    fn default() -> Self {
17631        Self {
17632            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR,
17633            next: ptr::null_mut(),
17634            maintenance10: Bool32::default(),
17635        }
17636    }
17637}
17638
17639unsafe impl Send for PhysicalDeviceMaintenance10FeaturesKHR {}
17640unsafe impl Sync for PhysicalDeviceMaintenance10FeaturesKHR {}
17641
17642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10PropertiesKHR.html>
17643#[repr(C)]
17644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17645pub struct PhysicalDeviceMaintenance10PropertiesKHR {
17646    pub s_type: StructureType,
17647    pub next: *mut c_void,
17648    pub rgba4_opaque_black_swizzled: Bool32,
17649    pub resolve_srgb_format_applies_transfer_function: Bool32,
17650    pub resolve_srgb_format_supports_transfer_function_control: Bool32,
17651}
17652
17653impl Default for PhysicalDeviceMaintenance10PropertiesKHR {
17654    #[inline]
17655    fn default() -> Self {
17656        Self {
17657            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR,
17658            next: ptr::null_mut(),
17659            rgba4_opaque_black_swizzled: Bool32::default(),
17660            resolve_srgb_format_applies_transfer_function: Bool32::default(),
17661            resolve_srgb_format_supports_transfer_function_control: Bool32::default(),
17662        }
17663    }
17664}
17665
17666unsafe impl Send for PhysicalDeviceMaintenance10PropertiesKHR {}
17667unsafe impl Sync for PhysicalDeviceMaintenance10PropertiesKHR {}
17668
17669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
17670#[repr(C)]
17671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17672pub struct PhysicalDeviceMaintenance3Properties {
17673    pub s_type: StructureType,
17674    pub next: *mut c_void,
17675    pub max_per_set_descriptors: u32,
17676    pub max_memory_allocation_size: DeviceSize,
17677}
17678
17679impl Default for PhysicalDeviceMaintenance3Properties {
17680    #[inline]
17681    fn default() -> Self {
17682        Self {
17683            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
17684            next: ptr::null_mut(),
17685            max_per_set_descriptors: u32::default(),
17686            max_memory_allocation_size: DeviceSize::default(),
17687        }
17688    }
17689}
17690
17691unsafe impl Send for PhysicalDeviceMaintenance3Properties {}
17692unsafe impl Sync for PhysicalDeviceMaintenance3Properties {}
17693
17694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
17695#[repr(C)]
17696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17697pub struct PhysicalDeviceMaintenance4Features {
17698    pub s_type: StructureType,
17699    pub next: *mut c_void,
17700    pub maintenance4: Bool32,
17701}
17702
17703impl Default for PhysicalDeviceMaintenance4Features {
17704    #[inline]
17705    fn default() -> Self {
17706        Self {
17707            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
17708            next: ptr::null_mut(),
17709            maintenance4: Bool32::default(),
17710        }
17711    }
17712}
17713
17714unsafe impl Send for PhysicalDeviceMaintenance4Features {}
17715unsafe impl Sync for PhysicalDeviceMaintenance4Features {}
17716
17717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
17718#[repr(C)]
17719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17720pub struct PhysicalDeviceMaintenance4Properties {
17721    pub s_type: StructureType,
17722    pub next: *mut c_void,
17723    pub max_buffer_size: DeviceSize,
17724}
17725
17726impl Default for PhysicalDeviceMaintenance4Properties {
17727    #[inline]
17728    fn default() -> Self {
17729        Self {
17730            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
17731            next: ptr::null_mut(),
17732            max_buffer_size: DeviceSize::default(),
17733        }
17734    }
17735}
17736
17737unsafe impl Send for PhysicalDeviceMaintenance4Properties {}
17738unsafe impl Sync for PhysicalDeviceMaintenance4Properties {}
17739
17740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
17741#[repr(C)]
17742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17743pub struct PhysicalDeviceMaintenance5Features {
17744    pub s_type: StructureType,
17745    pub next: *mut c_void,
17746    pub maintenance5: Bool32,
17747}
17748
17749impl Default for PhysicalDeviceMaintenance5Features {
17750    #[inline]
17751    fn default() -> Self {
17752        Self {
17753            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
17754            next: ptr::null_mut(),
17755            maintenance5: Bool32::default(),
17756        }
17757    }
17758}
17759
17760unsafe impl Send for PhysicalDeviceMaintenance5Features {}
17761unsafe impl Sync for PhysicalDeviceMaintenance5Features {}
17762
17763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
17764#[repr(C)]
17765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17766pub struct PhysicalDeviceMaintenance5Properties {
17767    pub s_type: StructureType,
17768    pub next: *mut c_void,
17769    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
17770    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
17771    pub depth_stencil_swizzle_one_support: Bool32,
17772    pub polygon_mode_point_size: Bool32,
17773    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
17774    pub non_strict_wide_lines_use_parallelogram: Bool32,
17775}
17776
17777impl Default for PhysicalDeviceMaintenance5Properties {
17778    #[inline]
17779    fn default() -> Self {
17780        Self {
17781            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
17782            next: ptr::null_mut(),
17783            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
17784            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
17785            depth_stencil_swizzle_one_support: Bool32::default(),
17786            polygon_mode_point_size: Bool32::default(),
17787            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
17788            non_strict_wide_lines_use_parallelogram: Bool32::default(),
17789        }
17790    }
17791}
17792
17793unsafe impl Send for PhysicalDeviceMaintenance5Properties {}
17794unsafe impl Sync for PhysicalDeviceMaintenance5Properties {}
17795
17796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
17797#[repr(C)]
17798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17799pub struct PhysicalDeviceMaintenance6Features {
17800    pub s_type: StructureType,
17801    pub next: *mut c_void,
17802    pub maintenance6: Bool32,
17803}
17804
17805impl Default for PhysicalDeviceMaintenance6Features {
17806    #[inline]
17807    fn default() -> Self {
17808        Self {
17809            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
17810            next: ptr::null_mut(),
17811            maintenance6: Bool32::default(),
17812        }
17813    }
17814}
17815
17816unsafe impl Send for PhysicalDeviceMaintenance6Features {}
17817unsafe impl Sync for PhysicalDeviceMaintenance6Features {}
17818
17819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
17820#[repr(C)]
17821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17822pub struct PhysicalDeviceMaintenance6Properties {
17823    pub s_type: StructureType,
17824    pub next: *mut c_void,
17825    pub block_texel_view_compatible_multiple_layers: Bool32,
17826    pub max_combined_image_sampler_descriptor_count: u32,
17827    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
17828}
17829
17830impl Default for PhysicalDeviceMaintenance6Properties {
17831    #[inline]
17832    fn default() -> Self {
17833        Self {
17834            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
17835            next: ptr::null_mut(),
17836            block_texel_view_compatible_multiple_layers: Bool32::default(),
17837            max_combined_image_sampler_descriptor_count: u32::default(),
17838            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
17839        }
17840    }
17841}
17842
17843unsafe impl Send for PhysicalDeviceMaintenance6Properties {}
17844unsafe impl Sync for PhysicalDeviceMaintenance6Properties {}
17845
17846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
17847#[repr(C)]
17848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17849pub struct PhysicalDeviceMaintenance7FeaturesKHR {
17850    pub s_type: StructureType,
17851    pub next: *mut c_void,
17852    pub maintenance7: Bool32,
17853}
17854
17855impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
17856    #[inline]
17857    fn default() -> Self {
17858        Self {
17859            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
17860            next: ptr::null_mut(),
17861            maintenance7: Bool32::default(),
17862        }
17863    }
17864}
17865
17866unsafe impl Send for PhysicalDeviceMaintenance7FeaturesKHR {}
17867unsafe impl Sync for PhysicalDeviceMaintenance7FeaturesKHR {}
17868
17869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
17870#[repr(C)]
17871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17872pub struct PhysicalDeviceMaintenance7PropertiesKHR {
17873    pub s_type: StructureType,
17874    pub next: *mut c_void,
17875    pub robust_fragment_shading_rate_attachment_access: Bool32,
17876    pub separate_depth_stencil_attachment_access: Bool32,
17877    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
17878    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
17879    pub max_descriptor_set_total_buffers_dynamic: u32,
17880    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
17881    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
17882    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
17883}
17884
17885impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
17886    #[inline]
17887    fn default() -> Self {
17888        Self {
17889            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
17890            next: ptr::null_mut(),
17891            robust_fragment_shading_rate_attachment_access: Bool32::default(),
17892            separate_depth_stencil_attachment_access: Bool32::default(),
17893            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
17894            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
17895            max_descriptor_set_total_buffers_dynamic: u32::default(),
17896            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
17897            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
17898            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
17899        }
17900    }
17901}
17902
17903unsafe impl Send for PhysicalDeviceMaintenance7PropertiesKHR {}
17904unsafe impl Sync for PhysicalDeviceMaintenance7PropertiesKHR {}
17905
17906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
17907#[repr(C)]
17908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17909pub struct PhysicalDeviceMaintenance8FeaturesKHR {
17910    pub s_type: StructureType,
17911    pub next: *mut c_void,
17912    pub maintenance8: Bool32,
17913}
17914
17915impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
17916    #[inline]
17917    fn default() -> Self {
17918        Self {
17919            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
17920            next: ptr::null_mut(),
17921            maintenance8: Bool32::default(),
17922        }
17923    }
17924}
17925
17926unsafe impl Send for PhysicalDeviceMaintenance8FeaturesKHR {}
17927unsafe impl Sync for PhysicalDeviceMaintenance8FeaturesKHR {}
17928
17929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html>
17930#[repr(C)]
17931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17932pub struct PhysicalDeviceMaintenance9FeaturesKHR {
17933    pub s_type: StructureType,
17934    pub next: *mut c_void,
17935    pub maintenance9: Bool32,
17936}
17937
17938impl Default for PhysicalDeviceMaintenance9FeaturesKHR {
17939    #[inline]
17940    fn default() -> Self {
17941        Self {
17942            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR,
17943            next: ptr::null_mut(),
17944            maintenance9: Bool32::default(),
17945        }
17946    }
17947}
17948
17949unsafe impl Send for PhysicalDeviceMaintenance9FeaturesKHR {}
17950unsafe impl Sync for PhysicalDeviceMaintenance9FeaturesKHR {}
17951
17952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html>
17953#[repr(C)]
17954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17955pub struct PhysicalDeviceMaintenance9PropertiesKHR {
17956    pub s_type: StructureType,
17957    pub next: *mut c_void,
17958    pub image_2d_view_of_3d_sparse: Bool32,
17959    pub default_vertex_attribute_value: DefaultVertexAttributeValueKHR,
17960}
17961
17962impl Default for PhysicalDeviceMaintenance9PropertiesKHR {
17963    #[inline]
17964    fn default() -> Self {
17965        Self {
17966            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR,
17967            next: ptr::null_mut(),
17968            image_2d_view_of_3d_sparse: Bool32::default(),
17969            default_vertex_attribute_value: DefaultVertexAttributeValueKHR::default(),
17970        }
17971    }
17972}
17973
17974unsafe impl Send for PhysicalDeviceMaintenance9PropertiesKHR {}
17975unsafe impl Sync for PhysicalDeviceMaintenance9PropertiesKHR {}
17976
17977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
17978#[repr(C)]
17979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17980pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
17981    pub s_type: StructureType,
17982    pub next: *mut c_void,
17983    pub memory_map_placed: Bool32,
17984    pub memory_map_range_placed: Bool32,
17985    pub memory_unmap_reserve: Bool32,
17986}
17987
17988impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
17989    #[inline]
17990    fn default() -> Self {
17991        Self {
17992            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
17993            next: ptr::null_mut(),
17994            memory_map_placed: Bool32::default(),
17995            memory_map_range_placed: Bool32::default(),
17996            memory_unmap_reserve: Bool32::default(),
17997        }
17998    }
17999}
18000
18001unsafe impl Send for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
18002unsafe impl Sync for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
18003
18004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
18005#[repr(C)]
18006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18007pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
18008    pub s_type: StructureType,
18009    pub next: *mut c_void,
18010    pub min_placed_memory_map_alignment: DeviceSize,
18011}
18012
18013impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
18014    #[inline]
18015    fn default() -> Self {
18016        Self {
18017            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
18018            next: ptr::null_mut(),
18019            min_placed_memory_map_alignment: DeviceSize::default(),
18020        }
18021    }
18022}
18023
18024unsafe impl Send for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
18025unsafe impl Sync for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
18026
18027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
18028#[repr(C)]
18029#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18030pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
18031    pub s_type: StructureType,
18032    pub next: *mut c_void,
18033    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS as usize],
18034    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS as usize],
18035}
18036
18037impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
18038    #[inline]
18039    fn default() -> Self {
18040        Self {
18041            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
18042            next: ptr::null_mut(),
18043            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
18044            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
18045        }
18046    }
18047}
18048
18049unsafe impl Send for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18050unsafe impl Sync for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18051
18052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesEXT.html>
18053#[repr(C)]
18054#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18055pub struct PhysicalDeviceMemoryDecompressionFeaturesEXT {
18056    pub s_type: StructureType,
18057    pub next: *mut c_void,
18058    pub memory_decompression: Bool32,
18059}
18060
18061impl Default for PhysicalDeviceMemoryDecompressionFeaturesEXT {
18062    #[inline]
18063    fn default() -> Self {
18064        Self {
18065            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT,
18066            next: ptr::null_mut(),
18067            memory_decompression: Bool32::default(),
18068        }
18069    }
18070}
18071
18072unsafe impl Send for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18073unsafe impl Sync for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18074
18075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesEXT.html>
18076#[repr(C)]
18077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18078pub struct PhysicalDeviceMemoryDecompressionPropertiesEXT {
18079    pub s_type: StructureType,
18080    pub next: *mut c_void,
18081    pub decompression_methods: MemoryDecompressionMethodFlagsEXT,
18082    pub max_decompression_indirect_count: u64,
18083}
18084
18085impl Default for PhysicalDeviceMemoryDecompressionPropertiesEXT {
18086    #[inline]
18087    fn default() -> Self {
18088        Self {
18089            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT,
18090            next: ptr::null_mut(),
18091            decompression_methods: MemoryDecompressionMethodFlagsEXT::default(),
18092            max_decompression_indirect_count: u64::default(),
18093        }
18094    }
18095}
18096
18097unsafe impl Send for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18098unsafe impl Sync for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18099
18100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
18101#[repr(C)]
18102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18103pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
18104    pub s_type: StructureType,
18105    pub next: *mut c_void,
18106    pub memory_priority: Bool32,
18107}
18108
18109impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
18110    #[inline]
18111    fn default() -> Self {
18112        Self {
18113            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
18114            next: ptr::null_mut(),
18115            memory_priority: Bool32::default(),
18116        }
18117    }
18118}
18119
18120unsafe impl Send for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18121unsafe impl Sync for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18122
18123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
18124#[repr(C)]
18125#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
18126pub struct PhysicalDeviceMemoryProperties {
18127    pub memory_type_count: u32,
18128    pub memory_types: [MemoryType; MAX_MEMORY_TYPES as usize],
18129    pub memory_heap_count: u32,
18130    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS as usize],
18131}
18132
18133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
18134#[repr(C)]
18135#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18136pub struct PhysicalDeviceMemoryProperties2 {
18137    pub s_type: StructureType,
18138    pub next: *mut c_void,
18139    pub memory_properties: PhysicalDeviceMemoryProperties,
18140}
18141
18142impl Default for PhysicalDeviceMemoryProperties2 {
18143    #[inline]
18144    fn default() -> Self {
18145        Self {
18146            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
18147            next: ptr::null_mut(),
18148            memory_properties: PhysicalDeviceMemoryProperties::default(),
18149        }
18150    }
18151}
18152
18153unsafe impl Send for PhysicalDeviceMemoryProperties2 {}
18154unsafe impl Sync for PhysicalDeviceMemoryProperties2 {}
18155
18156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
18157#[repr(C)]
18158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18159pub struct PhysicalDeviceMeshShaderFeaturesEXT {
18160    pub s_type: StructureType,
18161    pub next: *mut c_void,
18162    pub task_shader: Bool32,
18163    pub mesh_shader: Bool32,
18164    pub multiview_mesh_shader: Bool32,
18165    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
18166    pub mesh_shader_queries: Bool32,
18167}
18168
18169impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
18170    #[inline]
18171    fn default() -> Self {
18172        Self {
18173            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
18174            next: ptr::null_mut(),
18175            task_shader: Bool32::default(),
18176            mesh_shader: Bool32::default(),
18177            multiview_mesh_shader: Bool32::default(),
18178            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
18179            mesh_shader_queries: Bool32::default(),
18180        }
18181    }
18182}
18183
18184unsafe impl Send for PhysicalDeviceMeshShaderFeaturesEXT {}
18185unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesEXT {}
18186
18187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
18188#[repr(C)]
18189#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18190pub struct PhysicalDeviceMeshShaderFeaturesNV {
18191    pub s_type: StructureType,
18192    pub next: *mut c_void,
18193    pub task_shader: Bool32,
18194    pub mesh_shader: Bool32,
18195}
18196
18197impl Default for PhysicalDeviceMeshShaderFeaturesNV {
18198    #[inline]
18199    fn default() -> Self {
18200        Self {
18201            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
18202            next: ptr::null_mut(),
18203            task_shader: Bool32::default(),
18204            mesh_shader: Bool32::default(),
18205        }
18206    }
18207}
18208
18209unsafe impl Send for PhysicalDeviceMeshShaderFeaturesNV {}
18210unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesNV {}
18211
18212/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
18213#[repr(C)]
18214#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18215pub struct PhysicalDeviceMeshShaderPropertiesEXT {
18216    pub s_type: StructureType,
18217    pub next: *mut c_void,
18218    pub max_task_work_group_total_count: u32,
18219    pub max_task_work_group_count: [u32; 3],
18220    pub max_task_work_group_invocations: u32,
18221    pub max_task_work_group_size: [u32; 3],
18222    pub max_task_payload_size: u32,
18223    pub max_task_shared_memory_size: u32,
18224    pub max_task_payload_and_shared_memory_size: u32,
18225    pub max_mesh_work_group_total_count: u32,
18226    pub max_mesh_work_group_count: [u32; 3],
18227    pub max_mesh_work_group_invocations: u32,
18228    pub max_mesh_work_group_size: [u32; 3],
18229    pub max_mesh_shared_memory_size: u32,
18230    pub max_mesh_payload_and_shared_memory_size: u32,
18231    pub max_mesh_output_memory_size: u32,
18232    pub max_mesh_payload_and_output_memory_size: u32,
18233    pub max_mesh_output_components: u32,
18234    pub max_mesh_output_vertices: u32,
18235    pub max_mesh_output_primitives: u32,
18236    pub max_mesh_output_layers: u32,
18237    pub max_mesh_multiview_view_count: u32,
18238    pub mesh_output_per_vertex_granularity: u32,
18239    pub mesh_output_per_primitive_granularity: u32,
18240    pub max_preferred_task_work_group_invocations: u32,
18241    pub max_preferred_mesh_work_group_invocations: u32,
18242    pub prefers_local_invocation_vertex_output: Bool32,
18243    pub prefers_local_invocation_primitive_output: Bool32,
18244    pub prefers_compact_vertex_output: Bool32,
18245    pub prefers_compact_primitive_output: Bool32,
18246}
18247
18248impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
18249    #[inline]
18250    fn default() -> Self {
18251        Self {
18252            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
18253            next: ptr::null_mut(),
18254            max_task_work_group_total_count: u32::default(),
18255            max_task_work_group_count: [u32::default(); 3],
18256            max_task_work_group_invocations: u32::default(),
18257            max_task_work_group_size: [u32::default(); 3],
18258            max_task_payload_size: u32::default(),
18259            max_task_shared_memory_size: u32::default(),
18260            max_task_payload_and_shared_memory_size: u32::default(),
18261            max_mesh_work_group_total_count: u32::default(),
18262            max_mesh_work_group_count: [u32::default(); 3],
18263            max_mesh_work_group_invocations: u32::default(),
18264            max_mesh_work_group_size: [u32::default(); 3],
18265            max_mesh_shared_memory_size: u32::default(),
18266            max_mesh_payload_and_shared_memory_size: u32::default(),
18267            max_mesh_output_memory_size: u32::default(),
18268            max_mesh_payload_and_output_memory_size: u32::default(),
18269            max_mesh_output_components: u32::default(),
18270            max_mesh_output_vertices: u32::default(),
18271            max_mesh_output_primitives: u32::default(),
18272            max_mesh_output_layers: u32::default(),
18273            max_mesh_multiview_view_count: u32::default(),
18274            mesh_output_per_vertex_granularity: u32::default(),
18275            mesh_output_per_primitive_granularity: u32::default(),
18276            max_preferred_task_work_group_invocations: u32::default(),
18277            max_preferred_mesh_work_group_invocations: u32::default(),
18278            prefers_local_invocation_vertex_output: Bool32::default(),
18279            prefers_local_invocation_primitive_output: Bool32::default(),
18280            prefers_compact_vertex_output: Bool32::default(),
18281            prefers_compact_primitive_output: Bool32::default(),
18282        }
18283    }
18284}
18285
18286unsafe impl Send for PhysicalDeviceMeshShaderPropertiesEXT {}
18287unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesEXT {}
18288
18289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
18290#[repr(C)]
18291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18292pub struct PhysicalDeviceMeshShaderPropertiesNV {
18293    pub s_type: StructureType,
18294    pub next: *mut c_void,
18295    pub max_draw_mesh_tasks_count: u32,
18296    pub max_task_work_group_invocations: u32,
18297    pub max_task_work_group_size: [u32; 3],
18298    pub max_task_total_memory_size: u32,
18299    pub max_task_output_count: u32,
18300    pub max_mesh_work_group_invocations: u32,
18301    pub max_mesh_work_group_size: [u32; 3],
18302    pub max_mesh_total_memory_size: u32,
18303    pub max_mesh_output_vertices: u32,
18304    pub max_mesh_output_primitives: u32,
18305    pub max_mesh_multiview_view_count: u32,
18306    pub mesh_output_per_vertex_granularity: u32,
18307    pub mesh_output_per_primitive_granularity: u32,
18308}
18309
18310impl Default for PhysicalDeviceMeshShaderPropertiesNV {
18311    #[inline]
18312    fn default() -> Self {
18313        Self {
18314            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
18315            next: ptr::null_mut(),
18316            max_draw_mesh_tasks_count: u32::default(),
18317            max_task_work_group_invocations: u32::default(),
18318            max_task_work_group_size: [u32::default(); 3],
18319            max_task_total_memory_size: u32::default(),
18320            max_task_output_count: u32::default(),
18321            max_mesh_work_group_invocations: u32::default(),
18322            max_mesh_work_group_size: [u32::default(); 3],
18323            max_mesh_total_memory_size: u32::default(),
18324            max_mesh_output_vertices: u32::default(),
18325            max_mesh_output_primitives: u32::default(),
18326            max_mesh_multiview_view_count: u32::default(),
18327            mesh_output_per_vertex_granularity: u32::default(),
18328            mesh_output_per_primitive_granularity: u32::default(),
18329        }
18330    }
18331}
18332
18333unsafe impl Send for PhysicalDeviceMeshShaderPropertiesNV {}
18334unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesNV {}
18335
18336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
18337#[repr(C)]
18338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18339pub struct PhysicalDeviceMultiDrawFeaturesEXT {
18340    pub s_type: StructureType,
18341    pub next: *mut c_void,
18342    pub multi_draw: Bool32,
18343}
18344
18345impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
18346    #[inline]
18347    fn default() -> Self {
18348        Self {
18349            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
18350            next: ptr::null_mut(),
18351            multi_draw: Bool32::default(),
18352        }
18353    }
18354}
18355
18356unsafe impl Send for PhysicalDeviceMultiDrawFeaturesEXT {}
18357unsafe impl Sync for PhysicalDeviceMultiDrawFeaturesEXT {}
18358
18359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
18360#[repr(C)]
18361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18362pub struct PhysicalDeviceMultiDrawPropertiesEXT {
18363    pub s_type: StructureType,
18364    pub next: *mut c_void,
18365    pub max_multi_draw_count: u32,
18366}
18367
18368impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
18369    #[inline]
18370    fn default() -> Self {
18371        Self {
18372            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
18373            next: ptr::null_mut(),
18374            max_multi_draw_count: u32::default(),
18375        }
18376    }
18377}
18378
18379unsafe impl Send for PhysicalDeviceMultiDrawPropertiesEXT {}
18380unsafe impl Sync for PhysicalDeviceMultiDrawPropertiesEXT {}
18381
18382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
18383#[repr(C)]
18384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18385pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18386    pub s_type: StructureType,
18387    pub next: *mut c_void,
18388    pub multisampled_render_to_single_sampled: Bool32,
18389}
18390
18391impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18392    #[inline]
18393    fn default() -> Self {
18394        Self {
18395            s_type:
18396                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
18397            next: ptr::null_mut(),
18398            multisampled_render_to_single_sampled: Bool32::default(),
18399        }
18400    }
18401}
18402
18403unsafe impl Send for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18404unsafe impl Sync for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18405
18406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
18407#[repr(C)]
18408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18409pub struct PhysicalDeviceMultiviewFeatures {
18410    pub s_type: StructureType,
18411    pub next: *mut c_void,
18412    pub multiview: Bool32,
18413    pub multiview_geometry_shader: Bool32,
18414    pub multiview_tessellation_shader: Bool32,
18415}
18416
18417impl Default for PhysicalDeviceMultiviewFeatures {
18418    #[inline]
18419    fn default() -> Self {
18420        Self {
18421            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
18422            next: ptr::null_mut(),
18423            multiview: Bool32::default(),
18424            multiview_geometry_shader: Bool32::default(),
18425            multiview_tessellation_shader: Bool32::default(),
18426        }
18427    }
18428}
18429
18430unsafe impl Send for PhysicalDeviceMultiviewFeatures {}
18431unsafe impl Sync for PhysicalDeviceMultiviewFeatures {}
18432
18433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
18434#[repr(C)]
18435#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18436pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18437    pub s_type: StructureType,
18438    pub next: *mut c_void,
18439    pub per_view_position_all_components: Bool32,
18440}
18441
18442impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18443    #[inline]
18444    fn default() -> Self {
18445        Self {
18446            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
18447            next: ptr::null_mut(),
18448            per_view_position_all_components: Bool32::default(),
18449        }
18450    }
18451}
18452
18453unsafe impl Send for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18454unsafe impl Sync for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18455
18456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
18457#[repr(C)]
18458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18459pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18460    pub s_type: StructureType,
18461    pub next: *mut c_void,
18462    pub multiview_per_view_render_areas: Bool32,
18463}
18464
18465impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18466    #[inline]
18467    fn default() -> Self {
18468        Self {
18469            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
18470            next: ptr::null_mut(),
18471            multiview_per_view_render_areas: Bool32::default(),
18472        }
18473    }
18474}
18475
18476unsafe impl Send for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18477unsafe impl Sync for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18478
18479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
18480#[repr(C)]
18481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18482pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18483    pub s_type: StructureType,
18484    pub next: *mut c_void,
18485    pub multiview_per_view_viewports: Bool32,
18486}
18487
18488impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18489    #[inline]
18490    fn default() -> Self {
18491        Self {
18492            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
18493            next: ptr::null_mut(),
18494            multiview_per_view_viewports: Bool32::default(),
18495        }
18496    }
18497}
18498
18499unsafe impl Send for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18500unsafe impl Sync for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18501
18502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
18503#[repr(C)]
18504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18505pub struct PhysicalDeviceMultiviewProperties {
18506    pub s_type: StructureType,
18507    pub next: *mut c_void,
18508    pub max_multiview_view_count: u32,
18509    pub max_multiview_instance_index: u32,
18510}
18511
18512impl Default for PhysicalDeviceMultiviewProperties {
18513    #[inline]
18514    fn default() -> Self {
18515        Self {
18516            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
18517            next: ptr::null_mut(),
18518            max_multiview_view_count: u32::default(),
18519            max_multiview_instance_index: u32::default(),
18520        }
18521    }
18522}
18523
18524unsafe impl Send for PhysicalDeviceMultiviewProperties {}
18525unsafe impl Sync for PhysicalDeviceMultiviewProperties {}
18526
18527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
18528#[repr(C)]
18529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18530pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18531    pub s_type: StructureType,
18532    pub next: *mut c_void,
18533    pub mutable_descriptor_type: Bool32,
18534}
18535
18536impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18537    #[inline]
18538    fn default() -> Self {
18539        Self {
18540            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
18541            next: ptr::null_mut(),
18542            mutable_descriptor_type: Bool32::default(),
18543        }
18544    }
18545}
18546
18547unsafe impl Send for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18548unsafe impl Sync for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18549
18550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
18551#[repr(C)]
18552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18553pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
18554    pub s_type: StructureType,
18555    pub next: *mut c_void,
18556    pub nested_command_buffer: Bool32,
18557    pub nested_command_buffer_rendering: Bool32,
18558    pub nested_command_buffer_simultaneous_use: Bool32,
18559}
18560
18561impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
18562    #[inline]
18563    fn default() -> Self {
18564        Self {
18565            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
18566            next: ptr::null_mut(),
18567            nested_command_buffer: Bool32::default(),
18568            nested_command_buffer_rendering: Bool32::default(),
18569            nested_command_buffer_simultaneous_use: Bool32::default(),
18570        }
18571    }
18572}
18573
18574unsafe impl Send for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18575unsafe impl Sync for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18576
18577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
18578#[repr(C)]
18579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18580pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
18581    pub s_type: StructureType,
18582    pub next: *mut c_void,
18583    pub max_command_buffer_nesting_level: u32,
18584}
18585
18586impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
18587    #[inline]
18588    fn default() -> Self {
18589        Self {
18590            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
18591            next: ptr::null_mut(),
18592            max_command_buffer_nesting_level: u32::default(),
18593        }
18594    }
18595}
18596
18597unsafe impl Send for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18598unsafe impl Sync for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18599
18600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
18601#[repr(C)]
18602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18603pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18604    pub s_type: StructureType,
18605    pub next: *mut c_void,
18606    pub non_seamless_cube_map: Bool32,
18607}
18608
18609impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18610    #[inline]
18611    fn default() -> Self {
18612        Self {
18613            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
18614            next: ptr::null_mut(),
18615            non_seamless_cube_map: Bool32::default(),
18616        }
18617    }
18618}
18619
18620unsafe impl Send for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18621unsafe impl Sync for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18622
18623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
18624#[repr(C)]
18625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18626pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
18627    pub s_type: StructureType,
18628    pub next: *mut c_void,
18629    pub micromap: Bool32,
18630    pub micromap_capture_replay: Bool32,
18631    pub micromap_host_commands: Bool32,
18632}
18633
18634impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
18635    #[inline]
18636    fn default() -> Self {
18637        Self {
18638            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
18639            next: ptr::null_mut(),
18640            micromap: Bool32::default(),
18641            micromap_capture_replay: Bool32::default(),
18642            micromap_host_commands: Bool32::default(),
18643        }
18644    }
18645}
18646
18647unsafe impl Send for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18648unsafe impl Sync for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18649
18650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
18651#[repr(C)]
18652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18653pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
18654    pub s_type: StructureType,
18655    pub next: *mut c_void,
18656    pub max_opacity2_state_subdivision_level: u32,
18657    pub max_opacity4_state_subdivision_level: u32,
18658}
18659
18660impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
18661    #[inline]
18662    fn default() -> Self {
18663        Self {
18664            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
18665            next: ptr::null_mut(),
18666            max_opacity2_state_subdivision_level: u32::default(),
18667            max_opacity4_state_subdivision_level: u32::default(),
18668        }
18669    }
18670}
18671
18672unsafe impl Send for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18673unsafe impl Sync for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18674
18675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
18676#[repr(C)]
18677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18678pub struct PhysicalDeviceOpticalFlowFeaturesNV {
18679    pub s_type: StructureType,
18680    pub next: *mut c_void,
18681    pub optical_flow: Bool32,
18682}
18683
18684impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
18685    #[inline]
18686    fn default() -> Self {
18687        Self {
18688            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
18689            next: ptr::null_mut(),
18690            optical_flow: Bool32::default(),
18691        }
18692    }
18693}
18694
18695unsafe impl Send for PhysicalDeviceOpticalFlowFeaturesNV {}
18696unsafe impl Sync for PhysicalDeviceOpticalFlowFeaturesNV {}
18697
18698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
18699#[repr(C)]
18700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18701pub struct PhysicalDeviceOpticalFlowPropertiesNV {
18702    pub s_type: StructureType,
18703    pub next: *mut c_void,
18704    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
18705    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
18706    pub hint_supported: Bool32,
18707    pub cost_supported: Bool32,
18708    pub bidirectional_flow_supported: Bool32,
18709    pub global_flow_supported: Bool32,
18710    pub min_width: u32,
18711    pub min_height: u32,
18712    pub max_width: u32,
18713    pub max_height: u32,
18714    pub max_num_regions_of_interest: u32,
18715}
18716
18717impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
18718    #[inline]
18719    fn default() -> Self {
18720        Self {
18721            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
18722            next: ptr::null_mut(),
18723            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18724            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18725            hint_supported: Bool32::default(),
18726            cost_supported: Bool32::default(),
18727            bidirectional_flow_supported: Bool32::default(),
18728            global_flow_supported: Bool32::default(),
18729            min_width: u32::default(),
18730            min_height: u32::default(),
18731            max_width: u32::default(),
18732            max_height: u32::default(),
18733            max_num_regions_of_interest: u32::default(),
18734        }
18735    }
18736}
18737
18738unsafe impl Send for PhysicalDeviceOpticalFlowPropertiesNV {}
18739unsafe impl Sync for PhysicalDeviceOpticalFlowPropertiesNV {}
18740
18741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
18742#[repr(C)]
18743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18744pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
18745    pub s_type: StructureType,
18746    pub next: *mut c_void,
18747    pub pci_domain: u32,
18748    pub pci_bus: u32,
18749    pub pci_device: u32,
18750    pub pci_function: u32,
18751}
18752
18753impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
18754    #[inline]
18755    fn default() -> Self {
18756        Self {
18757            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
18758            next: ptr::null_mut(),
18759            pci_domain: u32::default(),
18760            pci_bus: u32::default(),
18761            pci_device: u32::default(),
18762            pci_function: u32::default(),
18763        }
18764    }
18765}
18766
18767unsafe impl Send for PhysicalDevicePCIBusInfoPropertiesEXT {}
18768unsafe impl Sync for PhysicalDevicePCIBusInfoPropertiesEXT {}
18769
18770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
18771#[repr(C)]
18772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18773pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18774    pub s_type: StructureType,
18775    pub next: *mut c_void,
18776    pub pageable_device_local_memory: Bool32,
18777}
18778
18779impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18780    #[inline]
18781    fn default() -> Self {
18782        Self {
18783            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
18784            next: ptr::null_mut(),
18785            pageable_device_local_memory: Bool32::default(),
18786        }
18787    }
18788}
18789
18790unsafe impl Send for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18791unsafe impl Sync for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18792
18793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
18794#[repr(C)]
18795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18796pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18797    pub s_type: StructureType,
18798    pub next: *mut c_void,
18799    pub partitioned_acceleration_structure: Bool32,
18800}
18801
18802impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18803    #[inline]
18804    fn default() -> Self {
18805        Self {
18806            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
18807            next: ptr::null_mut(),
18808            partitioned_acceleration_structure: Bool32::default(),
18809        }
18810    }
18811}
18812
18813unsafe impl Send for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
18814unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
18815
18816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
18817#[repr(C)]
18818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18819pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
18820    pub s_type: StructureType,
18821    pub next: *mut c_void,
18822    pub max_partition_count: u32,
18823}
18824
18825impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
18826    #[inline]
18827    fn default() -> Self {
18828        Self {
18829            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
18830            next: ptr::null_mut(),
18831            max_partition_count: u32::default(),
18832        }
18833    }
18834}
18835
18836unsafe impl Send for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
18837unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
18838
18839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
18840#[repr(C)]
18841#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18842pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
18843    pub s_type: StructureType,
18844    pub next: *mut c_void,
18845    pub per_stage_descriptor_set: Bool32,
18846    pub dynamic_pipeline_layout: Bool32,
18847}
18848
18849impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
18850    #[inline]
18851    fn default() -> Self {
18852        Self {
18853            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
18854            next: ptr::null_mut(),
18855            per_stage_descriptor_set: Bool32::default(),
18856            dynamic_pipeline_layout: Bool32::default(),
18857        }
18858    }
18859}
18860
18861unsafe impl Send for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
18862unsafe impl Sync for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
18863
18864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionFeaturesARM.html>
18865#[repr(C)]
18866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18867pub struct PhysicalDevicePerformanceCountersByRegionFeaturesARM {
18868    pub s_type: StructureType,
18869    pub next: *mut c_void,
18870    pub performance_counters_by_region: Bool32,
18871}
18872
18873impl Default for PhysicalDevicePerformanceCountersByRegionFeaturesARM {
18874    #[inline]
18875    fn default() -> Self {
18876        Self {
18877            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM,
18878            next: ptr::null_mut(),
18879            performance_counters_by_region: Bool32::default(),
18880        }
18881    }
18882}
18883
18884unsafe impl Send for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
18885unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
18886
18887/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionPropertiesARM.html>
18888#[repr(C)]
18889#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18890pub struct PhysicalDevicePerformanceCountersByRegionPropertiesARM {
18891    pub s_type: StructureType,
18892    pub next: *mut c_void,
18893    pub max_per_region_performance_counters: u32,
18894    pub performance_counter_region_size: Extent2D,
18895    pub row_stride_alignment: u32,
18896    pub region_alignment: u32,
18897    pub identity_transform_order: Bool32,
18898}
18899
18900impl Default for PhysicalDevicePerformanceCountersByRegionPropertiesARM {
18901    #[inline]
18902    fn default() -> Self {
18903        Self {
18904            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM,
18905            next: ptr::null_mut(),
18906            max_per_region_performance_counters: u32::default(),
18907            performance_counter_region_size: Extent2D::default(),
18908            row_stride_alignment: u32::default(),
18909            region_alignment: u32::default(),
18910            identity_transform_order: Bool32::default(),
18911        }
18912    }
18913}
18914
18915unsafe impl Send for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
18916unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
18917
18918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
18919#[repr(C)]
18920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18921pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
18922    pub s_type: StructureType,
18923    pub next: *mut c_void,
18924    pub performance_counter_query_pools: Bool32,
18925    pub performance_counter_multiple_query_pools: Bool32,
18926}
18927
18928impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
18929    #[inline]
18930    fn default() -> Self {
18931        Self {
18932            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
18933            next: ptr::null_mut(),
18934            performance_counter_query_pools: Bool32::default(),
18935            performance_counter_multiple_query_pools: Bool32::default(),
18936        }
18937    }
18938}
18939
18940unsafe impl Send for PhysicalDevicePerformanceQueryFeaturesKHR {}
18941unsafe impl Sync for PhysicalDevicePerformanceQueryFeaturesKHR {}
18942
18943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
18944#[repr(C)]
18945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18946pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
18947    pub s_type: StructureType,
18948    pub next: *mut c_void,
18949    pub allow_command_buffer_query_copies: Bool32,
18950}
18951
18952impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
18953    #[inline]
18954    fn default() -> Self {
18955        Self {
18956            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
18957            next: ptr::null_mut(),
18958            allow_command_buffer_query_copies: Bool32::default(),
18959        }
18960    }
18961}
18962
18963unsafe impl Send for PhysicalDevicePerformanceQueryPropertiesKHR {}
18964unsafe impl Sync for PhysicalDevicePerformanceQueryPropertiesKHR {}
18965
18966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
18967#[repr(C)]
18968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18969pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
18970    pub s_type: StructureType,
18971    pub next: *mut c_void,
18972    pub pipeline_binaries: Bool32,
18973}
18974
18975impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
18976    #[inline]
18977    fn default() -> Self {
18978        Self {
18979            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
18980            next: ptr::null_mut(),
18981            pipeline_binaries: Bool32::default(),
18982        }
18983    }
18984}
18985
18986unsafe impl Send for PhysicalDevicePipelineBinaryFeaturesKHR {}
18987unsafe impl Sync for PhysicalDevicePipelineBinaryFeaturesKHR {}
18988
18989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
18990#[repr(C)]
18991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18992pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
18993    pub s_type: StructureType,
18994    pub next: *mut c_void,
18995    pub pipeline_binary_internal_cache: Bool32,
18996    pub pipeline_binary_internal_cache_control: Bool32,
18997    pub pipeline_binary_prefers_internal_cache: Bool32,
18998    pub pipeline_binary_precompiled_internal_cache: Bool32,
18999    pub pipeline_binary_compressed_data: Bool32,
19000}
19001
19002impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
19003    #[inline]
19004    fn default() -> Self {
19005        Self {
19006            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
19007            next: ptr::null_mut(),
19008            pipeline_binary_internal_cache: Bool32::default(),
19009            pipeline_binary_internal_cache_control: Bool32::default(),
19010            pipeline_binary_prefers_internal_cache: Bool32::default(),
19011            pipeline_binary_precompiled_internal_cache: Bool32::default(),
19012            pipeline_binary_compressed_data: Bool32::default(),
19013        }
19014    }
19015}
19016
19017unsafe impl Send for PhysicalDevicePipelineBinaryPropertiesKHR {}
19018unsafe impl Sync for PhysicalDevicePipelineBinaryPropertiesKHR {}
19019
19020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html>
19021#[repr(C)]
19022#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19023pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
19024    pub s_type: StructureType,
19025    pub next: *mut c_void,
19026    pub pipeline_cache_incremental_mode: Bool32,
19027}
19028
19029impl Default for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
19030    #[inline]
19031    fn default() -> Self {
19032        Self {
19033            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC,
19034            next: ptr::null_mut(),
19035            pipeline_cache_incremental_mode: Bool32::default(),
19036        }
19037    }
19038}
19039
19040unsafe impl Send for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
19041unsafe impl Sync for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
19042
19043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
19044#[repr(C)]
19045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19046pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
19047    pub s_type: StructureType,
19048    pub next: *mut c_void,
19049    pub pipeline_creation_cache_control: Bool32,
19050}
19051
19052impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
19053    #[inline]
19054    fn default() -> Self {
19055        Self {
19056            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
19057            next: ptr::null_mut(),
19058            pipeline_creation_cache_control: Bool32::default(),
19059        }
19060    }
19061}
19062
19063unsafe impl Send for PhysicalDevicePipelineCreationCacheControlFeatures {}
19064unsafe impl Sync for PhysicalDevicePipelineCreationCacheControlFeatures {}
19065
19066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
19067#[repr(C)]
19068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19069pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19070    pub s_type: StructureType,
19071    pub next: *mut c_void,
19072    pub pipeline_executable_info: Bool32,
19073}
19074
19075impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19076    #[inline]
19077    fn default() -> Self {
19078        Self {
19079            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
19080            next: ptr::null_mut(),
19081            pipeline_executable_info: Bool32::default(),
19082        }
19083    }
19084}
19085
19086unsafe impl Send for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19087unsafe impl Sync for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19088
19089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
19090#[repr(C)]
19091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19092pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19093    pub s_type: StructureType,
19094    pub next: *mut c_void,
19095    pub pipeline_library_group_handles: Bool32,
19096}
19097
19098impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19099    #[inline]
19100    fn default() -> Self {
19101        Self {
19102            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
19103            next: ptr::null_mut(),
19104            pipeline_library_group_handles: Bool32::default(),
19105        }
19106    }
19107}
19108
19109unsafe impl Send for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19110unsafe impl Sync for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19111
19112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
19113#[repr(C)]
19114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19115pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19116    pub s_type: StructureType,
19117    pub next: *mut c_void,
19118    pub pipeline_opacity_micromap: Bool32,
19119}
19120
19121impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19122    #[inline]
19123    fn default() -> Self {
19124        Self {
19125            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
19126            next: ptr::null_mut(),
19127            pipeline_opacity_micromap: Bool32::default(),
19128        }
19129    }
19130}
19131
19132unsafe impl Send for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19133unsafe impl Sync for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19134
19135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
19136#[repr(C)]
19137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19138pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
19139    pub s_type: StructureType,
19140    pub next: *mut c_void,
19141    pub pipeline_properties_identifier: Bool32,
19142}
19143
19144impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
19145    #[inline]
19146    fn default() -> Self {
19147        Self {
19148            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
19149            next: ptr::null_mut(),
19150            pipeline_properties_identifier: Bool32::default(),
19151        }
19152    }
19153}
19154
19155unsafe impl Send for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19156unsafe impl Sync for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19157
19158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
19159#[repr(C)]
19160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19161pub struct PhysicalDevicePipelineProtectedAccessFeatures {
19162    pub s_type: StructureType,
19163    pub next: *mut c_void,
19164    pub pipeline_protected_access: Bool32,
19165}
19166
19167impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
19168    #[inline]
19169    fn default() -> Self {
19170        Self {
19171            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
19172            next: ptr::null_mut(),
19173            pipeline_protected_access: Bool32::default(),
19174        }
19175    }
19176}
19177
19178unsafe impl Send for PhysicalDevicePipelineProtectedAccessFeatures {}
19179unsafe impl Sync for PhysicalDevicePipelineProtectedAccessFeatures {}
19180
19181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
19182#[repr(C)]
19183#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19184pub struct PhysicalDevicePipelineRobustnessFeatures {
19185    pub s_type: StructureType,
19186    pub next: *mut c_void,
19187    pub pipeline_robustness: Bool32,
19188}
19189
19190impl Default for PhysicalDevicePipelineRobustnessFeatures {
19191    #[inline]
19192    fn default() -> Self {
19193        Self {
19194            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
19195            next: ptr::null_mut(),
19196            pipeline_robustness: Bool32::default(),
19197        }
19198    }
19199}
19200
19201unsafe impl Send for PhysicalDevicePipelineRobustnessFeatures {}
19202unsafe impl Sync for PhysicalDevicePipelineRobustnessFeatures {}
19203
19204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
19205#[repr(C)]
19206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19207pub struct PhysicalDevicePipelineRobustnessProperties {
19208    pub s_type: StructureType,
19209    pub next: *mut c_void,
19210    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
19211    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
19212    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
19213    pub default_robustness_images: PipelineRobustnessImageBehavior,
19214}
19215
19216impl Default for PhysicalDevicePipelineRobustnessProperties {
19217    #[inline]
19218    fn default() -> Self {
19219        Self {
19220            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
19221            next: ptr::null_mut(),
19222            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
19223            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
19224            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
19225            default_robustness_images: PipelineRobustnessImageBehavior::default(),
19226        }
19227    }
19228}
19229
19230unsafe impl Send for PhysicalDevicePipelineRobustnessProperties {}
19231unsafe impl Sync for PhysicalDevicePipelineRobustnessProperties {}
19232
19233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
19234#[repr(C)]
19235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19236pub struct PhysicalDevicePointClippingProperties {
19237    pub s_type: StructureType,
19238    pub next: *mut c_void,
19239    pub point_clipping_behavior: PointClippingBehavior,
19240}
19241
19242impl Default for PhysicalDevicePointClippingProperties {
19243    #[inline]
19244    fn default() -> Self {
19245        Self {
19246            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
19247            next: ptr::null_mut(),
19248            point_clipping_behavior: PointClippingBehavior::default(),
19249        }
19250    }
19251}
19252
19253unsafe impl Send for PhysicalDevicePointClippingProperties {}
19254unsafe impl Sync for PhysicalDevicePointClippingProperties {}
19255
19256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
19257#[repr(C)]
19258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19259pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
19260    pub s_type: StructureType,
19261    pub next: *mut c_void,
19262    pub constant_alpha_color_blend_factors: Bool32,
19263    pub events: Bool32,
19264    pub image_view_format_reinterpretation: Bool32,
19265    pub image_view_format_swizzle: Bool32,
19266    pub image_view_2d_on_3d_image: Bool32,
19267    pub multisample_array_image: Bool32,
19268    pub mutable_comparison_samplers: Bool32,
19269    pub point_polygons: Bool32,
19270    pub sampler_mip_lod_bias: Bool32,
19271    pub separate_stencil_mask_ref: Bool32,
19272    pub shader_sample_rate_interpolation_functions: Bool32,
19273    pub tessellation_isolines: Bool32,
19274    pub tessellation_point_mode: Bool32,
19275    pub triangle_fans: Bool32,
19276    pub vertex_attribute_access_beyond_stride: Bool32,
19277}
19278
19279impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
19280    #[inline]
19281    fn default() -> Self {
19282        Self {
19283            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
19284            next: ptr::null_mut(),
19285            constant_alpha_color_blend_factors: Bool32::default(),
19286            events: Bool32::default(),
19287            image_view_format_reinterpretation: Bool32::default(),
19288            image_view_format_swizzle: Bool32::default(),
19289            image_view_2d_on_3d_image: Bool32::default(),
19290            multisample_array_image: Bool32::default(),
19291            mutable_comparison_samplers: Bool32::default(),
19292            point_polygons: Bool32::default(),
19293            sampler_mip_lod_bias: Bool32::default(),
19294            separate_stencil_mask_ref: Bool32::default(),
19295            shader_sample_rate_interpolation_functions: Bool32::default(),
19296            tessellation_isolines: Bool32::default(),
19297            tessellation_point_mode: Bool32::default(),
19298            triangle_fans: Bool32::default(),
19299            vertex_attribute_access_beyond_stride: Bool32::default(),
19300        }
19301    }
19302}
19303
19304unsafe impl Send for PhysicalDevicePortabilitySubsetFeaturesKHR {}
19305unsafe impl Sync for PhysicalDevicePortabilitySubsetFeaturesKHR {}
19306
19307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
19308#[repr(C)]
19309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19310pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
19311    pub s_type: StructureType,
19312    pub next: *mut c_void,
19313    pub min_vertex_input_binding_stride_alignment: u32,
19314}
19315
19316impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
19317    #[inline]
19318    fn default() -> Self {
19319        Self {
19320            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
19321            next: ptr::null_mut(),
19322            min_vertex_input_binding_stride_alignment: u32::default(),
19323        }
19324    }
19325}
19326
19327unsafe impl Send for PhysicalDevicePortabilitySubsetPropertiesKHR {}
19328unsafe impl Sync for PhysicalDevicePortabilitySubsetPropertiesKHR {}
19329
19330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
19331#[repr(C)]
19332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19333pub struct PhysicalDevicePresentBarrierFeaturesNV {
19334    pub s_type: StructureType,
19335    pub next: *mut c_void,
19336    pub present_barrier: Bool32,
19337}
19338
19339impl Default for PhysicalDevicePresentBarrierFeaturesNV {
19340    #[inline]
19341    fn default() -> Self {
19342        Self {
19343            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
19344            next: ptr::null_mut(),
19345            present_barrier: Bool32::default(),
19346        }
19347    }
19348}
19349
19350unsafe impl Send for PhysicalDevicePresentBarrierFeaturesNV {}
19351unsafe impl Sync for PhysicalDevicePresentBarrierFeaturesNV {}
19352
19353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html>
19354#[repr(C)]
19355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19356pub struct PhysicalDevicePresentId2FeaturesKHR {
19357    pub s_type: StructureType,
19358    pub next: *mut c_void,
19359    pub present_id2: Bool32,
19360}
19361
19362impl Default for PhysicalDevicePresentId2FeaturesKHR {
19363    #[inline]
19364    fn default() -> Self {
19365        Self {
19366            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR,
19367            next: ptr::null_mut(),
19368            present_id2: Bool32::default(),
19369        }
19370    }
19371}
19372
19373unsafe impl Send for PhysicalDevicePresentId2FeaturesKHR {}
19374unsafe impl Sync for PhysicalDevicePresentId2FeaturesKHR {}
19375
19376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
19377#[repr(C)]
19378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19379pub struct PhysicalDevicePresentIdFeaturesKHR {
19380    pub s_type: StructureType,
19381    pub next: *mut c_void,
19382    pub present_id: Bool32,
19383}
19384
19385impl Default for PhysicalDevicePresentIdFeaturesKHR {
19386    #[inline]
19387    fn default() -> Self {
19388        Self {
19389            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
19390            next: ptr::null_mut(),
19391            present_id: Bool32::default(),
19392        }
19393    }
19394}
19395
19396unsafe impl Send for PhysicalDevicePresentIdFeaturesKHR {}
19397unsafe impl Sync for PhysicalDevicePresentIdFeaturesKHR {}
19398
19399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
19400#[repr(C)]
19401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19402pub struct PhysicalDevicePresentMeteringFeaturesNV {
19403    pub s_type: StructureType,
19404    pub next: *mut c_void,
19405    pub present_metering: Bool32,
19406}
19407
19408impl Default for PhysicalDevicePresentMeteringFeaturesNV {
19409    #[inline]
19410    fn default() -> Self {
19411        Self {
19412            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
19413            next: ptr::null_mut(),
19414            present_metering: Bool32::default(),
19415        }
19416    }
19417}
19418
19419unsafe impl Send for PhysicalDevicePresentMeteringFeaturesNV {}
19420unsafe impl Sync for PhysicalDevicePresentMeteringFeaturesNV {}
19421
19422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html>
19423#[repr(C)]
19424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19425pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19426    pub s_type: StructureType,
19427    pub next: *mut c_void,
19428    pub present_mode_fifo_latest_ready: Bool32,
19429}
19430
19431impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19432    #[inline]
19433    fn default() -> Self {
19434        Self {
19435            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,
19436            next: ptr::null_mut(),
19437            present_mode_fifo_latest_ready: Bool32::default(),
19438        }
19439    }
19440}
19441
19442unsafe impl Send for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19443unsafe impl Sync for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19444
19445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html>
19446#[repr(C)]
19447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19448pub struct PhysicalDevicePresentWait2FeaturesKHR {
19449    pub s_type: StructureType,
19450    pub next: *mut c_void,
19451    pub present_wait2: Bool32,
19452}
19453
19454impl Default for PhysicalDevicePresentWait2FeaturesKHR {
19455    #[inline]
19456    fn default() -> Self {
19457        Self {
19458            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR,
19459            next: ptr::null_mut(),
19460            present_wait2: Bool32::default(),
19461        }
19462    }
19463}
19464
19465unsafe impl Send for PhysicalDevicePresentWait2FeaturesKHR {}
19466unsafe impl Sync for PhysicalDevicePresentWait2FeaturesKHR {}
19467
19468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
19469#[repr(C)]
19470#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19471pub struct PhysicalDevicePresentWaitFeaturesKHR {
19472    pub s_type: StructureType,
19473    pub next: *mut c_void,
19474    pub present_wait: Bool32,
19475}
19476
19477impl Default for PhysicalDevicePresentWaitFeaturesKHR {
19478    #[inline]
19479    fn default() -> Self {
19480        Self {
19481            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
19482            next: ptr::null_mut(),
19483            present_wait: Bool32::default(),
19484        }
19485    }
19486}
19487
19488unsafe impl Send for PhysicalDevicePresentWaitFeaturesKHR {}
19489unsafe impl Sync for PhysicalDevicePresentWaitFeaturesKHR {}
19490
19491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentationPropertiesOHOS.html>
19492#[repr(C)]
19493#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19494pub struct PhysicalDevicePresentationPropertiesOHOS {
19495    pub s_type: StructureType,
19496    pub next: *mut c_void,
19497    pub shared_image: Bool32,
19498}
19499
19500impl Default for PhysicalDevicePresentationPropertiesOHOS {
19501    #[inline]
19502    fn default() -> Self {
19503        Self {
19504            s_type: StructureType::PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS,
19505            next: ptr::null_mut(),
19506            shared_image: Bool32::default(),
19507        }
19508    }
19509}
19510
19511unsafe impl Send for PhysicalDevicePresentationPropertiesOHOS {}
19512unsafe impl Sync for PhysicalDevicePresentationPropertiesOHOS {}
19513
19514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
19515#[repr(C)]
19516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19517pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19518    pub s_type: StructureType,
19519    pub next: *mut c_void,
19520    pub primitive_topology_list_restart: Bool32,
19521    pub primitive_topology_patch_list_restart: Bool32,
19522}
19523
19524impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19525    #[inline]
19526    fn default() -> Self {
19527        Self {
19528            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
19529            next: ptr::null_mut(),
19530            primitive_topology_list_restart: Bool32::default(),
19531            primitive_topology_patch_list_restart: Bool32::default(),
19532        }
19533    }
19534}
19535
19536unsafe impl Send for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19537unsafe impl Sync for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19538
19539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
19540#[repr(C)]
19541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19542pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19543    pub s_type: StructureType,
19544    pub next: *mut c_void,
19545    pub primitives_generated_query: Bool32,
19546    pub primitives_generated_query_with_rasterizer_discard: Bool32,
19547    pub primitives_generated_query_with_non_zero_streams: Bool32,
19548}
19549
19550impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19551    #[inline]
19552    fn default() -> Self {
19553        Self {
19554            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
19555            next: ptr::null_mut(),
19556            primitives_generated_query: Bool32::default(),
19557            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
19558            primitives_generated_query_with_non_zero_streams: Bool32::default(),
19559        }
19560    }
19561}
19562
19563unsafe impl Send for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19564unsafe impl Sync for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19565
19566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
19567#[repr(C)]
19568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19569pub struct PhysicalDevicePrivateDataFeatures {
19570    pub s_type: StructureType,
19571    pub next: *mut c_void,
19572    pub private_data: Bool32,
19573}
19574
19575impl Default for PhysicalDevicePrivateDataFeatures {
19576    #[inline]
19577    fn default() -> Self {
19578        Self {
19579            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
19580            next: ptr::null_mut(),
19581            private_data: Bool32::default(),
19582        }
19583    }
19584}
19585
19586unsafe impl Send for PhysicalDevicePrivateDataFeatures {}
19587unsafe impl Sync for PhysicalDevicePrivateDataFeatures {}
19588
19589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
19590#[repr(C)]
19591#[derive(Copy, Clone, Default, Debug, PartialEq)]
19592pub struct PhysicalDeviceProperties {
19593    pub api_version: u32,
19594    pub driver_version: u32,
19595    pub vendor_id: u32,
19596    pub device_id: u32,
19597    pub device_type: PhysicalDeviceType,
19598    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
19599    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
19600    pub limits: PhysicalDeviceLimits,
19601    pub sparse_properties: PhysicalDeviceSparseProperties,
19602}
19603
19604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
19605#[repr(C)]
19606#[derive(Copy, Clone, Debug, PartialEq)]
19607pub struct PhysicalDeviceProperties2 {
19608    pub s_type: StructureType,
19609    pub next: *mut c_void,
19610    pub properties: PhysicalDeviceProperties,
19611}
19612
19613impl Default for PhysicalDeviceProperties2 {
19614    #[inline]
19615    fn default() -> Self {
19616        Self {
19617            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
19618            next: ptr::null_mut(),
19619            properties: PhysicalDeviceProperties::default(),
19620        }
19621    }
19622}
19623
19624unsafe impl Send for PhysicalDeviceProperties2 {}
19625unsafe impl Sync for PhysicalDeviceProperties2 {}
19626
19627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
19628#[repr(C)]
19629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19630pub struct PhysicalDeviceProtectedMemoryFeatures {
19631    pub s_type: StructureType,
19632    pub next: *mut c_void,
19633    pub protected_memory: Bool32,
19634}
19635
19636impl Default for PhysicalDeviceProtectedMemoryFeatures {
19637    #[inline]
19638    fn default() -> Self {
19639        Self {
19640            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
19641            next: ptr::null_mut(),
19642            protected_memory: Bool32::default(),
19643        }
19644    }
19645}
19646
19647unsafe impl Send for PhysicalDeviceProtectedMemoryFeatures {}
19648unsafe impl Sync for PhysicalDeviceProtectedMemoryFeatures {}
19649
19650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
19651#[repr(C)]
19652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19653pub struct PhysicalDeviceProtectedMemoryProperties {
19654    pub s_type: StructureType,
19655    pub next: *mut c_void,
19656    pub protected_no_fault: Bool32,
19657}
19658
19659impl Default for PhysicalDeviceProtectedMemoryProperties {
19660    #[inline]
19661    fn default() -> Self {
19662        Self {
19663            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
19664            next: ptr::null_mut(),
19665            protected_no_fault: Bool32::default(),
19666        }
19667    }
19668}
19669
19670unsafe impl Send for PhysicalDeviceProtectedMemoryProperties {}
19671unsafe impl Sync for PhysicalDeviceProtectedMemoryProperties {}
19672
19673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
19674#[repr(C)]
19675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19676pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
19677    pub s_type: StructureType,
19678    pub next: *mut c_void,
19679    pub provoking_vertex_last: Bool32,
19680    pub transform_feedback_preserves_provoking_vertex: Bool32,
19681}
19682
19683impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
19684    #[inline]
19685    fn default() -> Self {
19686        Self {
19687            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
19688            next: ptr::null_mut(),
19689            provoking_vertex_last: Bool32::default(),
19690            transform_feedback_preserves_provoking_vertex: Bool32::default(),
19691        }
19692    }
19693}
19694
19695unsafe impl Send for PhysicalDeviceProvokingVertexFeaturesEXT {}
19696unsafe impl Sync for PhysicalDeviceProvokingVertexFeaturesEXT {}
19697
19698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
19699#[repr(C)]
19700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19701pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
19702    pub s_type: StructureType,
19703    pub next: *mut c_void,
19704    pub provoking_vertex_mode_per_pipeline: Bool32,
19705    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
19706}
19707
19708impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
19709    #[inline]
19710    fn default() -> Self {
19711        Self {
19712            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
19713            next: ptr::null_mut(),
19714            provoking_vertex_mode_per_pipeline: Bool32::default(),
19715            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
19716        }
19717    }
19718}
19719
19720unsafe impl Send for PhysicalDeviceProvokingVertexPropertiesEXT {}
19721unsafe impl Sync for PhysicalDeviceProvokingVertexPropertiesEXT {}
19722
19723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
19724#[repr(C)]
19725#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19726pub struct PhysicalDevicePushDescriptorProperties {
19727    pub s_type: StructureType,
19728    pub next: *mut c_void,
19729    pub max_push_descriptors: u32,
19730}
19731
19732impl Default for PhysicalDevicePushDescriptorProperties {
19733    #[inline]
19734    fn default() -> Self {
19735        Self {
19736            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
19737            next: ptr::null_mut(),
19738            max_push_descriptors: u32::default(),
19739        }
19740    }
19741}
19742
19743unsafe impl Send for PhysicalDevicePushDescriptorProperties {}
19744unsafe impl Sync for PhysicalDevicePushDescriptorProperties {}
19745
19746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html>
19747#[repr(C)]
19748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19749pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19750    pub s_type: StructureType,
19751    pub next: *const c_void,
19752    pub queue_family_index: u32,
19753    pub engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM,
19754}
19755
19756impl Default for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19757    #[inline]
19758    fn default() -> Self {
19759        Self {
19760            s_type:
19761                StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM,
19762            next: ptr::null(),
19763            queue_family_index: u32::default(),
19764            engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM::default(),
19765        }
19766    }
19767}
19768
19769unsafe impl Send for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19770unsafe impl Sync for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19771
19772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
19773#[repr(C)]
19774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19775pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19776    pub s_type: StructureType,
19777    pub next: *mut c_void,
19778    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
19779}
19780
19781impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19782    #[inline]
19783    fn default() -> Self {
19784        Self {
19785            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
19786            next: ptr::null_mut(),
19787            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
19788        }
19789    }
19790}
19791
19792unsafe impl Send for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19793unsafe impl Sync for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19794
19795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
19796#[repr(C)]
19797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19798pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19799    pub s_type: StructureType,
19800    pub next: *mut c_void,
19801    pub rasterization_order_color_attachment_access: Bool32,
19802    pub rasterization_order_depth_attachment_access: Bool32,
19803    pub rasterization_order_stencil_attachment_access: Bool32,
19804}
19805
19806impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19807    #[inline]
19808    fn default() -> Self {
19809        Self {
19810            s_type:
19811                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
19812            next: ptr::null_mut(),
19813            rasterization_order_color_attachment_access: Bool32::default(),
19814            rasterization_order_depth_attachment_access: Bool32::default(),
19815            rasterization_order_stencil_attachment_access: Bool32::default(),
19816        }
19817    }
19818}
19819
19820unsafe impl Send for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
19821unsafe impl Sync for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
19822
19823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
19824#[repr(C)]
19825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19826pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
19827    pub s_type: StructureType,
19828    pub next: *mut c_void,
19829    pub shader_raw_access_chains: Bool32,
19830}
19831
19832impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
19833    #[inline]
19834    fn default() -> Self {
19835        Self {
19836            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
19837            next: ptr::null_mut(),
19838            shader_raw_access_chains: Bool32::default(),
19839        }
19840    }
19841}
19842
19843unsafe impl Send for PhysicalDeviceRawAccessChainsFeaturesNV {}
19844unsafe impl Sync for PhysicalDeviceRawAccessChainsFeaturesNV {}
19845
19846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
19847#[repr(C)]
19848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19849pub struct PhysicalDeviceRayQueryFeaturesKHR {
19850    pub s_type: StructureType,
19851    pub next: *mut c_void,
19852    pub ray_query: Bool32,
19853}
19854
19855impl Default for PhysicalDeviceRayQueryFeaturesKHR {
19856    #[inline]
19857    fn default() -> Self {
19858        Self {
19859            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
19860            next: ptr::null_mut(),
19861            ray_query: Bool32::default(),
19862        }
19863    }
19864}
19865
19866unsafe impl Send for PhysicalDeviceRayQueryFeaturesKHR {}
19867unsafe impl Sync for PhysicalDeviceRayQueryFeaturesKHR {}
19868
19869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
19870#[repr(C)]
19871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19872pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
19873    pub s_type: StructureType,
19874    pub next: *mut c_void,
19875    pub ray_tracing_invocation_reorder: Bool32,
19876}
19877
19878impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
19879    #[inline]
19880    fn default() -> Self {
19881        Self {
19882            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
19883            next: ptr::null_mut(),
19884            ray_tracing_invocation_reorder: Bool32::default(),
19885        }
19886    }
19887}
19888
19889unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
19890unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
19891
19892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
19893#[repr(C)]
19894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19895pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
19896    pub s_type: StructureType,
19897    pub next: *mut c_void,
19898    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeNV,
19899}
19900
19901impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
19902    #[inline]
19903    fn default() -> Self {
19904        Self {
19905            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
19906            next: ptr::null_mut(),
19907            ray_tracing_invocation_reorder_reordering_hint:
19908                RayTracingInvocationReorderModeNV::default(),
19909        }
19910    }
19911}
19912
19913unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
19914unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
19915
19916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
19917#[repr(C)]
19918#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19919pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
19920    pub s_type: StructureType,
19921    pub next: *mut c_void,
19922    pub spheres: Bool32,
19923    pub linear_swept_spheres: Bool32,
19924}
19925
19926impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
19927    #[inline]
19928    fn default() -> Self {
19929        Self {
19930            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
19931            next: ptr::null_mut(),
19932            spheres: Bool32::default(),
19933            linear_swept_spheres: Bool32::default(),
19934        }
19935    }
19936}
19937
19938unsafe impl Send for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
19939unsafe impl Sync for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
19940
19941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
19942#[repr(C)]
19943#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19944pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
19945    pub s_type: StructureType,
19946    pub next: *mut c_void,
19947    pub ray_tracing_maintenance1: Bool32,
19948    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
19949}
19950
19951impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
19952    #[inline]
19953    fn default() -> Self {
19954        Self {
19955            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
19956            next: ptr::null_mut(),
19957            ray_tracing_maintenance1: Bool32::default(),
19958            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
19959        }
19960    }
19961}
19962
19963unsafe impl Send for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
19964unsafe impl Sync for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
19965
19966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
19967#[repr(C)]
19968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19969pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
19970    pub s_type: StructureType,
19971    pub next: *mut c_void,
19972    pub ray_tracing_motion_blur: Bool32,
19973    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
19974}
19975
19976impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
19977    #[inline]
19978    fn default() -> Self {
19979        Self {
19980            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
19981            next: ptr::null_mut(),
19982            ray_tracing_motion_blur: Bool32::default(),
19983            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
19984        }
19985    }
19986}
19987
19988unsafe impl Send for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
19989unsafe impl Sync for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
19990
19991/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
19992#[repr(C)]
19993#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19994pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
19995    pub s_type: StructureType,
19996    pub next: *mut c_void,
19997    pub ray_tracing_pipeline: Bool32,
19998    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
19999    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
20000    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
20001    pub ray_traversal_primitive_culling: Bool32,
20002}
20003
20004impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
20005    #[inline]
20006    fn default() -> Self {
20007        Self {
20008            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
20009            next: ptr::null_mut(),
20010            ray_tracing_pipeline: Bool32::default(),
20011            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
20012            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
20013            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
20014            ray_traversal_primitive_culling: Bool32::default(),
20015        }
20016    }
20017}
20018
20019unsafe impl Send for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
20020unsafe impl Sync for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
20021
20022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
20023#[repr(C)]
20024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20025pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
20026    pub s_type: StructureType,
20027    pub next: *mut c_void,
20028    pub shader_group_handle_size: u32,
20029    pub max_ray_recursion_depth: u32,
20030    pub max_shader_group_stride: u32,
20031    pub shader_group_base_alignment: u32,
20032    pub shader_group_handle_capture_replay_size: u32,
20033    pub max_ray_dispatch_invocation_count: u32,
20034    pub shader_group_handle_alignment: u32,
20035    pub max_ray_hit_attribute_size: u32,
20036}
20037
20038impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
20039    #[inline]
20040    fn default() -> Self {
20041        Self {
20042            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
20043            next: ptr::null_mut(),
20044            shader_group_handle_size: u32::default(),
20045            max_ray_recursion_depth: u32::default(),
20046            max_shader_group_stride: u32::default(),
20047            shader_group_base_alignment: u32::default(),
20048            shader_group_handle_capture_replay_size: u32::default(),
20049            max_ray_dispatch_invocation_count: u32::default(),
20050            shader_group_handle_alignment: u32::default(),
20051            max_ray_hit_attribute_size: u32::default(),
20052        }
20053    }
20054}
20055
20056unsafe impl Send for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20057unsafe impl Sync for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20058
20059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
20060#[repr(C)]
20061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20062pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20063    pub s_type: StructureType,
20064    pub next: *mut c_void,
20065    pub ray_tracing_position_fetch: Bool32,
20066}
20067
20068impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20069    #[inline]
20070    fn default() -> Self {
20071        Self {
20072            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
20073            next: ptr::null_mut(),
20074            ray_tracing_position_fetch: Bool32::default(),
20075        }
20076    }
20077}
20078
20079unsafe impl Send for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20080unsafe impl Sync for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20081
20082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
20083#[repr(C)]
20084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20085pub struct PhysicalDeviceRayTracingPropertiesNV {
20086    pub s_type: StructureType,
20087    pub next: *mut c_void,
20088    pub shader_group_handle_size: u32,
20089    pub max_recursion_depth: u32,
20090    pub max_shader_group_stride: u32,
20091    pub shader_group_base_alignment: u32,
20092    pub max_geometry_count: u64,
20093    pub max_instance_count: u64,
20094    pub max_triangle_count: u64,
20095    pub max_descriptor_set_acceleration_structures: u32,
20096}
20097
20098impl Default for PhysicalDeviceRayTracingPropertiesNV {
20099    #[inline]
20100    fn default() -> Self {
20101        Self {
20102            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
20103            next: ptr::null_mut(),
20104            shader_group_handle_size: u32::default(),
20105            max_recursion_depth: u32::default(),
20106            max_shader_group_stride: u32::default(),
20107            shader_group_base_alignment: u32::default(),
20108            max_geometry_count: u64::default(),
20109            max_instance_count: u64::default(),
20110            max_triangle_count: u64::default(),
20111            max_descriptor_set_acceleration_structures: u32::default(),
20112        }
20113    }
20114}
20115
20116unsafe impl Send for PhysicalDeviceRayTracingPropertiesNV {}
20117unsafe impl Sync for PhysicalDeviceRayTracingPropertiesNV {}
20118
20119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
20120#[repr(C)]
20121#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20122pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
20123    pub s_type: StructureType,
20124    pub next: *mut c_void,
20125    pub ray_tracing_validation: Bool32,
20126}
20127
20128impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
20129    #[inline]
20130    fn default() -> Self {
20131        Self {
20132            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
20133            next: ptr::null_mut(),
20134            ray_tracing_validation: Bool32::default(),
20135        }
20136    }
20137}
20138
20139unsafe impl Send for PhysicalDeviceRayTracingValidationFeaturesNV {}
20140unsafe impl Sync for PhysicalDeviceRayTracingValidationFeaturesNV {}
20141
20142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
20143#[repr(C)]
20144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20145pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
20146    pub s_type: StructureType,
20147    pub next: *mut c_void,
20148    pub relaxed_line_rasterization: Bool32,
20149}
20150
20151impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
20152    #[inline]
20153    fn default() -> Self {
20154        Self {
20155            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
20156            next: ptr::null_mut(),
20157            relaxed_line_rasterization: Bool32::default(),
20158        }
20159    }
20160}
20161
20162unsafe impl Send for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
20163unsafe impl Sync for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
20164
20165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
20166#[repr(C)]
20167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20168pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
20169    pub s_type: StructureType,
20170    pub next: *mut c_void,
20171    pub render_pass_striped: Bool32,
20172}
20173
20174impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
20175    #[inline]
20176    fn default() -> Self {
20177        Self {
20178            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
20179            next: ptr::null_mut(),
20180            render_pass_striped: Bool32::default(),
20181        }
20182    }
20183}
20184
20185unsafe impl Send for PhysicalDeviceRenderPassStripedFeaturesARM {}
20186unsafe impl Sync for PhysicalDeviceRenderPassStripedFeaturesARM {}
20187
20188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
20189#[repr(C)]
20190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20191pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
20192    pub s_type: StructureType,
20193    pub next: *mut c_void,
20194    pub render_pass_stripe_granularity: Extent2D,
20195    pub max_render_pass_stripes: u32,
20196}
20197
20198impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
20199    #[inline]
20200    fn default() -> Self {
20201        Self {
20202            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
20203            next: ptr::null_mut(),
20204            render_pass_stripe_granularity: Extent2D::default(),
20205            max_render_pass_stripes: u32::default(),
20206        }
20207    }
20208}
20209
20210unsafe impl Send for PhysicalDeviceRenderPassStripedPropertiesARM {}
20211unsafe impl Sync for PhysicalDeviceRenderPassStripedPropertiesARM {}
20212
20213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
20214#[repr(C)]
20215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20216pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
20217    pub s_type: StructureType,
20218    pub next: *mut c_void,
20219    pub representative_fragment_test: Bool32,
20220}
20221
20222impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
20223    #[inline]
20224    fn default() -> Self {
20225        Self {
20226            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
20227            next: ptr::null_mut(),
20228            representative_fragment_test: Bool32::default(),
20229        }
20230    }
20231}
20232
20233unsafe impl Send for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
20234unsafe impl Sync for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
20235
20236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html>
20237#[repr(C)]
20238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20239pub struct PhysicalDeviceRobustness2FeaturesKHR {
20240    pub s_type: StructureType,
20241    pub next: *mut c_void,
20242    pub robust_buffer_access2: Bool32,
20243    pub robust_image_access2: Bool32,
20244    pub null_descriptor: Bool32,
20245}
20246
20247impl Default for PhysicalDeviceRobustness2FeaturesKHR {
20248    #[inline]
20249    fn default() -> Self {
20250        Self {
20251            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,
20252            next: ptr::null_mut(),
20253            robust_buffer_access2: Bool32::default(),
20254            robust_image_access2: Bool32::default(),
20255            null_descriptor: Bool32::default(),
20256        }
20257    }
20258}
20259
20260unsafe impl Send for PhysicalDeviceRobustness2FeaturesKHR {}
20261unsafe impl Sync for PhysicalDeviceRobustness2FeaturesKHR {}
20262
20263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html>
20264#[repr(C)]
20265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20266pub struct PhysicalDeviceRobustness2PropertiesKHR {
20267    pub s_type: StructureType,
20268    pub next: *mut c_void,
20269    pub robust_storage_buffer_access_size_alignment: DeviceSize,
20270    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
20271}
20272
20273impl Default for PhysicalDeviceRobustness2PropertiesKHR {
20274    #[inline]
20275    fn default() -> Self {
20276        Self {
20277            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,
20278            next: ptr::null_mut(),
20279            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
20280            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
20281        }
20282    }
20283}
20284
20285unsafe impl Send for PhysicalDeviceRobustness2PropertiesKHR {}
20286unsafe impl Sync for PhysicalDeviceRobustness2PropertiesKHR {}
20287
20288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
20289#[repr(C)]
20290#[derive(Copy, Clone, Debug, PartialEq)]
20291pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
20292    pub s_type: StructureType,
20293    pub next: *mut c_void,
20294    pub sample_location_sample_counts: SampleCountFlags,
20295    pub max_sample_location_grid_size: Extent2D,
20296    pub sample_location_coordinate_range: [f32; 2],
20297    pub sample_location_sub_pixel_bits: u32,
20298    pub variable_sample_locations: Bool32,
20299}
20300
20301impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
20302    #[inline]
20303    fn default() -> Self {
20304        Self {
20305            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
20306            next: ptr::null_mut(),
20307            sample_location_sample_counts: SampleCountFlags::default(),
20308            max_sample_location_grid_size: Extent2D::default(),
20309            sample_location_coordinate_range: [f32::default(); 2],
20310            sample_location_sub_pixel_bits: u32::default(),
20311            variable_sample_locations: Bool32::default(),
20312        }
20313    }
20314}
20315
20316unsafe impl Send for PhysicalDeviceSampleLocationsPropertiesEXT {}
20317unsafe impl Sync for PhysicalDeviceSampleLocationsPropertiesEXT {}
20318
20319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
20320#[repr(C)]
20321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20322pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
20323    pub s_type: StructureType,
20324    pub next: *mut c_void,
20325    pub filter_minmax_single_component_formats: Bool32,
20326    pub filter_minmax_image_component_mapping: Bool32,
20327}
20328
20329impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
20330    #[inline]
20331    fn default() -> Self {
20332        Self {
20333            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
20334            next: ptr::null_mut(),
20335            filter_minmax_single_component_formats: Bool32::default(),
20336            filter_minmax_image_component_mapping: Bool32::default(),
20337        }
20338    }
20339}
20340
20341unsafe impl Send for PhysicalDeviceSamplerFilterMinmaxProperties {}
20342unsafe impl Sync for PhysicalDeviceSamplerFilterMinmaxProperties {}
20343
20344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
20345#[repr(C)]
20346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20347pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
20348    pub s_type: StructureType,
20349    pub next: *mut c_void,
20350    pub sampler_ycbcr_conversion: Bool32,
20351}
20352
20353impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
20354    #[inline]
20355    fn default() -> Self {
20356        Self {
20357            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
20358            next: ptr::null_mut(),
20359            sampler_ycbcr_conversion: Bool32::default(),
20360        }
20361    }
20362}
20363
20364unsafe impl Send for PhysicalDeviceSamplerYcbcrConversionFeatures {}
20365unsafe impl Sync for PhysicalDeviceSamplerYcbcrConversionFeatures {}
20366
20367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
20368#[repr(C)]
20369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20370pub struct PhysicalDeviceScalarBlockLayoutFeatures {
20371    pub s_type: StructureType,
20372    pub next: *mut c_void,
20373    pub scalar_block_layout: Bool32,
20374}
20375
20376impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
20377    #[inline]
20378    fn default() -> Self {
20379        Self {
20380            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
20381            next: ptr::null_mut(),
20382            scalar_block_layout: Bool32::default(),
20383        }
20384    }
20385}
20386
20387unsafe impl Send for PhysicalDeviceScalarBlockLayoutFeatures {}
20388unsafe impl Sync for PhysicalDeviceScalarBlockLayoutFeatures {}
20389
20390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
20391#[repr(C)]
20392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20393pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
20394    pub s_type: StructureType,
20395    pub next: *mut c_void,
20396    pub scheduling_controls: Bool32,
20397}
20398
20399impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
20400    #[inline]
20401    fn default() -> Self {
20402        Self {
20403            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
20404            next: ptr::null_mut(),
20405            scheduling_controls: Bool32::default(),
20406        }
20407    }
20408}
20409
20410unsafe impl Send for PhysicalDeviceSchedulingControlsFeaturesARM {}
20411unsafe impl Sync for PhysicalDeviceSchedulingControlsFeaturesARM {}
20412
20413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
20414#[repr(C)]
20415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20416pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
20417    pub s_type: StructureType,
20418    pub next: *mut c_void,
20419    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
20420}
20421
20422impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
20423    #[inline]
20424    fn default() -> Self {
20425        Self {
20426            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
20427            next: ptr::null_mut(),
20428            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
20429        }
20430    }
20431}
20432
20433unsafe impl Send for PhysicalDeviceSchedulingControlsPropertiesARM {}
20434unsafe impl Sync for PhysicalDeviceSchedulingControlsPropertiesARM {}
20435
20436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
20437#[repr(C)]
20438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20439pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20440    pub s_type: StructureType,
20441    pub next: *mut c_void,
20442    pub separate_depth_stencil_layouts: Bool32,
20443}
20444
20445impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20446    #[inline]
20447    fn default() -> Self {
20448        Self {
20449            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
20450            next: ptr::null_mut(),
20451            separate_depth_stencil_layouts: Bool32::default(),
20452        }
20453    }
20454}
20455
20456unsafe impl Send for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20457unsafe impl Sync for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20458
20459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShader64BitIndexingFeaturesEXT.html>
20460#[repr(C)]
20461#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20462pub struct PhysicalDeviceShader64BitIndexingFeaturesEXT {
20463    pub s_type: StructureType,
20464    pub next: *mut c_void,
20465    pub shader_64bit_indexing: Bool32,
20466}
20467
20468impl Default for PhysicalDeviceShader64BitIndexingFeaturesEXT {
20469    #[inline]
20470    fn default() -> Self {
20471        Self {
20472            s_type: StructureType::PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT,
20473            next: ptr::null_mut(),
20474            shader_64bit_indexing: Bool32::default(),
20475        }
20476    }
20477}
20478
20479unsafe impl Send for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
20480unsafe impl Sync for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
20481
20482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
20483#[repr(C)]
20484#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20485pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20486    pub s_type: StructureType,
20487    pub next: *mut c_void,
20488    pub shader_float16_vector_atomics: Bool32,
20489}
20490
20491impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20492    #[inline]
20493    fn default() -> Self {
20494        Self {
20495            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
20496            next: ptr::null_mut(),
20497            shader_float16_vector_atomics: Bool32::default(),
20498        }
20499    }
20500}
20501
20502unsafe impl Send for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20503unsafe impl Sync for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20504
20505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
20506#[repr(C)]
20507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20508pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20509    pub s_type: StructureType,
20510    pub next: *mut c_void,
20511    pub shader_buffer_float16_atomics: Bool32,
20512    pub shader_buffer_float16_atomic_add: Bool32,
20513    pub shader_buffer_float16_atomic_min_max: Bool32,
20514    pub shader_buffer_float32_atomic_min_max: Bool32,
20515    pub shader_buffer_float64_atomic_min_max: Bool32,
20516    pub shader_shared_float16_atomics: Bool32,
20517    pub shader_shared_float16_atomic_add: Bool32,
20518    pub shader_shared_float16_atomic_min_max: Bool32,
20519    pub shader_shared_float32_atomic_min_max: Bool32,
20520    pub shader_shared_float64_atomic_min_max: Bool32,
20521    pub shader_image_float32_atomic_min_max: Bool32,
20522    pub sparse_image_float32_atomic_min_max: Bool32,
20523}
20524
20525impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20526    #[inline]
20527    fn default() -> Self {
20528        Self {
20529            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
20530            next: ptr::null_mut(),
20531            shader_buffer_float16_atomics: Bool32::default(),
20532            shader_buffer_float16_atomic_add: Bool32::default(),
20533            shader_buffer_float16_atomic_min_max: Bool32::default(),
20534            shader_buffer_float32_atomic_min_max: Bool32::default(),
20535            shader_buffer_float64_atomic_min_max: Bool32::default(),
20536            shader_shared_float16_atomics: Bool32::default(),
20537            shader_shared_float16_atomic_add: Bool32::default(),
20538            shader_shared_float16_atomic_min_max: Bool32::default(),
20539            shader_shared_float32_atomic_min_max: Bool32::default(),
20540            shader_shared_float64_atomic_min_max: Bool32::default(),
20541            shader_image_float32_atomic_min_max: Bool32::default(),
20542            sparse_image_float32_atomic_min_max: Bool32::default(),
20543        }
20544    }
20545}
20546
20547unsafe impl Send for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20548unsafe impl Sync for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20549
20550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
20551#[repr(C)]
20552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20553pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20554    pub s_type: StructureType,
20555    pub next: *mut c_void,
20556    pub shader_buffer_float32_atomics: Bool32,
20557    pub shader_buffer_float32_atomic_add: Bool32,
20558    pub shader_buffer_float64_atomics: Bool32,
20559    pub shader_buffer_float64_atomic_add: Bool32,
20560    pub shader_shared_float32_atomics: Bool32,
20561    pub shader_shared_float32_atomic_add: Bool32,
20562    pub shader_shared_float64_atomics: Bool32,
20563    pub shader_shared_float64_atomic_add: Bool32,
20564    pub shader_image_float32_atomics: Bool32,
20565    pub shader_image_float32_atomic_add: Bool32,
20566    pub sparse_image_float32_atomics: Bool32,
20567    pub sparse_image_float32_atomic_add: Bool32,
20568}
20569
20570impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20571    #[inline]
20572    fn default() -> Self {
20573        Self {
20574            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
20575            next: ptr::null_mut(),
20576            shader_buffer_float32_atomics: Bool32::default(),
20577            shader_buffer_float32_atomic_add: Bool32::default(),
20578            shader_buffer_float64_atomics: Bool32::default(),
20579            shader_buffer_float64_atomic_add: Bool32::default(),
20580            shader_shared_float32_atomics: Bool32::default(),
20581            shader_shared_float32_atomic_add: Bool32::default(),
20582            shader_shared_float64_atomics: Bool32::default(),
20583            shader_shared_float64_atomic_add: Bool32::default(),
20584            shader_image_float32_atomics: Bool32::default(),
20585            shader_image_float32_atomic_add: Bool32::default(),
20586            sparse_image_float32_atomics: Bool32::default(),
20587            sparse_image_float32_atomic_add: Bool32::default(),
20588        }
20589    }
20590}
20591
20592unsafe impl Send for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20593unsafe impl Sync for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20594
20595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
20596#[repr(C)]
20597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20598pub struct PhysicalDeviceShaderAtomicInt64Features {
20599    pub s_type: StructureType,
20600    pub next: *mut c_void,
20601    pub shader_buffer_int64_atomics: Bool32,
20602    pub shader_shared_int64_atomics: Bool32,
20603}
20604
20605impl Default for PhysicalDeviceShaderAtomicInt64Features {
20606    #[inline]
20607    fn default() -> Self {
20608        Self {
20609            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
20610            next: ptr::null_mut(),
20611            shader_buffer_int64_atomics: Bool32::default(),
20612            shader_shared_int64_atomics: Bool32::default(),
20613        }
20614    }
20615}
20616
20617unsafe impl Send for PhysicalDeviceShaderAtomicInt64Features {}
20618unsafe impl Sync for PhysicalDeviceShaderAtomicInt64Features {}
20619
20620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html>
20621#[repr(C)]
20622#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20623pub struct PhysicalDeviceShaderBfloat16FeaturesKHR {
20624    pub s_type: StructureType,
20625    pub next: *mut c_void,
20626    pub shader_b_float16_type: Bool32,
20627    pub shader_b_float_16dot_product: Bool32,
20628    pub shader_b_float16_cooperative_matrix: Bool32,
20629}
20630
20631impl Default for PhysicalDeviceShaderBfloat16FeaturesKHR {
20632    #[inline]
20633    fn default() -> Self {
20634        Self {
20635            s_type: StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR,
20636            next: ptr::null_mut(),
20637            shader_b_float16_type: Bool32::default(),
20638            shader_b_float_16dot_product: Bool32::default(),
20639            shader_b_float16_cooperative_matrix: Bool32::default(),
20640        }
20641    }
20642}
20643
20644unsafe impl Send for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20645unsafe impl Sync for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20646
20647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
20648#[repr(C)]
20649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20650pub struct PhysicalDeviceShaderClockFeaturesKHR {
20651    pub s_type: StructureType,
20652    pub next: *mut c_void,
20653    pub shader_subgroup_clock: Bool32,
20654    pub shader_device_clock: Bool32,
20655}
20656
20657impl Default for PhysicalDeviceShaderClockFeaturesKHR {
20658    #[inline]
20659    fn default() -> Self {
20660        Self {
20661            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
20662            next: ptr::null_mut(),
20663            shader_subgroup_clock: Bool32::default(),
20664            shader_device_clock: Bool32::default(),
20665        }
20666    }
20667}
20668
20669unsafe impl Send for PhysicalDeviceShaderClockFeaturesKHR {}
20670unsafe impl Sync for PhysicalDeviceShaderClockFeaturesKHR {}
20671
20672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
20673#[repr(C)]
20674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20675pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20676    pub s_type: StructureType,
20677    pub next: *mut c_void,
20678    pub shader_core_builtins: Bool32,
20679}
20680
20681impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20682    #[inline]
20683    fn default() -> Self {
20684        Self {
20685            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
20686            next: ptr::null_mut(),
20687            shader_core_builtins: Bool32::default(),
20688        }
20689    }
20690}
20691
20692unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20693unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20694
20695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
20696#[repr(C)]
20697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20698pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20699    pub s_type: StructureType,
20700    pub next: *mut c_void,
20701    pub shader_core_mask: u64,
20702    pub shader_core_count: u32,
20703    pub shader_warps_per_core: u32,
20704}
20705
20706impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20707    #[inline]
20708    fn default() -> Self {
20709        Self {
20710            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
20711            next: ptr::null_mut(),
20712            shader_core_mask: u64::default(),
20713            shader_core_count: u32::default(),
20714            shader_warps_per_core: u32::default(),
20715        }
20716    }
20717}
20718
20719unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20720unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20721
20722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
20723#[repr(C)]
20724#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20725pub struct PhysicalDeviceShaderCoreProperties2AMD {
20726    pub s_type: StructureType,
20727    pub next: *mut c_void,
20728    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
20729    pub active_compute_unit_count: u32,
20730}
20731
20732impl Default for PhysicalDeviceShaderCoreProperties2AMD {
20733    #[inline]
20734    fn default() -> Self {
20735        Self {
20736            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
20737            next: ptr::null_mut(),
20738            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
20739            active_compute_unit_count: u32::default(),
20740        }
20741    }
20742}
20743
20744unsafe impl Send for PhysicalDeviceShaderCoreProperties2AMD {}
20745unsafe impl Sync for PhysicalDeviceShaderCoreProperties2AMD {}
20746
20747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
20748#[repr(C)]
20749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20750pub struct PhysicalDeviceShaderCorePropertiesAMD {
20751    pub s_type: StructureType,
20752    pub next: *mut c_void,
20753    pub shader_engine_count: u32,
20754    pub shader_arrays_per_engine_count: u32,
20755    pub compute_units_per_shader_array: u32,
20756    pub simd_per_compute_unit: u32,
20757    pub wavefronts_per_simd: u32,
20758    pub wavefront_size: u32,
20759    pub sgprs_per_simd: u32,
20760    pub min_sgpr_allocation: u32,
20761    pub max_sgpr_allocation: u32,
20762    pub sgpr_allocation_granularity: u32,
20763    pub vgprs_per_simd: u32,
20764    pub min_vgpr_allocation: u32,
20765    pub max_vgpr_allocation: u32,
20766    pub vgpr_allocation_granularity: u32,
20767}
20768
20769impl Default for PhysicalDeviceShaderCorePropertiesAMD {
20770    #[inline]
20771    fn default() -> Self {
20772        Self {
20773            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
20774            next: ptr::null_mut(),
20775            shader_engine_count: u32::default(),
20776            shader_arrays_per_engine_count: u32::default(),
20777            compute_units_per_shader_array: u32::default(),
20778            simd_per_compute_unit: u32::default(),
20779            wavefronts_per_simd: u32::default(),
20780            wavefront_size: u32::default(),
20781            sgprs_per_simd: u32::default(),
20782            min_sgpr_allocation: u32::default(),
20783            max_sgpr_allocation: u32::default(),
20784            sgpr_allocation_granularity: u32::default(),
20785            vgprs_per_simd: u32::default(),
20786            min_vgpr_allocation: u32::default(),
20787            max_vgpr_allocation: u32::default(),
20788            vgpr_allocation_granularity: u32::default(),
20789        }
20790    }
20791}
20792
20793unsafe impl Send for PhysicalDeviceShaderCorePropertiesAMD {}
20794unsafe impl Sync for PhysicalDeviceShaderCorePropertiesAMD {}
20795
20796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
20797#[repr(C)]
20798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20799pub struct PhysicalDeviceShaderCorePropertiesARM {
20800    pub s_type: StructureType,
20801    pub next: *mut c_void,
20802    pub pixel_rate: u32,
20803    pub texel_rate: u32,
20804    pub fma_rate: u32,
20805}
20806
20807impl Default for PhysicalDeviceShaderCorePropertiesARM {
20808    #[inline]
20809    fn default() -> Self {
20810        Self {
20811            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
20812            next: ptr::null_mut(),
20813            pixel_rate: u32::default(),
20814            texel_rate: u32::default(),
20815            fma_rate: u32::default(),
20816        }
20817    }
20818}
20819
20820unsafe impl Send for PhysicalDeviceShaderCorePropertiesARM {}
20821unsafe impl Sync for PhysicalDeviceShaderCorePropertiesARM {}
20822
20823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
20824#[repr(C)]
20825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20826pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
20827    pub s_type: StructureType,
20828    pub next: *mut c_void,
20829    pub shader_demote_to_helper_invocation: Bool32,
20830}
20831
20832impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
20833    #[inline]
20834    fn default() -> Self {
20835        Self {
20836            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
20837            next: ptr::null_mut(),
20838            shader_demote_to_helper_invocation: Bool32::default(),
20839        }
20840    }
20841}
20842
20843unsafe impl Send for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
20844unsafe impl Sync for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
20845
20846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
20847#[repr(C)]
20848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20849pub struct PhysicalDeviceShaderDrawParametersFeatures {
20850    pub s_type: StructureType,
20851    pub next: *mut c_void,
20852    pub shader_draw_parameters: Bool32,
20853}
20854
20855impl Default for PhysicalDeviceShaderDrawParametersFeatures {
20856    #[inline]
20857    fn default() -> Self {
20858        Self {
20859            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
20860            next: ptr::null_mut(),
20861            shader_draw_parameters: Bool32::default(),
20862        }
20863    }
20864}
20865
20866unsafe impl Send for PhysicalDeviceShaderDrawParametersFeatures {}
20867unsafe impl Sync for PhysicalDeviceShaderDrawParametersFeatures {}
20868
20869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
20870#[repr(C)]
20871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20872pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
20873    pub s_type: StructureType,
20874    pub next: *mut c_void,
20875    pub shader_early_and_late_fragment_tests: Bool32,
20876}
20877
20878impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
20879    #[inline]
20880    fn default() -> Self {
20881        Self {
20882            s_type:
20883                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
20884            next: ptr::null_mut(),
20885            shader_early_and_late_fragment_tests: Bool32::default(),
20886        }
20887    }
20888}
20889
20890unsafe impl Send for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
20891unsafe impl Sync for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
20892
20893/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
20894#[repr(C)]
20895#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20896pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
20897    pub s_type: StructureType,
20898    pub next: *mut c_void,
20899    pub shader_enqueue: Bool32,
20900    pub shader_mesh_enqueue: Bool32,
20901}
20902
20903impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
20904    #[inline]
20905    fn default() -> Self {
20906        Self {
20907            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
20908            next: ptr::null_mut(),
20909            shader_enqueue: Bool32::default(),
20910            shader_mesh_enqueue: Bool32::default(),
20911        }
20912    }
20913}
20914
20915unsafe impl Send for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
20916unsafe impl Sync for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
20917
20918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
20919#[repr(C)]
20920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20921pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
20922    pub s_type: StructureType,
20923    pub next: *mut c_void,
20924    pub max_execution_graph_depth: u32,
20925    pub max_execution_graph_shader_output_nodes: u32,
20926    pub max_execution_graph_shader_payload_size: u32,
20927    pub max_execution_graph_shader_payload_count: u32,
20928    pub execution_graph_dispatch_address_alignment: u32,
20929    pub max_execution_graph_workgroup_count: [u32; 3],
20930    pub max_execution_graph_workgroups: u32,
20931}
20932
20933impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
20934    #[inline]
20935    fn default() -> Self {
20936        Self {
20937            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
20938            next: ptr::null_mut(),
20939            max_execution_graph_depth: u32::default(),
20940            max_execution_graph_shader_output_nodes: u32::default(),
20941            max_execution_graph_shader_payload_size: u32::default(),
20942            max_execution_graph_shader_payload_count: u32::default(),
20943            execution_graph_dispatch_address_alignment: u32::default(),
20944            max_execution_graph_workgroup_count: [u32::default(); 3],
20945            max_execution_graph_workgroups: u32::default(),
20946        }
20947    }
20948}
20949
20950unsafe impl Send for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
20951unsafe impl Sync for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
20952
20953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
20954#[repr(C)]
20955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20956pub struct PhysicalDeviceShaderExpectAssumeFeatures {
20957    pub s_type: StructureType,
20958    pub next: *mut c_void,
20959    pub shader_expect_assume: Bool32,
20960}
20961
20962impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
20963    #[inline]
20964    fn default() -> Self {
20965        Self {
20966            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
20967            next: ptr::null_mut(),
20968            shader_expect_assume: Bool32::default(),
20969        }
20970    }
20971}
20972
20973unsafe impl Send for PhysicalDeviceShaderExpectAssumeFeatures {}
20974unsafe impl Sync for PhysicalDeviceShaderExpectAssumeFeatures {}
20975
20976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
20977#[repr(C)]
20978#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20979pub struct PhysicalDeviceShaderFloat16Int8Features {
20980    pub s_type: StructureType,
20981    pub next: *mut c_void,
20982    pub shader_float16: Bool32,
20983    pub shader_int8: Bool32,
20984}
20985
20986impl Default for PhysicalDeviceShaderFloat16Int8Features {
20987    #[inline]
20988    fn default() -> Self {
20989        Self {
20990            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
20991            next: ptr::null_mut(),
20992            shader_float16: Bool32::default(),
20993            shader_int8: Bool32::default(),
20994        }
20995    }
20996}
20997
20998unsafe impl Send for PhysicalDeviceShaderFloat16Int8Features {}
20999unsafe impl Sync for PhysicalDeviceShaderFloat16Int8Features {}
21000
21001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html>
21002#[repr(C)]
21003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21004pub struct PhysicalDeviceShaderFloat8FeaturesEXT {
21005    pub s_type: StructureType,
21006    pub next: *mut c_void,
21007    pub shader_float8: Bool32,
21008    pub shader_float8_cooperative_matrix: Bool32,
21009}
21010
21011impl Default for PhysicalDeviceShaderFloat8FeaturesEXT {
21012    #[inline]
21013    fn default() -> Self {
21014        Self {
21015            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT,
21016            next: ptr::null_mut(),
21017            shader_float8: Bool32::default(),
21018            shader_float8_cooperative_matrix: Bool32::default(),
21019        }
21020    }
21021}
21022
21023unsafe impl Send for PhysicalDeviceShaderFloat8FeaturesEXT {}
21024unsafe impl Sync for PhysicalDeviceShaderFloat8FeaturesEXT {}
21025
21026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
21027#[repr(C)]
21028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21029pub struct PhysicalDeviceShaderFloatControls2Features {
21030    pub s_type: StructureType,
21031    pub next: *mut c_void,
21032    pub shader_float_controls2: Bool32,
21033}
21034
21035impl Default for PhysicalDeviceShaderFloatControls2Features {
21036    #[inline]
21037    fn default() -> Self {
21038        Self {
21039            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
21040            next: ptr::null_mut(),
21041            shader_float_controls2: Bool32::default(),
21042        }
21043    }
21044}
21045
21046unsafe impl Send for PhysicalDeviceShaderFloatControls2Features {}
21047unsafe impl Sync for PhysicalDeviceShaderFloatControls2Features {}
21048
21049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFmaFeaturesKHR.html>
21050#[repr(C)]
21051#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21052pub struct PhysicalDeviceShaderFmaFeaturesKHR {
21053    pub s_type: StructureType,
21054    pub next: *mut c_void,
21055    pub shader_fma_float16: Bool32,
21056    pub shader_fma_float32: Bool32,
21057    pub shader_fma_float64: Bool32,
21058}
21059
21060impl Default for PhysicalDeviceShaderFmaFeaturesKHR {
21061    #[inline]
21062    fn default() -> Self {
21063        Self {
21064            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR,
21065            next: ptr::null_mut(),
21066            shader_fma_float16: Bool32::default(),
21067            shader_fma_float32: Bool32::default(),
21068            shader_fma_float64: Bool32::default(),
21069        }
21070    }
21071}
21072
21073unsafe impl Send for PhysicalDeviceShaderFmaFeaturesKHR {}
21074unsafe impl Sync for PhysicalDeviceShaderFmaFeaturesKHR {}
21075
21076/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
21077#[repr(C)]
21078#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21079pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21080    pub s_type: StructureType,
21081    pub next: *mut c_void,
21082    pub shader_image_int64_atomics: Bool32,
21083    pub sparse_image_int64_atomics: Bool32,
21084}
21085
21086impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21087    #[inline]
21088    fn default() -> Self {
21089        Self {
21090            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
21091            next: ptr::null_mut(),
21092            shader_image_int64_atomics: Bool32::default(),
21093            sparse_image_int64_atomics: Bool32::default(),
21094        }
21095    }
21096}
21097
21098unsafe impl Send for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21099unsafe impl Sync for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21100
21101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
21102#[repr(C)]
21103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21104pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
21105    pub s_type: StructureType,
21106    pub next: *mut c_void,
21107    pub image_footprint: Bool32,
21108}
21109
21110impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
21111    #[inline]
21112    fn default() -> Self {
21113        Self {
21114            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
21115            next: ptr::null_mut(),
21116            image_footprint: Bool32::default(),
21117        }
21118    }
21119}
21120
21121unsafe impl Send for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21122unsafe impl Sync for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21123
21124/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
21125#[repr(C)]
21126#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21127pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
21128    pub s_type: StructureType,
21129    pub next: *mut c_void,
21130    pub shader_integer_dot_product: Bool32,
21131}
21132
21133impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
21134    #[inline]
21135    fn default() -> Self {
21136        Self {
21137            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
21138            next: ptr::null_mut(),
21139            shader_integer_dot_product: Bool32::default(),
21140        }
21141    }
21142}
21143
21144unsafe impl Send for PhysicalDeviceShaderIntegerDotProductFeatures {}
21145unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductFeatures {}
21146
21147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
21148#[repr(C)]
21149#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21150pub struct PhysicalDeviceShaderIntegerDotProductProperties {
21151    pub s_type: StructureType,
21152    pub next: *mut c_void,
21153    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
21154    pub integer_dot_product_8bit_signed_accelerated: Bool32,
21155    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
21156    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
21157    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
21158    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
21159    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
21160    pub integer_dot_product_16bit_signed_accelerated: Bool32,
21161    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
21162    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
21163    pub integer_dot_product_32bit_signed_accelerated: Bool32,
21164    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
21165    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
21166    pub integer_dot_product_64bit_signed_accelerated: Bool32,
21167    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
21168    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
21169    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
21170    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
21171    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
21172    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
21173    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
21174        Bool32,
21175    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
21176    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
21177    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
21178    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
21179    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
21180    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
21181    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
21182    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
21183    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
21184}
21185
21186impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
21187    #[inline]
21188    fn default() -> Self {
21189        Self { s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, next: ptr::null_mut(), integer_dot_product_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_8bit_signed_accelerated: Bool32::default(), integer_dot_product_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_16bit_signed_accelerated: Bool32::default(), integer_dot_product_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_32bit_signed_accelerated: Bool32::default(), integer_dot_product_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_64bit_signed_accelerated: Bool32::default(), integer_dot_product_64bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32::default() }
21190    }
21191}
21192
21193unsafe impl Send for PhysicalDeviceShaderIntegerDotProductProperties {}
21194unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductProperties {}
21195
21196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
21197#[repr(C)]
21198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21199pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
21200    pub s_type: StructureType,
21201    pub next: *mut c_void,
21202    pub shader_integer_functions2: Bool32,
21203}
21204
21205impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
21206    #[inline]
21207    fn default() -> Self {
21208        Self {
21209            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
21210            next: ptr::null_mut(),
21211            shader_integer_functions2: Bool32::default(),
21212        }
21213    }
21214}
21215
21216unsafe impl Send for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
21217unsafe impl Sync for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
21218
21219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
21220#[repr(C)]
21221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21222pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
21223    pub s_type: StructureType,
21224    pub next: *mut c_void,
21225    pub shader_maximal_reconvergence: Bool32,
21226}
21227
21228impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
21229    #[inline]
21230    fn default() -> Self {
21231        Self {
21232            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
21233            next: ptr::null_mut(),
21234            shader_maximal_reconvergence: Bool32::default(),
21235        }
21236    }
21237}
21238
21239unsafe impl Send for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
21240unsafe impl Sync for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
21241
21242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
21243#[repr(C)]
21244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21245pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
21246    pub s_type: StructureType,
21247    pub next: *mut c_void,
21248    pub shader_module_identifier: Bool32,
21249}
21250
21251impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
21252    #[inline]
21253    fn default() -> Self {
21254        Self {
21255            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
21256            next: ptr::null_mut(),
21257            shader_module_identifier: Bool32::default(),
21258        }
21259    }
21260}
21261
21262unsafe impl Send for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
21263unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
21264
21265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
21266#[repr(C)]
21267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21268pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
21269    pub s_type: StructureType,
21270    pub next: *mut c_void,
21271    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
21272}
21273
21274impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
21275    #[inline]
21276    fn default() -> Self {
21277        Self {
21278            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
21279            next: ptr::null_mut(),
21280            shader_module_identifier_algorithm_uuid: ByteArray::default(),
21281        }
21282    }
21283}
21284
21285unsafe impl Send for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
21286unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
21287
21288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
21289#[repr(C)]
21290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21291pub struct PhysicalDeviceShaderObjectFeaturesEXT {
21292    pub s_type: StructureType,
21293    pub next: *mut c_void,
21294    pub shader_object: Bool32,
21295}
21296
21297impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
21298    #[inline]
21299    fn default() -> Self {
21300        Self {
21301            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
21302            next: ptr::null_mut(),
21303            shader_object: Bool32::default(),
21304        }
21305    }
21306}
21307
21308unsafe impl Send for PhysicalDeviceShaderObjectFeaturesEXT {}
21309unsafe impl Sync for PhysicalDeviceShaderObjectFeaturesEXT {}
21310
21311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
21312#[repr(C)]
21313#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21314pub struct PhysicalDeviceShaderObjectPropertiesEXT {
21315    pub s_type: StructureType,
21316    pub next: *mut c_void,
21317    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
21318    pub shader_binary_version: u32,
21319}
21320
21321impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
21322    #[inline]
21323    fn default() -> Self {
21324        Self {
21325            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
21326            next: ptr::null_mut(),
21327            shader_binary_uuid: ByteArray::default(),
21328            shader_binary_version: u32::default(),
21329        }
21330    }
21331}
21332
21333unsafe impl Send for PhysicalDeviceShaderObjectPropertiesEXT {}
21334unsafe impl Sync for PhysicalDeviceShaderObjectPropertiesEXT {}
21335
21336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
21337#[repr(C)]
21338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21339pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
21340    pub s_type: StructureType,
21341    pub next: *mut c_void,
21342    pub shader_quad_control: Bool32,
21343}
21344
21345impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
21346    #[inline]
21347    fn default() -> Self {
21348        Self {
21349            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
21350            next: ptr::null_mut(),
21351            shader_quad_control: Bool32::default(),
21352        }
21353    }
21354}
21355
21356unsafe impl Send for PhysicalDeviceShaderQuadControlFeaturesKHR {}
21357unsafe impl Sync for PhysicalDeviceShaderQuadControlFeaturesKHR {}
21358
21359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
21360#[repr(C)]
21361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21362pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
21363    pub s_type: StructureType,
21364    pub next: *mut c_void,
21365    pub shader_relaxed_extended_instruction: Bool32,
21366}
21367
21368impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
21369    #[inline]
21370    fn default() -> Self {
21371        Self {
21372            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
21373            next: ptr::null_mut(),
21374            shader_relaxed_extended_instruction: Bool32::default(),
21375        }
21376    }
21377}
21378
21379unsafe impl Send for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
21380unsafe impl Sync for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
21381
21382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
21383#[repr(C)]
21384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21385pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
21386    pub s_type: StructureType,
21387    pub next: *mut c_void,
21388    pub shader_replicated_composites: Bool32,
21389}
21390
21391impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
21392    #[inline]
21393    fn default() -> Self {
21394        Self {
21395            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
21396            next: ptr::null_mut(),
21397            shader_replicated_composites: Bool32::default(),
21398        }
21399    }
21400}
21401
21402unsafe impl Send for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
21403unsafe impl Sync for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
21404
21405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
21406#[repr(C)]
21407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21408pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
21409    pub s_type: StructureType,
21410    pub next: *mut c_void,
21411    pub shader_sm_builtins: Bool32,
21412}
21413
21414impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
21415    #[inline]
21416    fn default() -> Self {
21417        Self {
21418            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
21419            next: ptr::null_mut(),
21420            shader_sm_builtins: Bool32::default(),
21421        }
21422    }
21423}
21424
21425unsafe impl Send for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
21426unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
21427
21428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
21429#[repr(C)]
21430#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21431pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
21432    pub s_type: StructureType,
21433    pub next: *mut c_void,
21434    pub shader_sm_count: u32,
21435    pub shader_warps_per_sm: u32,
21436}
21437
21438impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
21439    #[inline]
21440    fn default() -> Self {
21441        Self {
21442            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
21443            next: ptr::null_mut(),
21444            shader_sm_count: u32::default(),
21445            shader_warps_per_sm: u32::default(),
21446        }
21447    }
21448}
21449
21450unsafe impl Send for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
21451unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
21452
21453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
21454#[repr(C)]
21455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21456pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21457    pub s_type: StructureType,
21458    pub next: *mut c_void,
21459    pub shader_subgroup_extended_types: Bool32,
21460}
21461
21462impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21463    #[inline]
21464    fn default() -> Self {
21465        Self {
21466            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
21467            next: ptr::null_mut(),
21468            shader_subgroup_extended_types: Bool32::default(),
21469        }
21470    }
21471}
21472
21473unsafe impl Send for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21474unsafe impl Sync for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21475
21476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
21477#[repr(C)]
21478#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21479pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
21480    pub s_type: StructureType,
21481    pub next: *mut c_void,
21482    pub shader_subgroup_rotate: Bool32,
21483    pub shader_subgroup_rotate_clustered: Bool32,
21484}
21485
21486impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
21487    #[inline]
21488    fn default() -> Self {
21489        Self {
21490            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
21491            next: ptr::null_mut(),
21492            shader_subgroup_rotate: Bool32::default(),
21493            shader_subgroup_rotate_clustered: Bool32::default(),
21494        }
21495    }
21496}
21497
21498unsafe impl Send for PhysicalDeviceShaderSubgroupRotateFeatures {}
21499unsafe impl Sync for PhysicalDeviceShaderSubgroupRotateFeatures {}
21500
21501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
21502#[repr(C)]
21503#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21504pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21505    pub s_type: StructureType,
21506    pub next: *mut c_void,
21507    pub shader_subgroup_uniform_control_flow: Bool32,
21508}
21509
21510impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21511    #[inline]
21512    fn default() -> Self {
21513        Self {
21514            s_type:
21515                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
21516            next: ptr::null_mut(),
21517            shader_subgroup_uniform_control_flow: Bool32::default(),
21518        }
21519    }
21520}
21521
21522unsafe impl Send for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21523unsafe impl Sync for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21524
21525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
21526#[repr(C)]
21527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21528pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
21529    pub s_type: StructureType,
21530    pub next: *mut c_void,
21531    pub shader_terminate_invocation: Bool32,
21532}
21533
21534impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
21535    #[inline]
21536    fn default() -> Self {
21537        Self {
21538            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
21539            next: ptr::null_mut(),
21540            shader_terminate_invocation: Bool32::default(),
21541        }
21542    }
21543}
21544
21545unsafe impl Send for PhysicalDeviceShaderTerminateInvocationFeatures {}
21546unsafe impl Sync for PhysicalDeviceShaderTerminateInvocationFeatures {}
21547
21548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
21549#[repr(C)]
21550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21551pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
21552    pub s_type: StructureType,
21553    pub next: *mut c_void,
21554    pub shader_tile_image_color_read_access: Bool32,
21555    pub shader_tile_image_depth_read_access: Bool32,
21556    pub shader_tile_image_stencil_read_access: Bool32,
21557}
21558
21559impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
21560    #[inline]
21561    fn default() -> Self {
21562        Self {
21563            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
21564            next: ptr::null_mut(),
21565            shader_tile_image_color_read_access: Bool32::default(),
21566            shader_tile_image_depth_read_access: Bool32::default(),
21567            shader_tile_image_stencil_read_access: Bool32::default(),
21568        }
21569    }
21570}
21571
21572unsafe impl Send for PhysicalDeviceShaderTileImageFeaturesEXT {}
21573unsafe impl Sync for PhysicalDeviceShaderTileImageFeaturesEXT {}
21574
21575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
21576#[repr(C)]
21577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21578pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
21579    pub s_type: StructureType,
21580    pub next: *mut c_void,
21581    pub shader_tile_image_coherent_read_accelerated: Bool32,
21582    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
21583    pub shader_tile_image_read_from_helper_invocation: Bool32,
21584}
21585
21586impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
21587    #[inline]
21588    fn default() -> Self {
21589        Self {
21590            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
21591            next: ptr::null_mut(),
21592            shader_tile_image_coherent_read_accelerated: Bool32::default(),
21593            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
21594            shader_tile_image_read_from_helper_invocation: Bool32::default(),
21595        }
21596    }
21597}
21598
21599unsafe impl Send for PhysicalDeviceShaderTileImagePropertiesEXT {}
21600unsafe impl Sync for PhysicalDeviceShaderTileImagePropertiesEXT {}
21601
21602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.html>
21603#[repr(C)]
21604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21605pub struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
21606    pub s_type: StructureType,
21607    pub next: *mut c_void,
21608    pub shader_uniform_buffer_unsized_array: Bool32,
21609}
21610
21611impl Default for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
21612    #[inline]
21613    fn default() -> Self {
21614        Self {
21615            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT,
21616            next: ptr::null_mut(),
21617            shader_uniform_buffer_unsized_array: Bool32::default(),
21618        }
21619    }
21620}
21621
21622unsafe impl Send for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
21623unsafe impl Sync for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
21624
21625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUntypedPointersFeaturesKHR.html>
21626#[repr(C)]
21627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21628pub struct PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21629    pub s_type: StructureType,
21630    pub next: *mut c_void,
21631    pub shader_untyped_pointers: Bool32,
21632}
21633
21634impl Default for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21635    #[inline]
21636    fn default() -> Self {
21637        Self {
21638            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR,
21639            next: ptr::null_mut(),
21640            shader_untyped_pointers: Bool32::default(),
21641        }
21642    }
21643}
21644
21645unsafe impl Send for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21646unsafe impl Sync for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21647
21648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
21649#[repr(C)]
21650#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21651pub struct PhysicalDeviceShadingRateImageFeaturesNV {
21652    pub s_type: StructureType,
21653    pub next: *mut c_void,
21654    pub shading_rate_image: Bool32,
21655    pub shading_rate_coarse_sample_order: Bool32,
21656}
21657
21658impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
21659    #[inline]
21660    fn default() -> Self {
21661        Self {
21662            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
21663            next: ptr::null_mut(),
21664            shading_rate_image: Bool32::default(),
21665            shading_rate_coarse_sample_order: Bool32::default(),
21666        }
21667    }
21668}
21669
21670unsafe impl Send for PhysicalDeviceShadingRateImageFeaturesNV {}
21671unsafe impl Sync for PhysicalDeviceShadingRateImageFeaturesNV {}
21672
21673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
21674#[repr(C)]
21675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21676pub struct PhysicalDeviceShadingRateImagePropertiesNV {
21677    pub s_type: StructureType,
21678    pub next: *mut c_void,
21679    pub shading_rate_texel_size: Extent2D,
21680    pub shading_rate_palette_size: u32,
21681    pub shading_rate_max_coarse_samples: u32,
21682}
21683
21684impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
21685    #[inline]
21686    fn default() -> Self {
21687        Self {
21688            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
21689            next: ptr::null_mut(),
21690            shading_rate_texel_size: Extent2D::default(),
21691            shading_rate_palette_size: u32::default(),
21692            shading_rate_max_coarse_samples: u32::default(),
21693        }
21694    }
21695}
21696
21697unsafe impl Send for PhysicalDeviceShadingRateImagePropertiesNV {}
21698unsafe impl Sync for PhysicalDeviceShadingRateImagePropertiesNV {}
21699
21700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
21701#[repr(C)]
21702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21703pub struct PhysicalDeviceSparseImageFormatInfo2 {
21704    pub s_type: StructureType,
21705    pub next: *const c_void,
21706    pub format: Format,
21707    pub type_: ImageType,
21708    pub samples: SampleCountFlags,
21709    pub usage: ImageUsageFlags,
21710    pub tiling: ImageTiling,
21711}
21712
21713impl Default for PhysicalDeviceSparseImageFormatInfo2 {
21714    #[inline]
21715    fn default() -> Self {
21716        Self {
21717            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
21718            next: ptr::null(),
21719            format: Format::default(),
21720            type_: ImageType::default(),
21721            samples: SampleCountFlags::default(),
21722            usage: ImageUsageFlags::default(),
21723            tiling: ImageTiling::default(),
21724        }
21725    }
21726}
21727
21728unsafe impl Send for PhysicalDeviceSparseImageFormatInfo2 {}
21729unsafe impl Sync for PhysicalDeviceSparseImageFormatInfo2 {}
21730
21731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
21732#[repr(C)]
21733#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21734pub struct PhysicalDeviceSparseProperties {
21735    pub residency_standard_2d_block_shape: Bool32,
21736    pub residency_standard_2d_multisample_block_shape: Bool32,
21737    pub residency_standard_3d_block_shape: Bool32,
21738    pub residency_aligned_mip_size: Bool32,
21739    pub residency_non_resident_strict: Bool32,
21740}
21741
21742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
21743#[repr(C)]
21744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21745pub struct PhysicalDeviceSubgroupProperties {
21746    pub s_type: StructureType,
21747    pub next: *mut c_void,
21748    pub subgroup_size: u32,
21749    pub supported_stages: ShaderStageFlags,
21750    pub supported_operations: SubgroupFeatureFlags,
21751    pub quad_operations_in_all_stages: Bool32,
21752}
21753
21754impl Default for PhysicalDeviceSubgroupProperties {
21755    #[inline]
21756    fn default() -> Self {
21757        Self {
21758            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
21759            next: ptr::null_mut(),
21760            subgroup_size: u32::default(),
21761            supported_stages: ShaderStageFlags::default(),
21762            supported_operations: SubgroupFeatureFlags::default(),
21763            quad_operations_in_all_stages: Bool32::default(),
21764        }
21765    }
21766}
21767
21768unsafe impl Send for PhysicalDeviceSubgroupProperties {}
21769unsafe impl Sync for PhysicalDeviceSubgroupProperties {}
21770
21771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
21772#[repr(C)]
21773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21774pub struct PhysicalDeviceSubgroupSizeControlFeatures {
21775    pub s_type: StructureType,
21776    pub next: *mut c_void,
21777    pub subgroup_size_control: Bool32,
21778    pub compute_full_subgroups: Bool32,
21779}
21780
21781impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
21782    #[inline]
21783    fn default() -> Self {
21784        Self {
21785            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
21786            next: ptr::null_mut(),
21787            subgroup_size_control: Bool32::default(),
21788            compute_full_subgroups: Bool32::default(),
21789        }
21790    }
21791}
21792
21793unsafe impl Send for PhysicalDeviceSubgroupSizeControlFeatures {}
21794unsafe impl Sync for PhysicalDeviceSubgroupSizeControlFeatures {}
21795
21796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
21797#[repr(C)]
21798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21799pub struct PhysicalDeviceSubgroupSizeControlProperties {
21800    pub s_type: StructureType,
21801    pub next: *mut c_void,
21802    pub min_subgroup_size: u32,
21803    pub max_subgroup_size: u32,
21804    pub max_compute_workgroup_subgroups: u32,
21805    pub required_subgroup_size_stages: ShaderStageFlags,
21806}
21807
21808impl Default for PhysicalDeviceSubgroupSizeControlProperties {
21809    #[inline]
21810    fn default() -> Self {
21811        Self {
21812            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
21813            next: ptr::null_mut(),
21814            min_subgroup_size: u32::default(),
21815            max_subgroup_size: u32::default(),
21816            max_compute_workgroup_subgroups: u32::default(),
21817            required_subgroup_size_stages: ShaderStageFlags::default(),
21818        }
21819    }
21820}
21821
21822unsafe impl Send for PhysicalDeviceSubgroupSizeControlProperties {}
21823unsafe impl Sync for PhysicalDeviceSubgroupSizeControlProperties {}
21824
21825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
21826#[repr(C)]
21827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21828pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
21829    pub s_type: StructureType,
21830    pub next: *mut c_void,
21831    pub subpass_merge_feedback: Bool32,
21832}
21833
21834impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
21835    #[inline]
21836    fn default() -> Self {
21837        Self {
21838            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
21839            next: ptr::null_mut(),
21840            subpass_merge_feedback: Bool32::default(),
21841        }
21842    }
21843}
21844
21845unsafe impl Send for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
21846unsafe impl Sync for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
21847
21848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
21849#[repr(C)]
21850#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21851pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
21852    pub s_type: StructureType,
21853    pub next: *mut c_void,
21854    pub subpass_shading: Bool32,
21855}
21856
21857impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
21858    #[inline]
21859    fn default() -> Self {
21860        Self {
21861            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
21862            next: ptr::null_mut(),
21863            subpass_shading: Bool32::default(),
21864        }
21865    }
21866}
21867
21868unsafe impl Send for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
21869unsafe impl Sync for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
21870
21871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
21872#[repr(C)]
21873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21874pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
21875    pub s_type: StructureType,
21876    pub next: *mut c_void,
21877    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
21878}
21879
21880impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
21881    #[inline]
21882    fn default() -> Self {
21883        Self {
21884            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
21885            next: ptr::null_mut(),
21886            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
21887        }
21888    }
21889}
21890
21891unsafe impl Send for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
21892unsafe impl Sync for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
21893
21894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
21895#[repr(C)]
21896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21897pub struct PhysicalDeviceSurfaceInfo2KHR {
21898    pub s_type: StructureType,
21899    pub next: *const c_void,
21900    pub surface: SurfaceKHR,
21901}
21902
21903impl Default for PhysicalDeviceSurfaceInfo2KHR {
21904    #[inline]
21905    fn default() -> Self {
21906        Self {
21907            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
21908            next: ptr::null(),
21909            surface: SurfaceKHR::default(),
21910        }
21911    }
21912}
21913
21914unsafe impl Send for PhysicalDeviceSurfaceInfo2KHR {}
21915unsafe impl Sync for PhysicalDeviceSurfaceInfo2KHR {}
21916
21917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html>
21918#[repr(C)]
21919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21920pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
21921    pub s_type: StructureType,
21922    pub next: *mut c_void,
21923    pub swapchain_maintenance1: Bool32,
21924}
21925
21926impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
21927    #[inline]
21928    fn default() -> Self {
21929        Self {
21930            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,
21931            next: ptr::null_mut(),
21932            swapchain_maintenance1: Bool32::default(),
21933        }
21934    }
21935}
21936
21937unsafe impl Send for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
21938unsafe impl Sync for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
21939
21940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
21941#[repr(C)]
21942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21943pub struct PhysicalDeviceSynchronization2Features {
21944    pub s_type: StructureType,
21945    pub next: *mut c_void,
21946    pub synchronization2: Bool32,
21947}
21948
21949impl Default for PhysicalDeviceSynchronization2Features {
21950    #[inline]
21951    fn default() -> Self {
21952        Self {
21953            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
21954            next: ptr::null_mut(),
21955            synchronization2: Bool32::default(),
21956        }
21957    }
21958}
21959
21960unsafe impl Send for PhysicalDeviceSynchronization2Features {}
21961unsafe impl Sync for PhysicalDeviceSynchronization2Features {}
21962
21963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html>
21964#[repr(C)]
21965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21966pub struct PhysicalDeviceTensorFeaturesARM {
21967    pub s_type: StructureType,
21968    pub next: *mut c_void,
21969    pub tensor_non_packed: Bool32,
21970    pub shader_tensor_access: Bool32,
21971    pub shader_storage_tensor_array_dynamic_indexing: Bool32,
21972    pub shader_storage_tensor_array_non_uniform_indexing: Bool32,
21973    pub descriptor_binding_storage_tensor_update_after_bind: Bool32,
21974    pub tensors: Bool32,
21975}
21976
21977impl Default for PhysicalDeviceTensorFeaturesARM {
21978    #[inline]
21979    fn default() -> Self {
21980        Self {
21981            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM,
21982            next: ptr::null_mut(),
21983            tensor_non_packed: Bool32::default(),
21984            shader_tensor_access: Bool32::default(),
21985            shader_storage_tensor_array_dynamic_indexing: Bool32::default(),
21986            shader_storage_tensor_array_non_uniform_indexing: Bool32::default(),
21987            descriptor_binding_storage_tensor_update_after_bind: Bool32::default(),
21988            tensors: Bool32::default(),
21989        }
21990    }
21991}
21992
21993unsafe impl Send for PhysicalDeviceTensorFeaturesARM {}
21994unsafe impl Sync for PhysicalDeviceTensorFeaturesARM {}
21995
21996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html>
21997#[repr(C)]
21998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21999pub struct PhysicalDeviceTensorPropertiesARM {
22000    pub s_type: StructureType,
22001    pub next: *mut c_void,
22002    pub max_tensor_dimension_count: u32,
22003    pub max_tensor_elements: u64,
22004    pub max_per_dimension_tensor_elements: u64,
22005    pub max_tensor_stride: i64,
22006    pub max_tensor_size: u64,
22007    pub max_tensor_shader_access_array_length: u32,
22008    pub max_tensor_shader_access_size: u32,
22009    pub max_descriptor_set_storage_tensors: u32,
22010    pub max_per_stage_descriptor_set_storage_tensors: u32,
22011    pub max_descriptor_set_update_after_bind_storage_tensors: u32,
22012    pub max_per_stage_descriptor_update_after_bind_storage_tensors: u32,
22013    pub shader_storage_tensor_array_non_uniform_indexing_native: Bool32,
22014    pub shader_tensor_supported_stages: ShaderStageFlags,
22015}
22016
22017impl Default for PhysicalDeviceTensorPropertiesARM {
22018    #[inline]
22019    fn default() -> Self {
22020        Self {
22021            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM,
22022            next: ptr::null_mut(),
22023            max_tensor_dimension_count: u32::default(),
22024            max_tensor_elements: u64::default(),
22025            max_per_dimension_tensor_elements: u64::default(),
22026            max_tensor_stride: i64::default(),
22027            max_tensor_size: u64::default(),
22028            max_tensor_shader_access_array_length: u32::default(),
22029            max_tensor_shader_access_size: u32::default(),
22030            max_descriptor_set_storage_tensors: u32::default(),
22031            max_per_stage_descriptor_set_storage_tensors: u32::default(),
22032            max_descriptor_set_update_after_bind_storage_tensors: u32::default(),
22033            max_per_stage_descriptor_update_after_bind_storage_tensors: u32::default(),
22034            shader_storage_tensor_array_non_uniform_indexing_native: Bool32::default(),
22035            shader_tensor_supported_stages: ShaderStageFlags::default(),
22036        }
22037    }
22038}
22039
22040unsafe impl Send for PhysicalDeviceTensorPropertiesARM {}
22041unsafe impl Sync for PhysicalDeviceTensorPropertiesARM {}
22042
22043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
22044#[repr(C)]
22045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22046pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22047    pub s_type: StructureType,
22048    pub next: *mut c_void,
22049    pub texel_buffer_alignment: Bool32,
22050}
22051
22052impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22053    #[inline]
22054    fn default() -> Self {
22055        Self {
22056            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
22057            next: ptr::null_mut(),
22058            texel_buffer_alignment: Bool32::default(),
22059        }
22060    }
22061}
22062
22063unsafe impl Send for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22064unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22065
22066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
22067#[repr(C)]
22068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22069pub struct PhysicalDeviceTexelBufferAlignmentProperties {
22070    pub s_type: StructureType,
22071    pub next: *mut c_void,
22072    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
22073    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
22074    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
22075    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
22076}
22077
22078impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
22079    #[inline]
22080    fn default() -> Self {
22081        Self {
22082            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
22083            next: ptr::null_mut(),
22084            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
22085            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
22086            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
22087            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
22088        }
22089    }
22090}
22091
22092unsafe impl Send for PhysicalDeviceTexelBufferAlignmentProperties {}
22093unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentProperties {}
22094
22095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
22096#[repr(C)]
22097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22098pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
22099    pub s_type: StructureType,
22100    pub next: *mut c_void,
22101    pub texture_compression_astc_hdr: Bool32,
22102}
22103
22104impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
22105    #[inline]
22106    fn default() -> Self {
22107        Self {
22108            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
22109            next: ptr::null_mut(),
22110            texture_compression_astc_hdr: Bool32::default(),
22111        }
22112    }
22113}
22114
22115unsafe impl Send for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
22116unsafe impl Sync for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
22117
22118/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html>
22119#[repr(C)]
22120#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22121pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOM {
22122    pub s_type: StructureType,
22123    pub next: *mut c_void,
22124    pub tile_memory_heap: Bool32,
22125}
22126
22127impl Default for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
22128    #[inline]
22129    fn default() -> Self {
22130        Self {
22131            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM,
22132            next: ptr::null_mut(),
22133            tile_memory_heap: Bool32::default(),
22134        }
22135    }
22136}
22137
22138unsafe impl Send for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
22139unsafe impl Sync for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
22140
22141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html>
22142#[repr(C)]
22143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22144pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOM {
22145    pub s_type: StructureType,
22146    pub next: *mut c_void,
22147    pub queue_submit_boundary: Bool32,
22148    pub tile_buffer_transfers: Bool32,
22149}
22150
22151impl Default for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
22152    #[inline]
22153    fn default() -> Self {
22154        Self {
22155            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM,
22156            next: ptr::null_mut(),
22157            queue_submit_boundary: Bool32::default(),
22158            tile_buffer_transfers: Bool32::default(),
22159        }
22160    }
22161}
22162
22163unsafe impl Send for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
22164unsafe impl Sync for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
22165
22166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
22167#[repr(C)]
22168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22169pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
22170    pub s_type: StructureType,
22171    pub next: *mut c_void,
22172    pub tile_properties: Bool32,
22173}
22174
22175impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
22176    #[inline]
22177    fn default() -> Self {
22178        Self {
22179            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
22180            next: ptr::null_mut(),
22181            tile_properties: Bool32::default(),
22182        }
22183    }
22184}
22185
22186unsafe impl Send for PhysicalDeviceTilePropertiesFeaturesQCOM {}
22187unsafe impl Sync for PhysicalDeviceTilePropertiesFeaturesQCOM {}
22188
22189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html>
22190#[repr(C)]
22191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22192pub struct PhysicalDeviceTileShadingFeaturesQCOM {
22193    pub s_type: StructureType,
22194    pub next: *mut c_void,
22195    pub tile_shading: Bool32,
22196    pub tile_shading_fragment_stage: Bool32,
22197    pub tile_shading_color_attachments: Bool32,
22198    pub tile_shading_depth_attachments: Bool32,
22199    pub tile_shading_stencil_attachments: Bool32,
22200    pub tile_shading_input_attachments: Bool32,
22201    pub tile_shading_sampled_attachments: Bool32,
22202    pub tile_shading_per_tile_draw: Bool32,
22203    pub tile_shading_per_tile_dispatch: Bool32,
22204    pub tile_shading_dispatch_tile: Bool32,
22205    pub tile_shading_apron: Bool32,
22206    pub tile_shading_anisotropic_apron: Bool32,
22207    pub tile_shading_atomic_ops: Bool32,
22208    pub tile_shading_image_processing: Bool32,
22209}
22210
22211impl Default for PhysicalDeviceTileShadingFeaturesQCOM {
22212    #[inline]
22213    fn default() -> Self {
22214        Self {
22215            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM,
22216            next: ptr::null_mut(),
22217            tile_shading: Bool32::default(),
22218            tile_shading_fragment_stage: Bool32::default(),
22219            tile_shading_color_attachments: Bool32::default(),
22220            tile_shading_depth_attachments: Bool32::default(),
22221            tile_shading_stencil_attachments: Bool32::default(),
22222            tile_shading_input_attachments: Bool32::default(),
22223            tile_shading_sampled_attachments: Bool32::default(),
22224            tile_shading_per_tile_draw: Bool32::default(),
22225            tile_shading_per_tile_dispatch: Bool32::default(),
22226            tile_shading_dispatch_tile: Bool32::default(),
22227            tile_shading_apron: Bool32::default(),
22228            tile_shading_anisotropic_apron: Bool32::default(),
22229            tile_shading_atomic_ops: Bool32::default(),
22230            tile_shading_image_processing: Bool32::default(),
22231        }
22232    }
22233}
22234
22235unsafe impl Send for PhysicalDeviceTileShadingFeaturesQCOM {}
22236unsafe impl Sync for PhysicalDeviceTileShadingFeaturesQCOM {}
22237
22238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html>
22239#[repr(C)]
22240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22241pub struct PhysicalDeviceTileShadingPropertiesQCOM {
22242    pub s_type: StructureType,
22243    pub next: *mut c_void,
22244    pub max_apron_size: u32,
22245    pub prefer_non_coherent: Bool32,
22246    pub tile_granularity: Extent2D,
22247    pub max_tile_shading_rate: Extent2D,
22248}
22249
22250impl Default for PhysicalDeviceTileShadingPropertiesQCOM {
22251    #[inline]
22252    fn default() -> Self {
22253        Self {
22254            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM,
22255            next: ptr::null_mut(),
22256            max_apron_size: u32::default(),
22257            prefer_non_coherent: Bool32::default(),
22258            tile_granularity: Extent2D::default(),
22259            max_tile_shading_rate: Extent2D::default(),
22260        }
22261    }
22262}
22263
22264unsafe impl Send for PhysicalDeviceTileShadingPropertiesQCOM {}
22265unsafe impl Sync for PhysicalDeviceTileShadingPropertiesQCOM {}
22266
22267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
22268#[repr(C)]
22269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22270pub struct PhysicalDeviceTimelineSemaphoreFeatures {
22271    pub s_type: StructureType,
22272    pub next: *mut c_void,
22273    pub timeline_semaphore: Bool32,
22274}
22275
22276impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
22277    #[inline]
22278    fn default() -> Self {
22279        Self {
22280            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
22281            next: ptr::null_mut(),
22282            timeline_semaphore: Bool32::default(),
22283        }
22284    }
22285}
22286
22287unsafe impl Send for PhysicalDeviceTimelineSemaphoreFeatures {}
22288unsafe impl Sync for PhysicalDeviceTimelineSemaphoreFeatures {}
22289
22290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
22291#[repr(C)]
22292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22293pub struct PhysicalDeviceTimelineSemaphoreProperties {
22294    pub s_type: StructureType,
22295    pub next: *mut c_void,
22296    pub max_timeline_semaphore_value_difference: u64,
22297}
22298
22299impl Default for PhysicalDeviceTimelineSemaphoreProperties {
22300    #[inline]
22301    fn default() -> Self {
22302        Self {
22303            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
22304            next: ptr::null_mut(),
22305            max_timeline_semaphore_value_difference: u64::default(),
22306        }
22307    }
22308}
22309
22310unsafe impl Send for PhysicalDeviceTimelineSemaphoreProperties {}
22311unsafe impl Sync for PhysicalDeviceTimelineSemaphoreProperties {}
22312
22313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
22314#[repr(C)]
22315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22316pub struct PhysicalDeviceToolProperties {
22317    pub s_type: StructureType,
22318    pub next: *mut c_void,
22319    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
22320    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
22321    pub purposes: ToolPurposeFlags,
22322    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
22323    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
22324}
22325
22326impl Default for PhysicalDeviceToolProperties {
22327    #[inline]
22328    fn default() -> Self {
22329        Self {
22330            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
22331            next: ptr::null_mut(),
22332            name: StringArray::default(),
22333            version: StringArray::default(),
22334            purposes: ToolPurposeFlags::default(),
22335            description: StringArray::default(),
22336            layer: StringArray::default(),
22337        }
22338    }
22339}
22340
22341unsafe impl Send for PhysicalDeviceToolProperties {}
22342unsafe impl Sync for PhysicalDeviceToolProperties {}
22343
22344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
22345#[repr(C)]
22346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22347pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
22348    pub s_type: StructureType,
22349    pub next: *mut c_void,
22350    pub transform_feedback: Bool32,
22351    pub geometry_streams: Bool32,
22352}
22353
22354impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
22355    #[inline]
22356    fn default() -> Self {
22357        Self {
22358            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
22359            next: ptr::null_mut(),
22360            transform_feedback: Bool32::default(),
22361            geometry_streams: Bool32::default(),
22362        }
22363    }
22364}
22365
22366unsafe impl Send for PhysicalDeviceTransformFeedbackFeaturesEXT {}
22367unsafe impl Sync for PhysicalDeviceTransformFeedbackFeaturesEXT {}
22368
22369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
22370#[repr(C)]
22371#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22372pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
22373    pub s_type: StructureType,
22374    pub next: *mut c_void,
22375    pub max_transform_feedback_streams: u32,
22376    pub max_transform_feedback_buffers: u32,
22377    pub max_transform_feedback_buffer_size: DeviceSize,
22378    pub max_transform_feedback_stream_data_size: u32,
22379    pub max_transform_feedback_buffer_data_size: u32,
22380    pub max_transform_feedback_buffer_data_stride: u32,
22381    pub transform_feedback_queries: Bool32,
22382    pub transform_feedback_streams_lines_triangles: Bool32,
22383    pub transform_feedback_rasterization_stream_select: Bool32,
22384    pub transform_feedback_draw: Bool32,
22385}
22386
22387impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
22388    #[inline]
22389    fn default() -> Self {
22390        Self {
22391            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
22392            next: ptr::null_mut(),
22393            max_transform_feedback_streams: u32::default(),
22394            max_transform_feedback_buffers: u32::default(),
22395            max_transform_feedback_buffer_size: DeviceSize::default(),
22396            max_transform_feedback_stream_data_size: u32::default(),
22397            max_transform_feedback_buffer_data_size: u32::default(),
22398            max_transform_feedback_buffer_data_stride: u32::default(),
22399            transform_feedback_queries: Bool32::default(),
22400            transform_feedback_streams_lines_triangles: Bool32::default(),
22401            transform_feedback_rasterization_stream_select: Bool32::default(),
22402            transform_feedback_draw: Bool32::default(),
22403        }
22404    }
22405}
22406
22407unsafe impl Send for PhysicalDeviceTransformFeedbackPropertiesEXT {}
22408unsafe impl Sync for PhysicalDeviceTransformFeedbackPropertiesEXT {}
22409
22410/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html>
22411#[repr(C)]
22412#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22413pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
22414    pub s_type: StructureType,
22415    pub next: *mut c_void,
22416    pub unified_image_layouts: Bool32,
22417    pub unified_image_layouts_video: Bool32,
22418}
22419
22420impl Default for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
22421    #[inline]
22422    fn default() -> Self {
22423        Self {
22424            s_type: StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR,
22425            next: ptr::null_mut(),
22426            unified_image_layouts: Bool32::default(),
22427            unified_image_layouts_video: Bool32::default(),
22428        }
22429    }
22430}
22431
22432unsafe impl Send for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
22433unsafe impl Sync for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
22434
22435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
22436#[repr(C)]
22437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22438pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
22439    pub s_type: StructureType,
22440    pub next: *mut c_void,
22441    pub uniform_buffer_standard_layout: Bool32,
22442}
22443
22444impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
22445    #[inline]
22446    fn default() -> Self {
22447        Self {
22448            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
22449            next: ptr::null_mut(),
22450            uniform_buffer_standard_layout: Bool32::default(),
22451        }
22452    }
22453}
22454
22455unsafe impl Send for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
22456unsafe impl Sync for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
22457
22458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
22459#[repr(C)]
22460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22461pub struct PhysicalDeviceVariablePointersFeatures {
22462    pub s_type: StructureType,
22463    pub next: *mut c_void,
22464    pub variable_pointers_storage_buffer: Bool32,
22465    pub variable_pointers: Bool32,
22466}
22467
22468impl Default for PhysicalDeviceVariablePointersFeatures {
22469    #[inline]
22470    fn default() -> Self {
22471        Self {
22472            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
22473            next: ptr::null_mut(),
22474            variable_pointers_storage_buffer: Bool32::default(),
22475            variable_pointers: Bool32::default(),
22476        }
22477    }
22478}
22479
22480unsafe impl Send for PhysicalDeviceVariablePointersFeatures {}
22481unsafe impl Sync for PhysicalDeviceVariablePointersFeatures {}
22482
22483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
22484#[repr(C)]
22485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22486pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
22487    pub s_type: StructureType,
22488    pub next: *mut c_void,
22489    pub vertex_attribute_instance_rate_divisor: Bool32,
22490    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
22491}
22492
22493impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
22494    #[inline]
22495    fn default() -> Self {
22496        Self {
22497            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
22498            next: ptr::null_mut(),
22499            vertex_attribute_instance_rate_divisor: Bool32::default(),
22500            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
22501        }
22502    }
22503}
22504
22505unsafe impl Send for PhysicalDeviceVertexAttributeDivisorFeatures {}
22506unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorFeatures {}
22507
22508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
22509#[repr(C)]
22510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22511pub struct PhysicalDeviceVertexAttributeDivisorProperties {
22512    pub s_type: StructureType,
22513    pub next: *mut c_void,
22514    pub max_vertex_attrib_divisor: u32,
22515    pub supports_non_zero_first_instance: Bool32,
22516}
22517
22518impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
22519    #[inline]
22520    fn default() -> Self {
22521        Self {
22522            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
22523            next: ptr::null_mut(),
22524            max_vertex_attrib_divisor: u32::default(),
22525            supports_non_zero_first_instance: Bool32::default(),
22526        }
22527    }
22528}
22529
22530unsafe impl Send for PhysicalDeviceVertexAttributeDivisorProperties {}
22531unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorProperties {}
22532
22533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
22534#[repr(C)]
22535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22536pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22537    pub s_type: StructureType,
22538    pub next: *mut c_void,
22539    pub max_vertex_attrib_divisor: u32,
22540}
22541
22542impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22543    #[inline]
22544    fn default() -> Self {
22545        Self {
22546            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
22547            next: ptr::null_mut(),
22548            max_vertex_attrib_divisor: u32::default(),
22549        }
22550    }
22551}
22552
22553unsafe impl Send for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22554unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22555
22556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
22557#[repr(C)]
22558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22559pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22560    pub s_type: StructureType,
22561    pub next: *mut c_void,
22562    pub vertex_attribute_robustness: Bool32,
22563}
22564
22565impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22566    #[inline]
22567    fn default() -> Self {
22568        Self {
22569            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
22570            next: ptr::null_mut(),
22571            vertex_attribute_robustness: Bool32::default(),
22572        }
22573    }
22574}
22575
22576unsafe impl Send for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22577unsafe impl Sync for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22578
22579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
22580#[repr(C)]
22581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22582pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22583    pub s_type: StructureType,
22584    pub next: *mut c_void,
22585    pub vertex_input_dynamic_state: Bool32,
22586}
22587
22588impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22589    #[inline]
22590    fn default() -> Self {
22591        Self {
22592            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
22593            next: ptr::null_mut(),
22594            vertex_input_dynamic_state: Bool32::default(),
22595        }
22596    }
22597}
22598
22599unsafe impl Send for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22600unsafe impl Sync for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22601
22602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html>
22603#[repr(C)]
22604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22605pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22606    pub s_type: StructureType,
22607    pub next: *mut c_void,
22608    pub video_decode_vp9: Bool32,
22609}
22610
22611impl Default for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22612    #[inline]
22613    fn default() -> Self {
22614        Self {
22615            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR,
22616            next: ptr::null_mut(),
22617            video_decode_vp9: Bool32::default(),
22618        }
22619    }
22620}
22621
22622unsafe impl Send for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22623unsafe impl Sync for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22624
22625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
22626#[repr(C)]
22627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22628pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22629    pub s_type: StructureType,
22630    pub next: *mut c_void,
22631    pub video_encode_av1: Bool32,
22632}
22633
22634impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22635    #[inline]
22636    fn default() -> Self {
22637        Self {
22638            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
22639            next: ptr::null_mut(),
22640            video_encode_av1: Bool32::default(),
22641        }
22642    }
22643}
22644
22645unsafe impl Send for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22646unsafe impl Sync for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22647
22648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html>
22649#[repr(C)]
22650#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22651pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22652    pub s_type: StructureType,
22653    pub next: *mut c_void,
22654    pub video_encode_intra_refresh: Bool32,
22655}
22656
22657impl Default for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22658    #[inline]
22659    fn default() -> Self {
22660        Self {
22661            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR,
22662            next: ptr::null_mut(),
22663            video_encode_intra_refresh: Bool32::default(),
22664        }
22665    }
22666}
22667
22668unsafe impl Send for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22669unsafe impl Sync for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22670
22671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
22672#[repr(C)]
22673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22674pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22675    pub s_type: StructureType,
22676    pub next: *const c_void,
22677    pub video_profile: *const VideoProfileInfoKHR,
22678    pub quality_level: u32,
22679}
22680
22681impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22682    #[inline]
22683    fn default() -> Self {
22684        Self {
22685            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
22686            next: ptr::null(),
22687            video_profile: ptr::null(),
22688            quality_level: u32::default(),
22689        }
22690    }
22691}
22692
22693unsafe impl Send for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
22694unsafe impl Sync for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
22695
22696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
22697#[repr(C)]
22698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22699pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
22700    pub s_type: StructureType,
22701    pub next: *mut c_void,
22702    pub video_encode_quantization_map: Bool32,
22703}
22704
22705impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
22706    #[inline]
22707    fn default() -> Self {
22708        Self {
22709            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
22710            next: ptr::null_mut(),
22711            video_encode_quantization_map: Bool32::default(),
22712        }
22713    }
22714}
22715
22716unsafe impl Send for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
22717unsafe impl Sync for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
22718
22719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE.html>
22720#[repr(C)]
22721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22722pub struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
22723    pub s_type: StructureType,
22724    pub next: *mut c_void,
22725    pub video_encode_rgb_conversion: Bool32,
22726}
22727
22728impl Default for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
22729    #[inline]
22730    fn default() -> Self {
22731        Self {
22732            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE,
22733            next: ptr::null_mut(),
22734            video_encode_rgb_conversion: Bool32::default(),
22735        }
22736    }
22737}
22738
22739unsafe impl Send for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
22740unsafe impl Sync for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
22741
22742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
22743#[repr(C)]
22744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22745pub struct PhysicalDeviceVideoFormatInfoKHR {
22746    pub s_type: StructureType,
22747    pub next: *const c_void,
22748    pub image_usage: ImageUsageFlags,
22749}
22750
22751impl Default for PhysicalDeviceVideoFormatInfoKHR {
22752    #[inline]
22753    fn default() -> Self {
22754        Self {
22755            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
22756            next: ptr::null(),
22757            image_usage: ImageUsageFlags::default(),
22758        }
22759    }
22760}
22761
22762unsafe impl Send for PhysicalDeviceVideoFormatInfoKHR {}
22763unsafe impl Sync for PhysicalDeviceVideoFormatInfoKHR {}
22764
22765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
22766#[repr(C)]
22767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22768pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
22769    pub s_type: StructureType,
22770    pub next: *mut c_void,
22771    pub video_maintenance1: Bool32,
22772}
22773
22774impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
22775    #[inline]
22776    fn default() -> Self {
22777        Self {
22778            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
22779            next: ptr::null_mut(),
22780            video_maintenance1: Bool32::default(),
22781        }
22782    }
22783}
22784
22785unsafe impl Send for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
22786unsafe impl Sync for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
22787
22788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
22789#[repr(C)]
22790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22791pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
22792    pub s_type: StructureType,
22793    pub next: *mut c_void,
22794    pub video_maintenance2: Bool32,
22795}
22796
22797impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
22798    #[inline]
22799    fn default() -> Self {
22800        Self {
22801            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
22802            next: ptr::null_mut(),
22803            video_maintenance2: Bool32::default(),
22804        }
22805    }
22806}
22807
22808unsafe impl Send for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
22809unsafe impl Sync for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
22810
22811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
22812#[repr(C)]
22813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22814pub struct PhysicalDeviceVulkan11Features {
22815    pub s_type: StructureType,
22816    pub next: *mut c_void,
22817    pub storage_buffer_16bit_access: Bool32,
22818    pub uniform_and_storage_buffer_16bit_access: Bool32,
22819    pub storage_push_constant16: Bool32,
22820    pub storage_input_output16: Bool32,
22821    pub multiview: Bool32,
22822    pub multiview_geometry_shader: Bool32,
22823    pub multiview_tessellation_shader: Bool32,
22824    pub variable_pointers_storage_buffer: Bool32,
22825    pub variable_pointers: Bool32,
22826    pub protected_memory: Bool32,
22827    pub sampler_ycbcr_conversion: Bool32,
22828    pub shader_draw_parameters: Bool32,
22829}
22830
22831impl Default for PhysicalDeviceVulkan11Features {
22832    #[inline]
22833    fn default() -> Self {
22834        Self {
22835            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
22836            next: ptr::null_mut(),
22837            storage_buffer_16bit_access: Bool32::default(),
22838            uniform_and_storage_buffer_16bit_access: Bool32::default(),
22839            storage_push_constant16: Bool32::default(),
22840            storage_input_output16: Bool32::default(),
22841            multiview: Bool32::default(),
22842            multiview_geometry_shader: Bool32::default(),
22843            multiview_tessellation_shader: Bool32::default(),
22844            variable_pointers_storage_buffer: Bool32::default(),
22845            variable_pointers: Bool32::default(),
22846            protected_memory: Bool32::default(),
22847            sampler_ycbcr_conversion: Bool32::default(),
22848            shader_draw_parameters: Bool32::default(),
22849        }
22850    }
22851}
22852
22853unsafe impl Send for PhysicalDeviceVulkan11Features {}
22854unsafe impl Sync for PhysicalDeviceVulkan11Features {}
22855
22856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
22857#[repr(C)]
22858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22859pub struct PhysicalDeviceVulkan11Properties {
22860    pub s_type: StructureType,
22861    pub next: *mut c_void,
22862    pub device_uuid: ByteArray<UUID_SIZE>,
22863    pub driver_uuid: ByteArray<UUID_SIZE>,
22864    pub device_luid: ByteArray<LUID_SIZE>,
22865    pub device_node_mask: u32,
22866    pub device_luid_valid: Bool32,
22867    pub subgroup_size: u32,
22868    pub subgroup_supported_stages: ShaderStageFlags,
22869    pub subgroup_supported_operations: SubgroupFeatureFlags,
22870    pub subgroup_quad_operations_in_all_stages: Bool32,
22871    pub point_clipping_behavior: PointClippingBehavior,
22872    pub max_multiview_view_count: u32,
22873    pub max_multiview_instance_index: u32,
22874    pub protected_no_fault: Bool32,
22875    pub max_per_set_descriptors: u32,
22876    pub max_memory_allocation_size: DeviceSize,
22877}
22878
22879impl Default for PhysicalDeviceVulkan11Properties {
22880    #[inline]
22881    fn default() -> Self {
22882        Self {
22883            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
22884            next: ptr::null_mut(),
22885            device_uuid: ByteArray::default(),
22886            driver_uuid: ByteArray::default(),
22887            device_luid: ByteArray::default(),
22888            device_node_mask: u32::default(),
22889            device_luid_valid: Bool32::default(),
22890            subgroup_size: u32::default(),
22891            subgroup_supported_stages: ShaderStageFlags::default(),
22892            subgroup_supported_operations: SubgroupFeatureFlags::default(),
22893            subgroup_quad_operations_in_all_stages: Bool32::default(),
22894            point_clipping_behavior: PointClippingBehavior::default(),
22895            max_multiview_view_count: u32::default(),
22896            max_multiview_instance_index: u32::default(),
22897            protected_no_fault: Bool32::default(),
22898            max_per_set_descriptors: u32::default(),
22899            max_memory_allocation_size: DeviceSize::default(),
22900        }
22901    }
22902}
22903
22904unsafe impl Send for PhysicalDeviceVulkan11Properties {}
22905unsafe impl Sync for PhysicalDeviceVulkan11Properties {}
22906
22907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
22908#[repr(C)]
22909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22910pub struct PhysicalDeviceVulkan12Features {
22911    pub s_type: StructureType,
22912    pub next: *mut c_void,
22913    pub sampler_mirror_clamp_to_edge: Bool32,
22914    pub draw_indirect_count: Bool32,
22915    pub storage_buffer_8bit_access: Bool32,
22916    pub uniform_and_storage_buffer_8bit_access: Bool32,
22917    pub storage_push_constant8: Bool32,
22918    pub shader_buffer_int64_atomics: Bool32,
22919    pub shader_shared_int64_atomics: Bool32,
22920    pub shader_float16: Bool32,
22921    pub shader_int8: Bool32,
22922    pub descriptor_indexing: Bool32,
22923    pub shader_input_attachment_array_dynamic_indexing: Bool32,
22924    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
22925    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
22926    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
22927    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
22928    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
22929    pub shader_storage_image_array_non_uniform_indexing: Bool32,
22930    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
22931    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
22932    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
22933    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
22934    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
22935    pub descriptor_binding_storage_image_update_after_bind: Bool32,
22936    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
22937    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
22938    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
22939    pub descriptor_binding_update_unused_while_pending: Bool32,
22940    pub descriptor_binding_partially_bound: Bool32,
22941    pub descriptor_binding_variable_descriptor_count: Bool32,
22942    pub runtime_descriptor_array: Bool32,
22943    pub sampler_filter_minmax: Bool32,
22944    pub scalar_block_layout: Bool32,
22945    pub imageless_framebuffer: Bool32,
22946    pub uniform_buffer_standard_layout: Bool32,
22947    pub shader_subgroup_extended_types: Bool32,
22948    pub separate_depth_stencil_layouts: Bool32,
22949    pub host_query_reset: Bool32,
22950    pub timeline_semaphore: Bool32,
22951    pub buffer_device_address: Bool32,
22952    pub buffer_device_address_capture_replay: Bool32,
22953    pub buffer_device_address_multi_device: Bool32,
22954    pub vulkan_memory_model: Bool32,
22955    pub vulkan_memory_model_device_scope: Bool32,
22956    pub vulkan_memory_model_availability_visibility_chains: Bool32,
22957    pub shader_output_viewport_index: Bool32,
22958    pub shader_output_layer: Bool32,
22959    pub subgroup_broadcast_dynamic_id: Bool32,
22960}
22961
22962impl Default for PhysicalDeviceVulkan12Features {
22963    #[inline]
22964    fn default() -> Self {
22965        Self {
22966            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
22967            next: ptr::null_mut(),
22968            sampler_mirror_clamp_to_edge: Bool32::default(),
22969            draw_indirect_count: Bool32::default(),
22970            storage_buffer_8bit_access: Bool32::default(),
22971            uniform_and_storage_buffer_8bit_access: Bool32::default(),
22972            storage_push_constant8: Bool32::default(),
22973            shader_buffer_int64_atomics: Bool32::default(),
22974            shader_shared_int64_atomics: Bool32::default(),
22975            shader_float16: Bool32::default(),
22976            shader_int8: Bool32::default(),
22977            descriptor_indexing: Bool32::default(),
22978            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
22979            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
22980            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
22981            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
22982            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
22983            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
22984            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
22985            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
22986            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
22987            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
22988            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
22989            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
22990            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
22991            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
22992            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
22993            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
22994            descriptor_binding_update_unused_while_pending: Bool32::default(),
22995            descriptor_binding_partially_bound: Bool32::default(),
22996            descriptor_binding_variable_descriptor_count: Bool32::default(),
22997            runtime_descriptor_array: Bool32::default(),
22998            sampler_filter_minmax: Bool32::default(),
22999            scalar_block_layout: Bool32::default(),
23000            imageless_framebuffer: Bool32::default(),
23001            uniform_buffer_standard_layout: Bool32::default(),
23002            shader_subgroup_extended_types: Bool32::default(),
23003            separate_depth_stencil_layouts: Bool32::default(),
23004            host_query_reset: Bool32::default(),
23005            timeline_semaphore: Bool32::default(),
23006            buffer_device_address: Bool32::default(),
23007            buffer_device_address_capture_replay: Bool32::default(),
23008            buffer_device_address_multi_device: Bool32::default(),
23009            vulkan_memory_model: Bool32::default(),
23010            vulkan_memory_model_device_scope: Bool32::default(),
23011            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
23012            shader_output_viewport_index: Bool32::default(),
23013            shader_output_layer: Bool32::default(),
23014            subgroup_broadcast_dynamic_id: Bool32::default(),
23015        }
23016    }
23017}
23018
23019unsafe impl Send for PhysicalDeviceVulkan12Features {}
23020unsafe impl Sync for PhysicalDeviceVulkan12Features {}
23021
23022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
23023#[repr(C)]
23024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23025pub struct PhysicalDeviceVulkan12Properties {
23026    pub s_type: StructureType,
23027    pub next: *mut c_void,
23028    pub driver_id: DriverId,
23029    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
23030    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
23031    pub conformance_version: ConformanceVersion,
23032    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
23033    pub rounding_mode_independence: ShaderFloatControlsIndependence,
23034    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
23035    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
23036    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
23037    pub shader_denorm_preserve_float16: Bool32,
23038    pub shader_denorm_preserve_float32: Bool32,
23039    pub shader_denorm_preserve_float64: Bool32,
23040    pub shader_denorm_flush_to_zero_float16: Bool32,
23041    pub shader_denorm_flush_to_zero_float32: Bool32,
23042    pub shader_denorm_flush_to_zero_float64: Bool32,
23043    pub shader_rounding_mode_rte_float16: Bool32,
23044    pub shader_rounding_mode_rte_float32: Bool32,
23045    pub shader_rounding_mode_rte_float64: Bool32,
23046    pub shader_rounding_mode_rtz_float16: Bool32,
23047    pub shader_rounding_mode_rtz_float32: Bool32,
23048    pub shader_rounding_mode_rtz_float64: Bool32,
23049    pub max_update_after_bind_descriptors_in_all_pools: u32,
23050    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
23051    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
23052    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
23053    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
23054    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
23055    pub robust_buffer_access_update_after_bind: Bool32,
23056    pub quad_divergent_implicit_lod: Bool32,
23057    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
23058    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
23059    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
23060    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
23061    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
23062    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
23063    pub max_per_stage_update_after_bind_resources: u32,
23064    pub max_descriptor_set_update_after_bind_samplers: u32,
23065    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
23066    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
23067    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
23068    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
23069    pub max_descriptor_set_update_after_bind_sampled_images: u32,
23070    pub max_descriptor_set_update_after_bind_storage_images: u32,
23071    pub max_descriptor_set_update_after_bind_input_attachments: u32,
23072    pub supported_depth_resolve_modes: ResolveModeFlags,
23073    pub supported_stencil_resolve_modes: ResolveModeFlags,
23074    pub independent_resolve_none: Bool32,
23075    pub independent_resolve: Bool32,
23076    pub filter_minmax_single_component_formats: Bool32,
23077    pub filter_minmax_image_component_mapping: Bool32,
23078    pub max_timeline_semaphore_value_difference: u64,
23079    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
23080}
23081
23082impl Default for PhysicalDeviceVulkan12Properties {
23083    #[inline]
23084    fn default() -> Self {
23085        Self {
23086            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
23087            next: ptr::null_mut(),
23088            driver_id: DriverId::default(),
23089            driver_name: StringArray::default(),
23090            driver_info: StringArray::default(),
23091            conformance_version: ConformanceVersion::default(),
23092            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
23093            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
23094            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
23095            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
23096            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
23097            shader_denorm_preserve_float16: Bool32::default(),
23098            shader_denorm_preserve_float32: Bool32::default(),
23099            shader_denorm_preserve_float64: Bool32::default(),
23100            shader_denorm_flush_to_zero_float16: Bool32::default(),
23101            shader_denorm_flush_to_zero_float32: Bool32::default(),
23102            shader_denorm_flush_to_zero_float64: Bool32::default(),
23103            shader_rounding_mode_rte_float16: Bool32::default(),
23104            shader_rounding_mode_rte_float32: Bool32::default(),
23105            shader_rounding_mode_rte_float64: Bool32::default(),
23106            shader_rounding_mode_rtz_float16: Bool32::default(),
23107            shader_rounding_mode_rtz_float32: Bool32::default(),
23108            shader_rounding_mode_rtz_float64: Bool32::default(),
23109            max_update_after_bind_descriptors_in_all_pools: u32::default(),
23110            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
23111            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
23112            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
23113            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
23114            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
23115            robust_buffer_access_update_after_bind: Bool32::default(),
23116            quad_divergent_implicit_lod: Bool32::default(),
23117            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
23118            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
23119            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
23120            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
23121            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
23122            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
23123            max_per_stage_update_after_bind_resources: u32::default(),
23124            max_descriptor_set_update_after_bind_samplers: u32::default(),
23125            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
23126            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
23127            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
23128            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
23129            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
23130            max_descriptor_set_update_after_bind_storage_images: u32::default(),
23131            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
23132            supported_depth_resolve_modes: ResolveModeFlags::default(),
23133            supported_stencil_resolve_modes: ResolveModeFlags::default(),
23134            independent_resolve_none: Bool32::default(),
23135            independent_resolve: Bool32::default(),
23136            filter_minmax_single_component_formats: Bool32::default(),
23137            filter_minmax_image_component_mapping: Bool32::default(),
23138            max_timeline_semaphore_value_difference: u64::default(),
23139            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
23140        }
23141    }
23142}
23143
23144unsafe impl Send for PhysicalDeviceVulkan12Properties {}
23145unsafe impl Sync for PhysicalDeviceVulkan12Properties {}
23146
23147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
23148#[repr(C)]
23149#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23150pub struct PhysicalDeviceVulkan13Features {
23151    pub s_type: StructureType,
23152    pub next: *mut c_void,
23153    pub robust_image_access: Bool32,
23154    pub inline_uniform_block: Bool32,
23155    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
23156    pub pipeline_creation_cache_control: Bool32,
23157    pub private_data: Bool32,
23158    pub shader_demote_to_helper_invocation: Bool32,
23159    pub shader_terminate_invocation: Bool32,
23160    pub subgroup_size_control: Bool32,
23161    pub compute_full_subgroups: Bool32,
23162    pub synchronization2: Bool32,
23163    pub texture_compression_astc_hdr: Bool32,
23164    pub shader_zero_initialize_workgroup_memory: Bool32,
23165    pub dynamic_rendering: Bool32,
23166    pub shader_integer_dot_product: Bool32,
23167    pub maintenance4: Bool32,
23168}
23169
23170impl Default for PhysicalDeviceVulkan13Features {
23171    #[inline]
23172    fn default() -> Self {
23173        Self {
23174            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
23175            next: ptr::null_mut(),
23176            robust_image_access: Bool32::default(),
23177            inline_uniform_block: Bool32::default(),
23178            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
23179            pipeline_creation_cache_control: Bool32::default(),
23180            private_data: Bool32::default(),
23181            shader_demote_to_helper_invocation: Bool32::default(),
23182            shader_terminate_invocation: Bool32::default(),
23183            subgroup_size_control: Bool32::default(),
23184            compute_full_subgroups: Bool32::default(),
23185            synchronization2: Bool32::default(),
23186            texture_compression_astc_hdr: Bool32::default(),
23187            shader_zero_initialize_workgroup_memory: Bool32::default(),
23188            dynamic_rendering: Bool32::default(),
23189            shader_integer_dot_product: Bool32::default(),
23190            maintenance4: Bool32::default(),
23191        }
23192    }
23193}
23194
23195unsafe impl Send for PhysicalDeviceVulkan13Features {}
23196unsafe impl Sync for PhysicalDeviceVulkan13Features {}
23197
23198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
23199#[repr(C)]
23200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23201pub struct PhysicalDeviceVulkan13Properties {
23202    pub s_type: StructureType,
23203    pub next: *mut c_void,
23204    pub min_subgroup_size: u32,
23205    pub max_subgroup_size: u32,
23206    pub max_compute_workgroup_subgroups: u32,
23207    pub required_subgroup_size_stages: ShaderStageFlags,
23208    pub max_inline_uniform_block_size: u32,
23209    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
23210    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23211    pub max_descriptor_set_inline_uniform_blocks: u32,
23212    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23213    pub max_inline_uniform_total_size: u32,
23214    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
23215    pub integer_dot_product_8bit_signed_accelerated: Bool32,
23216    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
23217    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
23218    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
23219    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
23220    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
23221    pub integer_dot_product_16bit_signed_accelerated: Bool32,
23222    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
23223    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
23224    pub integer_dot_product_32bit_signed_accelerated: Bool32,
23225    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
23226    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
23227    pub integer_dot_product_64bit_signed_accelerated: Bool32,
23228    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
23229    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
23230    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
23231    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
23232    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
23233    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
23234    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
23235        Bool32,
23236    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
23237    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
23238    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
23239    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
23240    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
23241    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
23242    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
23243    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
23244    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
23245    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
23246    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
23247    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
23248    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
23249    pub max_buffer_size: DeviceSize,
23250}
23251
23252impl Default for PhysicalDeviceVulkan13Properties {
23253    #[inline]
23254    fn default() -> Self {
23255        Self { s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES, next: ptr::null_mut(), min_subgroup_size: u32::default(), max_subgroup_size: u32::default(), max_compute_workgroup_subgroups: u32::default(), required_subgroup_size_stages: ShaderStageFlags::default(), max_inline_uniform_block_size: u32::default(), max_per_stage_descriptor_inline_uniform_blocks: u32::default(), max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(), max_descriptor_set_inline_uniform_blocks: u32::default(), max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(), max_inline_uniform_total_size: u32::default(), integer_dot_product_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_8bit_signed_accelerated: Bool32::default(), integer_dot_product_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_16bit_signed_accelerated: Bool32::default(), integer_dot_product_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_32bit_signed_accelerated: Bool32::default(), integer_dot_product_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_64bit_signed_accelerated: Bool32::default(), integer_dot_product_64bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32::default(), storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(), storage_texel_buffer_offset_single_texel_alignment: Bool32::default(), uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(), uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(), max_buffer_size: DeviceSize::default() }
23256    }
23257}
23258
23259unsafe impl Send for PhysicalDeviceVulkan13Properties {}
23260unsafe impl Sync for PhysicalDeviceVulkan13Properties {}
23261
23262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
23263#[repr(C)]
23264#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23265pub struct PhysicalDeviceVulkan14Features {
23266    pub s_type: StructureType,
23267    pub next: *mut c_void,
23268    pub global_priority_query: Bool32,
23269    pub shader_subgroup_rotate: Bool32,
23270    pub shader_subgroup_rotate_clustered: Bool32,
23271    pub shader_float_controls2: Bool32,
23272    pub shader_expect_assume: Bool32,
23273    pub rectangular_lines: Bool32,
23274    pub bresenham_lines: Bool32,
23275    pub smooth_lines: Bool32,
23276    pub stippled_rectangular_lines: Bool32,
23277    pub stippled_bresenham_lines: Bool32,
23278    pub stippled_smooth_lines: Bool32,
23279    pub vertex_attribute_instance_rate_divisor: Bool32,
23280    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
23281    pub index_type_uint8: Bool32,
23282    pub dynamic_rendering_local_read: Bool32,
23283    pub maintenance5: Bool32,
23284    pub maintenance6: Bool32,
23285    pub pipeline_protected_access: Bool32,
23286    pub pipeline_robustness: Bool32,
23287    pub host_image_copy: Bool32,
23288    pub push_descriptor: Bool32,
23289}
23290
23291impl Default for PhysicalDeviceVulkan14Features {
23292    #[inline]
23293    fn default() -> Self {
23294        Self {
23295            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
23296            next: ptr::null_mut(),
23297            global_priority_query: Bool32::default(),
23298            shader_subgroup_rotate: Bool32::default(),
23299            shader_subgroup_rotate_clustered: Bool32::default(),
23300            shader_float_controls2: Bool32::default(),
23301            shader_expect_assume: Bool32::default(),
23302            rectangular_lines: Bool32::default(),
23303            bresenham_lines: Bool32::default(),
23304            smooth_lines: Bool32::default(),
23305            stippled_rectangular_lines: Bool32::default(),
23306            stippled_bresenham_lines: Bool32::default(),
23307            stippled_smooth_lines: Bool32::default(),
23308            vertex_attribute_instance_rate_divisor: Bool32::default(),
23309            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
23310            index_type_uint8: Bool32::default(),
23311            dynamic_rendering_local_read: Bool32::default(),
23312            maintenance5: Bool32::default(),
23313            maintenance6: Bool32::default(),
23314            pipeline_protected_access: Bool32::default(),
23315            pipeline_robustness: Bool32::default(),
23316            host_image_copy: Bool32::default(),
23317            push_descriptor: Bool32::default(),
23318        }
23319    }
23320}
23321
23322unsafe impl Send for PhysicalDeviceVulkan14Features {}
23323unsafe impl Sync for PhysicalDeviceVulkan14Features {}
23324
23325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
23326#[repr(C)]
23327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23328pub struct PhysicalDeviceVulkan14Properties {
23329    pub s_type: StructureType,
23330    pub next: *mut c_void,
23331    pub line_sub_pixel_precision_bits: u32,
23332    pub max_vertex_attrib_divisor: u32,
23333    pub supports_non_zero_first_instance: Bool32,
23334    pub max_push_descriptors: u32,
23335    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
23336    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
23337    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
23338    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
23339    pub depth_stencil_swizzle_one_support: Bool32,
23340    pub polygon_mode_point_size: Bool32,
23341    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
23342    pub non_strict_wide_lines_use_parallelogram: Bool32,
23343    pub block_texel_view_compatible_multiple_layers: Bool32,
23344    pub max_combined_image_sampler_descriptor_count: u32,
23345    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
23346    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
23347    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
23348    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
23349    pub default_robustness_images: PipelineRobustnessImageBehavior,
23350    pub copy_src_layout_count: u32,
23351    pub copy_src_layouts: *mut ImageLayout,
23352    pub copy_dst_layout_count: u32,
23353    pub copy_dst_layouts: *mut ImageLayout,
23354    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
23355    pub identical_memory_type_requirements: Bool32,
23356}
23357
23358impl Default for PhysicalDeviceVulkan14Properties {
23359    #[inline]
23360    fn default() -> Self {
23361        Self {
23362            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
23363            next: ptr::null_mut(),
23364            line_sub_pixel_precision_bits: u32::default(),
23365            max_vertex_attrib_divisor: u32::default(),
23366            supports_non_zero_first_instance: Bool32::default(),
23367            max_push_descriptors: u32::default(),
23368            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
23369            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
23370            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
23371            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
23372            depth_stencil_swizzle_one_support: Bool32::default(),
23373            polygon_mode_point_size: Bool32::default(),
23374            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
23375            non_strict_wide_lines_use_parallelogram: Bool32::default(),
23376            block_texel_view_compatible_multiple_layers: Bool32::default(),
23377            max_combined_image_sampler_descriptor_count: u32::default(),
23378            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
23379            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
23380            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
23381            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
23382            default_robustness_images: PipelineRobustnessImageBehavior::default(),
23383            copy_src_layout_count: u32::default(),
23384            copy_src_layouts: ptr::null_mut(),
23385            copy_dst_layout_count: u32::default(),
23386            copy_dst_layouts: ptr::null_mut(),
23387            optimal_tiling_layout_uuid: ByteArray::default(),
23388            identical_memory_type_requirements: Bool32::default(),
23389        }
23390    }
23391}
23392
23393unsafe impl Send for PhysicalDeviceVulkan14Properties {}
23394unsafe impl Sync for PhysicalDeviceVulkan14Properties {}
23395
23396/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
23397#[repr(C)]
23398#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23399pub struct PhysicalDeviceVulkanMemoryModelFeatures {
23400    pub s_type: StructureType,
23401    pub next: *mut c_void,
23402    pub vulkan_memory_model: Bool32,
23403    pub vulkan_memory_model_device_scope: Bool32,
23404    pub vulkan_memory_model_availability_visibility_chains: Bool32,
23405}
23406
23407impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
23408    #[inline]
23409    fn default() -> Self {
23410        Self {
23411            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
23412            next: ptr::null_mut(),
23413            vulkan_memory_model: Bool32::default(),
23414            vulkan_memory_model_device_scope: Bool32::default(),
23415            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
23416        }
23417    }
23418}
23419
23420unsafe impl Send for PhysicalDeviceVulkanMemoryModelFeatures {}
23421unsafe impl Sync for PhysicalDeviceVulkanMemoryModelFeatures {}
23422
23423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
23424#[repr(C)]
23425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23426pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
23427    pub s_type: StructureType,
23428    pub next: *mut c_void,
23429    pub workgroup_memory_explicit_layout: Bool32,
23430    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
23431    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
23432    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
23433}
23434
23435impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
23436    #[inline]
23437    fn default() -> Self {
23438        Self {
23439            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
23440            next: ptr::null_mut(),
23441            workgroup_memory_explicit_layout: Bool32::default(),
23442            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
23443            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
23444            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
23445        }
23446    }
23447}
23448
23449unsafe impl Send for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
23450unsafe impl Sync for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
23451
23452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
23453#[repr(C)]
23454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23455pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
23456    pub s_type: StructureType,
23457    pub next: *mut c_void,
23458    pub ycbcr2plane444_formats: Bool32,
23459}
23460
23461impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
23462    #[inline]
23463    fn default() -> Self {
23464        Self {
23465            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
23466            next: ptr::null_mut(),
23467            ycbcr2plane444_formats: Bool32::default(),
23468        }
23469    }
23470}
23471
23472unsafe impl Send for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
23473unsafe impl Sync for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
23474
23475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
23476#[repr(C)]
23477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23478pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
23479    pub s_type: StructureType,
23480    pub next: *mut c_void,
23481    pub ycbcr_degamma: Bool32,
23482}
23483
23484impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
23485    #[inline]
23486    fn default() -> Self {
23487        Self {
23488            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
23489            next: ptr::null_mut(),
23490            ycbcr_degamma: Bool32::default(),
23491        }
23492    }
23493}
23494
23495unsafe impl Send for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
23496unsafe impl Sync for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
23497
23498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
23499#[repr(C)]
23500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23501pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23502    pub s_type: StructureType,
23503    pub next: *mut c_void,
23504    pub ycbcr_image_arrays: Bool32,
23505}
23506
23507impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23508    #[inline]
23509    fn default() -> Self {
23510        Self {
23511            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
23512            next: ptr::null_mut(),
23513            ycbcr_image_arrays: Bool32::default(),
23514        }
23515    }
23516}
23517
23518unsafe impl Send for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23519unsafe impl Sync for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23520
23521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html>
23522#[repr(C)]
23523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23524pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23525    pub s_type: StructureType,
23526    pub next: *mut c_void,
23527    pub zero_initialize_device_memory: Bool32,
23528}
23529
23530impl Default for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23531    #[inline]
23532    fn default() -> Self {
23533        Self {
23534            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT,
23535            next: ptr::null_mut(),
23536            zero_initialize_device_memory: Bool32::default(),
23537        }
23538    }
23539}
23540
23541unsafe impl Send for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23542unsafe impl Sync for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23543
23544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
23545#[repr(C)]
23546#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23547pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23548    pub s_type: StructureType,
23549    pub next: *mut c_void,
23550    pub shader_zero_initialize_workgroup_memory: Bool32,
23551}
23552
23553impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23554    #[inline]
23555    fn default() -> Self {
23556        Self {
23557            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
23558            next: ptr::null_mut(),
23559            shader_zero_initialize_workgroup_memory: Bool32::default(),
23560        }
23561    }
23562}
23563
23564unsafe impl Send for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23565unsafe impl Sync for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23566
23567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
23568#[repr(C)]
23569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23570pub struct PipelineBinaryCreateInfoKHR {
23571    pub s_type: StructureType,
23572    pub next: *const c_void,
23573    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
23574    pub pipeline: Pipeline,
23575    pub pipeline_create_info: *const PipelineCreateInfoKHR,
23576}
23577
23578impl Default for PipelineBinaryCreateInfoKHR {
23579    #[inline]
23580    fn default() -> Self {
23581        Self {
23582            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
23583            next: ptr::null(),
23584            keys_and_data_info: ptr::null(),
23585            pipeline: Pipeline::default(),
23586            pipeline_create_info: ptr::null(),
23587        }
23588    }
23589}
23590
23591unsafe impl Send for PipelineBinaryCreateInfoKHR {}
23592unsafe impl Sync for PipelineBinaryCreateInfoKHR {}
23593
23594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
23595#[repr(C)]
23596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23597pub struct PipelineBinaryDataInfoKHR {
23598    pub s_type: StructureType,
23599    pub next: *mut c_void,
23600    pub pipeline_binary: PipelineBinaryKHR,
23601}
23602
23603impl Default for PipelineBinaryDataInfoKHR {
23604    #[inline]
23605    fn default() -> Self {
23606        Self {
23607            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
23608            next: ptr::null_mut(),
23609            pipeline_binary: PipelineBinaryKHR::default(),
23610        }
23611    }
23612}
23613
23614unsafe impl Send for PipelineBinaryDataInfoKHR {}
23615unsafe impl Sync for PipelineBinaryDataInfoKHR {}
23616
23617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
23618#[repr(C)]
23619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23620pub struct PipelineBinaryDataKHR {
23621    pub data_size: usize,
23622    pub data: *mut c_void,
23623}
23624
23625impl Default for PipelineBinaryDataKHR {
23626    #[inline]
23627    fn default() -> Self {
23628        Self {
23629            data_size: usize::default(),
23630            data: ptr::null_mut(),
23631        }
23632    }
23633}
23634
23635unsafe impl Send for PipelineBinaryDataKHR {}
23636unsafe impl Sync for PipelineBinaryDataKHR {}
23637
23638/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
23639#[repr(C)]
23640#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23641pub struct PipelineBinaryHandlesInfoKHR {
23642    pub s_type: StructureType,
23643    pub next: *const c_void,
23644    pub pipeline_binary_count: u32,
23645    pub pipeline_binaries: *mut PipelineBinaryKHR,
23646}
23647
23648impl Default for PipelineBinaryHandlesInfoKHR {
23649    #[inline]
23650    fn default() -> Self {
23651        Self {
23652            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
23653            next: ptr::null(),
23654            pipeline_binary_count: u32::default(),
23655            pipeline_binaries: ptr::null_mut(),
23656        }
23657    }
23658}
23659
23660unsafe impl Send for PipelineBinaryHandlesInfoKHR {}
23661unsafe impl Sync for PipelineBinaryHandlesInfoKHR {}
23662
23663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
23664#[repr(C)]
23665#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23666pub struct PipelineBinaryInfoKHR {
23667    pub s_type: StructureType,
23668    pub next: *const c_void,
23669    pub binary_count: u32,
23670    pub pipeline_binaries: *const PipelineBinaryKHR,
23671}
23672
23673impl Default for PipelineBinaryInfoKHR {
23674    #[inline]
23675    fn default() -> Self {
23676        Self {
23677            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
23678            next: ptr::null(),
23679            binary_count: u32::default(),
23680            pipeline_binaries: ptr::null(),
23681        }
23682    }
23683}
23684
23685unsafe impl Send for PipelineBinaryInfoKHR {}
23686unsafe impl Sync for PipelineBinaryInfoKHR {}
23687
23688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
23689#[repr(C)]
23690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23691pub struct PipelineBinaryKeyKHR {
23692    pub s_type: StructureType,
23693    pub next: *mut c_void,
23694    pub key_size: u32,
23695    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
23696}
23697
23698impl Default for PipelineBinaryKeyKHR {
23699    #[inline]
23700    fn default() -> Self {
23701        Self {
23702            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
23703            next: ptr::null_mut(),
23704            key_size: u32::default(),
23705            key: ByteArray::default(),
23706        }
23707    }
23708}
23709
23710unsafe impl Send for PipelineBinaryKeyKHR {}
23711unsafe impl Sync for PipelineBinaryKeyKHR {}
23712
23713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
23714#[repr(C)]
23715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23716pub struct PipelineBinaryKeysAndDataKHR {
23717    pub binary_count: u32,
23718    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
23719    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
23720}
23721
23722impl Default for PipelineBinaryKeysAndDataKHR {
23723    #[inline]
23724    fn default() -> Self {
23725        Self {
23726            binary_count: u32::default(),
23727            pipeline_binary_keys: ptr::null(),
23728            pipeline_binary_data: ptr::null(),
23729        }
23730    }
23731}
23732
23733unsafe impl Send for PipelineBinaryKeysAndDataKHR {}
23734unsafe impl Sync for PipelineBinaryKeysAndDataKHR {}
23735
23736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
23737#[repr(C)]
23738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23739pub struct PipelineCacheCreateInfo {
23740    pub s_type: StructureType,
23741    pub next: *const c_void,
23742    pub flags: PipelineCacheCreateFlags,
23743    pub initial_data_size: usize,
23744    pub initial_data: *const c_void,
23745}
23746
23747impl Default for PipelineCacheCreateInfo {
23748    #[inline]
23749    fn default() -> Self {
23750        Self {
23751            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
23752            next: ptr::null(),
23753            flags: PipelineCacheCreateFlags::default(),
23754            initial_data_size: usize::default(),
23755            initial_data: ptr::null(),
23756        }
23757    }
23758}
23759
23760unsafe impl Send for PipelineCacheCreateInfo {}
23761unsafe impl Sync for PipelineCacheCreateInfo {}
23762
23763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionDataGraphQCOM.html>
23764#[repr(C)]
23765#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23766pub struct PipelineCacheHeaderVersionDataGraphQCOM {
23767    pub header_size: u32,
23768    pub header_version: PipelineCacheHeaderVersion,
23769    pub cache_type: DataGraphModelCacheTypeQCOM,
23770    pub cache_version: u32,
23771    pub toolchain_version: [u32; DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM as usize],
23772}
23773
23774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
23775#[repr(C)]
23776#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23777pub struct PipelineCacheHeaderVersionOne {
23778    pub header_size: u32,
23779    pub header_version: PipelineCacheHeaderVersion,
23780    pub vendor_id: u32,
23781    pub device_id: u32,
23782    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
23783}
23784
23785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
23786#[repr(C)]
23787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23788pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
23789    pub s_type: StructureType,
23790    pub next: *const c_void,
23791    pub src_premultiplied: Bool32,
23792    pub dst_premultiplied: Bool32,
23793    pub blend_overlap: BlendOverlapEXT,
23794}
23795
23796impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
23797    #[inline]
23798    fn default() -> Self {
23799        Self {
23800            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
23801            next: ptr::null(),
23802            src_premultiplied: Bool32::default(),
23803            dst_premultiplied: Bool32::default(),
23804            blend_overlap: BlendOverlapEXT::default(),
23805        }
23806    }
23807}
23808
23809unsafe impl Send for PipelineColorBlendAdvancedStateCreateInfoEXT {}
23810unsafe impl Sync for PipelineColorBlendAdvancedStateCreateInfoEXT {}
23811
23812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
23813#[repr(C)]
23814#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23815pub struct PipelineColorBlendAttachmentState {
23816    pub blend_enable: Bool32,
23817    pub src_color_blend_factor: BlendFactor,
23818    pub dst_color_blend_factor: BlendFactor,
23819    pub color_blend_op: BlendOp,
23820    pub src_alpha_blend_factor: BlendFactor,
23821    pub dst_alpha_blend_factor: BlendFactor,
23822    pub alpha_blend_op: BlendOp,
23823    pub color_write_mask: ColorComponentFlags,
23824}
23825
23826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
23827#[repr(C)]
23828#[derive(Copy, Clone, Debug, PartialEq)]
23829pub struct PipelineColorBlendStateCreateInfo {
23830    pub s_type: StructureType,
23831    pub next: *const c_void,
23832    pub flags: PipelineColorBlendStateCreateFlags,
23833    pub logic_op_enable: Bool32,
23834    pub logic_op: LogicOp,
23835    pub attachment_count: u32,
23836    pub attachments: *const PipelineColorBlendAttachmentState,
23837    pub blend_constants: [f32; 4],
23838}
23839
23840impl Default for PipelineColorBlendStateCreateInfo {
23841    #[inline]
23842    fn default() -> Self {
23843        Self {
23844            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
23845            next: ptr::null(),
23846            flags: PipelineColorBlendStateCreateFlags::default(),
23847            logic_op_enable: Bool32::default(),
23848            logic_op: LogicOp::default(),
23849            attachment_count: u32::default(),
23850            attachments: ptr::null(),
23851            blend_constants: [f32::default(); 4],
23852        }
23853    }
23854}
23855
23856unsafe impl Send for PipelineColorBlendStateCreateInfo {}
23857unsafe impl Sync for PipelineColorBlendStateCreateInfo {}
23858
23859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
23860#[repr(C)]
23861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23862pub struct PipelineColorWriteCreateInfoEXT {
23863    pub s_type: StructureType,
23864    pub next: *const c_void,
23865    pub attachment_count: u32,
23866    pub color_write_enables: *const Bool32,
23867}
23868
23869impl Default for PipelineColorWriteCreateInfoEXT {
23870    #[inline]
23871    fn default() -> Self {
23872        Self {
23873            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
23874            next: ptr::null(),
23875            attachment_count: u32::default(),
23876            color_write_enables: ptr::null(),
23877        }
23878    }
23879}
23880
23881unsafe impl Send for PipelineColorWriteCreateInfoEXT {}
23882unsafe impl Sync for PipelineColorWriteCreateInfoEXT {}
23883
23884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
23885#[repr(C)]
23886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23887pub struct PipelineCompilerControlCreateInfoAMD {
23888    pub s_type: StructureType,
23889    pub next: *const c_void,
23890    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
23891}
23892
23893impl Default for PipelineCompilerControlCreateInfoAMD {
23894    #[inline]
23895    fn default() -> Self {
23896        Self {
23897            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
23898            next: ptr::null(),
23899            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
23900        }
23901    }
23902}
23903
23904unsafe impl Send for PipelineCompilerControlCreateInfoAMD {}
23905unsafe impl Sync for PipelineCompilerControlCreateInfoAMD {}
23906
23907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
23908#[repr(C)]
23909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23910pub struct PipelineCoverageModulationStateCreateInfoNV {
23911    pub s_type: StructureType,
23912    pub next: *const c_void,
23913    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
23914    pub coverage_modulation_mode: CoverageModulationModeNV,
23915    pub coverage_modulation_table_enable: Bool32,
23916    pub coverage_modulation_table_count: u32,
23917    pub coverage_modulation_table: *const f32,
23918}
23919
23920impl Default for PipelineCoverageModulationStateCreateInfoNV {
23921    #[inline]
23922    fn default() -> Self {
23923        Self {
23924            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
23925            next: ptr::null(),
23926            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
23927            coverage_modulation_mode: CoverageModulationModeNV::default(),
23928            coverage_modulation_table_enable: Bool32::default(),
23929            coverage_modulation_table_count: u32::default(),
23930            coverage_modulation_table: ptr::null(),
23931        }
23932    }
23933}
23934
23935unsafe impl Send for PipelineCoverageModulationStateCreateInfoNV {}
23936unsafe impl Sync for PipelineCoverageModulationStateCreateInfoNV {}
23937
23938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
23939#[repr(C)]
23940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23941pub struct PipelineCoverageReductionStateCreateInfoNV {
23942    pub s_type: StructureType,
23943    pub next: *const c_void,
23944    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
23945    pub coverage_reduction_mode: CoverageReductionModeNV,
23946}
23947
23948impl Default for PipelineCoverageReductionStateCreateInfoNV {
23949    #[inline]
23950    fn default() -> Self {
23951        Self {
23952            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
23953            next: ptr::null(),
23954            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
23955            coverage_reduction_mode: CoverageReductionModeNV::default(),
23956        }
23957    }
23958}
23959
23960unsafe impl Send for PipelineCoverageReductionStateCreateInfoNV {}
23961unsafe impl Sync for PipelineCoverageReductionStateCreateInfoNV {}
23962
23963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
23964#[repr(C)]
23965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23966pub struct PipelineCoverageToColorStateCreateInfoNV {
23967    pub s_type: StructureType,
23968    pub next: *const c_void,
23969    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
23970    pub coverage_to_color_enable: Bool32,
23971    pub coverage_to_color_location: u32,
23972}
23973
23974impl Default for PipelineCoverageToColorStateCreateInfoNV {
23975    #[inline]
23976    fn default() -> Self {
23977        Self {
23978            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
23979            next: ptr::null(),
23980            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
23981            coverage_to_color_enable: Bool32::default(),
23982            coverage_to_color_location: u32::default(),
23983        }
23984    }
23985}
23986
23987unsafe impl Send for PipelineCoverageToColorStateCreateInfoNV {}
23988unsafe impl Sync for PipelineCoverageToColorStateCreateInfoNV {}
23989
23990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
23991#[repr(C)]
23992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23993pub struct PipelineCreateFlags2CreateInfo {
23994    pub s_type: StructureType,
23995    pub next: *const c_void,
23996    pub flags: PipelineCreateFlags2,
23997}
23998
23999impl Default for PipelineCreateFlags2CreateInfo {
24000    #[inline]
24001    fn default() -> Self {
24002        Self {
24003            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
24004            next: ptr::null(),
24005            flags: PipelineCreateFlags2::default(),
24006        }
24007    }
24008}
24009
24010unsafe impl Send for PipelineCreateFlags2CreateInfo {}
24011unsafe impl Sync for PipelineCreateFlags2CreateInfo {}
24012
24013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
24014#[repr(C)]
24015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24016pub struct PipelineCreateInfoKHR {
24017    pub s_type: StructureType,
24018    pub next: *mut c_void,
24019}
24020
24021impl Default for PipelineCreateInfoKHR {
24022    #[inline]
24023    fn default() -> Self {
24024        Self {
24025            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
24026            next: ptr::null_mut(),
24027        }
24028    }
24029}
24030
24031unsafe impl Send for PipelineCreateInfoKHR {}
24032unsafe impl Sync for PipelineCreateInfoKHR {}
24033
24034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
24035#[repr(C)]
24036#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24037pub struct PipelineCreationFeedback {
24038    pub flags: PipelineCreationFeedbackFlags,
24039    pub duration: u64,
24040}
24041
24042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
24043#[repr(C)]
24044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24045pub struct PipelineCreationFeedbackCreateInfo {
24046    pub s_type: StructureType,
24047    pub next: *const c_void,
24048    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
24049    pub pipeline_stage_creation_feedback_count: u32,
24050    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
24051}
24052
24053impl Default for PipelineCreationFeedbackCreateInfo {
24054    #[inline]
24055    fn default() -> Self {
24056        Self {
24057            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
24058            next: ptr::null(),
24059            pipeline_creation_feedback: ptr::null_mut(),
24060            pipeline_stage_creation_feedback_count: u32::default(),
24061            pipeline_stage_creation_feedbacks: ptr::null_mut(),
24062        }
24063    }
24064}
24065
24066unsafe impl Send for PipelineCreationFeedbackCreateInfo {}
24067unsafe impl Sync for PipelineCreationFeedbackCreateInfo {}
24068
24069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
24070#[repr(C)]
24071#[derive(Copy, Clone, Debug, PartialEq)]
24072pub struct PipelineDepthStencilStateCreateInfo {
24073    pub s_type: StructureType,
24074    pub next: *const c_void,
24075    pub flags: PipelineDepthStencilStateCreateFlags,
24076    pub depth_test_enable: Bool32,
24077    pub depth_write_enable: Bool32,
24078    pub depth_compare_op: CompareOp,
24079    pub depth_bounds_test_enable: Bool32,
24080    pub stencil_test_enable: Bool32,
24081    pub front: StencilOpState,
24082    pub back: StencilOpState,
24083    pub min_depth_bounds: f32,
24084    pub max_depth_bounds: f32,
24085}
24086
24087impl Default for PipelineDepthStencilStateCreateInfo {
24088    #[inline]
24089    fn default() -> Self {
24090        Self {
24091            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
24092            next: ptr::null(),
24093            flags: PipelineDepthStencilStateCreateFlags::default(),
24094            depth_test_enable: Bool32::default(),
24095            depth_write_enable: Bool32::default(),
24096            depth_compare_op: CompareOp::default(),
24097            depth_bounds_test_enable: Bool32::default(),
24098            stencil_test_enable: Bool32::default(),
24099            front: StencilOpState::default(),
24100            back: StencilOpState::default(),
24101            min_depth_bounds: f32::default(),
24102            max_depth_bounds: f32::default(),
24103        }
24104    }
24105}
24106
24107unsafe impl Send for PipelineDepthStencilStateCreateInfo {}
24108unsafe impl Sync for PipelineDepthStencilStateCreateInfo {}
24109
24110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
24111#[repr(C)]
24112#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24113pub struct PipelineDiscardRectangleStateCreateInfoEXT {
24114    pub s_type: StructureType,
24115    pub next: *const c_void,
24116    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
24117    pub discard_rectangle_mode: DiscardRectangleModeEXT,
24118    pub discard_rectangle_count: u32,
24119    pub discard_rectangles: *const Rect2D,
24120}
24121
24122impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
24123    #[inline]
24124    fn default() -> Self {
24125        Self {
24126            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
24127            next: ptr::null(),
24128            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
24129            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
24130            discard_rectangle_count: u32::default(),
24131            discard_rectangles: ptr::null(),
24132        }
24133    }
24134}
24135
24136unsafe impl Send for PipelineDiscardRectangleStateCreateInfoEXT {}
24137unsafe impl Sync for PipelineDiscardRectangleStateCreateInfoEXT {}
24138
24139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
24140#[repr(C)]
24141#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24142pub struct PipelineDynamicStateCreateInfo {
24143    pub s_type: StructureType,
24144    pub next: *const c_void,
24145    pub flags: PipelineDynamicStateCreateFlags,
24146    pub dynamic_state_count: u32,
24147    pub dynamic_states: *const DynamicState,
24148}
24149
24150impl Default for PipelineDynamicStateCreateInfo {
24151    #[inline]
24152    fn default() -> Self {
24153        Self {
24154            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
24155            next: ptr::null(),
24156            flags: PipelineDynamicStateCreateFlags::default(),
24157            dynamic_state_count: u32::default(),
24158            dynamic_states: ptr::null(),
24159        }
24160    }
24161}
24162
24163unsafe impl Send for PipelineDynamicStateCreateInfo {}
24164unsafe impl Sync for PipelineDynamicStateCreateInfo {}
24165
24166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
24167#[repr(C)]
24168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24169pub struct PipelineExecutableInfoKHR {
24170    pub s_type: StructureType,
24171    pub next: *const c_void,
24172    pub pipeline: Pipeline,
24173    pub executable_index: u32,
24174}
24175
24176impl Default for PipelineExecutableInfoKHR {
24177    #[inline]
24178    fn default() -> Self {
24179        Self {
24180            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
24181            next: ptr::null(),
24182            pipeline: Pipeline::default(),
24183            executable_index: u32::default(),
24184        }
24185    }
24186}
24187
24188unsafe impl Send for PipelineExecutableInfoKHR {}
24189unsafe impl Sync for PipelineExecutableInfoKHR {}
24190
24191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
24192#[repr(C)]
24193#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24194pub struct PipelineExecutableInternalRepresentationKHR {
24195    pub s_type: StructureType,
24196    pub next: *mut c_void,
24197    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24198    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24199    pub is_text: Bool32,
24200    pub data_size: usize,
24201    pub data: *mut c_void,
24202}
24203
24204impl Default for PipelineExecutableInternalRepresentationKHR {
24205    #[inline]
24206    fn default() -> Self {
24207        Self {
24208            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
24209            next: ptr::null_mut(),
24210            name: StringArray::default(),
24211            description: StringArray::default(),
24212            is_text: Bool32::default(),
24213            data_size: usize::default(),
24214            data: ptr::null_mut(),
24215        }
24216    }
24217}
24218
24219unsafe impl Send for PipelineExecutableInternalRepresentationKHR {}
24220unsafe impl Sync for PipelineExecutableInternalRepresentationKHR {}
24221
24222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
24223#[repr(C)]
24224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24225pub struct PipelineExecutablePropertiesKHR {
24226    pub s_type: StructureType,
24227    pub next: *mut c_void,
24228    pub stages: ShaderStageFlags,
24229    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24230    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24231    pub subgroup_size: u32,
24232}
24233
24234impl Default for PipelineExecutablePropertiesKHR {
24235    #[inline]
24236    fn default() -> Self {
24237        Self {
24238            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
24239            next: ptr::null_mut(),
24240            stages: ShaderStageFlags::default(),
24241            name: StringArray::default(),
24242            description: StringArray::default(),
24243            subgroup_size: u32::default(),
24244        }
24245    }
24246}
24247
24248unsafe impl Send for PipelineExecutablePropertiesKHR {}
24249unsafe impl Sync for PipelineExecutablePropertiesKHR {}
24250
24251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
24252#[repr(C)]
24253#[derive(Copy, Clone, Debug)]
24254pub struct PipelineExecutableStatisticKHR {
24255    pub s_type: StructureType,
24256    pub next: *mut c_void,
24257    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24258    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24259    pub format: PipelineExecutableStatisticFormatKHR,
24260    pub value: PipelineExecutableStatisticValueKHR,
24261}
24262
24263impl Default for PipelineExecutableStatisticKHR {
24264    #[inline]
24265    fn default() -> Self {
24266        Self {
24267            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
24268            next: ptr::null_mut(),
24269            name: StringArray::default(),
24270            description: StringArray::default(),
24271            format: PipelineExecutableStatisticFormatKHR::default(),
24272            value: PipelineExecutableStatisticValueKHR::default(),
24273        }
24274    }
24275}
24276
24277unsafe impl Send for PipelineExecutableStatisticKHR {}
24278unsafe impl Sync for PipelineExecutableStatisticKHR {}
24279
24280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html>
24281#[repr(C)]
24282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24283pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVE {
24284    pub s_type: StructureType,
24285    pub next: *const c_void,
24286    pub max_fragment_density_map_layers: u32,
24287}
24288
24289impl Default for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
24290    #[inline]
24291    fn default() -> Self {
24292        Self {
24293            s_type: StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE,
24294            next: ptr::null(),
24295            max_fragment_density_map_layers: u32::default(),
24296        }
24297    }
24298}
24299
24300unsafe impl Send for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
24301unsafe impl Sync for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
24302
24303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
24304#[repr(C)]
24305#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24306pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
24307    pub s_type: StructureType,
24308    pub next: *const c_void,
24309    pub shading_rate_type: FragmentShadingRateTypeNV,
24310    pub shading_rate: FragmentShadingRateNV,
24311    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
24312}
24313
24314impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
24315    #[inline]
24316    fn default() -> Self {
24317        Self {
24318            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
24319            next: ptr::null(),
24320            shading_rate_type: FragmentShadingRateTypeNV::default(),
24321            shading_rate: FragmentShadingRateNV::default(),
24322            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
24323        }
24324    }
24325}
24326
24327unsafe impl Send for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
24328unsafe impl Sync for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
24329
24330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
24331#[repr(C)]
24332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24333pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
24334    pub s_type: StructureType,
24335    pub next: *const c_void,
24336    pub fragment_size: Extent2D,
24337    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
24338}
24339
24340impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
24341    #[inline]
24342    fn default() -> Self {
24343        Self {
24344            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
24345            next: ptr::null(),
24346            fragment_size: Extent2D::default(),
24347            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
24348        }
24349    }
24350}
24351
24352unsafe impl Send for PipelineFragmentShadingRateStateCreateInfoKHR {}
24353unsafe impl Sync for PipelineFragmentShadingRateStateCreateInfoKHR {}
24354
24355/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
24356#[repr(C)]
24357#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24358pub struct PipelineIndirectDeviceAddressInfoNV {
24359    pub s_type: StructureType,
24360    pub next: *const c_void,
24361    pub pipeline_bind_point: PipelineBindPoint,
24362    pub pipeline: Pipeline,
24363}
24364
24365impl Default for PipelineIndirectDeviceAddressInfoNV {
24366    #[inline]
24367    fn default() -> Self {
24368        Self {
24369            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
24370            next: ptr::null(),
24371            pipeline_bind_point: PipelineBindPoint::default(),
24372            pipeline: Pipeline::default(),
24373        }
24374    }
24375}
24376
24377unsafe impl Send for PipelineIndirectDeviceAddressInfoNV {}
24378unsafe impl Sync for PipelineIndirectDeviceAddressInfoNV {}
24379
24380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
24381#[repr(C)]
24382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24383pub struct PipelineInfoKHR {
24384    pub s_type: StructureType,
24385    pub next: *const c_void,
24386    pub pipeline: Pipeline,
24387}
24388
24389impl Default for PipelineInfoKHR {
24390    #[inline]
24391    fn default() -> Self {
24392        Self {
24393            s_type: StructureType::PIPELINE_INFO_KHR,
24394            next: ptr::null(),
24395            pipeline: Pipeline::default(),
24396        }
24397    }
24398}
24399
24400unsafe impl Send for PipelineInfoKHR {}
24401unsafe impl Sync for PipelineInfoKHR {}
24402
24403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
24404#[repr(C)]
24405#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24406pub struct PipelineInputAssemblyStateCreateInfo {
24407    pub s_type: StructureType,
24408    pub next: *const c_void,
24409    pub flags: PipelineInputAssemblyStateCreateFlags,
24410    pub topology: PrimitiveTopology,
24411    pub primitive_restart_enable: Bool32,
24412}
24413
24414impl Default for PipelineInputAssemblyStateCreateInfo {
24415    #[inline]
24416    fn default() -> Self {
24417        Self {
24418            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
24419            next: ptr::null(),
24420            flags: PipelineInputAssemblyStateCreateFlags::default(),
24421            topology: PrimitiveTopology::default(),
24422            primitive_restart_enable: Bool32::default(),
24423        }
24424    }
24425}
24426
24427unsafe impl Send for PipelineInputAssemblyStateCreateInfo {}
24428unsafe impl Sync for PipelineInputAssemblyStateCreateInfo {}
24429
24430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
24431#[repr(C)]
24432#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24433pub struct PipelineLayoutCreateInfo {
24434    pub s_type: StructureType,
24435    pub next: *const c_void,
24436    pub flags: PipelineLayoutCreateFlags,
24437    pub set_layout_count: u32,
24438    pub set_layouts: *const DescriptorSetLayout,
24439    pub push_constant_range_count: u32,
24440    pub push_constant_ranges: *const PushConstantRange,
24441}
24442
24443impl Default for PipelineLayoutCreateInfo {
24444    #[inline]
24445    fn default() -> Self {
24446        Self {
24447            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
24448            next: ptr::null(),
24449            flags: PipelineLayoutCreateFlags::default(),
24450            set_layout_count: u32::default(),
24451            set_layouts: ptr::null(),
24452            push_constant_range_count: u32::default(),
24453            push_constant_ranges: ptr::null(),
24454        }
24455    }
24456}
24457
24458unsafe impl Send for PipelineLayoutCreateInfo {}
24459unsafe impl Sync for PipelineLayoutCreateInfo {}
24460
24461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
24462#[repr(C)]
24463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24464pub struct PipelineLibraryCreateInfoKHR {
24465    pub s_type: StructureType,
24466    pub next: *const c_void,
24467    pub library_count: u32,
24468    pub libraries: *const Pipeline,
24469}
24470
24471impl Default for PipelineLibraryCreateInfoKHR {
24472    #[inline]
24473    fn default() -> Self {
24474        Self {
24475            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
24476            next: ptr::null(),
24477            library_count: u32::default(),
24478            libraries: ptr::null(),
24479        }
24480    }
24481}
24482
24483unsafe impl Send for PipelineLibraryCreateInfoKHR {}
24484unsafe impl Sync for PipelineLibraryCreateInfoKHR {}
24485
24486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
24487#[repr(C)]
24488#[derive(Copy, Clone, Debug, PartialEq)]
24489pub struct PipelineMultisampleStateCreateInfo {
24490    pub s_type: StructureType,
24491    pub next: *const c_void,
24492    pub flags: PipelineMultisampleStateCreateFlags,
24493    pub rasterization_samples: SampleCountFlags,
24494    pub sample_shading_enable: Bool32,
24495    pub min_sample_shading: f32,
24496    pub sample_mask: *const SampleMask,
24497    pub alpha_to_coverage_enable: Bool32,
24498    pub alpha_to_one_enable: Bool32,
24499}
24500
24501impl Default for PipelineMultisampleStateCreateInfo {
24502    #[inline]
24503    fn default() -> Self {
24504        Self {
24505            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
24506            next: ptr::null(),
24507            flags: PipelineMultisampleStateCreateFlags::default(),
24508            rasterization_samples: SampleCountFlags::default(),
24509            sample_shading_enable: Bool32::default(),
24510            min_sample_shading: f32::default(),
24511            sample_mask: ptr::null(),
24512            alpha_to_coverage_enable: Bool32::default(),
24513            alpha_to_one_enable: Bool32::default(),
24514        }
24515    }
24516}
24517
24518unsafe impl Send for PipelineMultisampleStateCreateInfo {}
24519unsafe impl Sync for PipelineMultisampleStateCreateInfo {}
24520
24521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
24522#[repr(C)]
24523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24524pub struct PipelinePropertiesIdentifierEXT {
24525    pub s_type: StructureType,
24526    pub next: *mut c_void,
24527    pub pipeline_identifier: ByteArray<UUID_SIZE>,
24528}
24529
24530impl Default for PipelinePropertiesIdentifierEXT {
24531    #[inline]
24532    fn default() -> Self {
24533        Self {
24534            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
24535            next: ptr::null_mut(),
24536            pipeline_identifier: ByteArray::default(),
24537        }
24538    }
24539}
24540
24541unsafe impl Send for PipelinePropertiesIdentifierEXT {}
24542unsafe impl Sync for PipelinePropertiesIdentifierEXT {}
24543
24544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
24545#[repr(C)]
24546#[derive(Copy, Clone, Debug, PartialEq)]
24547pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
24548    pub s_type: StructureType,
24549    pub next: *const c_void,
24550    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
24551    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
24552    pub extra_primitive_overestimation_size: f32,
24553}
24554
24555impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
24556    #[inline]
24557    fn default() -> Self {
24558        Self {
24559            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
24560            next: ptr::null(),
24561            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
24562            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
24563            extra_primitive_overestimation_size: f32::default(),
24564        }
24565    }
24566}
24567
24568unsafe impl Send for PipelineRasterizationConservativeStateCreateInfoEXT {}
24569unsafe impl Sync for PipelineRasterizationConservativeStateCreateInfoEXT {}
24570
24571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
24572#[repr(C)]
24573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24574pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
24575    pub s_type: StructureType,
24576    pub next: *const c_void,
24577    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
24578    pub depth_clip_enable: Bool32,
24579}
24580
24581impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
24582    #[inline]
24583    fn default() -> Self {
24584        Self {
24585            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
24586            next: ptr::null(),
24587            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
24588            depth_clip_enable: Bool32::default(),
24589        }
24590    }
24591}
24592
24593unsafe impl Send for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24594unsafe impl Sync for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24595
24596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
24597#[repr(C)]
24598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24599pub struct PipelineRasterizationLineStateCreateInfo {
24600    pub s_type: StructureType,
24601    pub next: *const c_void,
24602    pub line_rasterization_mode: LineRasterizationMode,
24603    pub stippled_line_enable: Bool32,
24604    pub line_stipple_factor: u32,
24605    pub line_stipple_pattern: u16,
24606}
24607
24608impl Default for PipelineRasterizationLineStateCreateInfo {
24609    #[inline]
24610    fn default() -> Self {
24611        Self {
24612            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
24613            next: ptr::null(),
24614            line_rasterization_mode: LineRasterizationMode::default(),
24615            stippled_line_enable: Bool32::default(),
24616            line_stipple_factor: u32::default(),
24617            line_stipple_pattern: u16::default(),
24618        }
24619    }
24620}
24621
24622unsafe impl Send for PipelineRasterizationLineStateCreateInfo {}
24623unsafe impl Sync for PipelineRasterizationLineStateCreateInfo {}
24624
24625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
24626#[repr(C)]
24627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24628pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24629    pub s_type: StructureType,
24630    pub next: *const c_void,
24631    pub provoking_vertex_mode: ProvokingVertexModeEXT,
24632}
24633
24634impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24635    #[inline]
24636    fn default() -> Self {
24637        Self {
24638            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
24639            next: ptr::null(),
24640            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
24641        }
24642    }
24643}
24644
24645unsafe impl Send for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24646unsafe impl Sync for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24647
24648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
24649#[repr(C)]
24650#[derive(Copy, Clone, Debug, PartialEq)]
24651pub struct PipelineRasterizationStateCreateInfo {
24652    pub s_type: StructureType,
24653    pub next: *const c_void,
24654    pub flags: PipelineRasterizationStateCreateFlags,
24655    pub depth_clamp_enable: Bool32,
24656    pub rasterizer_discard_enable: Bool32,
24657    pub polygon_mode: PolygonMode,
24658    pub cull_mode: CullModeFlags,
24659    pub front_face: FrontFace,
24660    pub depth_bias_enable: Bool32,
24661    pub depth_bias_constant_factor: f32,
24662    pub depth_bias_clamp: f32,
24663    pub depth_bias_slope_factor: f32,
24664    pub line_width: f32,
24665}
24666
24667impl Default for PipelineRasterizationStateCreateInfo {
24668    #[inline]
24669    fn default() -> Self {
24670        Self {
24671            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
24672            next: ptr::null(),
24673            flags: PipelineRasterizationStateCreateFlags::default(),
24674            depth_clamp_enable: Bool32::default(),
24675            rasterizer_discard_enable: Bool32::default(),
24676            polygon_mode: PolygonMode::default(),
24677            cull_mode: CullModeFlags::default(),
24678            front_face: FrontFace::default(),
24679            depth_bias_enable: Bool32::default(),
24680            depth_bias_constant_factor: f32::default(),
24681            depth_bias_clamp: f32::default(),
24682            depth_bias_slope_factor: f32::default(),
24683            line_width: f32::default(),
24684        }
24685    }
24686}
24687
24688unsafe impl Send for PipelineRasterizationStateCreateInfo {}
24689unsafe impl Sync for PipelineRasterizationStateCreateInfo {}
24690
24691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
24692#[repr(C)]
24693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24694pub struct PipelineRasterizationStateRasterizationOrderAMD {
24695    pub s_type: StructureType,
24696    pub next: *const c_void,
24697    pub rasterization_order: RasterizationOrderAMD,
24698}
24699
24700impl Default for PipelineRasterizationStateRasterizationOrderAMD {
24701    #[inline]
24702    fn default() -> Self {
24703        Self {
24704            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
24705            next: ptr::null(),
24706            rasterization_order: RasterizationOrderAMD::default(),
24707        }
24708    }
24709}
24710
24711unsafe impl Send for PipelineRasterizationStateRasterizationOrderAMD {}
24712unsafe impl Sync for PipelineRasterizationStateRasterizationOrderAMD {}
24713
24714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
24715#[repr(C)]
24716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24717pub struct PipelineRasterizationStateStreamCreateInfoEXT {
24718    pub s_type: StructureType,
24719    pub next: *const c_void,
24720    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
24721    pub rasterization_stream: u32,
24722}
24723
24724impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
24725    #[inline]
24726    fn default() -> Self {
24727        Self {
24728            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
24729            next: ptr::null(),
24730            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
24731            rasterization_stream: u32::default(),
24732        }
24733    }
24734}
24735
24736unsafe impl Send for PipelineRasterizationStateStreamCreateInfoEXT {}
24737unsafe impl Sync for PipelineRasterizationStateStreamCreateInfoEXT {}
24738
24739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
24740#[repr(C)]
24741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24742pub struct PipelineRenderingCreateInfo {
24743    pub s_type: StructureType,
24744    pub next: *const c_void,
24745    pub view_mask: u32,
24746    pub color_attachment_count: u32,
24747    pub color_attachment_formats: *const Format,
24748    pub depth_attachment_format: Format,
24749    pub stencil_attachment_format: Format,
24750}
24751
24752impl Default for PipelineRenderingCreateInfo {
24753    #[inline]
24754    fn default() -> Self {
24755        Self {
24756            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
24757            next: ptr::null(),
24758            view_mask: u32::default(),
24759            color_attachment_count: u32::default(),
24760            color_attachment_formats: ptr::null(),
24761            depth_attachment_format: Format::default(),
24762            stencil_attachment_format: Format::default(),
24763        }
24764    }
24765}
24766
24767unsafe impl Send for PipelineRenderingCreateInfo {}
24768unsafe impl Sync for PipelineRenderingCreateInfo {}
24769
24770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
24771#[repr(C)]
24772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24773pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
24774    pub s_type: StructureType,
24775    pub next: *const c_void,
24776    pub representative_fragment_test_enable: Bool32,
24777}
24778
24779impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
24780    #[inline]
24781    fn default() -> Self {
24782        Self {
24783            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
24784            next: ptr::null(),
24785            representative_fragment_test_enable: Bool32::default(),
24786        }
24787    }
24788}
24789
24790unsafe impl Send for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
24791unsafe impl Sync for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
24792
24793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
24794#[repr(C)]
24795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24796pub struct PipelineRobustnessCreateInfo {
24797    pub s_type: StructureType,
24798    pub next: *const c_void,
24799    pub storage_buffers: PipelineRobustnessBufferBehavior,
24800    pub uniform_buffers: PipelineRobustnessBufferBehavior,
24801    pub vertex_inputs: PipelineRobustnessBufferBehavior,
24802    pub images: PipelineRobustnessImageBehavior,
24803}
24804
24805impl Default for PipelineRobustnessCreateInfo {
24806    #[inline]
24807    fn default() -> Self {
24808        Self {
24809            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
24810            next: ptr::null(),
24811            storage_buffers: PipelineRobustnessBufferBehavior::default(),
24812            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
24813            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
24814            images: PipelineRobustnessImageBehavior::default(),
24815        }
24816    }
24817}
24818
24819unsafe impl Send for PipelineRobustnessCreateInfo {}
24820unsafe impl Sync for PipelineRobustnessCreateInfo {}
24821
24822/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
24823#[repr(C)]
24824#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24825pub struct PipelineSampleLocationsStateCreateInfoEXT {
24826    pub s_type: StructureType,
24827    pub next: *const c_void,
24828    pub sample_locations_enable: Bool32,
24829    pub sample_locations_info: SampleLocationsInfoEXT,
24830}
24831
24832impl Default for PipelineSampleLocationsStateCreateInfoEXT {
24833    #[inline]
24834    fn default() -> Self {
24835        Self {
24836            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
24837            next: ptr::null(),
24838            sample_locations_enable: Bool32::default(),
24839            sample_locations_info: SampleLocationsInfoEXT::default(),
24840        }
24841    }
24842}
24843
24844unsafe impl Send for PipelineSampleLocationsStateCreateInfoEXT {}
24845unsafe impl Sync for PipelineSampleLocationsStateCreateInfoEXT {}
24846
24847/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
24848#[repr(C)]
24849#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24850pub struct PipelineShaderStageCreateInfo {
24851    pub s_type: StructureType,
24852    pub next: *const c_void,
24853    pub flags: PipelineShaderStageCreateFlags,
24854    pub stage: ShaderStageFlags,
24855    pub module: ShaderModule,
24856    pub name: *const c_char,
24857    pub specialization_info: *const SpecializationInfo,
24858}
24859
24860impl Default for PipelineShaderStageCreateInfo {
24861    #[inline]
24862    fn default() -> Self {
24863        Self {
24864            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
24865            next: ptr::null(),
24866            flags: PipelineShaderStageCreateFlags::default(),
24867            stage: ShaderStageFlags::default(),
24868            module: ShaderModule::default(),
24869            name: ptr::null(),
24870            specialization_info: ptr::null(),
24871        }
24872    }
24873}
24874
24875unsafe impl Send for PipelineShaderStageCreateInfo {}
24876unsafe impl Sync for PipelineShaderStageCreateInfo {}
24877
24878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
24879#[repr(C)]
24880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24881pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
24882    pub s_type: StructureType,
24883    pub next: *const c_void,
24884    pub identifier_size: u32,
24885    pub identifier: *const u8,
24886}
24887
24888impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
24889    #[inline]
24890    fn default() -> Self {
24891        Self {
24892            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
24893            next: ptr::null(),
24894            identifier_size: u32::default(),
24895            identifier: ptr::null(),
24896        }
24897    }
24898}
24899
24900unsafe impl Send for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
24901unsafe impl Sync for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
24902
24903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
24904#[repr(C)]
24905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24906pub struct PipelineShaderStageNodeCreateInfoAMDX {
24907    pub s_type: StructureType,
24908    pub next: *const c_void,
24909    pub name: *const c_char,
24910    pub index: u32,
24911}
24912
24913impl Default for PipelineShaderStageNodeCreateInfoAMDX {
24914    #[inline]
24915    fn default() -> Self {
24916        Self {
24917            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
24918            next: ptr::null(),
24919            name: ptr::null(),
24920            index: u32::default(),
24921        }
24922    }
24923}
24924
24925unsafe impl Send for PipelineShaderStageNodeCreateInfoAMDX {}
24926unsafe impl Sync for PipelineShaderStageNodeCreateInfoAMDX {}
24927
24928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
24929#[repr(C)]
24930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24931pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
24932    pub s_type: StructureType,
24933    pub next: *const c_void,
24934    pub required_subgroup_size: u32,
24935}
24936
24937impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
24938    #[inline]
24939    fn default() -> Self {
24940        Self {
24941            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
24942            next: ptr::null(),
24943            required_subgroup_size: u32::default(),
24944        }
24945    }
24946}
24947
24948unsafe impl Send for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
24949unsafe impl Sync for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
24950
24951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
24952#[repr(C)]
24953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24954pub struct PipelineTessellationDomainOriginStateCreateInfo {
24955    pub s_type: StructureType,
24956    pub next: *const c_void,
24957    pub domain_origin: TessellationDomainOrigin,
24958}
24959
24960impl Default for PipelineTessellationDomainOriginStateCreateInfo {
24961    #[inline]
24962    fn default() -> Self {
24963        Self {
24964            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
24965            next: ptr::null(),
24966            domain_origin: TessellationDomainOrigin::default(),
24967        }
24968    }
24969}
24970
24971unsafe impl Send for PipelineTessellationDomainOriginStateCreateInfo {}
24972unsafe impl Sync for PipelineTessellationDomainOriginStateCreateInfo {}
24973
24974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
24975#[repr(C)]
24976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24977pub struct PipelineTessellationStateCreateInfo {
24978    pub s_type: StructureType,
24979    pub next: *const c_void,
24980    pub flags: PipelineTessellationStateCreateFlags,
24981    pub patch_control_points: u32,
24982}
24983
24984impl Default for PipelineTessellationStateCreateInfo {
24985    #[inline]
24986    fn default() -> Self {
24987        Self {
24988            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
24989            next: ptr::null(),
24990            flags: PipelineTessellationStateCreateFlags::default(),
24991            patch_control_points: u32::default(),
24992        }
24993    }
24994}
24995
24996unsafe impl Send for PipelineTessellationStateCreateInfo {}
24997unsafe impl Sync for PipelineTessellationStateCreateInfo {}
24998
24999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
25000#[repr(C)]
25001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25002pub struct PipelineVertexInputDivisorStateCreateInfo {
25003    pub s_type: StructureType,
25004    pub next: *const c_void,
25005    pub vertex_binding_divisor_count: u32,
25006    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
25007}
25008
25009impl Default for PipelineVertexInputDivisorStateCreateInfo {
25010    #[inline]
25011    fn default() -> Self {
25012        Self {
25013            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
25014            next: ptr::null(),
25015            vertex_binding_divisor_count: u32::default(),
25016            vertex_binding_divisors: ptr::null(),
25017        }
25018    }
25019}
25020
25021unsafe impl Send for PipelineVertexInputDivisorStateCreateInfo {}
25022unsafe impl Sync for PipelineVertexInputDivisorStateCreateInfo {}
25023
25024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
25025#[repr(C)]
25026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25027pub struct PipelineVertexInputStateCreateInfo {
25028    pub s_type: StructureType,
25029    pub next: *const c_void,
25030    pub flags: PipelineVertexInputStateCreateFlags,
25031    pub vertex_binding_description_count: u32,
25032    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
25033    pub vertex_attribute_description_count: u32,
25034    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
25035}
25036
25037impl Default for PipelineVertexInputStateCreateInfo {
25038    #[inline]
25039    fn default() -> Self {
25040        Self {
25041            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
25042            next: ptr::null(),
25043            flags: PipelineVertexInputStateCreateFlags::default(),
25044            vertex_binding_description_count: u32::default(),
25045            vertex_binding_descriptions: ptr::null(),
25046            vertex_attribute_description_count: u32::default(),
25047            vertex_attribute_descriptions: ptr::null(),
25048        }
25049    }
25050}
25051
25052unsafe impl Send for PipelineVertexInputStateCreateInfo {}
25053unsafe impl Sync for PipelineVertexInputStateCreateInfo {}
25054
25055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
25056#[repr(C)]
25057#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25058pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
25059    pub s_type: StructureType,
25060    pub next: *const c_void,
25061    pub sample_order_type: CoarseSampleOrderTypeNV,
25062    pub custom_sample_order_count: u32,
25063    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
25064}
25065
25066impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
25067    #[inline]
25068    fn default() -> Self {
25069        Self {
25070            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
25071            next: ptr::null(),
25072            sample_order_type: CoarseSampleOrderTypeNV::default(),
25073            custom_sample_order_count: u32::default(),
25074            custom_sample_orders: ptr::null(),
25075        }
25076    }
25077}
25078
25079unsafe impl Send for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
25080unsafe impl Sync for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
25081
25082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
25083#[repr(C)]
25084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25085pub struct PipelineViewportDepthClampControlCreateInfoEXT {
25086    pub s_type: StructureType,
25087    pub next: *const c_void,
25088    pub depth_clamp_mode: DepthClampModeEXT,
25089    pub depth_clamp_range: *const DepthClampRangeEXT,
25090}
25091
25092impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
25093    #[inline]
25094    fn default() -> Self {
25095        Self {
25096            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
25097            next: ptr::null(),
25098            depth_clamp_mode: DepthClampModeEXT::default(),
25099            depth_clamp_range: ptr::null(),
25100        }
25101    }
25102}
25103
25104unsafe impl Send for PipelineViewportDepthClampControlCreateInfoEXT {}
25105unsafe impl Sync for PipelineViewportDepthClampControlCreateInfoEXT {}
25106
25107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
25108#[repr(C)]
25109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25110pub struct PipelineViewportDepthClipControlCreateInfoEXT {
25111    pub s_type: StructureType,
25112    pub next: *const c_void,
25113    pub negative_one_to_one: Bool32,
25114}
25115
25116impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
25117    #[inline]
25118    fn default() -> Self {
25119        Self {
25120            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
25121            next: ptr::null(),
25122            negative_one_to_one: Bool32::default(),
25123        }
25124    }
25125}
25126
25127unsafe impl Send for PipelineViewportDepthClipControlCreateInfoEXT {}
25128unsafe impl Sync for PipelineViewportDepthClipControlCreateInfoEXT {}
25129
25130/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
25131#[repr(C)]
25132#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25133pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
25134    pub s_type: StructureType,
25135    pub next: *const c_void,
25136    pub exclusive_scissor_count: u32,
25137    pub exclusive_scissors: *const Rect2D,
25138}
25139
25140impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
25141    #[inline]
25142    fn default() -> Self {
25143        Self {
25144            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
25145            next: ptr::null(),
25146            exclusive_scissor_count: u32::default(),
25147            exclusive_scissors: ptr::null(),
25148        }
25149    }
25150}
25151
25152unsafe impl Send for PipelineViewportExclusiveScissorStateCreateInfoNV {}
25153unsafe impl Sync for PipelineViewportExclusiveScissorStateCreateInfoNV {}
25154
25155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
25156#[repr(C)]
25157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25158pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
25159    pub s_type: StructureType,
25160    pub next: *const c_void,
25161    pub shading_rate_image_enable: Bool32,
25162    pub viewport_count: u32,
25163    pub shading_rate_palettes: *const ShadingRatePaletteNV,
25164}
25165
25166impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
25167    #[inline]
25168    fn default() -> Self {
25169        Self {
25170            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
25171            next: ptr::null(),
25172            shading_rate_image_enable: Bool32::default(),
25173            viewport_count: u32::default(),
25174            shading_rate_palettes: ptr::null(),
25175        }
25176    }
25177}
25178
25179unsafe impl Send for PipelineViewportShadingRateImageStateCreateInfoNV {}
25180unsafe impl Sync for PipelineViewportShadingRateImageStateCreateInfoNV {}
25181
25182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
25183#[repr(C)]
25184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25185pub struct PipelineViewportStateCreateInfo {
25186    pub s_type: StructureType,
25187    pub next: *const c_void,
25188    pub flags: PipelineViewportStateCreateFlags,
25189    pub viewport_count: u32,
25190    pub viewports: *const Viewport,
25191    pub scissor_count: u32,
25192    pub scissors: *const Rect2D,
25193}
25194
25195impl Default for PipelineViewportStateCreateInfo {
25196    #[inline]
25197    fn default() -> Self {
25198        Self {
25199            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
25200            next: ptr::null(),
25201            flags: PipelineViewportStateCreateFlags::default(),
25202            viewport_count: u32::default(),
25203            viewports: ptr::null(),
25204            scissor_count: u32::default(),
25205            scissors: ptr::null(),
25206        }
25207    }
25208}
25209
25210unsafe impl Send for PipelineViewportStateCreateInfo {}
25211unsafe impl Sync for PipelineViewportStateCreateInfo {}
25212
25213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
25214#[repr(C)]
25215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25216pub struct PipelineViewportSwizzleStateCreateInfoNV {
25217    pub s_type: StructureType,
25218    pub next: *const c_void,
25219    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
25220    pub viewport_count: u32,
25221    pub viewport_swizzles: *const ViewportSwizzleNV,
25222}
25223
25224impl Default for PipelineViewportSwizzleStateCreateInfoNV {
25225    #[inline]
25226    fn default() -> Self {
25227        Self {
25228            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
25229            next: ptr::null(),
25230            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
25231            viewport_count: u32::default(),
25232            viewport_swizzles: ptr::null(),
25233        }
25234    }
25235}
25236
25237unsafe impl Send for PipelineViewportSwizzleStateCreateInfoNV {}
25238unsafe impl Sync for PipelineViewportSwizzleStateCreateInfoNV {}
25239
25240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
25241#[repr(C)]
25242#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25243pub struct PipelineViewportWScalingStateCreateInfoNV {
25244    pub s_type: StructureType,
25245    pub next: *const c_void,
25246    pub viewport_w_scaling_enable: Bool32,
25247    pub viewport_count: u32,
25248    pub viewport_w_scalings: *const ViewportWScalingNV,
25249}
25250
25251impl Default for PipelineViewportWScalingStateCreateInfoNV {
25252    #[inline]
25253    fn default() -> Self {
25254        Self {
25255            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
25256            next: ptr::null(),
25257            viewport_w_scaling_enable: Bool32::default(),
25258            viewport_count: u32::default(),
25259            viewport_w_scalings: ptr::null(),
25260        }
25261    }
25262}
25263
25264unsafe impl Send for PipelineViewportWScalingStateCreateInfoNV {}
25265unsafe impl Sync for PipelineViewportWScalingStateCreateInfoNV {}
25266
25267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
25268#[repr(C)]
25269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25270pub struct PresentFrameTokenGGP {
25271    pub s_type: StructureType,
25272    pub next: *const c_void,
25273    pub frame_token: GgpFrameToken,
25274}
25275
25276impl Default for PresentFrameTokenGGP {
25277    #[inline]
25278    fn default() -> Self {
25279        Self {
25280            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
25281            next: ptr::null(),
25282            frame_token: GgpFrameToken::default(),
25283        }
25284    }
25285}
25286
25287unsafe impl Send for PresentFrameTokenGGP {}
25288unsafe impl Sync for PresentFrameTokenGGP {}
25289
25290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentId2KHR.html>
25291#[repr(C)]
25292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25293pub struct PresentId2KHR {
25294    pub s_type: StructureType,
25295    pub next: *const c_void,
25296    pub swapchain_count: u32,
25297    pub present_ids: *const u64,
25298}
25299
25300impl Default for PresentId2KHR {
25301    #[inline]
25302    fn default() -> Self {
25303        Self {
25304            s_type: StructureType::PRESENT_ID_2_KHR,
25305            next: ptr::null(),
25306            swapchain_count: u32::default(),
25307            present_ids: ptr::null(),
25308        }
25309    }
25310}
25311
25312unsafe impl Send for PresentId2KHR {}
25313unsafe impl Sync for PresentId2KHR {}
25314
25315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
25316#[repr(C)]
25317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25318pub struct PresentIdKHR {
25319    pub s_type: StructureType,
25320    pub next: *const c_void,
25321    pub swapchain_count: u32,
25322    pub present_ids: *const u64,
25323}
25324
25325impl Default for PresentIdKHR {
25326    #[inline]
25327    fn default() -> Self {
25328        Self {
25329            s_type: StructureType::PRESENT_ID_KHR,
25330            next: ptr::null(),
25331            swapchain_count: u32::default(),
25332            present_ids: ptr::null(),
25333        }
25334    }
25335}
25336
25337unsafe impl Send for PresentIdKHR {}
25338unsafe impl Sync for PresentIdKHR {}
25339
25340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
25341#[repr(C)]
25342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25343pub struct PresentInfoKHR {
25344    pub s_type: StructureType,
25345    pub next: *const c_void,
25346    pub wait_semaphore_count: u32,
25347    pub wait_semaphores: *const Semaphore,
25348    pub swapchain_count: u32,
25349    pub swapchains: *const SwapchainKHR,
25350    pub image_indices: *const u32,
25351    pub results: *mut Result,
25352}
25353
25354impl Default for PresentInfoKHR {
25355    #[inline]
25356    fn default() -> Self {
25357        Self {
25358            s_type: StructureType::PRESENT_INFO_KHR,
25359            next: ptr::null(),
25360            wait_semaphore_count: u32::default(),
25361            wait_semaphores: ptr::null(),
25362            swapchain_count: u32::default(),
25363            swapchains: ptr::null(),
25364            image_indices: ptr::null(),
25365            results: ptr::null_mut(),
25366        }
25367    }
25368}
25369
25370unsafe impl Send for PresentInfoKHR {}
25371unsafe impl Sync for PresentInfoKHR {}
25372
25373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
25374#[repr(C)]
25375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25376pub struct PresentRegionKHR {
25377    pub rectangle_count: u32,
25378    pub rectangles: *const RectLayerKHR,
25379}
25380
25381impl Default for PresentRegionKHR {
25382    #[inline]
25383    fn default() -> Self {
25384        Self {
25385            rectangle_count: u32::default(),
25386            rectangles: ptr::null(),
25387        }
25388    }
25389}
25390
25391unsafe impl Send for PresentRegionKHR {}
25392unsafe impl Sync for PresentRegionKHR {}
25393
25394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
25395#[repr(C)]
25396#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25397pub struct PresentRegionsKHR {
25398    pub s_type: StructureType,
25399    pub next: *const c_void,
25400    pub swapchain_count: u32,
25401    pub regions: *const PresentRegionKHR,
25402}
25403
25404impl Default for PresentRegionsKHR {
25405    #[inline]
25406    fn default() -> Self {
25407        Self {
25408            s_type: StructureType::PRESENT_REGIONS_KHR,
25409            next: ptr::null(),
25410            swapchain_count: u32::default(),
25411            regions: ptr::null(),
25412        }
25413    }
25414}
25415
25416unsafe impl Send for PresentRegionsKHR {}
25417unsafe impl Sync for PresentRegionsKHR {}
25418
25419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
25420#[repr(C)]
25421#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25422pub struct PresentTimeGOOGLE {
25423    pub present_id: u32,
25424    pub desired_present_time: u64,
25425}
25426
25427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
25428#[repr(C)]
25429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25430pub struct PresentTimesInfoGOOGLE {
25431    pub s_type: StructureType,
25432    pub next: *const c_void,
25433    pub swapchain_count: u32,
25434    pub times: *const PresentTimeGOOGLE,
25435}
25436
25437impl Default for PresentTimesInfoGOOGLE {
25438    #[inline]
25439    fn default() -> Self {
25440        Self {
25441            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
25442            next: ptr::null(),
25443            swapchain_count: u32::default(),
25444            times: ptr::null(),
25445        }
25446    }
25447}
25448
25449unsafe impl Send for PresentTimesInfoGOOGLE {}
25450unsafe impl Sync for PresentTimesInfoGOOGLE {}
25451
25452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html>
25453#[repr(C)]
25454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25455pub struct PresentWait2InfoKHR {
25456    pub s_type: StructureType,
25457    pub next: *const c_void,
25458    pub present_id: u64,
25459    pub timeout: u64,
25460}
25461
25462impl Default for PresentWait2InfoKHR {
25463    #[inline]
25464    fn default() -> Self {
25465        Self {
25466            s_type: StructureType::PRESENT_WAIT_2_INFO_KHR,
25467            next: ptr::null(),
25468            present_id: u64::default(),
25469            timeout: u64::default(),
25470        }
25471    }
25472}
25473
25474unsafe impl Send for PresentWait2InfoKHR {}
25475unsafe impl Sync for PresentWait2InfoKHR {}
25476
25477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
25478#[repr(C)]
25479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25480pub struct PrivateDataSlotCreateInfo {
25481    pub s_type: StructureType,
25482    pub next: *const c_void,
25483    pub flags: PrivateDataSlotCreateFlags,
25484}
25485
25486impl Default for PrivateDataSlotCreateInfo {
25487    #[inline]
25488    fn default() -> Self {
25489        Self {
25490            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
25491            next: ptr::null(),
25492            flags: PrivateDataSlotCreateFlags::default(),
25493        }
25494    }
25495}
25496
25497unsafe impl Send for PrivateDataSlotCreateInfo {}
25498unsafe impl Sync for PrivateDataSlotCreateInfo {}
25499
25500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
25501#[repr(C)]
25502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25503pub struct ProtectedSubmitInfo {
25504    pub s_type: StructureType,
25505    pub next: *const c_void,
25506    pub protected_submit: Bool32,
25507}
25508
25509impl Default for ProtectedSubmitInfo {
25510    #[inline]
25511    fn default() -> Self {
25512        Self {
25513            s_type: StructureType::PROTECTED_SUBMIT_INFO,
25514            next: ptr::null(),
25515            protected_submit: Bool32::default(),
25516        }
25517    }
25518}
25519
25520unsafe impl Send for ProtectedSubmitInfo {}
25521unsafe impl Sync for ProtectedSubmitInfo {}
25522
25523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
25524#[repr(C)]
25525#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25526pub struct PushConstantRange {
25527    pub stage_flags: ShaderStageFlags,
25528    pub offset: u32,
25529    pub size: u32,
25530}
25531
25532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
25533#[repr(C)]
25534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25535pub struct PushConstantsInfo {
25536    pub s_type: StructureType,
25537    pub next: *const c_void,
25538    pub layout: PipelineLayout,
25539    pub stage_flags: ShaderStageFlags,
25540    pub offset: u32,
25541    pub size: u32,
25542    pub values: *const c_void,
25543}
25544
25545impl Default for PushConstantsInfo {
25546    #[inline]
25547    fn default() -> Self {
25548        Self {
25549            s_type: StructureType::PUSH_CONSTANTS_INFO,
25550            next: ptr::null(),
25551            layout: PipelineLayout::default(),
25552            stage_flags: ShaderStageFlags::default(),
25553            offset: u32::default(),
25554            size: u32::default(),
25555            values: ptr::null(),
25556        }
25557    }
25558}
25559
25560unsafe impl Send for PushConstantsInfo {}
25561unsafe impl Sync for PushConstantsInfo {}
25562
25563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
25564#[repr(C)]
25565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25566pub struct PushDescriptorSetInfo {
25567    pub s_type: StructureType,
25568    pub next: *const c_void,
25569    pub stage_flags: ShaderStageFlags,
25570    pub layout: PipelineLayout,
25571    pub set: u32,
25572    pub descriptor_write_count: u32,
25573    pub descriptor_writes: *const WriteDescriptorSet,
25574}
25575
25576impl Default for PushDescriptorSetInfo {
25577    #[inline]
25578    fn default() -> Self {
25579        Self {
25580            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
25581            next: ptr::null(),
25582            stage_flags: ShaderStageFlags::default(),
25583            layout: PipelineLayout::default(),
25584            set: u32::default(),
25585            descriptor_write_count: u32::default(),
25586            descriptor_writes: ptr::null(),
25587        }
25588    }
25589}
25590
25591unsafe impl Send for PushDescriptorSetInfo {}
25592unsafe impl Sync for PushDescriptorSetInfo {}
25593
25594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
25595#[repr(C)]
25596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25597pub struct PushDescriptorSetWithTemplateInfo {
25598    pub s_type: StructureType,
25599    pub next: *const c_void,
25600    pub descriptor_update_template: DescriptorUpdateTemplate,
25601    pub layout: PipelineLayout,
25602    pub set: u32,
25603    pub data: *const c_void,
25604}
25605
25606impl Default for PushDescriptorSetWithTemplateInfo {
25607    #[inline]
25608    fn default() -> Self {
25609        Self {
25610            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
25611            next: ptr::null(),
25612            descriptor_update_template: DescriptorUpdateTemplate::default(),
25613            layout: PipelineLayout::default(),
25614            set: u32::default(),
25615            data: ptr::null(),
25616        }
25617    }
25618}
25619
25620unsafe impl Send for PushDescriptorSetWithTemplateInfo {}
25621unsafe impl Sync for PushDescriptorSetWithTemplateInfo {}
25622
25623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
25624#[repr(C)]
25625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25626pub struct QueryLowLatencySupportNV {
25627    pub s_type: StructureType,
25628    pub next: *const c_void,
25629    pub queried_low_latency_data: *mut c_void,
25630}
25631
25632impl Default for QueryLowLatencySupportNV {
25633    #[inline]
25634    fn default() -> Self {
25635        Self {
25636            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
25637            next: ptr::null(),
25638            queried_low_latency_data: ptr::null_mut(),
25639        }
25640    }
25641}
25642
25643unsafe impl Send for QueryLowLatencySupportNV {}
25644unsafe impl Sync for QueryLowLatencySupportNV {}
25645
25646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
25647#[repr(C)]
25648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25649pub struct QueryPoolCreateInfo {
25650    pub s_type: StructureType,
25651    pub next: *const c_void,
25652    pub flags: QueryPoolCreateFlags,
25653    pub query_type: QueryType,
25654    pub query_count: u32,
25655    pub pipeline_statistics: QueryPipelineStatisticFlags,
25656}
25657
25658impl Default for QueryPoolCreateInfo {
25659    #[inline]
25660    fn default() -> Self {
25661        Self {
25662            s_type: StructureType::QUERY_POOL_CREATE_INFO,
25663            next: ptr::null(),
25664            flags: QueryPoolCreateFlags::default(),
25665            query_type: QueryType::default(),
25666            query_count: u32::default(),
25667            pipeline_statistics: QueryPipelineStatisticFlags::default(),
25668        }
25669    }
25670}
25671
25672unsafe impl Send for QueryPoolCreateInfo {}
25673unsafe impl Sync for QueryPoolCreateInfo {}
25674
25675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
25676#[repr(C)]
25677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25678pub struct QueryPoolPerformanceCreateInfoKHR {
25679    pub s_type: StructureType,
25680    pub next: *const c_void,
25681    pub queue_family_index: u32,
25682    pub counter_index_count: u32,
25683    pub counter_indices: *const u32,
25684}
25685
25686impl Default for QueryPoolPerformanceCreateInfoKHR {
25687    #[inline]
25688    fn default() -> Self {
25689        Self {
25690            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
25691            next: ptr::null(),
25692            queue_family_index: u32::default(),
25693            counter_index_count: u32::default(),
25694            counter_indices: ptr::null(),
25695        }
25696    }
25697}
25698
25699unsafe impl Send for QueryPoolPerformanceCreateInfoKHR {}
25700unsafe impl Sync for QueryPoolPerformanceCreateInfoKHR {}
25701
25702/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
25703#[repr(C)]
25704#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25705pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
25706    pub s_type: StructureType,
25707    pub next: *const c_void,
25708    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
25709}
25710
25711impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
25712    #[inline]
25713    fn default() -> Self {
25714        Self {
25715            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
25716            next: ptr::null(),
25717            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
25718        }
25719    }
25720}
25721
25722unsafe impl Send for QueryPoolPerformanceQueryCreateInfoINTEL {}
25723unsafe impl Sync for QueryPoolPerformanceQueryCreateInfoINTEL {}
25724
25725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
25726#[repr(C)]
25727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25728pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
25729    pub s_type: StructureType,
25730    pub next: *const c_void,
25731    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
25732}
25733
25734impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
25735    #[inline]
25736    fn default() -> Self {
25737        Self {
25738            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
25739            next: ptr::null(),
25740            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
25741        }
25742    }
25743}
25744
25745unsafe impl Send for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
25746unsafe impl Sync for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
25747
25748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
25749#[repr(C)]
25750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25751pub struct QueueFamilyCheckpointProperties2NV {
25752    pub s_type: StructureType,
25753    pub next: *mut c_void,
25754    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
25755}
25756
25757impl Default for QueueFamilyCheckpointProperties2NV {
25758    #[inline]
25759    fn default() -> Self {
25760        Self {
25761            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
25762            next: ptr::null_mut(),
25763            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
25764        }
25765    }
25766}
25767
25768unsafe impl Send for QueueFamilyCheckpointProperties2NV {}
25769unsafe impl Sync for QueueFamilyCheckpointProperties2NV {}
25770
25771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
25772#[repr(C)]
25773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25774pub struct QueueFamilyCheckpointPropertiesNV {
25775    pub s_type: StructureType,
25776    pub next: *mut c_void,
25777    pub checkpoint_execution_stage_mask: PipelineStageFlags,
25778}
25779
25780impl Default for QueueFamilyCheckpointPropertiesNV {
25781    #[inline]
25782    fn default() -> Self {
25783        Self {
25784            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
25785            next: ptr::null_mut(),
25786            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
25787        }
25788    }
25789}
25790
25791unsafe impl Send for QueueFamilyCheckpointPropertiesNV {}
25792unsafe impl Sync for QueueFamilyCheckpointPropertiesNV {}
25793
25794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html>
25795#[repr(C)]
25796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25797pub struct QueueFamilyDataGraphProcessingEnginePropertiesARM {
25798    pub s_type: StructureType,
25799    pub next: *const c_void,
25800    pub foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags,
25801    pub foreign_memory_handle_types: ExternalMemoryHandleTypeFlags,
25802}
25803
25804impl Default for QueueFamilyDataGraphProcessingEnginePropertiesARM {
25805    #[inline]
25806    fn default() -> Self {
25807        Self {
25808            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM,
25809            next: ptr::null(),
25810            foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
25811            foreign_memory_handle_types: ExternalMemoryHandleTypeFlags::default(),
25812        }
25813    }
25814}
25815
25816unsafe impl Send for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
25817unsafe impl Sync for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
25818
25819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html>
25820#[repr(C)]
25821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25822pub struct QueueFamilyDataGraphPropertiesARM {
25823    pub s_type: StructureType,
25824    pub next: *const c_void,
25825    pub engine: PhysicalDeviceDataGraphProcessingEngineARM,
25826    pub operation: PhysicalDeviceDataGraphOperationSupportARM,
25827}
25828
25829impl Default for QueueFamilyDataGraphPropertiesARM {
25830    #[inline]
25831    fn default() -> Self {
25832        Self {
25833            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM,
25834            next: ptr::null(),
25835            engine: PhysicalDeviceDataGraphProcessingEngineARM::default(),
25836            operation: PhysicalDeviceDataGraphOperationSupportARM::default(),
25837        }
25838    }
25839}
25840
25841unsafe impl Send for QueueFamilyDataGraphPropertiesARM {}
25842unsafe impl Sync for QueueFamilyDataGraphPropertiesARM {}
25843
25844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
25845#[repr(C)]
25846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25847pub struct QueueFamilyGlobalPriorityProperties {
25848    pub s_type: StructureType,
25849    pub next: *mut c_void,
25850    pub priority_count: u32,
25851    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE as usize],
25852}
25853
25854impl Default for QueueFamilyGlobalPriorityProperties {
25855    #[inline]
25856    fn default() -> Self {
25857        Self {
25858            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
25859            next: ptr::null_mut(),
25860            priority_count: u32::default(),
25861            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
25862        }
25863    }
25864}
25865
25866unsafe impl Send for QueueFamilyGlobalPriorityProperties {}
25867unsafe impl Sync for QueueFamilyGlobalPriorityProperties {}
25868
25869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html>
25870#[repr(C)]
25871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25872pub struct QueueFamilyOwnershipTransferPropertiesKHR {
25873    pub s_type: StructureType,
25874    pub next: *mut c_void,
25875    pub optimal_image_transfer_to_queue_families: u32,
25876}
25877
25878impl Default for QueueFamilyOwnershipTransferPropertiesKHR {
25879    #[inline]
25880    fn default() -> Self {
25881        Self {
25882            s_type: StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR,
25883            next: ptr::null_mut(),
25884            optimal_image_transfer_to_queue_families: u32::default(),
25885        }
25886    }
25887}
25888
25889unsafe impl Send for QueueFamilyOwnershipTransferPropertiesKHR {}
25890unsafe impl Sync for QueueFamilyOwnershipTransferPropertiesKHR {}
25891
25892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
25893#[repr(C)]
25894#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25895pub struct QueueFamilyProperties {
25896    pub queue_flags: QueueFlags,
25897    pub queue_count: u32,
25898    pub timestamp_valid_bits: u32,
25899    pub min_image_transfer_granularity: Extent3D,
25900}
25901
25902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
25903#[repr(C)]
25904#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25905pub struct QueueFamilyProperties2 {
25906    pub s_type: StructureType,
25907    pub next: *mut c_void,
25908    pub queue_family_properties: QueueFamilyProperties,
25909}
25910
25911impl Default for QueueFamilyProperties2 {
25912    #[inline]
25913    fn default() -> Self {
25914        Self {
25915            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
25916            next: ptr::null_mut(),
25917            queue_family_properties: QueueFamilyProperties::default(),
25918        }
25919    }
25920}
25921
25922unsafe impl Send for QueueFamilyProperties2 {}
25923unsafe impl Sync for QueueFamilyProperties2 {}
25924
25925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
25926#[repr(C)]
25927#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25928pub struct QueueFamilyQueryResultStatusPropertiesKHR {
25929    pub s_type: StructureType,
25930    pub next: *mut c_void,
25931    pub query_result_status_support: Bool32,
25932}
25933
25934impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
25935    #[inline]
25936    fn default() -> Self {
25937        Self {
25938            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
25939            next: ptr::null_mut(),
25940            query_result_status_support: Bool32::default(),
25941        }
25942    }
25943}
25944
25945unsafe impl Send for QueueFamilyQueryResultStatusPropertiesKHR {}
25946unsafe impl Sync for QueueFamilyQueryResultStatusPropertiesKHR {}
25947
25948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
25949#[repr(C)]
25950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25951pub struct QueueFamilyVideoPropertiesKHR {
25952    pub s_type: StructureType,
25953    pub next: *mut c_void,
25954    pub video_codec_operations: VideoCodecOperationFlagsKHR,
25955}
25956
25957impl Default for QueueFamilyVideoPropertiesKHR {
25958    #[inline]
25959    fn default() -> Self {
25960        Self {
25961            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
25962            next: ptr::null_mut(),
25963            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
25964        }
25965    }
25966}
25967
25968unsafe impl Send for QueueFamilyVideoPropertiesKHR {}
25969unsafe impl Sync for QueueFamilyVideoPropertiesKHR {}
25970
25971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
25972#[repr(C)]
25973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25974pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
25975    pub s_type: StructureType,
25976    pub next: *mut c_void,
25977    pub allow_cluster_acceleration_structure: Bool32,
25978}
25979
25980impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
25981    #[inline]
25982    fn default() -> Self {
25983        Self {
25984            s_type:
25985                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
25986            next: ptr::null_mut(),
25987            allow_cluster_acceleration_structure: Bool32::default(),
25988        }
25989    }
25990}
25991
25992unsafe impl Send for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
25993unsafe impl Sync for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
25994
25995/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
25996#[repr(C)]
25997#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25998pub struct RayTracingPipelineCreateInfoKHR {
25999    pub s_type: StructureType,
26000    pub next: *const c_void,
26001    pub flags: PipelineCreateFlags,
26002    pub stage_count: u32,
26003    pub stages: *const PipelineShaderStageCreateInfo,
26004    pub group_count: u32,
26005    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
26006    pub max_pipeline_ray_recursion_depth: u32,
26007    pub library_info: *const PipelineLibraryCreateInfoKHR,
26008    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
26009    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
26010    pub layout: PipelineLayout,
26011    pub base_pipeline_handle: Pipeline,
26012    pub base_pipeline_index: i32,
26013}
26014
26015impl Default for RayTracingPipelineCreateInfoKHR {
26016    #[inline]
26017    fn default() -> Self {
26018        Self {
26019            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
26020            next: ptr::null(),
26021            flags: PipelineCreateFlags::default(),
26022            stage_count: u32::default(),
26023            stages: ptr::null(),
26024            group_count: u32::default(),
26025            groups: ptr::null(),
26026            max_pipeline_ray_recursion_depth: u32::default(),
26027            library_info: ptr::null(),
26028            library_interface: ptr::null(),
26029            dynamic_state: ptr::null(),
26030            layout: PipelineLayout::default(),
26031            base_pipeline_handle: Pipeline::default(),
26032            base_pipeline_index: i32::default(),
26033        }
26034    }
26035}
26036
26037unsafe impl Send for RayTracingPipelineCreateInfoKHR {}
26038unsafe impl Sync for RayTracingPipelineCreateInfoKHR {}
26039
26040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
26041#[repr(C)]
26042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26043pub struct RayTracingPipelineCreateInfoNV {
26044    pub s_type: StructureType,
26045    pub next: *const c_void,
26046    pub flags: PipelineCreateFlags,
26047    pub stage_count: u32,
26048    pub stages: *const PipelineShaderStageCreateInfo,
26049    pub group_count: u32,
26050    pub groups: *const RayTracingShaderGroupCreateInfoNV,
26051    pub max_recursion_depth: u32,
26052    pub layout: PipelineLayout,
26053    pub base_pipeline_handle: Pipeline,
26054    pub base_pipeline_index: i32,
26055}
26056
26057impl Default for RayTracingPipelineCreateInfoNV {
26058    #[inline]
26059    fn default() -> Self {
26060        Self {
26061            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
26062            next: ptr::null(),
26063            flags: PipelineCreateFlags::default(),
26064            stage_count: u32::default(),
26065            stages: ptr::null(),
26066            group_count: u32::default(),
26067            groups: ptr::null(),
26068            max_recursion_depth: u32::default(),
26069            layout: PipelineLayout::default(),
26070            base_pipeline_handle: Pipeline::default(),
26071            base_pipeline_index: i32::default(),
26072        }
26073    }
26074}
26075
26076unsafe impl Send for RayTracingPipelineCreateInfoNV {}
26077unsafe impl Sync for RayTracingPipelineCreateInfoNV {}
26078
26079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
26080#[repr(C)]
26081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26082pub struct RayTracingPipelineInterfaceCreateInfoKHR {
26083    pub s_type: StructureType,
26084    pub next: *const c_void,
26085    pub max_pipeline_ray_payload_size: u32,
26086    pub max_pipeline_ray_hit_attribute_size: u32,
26087}
26088
26089impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
26090    #[inline]
26091    fn default() -> Self {
26092        Self {
26093            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
26094            next: ptr::null(),
26095            max_pipeline_ray_payload_size: u32::default(),
26096            max_pipeline_ray_hit_attribute_size: u32::default(),
26097        }
26098    }
26099}
26100
26101unsafe impl Send for RayTracingPipelineInterfaceCreateInfoKHR {}
26102unsafe impl Sync for RayTracingPipelineInterfaceCreateInfoKHR {}
26103
26104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
26105#[repr(C)]
26106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26107pub struct RayTracingShaderGroupCreateInfoKHR {
26108    pub s_type: StructureType,
26109    pub next: *const c_void,
26110    pub type_: RayTracingShaderGroupTypeKHR,
26111    pub general_shader: u32,
26112    pub closest_hit_shader: u32,
26113    pub any_hit_shader: u32,
26114    pub intersection_shader: u32,
26115    pub shader_group_capture_replay_handle: *const c_void,
26116}
26117
26118impl Default for RayTracingShaderGroupCreateInfoKHR {
26119    #[inline]
26120    fn default() -> Self {
26121        Self {
26122            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
26123            next: ptr::null(),
26124            type_: RayTracingShaderGroupTypeKHR::default(),
26125            general_shader: u32::default(),
26126            closest_hit_shader: u32::default(),
26127            any_hit_shader: u32::default(),
26128            intersection_shader: u32::default(),
26129            shader_group_capture_replay_handle: ptr::null(),
26130        }
26131    }
26132}
26133
26134unsafe impl Send for RayTracingShaderGroupCreateInfoKHR {}
26135unsafe impl Sync for RayTracingShaderGroupCreateInfoKHR {}
26136
26137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
26138#[repr(C)]
26139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26140pub struct RayTracingShaderGroupCreateInfoNV {
26141    pub s_type: StructureType,
26142    pub next: *const c_void,
26143    pub type_: RayTracingShaderGroupTypeKHR,
26144    pub general_shader: u32,
26145    pub closest_hit_shader: u32,
26146    pub any_hit_shader: u32,
26147    pub intersection_shader: u32,
26148}
26149
26150impl Default for RayTracingShaderGroupCreateInfoNV {
26151    #[inline]
26152    fn default() -> Self {
26153        Self {
26154            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
26155            next: ptr::null(),
26156            type_: RayTracingShaderGroupTypeKHR::default(),
26157            general_shader: u32::default(),
26158            closest_hit_shader: u32::default(),
26159            any_hit_shader: u32::default(),
26160            intersection_shader: u32::default(),
26161        }
26162    }
26163}
26164
26165unsafe impl Send for RayTracingShaderGroupCreateInfoNV {}
26166unsafe impl Sync for RayTracingShaderGroupCreateInfoNV {}
26167
26168/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
26169#[repr(C)]
26170#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26171pub struct Rect2D {
26172    pub offset: Offset2D,
26173    pub extent: Extent2D,
26174}
26175
26176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
26177#[repr(C)]
26178#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26179pub struct RectLayerKHR {
26180    pub offset: Offset2D,
26181    pub extent: Extent2D,
26182    pub layer: u32,
26183}
26184
26185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
26186#[repr(C)]
26187#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26188pub struct RefreshCycleDurationGOOGLE {
26189    pub refresh_duration: u64,
26190}
26191
26192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
26193#[repr(C)]
26194#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26195pub struct RefreshObjectKHR {
26196    pub object_type: ObjectType,
26197    pub object_handle: u64,
26198    pub flags: RefreshObjectFlagsKHR,
26199}
26200
26201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
26202#[repr(C)]
26203#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26204pub struct RefreshObjectListKHR {
26205    pub s_type: StructureType,
26206    pub next: *const c_void,
26207    pub object_count: u32,
26208    pub objects: *const RefreshObjectKHR,
26209}
26210
26211impl Default for RefreshObjectListKHR {
26212    #[inline]
26213    fn default() -> Self {
26214        Self {
26215            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
26216            next: ptr::null(),
26217            object_count: u32::default(),
26218            objects: ptr::null(),
26219        }
26220    }
26221}
26222
26223unsafe impl Send for RefreshObjectListKHR {}
26224unsafe impl Sync for RefreshObjectListKHR {}
26225
26226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
26227#[repr(C)]
26228#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26229pub struct ReleaseCapturedPipelineDataInfoKHR {
26230    pub s_type: StructureType,
26231    pub next: *mut c_void,
26232    pub pipeline: Pipeline,
26233}
26234
26235impl Default for ReleaseCapturedPipelineDataInfoKHR {
26236    #[inline]
26237    fn default() -> Self {
26238        Self {
26239            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
26240            next: ptr::null_mut(),
26241            pipeline: Pipeline::default(),
26242        }
26243    }
26244}
26245
26246unsafe impl Send for ReleaseCapturedPipelineDataInfoKHR {}
26247unsafe impl Sync for ReleaseCapturedPipelineDataInfoKHR {}
26248
26249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html>
26250#[repr(C)]
26251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26252pub struct ReleaseSwapchainImagesInfoKHR {
26253    pub s_type: StructureType,
26254    pub next: *const c_void,
26255    pub swapchain: SwapchainKHR,
26256    pub image_index_count: u32,
26257    pub image_indices: *const u32,
26258}
26259
26260impl Default for ReleaseSwapchainImagesInfoKHR {
26261    #[inline]
26262    fn default() -> Self {
26263        Self {
26264            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,
26265            next: ptr::null(),
26266            swapchain: SwapchainKHR::default(),
26267            image_index_count: u32::default(),
26268            image_indices: ptr::null(),
26269        }
26270    }
26271}
26272
26273unsafe impl Send for ReleaseSwapchainImagesInfoKHR {}
26274unsafe impl Sync for ReleaseSwapchainImagesInfoKHR {}
26275
26276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
26277#[repr(C)]
26278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26279pub struct RenderPassAttachmentBeginInfo {
26280    pub s_type: StructureType,
26281    pub next: *const c_void,
26282    pub attachment_count: u32,
26283    pub attachments: *const ImageView,
26284}
26285
26286impl Default for RenderPassAttachmentBeginInfo {
26287    #[inline]
26288    fn default() -> Self {
26289        Self {
26290            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
26291            next: ptr::null(),
26292            attachment_count: u32::default(),
26293            attachments: ptr::null(),
26294        }
26295    }
26296}
26297
26298unsafe impl Send for RenderPassAttachmentBeginInfo {}
26299unsafe impl Sync for RenderPassAttachmentBeginInfo {}
26300
26301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
26302#[repr(C)]
26303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26304pub struct RenderPassBeginInfo {
26305    pub s_type: StructureType,
26306    pub next: *const c_void,
26307    pub render_pass: RenderPass,
26308    pub framebuffer: Framebuffer,
26309    pub render_area: Rect2D,
26310    pub clear_value_count: u32,
26311    pub clear_values: *const ClearValue,
26312}
26313
26314impl Default for RenderPassBeginInfo {
26315    #[inline]
26316    fn default() -> Self {
26317        Self {
26318            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
26319            next: ptr::null(),
26320            render_pass: RenderPass::default(),
26321            framebuffer: Framebuffer::default(),
26322            render_area: Rect2D::default(),
26323            clear_value_count: u32::default(),
26324            clear_values: ptr::null(),
26325        }
26326    }
26327}
26328
26329unsafe impl Send for RenderPassBeginInfo {}
26330unsafe impl Sync for RenderPassBeginInfo {}
26331
26332/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
26333#[repr(C)]
26334#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26335pub struct RenderPassCreateInfo {
26336    pub s_type: StructureType,
26337    pub next: *const c_void,
26338    pub flags: RenderPassCreateFlags,
26339    pub attachment_count: u32,
26340    pub attachments: *const AttachmentDescription,
26341    pub subpass_count: u32,
26342    pub subpasses: *const SubpassDescription,
26343    pub dependency_count: u32,
26344    pub dependencies: *const SubpassDependency,
26345}
26346
26347impl Default for RenderPassCreateInfo {
26348    #[inline]
26349    fn default() -> Self {
26350        Self {
26351            s_type: StructureType::RENDER_PASS_CREATE_INFO,
26352            next: ptr::null(),
26353            flags: RenderPassCreateFlags::default(),
26354            attachment_count: u32::default(),
26355            attachments: ptr::null(),
26356            subpass_count: u32::default(),
26357            subpasses: ptr::null(),
26358            dependency_count: u32::default(),
26359            dependencies: ptr::null(),
26360        }
26361    }
26362}
26363
26364unsafe impl Send for RenderPassCreateInfo {}
26365unsafe impl Sync for RenderPassCreateInfo {}
26366
26367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
26368#[repr(C)]
26369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26370pub struct RenderPassCreateInfo2 {
26371    pub s_type: StructureType,
26372    pub next: *const c_void,
26373    pub flags: RenderPassCreateFlags,
26374    pub attachment_count: u32,
26375    pub attachments: *const AttachmentDescription2,
26376    pub subpass_count: u32,
26377    pub subpasses: *const SubpassDescription2,
26378    pub dependency_count: u32,
26379    pub dependencies: *const SubpassDependency2,
26380    pub correlated_view_mask_count: u32,
26381    pub correlated_view_masks: *const u32,
26382}
26383
26384impl Default for RenderPassCreateInfo2 {
26385    #[inline]
26386    fn default() -> Self {
26387        Self {
26388            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
26389            next: ptr::null(),
26390            flags: RenderPassCreateFlags::default(),
26391            attachment_count: u32::default(),
26392            attachments: ptr::null(),
26393            subpass_count: u32::default(),
26394            subpasses: ptr::null(),
26395            dependency_count: u32::default(),
26396            dependencies: ptr::null(),
26397            correlated_view_mask_count: u32::default(),
26398            correlated_view_masks: ptr::null(),
26399        }
26400    }
26401}
26402
26403unsafe impl Send for RenderPassCreateInfo2 {}
26404unsafe impl Sync for RenderPassCreateInfo2 {}
26405
26406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
26407#[repr(C)]
26408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26409pub struct RenderPassCreationControlEXT {
26410    pub s_type: StructureType,
26411    pub next: *const c_void,
26412    pub disallow_merging: Bool32,
26413}
26414
26415impl Default for RenderPassCreationControlEXT {
26416    #[inline]
26417    fn default() -> Self {
26418        Self {
26419            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
26420            next: ptr::null(),
26421            disallow_merging: Bool32::default(),
26422        }
26423    }
26424}
26425
26426unsafe impl Send for RenderPassCreationControlEXT {}
26427unsafe impl Sync for RenderPassCreationControlEXT {}
26428
26429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
26430#[repr(C)]
26431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26432pub struct RenderPassCreationFeedbackCreateInfoEXT {
26433    pub s_type: StructureType,
26434    pub next: *const c_void,
26435    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
26436}
26437
26438impl Default for RenderPassCreationFeedbackCreateInfoEXT {
26439    #[inline]
26440    fn default() -> Self {
26441        Self {
26442            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
26443            next: ptr::null(),
26444            render_pass_feedback: ptr::null_mut(),
26445        }
26446    }
26447}
26448
26449unsafe impl Send for RenderPassCreationFeedbackCreateInfoEXT {}
26450unsafe impl Sync for RenderPassCreationFeedbackCreateInfoEXT {}
26451
26452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
26453#[repr(C)]
26454#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26455pub struct RenderPassCreationFeedbackInfoEXT {
26456    pub post_merge_subpass_count: u32,
26457}
26458
26459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
26460#[repr(C)]
26461#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26462pub struct RenderPassFragmentDensityMapCreateInfoEXT {
26463    pub s_type: StructureType,
26464    pub next: *const c_void,
26465    pub fragment_density_map_attachment: AttachmentReference,
26466}
26467
26468impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
26469    #[inline]
26470    fn default() -> Self {
26471        Self {
26472            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
26473            next: ptr::null(),
26474            fragment_density_map_attachment: AttachmentReference::default(),
26475        }
26476    }
26477}
26478
26479unsafe impl Send for RenderPassFragmentDensityMapCreateInfoEXT {}
26480unsafe impl Sync for RenderPassFragmentDensityMapCreateInfoEXT {}
26481
26482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html>
26483#[repr(C)]
26484#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26485pub struct RenderPassFragmentDensityMapOffsetEndInfoEXT {
26486    pub s_type: StructureType,
26487    pub next: *const c_void,
26488    pub fragment_density_offset_count: u32,
26489    pub fragment_density_offsets: *const Offset2D,
26490}
26491
26492impl Default for RenderPassFragmentDensityMapOffsetEndInfoEXT {
26493    #[inline]
26494    fn default() -> Self {
26495        Self {
26496            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
26497            next: ptr::null(),
26498            fragment_density_offset_count: u32::default(),
26499            fragment_density_offsets: ptr::null(),
26500        }
26501    }
26502}
26503
26504unsafe impl Send for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
26505unsafe impl Sync for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
26506
26507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
26508#[repr(C)]
26509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26510pub struct RenderPassInputAttachmentAspectCreateInfo {
26511    pub s_type: StructureType,
26512    pub next: *const c_void,
26513    pub aspect_reference_count: u32,
26514    pub aspect_references: *const InputAttachmentAspectReference,
26515}
26516
26517impl Default for RenderPassInputAttachmentAspectCreateInfo {
26518    #[inline]
26519    fn default() -> Self {
26520        Self {
26521            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
26522            next: ptr::null(),
26523            aspect_reference_count: u32::default(),
26524            aspect_references: ptr::null(),
26525        }
26526    }
26527}
26528
26529unsafe impl Send for RenderPassInputAttachmentAspectCreateInfo {}
26530unsafe impl Sync for RenderPassInputAttachmentAspectCreateInfo {}
26531
26532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
26533#[repr(C)]
26534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26535pub struct RenderPassMultiviewCreateInfo {
26536    pub s_type: StructureType,
26537    pub next: *const c_void,
26538    pub subpass_count: u32,
26539    pub view_masks: *const u32,
26540    pub dependency_count: u32,
26541    pub view_offsets: *const i32,
26542    pub correlation_mask_count: u32,
26543    pub correlation_masks: *const u32,
26544}
26545
26546impl Default for RenderPassMultiviewCreateInfo {
26547    #[inline]
26548    fn default() -> Self {
26549        Self {
26550            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
26551            next: ptr::null(),
26552            subpass_count: u32::default(),
26553            view_masks: ptr::null(),
26554            dependency_count: u32::default(),
26555            view_offsets: ptr::null(),
26556            correlation_mask_count: u32::default(),
26557            correlation_masks: ptr::null(),
26558        }
26559    }
26560}
26561
26562unsafe impl Send for RenderPassMultiviewCreateInfo {}
26563unsafe impl Sync for RenderPassMultiviewCreateInfo {}
26564
26565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassPerformanceCountersByRegionBeginInfoARM.html>
26566#[repr(C)]
26567#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26568pub struct RenderPassPerformanceCountersByRegionBeginInfoARM {
26569    pub s_type: StructureType,
26570    pub next: *mut c_void,
26571    pub counter_address_count: u32,
26572    pub counter_addresses: *const DeviceAddress,
26573    pub serialize_regions: Bool32,
26574    pub counter_index_count: u32,
26575    pub counter_indices: *mut u32,
26576}
26577
26578impl Default for RenderPassPerformanceCountersByRegionBeginInfoARM {
26579    #[inline]
26580    fn default() -> Self {
26581        Self {
26582            s_type: StructureType::RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM,
26583            next: ptr::null_mut(),
26584            counter_address_count: u32::default(),
26585            counter_addresses: ptr::null(),
26586            serialize_regions: Bool32::default(),
26587            counter_index_count: u32::default(),
26588            counter_indices: ptr::null_mut(),
26589        }
26590    }
26591}
26592
26593unsafe impl Send for RenderPassPerformanceCountersByRegionBeginInfoARM {}
26594unsafe impl Sync for RenderPassPerformanceCountersByRegionBeginInfoARM {}
26595
26596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
26597#[repr(C)]
26598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26599pub struct RenderPassSampleLocationsBeginInfoEXT {
26600    pub s_type: StructureType,
26601    pub next: *const c_void,
26602    pub attachment_initial_sample_locations_count: u32,
26603    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
26604    pub post_subpass_sample_locations_count: u32,
26605    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
26606}
26607
26608impl Default for RenderPassSampleLocationsBeginInfoEXT {
26609    #[inline]
26610    fn default() -> Self {
26611        Self {
26612            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
26613            next: ptr::null(),
26614            attachment_initial_sample_locations_count: u32::default(),
26615            attachment_initial_sample_locations: ptr::null(),
26616            post_subpass_sample_locations_count: u32::default(),
26617            post_subpass_sample_locations: ptr::null(),
26618        }
26619    }
26620}
26621
26622unsafe impl Send for RenderPassSampleLocationsBeginInfoEXT {}
26623unsafe impl Sync for RenderPassSampleLocationsBeginInfoEXT {}
26624
26625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
26626#[repr(C)]
26627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26628pub struct RenderPassStripeBeginInfoARM {
26629    pub s_type: StructureType,
26630    pub next: *const c_void,
26631    pub stripe_info_count: u32,
26632    pub stripe_infos: *const RenderPassStripeInfoARM,
26633}
26634
26635impl Default for RenderPassStripeBeginInfoARM {
26636    #[inline]
26637    fn default() -> Self {
26638        Self {
26639            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
26640            next: ptr::null(),
26641            stripe_info_count: u32::default(),
26642            stripe_infos: ptr::null(),
26643        }
26644    }
26645}
26646
26647unsafe impl Send for RenderPassStripeBeginInfoARM {}
26648unsafe impl Sync for RenderPassStripeBeginInfoARM {}
26649
26650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
26651#[repr(C)]
26652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26653pub struct RenderPassStripeInfoARM {
26654    pub s_type: StructureType,
26655    pub next: *const c_void,
26656    pub stripe_area: Rect2D,
26657}
26658
26659impl Default for RenderPassStripeInfoARM {
26660    #[inline]
26661    fn default() -> Self {
26662        Self {
26663            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
26664            next: ptr::null(),
26665            stripe_area: Rect2D::default(),
26666        }
26667    }
26668}
26669
26670unsafe impl Send for RenderPassStripeInfoARM {}
26671unsafe impl Sync for RenderPassStripeInfoARM {}
26672
26673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
26674#[repr(C)]
26675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26676pub struct RenderPassStripeSubmitInfoARM {
26677    pub s_type: StructureType,
26678    pub next: *const c_void,
26679    pub stripe_semaphore_info_count: u32,
26680    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
26681}
26682
26683impl Default for RenderPassStripeSubmitInfoARM {
26684    #[inline]
26685    fn default() -> Self {
26686        Self {
26687            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
26688            next: ptr::null(),
26689            stripe_semaphore_info_count: u32::default(),
26690            stripe_semaphore_infos: ptr::null(),
26691        }
26692    }
26693}
26694
26695unsafe impl Send for RenderPassStripeSubmitInfoARM {}
26696unsafe impl Sync for RenderPassStripeSubmitInfoARM {}
26697
26698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
26699#[repr(C)]
26700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26701pub struct RenderPassSubpassFeedbackCreateInfoEXT {
26702    pub s_type: StructureType,
26703    pub next: *const c_void,
26704    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
26705}
26706
26707impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
26708    #[inline]
26709    fn default() -> Self {
26710        Self {
26711            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
26712            next: ptr::null(),
26713            subpass_feedback: ptr::null_mut(),
26714        }
26715    }
26716}
26717
26718unsafe impl Send for RenderPassSubpassFeedbackCreateInfoEXT {}
26719unsafe impl Sync for RenderPassSubpassFeedbackCreateInfoEXT {}
26720
26721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
26722#[repr(C)]
26723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26724pub struct RenderPassSubpassFeedbackInfoEXT {
26725    pub subpass_merge_status: SubpassMergeStatusEXT,
26726    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
26727    pub post_merge_index: u32,
26728}
26729
26730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html>
26731#[repr(C)]
26732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26733pub struct RenderPassTileShadingCreateInfoQCOM {
26734    pub s_type: StructureType,
26735    pub next: *const c_void,
26736    pub flags: TileShadingRenderPassFlagsQCOM,
26737    pub tile_apron_size: Extent2D,
26738}
26739
26740impl Default for RenderPassTileShadingCreateInfoQCOM {
26741    #[inline]
26742    fn default() -> Self {
26743        Self {
26744            s_type: StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM,
26745            next: ptr::null(),
26746            flags: TileShadingRenderPassFlagsQCOM::default(),
26747            tile_apron_size: Extent2D::default(),
26748        }
26749    }
26750}
26751
26752unsafe impl Send for RenderPassTileShadingCreateInfoQCOM {}
26753unsafe impl Sync for RenderPassTileShadingCreateInfoQCOM {}
26754
26755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
26756#[repr(C)]
26757#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26758pub struct RenderPassTransformBeginInfoQCOM {
26759    pub s_type: StructureType,
26760    pub next: *const c_void,
26761    pub transform: SurfaceTransformFlagsKHR,
26762}
26763
26764impl Default for RenderPassTransformBeginInfoQCOM {
26765    #[inline]
26766    fn default() -> Self {
26767        Self {
26768            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
26769            next: ptr::null(),
26770            transform: SurfaceTransformFlagsKHR::default(),
26771        }
26772    }
26773}
26774
26775unsafe impl Send for RenderPassTransformBeginInfoQCOM {}
26776unsafe impl Sync for RenderPassTransformBeginInfoQCOM {}
26777
26778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
26779#[repr(C)]
26780#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26781pub struct RenderingAreaInfo {
26782    pub s_type: StructureType,
26783    pub next: *const c_void,
26784    pub view_mask: u32,
26785    pub color_attachment_count: u32,
26786    pub color_attachment_formats: *const Format,
26787    pub depth_attachment_format: Format,
26788    pub stencil_attachment_format: Format,
26789}
26790
26791impl Default for RenderingAreaInfo {
26792    #[inline]
26793    fn default() -> Self {
26794        Self {
26795            s_type: StructureType::RENDERING_AREA_INFO,
26796            next: ptr::null(),
26797            view_mask: u32::default(),
26798            color_attachment_count: u32::default(),
26799            color_attachment_formats: ptr::null(),
26800            depth_attachment_format: Format::default(),
26801            stencil_attachment_format: Format::default(),
26802        }
26803    }
26804}
26805
26806unsafe impl Send for RenderingAreaInfo {}
26807unsafe impl Sync for RenderingAreaInfo {}
26808
26809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsInfoKHR.html>
26810#[repr(C)]
26811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26812pub struct RenderingAttachmentFlagsInfoKHR {
26813    pub s_type: StructureType,
26814    pub next: *const c_void,
26815    pub flags: RenderingAttachmentFlagsKHR,
26816}
26817
26818impl Default for RenderingAttachmentFlagsInfoKHR {
26819    #[inline]
26820    fn default() -> Self {
26821        Self {
26822            s_type: StructureType::RENDERING_ATTACHMENT_FLAGS_INFO_KHR,
26823            next: ptr::null(),
26824            flags: RenderingAttachmentFlagsKHR::default(),
26825        }
26826    }
26827}
26828
26829unsafe impl Send for RenderingAttachmentFlagsInfoKHR {}
26830unsafe impl Sync for RenderingAttachmentFlagsInfoKHR {}
26831
26832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
26833#[repr(C)]
26834#[derive(Copy, Clone, Debug)]
26835pub struct RenderingAttachmentInfo {
26836    pub s_type: StructureType,
26837    pub next: *const c_void,
26838    pub image_view: ImageView,
26839    pub image_layout: ImageLayout,
26840    pub resolve_mode: ResolveModeFlags,
26841    pub resolve_image_view: ImageView,
26842    pub resolve_image_layout: ImageLayout,
26843    pub load_op: AttachmentLoadOp,
26844    pub store_op: AttachmentStoreOp,
26845    pub clear_value: ClearValue,
26846}
26847
26848impl Default for RenderingAttachmentInfo {
26849    #[inline]
26850    fn default() -> Self {
26851        Self {
26852            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
26853            next: ptr::null(),
26854            image_view: ImageView::default(),
26855            image_layout: ImageLayout::default(),
26856            resolve_mode: ResolveModeFlags::default(),
26857            resolve_image_view: ImageView::default(),
26858            resolve_image_layout: ImageLayout::default(),
26859            load_op: AttachmentLoadOp::default(),
26860            store_op: AttachmentStoreOp::default(),
26861            clear_value: ClearValue::default(),
26862        }
26863    }
26864}
26865
26866unsafe impl Send for RenderingAttachmentInfo {}
26867unsafe impl Sync for RenderingAttachmentInfo {}
26868
26869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
26870#[repr(C)]
26871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26872pub struct RenderingAttachmentLocationInfo {
26873    pub s_type: StructureType,
26874    pub next: *const c_void,
26875    pub color_attachment_count: u32,
26876    pub color_attachment_locations: *const u32,
26877}
26878
26879impl Default for RenderingAttachmentLocationInfo {
26880    #[inline]
26881    fn default() -> Self {
26882        Self {
26883            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
26884            next: ptr::null(),
26885            color_attachment_count: u32::default(),
26886            color_attachment_locations: ptr::null(),
26887        }
26888    }
26889}
26890
26891unsafe impl Send for RenderingAttachmentLocationInfo {}
26892unsafe impl Sync for RenderingAttachmentLocationInfo {}
26893
26894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoKHR.html>
26895#[repr(C)]
26896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26897pub struct RenderingEndInfoKHR {
26898    pub s_type: StructureType,
26899    pub next: *const c_void,
26900}
26901
26902impl Default for RenderingEndInfoKHR {
26903    #[inline]
26904    fn default() -> Self {
26905        Self {
26906            s_type: StructureType::RENDERING_END_INFO_KHR,
26907            next: ptr::null(),
26908        }
26909    }
26910}
26911
26912unsafe impl Send for RenderingEndInfoKHR {}
26913unsafe impl Sync for RenderingEndInfoKHR {}
26914
26915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
26916#[repr(C)]
26917#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26918pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
26919    pub s_type: StructureType,
26920    pub next: *const c_void,
26921    pub image_view: ImageView,
26922    pub image_layout: ImageLayout,
26923}
26924
26925impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
26926    #[inline]
26927    fn default() -> Self {
26928        Self {
26929            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
26930            next: ptr::null(),
26931            image_view: ImageView::default(),
26932            image_layout: ImageLayout::default(),
26933        }
26934    }
26935}
26936
26937unsafe impl Send for RenderingFragmentDensityMapAttachmentInfoEXT {}
26938unsafe impl Sync for RenderingFragmentDensityMapAttachmentInfoEXT {}
26939
26940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
26941#[repr(C)]
26942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26943pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
26944    pub s_type: StructureType,
26945    pub next: *const c_void,
26946    pub image_view: ImageView,
26947    pub image_layout: ImageLayout,
26948    pub shading_rate_attachment_texel_size: Extent2D,
26949}
26950
26951impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
26952    #[inline]
26953    fn default() -> Self {
26954        Self {
26955            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
26956            next: ptr::null(),
26957            image_view: ImageView::default(),
26958            image_layout: ImageLayout::default(),
26959            shading_rate_attachment_texel_size: Extent2D::default(),
26960        }
26961    }
26962}
26963
26964unsafe impl Send for RenderingFragmentShadingRateAttachmentInfoKHR {}
26965unsafe impl Sync for RenderingFragmentShadingRateAttachmentInfoKHR {}
26966
26967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
26968#[repr(C)]
26969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26970pub struct RenderingInfo {
26971    pub s_type: StructureType,
26972    pub next: *const c_void,
26973    pub flags: RenderingFlags,
26974    pub render_area: Rect2D,
26975    pub layer_count: u32,
26976    pub view_mask: u32,
26977    pub color_attachment_count: u32,
26978    pub color_attachments: *const RenderingAttachmentInfo,
26979    pub depth_attachment: *const RenderingAttachmentInfo,
26980    pub stencil_attachment: *const RenderingAttachmentInfo,
26981}
26982
26983impl Default for RenderingInfo {
26984    #[inline]
26985    fn default() -> Self {
26986        Self {
26987            s_type: StructureType::RENDERING_INFO,
26988            next: ptr::null(),
26989            flags: RenderingFlags::default(),
26990            render_area: Rect2D::default(),
26991            layer_count: u32::default(),
26992            view_mask: u32::default(),
26993            color_attachment_count: u32::default(),
26994            color_attachments: ptr::null(),
26995            depth_attachment: ptr::null(),
26996            stencil_attachment: ptr::null(),
26997        }
26998    }
26999}
27000
27001unsafe impl Send for RenderingInfo {}
27002unsafe impl Sync for RenderingInfo {}
27003
27004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
27005#[repr(C)]
27006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27007pub struct RenderingInputAttachmentIndexInfo {
27008    pub s_type: StructureType,
27009    pub next: *const c_void,
27010    pub color_attachment_count: u32,
27011    pub color_attachment_input_indices: *const u32,
27012    pub depth_input_attachment_index: *const u32,
27013    pub stencil_input_attachment_index: *const u32,
27014}
27015
27016impl Default for RenderingInputAttachmentIndexInfo {
27017    #[inline]
27018    fn default() -> Self {
27019        Self {
27020            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
27021            next: ptr::null(),
27022            color_attachment_count: u32::default(),
27023            color_attachment_input_indices: ptr::null(),
27024            depth_input_attachment_index: ptr::null(),
27025            stencil_input_attachment_index: ptr::null(),
27026        }
27027    }
27028}
27029
27030unsafe impl Send for RenderingInputAttachmentIndexInfo {}
27031unsafe impl Sync for RenderingInputAttachmentIndexInfo {}
27032
27033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
27034#[repr(C)]
27035#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27036pub struct ResolveImageInfo2 {
27037    pub s_type: StructureType,
27038    pub next: *const c_void,
27039    pub src_image: Image,
27040    pub src_image_layout: ImageLayout,
27041    pub dst_image: Image,
27042    pub dst_image_layout: ImageLayout,
27043    pub region_count: u32,
27044    pub regions: *const ImageResolve2,
27045}
27046
27047impl Default for ResolveImageInfo2 {
27048    #[inline]
27049    fn default() -> Self {
27050        Self {
27051            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
27052            next: ptr::null(),
27053            src_image: Image::default(),
27054            src_image_layout: ImageLayout::default(),
27055            dst_image: Image::default(),
27056            dst_image_layout: ImageLayout::default(),
27057            region_count: u32::default(),
27058            regions: ptr::null(),
27059        }
27060    }
27061}
27062
27063unsafe impl Send for ResolveImageInfo2 {}
27064unsafe impl Sync for ResolveImageInfo2 {}
27065
27066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageModeInfoKHR.html>
27067#[repr(C)]
27068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27069pub struct ResolveImageModeInfoKHR {
27070    pub s_type: StructureType,
27071    pub next: *const c_void,
27072    pub flags: ResolveImageFlagsKHR,
27073    pub resolve_mode: ResolveModeFlags,
27074    pub stencil_resolve_mode: ResolveModeFlags,
27075}
27076
27077impl Default for ResolveImageModeInfoKHR {
27078    #[inline]
27079    fn default() -> Self {
27080        Self {
27081            s_type: StructureType::RESOLVE_IMAGE_MODE_INFO_KHR,
27082            next: ptr::null(),
27083            flags: ResolveImageFlagsKHR::default(),
27084            resolve_mode: ResolveModeFlags::default(),
27085            stencil_resolve_mode: ResolveModeFlags::default(),
27086        }
27087    }
27088}
27089
27090unsafe impl Send for ResolveImageModeInfoKHR {}
27091unsafe impl Sync for ResolveImageModeInfoKHR {}
27092
27093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
27094#[repr(C)]
27095#[derive(Copy, Clone, Default, Debug, PartialEq)]
27096pub struct SRTDataNV {
27097    pub sx: f32,
27098    pub a: f32,
27099    pub b: f32,
27100    pub pvx: f32,
27101    pub sy: f32,
27102    pub c: f32,
27103    pub pvy: f32,
27104    pub sz: f32,
27105    pub pvz: f32,
27106    pub qx: f32,
27107    pub qy: f32,
27108    pub qz: f32,
27109    pub qw: f32,
27110    pub tx: f32,
27111    pub ty: f32,
27112    pub tz: f32,
27113}
27114
27115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
27116#[repr(C)]
27117#[derive(Copy, Clone, Default, Debug, PartialEq)]
27118pub struct SampleLocationEXT {
27119    pub x: f32,
27120    pub y: f32,
27121}
27122
27123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
27124#[repr(C)]
27125#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27126pub struct SampleLocationsInfoEXT {
27127    pub s_type: StructureType,
27128    pub next: *const c_void,
27129    pub sample_locations_per_pixel: SampleCountFlags,
27130    pub sample_location_grid_size: Extent2D,
27131    pub sample_locations_count: u32,
27132    pub sample_locations: *const SampleLocationEXT,
27133}
27134
27135impl Default for SampleLocationsInfoEXT {
27136    #[inline]
27137    fn default() -> Self {
27138        Self {
27139            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
27140            next: ptr::null(),
27141            sample_locations_per_pixel: SampleCountFlags::default(),
27142            sample_location_grid_size: Extent2D::default(),
27143            sample_locations_count: u32::default(),
27144            sample_locations: ptr::null(),
27145        }
27146    }
27147}
27148
27149unsafe impl Send for SampleLocationsInfoEXT {}
27150unsafe impl Sync for SampleLocationsInfoEXT {}
27151
27152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
27153#[repr(C)]
27154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27155pub struct SamplerBlockMatchWindowCreateInfoQCOM {
27156    pub s_type: StructureType,
27157    pub next: *const c_void,
27158    pub window_extent: Extent2D,
27159    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
27160}
27161
27162impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
27163    #[inline]
27164    fn default() -> Self {
27165        Self {
27166            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
27167            next: ptr::null(),
27168            window_extent: Extent2D::default(),
27169            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
27170        }
27171    }
27172}
27173
27174unsafe impl Send for SamplerBlockMatchWindowCreateInfoQCOM {}
27175unsafe impl Sync for SamplerBlockMatchWindowCreateInfoQCOM {}
27176
27177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
27178#[repr(C)]
27179#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27180pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
27181    pub s_type: StructureType,
27182    pub next: *const c_void,
27183    pub components: ComponentMapping,
27184    pub srgb: Bool32,
27185}
27186
27187impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
27188    #[inline]
27189    fn default() -> Self {
27190        Self {
27191            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
27192            next: ptr::null(),
27193            components: ComponentMapping::default(),
27194            srgb: Bool32::default(),
27195        }
27196    }
27197}
27198
27199unsafe impl Send for SamplerBorderColorComponentMappingCreateInfoEXT {}
27200unsafe impl Sync for SamplerBorderColorComponentMappingCreateInfoEXT {}
27201
27202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
27203#[repr(C)]
27204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27205pub struct SamplerCaptureDescriptorDataInfoEXT {
27206    pub s_type: StructureType,
27207    pub next: *const c_void,
27208    pub sampler: Sampler,
27209}
27210
27211impl Default for SamplerCaptureDescriptorDataInfoEXT {
27212    #[inline]
27213    fn default() -> Self {
27214        Self {
27215            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
27216            next: ptr::null(),
27217            sampler: Sampler::default(),
27218        }
27219    }
27220}
27221
27222unsafe impl Send for SamplerCaptureDescriptorDataInfoEXT {}
27223unsafe impl Sync for SamplerCaptureDescriptorDataInfoEXT {}
27224
27225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
27226#[repr(C)]
27227#[derive(Copy, Clone, Debug, PartialEq)]
27228pub struct SamplerCreateInfo {
27229    pub s_type: StructureType,
27230    pub next: *const c_void,
27231    pub flags: SamplerCreateFlags,
27232    pub mag_filter: Filter,
27233    pub min_filter: Filter,
27234    pub mipmap_mode: SamplerMipmapMode,
27235    pub address_mode_u: SamplerAddressMode,
27236    pub address_mode_v: SamplerAddressMode,
27237    pub address_mode_w: SamplerAddressMode,
27238    pub mip_lod_bias: f32,
27239    pub anisotropy_enable: Bool32,
27240    pub max_anisotropy: f32,
27241    pub compare_enable: Bool32,
27242    pub compare_op: CompareOp,
27243    pub min_lod: f32,
27244    pub max_lod: f32,
27245    pub border_color: BorderColor,
27246    pub unnormalized_coordinates: Bool32,
27247}
27248
27249impl Default for SamplerCreateInfo {
27250    #[inline]
27251    fn default() -> Self {
27252        Self {
27253            s_type: StructureType::SAMPLER_CREATE_INFO,
27254            next: ptr::null(),
27255            flags: SamplerCreateFlags::default(),
27256            mag_filter: Filter::default(),
27257            min_filter: Filter::default(),
27258            mipmap_mode: SamplerMipmapMode::default(),
27259            address_mode_u: SamplerAddressMode::default(),
27260            address_mode_v: SamplerAddressMode::default(),
27261            address_mode_w: SamplerAddressMode::default(),
27262            mip_lod_bias: f32::default(),
27263            anisotropy_enable: Bool32::default(),
27264            max_anisotropy: f32::default(),
27265            compare_enable: Bool32::default(),
27266            compare_op: CompareOp::default(),
27267            min_lod: f32::default(),
27268            max_lod: f32::default(),
27269            border_color: BorderColor::default(),
27270            unnormalized_coordinates: Bool32::default(),
27271        }
27272    }
27273}
27274
27275unsafe impl Send for SamplerCreateInfo {}
27276unsafe impl Sync for SamplerCreateInfo {}
27277
27278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
27279#[repr(C)]
27280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27281pub struct SamplerCubicWeightsCreateInfoQCOM {
27282    pub s_type: StructureType,
27283    pub next: *const c_void,
27284    pub cubic_weights: CubicFilterWeightsQCOM,
27285}
27286
27287impl Default for SamplerCubicWeightsCreateInfoQCOM {
27288    #[inline]
27289    fn default() -> Self {
27290        Self {
27291            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
27292            next: ptr::null(),
27293            cubic_weights: CubicFilterWeightsQCOM::default(),
27294        }
27295    }
27296}
27297
27298unsafe impl Send for SamplerCubicWeightsCreateInfoQCOM {}
27299unsafe impl Sync for SamplerCubicWeightsCreateInfoQCOM {}
27300
27301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
27302#[repr(C)]
27303#[derive(Copy, Clone, Debug)]
27304pub struct SamplerCustomBorderColorCreateInfoEXT {
27305    pub s_type: StructureType,
27306    pub next: *const c_void,
27307    pub custom_border_color: ClearColorValue,
27308    pub format: Format,
27309}
27310
27311impl Default for SamplerCustomBorderColorCreateInfoEXT {
27312    #[inline]
27313    fn default() -> Self {
27314        Self {
27315            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
27316            next: ptr::null(),
27317            custom_border_color: ClearColorValue::default(),
27318            format: Format::default(),
27319        }
27320    }
27321}
27322
27323unsafe impl Send for SamplerCustomBorderColorCreateInfoEXT {}
27324unsafe impl Sync for SamplerCustomBorderColorCreateInfoEXT {}
27325
27326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
27327#[repr(C)]
27328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27329pub struct SamplerReductionModeCreateInfo {
27330    pub s_type: StructureType,
27331    pub next: *const c_void,
27332    pub reduction_mode: SamplerReductionMode,
27333}
27334
27335impl Default for SamplerReductionModeCreateInfo {
27336    #[inline]
27337    fn default() -> Self {
27338        Self {
27339            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
27340            next: ptr::null(),
27341            reduction_mode: SamplerReductionMode::default(),
27342        }
27343    }
27344}
27345
27346unsafe impl Send for SamplerReductionModeCreateInfo {}
27347unsafe impl Sync for SamplerReductionModeCreateInfo {}
27348
27349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
27350#[repr(C)]
27351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27352pub struct SamplerYcbcrConversionCreateInfo {
27353    pub s_type: StructureType,
27354    pub next: *const c_void,
27355    pub format: Format,
27356    pub ycbcr_model: SamplerYcbcrModelConversion,
27357    pub ycbcr_range: SamplerYcbcrRange,
27358    pub components: ComponentMapping,
27359    pub x_chroma_offset: ChromaLocation,
27360    pub y_chroma_offset: ChromaLocation,
27361    pub chroma_filter: Filter,
27362    pub force_explicit_reconstruction: Bool32,
27363}
27364
27365impl Default for SamplerYcbcrConversionCreateInfo {
27366    #[inline]
27367    fn default() -> Self {
27368        Self {
27369            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
27370            next: ptr::null(),
27371            format: Format::default(),
27372            ycbcr_model: SamplerYcbcrModelConversion::default(),
27373            ycbcr_range: SamplerYcbcrRange::default(),
27374            components: ComponentMapping::default(),
27375            x_chroma_offset: ChromaLocation::default(),
27376            y_chroma_offset: ChromaLocation::default(),
27377            chroma_filter: Filter::default(),
27378            force_explicit_reconstruction: Bool32::default(),
27379        }
27380    }
27381}
27382
27383unsafe impl Send for SamplerYcbcrConversionCreateInfo {}
27384unsafe impl Sync for SamplerYcbcrConversionCreateInfo {}
27385
27386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
27387#[repr(C)]
27388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27389pub struct SamplerYcbcrConversionImageFormatProperties {
27390    pub s_type: StructureType,
27391    pub next: *mut c_void,
27392    pub combined_image_sampler_descriptor_count: u32,
27393}
27394
27395impl Default for SamplerYcbcrConversionImageFormatProperties {
27396    #[inline]
27397    fn default() -> Self {
27398        Self {
27399            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
27400            next: ptr::null_mut(),
27401            combined_image_sampler_descriptor_count: u32::default(),
27402        }
27403    }
27404}
27405
27406unsafe impl Send for SamplerYcbcrConversionImageFormatProperties {}
27407unsafe impl Sync for SamplerYcbcrConversionImageFormatProperties {}
27408
27409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
27410#[repr(C)]
27411#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27412pub struct SamplerYcbcrConversionInfo {
27413    pub s_type: StructureType,
27414    pub next: *const c_void,
27415    pub conversion: SamplerYcbcrConversion,
27416}
27417
27418impl Default for SamplerYcbcrConversionInfo {
27419    #[inline]
27420    fn default() -> Self {
27421        Self {
27422            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
27423            next: ptr::null(),
27424            conversion: SamplerYcbcrConversion::default(),
27425        }
27426    }
27427}
27428
27429unsafe impl Send for SamplerYcbcrConversionInfo {}
27430unsafe impl Sync for SamplerYcbcrConversionInfo {}
27431
27432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
27433#[repr(C)]
27434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27435pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
27436    pub s_type: StructureType,
27437    pub next: *mut c_void,
27438    pub enable_y_degamma: Bool32,
27439    pub enable_cb_cr_degamma: Bool32,
27440}
27441
27442impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
27443    #[inline]
27444    fn default() -> Self {
27445        Self {
27446            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
27447            next: ptr::null_mut(),
27448            enable_y_degamma: Bool32::default(),
27449            enable_cb_cr_degamma: Bool32::default(),
27450        }
27451    }
27452}
27453
27454unsafe impl Send for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
27455unsafe impl Sync for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
27456
27457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
27458#[repr(C)]
27459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27460pub struct SciSyncAttributesInfoNV {
27461    pub s_type: StructureType,
27462    pub next: *const c_void,
27463    pub client_type: SciSyncClientTypeNV,
27464    pub primitive_type: SciSyncPrimitiveTypeNV,
27465}
27466
27467impl Default for SciSyncAttributesInfoNV {
27468    #[inline]
27469    fn default() -> Self {
27470        Self {
27471            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
27472            next: ptr::null(),
27473            client_type: SciSyncClientTypeNV::default(),
27474            primitive_type: SciSyncPrimitiveTypeNV::default(),
27475        }
27476    }
27477}
27478
27479unsafe impl Send for SciSyncAttributesInfoNV {}
27480unsafe impl Sync for SciSyncAttributesInfoNV {}
27481
27482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
27483#[repr(C)]
27484#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27485pub struct ScreenBufferFormatPropertiesQNX {
27486    pub s_type: StructureType,
27487    pub next: *mut c_void,
27488    pub format: Format,
27489    pub external_format: u64,
27490    pub screen_usage: u64,
27491    pub format_features: FormatFeatureFlags,
27492    pub sampler_ycbcr_conversion_components: ComponentMapping,
27493    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
27494    pub suggested_ycbcr_range: SamplerYcbcrRange,
27495    pub suggested_x_chroma_offset: ChromaLocation,
27496    pub suggested_y_chroma_offset: ChromaLocation,
27497}
27498
27499impl Default for ScreenBufferFormatPropertiesQNX {
27500    #[inline]
27501    fn default() -> Self {
27502        Self {
27503            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
27504            next: ptr::null_mut(),
27505            format: Format::default(),
27506            external_format: u64::default(),
27507            screen_usage: u64::default(),
27508            format_features: FormatFeatureFlags::default(),
27509            sampler_ycbcr_conversion_components: ComponentMapping::default(),
27510            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
27511            suggested_ycbcr_range: SamplerYcbcrRange::default(),
27512            suggested_x_chroma_offset: ChromaLocation::default(),
27513            suggested_y_chroma_offset: ChromaLocation::default(),
27514        }
27515    }
27516}
27517
27518unsafe impl Send for ScreenBufferFormatPropertiesQNX {}
27519unsafe impl Sync for ScreenBufferFormatPropertiesQNX {}
27520
27521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
27522#[repr(C)]
27523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27524pub struct ScreenBufferPropertiesQNX {
27525    pub s_type: StructureType,
27526    pub next: *mut c_void,
27527    pub allocation_size: DeviceSize,
27528    pub memory_type_bits: u32,
27529}
27530
27531impl Default for ScreenBufferPropertiesQNX {
27532    #[inline]
27533    fn default() -> Self {
27534        Self {
27535            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
27536            next: ptr::null_mut(),
27537            allocation_size: DeviceSize::default(),
27538            memory_type_bits: u32::default(),
27539        }
27540    }
27541}
27542
27543unsafe impl Send for ScreenBufferPropertiesQNX {}
27544unsafe impl Sync for ScreenBufferPropertiesQNX {}
27545
27546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
27547#[repr(C)]
27548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27549pub struct ScreenSurfaceCreateInfoQNX {
27550    pub s_type: StructureType,
27551    pub next: *const c_void,
27552    pub flags: ScreenSurfaceCreateFlagsQNX,
27553    pub context: *mut _screen_context,
27554    pub window: *mut _screen_window,
27555}
27556
27557impl Default for ScreenSurfaceCreateInfoQNX {
27558    #[inline]
27559    fn default() -> Self {
27560        Self {
27561            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
27562            next: ptr::null(),
27563            flags: ScreenSurfaceCreateFlagsQNX::default(),
27564            context: ptr::null_mut(),
27565            window: ptr::null_mut(),
27566        }
27567    }
27568}
27569
27570unsafe impl Send for ScreenSurfaceCreateInfoQNX {}
27571unsafe impl Sync for ScreenSurfaceCreateInfoQNX {}
27572
27573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
27574#[repr(C)]
27575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27576pub struct SemaphoreCreateInfo {
27577    pub s_type: StructureType,
27578    pub next: *const c_void,
27579    pub flags: SemaphoreCreateFlags,
27580}
27581
27582impl Default for SemaphoreCreateInfo {
27583    #[inline]
27584    fn default() -> Self {
27585        Self {
27586            s_type: StructureType::SEMAPHORE_CREATE_INFO,
27587            next: ptr::null(),
27588            flags: SemaphoreCreateFlags::default(),
27589        }
27590    }
27591}
27592
27593unsafe impl Send for SemaphoreCreateInfo {}
27594unsafe impl Sync for SemaphoreCreateInfo {}
27595
27596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
27597#[repr(C)]
27598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27599pub struct SemaphoreGetFdInfoKHR {
27600    pub s_type: StructureType,
27601    pub next: *const c_void,
27602    pub semaphore: Semaphore,
27603    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27604}
27605
27606impl Default for SemaphoreGetFdInfoKHR {
27607    #[inline]
27608    fn default() -> Self {
27609        Self {
27610            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
27611            next: ptr::null(),
27612            semaphore: Semaphore::default(),
27613            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27614        }
27615    }
27616}
27617
27618unsafe impl Send for SemaphoreGetFdInfoKHR {}
27619unsafe impl Sync for SemaphoreGetFdInfoKHR {}
27620
27621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
27622#[repr(C)]
27623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27624pub struct SemaphoreGetSciSyncInfoNV {
27625    pub s_type: StructureType,
27626    pub next: *const c_void,
27627    pub semaphore: Semaphore,
27628    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27629}
27630
27631impl Default for SemaphoreGetSciSyncInfoNV {
27632    #[inline]
27633    fn default() -> Self {
27634        Self {
27635            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
27636            next: ptr::null(),
27637            semaphore: Semaphore::default(),
27638            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27639        }
27640    }
27641}
27642
27643unsafe impl Send for SemaphoreGetSciSyncInfoNV {}
27644unsafe impl Sync for SemaphoreGetSciSyncInfoNV {}
27645
27646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
27647#[repr(C)]
27648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27649pub struct SemaphoreGetWin32HandleInfoKHR {
27650    pub s_type: StructureType,
27651    pub next: *const c_void,
27652    pub semaphore: Semaphore,
27653    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27654}
27655
27656impl Default for SemaphoreGetWin32HandleInfoKHR {
27657    #[inline]
27658    fn default() -> Self {
27659        Self {
27660            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
27661            next: ptr::null(),
27662            semaphore: Semaphore::default(),
27663            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27664        }
27665    }
27666}
27667
27668unsafe impl Send for SemaphoreGetWin32HandleInfoKHR {}
27669unsafe impl Sync for SemaphoreGetWin32HandleInfoKHR {}
27670
27671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
27672#[repr(C)]
27673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27674pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
27675    pub s_type: StructureType,
27676    pub next: *const c_void,
27677    pub semaphore: Semaphore,
27678    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27679}
27680
27681impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
27682    #[inline]
27683    fn default() -> Self {
27684        Self {
27685            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
27686            next: ptr::null(),
27687            semaphore: Semaphore::default(),
27688            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27689        }
27690    }
27691}
27692
27693unsafe impl Send for SemaphoreGetZirconHandleInfoFUCHSIA {}
27694unsafe impl Sync for SemaphoreGetZirconHandleInfoFUCHSIA {}
27695
27696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
27697#[repr(C)]
27698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27699pub struct SemaphoreSciSyncCreateInfoNV {
27700    pub s_type: StructureType,
27701    pub next: *const c_void,
27702    pub semaphore_pool: SemaphoreSciSyncPoolNV,
27703    pub fence: *const NvSciSyncFence,
27704}
27705
27706impl Default for SemaphoreSciSyncCreateInfoNV {
27707    #[inline]
27708    fn default() -> Self {
27709        Self {
27710            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
27711            next: ptr::null(),
27712            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
27713            fence: ptr::null(),
27714        }
27715    }
27716}
27717
27718unsafe impl Send for SemaphoreSciSyncCreateInfoNV {}
27719unsafe impl Sync for SemaphoreSciSyncCreateInfoNV {}
27720
27721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
27722#[repr(C)]
27723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27724pub struct SemaphoreSciSyncPoolCreateInfoNV {
27725    pub s_type: StructureType,
27726    pub next: *const c_void,
27727    pub handle: NvSciSyncObj,
27728}
27729
27730impl Default for SemaphoreSciSyncPoolCreateInfoNV {
27731    #[inline]
27732    fn default() -> Self {
27733        Self {
27734            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
27735            next: ptr::null(),
27736            handle: ptr::null_mut(),
27737        }
27738    }
27739}
27740
27741unsafe impl Send for SemaphoreSciSyncPoolCreateInfoNV {}
27742unsafe impl Sync for SemaphoreSciSyncPoolCreateInfoNV {}
27743
27744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
27745#[repr(C)]
27746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27747pub struct SemaphoreSignalInfo {
27748    pub s_type: StructureType,
27749    pub next: *const c_void,
27750    pub semaphore: Semaphore,
27751    pub value: u64,
27752}
27753
27754impl Default for SemaphoreSignalInfo {
27755    #[inline]
27756    fn default() -> Self {
27757        Self {
27758            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
27759            next: ptr::null(),
27760            semaphore: Semaphore::default(),
27761            value: u64::default(),
27762        }
27763    }
27764}
27765
27766unsafe impl Send for SemaphoreSignalInfo {}
27767unsafe impl Sync for SemaphoreSignalInfo {}
27768
27769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
27770#[repr(C)]
27771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27772pub struct SemaphoreSubmitInfo {
27773    pub s_type: StructureType,
27774    pub next: *const c_void,
27775    pub semaphore: Semaphore,
27776    pub value: u64,
27777    pub stage_mask: PipelineStageFlags2,
27778    pub device_index: u32,
27779}
27780
27781impl Default for SemaphoreSubmitInfo {
27782    #[inline]
27783    fn default() -> Self {
27784        Self {
27785            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
27786            next: ptr::null(),
27787            semaphore: Semaphore::default(),
27788            value: u64::default(),
27789            stage_mask: PipelineStageFlags2::default(),
27790            device_index: u32::default(),
27791        }
27792    }
27793}
27794
27795unsafe impl Send for SemaphoreSubmitInfo {}
27796unsafe impl Sync for SemaphoreSubmitInfo {}
27797
27798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
27799#[repr(C)]
27800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27801pub struct SemaphoreTypeCreateInfo {
27802    pub s_type: StructureType,
27803    pub next: *const c_void,
27804    pub semaphore_type: SemaphoreType,
27805    pub initial_value: u64,
27806}
27807
27808impl Default for SemaphoreTypeCreateInfo {
27809    #[inline]
27810    fn default() -> Self {
27811        Self {
27812            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
27813            next: ptr::null(),
27814            semaphore_type: SemaphoreType::default(),
27815            initial_value: u64::default(),
27816        }
27817    }
27818}
27819
27820unsafe impl Send for SemaphoreTypeCreateInfo {}
27821unsafe impl Sync for SemaphoreTypeCreateInfo {}
27822
27823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
27824#[repr(C)]
27825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27826pub struct SemaphoreWaitInfo {
27827    pub s_type: StructureType,
27828    pub next: *const c_void,
27829    pub flags: SemaphoreWaitFlags,
27830    pub semaphore_count: u32,
27831    pub semaphores: *const Semaphore,
27832    pub values: *const u64,
27833}
27834
27835impl Default for SemaphoreWaitInfo {
27836    #[inline]
27837    fn default() -> Self {
27838        Self {
27839            s_type: StructureType::SEMAPHORE_WAIT_INFO,
27840            next: ptr::null(),
27841            flags: SemaphoreWaitFlags::default(),
27842            semaphore_count: u32::default(),
27843            semaphores: ptr::null(),
27844            values: ptr::null(),
27845        }
27846    }
27847}
27848
27849unsafe impl Send for SemaphoreWaitInfo {}
27850unsafe impl Sync for SemaphoreWaitInfo {}
27851
27852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
27853#[repr(C)]
27854#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27855pub struct SetDescriptorBufferOffsetsInfoEXT {
27856    pub s_type: StructureType,
27857    pub next: *const c_void,
27858    pub stage_flags: ShaderStageFlags,
27859    pub layout: PipelineLayout,
27860    pub first_set: u32,
27861    pub set_count: u32,
27862    pub buffer_indices: *const u32,
27863    pub offsets: *const DeviceSize,
27864}
27865
27866impl Default for SetDescriptorBufferOffsetsInfoEXT {
27867    #[inline]
27868    fn default() -> Self {
27869        Self {
27870            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
27871            next: ptr::null(),
27872            stage_flags: ShaderStageFlags::default(),
27873            layout: PipelineLayout::default(),
27874            first_set: u32::default(),
27875            set_count: u32::default(),
27876            buffer_indices: ptr::null(),
27877            offsets: ptr::null(),
27878        }
27879    }
27880}
27881
27882unsafe impl Send for SetDescriptorBufferOffsetsInfoEXT {}
27883unsafe impl Sync for SetDescriptorBufferOffsetsInfoEXT {}
27884
27885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
27886#[repr(C)]
27887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27888pub struct SetLatencyMarkerInfoNV {
27889    pub s_type: StructureType,
27890    pub next: *const c_void,
27891    pub present_id: u64,
27892    pub marker: LatencyMarkerNV,
27893}
27894
27895impl Default for SetLatencyMarkerInfoNV {
27896    #[inline]
27897    fn default() -> Self {
27898        Self {
27899            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
27900            next: ptr::null(),
27901            present_id: u64::default(),
27902            marker: LatencyMarkerNV::default(),
27903        }
27904    }
27905}
27906
27907unsafe impl Send for SetLatencyMarkerInfoNV {}
27908unsafe impl Sync for SetLatencyMarkerInfoNV {}
27909
27910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
27911#[repr(C)]
27912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27913pub struct SetPresentConfigNV {
27914    pub s_type: StructureType,
27915    pub next: *const c_void,
27916    pub num_frames_per_batch: u32,
27917    pub present_config_feedback: u32,
27918}
27919
27920impl Default for SetPresentConfigNV {
27921    #[inline]
27922    fn default() -> Self {
27923        Self {
27924            s_type: StructureType::SET_PRESENT_CONFIG_NV,
27925            next: ptr::null(),
27926            num_frames_per_batch: u32::default(),
27927            present_config_feedback: u32::default(),
27928        }
27929    }
27930}
27931
27932unsafe impl Send for SetPresentConfigNV {}
27933unsafe impl Sync for SetPresentConfigNV {}
27934
27935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
27936#[repr(C)]
27937#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27938pub struct SetStateFlagsIndirectCommandNV {
27939    pub data: u32,
27940}
27941
27942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
27943#[repr(C)]
27944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27945pub struct ShaderCreateInfoEXT {
27946    pub s_type: StructureType,
27947    pub next: *const c_void,
27948    pub flags: ShaderCreateFlagsEXT,
27949    pub stage: ShaderStageFlags,
27950    pub next_stage: ShaderStageFlags,
27951    pub code_type: ShaderCodeTypeEXT,
27952    pub code_size: usize,
27953    pub code: *const c_void,
27954    pub name: *const c_char,
27955    pub set_layout_count: u32,
27956    pub set_layouts: *const DescriptorSetLayout,
27957    pub push_constant_range_count: u32,
27958    pub push_constant_ranges: *const PushConstantRange,
27959    pub specialization_info: *const SpecializationInfo,
27960}
27961
27962impl Default for ShaderCreateInfoEXT {
27963    #[inline]
27964    fn default() -> Self {
27965        Self {
27966            s_type: StructureType::SHADER_CREATE_INFO_EXT,
27967            next: ptr::null(),
27968            flags: ShaderCreateFlagsEXT::default(),
27969            stage: ShaderStageFlags::default(),
27970            next_stage: ShaderStageFlags::default(),
27971            code_type: ShaderCodeTypeEXT::default(),
27972            code_size: usize::default(),
27973            code: ptr::null(),
27974            name: ptr::null(),
27975            set_layout_count: u32::default(),
27976            set_layouts: ptr::null(),
27977            push_constant_range_count: u32::default(),
27978            push_constant_ranges: ptr::null(),
27979            specialization_info: ptr::null(),
27980        }
27981    }
27982}
27983
27984unsafe impl Send for ShaderCreateInfoEXT {}
27985unsafe impl Sync for ShaderCreateInfoEXT {}
27986
27987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
27988#[repr(C)]
27989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27990pub struct ShaderModuleCreateInfo {
27991    pub s_type: StructureType,
27992    pub next: *const c_void,
27993    pub flags: ShaderModuleCreateFlags,
27994    pub code_size: usize,
27995    pub code: *const u32,
27996}
27997
27998impl Default for ShaderModuleCreateInfo {
27999    #[inline]
28000    fn default() -> Self {
28001        Self {
28002            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
28003            next: ptr::null(),
28004            flags: ShaderModuleCreateFlags::default(),
28005            code_size: usize::default(),
28006            code: ptr::null(),
28007        }
28008    }
28009}
28010
28011unsafe impl Send for ShaderModuleCreateInfo {}
28012unsafe impl Sync for ShaderModuleCreateInfo {}
28013
28014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
28015#[repr(C)]
28016#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28017pub struct ShaderModuleIdentifierEXT {
28018    pub s_type: StructureType,
28019    pub next: *mut c_void,
28020    pub identifier_size: u32,
28021    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
28022}
28023
28024impl Default for ShaderModuleIdentifierEXT {
28025    #[inline]
28026    fn default() -> Self {
28027        Self {
28028            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
28029            next: ptr::null_mut(),
28030            identifier_size: u32::default(),
28031            identifier: ByteArray::default(),
28032        }
28033    }
28034}
28035
28036unsafe impl Send for ShaderModuleIdentifierEXT {}
28037unsafe impl Sync for ShaderModuleIdentifierEXT {}
28038
28039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
28040#[repr(C)]
28041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28042pub struct ShaderModuleValidationCacheCreateInfoEXT {
28043    pub s_type: StructureType,
28044    pub next: *const c_void,
28045    pub validation_cache: ValidationCacheEXT,
28046}
28047
28048impl Default for ShaderModuleValidationCacheCreateInfoEXT {
28049    #[inline]
28050    fn default() -> Self {
28051        Self {
28052            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
28053            next: ptr::null(),
28054            validation_cache: ValidationCacheEXT::default(),
28055        }
28056    }
28057}
28058
28059unsafe impl Send for ShaderModuleValidationCacheCreateInfoEXT {}
28060unsafe impl Sync for ShaderModuleValidationCacheCreateInfoEXT {}
28061
28062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
28063#[repr(C)]
28064#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28065pub struct ShaderResourceUsageAMD {
28066    pub num_used_vgprs: u32,
28067    pub num_used_sgprs: u32,
28068    pub lds_size_per_local_work_group: u32,
28069    pub lds_usage_size_in_bytes: usize,
28070    pub scratch_mem_usage_in_bytes: usize,
28071}
28072
28073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
28074#[repr(C)]
28075#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28076pub struct ShaderStatisticsInfoAMD {
28077    pub shader_stage_mask: ShaderStageFlags,
28078    pub resource_usage: ShaderResourceUsageAMD,
28079    pub num_physical_vgprs: u32,
28080    pub num_physical_sgprs: u32,
28081    pub num_available_vgprs: u32,
28082    pub num_available_sgprs: u32,
28083    pub compute_work_group_size: [u32; 3],
28084}
28085
28086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
28087#[repr(C)]
28088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28089pub struct ShadingRatePaletteNV {
28090    pub shading_rate_palette_entry_count: u32,
28091    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
28092}
28093
28094impl Default for ShadingRatePaletteNV {
28095    #[inline]
28096    fn default() -> Self {
28097        Self {
28098            shading_rate_palette_entry_count: u32::default(),
28099            shading_rate_palette_entries: ptr::null(),
28100        }
28101    }
28102}
28103
28104unsafe impl Send for ShadingRatePaletteNV {}
28105unsafe impl Sync for ShadingRatePaletteNV {}
28106
28107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
28108#[repr(C)]
28109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28110pub struct SharedPresentSurfaceCapabilitiesKHR {
28111    pub s_type: StructureType,
28112    pub next: *mut c_void,
28113    pub shared_present_supported_usage_flags: ImageUsageFlags,
28114}
28115
28116impl Default for SharedPresentSurfaceCapabilitiesKHR {
28117    #[inline]
28118    fn default() -> Self {
28119        Self {
28120            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
28121            next: ptr::null_mut(),
28122            shared_present_supported_usage_flags: ImageUsageFlags::default(),
28123        }
28124    }
28125}
28126
28127unsafe impl Send for SharedPresentSurfaceCapabilitiesKHR {}
28128unsafe impl Sync for SharedPresentSurfaceCapabilitiesKHR {}
28129
28130/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
28131#[repr(C)]
28132#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28133pub struct SparseBufferMemoryBindInfo {
28134    pub buffer: Buffer,
28135    pub bind_count: u32,
28136    pub binds: *const SparseMemoryBind,
28137}
28138
28139impl Default for SparseBufferMemoryBindInfo {
28140    #[inline]
28141    fn default() -> Self {
28142        Self {
28143            buffer: Buffer::default(),
28144            bind_count: u32::default(),
28145            binds: ptr::null(),
28146        }
28147    }
28148}
28149
28150unsafe impl Send for SparseBufferMemoryBindInfo {}
28151unsafe impl Sync for SparseBufferMemoryBindInfo {}
28152
28153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
28154#[repr(C)]
28155#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28156pub struct SparseImageFormatProperties {
28157    pub aspect_mask: ImageAspectFlags,
28158    pub image_granularity: Extent3D,
28159    pub flags: SparseImageFormatFlags,
28160}
28161
28162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
28163#[repr(C)]
28164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28165pub struct SparseImageFormatProperties2 {
28166    pub s_type: StructureType,
28167    pub next: *mut c_void,
28168    pub properties: SparseImageFormatProperties,
28169}
28170
28171impl Default for SparseImageFormatProperties2 {
28172    #[inline]
28173    fn default() -> Self {
28174        Self {
28175            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
28176            next: ptr::null_mut(),
28177            properties: SparseImageFormatProperties::default(),
28178        }
28179    }
28180}
28181
28182unsafe impl Send for SparseImageFormatProperties2 {}
28183unsafe impl Sync for SparseImageFormatProperties2 {}
28184
28185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
28186#[repr(C)]
28187#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28188pub struct SparseImageMemoryBind {
28189    pub subresource: ImageSubresource,
28190    pub offset: Offset3D,
28191    pub extent: Extent3D,
28192    pub memory: DeviceMemory,
28193    pub memory_offset: DeviceSize,
28194    pub flags: SparseMemoryBindFlags,
28195}
28196
28197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
28198#[repr(C)]
28199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28200pub struct SparseImageMemoryBindInfo {
28201    pub image: Image,
28202    pub bind_count: u32,
28203    pub binds: *const SparseImageMemoryBind,
28204}
28205
28206impl Default for SparseImageMemoryBindInfo {
28207    #[inline]
28208    fn default() -> Self {
28209        Self {
28210            image: Image::default(),
28211            bind_count: u32::default(),
28212            binds: ptr::null(),
28213        }
28214    }
28215}
28216
28217unsafe impl Send for SparseImageMemoryBindInfo {}
28218unsafe impl Sync for SparseImageMemoryBindInfo {}
28219
28220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
28221#[repr(C)]
28222#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28223pub struct SparseImageMemoryRequirements {
28224    pub format_properties: SparseImageFormatProperties,
28225    pub image_mip_tail_first_lod: u32,
28226    pub image_mip_tail_size: DeviceSize,
28227    pub image_mip_tail_offset: DeviceSize,
28228    pub image_mip_tail_stride: DeviceSize,
28229}
28230
28231/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
28232#[repr(C)]
28233#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28234pub struct SparseImageMemoryRequirements2 {
28235    pub s_type: StructureType,
28236    pub next: *mut c_void,
28237    pub memory_requirements: SparseImageMemoryRequirements,
28238}
28239
28240impl Default for SparseImageMemoryRequirements2 {
28241    #[inline]
28242    fn default() -> Self {
28243        Self {
28244            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
28245            next: ptr::null_mut(),
28246            memory_requirements: SparseImageMemoryRequirements::default(),
28247        }
28248    }
28249}
28250
28251unsafe impl Send for SparseImageMemoryRequirements2 {}
28252unsafe impl Sync for SparseImageMemoryRequirements2 {}
28253
28254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
28255#[repr(C)]
28256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28257pub struct SparseImageOpaqueMemoryBindInfo {
28258    pub image: Image,
28259    pub bind_count: u32,
28260    pub binds: *const SparseMemoryBind,
28261}
28262
28263impl Default for SparseImageOpaqueMemoryBindInfo {
28264    #[inline]
28265    fn default() -> Self {
28266        Self {
28267            image: Image::default(),
28268            bind_count: u32::default(),
28269            binds: ptr::null(),
28270        }
28271    }
28272}
28273
28274unsafe impl Send for SparseImageOpaqueMemoryBindInfo {}
28275unsafe impl Sync for SparseImageOpaqueMemoryBindInfo {}
28276
28277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
28278#[repr(C)]
28279#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28280pub struct SparseMemoryBind {
28281    pub resource_offset: DeviceSize,
28282    pub size: DeviceSize,
28283    pub memory: DeviceMemory,
28284    pub memory_offset: DeviceSize,
28285    pub flags: SparseMemoryBindFlags,
28286}
28287
28288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
28289#[repr(C)]
28290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28291pub struct SpecializationInfo {
28292    pub map_entry_count: u32,
28293    pub map_entries: *const SpecializationMapEntry,
28294    pub data_size: usize,
28295    pub data: *const c_void,
28296}
28297
28298impl Default for SpecializationInfo {
28299    #[inline]
28300    fn default() -> Self {
28301        Self {
28302            map_entry_count: u32::default(),
28303            map_entries: ptr::null(),
28304            data_size: usize::default(),
28305            data: ptr::null(),
28306        }
28307    }
28308}
28309
28310unsafe impl Send for SpecializationInfo {}
28311unsafe impl Sync for SpecializationInfo {}
28312
28313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
28314#[repr(C)]
28315#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28316pub struct SpecializationMapEntry {
28317    pub constant_id: u32,
28318    pub offset: u32,
28319    pub size: usize,
28320}
28321
28322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
28323#[repr(C)]
28324#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28325pub struct StencilOpState {
28326    pub fail_op: StencilOp,
28327    pub pass_op: StencilOp,
28328    pub depth_fail_op: StencilOp,
28329    pub compare_op: CompareOp,
28330    pub compare_mask: u32,
28331    pub write_mask: u32,
28332    pub reference: u32,
28333}
28334
28335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
28336#[repr(C)]
28337#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28338pub struct StreamDescriptorSurfaceCreateInfoGGP {
28339    pub s_type: StructureType,
28340    pub next: *const c_void,
28341    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
28342    pub stream_descriptor: GgpStreamDescriptor,
28343}
28344
28345impl Default for StreamDescriptorSurfaceCreateInfoGGP {
28346    #[inline]
28347    fn default() -> Self {
28348        Self {
28349            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
28350            next: ptr::null(),
28351            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
28352            stream_descriptor: GgpStreamDescriptor::default(),
28353        }
28354    }
28355}
28356
28357unsafe impl Send for StreamDescriptorSurfaceCreateInfoGGP {}
28358unsafe impl Sync for StreamDescriptorSurfaceCreateInfoGGP {}
28359
28360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
28361#[repr(C)]
28362#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28363pub struct StridedDeviceAddressNV {
28364    pub start_address: DeviceAddress,
28365    pub stride_in_bytes: DeviceSize,
28366}
28367
28368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRangeKHR.html>
28369#[repr(C)]
28370#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28371pub struct StridedDeviceAddressRangeKHR {
28372    pub address: DeviceAddress,
28373    pub size: DeviceSize,
28374    pub stride: DeviceSize,
28375}
28376
28377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
28378#[repr(C)]
28379#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28380pub struct StridedDeviceAddressRegionKHR {
28381    pub device_address: DeviceAddress,
28382    pub stride: DeviceSize,
28383    pub size: DeviceSize,
28384}
28385
28386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
28387#[repr(C)]
28388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28389pub struct SubmitInfo {
28390    pub s_type: StructureType,
28391    pub next: *const c_void,
28392    pub wait_semaphore_count: u32,
28393    pub wait_semaphores: *const Semaphore,
28394    pub wait_dst_stage_mask: *const PipelineStageFlags,
28395    pub command_buffer_count: u32,
28396    pub command_buffers: *const CommandBuffer,
28397    pub signal_semaphore_count: u32,
28398    pub signal_semaphores: *const Semaphore,
28399}
28400
28401impl Default for SubmitInfo {
28402    #[inline]
28403    fn default() -> Self {
28404        Self {
28405            s_type: StructureType::SUBMIT_INFO,
28406            next: ptr::null(),
28407            wait_semaphore_count: u32::default(),
28408            wait_semaphores: ptr::null(),
28409            wait_dst_stage_mask: ptr::null(),
28410            command_buffer_count: u32::default(),
28411            command_buffers: ptr::null(),
28412            signal_semaphore_count: u32::default(),
28413            signal_semaphores: ptr::null(),
28414        }
28415    }
28416}
28417
28418unsafe impl Send for SubmitInfo {}
28419unsafe impl Sync for SubmitInfo {}
28420
28421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
28422#[repr(C)]
28423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28424pub struct SubmitInfo2 {
28425    pub s_type: StructureType,
28426    pub next: *const c_void,
28427    pub flags: SubmitFlags,
28428    pub wait_semaphore_info_count: u32,
28429    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
28430    pub command_buffer_info_count: u32,
28431    pub command_buffer_infos: *const CommandBufferSubmitInfo,
28432    pub signal_semaphore_info_count: u32,
28433    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
28434}
28435
28436impl Default for SubmitInfo2 {
28437    #[inline]
28438    fn default() -> Self {
28439        Self {
28440            s_type: StructureType::SUBMIT_INFO_2,
28441            next: ptr::null(),
28442            flags: SubmitFlags::default(),
28443            wait_semaphore_info_count: u32::default(),
28444            wait_semaphore_infos: ptr::null(),
28445            command_buffer_info_count: u32::default(),
28446            command_buffer_infos: ptr::null(),
28447            signal_semaphore_info_count: u32::default(),
28448            signal_semaphore_infos: ptr::null(),
28449        }
28450    }
28451}
28452
28453unsafe impl Send for SubmitInfo2 {}
28454unsafe impl Sync for SubmitInfo2 {}
28455
28456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
28457#[repr(C)]
28458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28459pub struct SubpassBeginInfo {
28460    pub s_type: StructureType,
28461    pub next: *const c_void,
28462    pub contents: SubpassContents,
28463}
28464
28465impl Default for SubpassBeginInfo {
28466    #[inline]
28467    fn default() -> Self {
28468        Self {
28469            s_type: StructureType::SUBPASS_BEGIN_INFO,
28470            next: ptr::null(),
28471            contents: SubpassContents::default(),
28472        }
28473    }
28474}
28475
28476unsafe impl Send for SubpassBeginInfo {}
28477unsafe impl Sync for SubpassBeginInfo {}
28478
28479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
28480#[repr(C)]
28481#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28482pub struct SubpassDependency {
28483    pub src_subpass: u32,
28484    pub dst_subpass: u32,
28485    pub src_stage_mask: PipelineStageFlags,
28486    pub dst_stage_mask: PipelineStageFlags,
28487    pub src_access_mask: AccessFlags,
28488    pub dst_access_mask: AccessFlags,
28489    pub dependency_flags: DependencyFlags,
28490}
28491
28492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
28493#[repr(C)]
28494#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28495pub struct SubpassDependency2 {
28496    pub s_type: StructureType,
28497    pub next: *const c_void,
28498    pub src_subpass: u32,
28499    pub dst_subpass: u32,
28500    pub src_stage_mask: PipelineStageFlags,
28501    pub dst_stage_mask: PipelineStageFlags,
28502    pub src_access_mask: AccessFlags,
28503    pub dst_access_mask: AccessFlags,
28504    pub dependency_flags: DependencyFlags,
28505    pub view_offset: i32,
28506}
28507
28508impl Default for SubpassDependency2 {
28509    #[inline]
28510    fn default() -> Self {
28511        Self {
28512            s_type: StructureType::SUBPASS_DEPENDENCY_2,
28513            next: ptr::null(),
28514            src_subpass: u32::default(),
28515            dst_subpass: u32::default(),
28516            src_stage_mask: PipelineStageFlags::default(),
28517            dst_stage_mask: PipelineStageFlags::default(),
28518            src_access_mask: AccessFlags::default(),
28519            dst_access_mask: AccessFlags::default(),
28520            dependency_flags: DependencyFlags::default(),
28521            view_offset: i32::default(),
28522        }
28523    }
28524}
28525
28526unsafe impl Send for SubpassDependency2 {}
28527unsafe impl Sync for SubpassDependency2 {}
28528
28529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
28530#[repr(C)]
28531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28532pub struct SubpassDescription {
28533    pub flags: SubpassDescriptionFlags,
28534    pub pipeline_bind_point: PipelineBindPoint,
28535    pub input_attachment_count: u32,
28536    pub input_attachments: *const AttachmentReference,
28537    pub color_attachment_count: u32,
28538    pub color_attachments: *const AttachmentReference,
28539    pub resolve_attachments: *const AttachmentReference,
28540    pub depth_stencil_attachment: *const AttachmentReference,
28541    pub preserve_attachment_count: u32,
28542    pub preserve_attachments: *const u32,
28543}
28544
28545impl Default for SubpassDescription {
28546    #[inline]
28547    fn default() -> Self {
28548        Self {
28549            flags: SubpassDescriptionFlags::default(),
28550            pipeline_bind_point: PipelineBindPoint::default(),
28551            input_attachment_count: u32::default(),
28552            input_attachments: ptr::null(),
28553            color_attachment_count: u32::default(),
28554            color_attachments: ptr::null(),
28555            resolve_attachments: ptr::null(),
28556            depth_stencil_attachment: ptr::null(),
28557            preserve_attachment_count: u32::default(),
28558            preserve_attachments: ptr::null(),
28559        }
28560    }
28561}
28562
28563unsafe impl Send for SubpassDescription {}
28564unsafe impl Sync for SubpassDescription {}
28565
28566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
28567#[repr(C)]
28568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28569pub struct SubpassDescription2 {
28570    pub s_type: StructureType,
28571    pub next: *const c_void,
28572    pub flags: SubpassDescriptionFlags,
28573    pub pipeline_bind_point: PipelineBindPoint,
28574    pub view_mask: u32,
28575    pub input_attachment_count: u32,
28576    pub input_attachments: *const AttachmentReference2,
28577    pub color_attachment_count: u32,
28578    pub color_attachments: *const AttachmentReference2,
28579    pub resolve_attachments: *const AttachmentReference2,
28580    pub depth_stencil_attachment: *const AttachmentReference2,
28581    pub preserve_attachment_count: u32,
28582    pub preserve_attachments: *const u32,
28583}
28584
28585impl Default for SubpassDescription2 {
28586    #[inline]
28587    fn default() -> Self {
28588        Self {
28589            s_type: StructureType::SUBPASS_DESCRIPTION_2,
28590            next: ptr::null(),
28591            flags: SubpassDescriptionFlags::default(),
28592            pipeline_bind_point: PipelineBindPoint::default(),
28593            view_mask: u32::default(),
28594            input_attachment_count: u32::default(),
28595            input_attachments: ptr::null(),
28596            color_attachment_count: u32::default(),
28597            color_attachments: ptr::null(),
28598            resolve_attachments: ptr::null(),
28599            depth_stencil_attachment: ptr::null(),
28600            preserve_attachment_count: u32::default(),
28601            preserve_attachments: ptr::null(),
28602        }
28603    }
28604}
28605
28606unsafe impl Send for SubpassDescription2 {}
28607unsafe impl Sync for SubpassDescription2 {}
28608
28609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
28610#[repr(C)]
28611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28612pub struct SubpassDescriptionDepthStencilResolve {
28613    pub s_type: StructureType,
28614    pub next: *const c_void,
28615    pub depth_resolve_mode: ResolveModeFlags,
28616    pub stencil_resolve_mode: ResolveModeFlags,
28617    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
28618}
28619
28620impl Default for SubpassDescriptionDepthStencilResolve {
28621    #[inline]
28622    fn default() -> Self {
28623        Self {
28624            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
28625            next: ptr::null(),
28626            depth_resolve_mode: ResolveModeFlags::default(),
28627            stencil_resolve_mode: ResolveModeFlags::default(),
28628            depth_stencil_resolve_attachment: ptr::null(),
28629        }
28630    }
28631}
28632
28633unsafe impl Send for SubpassDescriptionDepthStencilResolve {}
28634unsafe impl Sync for SubpassDescriptionDepthStencilResolve {}
28635
28636/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
28637#[repr(C)]
28638#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28639pub struct SubpassEndInfo {
28640    pub s_type: StructureType,
28641    pub next: *const c_void,
28642}
28643
28644impl Default for SubpassEndInfo {
28645    #[inline]
28646    fn default() -> Self {
28647        Self {
28648            s_type: StructureType::SUBPASS_END_INFO,
28649            next: ptr::null(),
28650        }
28651    }
28652}
28653
28654unsafe impl Send for SubpassEndInfo {}
28655unsafe impl Sync for SubpassEndInfo {}
28656
28657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
28658#[repr(C)]
28659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28660pub struct SubpassResolvePerformanceQueryEXT {
28661    pub s_type: StructureType,
28662    pub next: *mut c_void,
28663    pub optimal: Bool32,
28664}
28665
28666impl Default for SubpassResolvePerformanceQueryEXT {
28667    #[inline]
28668    fn default() -> Self {
28669        Self {
28670            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
28671            next: ptr::null_mut(),
28672            optimal: Bool32::default(),
28673        }
28674    }
28675}
28676
28677unsafe impl Send for SubpassResolvePerformanceQueryEXT {}
28678unsafe impl Sync for SubpassResolvePerformanceQueryEXT {}
28679
28680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
28681#[repr(C)]
28682#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28683pub struct SubpassSampleLocationsEXT {
28684    pub subpass_index: u32,
28685    pub sample_locations_info: SampleLocationsInfoEXT,
28686}
28687
28688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
28689#[repr(C)]
28690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28691pub struct SubpassShadingPipelineCreateInfoHUAWEI {
28692    pub s_type: StructureType,
28693    pub next: *mut c_void,
28694    pub render_pass: RenderPass,
28695    pub subpass: u32,
28696}
28697
28698impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
28699    #[inline]
28700    fn default() -> Self {
28701        Self {
28702            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
28703            next: ptr::null_mut(),
28704            render_pass: RenderPass::default(),
28705            subpass: u32::default(),
28706        }
28707    }
28708}
28709
28710unsafe impl Send for SubpassShadingPipelineCreateInfoHUAWEI {}
28711unsafe impl Sync for SubpassShadingPipelineCreateInfoHUAWEI {}
28712
28713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
28714#[repr(C)]
28715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28716pub struct SubresourceHostMemcpySize {
28717    pub s_type: StructureType,
28718    pub next: *mut c_void,
28719    pub size: DeviceSize,
28720}
28721
28722impl Default for SubresourceHostMemcpySize {
28723    #[inline]
28724    fn default() -> Self {
28725        Self {
28726            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
28727            next: ptr::null_mut(),
28728            size: DeviceSize::default(),
28729        }
28730    }
28731}
28732
28733unsafe impl Send for SubresourceHostMemcpySize {}
28734unsafe impl Sync for SubresourceHostMemcpySize {}
28735
28736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
28737#[repr(C)]
28738#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28739pub struct SubresourceLayout {
28740    pub offset: DeviceSize,
28741    pub size: DeviceSize,
28742    pub row_pitch: DeviceSize,
28743    pub array_pitch: DeviceSize,
28744    pub depth_pitch: DeviceSize,
28745}
28746
28747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
28748#[repr(C)]
28749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28750pub struct SubresourceLayout2 {
28751    pub s_type: StructureType,
28752    pub next: *mut c_void,
28753    pub subresource_layout: SubresourceLayout,
28754}
28755
28756impl Default for SubresourceLayout2 {
28757    #[inline]
28758    fn default() -> Self {
28759        Self {
28760            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
28761            next: ptr::null_mut(),
28762            subresource_layout: SubresourceLayout::default(),
28763        }
28764    }
28765}
28766
28767unsafe impl Send for SubresourceLayout2 {}
28768unsafe impl Sync for SubresourceLayout2 {}
28769
28770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
28771#[repr(C)]
28772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28773pub struct SurfaceCapabilities2EXT {
28774    pub s_type: StructureType,
28775    pub next: *mut c_void,
28776    pub min_image_count: u32,
28777    pub max_image_count: u32,
28778    pub current_extent: Extent2D,
28779    pub min_image_extent: Extent2D,
28780    pub max_image_extent: Extent2D,
28781    pub max_image_array_layers: u32,
28782    pub supported_transforms: SurfaceTransformFlagsKHR,
28783    pub current_transform: SurfaceTransformFlagsKHR,
28784    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
28785    pub supported_usage_flags: ImageUsageFlags,
28786    pub supported_surface_counters: SurfaceCounterFlagsEXT,
28787}
28788
28789impl Default for SurfaceCapabilities2EXT {
28790    #[inline]
28791    fn default() -> Self {
28792        Self {
28793            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
28794            next: ptr::null_mut(),
28795            min_image_count: u32::default(),
28796            max_image_count: u32::default(),
28797            current_extent: Extent2D::default(),
28798            min_image_extent: Extent2D::default(),
28799            max_image_extent: Extent2D::default(),
28800            max_image_array_layers: u32::default(),
28801            supported_transforms: SurfaceTransformFlagsKHR::default(),
28802            current_transform: SurfaceTransformFlagsKHR::default(),
28803            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
28804            supported_usage_flags: ImageUsageFlags::default(),
28805            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
28806        }
28807    }
28808}
28809
28810unsafe impl Send for SurfaceCapabilities2EXT {}
28811unsafe impl Sync for SurfaceCapabilities2EXT {}
28812
28813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
28814#[repr(C)]
28815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28816pub struct SurfaceCapabilities2KHR {
28817    pub s_type: StructureType,
28818    pub next: *mut c_void,
28819    pub surface_capabilities: SurfaceCapabilitiesKHR,
28820}
28821
28822impl Default for SurfaceCapabilities2KHR {
28823    #[inline]
28824    fn default() -> Self {
28825        Self {
28826            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
28827            next: ptr::null_mut(),
28828            surface_capabilities: SurfaceCapabilitiesKHR::default(),
28829        }
28830    }
28831}
28832
28833unsafe impl Send for SurfaceCapabilities2KHR {}
28834unsafe impl Sync for SurfaceCapabilities2KHR {}
28835
28836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
28837#[repr(C)]
28838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28839pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
28840    pub s_type: StructureType,
28841    pub next: *mut c_void,
28842    pub full_screen_exclusive_supported: Bool32,
28843}
28844
28845impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
28846    #[inline]
28847    fn default() -> Self {
28848        Self {
28849            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
28850            next: ptr::null_mut(),
28851            full_screen_exclusive_supported: Bool32::default(),
28852        }
28853    }
28854}
28855
28856unsafe impl Send for SurfaceCapabilitiesFullScreenExclusiveEXT {}
28857unsafe impl Sync for SurfaceCapabilitiesFullScreenExclusiveEXT {}
28858
28859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
28860#[repr(C)]
28861#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28862pub struct SurfaceCapabilitiesKHR {
28863    pub min_image_count: u32,
28864    pub max_image_count: u32,
28865    pub current_extent: Extent2D,
28866    pub min_image_extent: Extent2D,
28867    pub max_image_extent: Extent2D,
28868    pub max_image_array_layers: u32,
28869    pub supported_transforms: SurfaceTransformFlagsKHR,
28870    pub current_transform: SurfaceTransformFlagsKHR,
28871    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
28872    pub supported_usage_flags: ImageUsageFlags,
28873}
28874
28875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
28876#[repr(C)]
28877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28878pub struct SurfaceCapabilitiesPresentBarrierNV {
28879    pub s_type: StructureType,
28880    pub next: *mut c_void,
28881    pub present_barrier_supported: Bool32,
28882}
28883
28884impl Default for SurfaceCapabilitiesPresentBarrierNV {
28885    #[inline]
28886    fn default() -> Self {
28887        Self {
28888            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
28889            next: ptr::null_mut(),
28890            present_barrier_supported: Bool32::default(),
28891        }
28892    }
28893}
28894
28895unsafe impl Send for SurfaceCapabilitiesPresentBarrierNV {}
28896unsafe impl Sync for SurfaceCapabilitiesPresentBarrierNV {}
28897
28898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html>
28899#[repr(C)]
28900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28901pub struct SurfaceCapabilitiesPresentId2KHR {
28902    pub s_type: StructureType,
28903    pub next: *mut c_void,
28904    pub present_id2_supported: Bool32,
28905}
28906
28907impl Default for SurfaceCapabilitiesPresentId2KHR {
28908    #[inline]
28909    fn default() -> Self {
28910        Self {
28911            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR,
28912            next: ptr::null_mut(),
28913            present_id2_supported: Bool32::default(),
28914        }
28915    }
28916}
28917
28918unsafe impl Send for SurfaceCapabilitiesPresentId2KHR {}
28919unsafe impl Sync for SurfaceCapabilitiesPresentId2KHR {}
28920
28921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html>
28922#[repr(C)]
28923#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28924pub struct SurfaceCapabilitiesPresentWait2KHR {
28925    pub s_type: StructureType,
28926    pub next: *mut c_void,
28927    pub present_wait2_supported: Bool32,
28928}
28929
28930impl Default for SurfaceCapabilitiesPresentWait2KHR {
28931    #[inline]
28932    fn default() -> Self {
28933        Self {
28934            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR,
28935            next: ptr::null_mut(),
28936            present_wait2_supported: Bool32::default(),
28937        }
28938    }
28939}
28940
28941unsafe impl Send for SurfaceCapabilitiesPresentWait2KHR {}
28942unsafe impl Sync for SurfaceCapabilitiesPresentWait2KHR {}
28943
28944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html>
28945#[repr(C)]
28946#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28947pub struct SurfaceCreateInfoOHOS {
28948    pub s_type: StructureType,
28949    pub next: *const c_void,
28950    pub flags: SurfaceCreateFlagsOHOS,
28951    pub window: *mut OHNativeWindow,
28952}
28953
28954impl Default for SurfaceCreateInfoOHOS {
28955    #[inline]
28956    fn default() -> Self {
28957        Self {
28958            s_type: StructureType::SURFACE_CREATE_INFO_OHOS,
28959            next: ptr::null(),
28960            flags: SurfaceCreateFlagsOHOS::default(),
28961            window: ptr::null_mut(),
28962        }
28963    }
28964}
28965
28966unsafe impl Send for SurfaceCreateInfoOHOS {}
28967unsafe impl Sync for SurfaceCreateInfoOHOS {}
28968
28969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
28970#[repr(C)]
28971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28972pub struct SurfaceFormat2KHR {
28973    pub s_type: StructureType,
28974    pub next: *mut c_void,
28975    pub surface_format: SurfaceFormatKHR,
28976}
28977
28978impl Default for SurfaceFormat2KHR {
28979    #[inline]
28980    fn default() -> Self {
28981        Self {
28982            s_type: StructureType::SURFACE_FORMAT_2_KHR,
28983            next: ptr::null_mut(),
28984            surface_format: SurfaceFormatKHR::default(),
28985        }
28986    }
28987}
28988
28989unsafe impl Send for SurfaceFormat2KHR {}
28990unsafe impl Sync for SurfaceFormat2KHR {}
28991
28992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
28993#[repr(C)]
28994#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28995pub struct SurfaceFormatKHR {
28996    pub format: Format,
28997    pub color_space: ColorSpaceKHR,
28998}
28999
29000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
29001#[repr(C)]
29002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29003pub struct SurfaceFullScreenExclusiveInfoEXT {
29004    pub s_type: StructureType,
29005    pub next: *mut c_void,
29006    pub full_screen_exclusive: FullScreenExclusiveEXT,
29007}
29008
29009impl Default for SurfaceFullScreenExclusiveInfoEXT {
29010    #[inline]
29011    fn default() -> Self {
29012        Self {
29013            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
29014            next: ptr::null_mut(),
29015            full_screen_exclusive: FullScreenExclusiveEXT::default(),
29016        }
29017    }
29018}
29019
29020unsafe impl Send for SurfaceFullScreenExclusiveInfoEXT {}
29021unsafe impl Sync for SurfaceFullScreenExclusiveInfoEXT {}
29022
29023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
29024#[repr(C)]
29025#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29026pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
29027    pub s_type: StructureType,
29028    pub next: *const c_void,
29029    pub hmonitor: HMONITOR,
29030}
29031
29032impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
29033    #[inline]
29034    fn default() -> Self {
29035        Self {
29036            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
29037            next: ptr::null(),
29038            hmonitor: ptr::null_mut(),
29039        }
29040    }
29041}
29042
29043unsafe impl Send for SurfaceFullScreenExclusiveWin32InfoEXT {}
29044unsafe impl Sync for SurfaceFullScreenExclusiveWin32InfoEXT {}
29045
29046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html>
29047#[repr(C)]
29048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29049pub struct SurfacePresentModeCompatibilityKHR {
29050    pub s_type: StructureType,
29051    pub next: *mut c_void,
29052    pub present_mode_count: u32,
29053    pub present_modes: *mut PresentModeKHR,
29054}
29055
29056impl Default for SurfacePresentModeCompatibilityKHR {
29057    #[inline]
29058    fn default() -> Self {
29059        Self {
29060            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,
29061            next: ptr::null_mut(),
29062            present_mode_count: u32::default(),
29063            present_modes: ptr::null_mut(),
29064        }
29065    }
29066}
29067
29068unsafe impl Send for SurfacePresentModeCompatibilityKHR {}
29069unsafe impl Sync for SurfacePresentModeCompatibilityKHR {}
29070
29071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html>
29072#[repr(C)]
29073#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29074pub struct SurfacePresentModeKHR {
29075    pub s_type: StructureType,
29076    pub next: *mut c_void,
29077    pub present_mode: PresentModeKHR,
29078}
29079
29080impl Default for SurfacePresentModeKHR {
29081    #[inline]
29082    fn default() -> Self {
29083        Self {
29084            s_type: StructureType::SURFACE_PRESENT_MODE_KHR,
29085            next: ptr::null_mut(),
29086            present_mode: PresentModeKHR::default(),
29087        }
29088    }
29089}
29090
29091unsafe impl Send for SurfacePresentModeKHR {}
29092unsafe impl Sync for SurfacePresentModeKHR {}
29093
29094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html>
29095#[repr(C)]
29096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29097pub struct SurfacePresentScalingCapabilitiesKHR {
29098    pub s_type: StructureType,
29099    pub next: *mut c_void,
29100    pub supported_present_scaling: PresentScalingFlagsKHR,
29101    pub supported_present_gravity_x: PresentGravityFlagsKHR,
29102    pub supported_present_gravity_y: PresentGravityFlagsKHR,
29103    pub min_scaled_image_extent: Extent2D,
29104    pub max_scaled_image_extent: Extent2D,
29105}
29106
29107impl Default for SurfacePresentScalingCapabilitiesKHR {
29108    #[inline]
29109    fn default() -> Self {
29110        Self {
29111            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,
29112            next: ptr::null_mut(),
29113            supported_present_scaling: PresentScalingFlagsKHR::default(),
29114            supported_present_gravity_x: PresentGravityFlagsKHR::default(),
29115            supported_present_gravity_y: PresentGravityFlagsKHR::default(),
29116            min_scaled_image_extent: Extent2D::default(),
29117            max_scaled_image_extent: Extent2D::default(),
29118        }
29119    }
29120}
29121
29122unsafe impl Send for SurfacePresentScalingCapabilitiesKHR {}
29123unsafe impl Sync for SurfacePresentScalingCapabilitiesKHR {}
29124
29125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
29126#[repr(C)]
29127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29128pub struct SurfaceProtectedCapabilitiesKHR {
29129    pub s_type: StructureType,
29130    pub next: *const c_void,
29131    pub supports_protected: Bool32,
29132}
29133
29134impl Default for SurfaceProtectedCapabilitiesKHR {
29135    #[inline]
29136    fn default() -> Self {
29137        Self {
29138            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
29139            next: ptr::null(),
29140            supports_protected: Bool32::default(),
29141        }
29142    }
29143}
29144
29145unsafe impl Send for SurfaceProtectedCapabilitiesKHR {}
29146unsafe impl Sync for SurfaceProtectedCapabilitiesKHR {}
29147
29148/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
29149#[repr(C)]
29150#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29151pub struct SwapchainCounterCreateInfoEXT {
29152    pub s_type: StructureType,
29153    pub next: *const c_void,
29154    pub surface_counters: SurfaceCounterFlagsEXT,
29155}
29156
29157impl Default for SwapchainCounterCreateInfoEXT {
29158    #[inline]
29159    fn default() -> Self {
29160        Self {
29161            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
29162            next: ptr::null(),
29163            surface_counters: SurfaceCounterFlagsEXT::default(),
29164        }
29165    }
29166}
29167
29168unsafe impl Send for SwapchainCounterCreateInfoEXT {}
29169unsafe impl Sync for SwapchainCounterCreateInfoEXT {}
29170
29171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
29172#[repr(C)]
29173#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29174pub struct SwapchainCreateInfoKHR {
29175    pub s_type: StructureType,
29176    pub next: *const c_void,
29177    pub flags: SwapchainCreateFlagsKHR,
29178    pub surface: SurfaceKHR,
29179    pub min_image_count: u32,
29180    pub image_format: Format,
29181    pub image_color_space: ColorSpaceKHR,
29182    pub image_extent: Extent2D,
29183    pub image_array_layers: u32,
29184    pub image_usage: ImageUsageFlags,
29185    pub image_sharing_mode: SharingMode,
29186    pub queue_family_index_count: u32,
29187    pub queue_family_indices: *const u32,
29188    pub pre_transform: SurfaceTransformFlagsKHR,
29189    pub composite_alpha: CompositeAlphaFlagsKHR,
29190    pub present_mode: PresentModeKHR,
29191    pub clipped: Bool32,
29192    pub old_swapchain: SwapchainKHR,
29193}
29194
29195impl Default for SwapchainCreateInfoKHR {
29196    #[inline]
29197    fn default() -> Self {
29198        Self {
29199            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
29200            next: ptr::null(),
29201            flags: SwapchainCreateFlagsKHR::default(),
29202            surface: SurfaceKHR::default(),
29203            min_image_count: u32::default(),
29204            image_format: Format::default(),
29205            image_color_space: ColorSpaceKHR::default(),
29206            image_extent: Extent2D::default(),
29207            image_array_layers: u32::default(),
29208            image_usage: ImageUsageFlags::default(),
29209            image_sharing_mode: SharingMode::default(),
29210            queue_family_index_count: u32::default(),
29211            queue_family_indices: ptr::null(),
29212            pre_transform: SurfaceTransformFlagsKHR::default(),
29213            composite_alpha: CompositeAlphaFlagsKHR::default(),
29214            present_mode: PresentModeKHR::default(),
29215            clipped: Bool32::default(),
29216            old_swapchain: SwapchainKHR::default(),
29217        }
29218    }
29219}
29220
29221unsafe impl Send for SwapchainCreateInfoKHR {}
29222unsafe impl Sync for SwapchainCreateInfoKHR {}
29223
29224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
29225#[repr(C)]
29226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29227pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
29228    pub s_type: StructureType,
29229    pub next: *const c_void,
29230    pub local_dimming_enable: Bool32,
29231}
29232
29233impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
29234    #[inline]
29235    fn default() -> Self {
29236        Self {
29237            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
29238            next: ptr::null(),
29239            local_dimming_enable: Bool32::default(),
29240        }
29241    }
29242}
29243
29244unsafe impl Send for SwapchainDisplayNativeHdrCreateInfoAMD {}
29245unsafe impl Sync for SwapchainDisplayNativeHdrCreateInfoAMD {}
29246
29247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainImageCreateInfoOHOS.html>
29248#[repr(C)]
29249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29250pub struct SwapchainImageCreateInfoOHOS {
29251    pub s_type: StructureType,
29252    pub next: *const c_void,
29253    pub usage: SwapchainImageUsageFlagsOHOS,
29254}
29255
29256impl Default for SwapchainImageCreateInfoOHOS {
29257    #[inline]
29258    fn default() -> Self {
29259        Self {
29260            s_type: StructureType::SWAPCHAIN_IMAGE_CREATE_INFO_OHOS,
29261            next: ptr::null(),
29262            usage: SwapchainImageUsageFlagsOHOS::default(),
29263        }
29264    }
29265}
29266
29267unsafe impl Send for SwapchainImageCreateInfoOHOS {}
29268unsafe impl Sync for SwapchainImageCreateInfoOHOS {}
29269
29270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
29271#[repr(C)]
29272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29273pub struct SwapchainLatencyCreateInfoNV {
29274    pub s_type: StructureType,
29275    pub next: *const c_void,
29276    pub latency_mode_enable: Bool32,
29277}
29278
29279impl Default for SwapchainLatencyCreateInfoNV {
29280    #[inline]
29281    fn default() -> Self {
29282        Self {
29283            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
29284            next: ptr::null(),
29285            latency_mode_enable: Bool32::default(),
29286        }
29287    }
29288}
29289
29290unsafe impl Send for SwapchainLatencyCreateInfoNV {}
29291unsafe impl Sync for SwapchainLatencyCreateInfoNV {}
29292
29293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
29294#[repr(C)]
29295#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29296pub struct SwapchainPresentBarrierCreateInfoNV {
29297    pub s_type: StructureType,
29298    pub next: *mut c_void,
29299    pub present_barrier_enable: Bool32,
29300}
29301
29302impl Default for SwapchainPresentBarrierCreateInfoNV {
29303    #[inline]
29304    fn default() -> Self {
29305        Self {
29306            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
29307            next: ptr::null_mut(),
29308            present_barrier_enable: Bool32::default(),
29309        }
29310    }
29311}
29312
29313unsafe impl Send for SwapchainPresentBarrierCreateInfoNV {}
29314unsafe impl Sync for SwapchainPresentBarrierCreateInfoNV {}
29315
29316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html>
29317#[repr(C)]
29318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29319pub struct SwapchainPresentFenceInfoKHR {
29320    pub s_type: StructureType,
29321    pub next: *const c_void,
29322    pub swapchain_count: u32,
29323    pub fences: *const Fence,
29324}
29325
29326impl Default for SwapchainPresentFenceInfoKHR {
29327    #[inline]
29328    fn default() -> Self {
29329        Self {
29330            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR,
29331            next: ptr::null(),
29332            swapchain_count: u32::default(),
29333            fences: ptr::null(),
29334        }
29335    }
29336}
29337
29338unsafe impl Send for SwapchainPresentFenceInfoKHR {}
29339unsafe impl Sync for SwapchainPresentFenceInfoKHR {}
29340
29341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html>
29342#[repr(C)]
29343#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29344pub struct SwapchainPresentModeInfoKHR {
29345    pub s_type: StructureType,
29346    pub next: *const c_void,
29347    pub swapchain_count: u32,
29348    pub present_modes: *const PresentModeKHR,
29349}
29350
29351impl Default for SwapchainPresentModeInfoKHR {
29352    #[inline]
29353    fn default() -> Self {
29354        Self {
29355            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR,
29356            next: ptr::null(),
29357            swapchain_count: u32::default(),
29358            present_modes: ptr::null(),
29359        }
29360    }
29361}
29362
29363unsafe impl Send for SwapchainPresentModeInfoKHR {}
29364unsafe impl Sync for SwapchainPresentModeInfoKHR {}
29365
29366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html>
29367#[repr(C)]
29368#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29369pub struct SwapchainPresentModesCreateInfoKHR {
29370    pub s_type: StructureType,
29371    pub next: *const c_void,
29372    pub present_mode_count: u32,
29373    pub present_modes: *const PresentModeKHR,
29374}
29375
29376impl Default for SwapchainPresentModesCreateInfoKHR {
29377    #[inline]
29378    fn default() -> Self {
29379        Self {
29380            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,
29381            next: ptr::null(),
29382            present_mode_count: u32::default(),
29383            present_modes: ptr::null(),
29384        }
29385    }
29386}
29387
29388unsafe impl Send for SwapchainPresentModesCreateInfoKHR {}
29389unsafe impl Sync for SwapchainPresentModesCreateInfoKHR {}
29390
29391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html>
29392#[repr(C)]
29393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29394pub struct SwapchainPresentScalingCreateInfoKHR {
29395    pub s_type: StructureType,
29396    pub next: *const c_void,
29397    pub scaling_behavior: PresentScalingFlagsKHR,
29398    pub present_gravity_x: PresentGravityFlagsKHR,
29399    pub present_gravity_y: PresentGravityFlagsKHR,
29400}
29401
29402impl Default for SwapchainPresentScalingCreateInfoKHR {
29403    #[inline]
29404    fn default() -> Self {
29405        Self {
29406            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,
29407            next: ptr::null(),
29408            scaling_behavior: PresentScalingFlagsKHR::default(),
29409            present_gravity_x: PresentGravityFlagsKHR::default(),
29410            present_gravity_y: PresentGravityFlagsKHR::default(),
29411        }
29412    }
29413}
29414
29415unsafe impl Send for SwapchainPresentScalingCreateInfoKHR {}
29416unsafe impl Sync for SwapchainPresentScalingCreateInfoKHR {}
29417
29418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
29419#[repr(C)]
29420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29421pub struct SysmemColorSpaceFUCHSIA {
29422    pub s_type: StructureType,
29423    pub next: *const c_void,
29424    pub color_space: u32,
29425}
29426
29427impl Default for SysmemColorSpaceFUCHSIA {
29428    #[inline]
29429    fn default() -> Self {
29430        Self {
29431            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
29432            next: ptr::null(),
29433            color_space: u32::default(),
29434        }
29435    }
29436}
29437
29438unsafe impl Send for SysmemColorSpaceFUCHSIA {}
29439unsafe impl Sync for SysmemColorSpaceFUCHSIA {}
29440
29441/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html>
29442#[repr(C)]
29443#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29444pub struct TensorCaptureDescriptorDataInfoARM {
29445    pub s_type: StructureType,
29446    pub next: *const c_void,
29447    pub tensor: TensorARM,
29448}
29449
29450impl Default for TensorCaptureDescriptorDataInfoARM {
29451    #[inline]
29452    fn default() -> Self {
29453        Self {
29454            s_type: StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
29455            next: ptr::null(),
29456            tensor: TensorARM::default(),
29457        }
29458    }
29459}
29460
29461unsafe impl Send for TensorCaptureDescriptorDataInfoARM {}
29462unsafe impl Sync for TensorCaptureDescriptorDataInfoARM {}
29463
29464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCopyARM.html>
29465#[repr(C)]
29466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29467pub struct TensorCopyARM {
29468    pub s_type: StructureType,
29469    pub next: *const c_void,
29470    pub dimension_count: u32,
29471    pub src_offset: *const u64,
29472    pub dst_offset: *const u64,
29473    pub extent: *const u64,
29474}
29475
29476impl Default for TensorCopyARM {
29477    #[inline]
29478    fn default() -> Self {
29479        Self {
29480            s_type: StructureType::TENSOR_COPY_ARM,
29481            next: ptr::null(),
29482            dimension_count: u32::default(),
29483            src_offset: ptr::null(),
29484            dst_offset: ptr::null(),
29485            extent: ptr::null(),
29486        }
29487    }
29488}
29489
29490unsafe impl Send for TensorCopyARM {}
29491unsafe impl Sync for TensorCopyARM {}
29492
29493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html>
29494#[repr(C)]
29495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29496pub struct TensorCreateInfoARM {
29497    pub s_type: StructureType,
29498    pub next: *const c_void,
29499    pub flags: TensorCreateFlagsARM,
29500    pub description: *const TensorDescriptionARM,
29501    pub sharing_mode: SharingMode,
29502    pub queue_family_index_count: u32,
29503    pub queue_family_indices: *const u32,
29504}
29505
29506impl Default for TensorCreateInfoARM {
29507    #[inline]
29508    fn default() -> Self {
29509        Self {
29510            s_type: StructureType::TENSOR_CREATE_INFO_ARM,
29511            next: ptr::null(),
29512            flags: TensorCreateFlagsARM::default(),
29513            description: ptr::null(),
29514            sharing_mode: SharingMode::default(),
29515            queue_family_index_count: u32::default(),
29516            queue_family_indices: ptr::null(),
29517        }
29518    }
29519}
29520
29521unsafe impl Send for TensorCreateInfoARM {}
29522unsafe impl Sync for TensorCreateInfoARM {}
29523
29524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html>
29525#[repr(C)]
29526#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29527pub struct TensorDependencyInfoARM {
29528    pub s_type: StructureType,
29529    pub next: *const c_void,
29530    pub tensor_memory_barrier_count: u32,
29531    pub tensor_memory_barriers: *const TensorMemoryBarrierARM,
29532}
29533
29534impl Default for TensorDependencyInfoARM {
29535    #[inline]
29536    fn default() -> Self {
29537        Self {
29538            s_type: StructureType::TENSOR_DEPENDENCY_INFO_ARM,
29539            next: ptr::null(),
29540            tensor_memory_barrier_count: u32::default(),
29541            tensor_memory_barriers: ptr::null(),
29542        }
29543    }
29544}
29545
29546unsafe impl Send for TensorDependencyInfoARM {}
29547unsafe impl Sync for TensorDependencyInfoARM {}
29548
29549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html>
29550#[repr(C)]
29551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29552pub struct TensorDescriptionARM {
29553    pub s_type: StructureType,
29554    pub next: *const c_void,
29555    pub tiling: TensorTilingARM,
29556    pub format: Format,
29557    pub dimension_count: u32,
29558    pub dimensions: *const i64,
29559    pub strides: *const i64,
29560    pub usage: TensorUsageFlagsARM,
29561}
29562
29563impl Default for TensorDescriptionARM {
29564    #[inline]
29565    fn default() -> Self {
29566        Self {
29567            s_type: StructureType::TENSOR_DESCRIPTION_ARM,
29568            next: ptr::null(),
29569            tiling: TensorTilingARM::default(),
29570            format: Format::default(),
29571            dimension_count: u32::default(),
29572            dimensions: ptr::null(),
29573            strides: ptr::null(),
29574            usage: TensorUsageFlagsARM::default(),
29575        }
29576    }
29577}
29578
29579unsafe impl Send for TensorDescriptionARM {}
29580unsafe impl Sync for TensorDescriptionARM {}
29581
29582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html>
29583#[repr(C)]
29584#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29585pub struct TensorFormatPropertiesARM {
29586    pub s_type: StructureType,
29587    pub next: *const c_void,
29588    pub optimal_tiling_tensor_features: FormatFeatureFlags2,
29589    pub linear_tiling_tensor_features: FormatFeatureFlags2,
29590}
29591
29592impl Default for TensorFormatPropertiesARM {
29593    #[inline]
29594    fn default() -> Self {
29595        Self {
29596            s_type: StructureType::TENSOR_FORMAT_PROPERTIES_ARM,
29597            next: ptr::null(),
29598            optimal_tiling_tensor_features: FormatFeatureFlags2::default(),
29599            linear_tiling_tensor_features: FormatFeatureFlags2::default(),
29600        }
29601    }
29602}
29603
29604unsafe impl Send for TensorFormatPropertiesARM {}
29605unsafe impl Sync for TensorFormatPropertiesARM {}
29606
29607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html>
29608#[repr(C)]
29609#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29610pub struct TensorMemoryBarrierARM {
29611    pub s_type: StructureType,
29612    pub next: *const c_void,
29613    pub src_stage_mask: PipelineStageFlags2,
29614    pub src_access_mask: AccessFlags2,
29615    pub dst_stage_mask: PipelineStageFlags2,
29616    pub dst_access_mask: AccessFlags2,
29617    pub src_queue_family_index: u32,
29618    pub dst_queue_family_index: u32,
29619    pub tensor: TensorARM,
29620}
29621
29622impl Default for TensorMemoryBarrierARM {
29623    #[inline]
29624    fn default() -> Self {
29625        Self {
29626            s_type: StructureType::TENSOR_MEMORY_BARRIER_ARM,
29627            next: ptr::null(),
29628            src_stage_mask: PipelineStageFlags2::default(),
29629            src_access_mask: AccessFlags2::default(),
29630            dst_stage_mask: PipelineStageFlags2::default(),
29631            dst_access_mask: AccessFlags2::default(),
29632            src_queue_family_index: u32::default(),
29633            dst_queue_family_index: u32::default(),
29634            tensor: TensorARM::default(),
29635        }
29636    }
29637}
29638
29639unsafe impl Send for TensorMemoryBarrierARM {}
29640unsafe impl Sync for TensorMemoryBarrierARM {}
29641
29642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html>
29643#[repr(C)]
29644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29645pub struct TensorMemoryRequirementsInfoARM {
29646    pub s_type: StructureType,
29647    pub next: *const c_void,
29648    pub tensor: TensorARM,
29649}
29650
29651impl Default for TensorMemoryRequirementsInfoARM {
29652    #[inline]
29653    fn default() -> Self {
29654        Self {
29655            s_type: StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM,
29656            next: ptr::null(),
29657            tensor: TensorARM::default(),
29658        }
29659    }
29660}
29661
29662unsafe impl Send for TensorMemoryRequirementsInfoARM {}
29663unsafe impl Sync for TensorMemoryRequirementsInfoARM {}
29664
29665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html>
29666#[repr(C)]
29667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29668pub struct TensorViewCaptureDescriptorDataInfoARM {
29669    pub s_type: StructureType,
29670    pub next: *const c_void,
29671    pub tensor_view: TensorViewARM,
29672}
29673
29674impl Default for TensorViewCaptureDescriptorDataInfoARM {
29675    #[inline]
29676    fn default() -> Self {
29677        Self {
29678            s_type: StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
29679            next: ptr::null(),
29680            tensor_view: TensorViewARM::default(),
29681        }
29682    }
29683}
29684
29685unsafe impl Send for TensorViewCaptureDescriptorDataInfoARM {}
29686unsafe impl Sync for TensorViewCaptureDescriptorDataInfoARM {}
29687
29688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html>
29689#[repr(C)]
29690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29691pub struct TensorViewCreateInfoARM {
29692    pub s_type: StructureType,
29693    pub next: *const c_void,
29694    pub flags: TensorViewCreateFlagsARM,
29695    pub tensor: TensorARM,
29696    pub format: Format,
29697}
29698
29699impl Default for TensorViewCreateInfoARM {
29700    #[inline]
29701    fn default() -> Self {
29702        Self {
29703            s_type: StructureType::TENSOR_VIEW_CREATE_INFO_ARM,
29704            next: ptr::null(),
29705            flags: TensorViewCreateFlagsARM::default(),
29706            tensor: TensorARM::default(),
29707            format: Format::default(),
29708        }
29709    }
29710}
29711
29712unsafe impl Send for TensorViewCreateInfoARM {}
29713unsafe impl Sync for TensorViewCreateInfoARM {}
29714
29715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
29716#[repr(C)]
29717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29718pub struct TextureLODGatherFormatPropertiesAMD {
29719    pub s_type: StructureType,
29720    pub next: *mut c_void,
29721    pub supports_texture_gather_lod_bias_amd: Bool32,
29722}
29723
29724impl Default for TextureLODGatherFormatPropertiesAMD {
29725    #[inline]
29726    fn default() -> Self {
29727        Self {
29728            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
29729            next: ptr::null_mut(),
29730            supports_texture_gather_lod_bias_amd: Bool32::default(),
29731        }
29732    }
29733}
29734
29735unsafe impl Send for TextureLODGatherFormatPropertiesAMD {}
29736unsafe impl Sync for TextureLODGatherFormatPropertiesAMD {}
29737
29738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html>
29739#[repr(C)]
29740#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29741pub struct TileMemoryBindInfoQCOM {
29742    pub s_type: StructureType,
29743    pub next: *const c_void,
29744    pub memory: DeviceMemory,
29745}
29746
29747impl Default for TileMemoryBindInfoQCOM {
29748    #[inline]
29749    fn default() -> Self {
29750        Self {
29751            s_type: StructureType::TILE_MEMORY_BIND_INFO_QCOM,
29752            next: ptr::null(),
29753            memory: DeviceMemory::default(),
29754        }
29755    }
29756}
29757
29758unsafe impl Send for TileMemoryBindInfoQCOM {}
29759unsafe impl Sync for TileMemoryBindInfoQCOM {}
29760
29761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html>
29762#[repr(C)]
29763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29764pub struct TileMemoryRequirementsQCOM {
29765    pub s_type: StructureType,
29766    pub next: *mut c_void,
29767    pub size: DeviceSize,
29768    pub alignment: DeviceSize,
29769}
29770
29771impl Default for TileMemoryRequirementsQCOM {
29772    #[inline]
29773    fn default() -> Self {
29774        Self {
29775            s_type: StructureType::TILE_MEMORY_REQUIREMENTS_QCOM,
29776            next: ptr::null_mut(),
29777            size: DeviceSize::default(),
29778            alignment: DeviceSize::default(),
29779        }
29780    }
29781}
29782
29783unsafe impl Send for TileMemoryRequirementsQCOM {}
29784unsafe impl Sync for TileMemoryRequirementsQCOM {}
29785
29786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html>
29787#[repr(C)]
29788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29789pub struct TileMemorySizeInfoQCOM {
29790    pub s_type: StructureType,
29791    pub next: *const c_void,
29792    pub size: DeviceSize,
29793}
29794
29795impl Default for TileMemorySizeInfoQCOM {
29796    #[inline]
29797    fn default() -> Self {
29798        Self {
29799            s_type: StructureType::TILE_MEMORY_SIZE_INFO_QCOM,
29800            next: ptr::null(),
29801            size: DeviceSize::default(),
29802        }
29803    }
29804}
29805
29806unsafe impl Send for TileMemorySizeInfoQCOM {}
29807unsafe impl Sync for TileMemorySizeInfoQCOM {}
29808
29809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
29810#[repr(C)]
29811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29812pub struct TilePropertiesQCOM {
29813    pub s_type: StructureType,
29814    pub next: *mut c_void,
29815    pub tile_size: Extent3D,
29816    pub apron_size: Extent2D,
29817    pub origin: Offset2D,
29818}
29819
29820impl Default for TilePropertiesQCOM {
29821    #[inline]
29822    fn default() -> Self {
29823        Self {
29824            s_type: StructureType::TILE_PROPERTIES_QCOM,
29825            next: ptr::null_mut(),
29826            tile_size: Extent3D::default(),
29827            apron_size: Extent2D::default(),
29828            origin: Offset2D::default(),
29829        }
29830    }
29831}
29832
29833unsafe impl Send for TilePropertiesQCOM {}
29834unsafe impl Sync for TilePropertiesQCOM {}
29835
29836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
29837#[repr(C)]
29838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29839pub struct TimelineSemaphoreSubmitInfo {
29840    pub s_type: StructureType,
29841    pub next: *const c_void,
29842    pub wait_semaphore_value_count: u32,
29843    pub wait_semaphore_values: *const u64,
29844    pub signal_semaphore_value_count: u32,
29845    pub signal_semaphore_values: *const u64,
29846}
29847
29848impl Default for TimelineSemaphoreSubmitInfo {
29849    #[inline]
29850    fn default() -> Self {
29851        Self {
29852            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
29853            next: ptr::null(),
29854            wait_semaphore_value_count: u32::default(),
29855            wait_semaphore_values: ptr::null(),
29856            signal_semaphore_value_count: u32::default(),
29857            signal_semaphore_values: ptr::null(),
29858        }
29859    }
29860}
29861
29862unsafe impl Send for TimelineSemaphoreSubmitInfo {}
29863unsafe impl Sync for TimelineSemaphoreSubmitInfo {}
29864
29865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
29866#[repr(C)]
29867#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29868pub struct TraceRaysIndirectCommand2KHR {
29869    pub raygen_shader_record_address: DeviceAddress,
29870    pub raygen_shader_record_size: DeviceSize,
29871    pub miss_shader_binding_table_address: DeviceAddress,
29872    pub miss_shader_binding_table_size: DeviceSize,
29873    pub miss_shader_binding_table_stride: DeviceSize,
29874    pub hit_shader_binding_table_address: DeviceAddress,
29875    pub hit_shader_binding_table_size: DeviceSize,
29876    pub hit_shader_binding_table_stride: DeviceSize,
29877    pub callable_shader_binding_table_address: DeviceAddress,
29878    pub callable_shader_binding_table_size: DeviceSize,
29879    pub callable_shader_binding_table_stride: DeviceSize,
29880    pub width: u32,
29881    pub height: u32,
29882    pub depth: u32,
29883}
29884
29885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
29886#[repr(C)]
29887#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29888pub struct TraceRaysIndirectCommandKHR {
29889    pub width: u32,
29890    pub height: u32,
29891    pub depth: u32,
29892}
29893
29894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
29895#[repr(C)]
29896#[derive(Copy, Clone, Default, Debug, PartialEq)]
29897pub struct TransformMatrixKHR {
29898    pub matrix: [[f32; 4]; 3],
29899}
29900
29901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
29902#[repr(C)]
29903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29904pub struct ValidationCacheCreateInfoEXT {
29905    pub s_type: StructureType,
29906    pub next: *const c_void,
29907    pub flags: ValidationCacheCreateFlagsEXT,
29908    pub initial_data_size: usize,
29909    pub initial_data: *const c_void,
29910}
29911
29912impl Default for ValidationCacheCreateInfoEXT {
29913    #[inline]
29914    fn default() -> Self {
29915        Self {
29916            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
29917            next: ptr::null(),
29918            flags: ValidationCacheCreateFlagsEXT::default(),
29919            initial_data_size: usize::default(),
29920            initial_data: ptr::null(),
29921        }
29922    }
29923}
29924
29925unsafe impl Send for ValidationCacheCreateInfoEXT {}
29926unsafe impl Sync for ValidationCacheCreateInfoEXT {}
29927
29928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
29929#[repr(C)]
29930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29931pub struct ValidationFeaturesEXT {
29932    pub s_type: StructureType,
29933    pub next: *const c_void,
29934    pub enabled_validation_feature_count: u32,
29935    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
29936    pub disabled_validation_feature_count: u32,
29937    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
29938}
29939
29940impl Default for ValidationFeaturesEXT {
29941    #[inline]
29942    fn default() -> Self {
29943        Self {
29944            s_type: StructureType::VALIDATION_FEATURES_EXT,
29945            next: ptr::null(),
29946            enabled_validation_feature_count: u32::default(),
29947            enabled_validation_features: ptr::null(),
29948            disabled_validation_feature_count: u32::default(),
29949            disabled_validation_features: ptr::null(),
29950        }
29951    }
29952}
29953
29954unsafe impl Send for ValidationFeaturesEXT {}
29955unsafe impl Sync for ValidationFeaturesEXT {}
29956
29957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
29958#[repr(C)]
29959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29960pub struct ValidationFlagsEXT {
29961    pub s_type: StructureType,
29962    pub next: *const c_void,
29963    pub disabled_validation_check_count: u32,
29964    pub disabled_validation_checks: *const ValidationCheckEXT,
29965}
29966
29967impl Default for ValidationFlagsEXT {
29968    #[inline]
29969    fn default() -> Self {
29970        Self {
29971            s_type: StructureType::VALIDATION_FLAGS_EXT,
29972            next: ptr::null(),
29973            disabled_validation_check_count: u32::default(),
29974            disabled_validation_checks: ptr::null(),
29975        }
29976    }
29977}
29978
29979unsafe impl Send for ValidationFlagsEXT {}
29980unsafe impl Sync for ValidationFlagsEXT {}
29981
29982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
29983#[repr(C)]
29984#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29985pub struct VertexInputAttributeDescription {
29986    pub location: u32,
29987    pub binding: u32,
29988    pub format: Format,
29989    pub offset: u32,
29990}
29991
29992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
29993#[repr(C)]
29994#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29995pub struct VertexInputAttributeDescription2EXT {
29996    pub s_type: StructureType,
29997    pub next: *mut c_void,
29998    pub location: u32,
29999    pub binding: u32,
30000    pub format: Format,
30001    pub offset: u32,
30002}
30003
30004impl Default for VertexInputAttributeDescription2EXT {
30005    #[inline]
30006    fn default() -> Self {
30007        Self {
30008            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
30009            next: ptr::null_mut(),
30010            location: u32::default(),
30011            binding: u32::default(),
30012            format: Format::default(),
30013            offset: u32::default(),
30014        }
30015    }
30016}
30017
30018unsafe impl Send for VertexInputAttributeDescription2EXT {}
30019unsafe impl Sync for VertexInputAttributeDescription2EXT {}
30020
30021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
30022#[repr(C)]
30023#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30024pub struct VertexInputBindingDescription {
30025    pub binding: u32,
30026    pub stride: u32,
30027    pub input_rate: VertexInputRate,
30028}
30029
30030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
30031#[repr(C)]
30032#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30033pub struct VertexInputBindingDescription2EXT {
30034    pub s_type: StructureType,
30035    pub next: *mut c_void,
30036    pub binding: u32,
30037    pub stride: u32,
30038    pub input_rate: VertexInputRate,
30039    pub divisor: u32,
30040}
30041
30042impl Default for VertexInputBindingDescription2EXT {
30043    #[inline]
30044    fn default() -> Self {
30045        Self {
30046            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
30047            next: ptr::null_mut(),
30048            binding: u32::default(),
30049            stride: u32::default(),
30050            input_rate: VertexInputRate::default(),
30051            divisor: u32::default(),
30052        }
30053    }
30054}
30055
30056unsafe impl Send for VertexInputBindingDescription2EXT {}
30057unsafe impl Sync for VertexInputBindingDescription2EXT {}
30058
30059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
30060#[repr(C)]
30061#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30062pub struct VertexInputBindingDivisorDescription {
30063    pub binding: u32,
30064    pub divisor: u32,
30065}
30066
30067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
30068#[repr(C)]
30069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30070pub struct ViSurfaceCreateInfoNN {
30071    pub s_type: StructureType,
30072    pub next: *const c_void,
30073    pub flags: ViSurfaceCreateFlagsNN,
30074    pub window: *mut c_void,
30075}
30076
30077impl Default for ViSurfaceCreateInfoNN {
30078    #[inline]
30079    fn default() -> Self {
30080        Self {
30081            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
30082            next: ptr::null(),
30083            flags: ViSurfaceCreateFlagsNN::default(),
30084            window: ptr::null_mut(),
30085        }
30086    }
30087}
30088
30089unsafe impl Send for ViSurfaceCreateInfoNN {}
30090unsafe impl Sync for ViSurfaceCreateInfoNN {}
30091
30092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
30093#[repr(C)]
30094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30095pub struct VideoBeginCodingInfoKHR {
30096    pub s_type: StructureType,
30097    pub next: *const c_void,
30098    pub flags: VideoBeginCodingFlagsKHR,
30099    pub video_session: VideoSessionKHR,
30100    pub video_session_parameters: VideoSessionParametersKHR,
30101    pub reference_slot_count: u32,
30102    pub reference_slots: *const VideoReferenceSlotInfoKHR,
30103}
30104
30105impl Default for VideoBeginCodingInfoKHR {
30106    #[inline]
30107    fn default() -> Self {
30108        Self {
30109            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
30110            next: ptr::null(),
30111            flags: VideoBeginCodingFlagsKHR::default(),
30112            video_session: VideoSessionKHR::default(),
30113            video_session_parameters: VideoSessionParametersKHR::default(),
30114            reference_slot_count: u32::default(),
30115            reference_slots: ptr::null(),
30116        }
30117    }
30118}
30119
30120unsafe impl Send for VideoBeginCodingInfoKHR {}
30121unsafe impl Sync for VideoBeginCodingInfoKHR {}
30122
30123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
30124#[repr(C)]
30125#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30126pub struct VideoCapabilitiesKHR {
30127    pub s_type: StructureType,
30128    pub next: *mut c_void,
30129    pub flags: VideoCapabilityFlagsKHR,
30130    pub min_bitstream_buffer_offset_alignment: DeviceSize,
30131    pub min_bitstream_buffer_size_alignment: DeviceSize,
30132    pub picture_access_granularity: Extent2D,
30133    pub min_coded_extent: Extent2D,
30134    pub max_coded_extent: Extent2D,
30135    pub max_dpb_slots: u32,
30136    pub max_active_reference_pictures: u32,
30137    pub std_header_version: ExtensionProperties,
30138}
30139
30140impl Default for VideoCapabilitiesKHR {
30141    #[inline]
30142    fn default() -> Self {
30143        Self {
30144            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
30145            next: ptr::null_mut(),
30146            flags: VideoCapabilityFlagsKHR::default(),
30147            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
30148            min_bitstream_buffer_size_alignment: DeviceSize::default(),
30149            picture_access_granularity: Extent2D::default(),
30150            min_coded_extent: Extent2D::default(),
30151            max_coded_extent: Extent2D::default(),
30152            max_dpb_slots: u32::default(),
30153            max_active_reference_pictures: u32::default(),
30154            std_header_version: ExtensionProperties::default(),
30155        }
30156    }
30157}
30158
30159unsafe impl Send for VideoCapabilitiesKHR {}
30160unsafe impl Sync for VideoCapabilitiesKHR {}
30161
30162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
30163#[repr(C)]
30164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30165pub struct VideoCodingControlInfoKHR {
30166    pub s_type: StructureType,
30167    pub next: *const c_void,
30168    pub flags: VideoCodingControlFlagsKHR,
30169}
30170
30171impl Default for VideoCodingControlInfoKHR {
30172    #[inline]
30173    fn default() -> Self {
30174        Self {
30175            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
30176            next: ptr::null(),
30177            flags: VideoCodingControlFlagsKHR::default(),
30178        }
30179    }
30180}
30181
30182unsafe impl Send for VideoCodingControlInfoKHR {}
30183unsafe impl Sync for VideoCodingControlInfoKHR {}
30184
30185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
30186#[repr(C)]
30187#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30188pub struct VideoDecodeAV1CapabilitiesKHR {
30189    pub s_type: StructureType,
30190    pub next: *mut c_void,
30191    pub max_level: video::StdVideoAV1Level,
30192}
30193
30194impl Default for VideoDecodeAV1CapabilitiesKHR {
30195    #[inline]
30196    fn default() -> Self {
30197        Self {
30198            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
30199            next: ptr::null_mut(),
30200            max_level: video::StdVideoAV1Level::default(),
30201        }
30202    }
30203}
30204
30205unsafe impl Send for VideoDecodeAV1CapabilitiesKHR {}
30206unsafe impl Sync for VideoDecodeAV1CapabilitiesKHR {}
30207
30208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
30209#[repr(C)]
30210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30211pub struct VideoDecodeAV1DpbSlotInfoKHR {
30212    pub s_type: StructureType,
30213    pub next: *const c_void,
30214    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
30215}
30216
30217impl Default for VideoDecodeAV1DpbSlotInfoKHR {
30218    #[inline]
30219    fn default() -> Self {
30220        Self {
30221            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
30222            next: ptr::null(),
30223            std_reference_info: ptr::null(),
30224        }
30225    }
30226}
30227
30228unsafe impl Send for VideoDecodeAV1DpbSlotInfoKHR {}
30229unsafe impl Sync for VideoDecodeAV1DpbSlotInfoKHR {}
30230
30231/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
30232#[repr(C)]
30233#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30234pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
30235    pub s_type: StructureType,
30236    pub next: *const c_void,
30237    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30238}
30239
30240impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
30241    #[inline]
30242    fn default() -> Self {
30243        Self {
30244            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
30245            next: ptr::null(),
30246            std_sequence_header: ptr::null(),
30247        }
30248    }
30249}
30250
30251unsafe impl Send for VideoDecodeAV1InlineSessionParametersInfoKHR {}
30252unsafe impl Sync for VideoDecodeAV1InlineSessionParametersInfoKHR {}
30253
30254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
30255#[repr(C)]
30256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30257pub struct VideoDecodeAV1PictureInfoKHR {
30258    pub s_type: StructureType,
30259    pub next: *const c_void,
30260    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
30261    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
30262    pub frame_header_offset: u32,
30263    pub tile_count: u32,
30264    pub tile_offsets: *const u32,
30265    pub tile_sizes: *const u32,
30266}
30267
30268impl Default for VideoDecodeAV1PictureInfoKHR {
30269    #[inline]
30270    fn default() -> Self {
30271        Self {
30272            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
30273            next: ptr::null(),
30274            std_picture_info: ptr::null(),
30275            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30276            frame_header_offset: u32::default(),
30277            tile_count: u32::default(),
30278            tile_offsets: ptr::null(),
30279            tile_sizes: ptr::null(),
30280        }
30281    }
30282}
30283
30284unsafe impl Send for VideoDecodeAV1PictureInfoKHR {}
30285unsafe impl Sync for VideoDecodeAV1PictureInfoKHR {}
30286
30287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
30288#[repr(C)]
30289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30290pub struct VideoDecodeAV1ProfileInfoKHR {
30291    pub s_type: StructureType,
30292    pub next: *const c_void,
30293    pub std_profile: video::StdVideoAV1Profile,
30294    pub film_grain_support: Bool32,
30295}
30296
30297impl Default for VideoDecodeAV1ProfileInfoKHR {
30298    #[inline]
30299    fn default() -> Self {
30300        Self {
30301            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
30302            next: ptr::null(),
30303            std_profile: video::StdVideoAV1Profile::default(),
30304            film_grain_support: Bool32::default(),
30305        }
30306    }
30307}
30308
30309unsafe impl Send for VideoDecodeAV1ProfileInfoKHR {}
30310unsafe impl Sync for VideoDecodeAV1ProfileInfoKHR {}
30311
30312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
30313#[repr(C)]
30314#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30315pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
30316    pub s_type: StructureType,
30317    pub next: *const c_void,
30318    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30319}
30320
30321impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
30322    #[inline]
30323    fn default() -> Self {
30324        Self {
30325            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
30326            next: ptr::null(),
30327            std_sequence_header: ptr::null(),
30328        }
30329    }
30330}
30331
30332unsafe impl Send for VideoDecodeAV1SessionParametersCreateInfoKHR {}
30333unsafe impl Sync for VideoDecodeAV1SessionParametersCreateInfoKHR {}
30334
30335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
30336#[repr(C)]
30337#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30338pub struct VideoDecodeCapabilitiesKHR {
30339    pub s_type: StructureType,
30340    pub next: *mut c_void,
30341    pub flags: VideoDecodeCapabilityFlagsKHR,
30342}
30343
30344impl Default for VideoDecodeCapabilitiesKHR {
30345    #[inline]
30346    fn default() -> Self {
30347        Self {
30348            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
30349            next: ptr::null_mut(),
30350            flags: VideoDecodeCapabilityFlagsKHR::default(),
30351        }
30352    }
30353}
30354
30355unsafe impl Send for VideoDecodeCapabilitiesKHR {}
30356unsafe impl Sync for VideoDecodeCapabilitiesKHR {}
30357
30358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
30359#[repr(C)]
30360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30361pub struct VideoDecodeH264CapabilitiesKHR {
30362    pub s_type: StructureType,
30363    pub next: *mut c_void,
30364    pub max_level_idc: video::StdVideoH264LevelIdc,
30365    pub field_offset_granularity: Offset2D,
30366}
30367
30368impl Default for VideoDecodeH264CapabilitiesKHR {
30369    #[inline]
30370    fn default() -> Self {
30371        Self {
30372            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
30373            next: ptr::null_mut(),
30374            max_level_idc: video::StdVideoH264LevelIdc::default(),
30375            field_offset_granularity: Offset2D::default(),
30376        }
30377    }
30378}
30379
30380unsafe impl Send for VideoDecodeH264CapabilitiesKHR {}
30381unsafe impl Sync for VideoDecodeH264CapabilitiesKHR {}
30382
30383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
30384#[repr(C)]
30385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30386pub struct VideoDecodeH264DpbSlotInfoKHR {
30387    pub s_type: StructureType,
30388    pub next: *const c_void,
30389    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
30390}
30391
30392impl Default for VideoDecodeH264DpbSlotInfoKHR {
30393    #[inline]
30394    fn default() -> Self {
30395        Self {
30396            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
30397            next: ptr::null(),
30398            std_reference_info: ptr::null(),
30399        }
30400    }
30401}
30402
30403unsafe impl Send for VideoDecodeH264DpbSlotInfoKHR {}
30404unsafe impl Sync for VideoDecodeH264DpbSlotInfoKHR {}
30405
30406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
30407#[repr(C)]
30408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30409pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
30410    pub s_type: StructureType,
30411    pub next: *const c_void,
30412    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
30413    pub std_pps: *const video::StdVideoH264PictureParameterSet,
30414}
30415
30416impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
30417    #[inline]
30418    fn default() -> Self {
30419        Self {
30420            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
30421            next: ptr::null(),
30422            std_sps: ptr::null(),
30423            std_pps: ptr::null(),
30424        }
30425    }
30426}
30427
30428unsafe impl Send for VideoDecodeH264InlineSessionParametersInfoKHR {}
30429unsafe impl Sync for VideoDecodeH264InlineSessionParametersInfoKHR {}
30430
30431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
30432#[repr(C)]
30433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30434pub struct VideoDecodeH264PictureInfoKHR {
30435    pub s_type: StructureType,
30436    pub next: *const c_void,
30437    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
30438    pub slice_count: u32,
30439    pub slice_offsets: *const u32,
30440}
30441
30442impl Default for VideoDecodeH264PictureInfoKHR {
30443    #[inline]
30444    fn default() -> Self {
30445        Self {
30446            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
30447            next: ptr::null(),
30448            std_picture_info: ptr::null(),
30449            slice_count: u32::default(),
30450            slice_offsets: ptr::null(),
30451        }
30452    }
30453}
30454
30455unsafe impl Send for VideoDecodeH264PictureInfoKHR {}
30456unsafe impl Sync for VideoDecodeH264PictureInfoKHR {}
30457
30458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
30459#[repr(C)]
30460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30461pub struct VideoDecodeH264ProfileInfoKHR {
30462    pub s_type: StructureType,
30463    pub next: *const c_void,
30464    pub std_profile_idc: video::StdVideoH264ProfileIdc,
30465    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
30466}
30467
30468impl Default for VideoDecodeH264ProfileInfoKHR {
30469    #[inline]
30470    fn default() -> Self {
30471        Self {
30472            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
30473            next: ptr::null(),
30474            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
30475            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
30476        }
30477    }
30478}
30479
30480unsafe impl Send for VideoDecodeH264ProfileInfoKHR {}
30481unsafe impl Sync for VideoDecodeH264ProfileInfoKHR {}
30482
30483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
30484#[repr(C)]
30485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30486pub struct VideoDecodeH264SessionParametersAddInfoKHR {
30487    pub s_type: StructureType,
30488    pub next: *const c_void,
30489    pub std_sps_count: u32,
30490    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
30491    pub std_pps_count: u32,
30492    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
30493}
30494
30495impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
30496    #[inline]
30497    fn default() -> Self {
30498        Self {
30499            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
30500            next: ptr::null(),
30501            std_sps_count: u32::default(),
30502            std_sp_ss: ptr::null(),
30503            std_pps_count: u32::default(),
30504            std_pp_ss: ptr::null(),
30505        }
30506    }
30507}
30508
30509unsafe impl Send for VideoDecodeH264SessionParametersAddInfoKHR {}
30510unsafe impl Sync for VideoDecodeH264SessionParametersAddInfoKHR {}
30511
30512/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
30513#[repr(C)]
30514#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30515pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
30516    pub s_type: StructureType,
30517    pub next: *const c_void,
30518    pub max_std_sps_count: u32,
30519    pub max_std_pps_count: u32,
30520    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
30521}
30522
30523impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
30524    #[inline]
30525    fn default() -> Self {
30526        Self {
30527            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
30528            next: ptr::null(),
30529            max_std_sps_count: u32::default(),
30530            max_std_pps_count: u32::default(),
30531            parameters_add_info: ptr::null(),
30532        }
30533    }
30534}
30535
30536unsafe impl Send for VideoDecodeH264SessionParametersCreateInfoKHR {}
30537unsafe impl Sync for VideoDecodeH264SessionParametersCreateInfoKHR {}
30538
30539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
30540#[repr(C)]
30541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30542pub struct VideoDecodeH265CapabilitiesKHR {
30543    pub s_type: StructureType,
30544    pub next: *mut c_void,
30545    pub max_level_idc: video::StdVideoH265LevelIdc,
30546}
30547
30548impl Default for VideoDecodeH265CapabilitiesKHR {
30549    #[inline]
30550    fn default() -> Self {
30551        Self {
30552            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
30553            next: ptr::null_mut(),
30554            max_level_idc: video::StdVideoH265LevelIdc::default(),
30555        }
30556    }
30557}
30558
30559unsafe impl Send for VideoDecodeH265CapabilitiesKHR {}
30560unsafe impl Sync for VideoDecodeH265CapabilitiesKHR {}
30561
30562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
30563#[repr(C)]
30564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30565pub struct VideoDecodeH265DpbSlotInfoKHR {
30566    pub s_type: StructureType,
30567    pub next: *const c_void,
30568    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
30569}
30570
30571impl Default for VideoDecodeH265DpbSlotInfoKHR {
30572    #[inline]
30573    fn default() -> Self {
30574        Self {
30575            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
30576            next: ptr::null(),
30577            std_reference_info: ptr::null(),
30578        }
30579    }
30580}
30581
30582unsafe impl Send for VideoDecodeH265DpbSlotInfoKHR {}
30583unsafe impl Sync for VideoDecodeH265DpbSlotInfoKHR {}
30584
30585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
30586#[repr(C)]
30587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30588pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
30589    pub s_type: StructureType,
30590    pub next: *const c_void,
30591    pub std_vps: *const video::StdVideoH265VideoParameterSet,
30592    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
30593    pub std_pps: *const video::StdVideoH265PictureParameterSet,
30594}
30595
30596impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
30597    #[inline]
30598    fn default() -> Self {
30599        Self {
30600            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
30601            next: ptr::null(),
30602            std_vps: ptr::null(),
30603            std_sps: ptr::null(),
30604            std_pps: ptr::null(),
30605        }
30606    }
30607}
30608
30609unsafe impl Send for VideoDecodeH265InlineSessionParametersInfoKHR {}
30610unsafe impl Sync for VideoDecodeH265InlineSessionParametersInfoKHR {}
30611
30612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
30613#[repr(C)]
30614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30615pub struct VideoDecodeH265PictureInfoKHR {
30616    pub s_type: StructureType,
30617    pub next: *const c_void,
30618    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
30619    pub slice_segment_count: u32,
30620    pub slice_segment_offsets: *const u32,
30621}
30622
30623impl Default for VideoDecodeH265PictureInfoKHR {
30624    #[inline]
30625    fn default() -> Self {
30626        Self {
30627            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
30628            next: ptr::null(),
30629            std_picture_info: ptr::null(),
30630            slice_segment_count: u32::default(),
30631            slice_segment_offsets: ptr::null(),
30632        }
30633    }
30634}
30635
30636unsafe impl Send for VideoDecodeH265PictureInfoKHR {}
30637unsafe impl Sync for VideoDecodeH265PictureInfoKHR {}
30638
30639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
30640#[repr(C)]
30641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30642pub struct VideoDecodeH265ProfileInfoKHR {
30643    pub s_type: StructureType,
30644    pub next: *const c_void,
30645    pub std_profile_idc: video::StdVideoH265ProfileIdc,
30646}
30647
30648impl Default for VideoDecodeH265ProfileInfoKHR {
30649    #[inline]
30650    fn default() -> Self {
30651        Self {
30652            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
30653            next: ptr::null(),
30654            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
30655        }
30656    }
30657}
30658
30659unsafe impl Send for VideoDecodeH265ProfileInfoKHR {}
30660unsafe impl Sync for VideoDecodeH265ProfileInfoKHR {}
30661
30662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
30663#[repr(C)]
30664#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30665pub struct VideoDecodeH265SessionParametersAddInfoKHR {
30666    pub s_type: StructureType,
30667    pub next: *const c_void,
30668    pub std_vps_count: u32,
30669    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
30670    pub std_sps_count: u32,
30671    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
30672    pub std_pps_count: u32,
30673    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
30674}
30675
30676impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
30677    #[inline]
30678    fn default() -> Self {
30679        Self {
30680            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
30681            next: ptr::null(),
30682            std_vps_count: u32::default(),
30683            std_vp_ss: ptr::null(),
30684            std_sps_count: u32::default(),
30685            std_sp_ss: ptr::null(),
30686            std_pps_count: u32::default(),
30687            std_pp_ss: ptr::null(),
30688        }
30689    }
30690}
30691
30692unsafe impl Send for VideoDecodeH265SessionParametersAddInfoKHR {}
30693unsafe impl Sync for VideoDecodeH265SessionParametersAddInfoKHR {}
30694
30695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
30696#[repr(C)]
30697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30698pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
30699    pub s_type: StructureType,
30700    pub next: *const c_void,
30701    pub max_std_vps_count: u32,
30702    pub max_std_sps_count: u32,
30703    pub max_std_pps_count: u32,
30704    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
30705}
30706
30707impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
30708    #[inline]
30709    fn default() -> Self {
30710        Self {
30711            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
30712            next: ptr::null(),
30713            max_std_vps_count: u32::default(),
30714            max_std_sps_count: u32::default(),
30715            max_std_pps_count: u32::default(),
30716            parameters_add_info: ptr::null(),
30717        }
30718    }
30719}
30720
30721unsafe impl Send for VideoDecodeH265SessionParametersCreateInfoKHR {}
30722unsafe impl Sync for VideoDecodeH265SessionParametersCreateInfoKHR {}
30723
30724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
30725#[repr(C)]
30726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30727pub struct VideoDecodeInfoKHR {
30728    pub s_type: StructureType,
30729    pub next: *const c_void,
30730    pub flags: VideoDecodeFlagsKHR,
30731    pub src_buffer: Buffer,
30732    pub src_buffer_offset: DeviceSize,
30733    pub src_buffer_range: DeviceSize,
30734    pub dst_picture_resource: VideoPictureResourceInfoKHR,
30735    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
30736    pub reference_slot_count: u32,
30737    pub reference_slots: *const VideoReferenceSlotInfoKHR,
30738}
30739
30740impl Default for VideoDecodeInfoKHR {
30741    #[inline]
30742    fn default() -> Self {
30743        Self {
30744            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
30745            next: ptr::null(),
30746            flags: VideoDecodeFlagsKHR::default(),
30747            src_buffer: Buffer::default(),
30748            src_buffer_offset: DeviceSize::default(),
30749            src_buffer_range: DeviceSize::default(),
30750            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
30751            setup_reference_slot: ptr::null(),
30752            reference_slot_count: u32::default(),
30753            reference_slots: ptr::null(),
30754        }
30755    }
30756}
30757
30758unsafe impl Send for VideoDecodeInfoKHR {}
30759unsafe impl Sync for VideoDecodeInfoKHR {}
30760
30761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
30762#[repr(C)]
30763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30764pub struct VideoDecodeUsageInfoKHR {
30765    pub s_type: StructureType,
30766    pub next: *const c_void,
30767    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
30768}
30769
30770impl Default for VideoDecodeUsageInfoKHR {
30771    #[inline]
30772    fn default() -> Self {
30773        Self {
30774            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
30775            next: ptr::null(),
30776            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
30777        }
30778    }
30779}
30780
30781unsafe impl Send for VideoDecodeUsageInfoKHR {}
30782unsafe impl Sync for VideoDecodeUsageInfoKHR {}
30783
30784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html>
30785#[repr(C)]
30786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30787pub struct VideoDecodeVP9CapabilitiesKHR {
30788    pub s_type: StructureType,
30789    pub next: *mut c_void,
30790    pub max_level: video::StdVideoVP9Level,
30791}
30792
30793impl Default for VideoDecodeVP9CapabilitiesKHR {
30794    #[inline]
30795    fn default() -> Self {
30796        Self {
30797            s_type: StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR,
30798            next: ptr::null_mut(),
30799            max_level: video::StdVideoVP9Level::default(),
30800        }
30801    }
30802}
30803
30804unsafe impl Send for VideoDecodeVP9CapabilitiesKHR {}
30805unsafe impl Sync for VideoDecodeVP9CapabilitiesKHR {}
30806
30807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html>
30808#[repr(C)]
30809#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30810pub struct VideoDecodeVP9PictureInfoKHR {
30811    pub s_type: StructureType,
30812    pub next: *const c_void,
30813    pub std_picture_info: *const video::StdVideoDecodeVP9PictureInfo,
30814    pub reference_name_slot_indices: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR as usize],
30815    pub uncompressed_header_offset: u32,
30816    pub compressed_header_offset: u32,
30817    pub tiles_offset: u32,
30818}
30819
30820impl Default for VideoDecodeVP9PictureInfoKHR {
30821    #[inline]
30822    fn default() -> Self {
30823        Self {
30824            s_type: StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR,
30825            next: ptr::null(),
30826            std_picture_info: ptr::null(),
30827            reference_name_slot_indices: [i32::default(); MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
30828            uncompressed_header_offset: u32::default(),
30829            compressed_header_offset: u32::default(),
30830            tiles_offset: u32::default(),
30831        }
30832    }
30833}
30834
30835unsafe impl Send for VideoDecodeVP9PictureInfoKHR {}
30836unsafe impl Sync for VideoDecodeVP9PictureInfoKHR {}
30837
30838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html>
30839#[repr(C)]
30840#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30841pub struct VideoDecodeVP9ProfileInfoKHR {
30842    pub s_type: StructureType,
30843    pub next: *const c_void,
30844    pub std_profile: video::StdVideoVP9Profile,
30845}
30846
30847impl Default for VideoDecodeVP9ProfileInfoKHR {
30848    #[inline]
30849    fn default() -> Self {
30850        Self {
30851            s_type: StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR,
30852            next: ptr::null(),
30853            std_profile: video::StdVideoVP9Profile::default(),
30854        }
30855    }
30856}
30857
30858unsafe impl Send for VideoDecodeVP9ProfileInfoKHR {}
30859unsafe impl Sync for VideoDecodeVP9ProfileInfoKHR {}
30860
30861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
30862#[repr(C)]
30863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30864pub struct VideoEncodeAV1CapabilitiesKHR {
30865    pub s_type: StructureType,
30866    pub next: *mut c_void,
30867    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
30868    pub max_level: video::StdVideoAV1Level,
30869    pub coded_picture_alignment: Extent2D,
30870    pub max_tiles: Extent2D,
30871    pub min_tile_size: Extent2D,
30872    pub max_tile_size: Extent2D,
30873    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
30874    pub max_single_reference_count: u32,
30875    pub single_reference_name_mask: u32,
30876    pub max_unidirectional_compound_reference_count: u32,
30877    pub max_unidirectional_compound_group1_reference_count: u32,
30878    pub unidirectional_compound_reference_name_mask: u32,
30879    pub max_bidirectional_compound_reference_count: u32,
30880    pub max_bidirectional_compound_group1_reference_count: u32,
30881    pub max_bidirectional_compound_group2_reference_count: u32,
30882    pub bidirectional_compound_reference_name_mask: u32,
30883    pub max_temporal_layer_count: u32,
30884    pub max_spatial_layer_count: u32,
30885    pub max_operating_points: u32,
30886    pub min_q_index: u32,
30887    pub max_q_index: u32,
30888    pub prefers_gop_remaining_frames: Bool32,
30889    pub requires_gop_remaining_frames: Bool32,
30890    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
30891}
30892
30893impl Default for VideoEncodeAV1CapabilitiesKHR {
30894    #[inline]
30895    fn default() -> Self {
30896        Self {
30897            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
30898            next: ptr::null_mut(),
30899            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
30900            max_level: video::StdVideoAV1Level::default(),
30901            coded_picture_alignment: Extent2D::default(),
30902            max_tiles: Extent2D::default(),
30903            min_tile_size: Extent2D::default(),
30904            max_tile_size: Extent2D::default(),
30905            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
30906            max_single_reference_count: u32::default(),
30907            single_reference_name_mask: u32::default(),
30908            max_unidirectional_compound_reference_count: u32::default(),
30909            max_unidirectional_compound_group1_reference_count: u32::default(),
30910            unidirectional_compound_reference_name_mask: u32::default(),
30911            max_bidirectional_compound_reference_count: u32::default(),
30912            max_bidirectional_compound_group1_reference_count: u32::default(),
30913            max_bidirectional_compound_group2_reference_count: u32::default(),
30914            bidirectional_compound_reference_name_mask: u32::default(),
30915            max_temporal_layer_count: u32::default(),
30916            max_spatial_layer_count: u32::default(),
30917            max_operating_points: u32::default(),
30918            min_q_index: u32::default(),
30919            max_q_index: u32::default(),
30920            prefers_gop_remaining_frames: Bool32::default(),
30921            requires_gop_remaining_frames: Bool32::default(),
30922            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
30923        }
30924    }
30925}
30926
30927unsafe impl Send for VideoEncodeAV1CapabilitiesKHR {}
30928unsafe impl Sync for VideoEncodeAV1CapabilitiesKHR {}
30929
30930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
30931#[repr(C)]
30932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30933pub struct VideoEncodeAV1DpbSlotInfoKHR {
30934    pub s_type: StructureType,
30935    pub next: *const c_void,
30936    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
30937}
30938
30939impl Default for VideoEncodeAV1DpbSlotInfoKHR {
30940    #[inline]
30941    fn default() -> Self {
30942        Self {
30943            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
30944            next: ptr::null(),
30945            std_reference_info: ptr::null(),
30946        }
30947    }
30948}
30949
30950unsafe impl Send for VideoEncodeAV1DpbSlotInfoKHR {}
30951unsafe impl Sync for VideoEncodeAV1DpbSlotInfoKHR {}
30952
30953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
30954#[repr(C)]
30955#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30956pub struct VideoEncodeAV1FrameSizeKHR {
30957    pub intra_frame_size: u32,
30958    pub predictive_frame_size: u32,
30959    pub bipredictive_frame_size: u32,
30960}
30961
30962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
30963#[repr(C)]
30964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30965pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
30966    pub s_type: StructureType,
30967    pub next: *const c_void,
30968    pub use_gop_remaining_frames: Bool32,
30969    pub gop_remaining_intra: u32,
30970    pub gop_remaining_predictive: u32,
30971    pub gop_remaining_bipredictive: u32,
30972}
30973
30974impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
30975    #[inline]
30976    fn default() -> Self {
30977        Self {
30978            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
30979            next: ptr::null(),
30980            use_gop_remaining_frames: Bool32::default(),
30981            gop_remaining_intra: u32::default(),
30982            gop_remaining_predictive: u32::default(),
30983            gop_remaining_bipredictive: u32::default(),
30984        }
30985    }
30986}
30987
30988unsafe impl Send for VideoEncodeAV1GopRemainingFrameInfoKHR {}
30989unsafe impl Sync for VideoEncodeAV1GopRemainingFrameInfoKHR {}
30990
30991/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
30992#[repr(C)]
30993#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30994pub struct VideoEncodeAV1PictureInfoKHR {
30995    pub s_type: StructureType,
30996    pub next: *const c_void,
30997    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
30998    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
30999    pub constant_q_index: u32,
31000    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
31001    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
31002    pub primary_reference_cdf_only: Bool32,
31003    pub generate_obu_extension_header: Bool32,
31004}
31005
31006impl Default for VideoEncodeAV1PictureInfoKHR {
31007    #[inline]
31008    fn default() -> Self {
31009        Self {
31010            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
31011            next: ptr::null(),
31012            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
31013            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
31014            constant_q_index: u32::default(),
31015            std_picture_info: ptr::null(),
31016            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
31017            primary_reference_cdf_only: Bool32::default(),
31018            generate_obu_extension_header: Bool32::default(),
31019        }
31020    }
31021}
31022
31023unsafe impl Send for VideoEncodeAV1PictureInfoKHR {}
31024unsafe impl Sync for VideoEncodeAV1PictureInfoKHR {}
31025
31026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
31027#[repr(C)]
31028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31029pub struct VideoEncodeAV1ProfileInfoKHR {
31030    pub s_type: StructureType,
31031    pub next: *const c_void,
31032    pub std_profile: video::StdVideoAV1Profile,
31033}
31034
31035impl Default for VideoEncodeAV1ProfileInfoKHR {
31036    #[inline]
31037    fn default() -> Self {
31038        Self {
31039            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
31040            next: ptr::null(),
31041            std_profile: video::StdVideoAV1Profile::default(),
31042        }
31043    }
31044}
31045
31046unsafe impl Send for VideoEncodeAV1ProfileInfoKHR {}
31047unsafe impl Sync for VideoEncodeAV1ProfileInfoKHR {}
31048
31049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
31050#[repr(C)]
31051#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31052pub struct VideoEncodeAV1QIndexKHR {
31053    pub intra_q_index: u32,
31054    pub predictive_q_index: u32,
31055    pub bipredictive_q_index: u32,
31056}
31057
31058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
31059#[repr(C)]
31060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31061pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
31062    pub s_type: StructureType,
31063    pub next: *mut c_void,
31064    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
31065    pub preferred_gop_frame_count: u32,
31066    pub preferred_key_frame_period: u32,
31067    pub preferred_consecutive_bipredictive_frame_count: u32,
31068    pub preferred_temporal_layer_count: u32,
31069    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
31070    pub preferred_max_single_reference_count: u32,
31071    pub preferred_single_reference_name_mask: u32,
31072    pub preferred_max_unidirectional_compound_reference_count: u32,
31073    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
31074    pub preferred_unidirectional_compound_reference_name_mask: u32,
31075    pub preferred_max_bidirectional_compound_reference_count: u32,
31076    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
31077    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
31078    pub preferred_bidirectional_compound_reference_name_mask: u32,
31079}
31080
31081impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
31082    #[inline]
31083    fn default() -> Self {
31084        Self {
31085            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
31086            next: ptr::null_mut(),
31087            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
31088            preferred_gop_frame_count: u32::default(),
31089            preferred_key_frame_period: u32::default(),
31090            preferred_consecutive_bipredictive_frame_count: u32::default(),
31091            preferred_temporal_layer_count: u32::default(),
31092            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
31093            preferred_max_single_reference_count: u32::default(),
31094            preferred_single_reference_name_mask: u32::default(),
31095            preferred_max_unidirectional_compound_reference_count: u32::default(),
31096            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
31097            preferred_unidirectional_compound_reference_name_mask: u32::default(),
31098            preferred_max_bidirectional_compound_reference_count: u32::default(),
31099            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
31100            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
31101            preferred_bidirectional_compound_reference_name_mask: u32::default(),
31102        }
31103    }
31104}
31105
31106unsafe impl Send for VideoEncodeAV1QualityLevelPropertiesKHR {}
31107unsafe impl Sync for VideoEncodeAV1QualityLevelPropertiesKHR {}
31108
31109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
31110#[repr(C)]
31111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31112pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
31113    pub s_type: StructureType,
31114    pub next: *mut c_void,
31115    pub min_q_index_delta: i32,
31116    pub max_q_index_delta: i32,
31117}
31118
31119impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
31120    #[inline]
31121    fn default() -> Self {
31122        Self {
31123            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
31124            next: ptr::null_mut(),
31125            min_q_index_delta: i32::default(),
31126            max_q_index_delta: i32::default(),
31127        }
31128    }
31129}
31130
31131unsafe impl Send for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
31132unsafe impl Sync for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
31133
31134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
31135#[repr(C)]
31136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31137pub struct VideoEncodeAV1RateControlInfoKHR {
31138    pub s_type: StructureType,
31139    pub next: *const c_void,
31140    pub flags: VideoEncodeAV1RateControlFlagsKHR,
31141    pub gop_frame_count: u32,
31142    pub key_frame_period: u32,
31143    pub consecutive_bipredictive_frame_count: u32,
31144    pub temporal_layer_count: u32,
31145}
31146
31147impl Default for VideoEncodeAV1RateControlInfoKHR {
31148    #[inline]
31149    fn default() -> Self {
31150        Self {
31151            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
31152            next: ptr::null(),
31153            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
31154            gop_frame_count: u32::default(),
31155            key_frame_period: u32::default(),
31156            consecutive_bipredictive_frame_count: u32::default(),
31157            temporal_layer_count: u32::default(),
31158        }
31159    }
31160}
31161
31162unsafe impl Send for VideoEncodeAV1RateControlInfoKHR {}
31163unsafe impl Sync for VideoEncodeAV1RateControlInfoKHR {}
31164
31165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
31166#[repr(C)]
31167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31168pub struct VideoEncodeAV1RateControlLayerInfoKHR {
31169    pub s_type: StructureType,
31170    pub next: *const c_void,
31171    pub use_min_q_index: Bool32,
31172    pub min_q_index: VideoEncodeAV1QIndexKHR,
31173    pub use_max_q_index: Bool32,
31174    pub max_q_index: VideoEncodeAV1QIndexKHR,
31175    pub use_max_frame_size: Bool32,
31176    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
31177}
31178
31179impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
31180    #[inline]
31181    fn default() -> Self {
31182        Self {
31183            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
31184            next: ptr::null(),
31185            use_min_q_index: Bool32::default(),
31186            min_q_index: VideoEncodeAV1QIndexKHR::default(),
31187            use_max_q_index: Bool32::default(),
31188            max_q_index: VideoEncodeAV1QIndexKHR::default(),
31189            use_max_frame_size: Bool32::default(),
31190            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
31191        }
31192    }
31193}
31194
31195unsafe impl Send for VideoEncodeAV1RateControlLayerInfoKHR {}
31196unsafe impl Sync for VideoEncodeAV1RateControlLayerInfoKHR {}
31197
31198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
31199#[repr(C)]
31200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31201pub struct VideoEncodeAV1SessionCreateInfoKHR {
31202    pub s_type: StructureType,
31203    pub next: *const c_void,
31204    pub use_max_level: Bool32,
31205    pub max_level: video::StdVideoAV1Level,
31206}
31207
31208impl Default for VideoEncodeAV1SessionCreateInfoKHR {
31209    #[inline]
31210    fn default() -> Self {
31211        Self {
31212            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
31213            next: ptr::null(),
31214            use_max_level: Bool32::default(),
31215            max_level: video::StdVideoAV1Level::default(),
31216        }
31217    }
31218}
31219
31220unsafe impl Send for VideoEncodeAV1SessionCreateInfoKHR {}
31221unsafe impl Sync for VideoEncodeAV1SessionCreateInfoKHR {}
31222
31223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
31224#[repr(C)]
31225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31226pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
31227    pub s_type: StructureType,
31228    pub next: *const c_void,
31229    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
31230    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
31231    pub std_operating_point_count: u32,
31232    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
31233}
31234
31235impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
31236    #[inline]
31237    fn default() -> Self {
31238        Self {
31239            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
31240            next: ptr::null(),
31241            std_sequence_header: ptr::null(),
31242            std_decoder_model_info: ptr::null(),
31243            std_operating_point_count: u32::default(),
31244            std_operating_points: ptr::null(),
31245        }
31246    }
31247}
31248
31249unsafe impl Send for VideoEncodeAV1SessionParametersCreateInfoKHR {}
31250unsafe impl Sync for VideoEncodeAV1SessionParametersCreateInfoKHR {}
31251
31252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
31253#[repr(C)]
31254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31255pub struct VideoEncodeCapabilitiesKHR {
31256    pub s_type: StructureType,
31257    pub next: *mut c_void,
31258    pub flags: VideoEncodeCapabilityFlagsKHR,
31259    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
31260    pub max_rate_control_layers: u32,
31261    pub max_bitrate: u64,
31262    pub max_quality_levels: u32,
31263    pub encode_input_picture_granularity: Extent2D,
31264    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
31265}
31266
31267impl Default for VideoEncodeCapabilitiesKHR {
31268    #[inline]
31269    fn default() -> Self {
31270        Self {
31271            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
31272            next: ptr::null_mut(),
31273            flags: VideoEncodeCapabilityFlagsKHR::default(),
31274            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
31275            max_rate_control_layers: u32::default(),
31276            max_bitrate: u64::default(),
31277            max_quality_levels: u32::default(),
31278            encode_input_picture_granularity: Extent2D::default(),
31279            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
31280        }
31281    }
31282}
31283
31284unsafe impl Send for VideoEncodeCapabilitiesKHR {}
31285unsafe impl Sync for VideoEncodeCapabilitiesKHR {}
31286
31287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
31288#[repr(C)]
31289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31290pub struct VideoEncodeH264CapabilitiesKHR {
31291    pub s_type: StructureType,
31292    pub next: *mut c_void,
31293    pub flags: VideoEncodeH264CapabilityFlagsKHR,
31294    pub max_level_idc: video::StdVideoH264LevelIdc,
31295    pub max_slice_count: u32,
31296    pub max_p_picture_l0_reference_count: u32,
31297    pub max_b_picture_l0_reference_count: u32,
31298    pub max_l1_reference_count: u32,
31299    pub max_temporal_layer_count: u32,
31300    pub expect_dyadic_temporal_layer_pattern: Bool32,
31301    pub min_qp: i32,
31302    pub max_qp: i32,
31303    pub prefers_gop_remaining_frames: Bool32,
31304    pub requires_gop_remaining_frames: Bool32,
31305    pub std_syntax_flags: VideoEncodeH264StdFlagsKHR,
31306}
31307
31308impl Default for VideoEncodeH264CapabilitiesKHR {
31309    #[inline]
31310    fn default() -> Self {
31311        Self {
31312            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
31313            next: ptr::null_mut(),
31314            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
31315            max_level_idc: video::StdVideoH264LevelIdc::default(),
31316            max_slice_count: u32::default(),
31317            max_p_picture_l0_reference_count: u32::default(),
31318            max_b_picture_l0_reference_count: u32::default(),
31319            max_l1_reference_count: u32::default(),
31320            max_temporal_layer_count: u32::default(),
31321            expect_dyadic_temporal_layer_pattern: Bool32::default(),
31322            min_qp: i32::default(),
31323            max_qp: i32::default(),
31324            prefers_gop_remaining_frames: Bool32::default(),
31325            requires_gop_remaining_frames: Bool32::default(),
31326            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
31327        }
31328    }
31329}
31330
31331unsafe impl Send for VideoEncodeH264CapabilitiesKHR {}
31332unsafe impl Sync for VideoEncodeH264CapabilitiesKHR {}
31333
31334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
31335#[repr(C)]
31336#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31337pub struct VideoEncodeH264DpbSlotInfoKHR {
31338    pub s_type: StructureType,
31339    pub next: *const c_void,
31340    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
31341}
31342
31343impl Default for VideoEncodeH264DpbSlotInfoKHR {
31344    #[inline]
31345    fn default() -> Self {
31346        Self {
31347            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
31348            next: ptr::null(),
31349            std_reference_info: ptr::null(),
31350        }
31351    }
31352}
31353
31354unsafe impl Send for VideoEncodeH264DpbSlotInfoKHR {}
31355unsafe impl Sync for VideoEncodeH264DpbSlotInfoKHR {}
31356
31357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
31358#[repr(C)]
31359#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31360pub struct VideoEncodeH264FrameSizeKHR {
31361    pub frame_i_size: u32,
31362    pub frame_p_size: u32,
31363    pub frame_b_size: u32,
31364}
31365
31366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
31367#[repr(C)]
31368#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31369pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
31370    pub s_type: StructureType,
31371    pub next: *const c_void,
31372    pub use_gop_remaining_frames: Bool32,
31373    pub gop_remaining_i: u32,
31374    pub gop_remaining_p: u32,
31375    pub gop_remaining_b: u32,
31376}
31377
31378impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
31379    #[inline]
31380    fn default() -> Self {
31381        Self {
31382            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
31383            next: ptr::null(),
31384            use_gop_remaining_frames: Bool32::default(),
31385            gop_remaining_i: u32::default(),
31386            gop_remaining_p: u32::default(),
31387            gop_remaining_b: u32::default(),
31388        }
31389    }
31390}
31391
31392unsafe impl Send for VideoEncodeH264GopRemainingFrameInfoKHR {}
31393unsafe impl Sync for VideoEncodeH264GopRemainingFrameInfoKHR {}
31394
31395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
31396#[repr(C)]
31397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31398pub struct VideoEncodeH264NaluSliceInfoKHR {
31399    pub s_type: StructureType,
31400    pub next: *const c_void,
31401    pub constant_qp: i32,
31402    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
31403}
31404
31405impl Default for VideoEncodeH264NaluSliceInfoKHR {
31406    #[inline]
31407    fn default() -> Self {
31408        Self {
31409            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
31410            next: ptr::null(),
31411            constant_qp: i32::default(),
31412            std_slice_header: ptr::null(),
31413        }
31414    }
31415}
31416
31417unsafe impl Send for VideoEncodeH264NaluSliceInfoKHR {}
31418unsafe impl Sync for VideoEncodeH264NaluSliceInfoKHR {}
31419
31420/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
31421#[repr(C)]
31422#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31423pub struct VideoEncodeH264PictureInfoKHR {
31424    pub s_type: StructureType,
31425    pub next: *const c_void,
31426    pub nalu_slice_entry_count: u32,
31427    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
31428    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
31429    pub generate_prefix_nalu: Bool32,
31430}
31431
31432impl Default for VideoEncodeH264PictureInfoKHR {
31433    #[inline]
31434    fn default() -> Self {
31435        Self {
31436            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
31437            next: ptr::null(),
31438            nalu_slice_entry_count: u32::default(),
31439            nalu_slice_entries: ptr::null(),
31440            std_picture_info: ptr::null(),
31441            generate_prefix_nalu: Bool32::default(),
31442        }
31443    }
31444}
31445
31446unsafe impl Send for VideoEncodeH264PictureInfoKHR {}
31447unsafe impl Sync for VideoEncodeH264PictureInfoKHR {}
31448
31449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
31450#[repr(C)]
31451#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31452pub struct VideoEncodeH264ProfileInfoKHR {
31453    pub s_type: StructureType,
31454    pub next: *const c_void,
31455    pub std_profile_idc: video::StdVideoH264ProfileIdc,
31456}
31457
31458impl Default for VideoEncodeH264ProfileInfoKHR {
31459    #[inline]
31460    fn default() -> Self {
31461        Self {
31462            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
31463            next: ptr::null(),
31464            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
31465        }
31466    }
31467}
31468
31469unsafe impl Send for VideoEncodeH264ProfileInfoKHR {}
31470unsafe impl Sync for VideoEncodeH264ProfileInfoKHR {}
31471
31472/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
31473#[repr(C)]
31474#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31475pub struct VideoEncodeH264QpKHR {
31476    pub qp_i: i32,
31477    pub qp_p: i32,
31478    pub qp_b: i32,
31479}
31480
31481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
31482#[repr(C)]
31483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31484pub struct VideoEncodeH264QualityLevelPropertiesKHR {
31485    pub s_type: StructureType,
31486    pub next: *mut c_void,
31487    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
31488    pub preferred_gop_frame_count: u32,
31489    pub preferred_idr_period: u32,
31490    pub preferred_consecutive_b_frame_count: u32,
31491    pub preferred_temporal_layer_count: u32,
31492    pub preferred_constant_qp: VideoEncodeH264QpKHR,
31493    pub preferred_max_l0_reference_count: u32,
31494    pub preferred_max_l1_reference_count: u32,
31495    pub preferred_std_entropy_coding_mode_flag: Bool32,
31496}
31497
31498impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
31499    #[inline]
31500    fn default() -> Self {
31501        Self {
31502            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
31503            next: ptr::null_mut(),
31504            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
31505            preferred_gop_frame_count: u32::default(),
31506            preferred_idr_period: u32::default(),
31507            preferred_consecutive_b_frame_count: u32::default(),
31508            preferred_temporal_layer_count: u32::default(),
31509            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
31510            preferred_max_l0_reference_count: u32::default(),
31511            preferred_max_l1_reference_count: u32::default(),
31512            preferred_std_entropy_coding_mode_flag: Bool32::default(),
31513        }
31514    }
31515}
31516
31517unsafe impl Send for VideoEncodeH264QualityLevelPropertiesKHR {}
31518unsafe impl Sync for VideoEncodeH264QualityLevelPropertiesKHR {}
31519
31520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
31521#[repr(C)]
31522#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31523pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
31524    pub s_type: StructureType,
31525    pub next: *mut c_void,
31526    pub min_qp_delta: i32,
31527    pub max_qp_delta: i32,
31528}
31529
31530impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
31531    #[inline]
31532    fn default() -> Self {
31533        Self {
31534            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
31535            next: ptr::null_mut(),
31536            min_qp_delta: i32::default(),
31537            max_qp_delta: i32::default(),
31538        }
31539    }
31540}
31541
31542unsafe impl Send for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
31543unsafe impl Sync for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
31544
31545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
31546#[repr(C)]
31547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31548pub struct VideoEncodeH264RateControlInfoKHR {
31549    pub s_type: StructureType,
31550    pub next: *const c_void,
31551    pub flags: VideoEncodeH264RateControlFlagsKHR,
31552    pub gop_frame_count: u32,
31553    pub idr_period: u32,
31554    pub consecutive_b_frame_count: u32,
31555    pub temporal_layer_count: u32,
31556}
31557
31558impl Default for VideoEncodeH264RateControlInfoKHR {
31559    #[inline]
31560    fn default() -> Self {
31561        Self {
31562            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
31563            next: ptr::null(),
31564            flags: VideoEncodeH264RateControlFlagsKHR::default(),
31565            gop_frame_count: u32::default(),
31566            idr_period: u32::default(),
31567            consecutive_b_frame_count: u32::default(),
31568            temporal_layer_count: u32::default(),
31569        }
31570    }
31571}
31572
31573unsafe impl Send for VideoEncodeH264RateControlInfoKHR {}
31574unsafe impl Sync for VideoEncodeH264RateControlInfoKHR {}
31575
31576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
31577#[repr(C)]
31578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31579pub struct VideoEncodeH264RateControlLayerInfoKHR {
31580    pub s_type: StructureType,
31581    pub next: *const c_void,
31582    pub use_min_qp: Bool32,
31583    pub min_qp: VideoEncodeH264QpKHR,
31584    pub use_max_qp: Bool32,
31585    pub max_qp: VideoEncodeH264QpKHR,
31586    pub use_max_frame_size: Bool32,
31587    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
31588}
31589
31590impl Default for VideoEncodeH264RateControlLayerInfoKHR {
31591    #[inline]
31592    fn default() -> Self {
31593        Self {
31594            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
31595            next: ptr::null(),
31596            use_min_qp: Bool32::default(),
31597            min_qp: VideoEncodeH264QpKHR::default(),
31598            use_max_qp: Bool32::default(),
31599            max_qp: VideoEncodeH264QpKHR::default(),
31600            use_max_frame_size: Bool32::default(),
31601            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
31602        }
31603    }
31604}
31605
31606unsafe impl Send for VideoEncodeH264RateControlLayerInfoKHR {}
31607unsafe impl Sync for VideoEncodeH264RateControlLayerInfoKHR {}
31608
31609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
31610#[repr(C)]
31611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31612pub struct VideoEncodeH264SessionCreateInfoKHR {
31613    pub s_type: StructureType,
31614    pub next: *const c_void,
31615    pub use_max_level_idc: Bool32,
31616    pub max_level_idc: video::StdVideoH264LevelIdc,
31617}
31618
31619impl Default for VideoEncodeH264SessionCreateInfoKHR {
31620    #[inline]
31621    fn default() -> Self {
31622        Self {
31623            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
31624            next: ptr::null(),
31625            use_max_level_idc: Bool32::default(),
31626            max_level_idc: video::StdVideoH264LevelIdc::default(),
31627        }
31628    }
31629}
31630
31631unsafe impl Send for VideoEncodeH264SessionCreateInfoKHR {}
31632unsafe impl Sync for VideoEncodeH264SessionCreateInfoKHR {}
31633
31634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
31635#[repr(C)]
31636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31637pub struct VideoEncodeH264SessionParametersAddInfoKHR {
31638    pub s_type: StructureType,
31639    pub next: *const c_void,
31640    pub std_sps_count: u32,
31641    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
31642    pub std_pps_count: u32,
31643    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
31644}
31645
31646impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
31647    #[inline]
31648    fn default() -> Self {
31649        Self {
31650            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
31651            next: ptr::null(),
31652            std_sps_count: u32::default(),
31653            std_sp_ss: ptr::null(),
31654            std_pps_count: u32::default(),
31655            std_pp_ss: ptr::null(),
31656        }
31657    }
31658}
31659
31660unsafe impl Send for VideoEncodeH264SessionParametersAddInfoKHR {}
31661unsafe impl Sync for VideoEncodeH264SessionParametersAddInfoKHR {}
31662
31663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
31664#[repr(C)]
31665#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31666pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
31667    pub s_type: StructureType,
31668    pub next: *const c_void,
31669    pub max_std_sps_count: u32,
31670    pub max_std_pps_count: u32,
31671    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
31672}
31673
31674impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
31675    #[inline]
31676    fn default() -> Self {
31677        Self {
31678            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
31679            next: ptr::null(),
31680            max_std_sps_count: u32::default(),
31681            max_std_pps_count: u32::default(),
31682            parameters_add_info: ptr::null(),
31683        }
31684    }
31685}
31686
31687unsafe impl Send for VideoEncodeH264SessionParametersCreateInfoKHR {}
31688unsafe impl Sync for VideoEncodeH264SessionParametersCreateInfoKHR {}
31689
31690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
31691#[repr(C)]
31692#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31693pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
31694    pub s_type: StructureType,
31695    pub next: *mut c_void,
31696    pub has_std_sps_overrides: Bool32,
31697    pub has_std_pps_overrides: Bool32,
31698}
31699
31700impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
31701    #[inline]
31702    fn default() -> Self {
31703        Self {
31704            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
31705            next: ptr::null_mut(),
31706            has_std_sps_overrides: Bool32::default(),
31707            has_std_pps_overrides: Bool32::default(),
31708        }
31709    }
31710}
31711
31712unsafe impl Send for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
31713unsafe impl Sync for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
31714
31715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
31716#[repr(C)]
31717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31718pub struct VideoEncodeH264SessionParametersGetInfoKHR {
31719    pub s_type: StructureType,
31720    pub next: *const c_void,
31721    pub write_std_sps: Bool32,
31722    pub write_std_pps: Bool32,
31723    pub std_sps_id: u32,
31724    pub std_pps_id: u32,
31725}
31726
31727impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
31728    #[inline]
31729    fn default() -> Self {
31730        Self {
31731            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
31732            next: ptr::null(),
31733            write_std_sps: Bool32::default(),
31734            write_std_pps: Bool32::default(),
31735            std_sps_id: u32::default(),
31736            std_pps_id: u32::default(),
31737        }
31738    }
31739}
31740
31741unsafe impl Send for VideoEncodeH264SessionParametersGetInfoKHR {}
31742unsafe impl Sync for VideoEncodeH264SessionParametersGetInfoKHR {}
31743
31744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
31745#[repr(C)]
31746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31747pub struct VideoEncodeH265CapabilitiesKHR {
31748    pub s_type: StructureType,
31749    pub next: *mut c_void,
31750    pub flags: VideoEncodeH265CapabilityFlagsKHR,
31751    pub max_level_idc: video::StdVideoH265LevelIdc,
31752    pub max_slice_segment_count: u32,
31753    pub max_tiles: Extent2D,
31754    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
31755    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
31756    pub max_p_picture_l0_reference_count: u32,
31757    pub max_b_picture_l0_reference_count: u32,
31758    pub max_l1_reference_count: u32,
31759    pub max_sub_layer_count: u32,
31760    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
31761    pub min_qp: i32,
31762    pub max_qp: i32,
31763    pub prefers_gop_remaining_frames: Bool32,
31764    pub requires_gop_remaining_frames: Bool32,
31765    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
31766}
31767
31768impl Default for VideoEncodeH265CapabilitiesKHR {
31769    #[inline]
31770    fn default() -> Self {
31771        Self {
31772            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
31773            next: ptr::null_mut(),
31774            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
31775            max_level_idc: video::StdVideoH265LevelIdc::default(),
31776            max_slice_segment_count: u32::default(),
31777            max_tiles: Extent2D::default(),
31778            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
31779            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
31780            max_p_picture_l0_reference_count: u32::default(),
31781            max_b_picture_l0_reference_count: u32::default(),
31782            max_l1_reference_count: u32::default(),
31783            max_sub_layer_count: u32::default(),
31784            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
31785            min_qp: i32::default(),
31786            max_qp: i32::default(),
31787            prefers_gop_remaining_frames: Bool32::default(),
31788            requires_gop_remaining_frames: Bool32::default(),
31789            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
31790        }
31791    }
31792}
31793
31794unsafe impl Send for VideoEncodeH265CapabilitiesKHR {}
31795unsafe impl Sync for VideoEncodeH265CapabilitiesKHR {}
31796
31797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
31798#[repr(C)]
31799#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31800pub struct VideoEncodeH265DpbSlotInfoKHR {
31801    pub s_type: StructureType,
31802    pub next: *const c_void,
31803    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
31804}
31805
31806impl Default for VideoEncodeH265DpbSlotInfoKHR {
31807    #[inline]
31808    fn default() -> Self {
31809        Self {
31810            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
31811            next: ptr::null(),
31812            std_reference_info: ptr::null(),
31813        }
31814    }
31815}
31816
31817unsafe impl Send for VideoEncodeH265DpbSlotInfoKHR {}
31818unsafe impl Sync for VideoEncodeH265DpbSlotInfoKHR {}
31819
31820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
31821#[repr(C)]
31822#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31823pub struct VideoEncodeH265FrameSizeKHR {
31824    pub frame_i_size: u32,
31825    pub frame_p_size: u32,
31826    pub frame_b_size: u32,
31827}
31828
31829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
31830#[repr(C)]
31831#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31832pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
31833    pub s_type: StructureType,
31834    pub next: *const c_void,
31835    pub use_gop_remaining_frames: Bool32,
31836    pub gop_remaining_i: u32,
31837    pub gop_remaining_p: u32,
31838    pub gop_remaining_b: u32,
31839}
31840
31841impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
31842    #[inline]
31843    fn default() -> Self {
31844        Self {
31845            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
31846            next: ptr::null(),
31847            use_gop_remaining_frames: Bool32::default(),
31848            gop_remaining_i: u32::default(),
31849            gop_remaining_p: u32::default(),
31850            gop_remaining_b: u32::default(),
31851        }
31852    }
31853}
31854
31855unsafe impl Send for VideoEncodeH265GopRemainingFrameInfoKHR {}
31856unsafe impl Sync for VideoEncodeH265GopRemainingFrameInfoKHR {}
31857
31858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
31859#[repr(C)]
31860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31861pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
31862    pub s_type: StructureType,
31863    pub next: *const c_void,
31864    pub constant_qp: i32,
31865    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
31866}
31867
31868impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
31869    #[inline]
31870    fn default() -> Self {
31871        Self {
31872            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
31873            next: ptr::null(),
31874            constant_qp: i32::default(),
31875            std_slice_segment_header: ptr::null(),
31876        }
31877    }
31878}
31879
31880unsafe impl Send for VideoEncodeH265NaluSliceSegmentInfoKHR {}
31881unsafe impl Sync for VideoEncodeH265NaluSliceSegmentInfoKHR {}
31882
31883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
31884#[repr(C)]
31885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31886pub struct VideoEncodeH265PictureInfoKHR {
31887    pub s_type: StructureType,
31888    pub next: *const c_void,
31889    pub nalu_slice_segment_entry_count: u32,
31890    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
31891    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
31892}
31893
31894impl Default for VideoEncodeH265PictureInfoKHR {
31895    #[inline]
31896    fn default() -> Self {
31897        Self {
31898            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
31899            next: ptr::null(),
31900            nalu_slice_segment_entry_count: u32::default(),
31901            nalu_slice_segment_entries: ptr::null(),
31902            std_picture_info: ptr::null(),
31903        }
31904    }
31905}
31906
31907unsafe impl Send for VideoEncodeH265PictureInfoKHR {}
31908unsafe impl Sync for VideoEncodeH265PictureInfoKHR {}
31909
31910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
31911#[repr(C)]
31912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31913pub struct VideoEncodeH265ProfileInfoKHR {
31914    pub s_type: StructureType,
31915    pub next: *const c_void,
31916    pub std_profile_idc: video::StdVideoH265ProfileIdc,
31917}
31918
31919impl Default for VideoEncodeH265ProfileInfoKHR {
31920    #[inline]
31921    fn default() -> Self {
31922        Self {
31923            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
31924            next: ptr::null(),
31925            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
31926        }
31927    }
31928}
31929
31930unsafe impl Send for VideoEncodeH265ProfileInfoKHR {}
31931unsafe impl Sync for VideoEncodeH265ProfileInfoKHR {}
31932
31933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
31934#[repr(C)]
31935#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31936pub struct VideoEncodeH265QpKHR {
31937    pub qp_i: i32,
31938    pub qp_p: i32,
31939    pub qp_b: i32,
31940}
31941
31942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
31943#[repr(C)]
31944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31945pub struct VideoEncodeH265QualityLevelPropertiesKHR {
31946    pub s_type: StructureType,
31947    pub next: *mut c_void,
31948    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
31949    pub preferred_gop_frame_count: u32,
31950    pub preferred_idr_period: u32,
31951    pub preferred_consecutive_b_frame_count: u32,
31952    pub preferred_sub_layer_count: u32,
31953    pub preferred_constant_qp: VideoEncodeH265QpKHR,
31954    pub preferred_max_l0_reference_count: u32,
31955    pub preferred_max_l1_reference_count: u32,
31956}
31957
31958impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
31959    #[inline]
31960    fn default() -> Self {
31961        Self {
31962            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
31963            next: ptr::null_mut(),
31964            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
31965            preferred_gop_frame_count: u32::default(),
31966            preferred_idr_period: u32::default(),
31967            preferred_consecutive_b_frame_count: u32::default(),
31968            preferred_sub_layer_count: u32::default(),
31969            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
31970            preferred_max_l0_reference_count: u32::default(),
31971            preferred_max_l1_reference_count: u32::default(),
31972        }
31973    }
31974}
31975
31976unsafe impl Send for VideoEncodeH265QualityLevelPropertiesKHR {}
31977unsafe impl Sync for VideoEncodeH265QualityLevelPropertiesKHR {}
31978
31979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
31980#[repr(C)]
31981#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31982pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
31983    pub s_type: StructureType,
31984    pub next: *mut c_void,
31985    pub min_qp_delta: i32,
31986    pub max_qp_delta: i32,
31987}
31988
31989impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
31990    #[inline]
31991    fn default() -> Self {
31992        Self {
31993            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
31994            next: ptr::null_mut(),
31995            min_qp_delta: i32::default(),
31996            max_qp_delta: i32::default(),
31997        }
31998    }
31999}
32000
32001unsafe impl Send for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
32002unsafe impl Sync for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
32003
32004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
32005#[repr(C)]
32006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32007pub struct VideoEncodeH265RateControlInfoKHR {
32008    pub s_type: StructureType,
32009    pub next: *const c_void,
32010    pub flags: VideoEncodeH265RateControlFlagsKHR,
32011    pub gop_frame_count: u32,
32012    pub idr_period: u32,
32013    pub consecutive_b_frame_count: u32,
32014    pub sub_layer_count: u32,
32015}
32016
32017impl Default for VideoEncodeH265RateControlInfoKHR {
32018    #[inline]
32019    fn default() -> Self {
32020        Self {
32021            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
32022            next: ptr::null(),
32023            flags: VideoEncodeH265RateControlFlagsKHR::default(),
32024            gop_frame_count: u32::default(),
32025            idr_period: u32::default(),
32026            consecutive_b_frame_count: u32::default(),
32027            sub_layer_count: u32::default(),
32028        }
32029    }
32030}
32031
32032unsafe impl Send for VideoEncodeH265RateControlInfoKHR {}
32033unsafe impl Sync for VideoEncodeH265RateControlInfoKHR {}
32034
32035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
32036#[repr(C)]
32037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32038pub struct VideoEncodeH265RateControlLayerInfoKHR {
32039    pub s_type: StructureType,
32040    pub next: *const c_void,
32041    pub use_min_qp: Bool32,
32042    pub min_qp: VideoEncodeH265QpKHR,
32043    pub use_max_qp: Bool32,
32044    pub max_qp: VideoEncodeH265QpKHR,
32045    pub use_max_frame_size: Bool32,
32046    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
32047}
32048
32049impl Default for VideoEncodeH265RateControlLayerInfoKHR {
32050    #[inline]
32051    fn default() -> Self {
32052        Self {
32053            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
32054            next: ptr::null(),
32055            use_min_qp: Bool32::default(),
32056            min_qp: VideoEncodeH265QpKHR::default(),
32057            use_max_qp: Bool32::default(),
32058            max_qp: VideoEncodeH265QpKHR::default(),
32059            use_max_frame_size: Bool32::default(),
32060            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
32061        }
32062    }
32063}
32064
32065unsafe impl Send for VideoEncodeH265RateControlLayerInfoKHR {}
32066unsafe impl Sync for VideoEncodeH265RateControlLayerInfoKHR {}
32067
32068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
32069#[repr(C)]
32070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32071pub struct VideoEncodeH265SessionCreateInfoKHR {
32072    pub s_type: StructureType,
32073    pub next: *const c_void,
32074    pub use_max_level_idc: Bool32,
32075    pub max_level_idc: video::StdVideoH265LevelIdc,
32076}
32077
32078impl Default for VideoEncodeH265SessionCreateInfoKHR {
32079    #[inline]
32080    fn default() -> Self {
32081        Self {
32082            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
32083            next: ptr::null(),
32084            use_max_level_idc: Bool32::default(),
32085            max_level_idc: video::StdVideoH265LevelIdc::default(),
32086        }
32087    }
32088}
32089
32090unsafe impl Send for VideoEncodeH265SessionCreateInfoKHR {}
32091unsafe impl Sync for VideoEncodeH265SessionCreateInfoKHR {}
32092
32093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
32094#[repr(C)]
32095#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32096pub struct VideoEncodeH265SessionParametersAddInfoKHR {
32097    pub s_type: StructureType,
32098    pub next: *const c_void,
32099    pub std_vps_count: u32,
32100    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
32101    pub std_sps_count: u32,
32102    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
32103    pub std_pps_count: u32,
32104    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
32105}
32106
32107impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
32108    #[inline]
32109    fn default() -> Self {
32110        Self {
32111            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
32112            next: ptr::null(),
32113            std_vps_count: u32::default(),
32114            std_vp_ss: ptr::null(),
32115            std_sps_count: u32::default(),
32116            std_sp_ss: ptr::null(),
32117            std_pps_count: u32::default(),
32118            std_pp_ss: ptr::null(),
32119        }
32120    }
32121}
32122
32123unsafe impl Send for VideoEncodeH265SessionParametersAddInfoKHR {}
32124unsafe impl Sync for VideoEncodeH265SessionParametersAddInfoKHR {}
32125
32126/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
32127#[repr(C)]
32128#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32129pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
32130    pub s_type: StructureType,
32131    pub next: *const c_void,
32132    pub max_std_vps_count: u32,
32133    pub max_std_sps_count: u32,
32134    pub max_std_pps_count: u32,
32135    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
32136}
32137
32138impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
32139    #[inline]
32140    fn default() -> Self {
32141        Self {
32142            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
32143            next: ptr::null(),
32144            max_std_vps_count: u32::default(),
32145            max_std_sps_count: u32::default(),
32146            max_std_pps_count: u32::default(),
32147            parameters_add_info: ptr::null(),
32148        }
32149    }
32150}
32151
32152unsafe impl Send for VideoEncodeH265SessionParametersCreateInfoKHR {}
32153unsafe impl Sync for VideoEncodeH265SessionParametersCreateInfoKHR {}
32154
32155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
32156#[repr(C)]
32157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32158pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
32159    pub s_type: StructureType,
32160    pub next: *mut c_void,
32161    pub has_std_vps_overrides: Bool32,
32162    pub has_std_sps_overrides: Bool32,
32163    pub has_std_pps_overrides: Bool32,
32164}
32165
32166impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
32167    #[inline]
32168    fn default() -> Self {
32169        Self {
32170            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32171            next: ptr::null_mut(),
32172            has_std_vps_overrides: Bool32::default(),
32173            has_std_sps_overrides: Bool32::default(),
32174            has_std_pps_overrides: Bool32::default(),
32175        }
32176    }
32177}
32178
32179unsafe impl Send for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
32180unsafe impl Sync for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
32181
32182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
32183#[repr(C)]
32184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32185pub struct VideoEncodeH265SessionParametersGetInfoKHR {
32186    pub s_type: StructureType,
32187    pub next: *const c_void,
32188    pub write_std_vps: Bool32,
32189    pub write_std_sps: Bool32,
32190    pub write_std_pps: Bool32,
32191    pub std_vps_id: u32,
32192    pub std_sps_id: u32,
32193    pub std_pps_id: u32,
32194}
32195
32196impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
32197    #[inline]
32198    fn default() -> Self {
32199        Self {
32200            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
32201            next: ptr::null(),
32202            write_std_vps: Bool32::default(),
32203            write_std_sps: Bool32::default(),
32204            write_std_pps: Bool32::default(),
32205            std_vps_id: u32::default(),
32206            std_sps_id: u32::default(),
32207            std_pps_id: u32::default(),
32208        }
32209    }
32210}
32211
32212unsafe impl Send for VideoEncodeH265SessionParametersGetInfoKHR {}
32213unsafe impl Sync for VideoEncodeH265SessionParametersGetInfoKHR {}
32214
32215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
32216#[repr(C)]
32217#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32218pub struct VideoEncodeInfoKHR {
32219    pub s_type: StructureType,
32220    pub next: *const c_void,
32221    pub flags: VideoEncodeFlagsKHR,
32222    pub dst_buffer: Buffer,
32223    pub dst_buffer_offset: DeviceSize,
32224    pub dst_buffer_range: DeviceSize,
32225    pub src_picture_resource: VideoPictureResourceInfoKHR,
32226    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
32227    pub reference_slot_count: u32,
32228    pub reference_slots: *const VideoReferenceSlotInfoKHR,
32229    pub preceding_externally_encoded_bytes: u32,
32230}
32231
32232impl Default for VideoEncodeInfoKHR {
32233    #[inline]
32234    fn default() -> Self {
32235        Self {
32236            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
32237            next: ptr::null(),
32238            flags: VideoEncodeFlagsKHR::default(),
32239            dst_buffer: Buffer::default(),
32240            dst_buffer_offset: DeviceSize::default(),
32241            dst_buffer_range: DeviceSize::default(),
32242            src_picture_resource: VideoPictureResourceInfoKHR::default(),
32243            setup_reference_slot: ptr::null(),
32244            reference_slot_count: u32::default(),
32245            reference_slots: ptr::null(),
32246            preceding_externally_encoded_bytes: u32::default(),
32247        }
32248    }
32249}
32250
32251unsafe impl Send for VideoEncodeInfoKHR {}
32252unsafe impl Sync for VideoEncodeInfoKHR {}
32253
32254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html>
32255#[repr(C)]
32256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32257pub struct VideoEncodeIntraRefreshCapabilitiesKHR {
32258    pub s_type: StructureType,
32259    pub next: *mut c_void,
32260    pub intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR,
32261    pub max_intra_refresh_cycle_duration: u32,
32262    pub max_intra_refresh_active_reference_pictures: u32,
32263    pub partition_independent_intra_refresh_regions: Bool32,
32264    pub non_rectangular_intra_refresh_regions: Bool32,
32265}
32266
32267impl Default for VideoEncodeIntraRefreshCapabilitiesKHR {
32268    #[inline]
32269    fn default() -> Self {
32270        Self {
32271            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR,
32272            next: ptr::null_mut(),
32273            intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR::default(),
32274            max_intra_refresh_cycle_duration: u32::default(),
32275            max_intra_refresh_active_reference_pictures: u32::default(),
32276            partition_independent_intra_refresh_regions: Bool32::default(),
32277            non_rectangular_intra_refresh_regions: Bool32::default(),
32278        }
32279    }
32280}
32281
32282unsafe impl Send for VideoEncodeIntraRefreshCapabilitiesKHR {}
32283unsafe impl Sync for VideoEncodeIntraRefreshCapabilitiesKHR {}
32284
32285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html>
32286#[repr(C)]
32287#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32288pub struct VideoEncodeIntraRefreshInfoKHR {
32289    pub s_type: StructureType,
32290    pub next: *const c_void,
32291    pub intra_refresh_cycle_duration: u32,
32292    pub intra_refresh_index: u32,
32293}
32294
32295impl Default for VideoEncodeIntraRefreshInfoKHR {
32296    #[inline]
32297    fn default() -> Self {
32298        Self {
32299            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR,
32300            next: ptr::null(),
32301            intra_refresh_cycle_duration: u32::default(),
32302            intra_refresh_index: u32::default(),
32303        }
32304    }
32305}
32306
32307unsafe impl Send for VideoEncodeIntraRefreshInfoKHR {}
32308unsafe impl Sync for VideoEncodeIntraRefreshInfoKHR {}
32309
32310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeProfileRgbConversionInfoVALVE.html>
32311#[repr(C)]
32312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32313pub struct VideoEncodeProfileRgbConversionInfoVALVE {
32314    pub s_type: StructureType,
32315    pub next: *const c_void,
32316    pub perform_encode_rgb_conversion: Bool32,
32317}
32318
32319impl Default for VideoEncodeProfileRgbConversionInfoVALVE {
32320    #[inline]
32321    fn default() -> Self {
32322        Self {
32323            s_type: StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE,
32324            next: ptr::null(),
32325            perform_encode_rgb_conversion: Bool32::default(),
32326        }
32327    }
32328}
32329
32330unsafe impl Send for VideoEncodeProfileRgbConversionInfoVALVE {}
32331unsafe impl Sync for VideoEncodeProfileRgbConversionInfoVALVE {}
32332
32333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
32334#[repr(C)]
32335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32336pub struct VideoEncodeQualityLevelInfoKHR {
32337    pub s_type: StructureType,
32338    pub next: *const c_void,
32339    pub quality_level: u32,
32340}
32341
32342impl Default for VideoEncodeQualityLevelInfoKHR {
32343    #[inline]
32344    fn default() -> Self {
32345        Self {
32346            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
32347            next: ptr::null(),
32348            quality_level: u32::default(),
32349        }
32350    }
32351}
32352
32353unsafe impl Send for VideoEncodeQualityLevelInfoKHR {}
32354unsafe impl Sync for VideoEncodeQualityLevelInfoKHR {}
32355
32356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
32357#[repr(C)]
32358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32359pub struct VideoEncodeQualityLevelPropertiesKHR {
32360    pub s_type: StructureType,
32361    pub next: *mut c_void,
32362    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
32363    pub preferred_rate_control_layer_count: u32,
32364}
32365
32366impl Default for VideoEncodeQualityLevelPropertiesKHR {
32367    #[inline]
32368    fn default() -> Self {
32369        Self {
32370            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
32371            next: ptr::null_mut(),
32372            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
32373            preferred_rate_control_layer_count: u32::default(),
32374        }
32375    }
32376}
32377
32378unsafe impl Send for VideoEncodeQualityLevelPropertiesKHR {}
32379unsafe impl Sync for VideoEncodeQualityLevelPropertiesKHR {}
32380
32381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
32382#[repr(C)]
32383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32384pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
32385    pub s_type: StructureType,
32386    pub next: *mut c_void,
32387    pub max_quantization_map_extent: Extent2D,
32388}
32389
32390impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
32391    #[inline]
32392    fn default() -> Self {
32393        Self {
32394            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
32395            next: ptr::null_mut(),
32396            max_quantization_map_extent: Extent2D::default(),
32397        }
32398    }
32399}
32400
32401unsafe impl Send for VideoEncodeQuantizationMapCapabilitiesKHR {}
32402unsafe impl Sync for VideoEncodeQuantizationMapCapabilitiesKHR {}
32403
32404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
32405#[repr(C)]
32406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32407pub struct VideoEncodeQuantizationMapInfoKHR {
32408    pub s_type: StructureType,
32409    pub next: *const c_void,
32410    pub quantization_map: ImageView,
32411    pub quantization_map_extent: Extent2D,
32412}
32413
32414impl Default for VideoEncodeQuantizationMapInfoKHR {
32415    #[inline]
32416    fn default() -> Self {
32417        Self {
32418            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
32419            next: ptr::null(),
32420            quantization_map: ImageView::default(),
32421            quantization_map_extent: Extent2D::default(),
32422        }
32423    }
32424}
32425
32426unsafe impl Send for VideoEncodeQuantizationMapInfoKHR {}
32427unsafe impl Sync for VideoEncodeQuantizationMapInfoKHR {}
32428
32429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
32430#[repr(C)]
32431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32432pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
32433    pub s_type: StructureType,
32434    pub next: *const c_void,
32435    pub quantization_map_texel_size: Extent2D,
32436}
32437
32438impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
32439    #[inline]
32440    fn default() -> Self {
32441        Self {
32442            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
32443            next: ptr::null(),
32444            quantization_map_texel_size: Extent2D::default(),
32445        }
32446    }
32447}
32448
32449unsafe impl Send for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
32450unsafe impl Sync for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
32451
32452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
32453#[repr(C)]
32454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32455pub struct VideoEncodeRateControlInfoKHR {
32456    pub s_type: StructureType,
32457    pub next: *const c_void,
32458    pub flags: VideoEncodeRateControlFlagsKHR,
32459    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
32460    pub layer_count: u32,
32461    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
32462    pub virtual_buffer_size_in_ms: u32,
32463    pub initial_virtual_buffer_size_in_ms: u32,
32464}
32465
32466impl Default for VideoEncodeRateControlInfoKHR {
32467    #[inline]
32468    fn default() -> Self {
32469        Self {
32470            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
32471            next: ptr::null(),
32472            flags: VideoEncodeRateControlFlagsKHR::default(),
32473            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
32474            layer_count: u32::default(),
32475            layers: ptr::null(),
32476            virtual_buffer_size_in_ms: u32::default(),
32477            initial_virtual_buffer_size_in_ms: u32::default(),
32478        }
32479    }
32480}
32481
32482unsafe impl Send for VideoEncodeRateControlInfoKHR {}
32483unsafe impl Sync for VideoEncodeRateControlInfoKHR {}
32484
32485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
32486#[repr(C)]
32487#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32488pub struct VideoEncodeRateControlLayerInfoKHR {
32489    pub s_type: StructureType,
32490    pub next: *const c_void,
32491    pub average_bitrate: u64,
32492    pub max_bitrate: u64,
32493    pub frame_rate_numerator: u32,
32494    pub frame_rate_denominator: u32,
32495}
32496
32497impl Default for VideoEncodeRateControlLayerInfoKHR {
32498    #[inline]
32499    fn default() -> Self {
32500        Self {
32501            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
32502            next: ptr::null(),
32503            average_bitrate: u64::default(),
32504            max_bitrate: u64::default(),
32505            frame_rate_numerator: u32::default(),
32506            frame_rate_denominator: u32::default(),
32507        }
32508    }
32509}
32510
32511unsafe impl Send for VideoEncodeRateControlLayerInfoKHR {}
32512unsafe impl Sync for VideoEncodeRateControlLayerInfoKHR {}
32513
32514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbConversionCapabilitiesVALVE.html>
32515#[repr(C)]
32516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32517pub struct VideoEncodeRgbConversionCapabilitiesVALVE {
32518    pub s_type: StructureType,
32519    pub next: *mut c_void,
32520    pub rgb_models: VideoEncodeRgbModelConversionFlagsVALVE,
32521    pub rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE,
32522    pub x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
32523    pub y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
32524}
32525
32526impl Default for VideoEncodeRgbConversionCapabilitiesVALVE {
32527    #[inline]
32528    fn default() -> Self {
32529        Self {
32530            s_type: StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE,
32531            next: ptr::null_mut(),
32532            rgb_models: VideoEncodeRgbModelConversionFlagsVALVE::default(),
32533            rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
32534            x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32535            y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32536        }
32537    }
32538}
32539
32540unsafe impl Send for VideoEncodeRgbConversionCapabilitiesVALVE {}
32541unsafe impl Sync for VideoEncodeRgbConversionCapabilitiesVALVE {}
32542
32543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html>
32544#[repr(C)]
32545#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32546pub struct VideoEncodeSessionIntraRefreshCreateInfoKHR {
32547    pub s_type: StructureType,
32548    pub next: *const c_void,
32549    pub intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR,
32550}
32551
32552impl Default for VideoEncodeSessionIntraRefreshCreateInfoKHR {
32553    #[inline]
32554    fn default() -> Self {
32555        Self {
32556            s_type: StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR,
32557            next: ptr::null(),
32558            intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR::default(),
32559        }
32560    }
32561}
32562
32563unsafe impl Send for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
32564unsafe impl Sync for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
32565
32566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
32567#[repr(C)]
32568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32569pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
32570    pub s_type: StructureType,
32571    pub next: *mut c_void,
32572    pub has_overrides: Bool32,
32573}
32574
32575impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
32576    #[inline]
32577    fn default() -> Self {
32578        Self {
32579            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32580            next: ptr::null_mut(),
32581            has_overrides: Bool32::default(),
32582        }
32583    }
32584}
32585
32586unsafe impl Send for VideoEncodeSessionParametersFeedbackInfoKHR {}
32587unsafe impl Sync for VideoEncodeSessionParametersFeedbackInfoKHR {}
32588
32589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
32590#[repr(C)]
32591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32592pub struct VideoEncodeSessionParametersGetInfoKHR {
32593    pub s_type: StructureType,
32594    pub next: *const c_void,
32595    pub video_session_parameters: VideoSessionParametersKHR,
32596}
32597
32598impl Default for VideoEncodeSessionParametersGetInfoKHR {
32599    #[inline]
32600    fn default() -> Self {
32601        Self {
32602            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
32603            next: ptr::null(),
32604            video_session_parameters: VideoSessionParametersKHR::default(),
32605        }
32606    }
32607}
32608
32609unsafe impl Send for VideoEncodeSessionParametersGetInfoKHR {}
32610unsafe impl Sync for VideoEncodeSessionParametersGetInfoKHR {}
32611
32612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionRgbConversionCreateInfoVALVE.html>
32613#[repr(C)]
32614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32615pub struct VideoEncodeSessionRgbConversionCreateInfoVALVE {
32616    pub s_type: StructureType,
32617    pub next: *const c_void,
32618    pub rgb_model: VideoEncodeRgbModelConversionFlagsVALVE,
32619    pub rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE,
32620    pub x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
32621    pub y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
32622}
32623
32624impl Default for VideoEncodeSessionRgbConversionCreateInfoVALVE {
32625    #[inline]
32626    fn default() -> Self {
32627        Self {
32628            s_type: StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE,
32629            next: ptr::null(),
32630            rgb_model: VideoEncodeRgbModelConversionFlagsVALVE::default(),
32631            rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
32632            x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32633            y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32634        }
32635    }
32636}
32637
32638unsafe impl Send for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
32639unsafe impl Sync for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
32640
32641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
32642#[repr(C)]
32643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32644pub struct VideoEncodeUsageInfoKHR {
32645    pub s_type: StructureType,
32646    pub next: *const c_void,
32647    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
32648    pub video_content_hints: VideoEncodeContentFlagsKHR,
32649    pub tuning_mode: VideoEncodeTuningModeKHR,
32650}
32651
32652impl Default for VideoEncodeUsageInfoKHR {
32653    #[inline]
32654    fn default() -> Self {
32655        Self {
32656            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
32657            next: ptr::null(),
32658            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
32659            video_content_hints: VideoEncodeContentFlagsKHR::default(),
32660            tuning_mode: VideoEncodeTuningModeKHR::default(),
32661        }
32662    }
32663}
32664
32665unsafe impl Send for VideoEncodeUsageInfoKHR {}
32666unsafe impl Sync for VideoEncodeUsageInfoKHR {}
32667
32668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
32669#[repr(C)]
32670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32671pub struct VideoEndCodingInfoKHR {
32672    pub s_type: StructureType,
32673    pub next: *const c_void,
32674    pub flags: VideoEndCodingFlagsKHR,
32675}
32676
32677impl Default for VideoEndCodingInfoKHR {
32678    #[inline]
32679    fn default() -> Self {
32680        Self {
32681            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
32682            next: ptr::null(),
32683            flags: VideoEndCodingFlagsKHR::default(),
32684        }
32685    }
32686}
32687
32688unsafe impl Send for VideoEndCodingInfoKHR {}
32689unsafe impl Sync for VideoEndCodingInfoKHR {}
32690
32691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
32692#[repr(C)]
32693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32694pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
32695    pub s_type: StructureType,
32696    pub next: *mut c_void,
32697    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
32698}
32699
32700impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
32701    #[inline]
32702    fn default() -> Self {
32703        Self {
32704            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
32705            next: ptr::null_mut(),
32706            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
32707        }
32708    }
32709}
32710
32711unsafe impl Send for VideoFormatAV1QuantizationMapPropertiesKHR {}
32712unsafe impl Sync for VideoFormatAV1QuantizationMapPropertiesKHR {}
32713
32714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
32715#[repr(C)]
32716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32717pub struct VideoFormatH265QuantizationMapPropertiesKHR {
32718    pub s_type: StructureType,
32719    pub next: *mut c_void,
32720    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
32721}
32722
32723impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
32724    #[inline]
32725    fn default() -> Self {
32726        Self {
32727            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
32728            next: ptr::null_mut(),
32729            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
32730        }
32731    }
32732}
32733
32734unsafe impl Send for VideoFormatH265QuantizationMapPropertiesKHR {}
32735unsafe impl Sync for VideoFormatH265QuantizationMapPropertiesKHR {}
32736
32737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
32738#[repr(C)]
32739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32740pub struct VideoFormatPropertiesKHR {
32741    pub s_type: StructureType,
32742    pub next: *mut c_void,
32743    pub format: Format,
32744    pub component_mapping: ComponentMapping,
32745    pub image_create_flags: ImageCreateFlags,
32746    pub image_type: ImageType,
32747    pub image_tiling: ImageTiling,
32748    pub image_usage_flags: ImageUsageFlags,
32749}
32750
32751impl Default for VideoFormatPropertiesKHR {
32752    #[inline]
32753    fn default() -> Self {
32754        Self {
32755            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
32756            next: ptr::null_mut(),
32757            format: Format::default(),
32758            component_mapping: ComponentMapping::default(),
32759            image_create_flags: ImageCreateFlags::default(),
32760            image_type: ImageType::default(),
32761            image_tiling: ImageTiling::default(),
32762            image_usage_flags: ImageUsageFlags::default(),
32763        }
32764    }
32765}
32766
32767unsafe impl Send for VideoFormatPropertiesKHR {}
32768unsafe impl Sync for VideoFormatPropertiesKHR {}
32769
32770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
32771#[repr(C)]
32772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32773pub struct VideoFormatQuantizationMapPropertiesKHR {
32774    pub s_type: StructureType,
32775    pub next: *mut c_void,
32776    pub quantization_map_texel_size: Extent2D,
32777}
32778
32779impl Default for VideoFormatQuantizationMapPropertiesKHR {
32780    #[inline]
32781    fn default() -> Self {
32782        Self {
32783            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
32784            next: ptr::null_mut(),
32785            quantization_map_texel_size: Extent2D::default(),
32786        }
32787    }
32788}
32789
32790unsafe impl Send for VideoFormatQuantizationMapPropertiesKHR {}
32791unsafe impl Sync for VideoFormatQuantizationMapPropertiesKHR {}
32792
32793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
32794#[repr(C)]
32795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32796pub struct VideoInlineQueryInfoKHR {
32797    pub s_type: StructureType,
32798    pub next: *const c_void,
32799    pub query_pool: QueryPool,
32800    pub first_query: u32,
32801    pub query_count: u32,
32802}
32803
32804impl Default for VideoInlineQueryInfoKHR {
32805    #[inline]
32806    fn default() -> Self {
32807        Self {
32808            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
32809            next: ptr::null(),
32810            query_pool: QueryPool::default(),
32811            first_query: u32::default(),
32812            query_count: u32::default(),
32813        }
32814    }
32815}
32816
32817unsafe impl Send for VideoInlineQueryInfoKHR {}
32818unsafe impl Sync for VideoInlineQueryInfoKHR {}
32819
32820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
32821#[repr(C)]
32822#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32823pub struct VideoPictureResourceInfoKHR {
32824    pub s_type: StructureType,
32825    pub next: *const c_void,
32826    pub coded_offset: Offset2D,
32827    pub coded_extent: Extent2D,
32828    pub base_array_layer: u32,
32829    pub image_view_binding: ImageView,
32830}
32831
32832impl Default for VideoPictureResourceInfoKHR {
32833    #[inline]
32834    fn default() -> Self {
32835        Self {
32836            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
32837            next: ptr::null(),
32838            coded_offset: Offset2D::default(),
32839            coded_extent: Extent2D::default(),
32840            base_array_layer: u32::default(),
32841            image_view_binding: ImageView::default(),
32842        }
32843    }
32844}
32845
32846unsafe impl Send for VideoPictureResourceInfoKHR {}
32847unsafe impl Sync for VideoPictureResourceInfoKHR {}
32848
32849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
32850#[repr(C)]
32851#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32852pub struct VideoProfileInfoKHR {
32853    pub s_type: StructureType,
32854    pub next: *const c_void,
32855    pub video_codec_operation: VideoCodecOperationFlagsKHR,
32856    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
32857    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
32858    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
32859}
32860
32861impl Default for VideoProfileInfoKHR {
32862    #[inline]
32863    fn default() -> Self {
32864        Self {
32865            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
32866            next: ptr::null(),
32867            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
32868            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
32869            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
32870            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
32871        }
32872    }
32873}
32874
32875unsafe impl Send for VideoProfileInfoKHR {}
32876unsafe impl Sync for VideoProfileInfoKHR {}
32877
32878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
32879#[repr(C)]
32880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32881pub struct VideoProfileListInfoKHR {
32882    pub s_type: StructureType,
32883    pub next: *const c_void,
32884    pub profile_count: u32,
32885    pub profiles: *const VideoProfileInfoKHR,
32886}
32887
32888impl Default for VideoProfileListInfoKHR {
32889    #[inline]
32890    fn default() -> Self {
32891        Self {
32892            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
32893            next: ptr::null(),
32894            profile_count: u32::default(),
32895            profiles: ptr::null(),
32896        }
32897    }
32898}
32899
32900unsafe impl Send for VideoProfileListInfoKHR {}
32901unsafe impl Sync for VideoProfileListInfoKHR {}
32902
32903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html>
32904#[repr(C)]
32905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32906pub struct VideoReferenceIntraRefreshInfoKHR {
32907    pub s_type: StructureType,
32908    pub next: *const c_void,
32909    pub dirty_intra_refresh_regions: u32,
32910}
32911
32912impl Default for VideoReferenceIntraRefreshInfoKHR {
32913    #[inline]
32914    fn default() -> Self {
32915        Self {
32916            s_type: StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR,
32917            next: ptr::null(),
32918            dirty_intra_refresh_regions: u32::default(),
32919        }
32920    }
32921}
32922
32923unsafe impl Send for VideoReferenceIntraRefreshInfoKHR {}
32924unsafe impl Sync for VideoReferenceIntraRefreshInfoKHR {}
32925
32926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
32927#[repr(C)]
32928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32929pub struct VideoReferenceSlotInfoKHR {
32930    pub s_type: StructureType,
32931    pub next: *const c_void,
32932    pub slot_index: i32,
32933    pub picture_resource: *const VideoPictureResourceInfoKHR,
32934}
32935
32936impl Default for VideoReferenceSlotInfoKHR {
32937    #[inline]
32938    fn default() -> Self {
32939        Self {
32940            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
32941            next: ptr::null(),
32942            slot_index: i32::default(),
32943            picture_resource: ptr::null(),
32944        }
32945    }
32946}
32947
32948unsafe impl Send for VideoReferenceSlotInfoKHR {}
32949unsafe impl Sync for VideoReferenceSlotInfoKHR {}
32950
32951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
32952#[repr(C)]
32953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32954pub struct VideoSessionCreateInfoKHR {
32955    pub s_type: StructureType,
32956    pub next: *const c_void,
32957    pub queue_family_index: u32,
32958    pub flags: VideoSessionCreateFlagsKHR,
32959    pub video_profile: *const VideoProfileInfoKHR,
32960    pub picture_format: Format,
32961    pub max_coded_extent: Extent2D,
32962    pub reference_picture_format: Format,
32963    pub max_dpb_slots: u32,
32964    pub max_active_reference_pictures: u32,
32965    pub std_header_version: *const ExtensionProperties,
32966}
32967
32968impl Default for VideoSessionCreateInfoKHR {
32969    #[inline]
32970    fn default() -> Self {
32971        Self {
32972            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
32973            next: ptr::null(),
32974            queue_family_index: u32::default(),
32975            flags: VideoSessionCreateFlagsKHR::default(),
32976            video_profile: ptr::null(),
32977            picture_format: Format::default(),
32978            max_coded_extent: Extent2D::default(),
32979            reference_picture_format: Format::default(),
32980            max_dpb_slots: u32::default(),
32981            max_active_reference_pictures: u32::default(),
32982            std_header_version: ptr::null(),
32983        }
32984    }
32985}
32986
32987unsafe impl Send for VideoSessionCreateInfoKHR {}
32988unsafe impl Sync for VideoSessionCreateInfoKHR {}
32989
32990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
32991#[repr(C)]
32992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32993pub struct VideoSessionMemoryRequirementsKHR {
32994    pub s_type: StructureType,
32995    pub next: *mut c_void,
32996    pub memory_bind_index: u32,
32997    pub memory_requirements: MemoryRequirements,
32998}
32999
33000impl Default for VideoSessionMemoryRequirementsKHR {
33001    #[inline]
33002    fn default() -> Self {
33003        Self {
33004            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
33005            next: ptr::null_mut(),
33006            memory_bind_index: u32::default(),
33007            memory_requirements: MemoryRequirements::default(),
33008        }
33009    }
33010}
33011
33012unsafe impl Send for VideoSessionMemoryRequirementsKHR {}
33013unsafe impl Sync for VideoSessionMemoryRequirementsKHR {}
33014
33015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
33016#[repr(C)]
33017#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33018pub struct VideoSessionParametersCreateInfoKHR {
33019    pub s_type: StructureType,
33020    pub next: *const c_void,
33021    pub flags: VideoSessionParametersCreateFlagsKHR,
33022    pub video_session_parameters_template: VideoSessionParametersKHR,
33023    pub video_session: VideoSessionKHR,
33024}
33025
33026impl Default for VideoSessionParametersCreateInfoKHR {
33027    #[inline]
33028    fn default() -> Self {
33029        Self {
33030            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
33031            next: ptr::null(),
33032            flags: VideoSessionParametersCreateFlagsKHR::default(),
33033            video_session_parameters_template: VideoSessionParametersKHR::default(),
33034            video_session: VideoSessionKHR::default(),
33035        }
33036    }
33037}
33038
33039unsafe impl Send for VideoSessionParametersCreateInfoKHR {}
33040unsafe impl Sync for VideoSessionParametersCreateInfoKHR {}
33041
33042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
33043#[repr(C)]
33044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33045pub struct VideoSessionParametersUpdateInfoKHR {
33046    pub s_type: StructureType,
33047    pub next: *const c_void,
33048    pub update_sequence_count: u32,
33049}
33050
33051impl Default for VideoSessionParametersUpdateInfoKHR {
33052    #[inline]
33053    fn default() -> Self {
33054        Self {
33055            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
33056            next: ptr::null(),
33057            update_sequence_count: u32::default(),
33058        }
33059    }
33060}
33061
33062unsafe impl Send for VideoSessionParametersUpdateInfoKHR {}
33063unsafe impl Sync for VideoSessionParametersUpdateInfoKHR {}
33064
33065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
33066#[repr(C)]
33067#[derive(Copy, Clone, Default, Debug, PartialEq)]
33068pub struct Viewport {
33069    pub x: f32,
33070    pub y: f32,
33071    pub width: f32,
33072    pub height: f32,
33073    pub min_depth: f32,
33074    pub max_depth: f32,
33075}
33076
33077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
33078#[repr(C)]
33079#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
33080pub struct ViewportSwizzleNV {
33081    pub x: ViewportCoordinateSwizzleNV,
33082    pub y: ViewportCoordinateSwizzleNV,
33083    pub z: ViewportCoordinateSwizzleNV,
33084    pub w: ViewportCoordinateSwizzleNV,
33085}
33086
33087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
33088#[repr(C)]
33089#[derive(Copy, Clone, Default, Debug, PartialEq)]
33090pub struct ViewportWScalingNV {
33091    pub xcoeff: f32,
33092    pub ycoeff: f32,
33093}
33094
33095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
33096#[repr(C)]
33097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33098pub struct WaylandSurfaceCreateInfoKHR {
33099    pub s_type: StructureType,
33100    pub next: *const c_void,
33101    pub flags: WaylandSurfaceCreateFlagsKHR,
33102    pub display: *mut wl_display,
33103    pub surface: *mut wl_surface,
33104}
33105
33106impl Default for WaylandSurfaceCreateInfoKHR {
33107    #[inline]
33108    fn default() -> Self {
33109        Self {
33110            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
33111            next: ptr::null(),
33112            flags: WaylandSurfaceCreateFlagsKHR::default(),
33113            display: ptr::null_mut(),
33114            surface: ptr::null_mut(),
33115        }
33116    }
33117}
33118
33119unsafe impl Send for WaylandSurfaceCreateInfoKHR {}
33120unsafe impl Sync for WaylandSurfaceCreateInfoKHR {}
33121
33122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
33123#[repr(C)]
33124#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33125pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
33126    pub s_type: StructureType,
33127    pub next: *const c_void,
33128    pub acquire_count: u32,
33129    pub acquire_syncs: *const DeviceMemory,
33130    pub acquire_keys: *const u64,
33131    pub acquire_timeouts: *const u32,
33132    pub release_count: u32,
33133    pub release_syncs: *const DeviceMemory,
33134    pub release_keys: *const u64,
33135}
33136
33137impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
33138    #[inline]
33139    fn default() -> Self {
33140        Self {
33141            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
33142            next: ptr::null(),
33143            acquire_count: u32::default(),
33144            acquire_syncs: ptr::null(),
33145            acquire_keys: ptr::null(),
33146            acquire_timeouts: ptr::null(),
33147            release_count: u32::default(),
33148            release_syncs: ptr::null(),
33149            release_keys: ptr::null(),
33150        }
33151    }
33152}
33153
33154unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoKHR {}
33155unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoKHR {}
33156
33157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
33158#[repr(C)]
33159#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33160pub struct Win32KeyedMutexAcquireReleaseInfoNV {
33161    pub s_type: StructureType,
33162    pub next: *const c_void,
33163    pub acquire_count: u32,
33164    pub acquire_syncs: *const DeviceMemory,
33165    pub acquire_keys: *const u64,
33166    pub acquire_timeout_milliseconds: *const u32,
33167    pub release_count: u32,
33168    pub release_syncs: *const DeviceMemory,
33169    pub release_keys: *const u64,
33170}
33171
33172impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
33173    #[inline]
33174    fn default() -> Self {
33175        Self {
33176            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
33177            next: ptr::null(),
33178            acquire_count: u32::default(),
33179            acquire_syncs: ptr::null(),
33180            acquire_keys: ptr::null(),
33181            acquire_timeout_milliseconds: ptr::null(),
33182            release_count: u32::default(),
33183            release_syncs: ptr::null(),
33184            release_keys: ptr::null(),
33185        }
33186    }
33187}
33188
33189unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoNV {}
33190unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoNV {}
33191
33192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
33193#[repr(C)]
33194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33195pub struct Win32SurfaceCreateInfoKHR {
33196    pub s_type: StructureType,
33197    pub next: *const c_void,
33198    pub flags: Win32SurfaceCreateFlagsKHR,
33199    pub hinstance: HINSTANCE,
33200    pub hwnd: HWND,
33201}
33202
33203impl Default for Win32SurfaceCreateInfoKHR {
33204    #[inline]
33205    fn default() -> Self {
33206        Self {
33207            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
33208            next: ptr::null(),
33209            flags: Win32SurfaceCreateFlagsKHR::default(),
33210            hinstance: ptr::null_mut(),
33211            hwnd: ptr::null_mut(),
33212        }
33213    }
33214}
33215
33216unsafe impl Send for Win32SurfaceCreateInfoKHR {}
33217unsafe impl Sync for Win32SurfaceCreateInfoKHR {}
33218
33219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
33220#[repr(C)]
33221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33222pub struct WriteDescriptorSet {
33223    pub s_type: StructureType,
33224    pub next: *const c_void,
33225    pub dst_set: DescriptorSet,
33226    pub dst_binding: u32,
33227    pub dst_array_element: u32,
33228    pub descriptor_count: u32,
33229    pub descriptor_type: DescriptorType,
33230    pub image_info: *const DescriptorImageInfo,
33231    pub buffer_info: *const DescriptorBufferInfo,
33232    pub texel_buffer_view: *const BufferView,
33233}
33234
33235impl Default for WriteDescriptorSet {
33236    #[inline]
33237    fn default() -> Self {
33238        Self {
33239            s_type: StructureType::WRITE_DESCRIPTOR_SET,
33240            next: ptr::null(),
33241            dst_set: DescriptorSet::default(),
33242            dst_binding: u32::default(),
33243            dst_array_element: u32::default(),
33244            descriptor_count: u32::default(),
33245            descriptor_type: DescriptorType::default(),
33246            image_info: ptr::null(),
33247            buffer_info: ptr::null(),
33248            texel_buffer_view: ptr::null(),
33249        }
33250    }
33251}
33252
33253unsafe impl Send for WriteDescriptorSet {}
33254unsafe impl Sync for WriteDescriptorSet {}
33255
33256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
33257#[repr(C)]
33258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33259pub struct WriteDescriptorSetAccelerationStructureKHR {
33260    pub s_type: StructureType,
33261    pub next: *const c_void,
33262    pub acceleration_structure_count: u32,
33263    pub acceleration_structures: *const AccelerationStructureKHR,
33264}
33265
33266impl Default for WriteDescriptorSetAccelerationStructureKHR {
33267    #[inline]
33268    fn default() -> Self {
33269        Self {
33270            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
33271            next: ptr::null(),
33272            acceleration_structure_count: u32::default(),
33273            acceleration_structures: ptr::null(),
33274        }
33275    }
33276}
33277
33278unsafe impl Send for WriteDescriptorSetAccelerationStructureKHR {}
33279unsafe impl Sync for WriteDescriptorSetAccelerationStructureKHR {}
33280
33281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
33282#[repr(C)]
33283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33284pub struct WriteDescriptorSetAccelerationStructureNV {
33285    pub s_type: StructureType,
33286    pub next: *const c_void,
33287    pub acceleration_structure_count: u32,
33288    pub acceleration_structures: *const AccelerationStructureNV,
33289}
33290
33291impl Default for WriteDescriptorSetAccelerationStructureNV {
33292    #[inline]
33293    fn default() -> Self {
33294        Self {
33295            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
33296            next: ptr::null(),
33297            acceleration_structure_count: u32::default(),
33298            acceleration_structures: ptr::null(),
33299        }
33300    }
33301}
33302
33303unsafe impl Send for WriteDescriptorSetAccelerationStructureNV {}
33304unsafe impl Sync for WriteDescriptorSetAccelerationStructureNV {}
33305
33306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
33307#[repr(C)]
33308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33309pub struct WriteDescriptorSetInlineUniformBlock {
33310    pub s_type: StructureType,
33311    pub next: *const c_void,
33312    pub data_size: u32,
33313    pub data: *const c_void,
33314}
33315
33316impl Default for WriteDescriptorSetInlineUniformBlock {
33317    #[inline]
33318    fn default() -> Self {
33319        Self {
33320            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
33321            next: ptr::null(),
33322            data_size: u32::default(),
33323            data: ptr::null(),
33324        }
33325    }
33326}
33327
33328unsafe impl Send for WriteDescriptorSetInlineUniformBlock {}
33329unsafe impl Sync for WriteDescriptorSetInlineUniformBlock {}
33330
33331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
33332#[repr(C)]
33333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33334pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
33335    pub s_type: StructureType,
33336    pub next: *mut c_void,
33337    pub acceleration_structure_count: u32,
33338    pub acceleration_structures: *const DeviceAddress,
33339}
33340
33341impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
33342    #[inline]
33343    fn default() -> Self {
33344        Self {
33345            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
33346            next: ptr::null_mut(),
33347            acceleration_structure_count: u32::default(),
33348            acceleration_structures: ptr::null(),
33349        }
33350    }
33351}
33352
33353unsafe impl Send for WriteDescriptorSetPartitionedAccelerationStructureNV {}
33354unsafe impl Sync for WriteDescriptorSetPartitionedAccelerationStructureNV {}
33355
33356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html>
33357#[repr(C)]
33358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33359pub struct WriteDescriptorSetTensorARM {
33360    pub s_type: StructureType,
33361    pub next: *const c_void,
33362    pub tensor_view_count: u32,
33363    pub tensor_views: *const TensorViewARM,
33364}
33365
33366impl Default for WriteDescriptorSetTensorARM {
33367    #[inline]
33368    fn default() -> Self {
33369        Self {
33370            s_type: StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM,
33371            next: ptr::null(),
33372            tensor_view_count: u32::default(),
33373            tensor_views: ptr::null(),
33374        }
33375    }
33376}
33377
33378unsafe impl Send for WriteDescriptorSetTensorARM {}
33379unsafe impl Sync for WriteDescriptorSetTensorARM {}
33380
33381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
33382#[repr(C)]
33383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33384pub struct WriteIndirectExecutionSetPipelineEXT {
33385    pub s_type: StructureType,
33386    pub next: *const c_void,
33387    pub index: u32,
33388    pub pipeline: Pipeline,
33389}
33390
33391impl Default for WriteIndirectExecutionSetPipelineEXT {
33392    #[inline]
33393    fn default() -> Self {
33394        Self {
33395            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
33396            next: ptr::null(),
33397            index: u32::default(),
33398            pipeline: Pipeline::default(),
33399        }
33400    }
33401}
33402
33403unsafe impl Send for WriteIndirectExecutionSetPipelineEXT {}
33404unsafe impl Sync for WriteIndirectExecutionSetPipelineEXT {}
33405
33406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
33407#[repr(C)]
33408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33409pub struct WriteIndirectExecutionSetShaderEXT {
33410    pub s_type: StructureType,
33411    pub next: *const c_void,
33412    pub index: u32,
33413    pub shader: ShaderEXT,
33414}
33415
33416impl Default for WriteIndirectExecutionSetShaderEXT {
33417    #[inline]
33418    fn default() -> Self {
33419        Self {
33420            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
33421            next: ptr::null(),
33422            index: u32::default(),
33423            shader: ShaderEXT::default(),
33424        }
33425    }
33426}
33427
33428unsafe impl Send for WriteIndirectExecutionSetShaderEXT {}
33429unsafe impl Sync for WriteIndirectExecutionSetShaderEXT {}
33430
33431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
33432#[repr(C)]
33433#[derive(Copy, Clone, Default, Debug, PartialEq)]
33434pub struct XYColorEXT {
33435    pub x: f32,
33436    pub y: f32,
33437}
33438
33439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
33440#[repr(C)]
33441#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33442pub struct XcbSurfaceCreateInfoKHR {
33443    pub s_type: StructureType,
33444    pub next: *const c_void,
33445    pub flags: XcbSurfaceCreateFlagsKHR,
33446    pub connection: *mut xcb_connection_t,
33447    pub window: xcb_window_t,
33448}
33449
33450impl Default for XcbSurfaceCreateInfoKHR {
33451    #[inline]
33452    fn default() -> Self {
33453        Self {
33454            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
33455            next: ptr::null(),
33456            flags: XcbSurfaceCreateFlagsKHR::default(),
33457            connection: ptr::null_mut(),
33458            window: xcb_window_t::default(),
33459        }
33460    }
33461}
33462
33463unsafe impl Send for XcbSurfaceCreateInfoKHR {}
33464unsafe impl Sync for XcbSurfaceCreateInfoKHR {}
33465
33466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
33467#[repr(C)]
33468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33469pub struct XlibSurfaceCreateInfoKHR {
33470    pub s_type: StructureType,
33471    pub next: *const c_void,
33472    pub flags: XlibSurfaceCreateFlagsKHR,
33473    pub dpy: *mut Display,
33474    pub window: Window,
33475}
33476
33477impl Default for XlibSurfaceCreateInfoKHR {
33478    #[inline]
33479    fn default() -> Self {
33480        Self {
33481            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
33482            next: ptr::null(),
33483            flags: XlibSurfaceCreateFlagsKHR::default(),
33484            dpy: ptr::null_mut(),
33485            window: Window::default(),
33486        }
33487    }
33488}
33489
33490unsafe impl Send for XlibSurfaceCreateInfoKHR {}
33491unsafe impl Sync for XlibSurfaceCreateInfoKHR {}
33492
33493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
33494pub type AabbPositionsNV = AabbPositionsKHR;
33495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
33496pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
33497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
33498pub type AttachmentDescription2KHR = AttachmentDescription2;
33499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
33500pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
33501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
33502pub type AttachmentReference2KHR = AttachmentReference2;
33503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
33504pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
33505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
33506pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
33507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
33508pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
33509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
33510pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
33511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
33512pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
33513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
33514pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
33515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
33516pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
33517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
33518pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
33519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
33520pub type BindMemoryStatusKHR = BindMemoryStatus;
33521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
33522pub type BlitImageInfo2KHR = BlitImageInfo2;
33523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
33524pub type BufferCopy2KHR = BufferCopy2;
33525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
33526pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
33527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
33528pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
33529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
33530pub type BufferImageCopy2KHR = BufferImageCopy2;
33531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
33532pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
33533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
33534pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
33535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
33536pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
33537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
33538pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
33539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
33540pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
33541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
33542pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
33543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
33544pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
33545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
33546pub type ConformanceVersionKHR = ConformanceVersion;
33547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
33548pub type CopyBufferInfo2KHR = CopyBufferInfo2;
33549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
33550pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
33551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
33552pub type CopyImageInfo2KHR = CopyImageInfo2;
33553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
33554pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
33555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
33556pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
33557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
33558pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
33559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
33560pub type CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR;
33561/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
33562pub type CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR;
33563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
33564pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
33565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
33566pub type DependencyInfoKHR = DependencyInfo;
33567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
33568pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
33569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
33570pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
33571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
33572pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
33573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
33574pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
33575    DescriptorSetVariableDescriptorCountAllocateInfo;
33576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
33577pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
33578    DescriptorSetVariableDescriptorCountLayoutSupport;
33579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
33580pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
33581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
33582pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
33583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
33584pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
33585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
33586pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
33587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
33588pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
33589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
33590pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
33591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
33592pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
33593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
33594pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
33595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
33596pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
33597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
33598pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
33599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
33600pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
33601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
33602pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
33603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
33604pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
33605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
33606pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
33607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
33608pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
33609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
33610pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
33611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
33612pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
33613/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
33614pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
33615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
33616pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
33617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
33618pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
33619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
33620pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
33621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
33622pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
33623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
33624pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
33625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
33626pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
33627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
33628pub type FormatProperties2KHR = FormatProperties2;
33629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
33630pub type FormatProperties3KHR = FormatProperties3;
33631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
33632pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
33633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
33634pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
33635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
33636pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
33637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
33638pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
33639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
33640pub type ImageBlit2KHR = ImageBlit2;
33641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
33642pub type ImageCopy2KHR = ImageCopy2;
33643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
33644pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
33645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
33646pub type ImageFormatProperties2KHR = ImageFormatProperties2;
33647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
33648pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
33649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
33650pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
33651/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
33652pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
33653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
33654pub type ImageResolve2KHR = ImageResolve2;
33655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
33656pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
33657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
33658pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
33659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
33660pub type ImageSubresource2EXT = ImageSubresource2;
33661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
33662pub type ImageSubresource2KHR = ImageSubresource2;
33663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
33664pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
33665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
33666pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
33667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
33668pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
33669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
33670pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
33671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
33672pub type MemoryBarrier2KHR = MemoryBarrier2;
33673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
33674pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
33675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
33676pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
33677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
33678pub type MemoryMapInfoKHR = MemoryMapInfo;
33679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
33680pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
33681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
33682pub type MemoryRequirements2KHR = MemoryRequirements2;
33683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
33684pub type MemoryToImageCopyEXT = MemoryToImageCopy;
33685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
33686pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
33687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
33688pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
33689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
33690pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
33691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
33692pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
33693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
33694pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
33695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
33696pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
33697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
33698pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
33699/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
33700pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
33701    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
33702/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
33703pub type PhysicalDeviceCopyMemoryIndirectPropertiesNV =
33704    PhysicalDeviceCopyMemoryIndirectPropertiesKHR;
33705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
33706pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
33707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
33708pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
33709    PhysicalDeviceDepthStencilResolveProperties;
33710/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
33711pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
33712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
33713pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
33714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
33715pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
33716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
33717pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
33718/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
33719pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
33720    PhysicalDeviceDynamicRenderingLocalReadFeatures;
33721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
33722pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
33723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
33724pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
33725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
33726pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
33727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
33728pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
33729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
33730pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
33731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
33732pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
33733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
33734pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
33735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
33736pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
33737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
33738pub type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM =
33739    PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
33740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
33741pub type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM =
33742    PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
33743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
33744pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
33745    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
33746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
33747pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
33748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
33749pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
33750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
33751pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
33752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
33753pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
33754/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
33755pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
33756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
33757pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
33758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
33759pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
33760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
33761pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
33762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
33763pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
33764/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
33765pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
33766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
33767pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
33768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
33769pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
33770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
33771pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
33772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
33773pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
33774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
33775pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
33776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
33777pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
33778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
33779pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
33780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
33781pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
33782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
33783pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
33784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
33785pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
33786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
33787pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
33788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
33789pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
33790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
33791pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
33792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
33793pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
33794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
33795pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
33796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
33797pub type PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT;
33798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
33799pub type PhysicalDeviceMemoryDecompressionPropertiesNV =
33800    PhysicalDeviceMemoryDecompressionPropertiesEXT;
33801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
33802pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
33803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
33804pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
33805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
33806pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
33807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
33808pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
33809    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
33810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
33811pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
33812    PhysicalDevicePipelineCreationCacheControlFeatures;
33813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
33814pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
33815    PhysicalDevicePipelineProtectedAccessFeatures;
33816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
33817pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
33818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
33819pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
33820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
33821pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
33822/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
33823pub type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT =
33824    PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
33825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
33826pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
33827/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
33828pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
33829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
33830pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
33831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
33832pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
33833    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
33834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
33835pub type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR;
33836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
33837pub type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR;
33838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
33839pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
33840    PhysicalDeviceSamplerFilterMinmaxProperties;
33841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
33842pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
33843    PhysicalDeviceSamplerYcbcrConversionFeatures;
33844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
33845pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
33846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
33847pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
33848    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
33849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
33850pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
33851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
33852pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
33853    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
33854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
33855pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
33856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
33857pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
33858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
33859pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
33860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
33861pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
33862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
33863pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
33864    PhysicalDeviceShaderIntegerDotProductFeatures;
33865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
33866pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
33867    PhysicalDeviceShaderIntegerDotProductProperties;
33868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
33869pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
33870    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
33871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
33872pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
33873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
33874pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
33875    PhysicalDeviceShaderTerminateInvocationFeatures;
33876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
33877pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
33878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
33879pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
33880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
33881pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
33882    PhysicalDeviceSubgroupSizeControlProperties;
33883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
33884pub type PhysicalDeviceSwapchainMaintenance1FeaturesEXT =
33885    PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
33886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
33887pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
33888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
33889pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
33890    PhysicalDeviceTexelBufferAlignmentProperties;
33891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
33892pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
33893    PhysicalDeviceTextureCompressionASTCHDRFeatures;
33894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
33895pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
33896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
33897pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
33898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
33899pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
33900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
33901pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
33902    PhysicalDeviceUniformBufferStandardLayoutFeatures;
33903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
33904pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
33905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
33906pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
33907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
33908pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
33909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
33910pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
33911    PhysicalDeviceVertexAttributeDivisorFeatures;
33912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
33913pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
33914    PhysicalDeviceVertexAttributeDivisorFeatures;
33915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
33916pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
33917    PhysicalDeviceVertexAttributeDivisorProperties;
33918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
33919pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
33920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
33921pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
33922    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
33923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
33924pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
33925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
33926pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
33927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
33928pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
33929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
33930pub type PipelineInfoEXT = PipelineInfoKHR;
33931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
33932pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
33933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
33934pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
33935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
33936pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
33937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
33938pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
33939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
33940pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
33941    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
33942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
33943pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
33944    PipelineTessellationDomainOriginStateCreateInfo;
33945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
33946pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
33947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
33948pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
33949/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
33950pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
33951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
33952pub type PushConstantsInfoKHR = PushConstantsInfo;
33953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
33954pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
33955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
33956pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
33957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
33958pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
33959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
33960pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
33961/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
33962pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
33963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
33964pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
33965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
33966pub type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR;
33967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
33968pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
33969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
33970pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
33971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
33972pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
33973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
33974pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
33975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
33976pub type RenderingAreaInfoKHR = RenderingAreaInfo;
33977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
33978pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
33979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
33980pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
33981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoEXT.html>
33982pub type RenderingEndInfoEXT = RenderingEndInfoKHR;
33983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
33984pub type RenderingInfoKHR = RenderingInfo;
33985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
33986pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
33987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
33988pub type ResolveImageInfo2KHR = ResolveImageInfo2;
33989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
33990pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
33991/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
33992pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
33993/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
33994pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
33995    SamplerYcbcrConversionImageFormatProperties;
33996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
33997pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
33998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
33999pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
34000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
34001pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
34002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
34003pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
34004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
34005pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
34006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
34007pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
34008    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
34009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
34010pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
34011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
34012pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
34013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
34014pub type SubmitInfo2KHR = SubmitInfo2;
34015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
34016pub type SubpassBeginInfoKHR = SubpassBeginInfo;
34017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
34018pub type SubpassDependency2KHR = SubpassDependency2;
34019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
34020pub type SubpassDescription2KHR = SubpassDescription2;
34021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
34022pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
34023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
34024pub type SubpassEndInfoKHR = SubpassEndInfo;
34025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
34026pub type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT;
34027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
34028pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
34029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
34030pub type SubresourceLayout2EXT = SubresourceLayout2;
34031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
34032pub type SubresourceLayout2KHR = SubresourceLayout2;
34033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
34034pub type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR;
34035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
34036pub type SurfacePresentModeEXT = SurfacePresentModeKHR;
34037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
34038pub type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR;
34039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
34040pub type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR;
34041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
34042pub type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR;
34043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
34044pub type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR;
34045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
34046pub type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR;
34047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
34048pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
34049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
34050pub type TransformMatrixNV = TransformMatrixKHR;
34051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
34052pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
34053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
34054pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
34055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
34056pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;