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: *mut 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_mut(),
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/VkBeginCustomResolveInfoEXT.html>
1401#[repr(C)]
1402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1403pub struct BeginCustomResolveInfoEXT {
1404    pub s_type: StructureType,
1405    pub next: *mut c_void,
1406}
1407
1408impl Default for BeginCustomResolveInfoEXT {
1409    #[inline]
1410    fn default() -> Self {
1411        Self {
1412            s_type: StructureType::BEGIN_CUSTOM_RESOLVE_INFO_EXT,
1413            next: ptr::null_mut(),
1414        }
1415    }
1416}
1417
1418unsafe impl Send for BeginCustomResolveInfoEXT {}
1419unsafe impl Sync for BeginCustomResolveInfoEXT {}
1420
1421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1422#[repr(C)]
1423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1424pub struct BindAccelerationStructureMemoryInfoNV {
1425    pub s_type: StructureType,
1426    pub next: *const c_void,
1427    pub acceleration_structure: AccelerationStructureNV,
1428    pub memory: DeviceMemory,
1429    pub memory_offset: DeviceSize,
1430    pub device_index_count: u32,
1431    pub device_indices: *const u32,
1432}
1433
1434impl Default for BindAccelerationStructureMemoryInfoNV {
1435    #[inline]
1436    fn default() -> Self {
1437        Self {
1438            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1439            next: ptr::null(),
1440            acceleration_structure: AccelerationStructureNV::default(),
1441            memory: DeviceMemory::default(),
1442            memory_offset: DeviceSize::default(),
1443            device_index_count: u32::default(),
1444            device_indices: ptr::null(),
1445        }
1446    }
1447}
1448
1449unsafe impl Send for BindAccelerationStructureMemoryInfoNV {}
1450unsafe impl Sync for BindAccelerationStructureMemoryInfoNV {}
1451
1452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1453#[repr(C)]
1454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1455pub struct BindBufferMemoryDeviceGroupInfo {
1456    pub s_type: StructureType,
1457    pub next: *const c_void,
1458    pub device_index_count: u32,
1459    pub device_indices: *const u32,
1460}
1461
1462impl Default for BindBufferMemoryDeviceGroupInfo {
1463    #[inline]
1464    fn default() -> Self {
1465        Self {
1466            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1467            next: ptr::null(),
1468            device_index_count: u32::default(),
1469            device_indices: ptr::null(),
1470        }
1471    }
1472}
1473
1474unsafe impl Send for BindBufferMemoryDeviceGroupInfo {}
1475unsafe impl Sync for BindBufferMemoryDeviceGroupInfo {}
1476
1477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1478#[repr(C)]
1479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1480pub struct BindBufferMemoryInfo {
1481    pub s_type: StructureType,
1482    pub next: *const c_void,
1483    pub buffer: Buffer,
1484    pub memory: DeviceMemory,
1485    pub memory_offset: DeviceSize,
1486}
1487
1488impl Default for BindBufferMemoryInfo {
1489    #[inline]
1490    fn default() -> Self {
1491        Self {
1492            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1493            next: ptr::null(),
1494            buffer: Buffer::default(),
1495            memory: DeviceMemory::default(),
1496            memory_offset: DeviceSize::default(),
1497        }
1498    }
1499}
1500
1501unsafe impl Send for BindBufferMemoryInfo {}
1502unsafe impl Sync for BindBufferMemoryInfo {}
1503
1504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html>
1505#[repr(C)]
1506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1507pub struct BindDataGraphPipelineSessionMemoryInfoARM {
1508    pub s_type: StructureType,
1509    pub next: *const c_void,
1510    pub session: DataGraphPipelineSessionARM,
1511    pub bind_point: DataGraphPipelineSessionBindPointARM,
1512    pub object_index: u32,
1513    pub memory: DeviceMemory,
1514    pub memory_offset: DeviceSize,
1515}
1516
1517impl Default for BindDataGraphPipelineSessionMemoryInfoARM {
1518    #[inline]
1519    fn default() -> Self {
1520        Self {
1521            s_type: StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM,
1522            next: ptr::null(),
1523            session: DataGraphPipelineSessionARM::default(),
1524            bind_point: DataGraphPipelineSessionBindPointARM::default(),
1525            object_index: u32::default(),
1526            memory: DeviceMemory::default(),
1527            memory_offset: DeviceSize::default(),
1528        }
1529    }
1530}
1531
1532unsafe impl Send for BindDataGraphPipelineSessionMemoryInfoARM {}
1533unsafe impl Sync for BindDataGraphPipelineSessionMemoryInfoARM {}
1534
1535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1536#[repr(C)]
1537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1538pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1539    pub s_type: StructureType,
1540    pub next: *const c_void,
1541    pub stage_flags: ShaderStageFlags,
1542    pub layout: PipelineLayout,
1543    pub set: u32,
1544}
1545
1546impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1547    #[inline]
1548    fn default() -> Self {
1549        Self {
1550            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1551            next: ptr::null(),
1552            stage_flags: ShaderStageFlags::default(),
1553            layout: PipelineLayout::default(),
1554            set: u32::default(),
1555        }
1556    }
1557}
1558
1559unsafe impl Send for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1560unsafe impl Sync for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1561
1562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1563#[repr(C)]
1564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1565pub struct BindDescriptorSetsInfo {
1566    pub s_type: StructureType,
1567    pub next: *const c_void,
1568    pub stage_flags: ShaderStageFlags,
1569    pub layout: PipelineLayout,
1570    pub first_set: u32,
1571    pub descriptor_set_count: u32,
1572    pub descriptor_sets: *const DescriptorSet,
1573    pub dynamic_offset_count: u32,
1574    pub dynamic_offsets: *const u32,
1575}
1576
1577impl Default for BindDescriptorSetsInfo {
1578    #[inline]
1579    fn default() -> Self {
1580        Self {
1581            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1582            next: ptr::null(),
1583            stage_flags: ShaderStageFlags::default(),
1584            layout: PipelineLayout::default(),
1585            first_set: u32::default(),
1586            descriptor_set_count: u32::default(),
1587            descriptor_sets: ptr::null(),
1588            dynamic_offset_count: u32::default(),
1589            dynamic_offsets: ptr::null(),
1590        }
1591    }
1592}
1593
1594unsafe impl Send for BindDescriptorSetsInfo {}
1595unsafe impl Sync for BindDescriptorSetsInfo {}
1596
1597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1598#[repr(C)]
1599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1600pub struct BindImageMemoryDeviceGroupInfo {
1601    pub s_type: StructureType,
1602    pub next: *const c_void,
1603    pub device_index_count: u32,
1604    pub device_indices: *const u32,
1605    pub split_instance_bind_region_count: u32,
1606    pub split_instance_bind_regions: *const Rect2D,
1607}
1608
1609impl Default for BindImageMemoryDeviceGroupInfo {
1610    #[inline]
1611    fn default() -> Self {
1612        Self {
1613            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1614            next: ptr::null(),
1615            device_index_count: u32::default(),
1616            device_indices: ptr::null(),
1617            split_instance_bind_region_count: u32::default(),
1618            split_instance_bind_regions: ptr::null(),
1619        }
1620    }
1621}
1622
1623unsafe impl Send for BindImageMemoryDeviceGroupInfo {}
1624unsafe impl Sync for BindImageMemoryDeviceGroupInfo {}
1625
1626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1627#[repr(C)]
1628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1629pub struct BindImageMemoryInfo {
1630    pub s_type: StructureType,
1631    pub next: *const c_void,
1632    pub image: Image,
1633    pub memory: DeviceMemory,
1634    pub memory_offset: DeviceSize,
1635}
1636
1637impl Default for BindImageMemoryInfo {
1638    #[inline]
1639    fn default() -> Self {
1640        Self {
1641            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1642            next: ptr::null(),
1643            image: Image::default(),
1644            memory: DeviceMemory::default(),
1645            memory_offset: DeviceSize::default(),
1646        }
1647    }
1648}
1649
1650unsafe impl Send for BindImageMemoryInfo {}
1651unsafe impl Sync for BindImageMemoryInfo {}
1652
1653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1654#[repr(C)]
1655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1656pub struct BindImageMemorySwapchainInfoKHR {
1657    pub s_type: StructureType,
1658    pub next: *const c_void,
1659    pub swapchain: SwapchainKHR,
1660    pub image_index: u32,
1661}
1662
1663impl Default for BindImageMemorySwapchainInfoKHR {
1664    #[inline]
1665    fn default() -> Self {
1666        Self {
1667            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1668            next: ptr::null(),
1669            swapchain: SwapchainKHR::default(),
1670            image_index: u32::default(),
1671        }
1672    }
1673}
1674
1675unsafe impl Send for BindImageMemorySwapchainInfoKHR {}
1676unsafe impl Sync for BindImageMemorySwapchainInfoKHR {}
1677
1678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1679#[repr(C)]
1680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1681pub struct BindImagePlaneMemoryInfo {
1682    pub s_type: StructureType,
1683    pub next: *const c_void,
1684    pub plane_aspect: ImageAspectFlags,
1685}
1686
1687impl Default for BindImagePlaneMemoryInfo {
1688    #[inline]
1689    fn default() -> Self {
1690        Self {
1691            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1692            next: ptr::null(),
1693            plane_aspect: ImageAspectFlags::default(),
1694        }
1695    }
1696}
1697
1698unsafe impl Send for BindImagePlaneMemoryInfo {}
1699unsafe impl Sync for BindImagePlaneMemoryInfo {}
1700
1701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1702#[repr(C)]
1703#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1704pub struct BindIndexBufferIndirectCommandEXT {
1705    pub buffer_address: DeviceAddress,
1706    pub size: u32,
1707    pub index_type: IndexType,
1708}
1709
1710/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1711#[repr(C)]
1712#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1713pub struct BindIndexBufferIndirectCommandNV {
1714    pub buffer_address: DeviceAddress,
1715    pub size: u32,
1716    pub index_type: IndexType,
1717}
1718
1719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1720#[repr(C)]
1721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1722pub struct BindMemoryStatus {
1723    pub s_type: StructureType,
1724    pub next: *const c_void,
1725    pub result: *mut Result,
1726}
1727
1728impl Default for BindMemoryStatus {
1729    #[inline]
1730    fn default() -> Self {
1731        Self {
1732            s_type: StructureType::BIND_MEMORY_STATUS,
1733            next: ptr::null(),
1734            result: ptr::null_mut(),
1735        }
1736    }
1737}
1738
1739unsafe impl Send for BindMemoryStatus {}
1740unsafe impl Sync for BindMemoryStatus {}
1741
1742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1743#[repr(C)]
1744#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1745pub struct BindPipelineIndirectCommandNV {
1746    pub pipeline_address: DeviceAddress,
1747}
1748
1749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1750#[repr(C)]
1751#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1752pub struct BindShaderGroupIndirectCommandNV {
1753    pub group_index: u32,
1754}
1755
1756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1757#[repr(C)]
1758#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1759pub struct BindSparseInfo {
1760    pub s_type: StructureType,
1761    pub next: *const c_void,
1762    pub wait_semaphore_count: u32,
1763    pub wait_semaphores: *const Semaphore,
1764    pub buffer_bind_count: u32,
1765    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1766    pub image_opaque_bind_count: u32,
1767    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1768    pub image_bind_count: u32,
1769    pub image_binds: *const SparseImageMemoryBindInfo,
1770    pub signal_semaphore_count: u32,
1771    pub signal_semaphores: *const Semaphore,
1772}
1773
1774impl Default for BindSparseInfo {
1775    #[inline]
1776    fn default() -> Self {
1777        Self {
1778            s_type: StructureType::BIND_SPARSE_INFO,
1779            next: ptr::null(),
1780            wait_semaphore_count: u32::default(),
1781            wait_semaphores: ptr::null(),
1782            buffer_bind_count: u32::default(),
1783            buffer_binds: ptr::null(),
1784            image_opaque_bind_count: u32::default(),
1785            image_opaque_binds: ptr::null(),
1786            image_bind_count: u32::default(),
1787            image_binds: ptr::null(),
1788            signal_semaphore_count: u32::default(),
1789            signal_semaphores: ptr::null(),
1790        }
1791    }
1792}
1793
1794unsafe impl Send for BindSparseInfo {}
1795unsafe impl Sync for BindSparseInfo {}
1796
1797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html>
1798#[repr(C)]
1799#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1800pub struct BindTensorMemoryInfoARM {
1801    pub s_type: StructureType,
1802    pub next: *const c_void,
1803    pub tensor: TensorARM,
1804    pub memory: DeviceMemory,
1805    pub memory_offset: DeviceSize,
1806}
1807
1808impl Default for BindTensorMemoryInfoARM {
1809    #[inline]
1810    fn default() -> Self {
1811        Self {
1812            s_type: StructureType::BIND_TENSOR_MEMORY_INFO_ARM,
1813            next: ptr::null(),
1814            tensor: TensorARM::default(),
1815            memory: DeviceMemory::default(),
1816            memory_offset: DeviceSize::default(),
1817        }
1818    }
1819}
1820
1821unsafe impl Send for BindTensorMemoryInfoARM {}
1822unsafe impl Sync for BindTensorMemoryInfoARM {}
1823
1824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1825#[repr(C)]
1826#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1827pub struct BindVertexBufferIndirectCommandEXT {
1828    pub buffer_address: DeviceAddress,
1829    pub size: u32,
1830    pub stride: u32,
1831}
1832
1833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1834#[repr(C)]
1835#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1836pub struct BindVertexBufferIndirectCommandNV {
1837    pub buffer_address: DeviceAddress,
1838    pub size: u32,
1839    pub stride: u32,
1840}
1841
1842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1843#[repr(C)]
1844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1845pub struct BindVideoSessionMemoryInfoKHR {
1846    pub s_type: StructureType,
1847    pub next: *const c_void,
1848    pub memory_bind_index: u32,
1849    pub memory: DeviceMemory,
1850    pub memory_offset: DeviceSize,
1851    pub memory_size: DeviceSize,
1852}
1853
1854impl Default for BindVideoSessionMemoryInfoKHR {
1855    #[inline]
1856    fn default() -> Self {
1857        Self {
1858            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1859            next: ptr::null(),
1860            memory_bind_index: u32::default(),
1861            memory: DeviceMemory::default(),
1862            memory_offset: DeviceSize::default(),
1863            memory_size: DeviceSize::default(),
1864        }
1865    }
1866}
1867
1868unsafe impl Send for BindVideoSessionMemoryInfoKHR {}
1869unsafe impl Sync for BindVideoSessionMemoryInfoKHR {}
1870
1871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1872#[repr(C)]
1873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1874pub struct BlitImageCubicWeightsInfoQCOM {
1875    pub s_type: StructureType,
1876    pub next: *const c_void,
1877    pub cubic_weights: CubicFilterWeightsQCOM,
1878}
1879
1880impl Default for BlitImageCubicWeightsInfoQCOM {
1881    #[inline]
1882    fn default() -> Self {
1883        Self {
1884            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1885            next: ptr::null(),
1886            cubic_weights: CubicFilterWeightsQCOM::default(),
1887        }
1888    }
1889}
1890
1891unsafe impl Send for BlitImageCubicWeightsInfoQCOM {}
1892unsafe impl Sync for BlitImageCubicWeightsInfoQCOM {}
1893
1894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1895#[repr(C)]
1896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1897pub struct BlitImageInfo2 {
1898    pub s_type: StructureType,
1899    pub next: *const c_void,
1900    pub src_image: Image,
1901    pub src_image_layout: ImageLayout,
1902    pub dst_image: Image,
1903    pub dst_image_layout: ImageLayout,
1904    pub region_count: u32,
1905    pub regions: *const ImageBlit2,
1906    pub filter: Filter,
1907}
1908
1909impl Default for BlitImageInfo2 {
1910    #[inline]
1911    fn default() -> Self {
1912        Self {
1913            s_type: StructureType::BLIT_IMAGE_INFO_2,
1914            next: ptr::null(),
1915            src_image: Image::default(),
1916            src_image_layout: ImageLayout::default(),
1917            dst_image: Image::default(),
1918            dst_image_layout: ImageLayout::default(),
1919            region_count: u32::default(),
1920            regions: ptr::null(),
1921            filter: Filter::default(),
1922        }
1923    }
1924}
1925
1926unsafe impl Send for BlitImageInfo2 {}
1927unsafe impl Sync for BlitImageInfo2 {}
1928
1929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1930#[repr(C)]
1931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1932pub struct BufferCaptureDescriptorDataInfoEXT {
1933    pub s_type: StructureType,
1934    pub next: *const c_void,
1935    pub buffer: Buffer,
1936}
1937
1938impl Default for BufferCaptureDescriptorDataInfoEXT {
1939    #[inline]
1940    fn default() -> Self {
1941        Self {
1942            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1943            next: ptr::null(),
1944            buffer: Buffer::default(),
1945        }
1946    }
1947}
1948
1949unsafe impl Send for BufferCaptureDescriptorDataInfoEXT {}
1950unsafe impl Sync for BufferCaptureDescriptorDataInfoEXT {}
1951
1952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1953#[repr(C)]
1954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1955pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1956    pub s_type: StructureType,
1957    pub next: *const c_void,
1958    pub collection: BufferCollectionFUCHSIA,
1959    pub index: u32,
1960}
1961
1962impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1963    #[inline]
1964    fn default() -> Self {
1965        Self {
1966            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1967            next: ptr::null(),
1968            collection: BufferCollectionFUCHSIA::default(),
1969            index: u32::default(),
1970        }
1971    }
1972}
1973
1974unsafe impl Send for BufferCollectionBufferCreateInfoFUCHSIA {}
1975unsafe impl Sync for BufferCollectionBufferCreateInfoFUCHSIA {}
1976
1977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
1978#[repr(C)]
1979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1980pub struct BufferCollectionConstraintsInfoFUCHSIA {
1981    pub s_type: StructureType,
1982    pub next: *const c_void,
1983    pub min_buffer_count: u32,
1984    pub max_buffer_count: u32,
1985    pub min_buffer_count_for_camping: u32,
1986    pub min_buffer_count_for_dedicated_slack: u32,
1987    pub min_buffer_count_for_shared_slack: u32,
1988}
1989
1990impl Default for BufferCollectionConstraintsInfoFUCHSIA {
1991    #[inline]
1992    fn default() -> Self {
1993        Self {
1994            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
1995            next: ptr::null(),
1996            min_buffer_count: u32::default(),
1997            max_buffer_count: u32::default(),
1998            min_buffer_count_for_camping: u32::default(),
1999            min_buffer_count_for_dedicated_slack: u32::default(),
2000            min_buffer_count_for_shared_slack: u32::default(),
2001        }
2002    }
2003}
2004
2005unsafe impl Send for BufferCollectionConstraintsInfoFUCHSIA {}
2006unsafe impl Sync for BufferCollectionConstraintsInfoFUCHSIA {}
2007
2008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
2009#[repr(C)]
2010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2011pub struct BufferCollectionCreateInfoFUCHSIA {
2012    pub s_type: StructureType,
2013    pub next: *const c_void,
2014    pub collection_token: zx_handle_t,
2015}
2016
2017impl Default for BufferCollectionCreateInfoFUCHSIA {
2018    #[inline]
2019    fn default() -> Self {
2020        Self {
2021            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
2022            next: ptr::null(),
2023            collection_token: zx_handle_t::default(),
2024        }
2025    }
2026}
2027
2028unsafe impl Send for BufferCollectionCreateInfoFUCHSIA {}
2029unsafe impl Sync for BufferCollectionCreateInfoFUCHSIA {}
2030
2031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
2032#[repr(C)]
2033#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2034pub struct BufferCollectionImageCreateInfoFUCHSIA {
2035    pub s_type: StructureType,
2036    pub next: *const c_void,
2037    pub collection: BufferCollectionFUCHSIA,
2038    pub index: u32,
2039}
2040
2041impl Default for BufferCollectionImageCreateInfoFUCHSIA {
2042    #[inline]
2043    fn default() -> Self {
2044        Self {
2045            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
2046            next: ptr::null(),
2047            collection: BufferCollectionFUCHSIA::default(),
2048            index: u32::default(),
2049        }
2050    }
2051}
2052
2053unsafe impl Send for BufferCollectionImageCreateInfoFUCHSIA {}
2054unsafe impl Sync for BufferCollectionImageCreateInfoFUCHSIA {}
2055
2056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
2057#[repr(C)]
2058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2059pub struct BufferCollectionPropertiesFUCHSIA {
2060    pub s_type: StructureType,
2061    pub next: *mut c_void,
2062    pub memory_type_bits: u32,
2063    pub buffer_count: u32,
2064    pub create_info_index: u32,
2065    pub sysmem_pixel_format: u64,
2066    pub format_features: FormatFeatureFlags,
2067    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
2068    pub sampler_ycbcr_conversion_components: ComponentMapping,
2069    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
2070    pub suggested_ycbcr_range: SamplerYcbcrRange,
2071    pub suggested_x_chroma_offset: ChromaLocation,
2072    pub suggested_y_chroma_offset: ChromaLocation,
2073}
2074
2075impl Default for BufferCollectionPropertiesFUCHSIA {
2076    #[inline]
2077    fn default() -> Self {
2078        Self {
2079            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
2080            next: ptr::null_mut(),
2081            memory_type_bits: u32::default(),
2082            buffer_count: u32::default(),
2083            create_info_index: u32::default(),
2084            sysmem_pixel_format: u64::default(),
2085            format_features: FormatFeatureFlags::default(),
2086            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
2087            sampler_ycbcr_conversion_components: ComponentMapping::default(),
2088            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
2089            suggested_ycbcr_range: SamplerYcbcrRange::default(),
2090            suggested_x_chroma_offset: ChromaLocation::default(),
2091            suggested_y_chroma_offset: ChromaLocation::default(),
2092        }
2093    }
2094}
2095
2096unsafe impl Send for BufferCollectionPropertiesFUCHSIA {}
2097unsafe impl Sync for BufferCollectionPropertiesFUCHSIA {}
2098
2099/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
2100#[repr(C)]
2101#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2102pub struct BufferConstraintsInfoFUCHSIA {
2103    pub s_type: StructureType,
2104    pub next: *const c_void,
2105    pub create_info: BufferCreateInfo,
2106    pub required_format_features: FormatFeatureFlags,
2107    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
2108}
2109
2110impl Default for BufferConstraintsInfoFUCHSIA {
2111    #[inline]
2112    fn default() -> Self {
2113        Self {
2114            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
2115            next: ptr::null(),
2116            create_info: BufferCreateInfo::default(),
2117            required_format_features: FormatFeatureFlags::default(),
2118            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
2119        }
2120    }
2121}
2122
2123unsafe impl Send for BufferConstraintsInfoFUCHSIA {}
2124unsafe impl Sync for BufferConstraintsInfoFUCHSIA {}
2125
2126/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
2127#[repr(C)]
2128#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2129pub struct BufferCopy {
2130    pub src_offset: DeviceSize,
2131    pub dst_offset: DeviceSize,
2132    pub size: DeviceSize,
2133}
2134
2135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
2136#[repr(C)]
2137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2138pub struct BufferCopy2 {
2139    pub s_type: StructureType,
2140    pub next: *const c_void,
2141    pub src_offset: DeviceSize,
2142    pub dst_offset: DeviceSize,
2143    pub size: DeviceSize,
2144}
2145
2146impl Default for BufferCopy2 {
2147    #[inline]
2148    fn default() -> Self {
2149        Self {
2150            s_type: StructureType::BUFFER_COPY_2,
2151            next: ptr::null(),
2152            src_offset: DeviceSize::default(),
2153            dst_offset: DeviceSize::default(),
2154            size: DeviceSize::default(),
2155        }
2156    }
2157}
2158
2159unsafe impl Send for BufferCopy2 {}
2160unsafe impl Sync for BufferCopy2 {}
2161
2162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
2163#[repr(C)]
2164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2165pub struct BufferCreateInfo {
2166    pub s_type: StructureType,
2167    pub next: *const c_void,
2168    pub flags: BufferCreateFlags,
2169    pub size: DeviceSize,
2170    pub usage: BufferUsageFlags,
2171    pub sharing_mode: SharingMode,
2172    pub queue_family_index_count: u32,
2173    pub queue_family_indices: *const u32,
2174}
2175
2176impl Default for BufferCreateInfo {
2177    #[inline]
2178    fn default() -> Self {
2179        Self {
2180            s_type: StructureType::BUFFER_CREATE_INFO,
2181            next: ptr::null(),
2182            flags: BufferCreateFlags::default(),
2183            size: DeviceSize::default(),
2184            usage: BufferUsageFlags::default(),
2185            sharing_mode: SharingMode::default(),
2186            queue_family_index_count: u32::default(),
2187            queue_family_indices: ptr::null(),
2188        }
2189    }
2190}
2191
2192unsafe impl Send for BufferCreateInfo {}
2193unsafe impl Sync for BufferCreateInfo {}
2194
2195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
2196#[repr(C)]
2197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2198pub struct BufferDeviceAddressCreateInfoEXT {
2199    pub s_type: StructureType,
2200    pub next: *const c_void,
2201    pub device_address: DeviceAddress,
2202}
2203
2204impl Default for BufferDeviceAddressCreateInfoEXT {
2205    #[inline]
2206    fn default() -> Self {
2207        Self {
2208            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
2209            next: ptr::null(),
2210            device_address: DeviceAddress::default(),
2211        }
2212    }
2213}
2214
2215unsafe impl Send for BufferDeviceAddressCreateInfoEXT {}
2216unsafe impl Sync for BufferDeviceAddressCreateInfoEXT {}
2217
2218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
2219#[repr(C)]
2220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2221pub struct BufferDeviceAddressInfo {
2222    pub s_type: StructureType,
2223    pub next: *const c_void,
2224    pub buffer: Buffer,
2225}
2226
2227impl Default for BufferDeviceAddressInfo {
2228    #[inline]
2229    fn default() -> Self {
2230        Self {
2231            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
2232            next: ptr::null(),
2233            buffer: Buffer::default(),
2234        }
2235    }
2236}
2237
2238unsafe impl Send for BufferDeviceAddressInfo {}
2239unsafe impl Sync for BufferDeviceAddressInfo {}
2240
2241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
2242#[repr(C)]
2243#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2244pub struct BufferImageCopy {
2245    pub buffer_offset: DeviceSize,
2246    pub buffer_row_length: u32,
2247    pub buffer_image_height: u32,
2248    pub image_subresource: ImageSubresourceLayers,
2249    pub image_offset: Offset3D,
2250    pub image_extent: Extent3D,
2251}
2252
2253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
2254#[repr(C)]
2255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2256pub struct BufferImageCopy2 {
2257    pub s_type: StructureType,
2258    pub next: *const c_void,
2259    pub buffer_offset: DeviceSize,
2260    pub buffer_row_length: u32,
2261    pub buffer_image_height: u32,
2262    pub image_subresource: ImageSubresourceLayers,
2263    pub image_offset: Offset3D,
2264    pub image_extent: Extent3D,
2265}
2266
2267impl Default for BufferImageCopy2 {
2268    #[inline]
2269    fn default() -> Self {
2270        Self {
2271            s_type: StructureType::BUFFER_IMAGE_COPY_2,
2272            next: ptr::null(),
2273            buffer_offset: DeviceSize::default(),
2274            buffer_row_length: u32::default(),
2275            buffer_image_height: u32::default(),
2276            image_subresource: ImageSubresourceLayers::default(),
2277            image_offset: Offset3D::default(),
2278            image_extent: Extent3D::default(),
2279        }
2280    }
2281}
2282
2283unsafe impl Send for BufferImageCopy2 {}
2284unsafe impl Sync for BufferImageCopy2 {}
2285
2286/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
2287#[repr(C)]
2288#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2289pub struct BufferMemoryBarrier {
2290    pub s_type: StructureType,
2291    pub next: *const c_void,
2292    pub src_access_mask: AccessFlags,
2293    pub dst_access_mask: AccessFlags,
2294    pub src_queue_family_index: u32,
2295    pub dst_queue_family_index: u32,
2296    pub buffer: Buffer,
2297    pub offset: DeviceSize,
2298    pub size: DeviceSize,
2299}
2300
2301impl Default for BufferMemoryBarrier {
2302    #[inline]
2303    fn default() -> Self {
2304        Self {
2305            s_type: StructureType::BUFFER_MEMORY_BARRIER,
2306            next: ptr::null(),
2307            src_access_mask: AccessFlags::default(),
2308            dst_access_mask: AccessFlags::default(),
2309            src_queue_family_index: u32::default(),
2310            dst_queue_family_index: u32::default(),
2311            buffer: Buffer::default(),
2312            offset: DeviceSize::default(),
2313            size: DeviceSize::default(),
2314        }
2315    }
2316}
2317
2318unsafe impl Send for BufferMemoryBarrier {}
2319unsafe impl Sync for BufferMemoryBarrier {}
2320
2321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
2322#[repr(C)]
2323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2324pub struct BufferMemoryBarrier2 {
2325    pub s_type: StructureType,
2326    pub next: *const c_void,
2327    pub src_stage_mask: PipelineStageFlags2,
2328    pub src_access_mask: AccessFlags2,
2329    pub dst_stage_mask: PipelineStageFlags2,
2330    pub dst_access_mask: AccessFlags2,
2331    pub src_queue_family_index: u32,
2332    pub dst_queue_family_index: u32,
2333    pub buffer: Buffer,
2334    pub offset: DeviceSize,
2335    pub size: DeviceSize,
2336}
2337
2338impl Default for BufferMemoryBarrier2 {
2339    #[inline]
2340    fn default() -> Self {
2341        Self {
2342            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2343            next: ptr::null(),
2344            src_stage_mask: PipelineStageFlags2::default(),
2345            src_access_mask: AccessFlags2::default(),
2346            dst_stage_mask: PipelineStageFlags2::default(),
2347            dst_access_mask: AccessFlags2::default(),
2348            src_queue_family_index: u32::default(),
2349            dst_queue_family_index: u32::default(),
2350            buffer: Buffer::default(),
2351            offset: DeviceSize::default(),
2352            size: DeviceSize::default(),
2353        }
2354    }
2355}
2356
2357unsafe impl Send for BufferMemoryBarrier2 {}
2358unsafe impl Sync for BufferMemoryBarrier2 {}
2359
2360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2361#[repr(C)]
2362#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2363pub struct BufferMemoryRequirementsInfo2 {
2364    pub s_type: StructureType,
2365    pub next: *const c_void,
2366    pub buffer: Buffer,
2367}
2368
2369impl Default for BufferMemoryRequirementsInfo2 {
2370    #[inline]
2371    fn default() -> Self {
2372        Self {
2373            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2374            next: ptr::null(),
2375            buffer: Buffer::default(),
2376        }
2377    }
2378}
2379
2380unsafe impl Send for BufferMemoryRequirementsInfo2 {}
2381unsafe impl Sync for BufferMemoryRequirementsInfo2 {}
2382
2383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2384#[repr(C)]
2385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2386pub struct BufferOpaqueCaptureAddressCreateInfo {
2387    pub s_type: StructureType,
2388    pub next: *const c_void,
2389    pub opaque_capture_address: u64,
2390}
2391
2392impl Default for BufferOpaqueCaptureAddressCreateInfo {
2393    #[inline]
2394    fn default() -> Self {
2395        Self {
2396            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2397            next: ptr::null(),
2398            opaque_capture_address: u64::default(),
2399        }
2400    }
2401}
2402
2403unsafe impl Send for BufferOpaqueCaptureAddressCreateInfo {}
2404unsafe impl Sync for BufferOpaqueCaptureAddressCreateInfo {}
2405
2406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2407#[repr(C)]
2408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2409pub struct BufferUsageFlags2CreateInfo {
2410    pub s_type: StructureType,
2411    pub next: *const c_void,
2412    pub usage: BufferUsageFlags2,
2413}
2414
2415impl Default for BufferUsageFlags2CreateInfo {
2416    #[inline]
2417    fn default() -> Self {
2418        Self {
2419            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2420            next: ptr::null(),
2421            usage: BufferUsageFlags2::default(),
2422        }
2423    }
2424}
2425
2426unsafe impl Send for BufferUsageFlags2CreateInfo {}
2427unsafe impl Sync for BufferUsageFlags2CreateInfo {}
2428
2429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2430#[repr(C)]
2431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2432pub struct BufferViewCreateInfo {
2433    pub s_type: StructureType,
2434    pub next: *const c_void,
2435    pub flags: BufferViewCreateFlags,
2436    pub buffer: Buffer,
2437    pub format: Format,
2438    pub offset: DeviceSize,
2439    pub range: DeviceSize,
2440}
2441
2442impl Default for BufferViewCreateInfo {
2443    #[inline]
2444    fn default() -> Self {
2445        Self {
2446            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2447            next: ptr::null(),
2448            flags: BufferViewCreateFlags::default(),
2449            buffer: Buffer::default(),
2450            format: Format::default(),
2451            offset: DeviceSize::default(),
2452            range: DeviceSize::default(),
2453        }
2454    }
2455}
2456
2457unsafe impl Send for BufferViewCreateInfo {}
2458unsafe impl Sync for BufferViewCreateInfo {}
2459
2460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2461#[repr(C)]
2462#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2463pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2464    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2465    pub arg_count: u32,
2466    pub arg_data: StridedDeviceAddressNV,
2467}
2468
2469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2470#[repr(C)]
2471#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2472pub struct BuildPartitionedAccelerationStructureInfoNV {
2473    pub s_type: StructureType,
2474    pub next: *mut c_void,
2475    pub input: PartitionedAccelerationStructureInstancesInputNV,
2476    pub src_acceleration_structure_data: DeviceAddress,
2477    pub dst_acceleration_structure_data: DeviceAddress,
2478    pub scratch_data: DeviceAddress,
2479    pub src_infos: DeviceAddress,
2480    pub src_infos_count: DeviceAddress,
2481}
2482
2483impl Default for BuildPartitionedAccelerationStructureInfoNV {
2484    #[inline]
2485    fn default() -> Self {
2486        Self {
2487            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2488            next: ptr::null_mut(),
2489            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2490            src_acceleration_structure_data: DeviceAddress::default(),
2491            dst_acceleration_structure_data: DeviceAddress::default(),
2492            scratch_data: DeviceAddress::default(),
2493            src_infos: DeviceAddress::default(),
2494            src_infos_count: DeviceAddress::default(),
2495        }
2496    }
2497}
2498
2499unsafe impl Send for BuildPartitionedAccelerationStructureInfoNV {}
2500unsafe impl Sync for BuildPartitionedAccelerationStructureInfoNV {}
2501
2502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2503#[repr(C)]
2504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2505pub struct CalibratedTimestampInfoKHR {
2506    pub s_type: StructureType,
2507    pub next: *const c_void,
2508    pub time_domain: TimeDomainKHR,
2509}
2510
2511impl Default for CalibratedTimestampInfoKHR {
2512    #[inline]
2513    fn default() -> Self {
2514        Self {
2515            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2516            next: ptr::null(),
2517            time_domain: TimeDomainKHR::default(),
2518        }
2519    }
2520}
2521
2522unsafe impl Send for CalibratedTimestampInfoKHR {}
2523unsafe impl Sync for CalibratedTimestampInfoKHR {}
2524
2525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2526#[repr(C)]
2527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2528pub struct CheckpointData2NV {
2529    pub s_type: StructureType,
2530    pub next: *mut c_void,
2531    pub stage: PipelineStageFlags2,
2532    pub checkpoint_marker: *mut c_void,
2533}
2534
2535impl Default for CheckpointData2NV {
2536    #[inline]
2537    fn default() -> Self {
2538        Self {
2539            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2540            next: ptr::null_mut(),
2541            stage: PipelineStageFlags2::default(),
2542            checkpoint_marker: ptr::null_mut(),
2543        }
2544    }
2545}
2546
2547unsafe impl Send for CheckpointData2NV {}
2548unsafe impl Sync for CheckpointData2NV {}
2549
2550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2551#[repr(C)]
2552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2553pub struct CheckpointDataNV {
2554    pub s_type: StructureType,
2555    pub next: *mut c_void,
2556    pub stage: PipelineStageFlags,
2557    pub checkpoint_marker: *mut c_void,
2558}
2559
2560impl Default for CheckpointDataNV {
2561    #[inline]
2562    fn default() -> Self {
2563        Self {
2564            s_type: StructureType::CHECKPOINT_DATA_NV,
2565            next: ptr::null_mut(),
2566            stage: PipelineStageFlags::default(),
2567            checkpoint_marker: ptr::null_mut(),
2568        }
2569    }
2570}
2571
2572unsafe impl Send for CheckpointDataNV {}
2573unsafe impl Sync for CheckpointDataNV {}
2574
2575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2576#[repr(C)]
2577#[derive(Copy, Clone, Default, Debug)]
2578pub struct ClearAttachment {
2579    pub aspect_mask: ImageAspectFlags,
2580    pub color_attachment: u32,
2581    pub clear_value: ClearValue,
2582}
2583
2584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2585#[repr(C)]
2586#[derive(Copy, Clone, Default, Debug, PartialEq)]
2587pub struct ClearDepthStencilValue {
2588    pub depth: f32,
2589    pub stencil: u32,
2590}
2591
2592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2593#[repr(C)]
2594#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2595pub struct ClearRect {
2596    pub rect: Rect2D,
2597    pub base_array_layer: u32,
2598    pub layer_count: u32,
2599}
2600
2601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2602#[repr(C)]
2603#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2604pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2605    pub cluster_references_count: u32,
2606    pub cluster_references_stride: u32,
2607    pub cluster_references: DeviceAddress,
2608}
2609
2610bitfields32! {
2611    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2612        (triangle_count, with_triangle_count)[0 .. 9],
2613        (vertex_count, with_vertex_count)[9 .. 18],
2614        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2615        (index_type, with_index_type)[24 .. 28],
2616        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2617    }
2618}
2619
2620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2621#[repr(C)]
2622#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2623pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2624    pub cluster_id: u32,
2625    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2626    pub base_geometry_index_and_geometry_flags:
2627        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2628    pub index_buffer_stride: u16,
2629    pub vertex_buffer_stride: u16,
2630    pub geometry_index_and_flags_buffer_stride: u16,
2631    pub opacity_micromap_index_buffer_stride: u16,
2632    pub index_buffer: DeviceAddress,
2633    pub vertex_buffer: DeviceAddress,
2634    pub geometry_index_and_flags_buffer: DeviceAddress,
2635    pub opacity_micromap_array: DeviceAddress,
2636    pub opacity_micromap_index_buffer: DeviceAddress,
2637    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2638}
2639
2640bitfields32! {
2641    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2642        (triangle_count, with_triangle_count)[0 .. 9],
2643        (vertex_count, with_vertex_count)[9 .. 18],
2644        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2645        (index_type, with_index_type)[24 .. 28],
2646        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2647    }
2648}
2649
2650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2651#[repr(C)]
2652#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2653pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2654    pub cluster_id: u32,
2655    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2656    pub base_geometry_index_and_geometry_flags:
2657        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2658    pub index_buffer_stride: u16,
2659    pub vertex_buffer_stride: u16,
2660    pub geometry_index_and_flags_buffer_stride: u16,
2661    pub opacity_micromap_index_buffer_stride: u16,
2662    pub index_buffer: DeviceAddress,
2663    pub vertex_buffer: DeviceAddress,
2664    pub geometry_index_and_flags_buffer: DeviceAddress,
2665    pub opacity_micromap_array: DeviceAddress,
2666    pub opacity_micromap_index_buffer: DeviceAddress,
2667    pub instantiation_bounding_box_limit: DeviceAddress,
2668    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2669}
2670
2671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2672#[repr(C)]
2673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2674pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2675    pub s_type: StructureType,
2676    pub next: *mut c_void,
2677    pub max_total_cluster_count: u32,
2678    pub max_cluster_count_per_acceleration_structure: u32,
2679}
2680
2681impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2682    #[inline]
2683    fn default() -> Self {
2684        Self {
2685            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2686            next: ptr::null_mut(),
2687            max_total_cluster_count: u32::default(),
2688            max_cluster_count_per_acceleration_structure: u32::default(),
2689        }
2690    }
2691}
2692
2693unsafe impl Send for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2694unsafe impl Sync for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2695
2696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2697#[repr(C)]
2698#[derive(Copy, Clone, Debug)]
2699pub struct ClusterAccelerationStructureCommandsInfoNV {
2700    pub s_type: StructureType,
2701    pub next: *mut c_void,
2702    pub input: ClusterAccelerationStructureInputInfoNV,
2703    pub dst_implicit_data: DeviceAddress,
2704    pub scratch_data: DeviceAddress,
2705    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2706    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2707    pub src_infos_array: StridedDeviceAddressRegionKHR,
2708    pub src_infos_count: DeviceAddress,
2709    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2710}
2711
2712impl Default for ClusterAccelerationStructureCommandsInfoNV {
2713    #[inline]
2714    fn default() -> Self {
2715        Self {
2716            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2717            next: ptr::null_mut(),
2718            input: ClusterAccelerationStructureInputInfoNV::default(),
2719            dst_implicit_data: DeviceAddress::default(),
2720            scratch_data: DeviceAddress::default(),
2721            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2722            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2723            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2724            src_infos_count: DeviceAddress::default(),
2725            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2726            ),
2727        }
2728    }
2729}
2730
2731unsafe impl Send for ClusterAccelerationStructureCommandsInfoNV {}
2732unsafe impl Sync for ClusterAccelerationStructureCommandsInfoNV {}
2733
2734bitfields32! {
2735    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2736        (geometry_index, with_geometry_index)[0 .. 24],
2737        (reserved, with_reserved)[24 .. 29],
2738        (geometry_flags, with_geometry_flags)[29 .. 32],
2739    }
2740}
2741
2742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2743#[repr(C)]
2744#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2745pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2746    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2747}
2748
2749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html>
2750#[repr(C)]
2751#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2752pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNV {
2753    pub cluster_template_address: DeviceAddress,
2754}
2755
2756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2757#[repr(C)]
2758#[derive(Copy, Clone, Debug)]
2759pub struct ClusterAccelerationStructureInputInfoNV {
2760    pub s_type: StructureType,
2761    pub next: *mut c_void,
2762    pub max_acceleration_structure_count: u32,
2763    pub flags: BuildAccelerationStructureFlagsKHR,
2764    pub op_type: ClusterAccelerationStructureOpTypeNV,
2765    pub op_mode: ClusterAccelerationStructureOpModeNV,
2766    pub op_input: ClusterAccelerationStructureOpInputNV,
2767}
2768
2769impl Default for ClusterAccelerationStructureInputInfoNV {
2770    #[inline]
2771    fn default() -> Self {
2772        Self {
2773            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2774            next: ptr::null_mut(),
2775            max_acceleration_structure_count: u32::default(),
2776            flags: BuildAccelerationStructureFlagsKHR::default(),
2777            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2778            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2779            op_input: ClusterAccelerationStructureOpInputNV::default(),
2780        }
2781    }
2782}
2783
2784unsafe impl Send for ClusterAccelerationStructureInputInfoNV {}
2785unsafe impl Sync for ClusterAccelerationStructureInputInfoNV {}
2786
2787bitfields32! {
2788    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2789        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2790        (reserved, with_reserved)[24 .. 32],
2791    }
2792}
2793
2794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2795#[repr(C)]
2796#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2797pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2798    pub cluster_id_offset: u32,
2799    pub cluster_template_address: DeviceAddress,
2800    pub vertex_buffer: StridedDeviceAddressNV,
2801    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2802}
2803
2804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2805#[repr(C)]
2806#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2807pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2808    pub src_acceleration_structure: DeviceAddress,
2809}
2810
2811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2812#[repr(C)]
2813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2814pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2815    pub s_type: StructureType,
2816    pub next: *mut c_void,
2817    pub type_: ClusterAccelerationStructureTypeNV,
2818    pub no_move_overlap: Bool32,
2819    pub max_moved_bytes: DeviceSize,
2820}
2821
2822impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2823    #[inline]
2824    fn default() -> Self {
2825        Self {
2826            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2827            next: ptr::null_mut(),
2828            type_: ClusterAccelerationStructureTypeNV::default(),
2829            no_move_overlap: Bool32::default(),
2830            max_moved_bytes: DeviceSize::default(),
2831        }
2832    }
2833}
2834
2835unsafe impl Send for ClusterAccelerationStructureMoveObjectsInputNV {}
2836unsafe impl Sync for ClusterAccelerationStructureMoveObjectsInputNV {}
2837
2838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2839#[repr(C)]
2840#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2841pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2842    pub s_type: StructureType,
2843    pub next: *mut c_void,
2844    pub vertex_format: Format,
2845    pub max_geometry_index_value: u32,
2846    pub max_cluster_unique_geometry_count: u32,
2847    pub max_cluster_triangle_count: u32,
2848    pub max_cluster_vertex_count: u32,
2849    pub max_total_triangle_count: u32,
2850    pub max_total_vertex_count: u32,
2851    pub min_position_truncate_bit_count: u32,
2852}
2853
2854impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2855    #[inline]
2856    fn default() -> Self {
2857        Self {
2858            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2859            next: ptr::null_mut(),
2860            vertex_format: Format::default(),
2861            max_geometry_index_value: u32::default(),
2862            max_cluster_unique_geometry_count: u32::default(),
2863            max_cluster_triangle_count: u32::default(),
2864            max_cluster_vertex_count: u32::default(),
2865            max_total_triangle_count: u32::default(),
2866            max_total_vertex_count: u32::default(),
2867            min_position_truncate_bit_count: u32::default(),
2868        }
2869    }
2870}
2871
2872unsafe impl Send for ClusterAccelerationStructureTriangleClusterInputNV {}
2873unsafe impl Sync for ClusterAccelerationStructureTriangleClusterInputNV {}
2874
2875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2876#[repr(C)]
2877#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2878pub struct CoarseSampleLocationNV {
2879    pub pixel_x: u32,
2880    pub pixel_y: u32,
2881    pub sample: u32,
2882}
2883
2884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2885#[repr(C)]
2886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2887pub struct CoarseSampleOrderCustomNV {
2888    pub shading_rate: ShadingRatePaletteEntryNV,
2889    pub sample_count: u32,
2890    pub sample_location_count: u32,
2891    pub sample_locations: *const CoarseSampleLocationNV,
2892}
2893
2894impl Default for CoarseSampleOrderCustomNV {
2895    #[inline]
2896    fn default() -> Self {
2897        Self {
2898            shading_rate: ShadingRatePaletteEntryNV::default(),
2899            sample_count: u32::default(),
2900            sample_location_count: u32::default(),
2901            sample_locations: ptr::null(),
2902        }
2903    }
2904}
2905
2906unsafe impl Send for CoarseSampleOrderCustomNV {}
2907unsafe impl Sync for CoarseSampleOrderCustomNV {}
2908
2909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2910#[repr(C)]
2911#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2912pub struct ColorBlendAdvancedEXT {
2913    pub advanced_blend_op: BlendOp,
2914    pub src_premultiplied: Bool32,
2915    pub dst_premultiplied: Bool32,
2916    pub blend_overlap: BlendOverlapEXT,
2917    pub clamp_results: Bool32,
2918}
2919
2920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2921#[repr(C)]
2922#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2923pub struct ColorBlendEquationEXT {
2924    pub src_color_blend_factor: BlendFactor,
2925    pub dst_color_blend_factor: BlendFactor,
2926    pub color_blend_op: BlendOp,
2927    pub src_alpha_blend_factor: BlendFactor,
2928    pub dst_alpha_blend_factor: BlendFactor,
2929    pub alpha_blend_op: BlendOp,
2930}
2931
2932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2933#[repr(C)]
2934#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2935pub struct CommandBufferAllocateInfo {
2936    pub s_type: StructureType,
2937    pub next: *const c_void,
2938    pub command_pool: CommandPool,
2939    pub level: CommandBufferLevel,
2940    pub command_buffer_count: u32,
2941}
2942
2943impl Default for CommandBufferAllocateInfo {
2944    #[inline]
2945    fn default() -> Self {
2946        Self {
2947            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2948            next: ptr::null(),
2949            command_pool: CommandPool::default(),
2950            level: CommandBufferLevel::default(),
2951            command_buffer_count: u32::default(),
2952        }
2953    }
2954}
2955
2956unsafe impl Send for CommandBufferAllocateInfo {}
2957unsafe impl Sync for CommandBufferAllocateInfo {}
2958
2959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2960#[repr(C)]
2961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2962pub struct CommandBufferBeginInfo {
2963    pub s_type: StructureType,
2964    pub next: *const c_void,
2965    pub flags: CommandBufferUsageFlags,
2966    pub inheritance_info: *const CommandBufferInheritanceInfo,
2967}
2968
2969impl Default for CommandBufferBeginInfo {
2970    #[inline]
2971    fn default() -> Self {
2972        Self {
2973            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
2974            next: ptr::null(),
2975            flags: CommandBufferUsageFlags::default(),
2976            inheritance_info: ptr::null(),
2977        }
2978    }
2979}
2980
2981unsafe impl Send for CommandBufferBeginInfo {}
2982unsafe impl Sync for CommandBufferBeginInfo {}
2983
2984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
2985#[repr(C)]
2986#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2987pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
2988    pub s_type: StructureType,
2989    pub next: *const c_void,
2990    pub conditional_rendering_enable: Bool32,
2991}
2992
2993impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
2994    #[inline]
2995    fn default() -> Self {
2996        Self {
2997            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
2998            next: ptr::null(),
2999            conditional_rendering_enable: Bool32::default(),
3000        }
3001    }
3002}
3003
3004unsafe impl Send for CommandBufferInheritanceConditionalRenderingInfoEXT {}
3005unsafe impl Sync for CommandBufferInheritanceConditionalRenderingInfoEXT {}
3006
3007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
3008#[repr(C)]
3009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3010pub struct CommandBufferInheritanceInfo {
3011    pub s_type: StructureType,
3012    pub next: *const c_void,
3013    pub render_pass: RenderPass,
3014    pub subpass: u32,
3015    pub framebuffer: Framebuffer,
3016    pub occlusion_query_enable: Bool32,
3017    pub query_flags: QueryControlFlags,
3018    pub pipeline_statistics: QueryPipelineStatisticFlags,
3019}
3020
3021impl Default for CommandBufferInheritanceInfo {
3022    #[inline]
3023    fn default() -> Self {
3024        Self {
3025            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
3026            next: ptr::null(),
3027            render_pass: RenderPass::default(),
3028            subpass: u32::default(),
3029            framebuffer: Framebuffer::default(),
3030            occlusion_query_enable: Bool32::default(),
3031            query_flags: QueryControlFlags::default(),
3032            pipeline_statistics: QueryPipelineStatisticFlags::default(),
3033        }
3034    }
3035}
3036
3037unsafe impl Send for CommandBufferInheritanceInfo {}
3038unsafe impl Sync for CommandBufferInheritanceInfo {}
3039
3040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
3041#[repr(C)]
3042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3043pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
3044    pub s_type: StructureType,
3045    pub next: *const c_void,
3046    pub transform: SurfaceTransformFlagsKHR,
3047    pub render_area: Rect2D,
3048}
3049
3050impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
3051    #[inline]
3052    fn default() -> Self {
3053        Self {
3054            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
3055            next: ptr::null(),
3056            transform: SurfaceTransformFlagsKHR::default(),
3057            render_area: Rect2D::default(),
3058        }
3059    }
3060}
3061
3062unsafe impl Send for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3063unsafe impl Sync for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3064
3065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
3066#[repr(C)]
3067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3068pub struct CommandBufferInheritanceRenderingInfo {
3069    pub s_type: StructureType,
3070    pub next: *const c_void,
3071    pub flags: RenderingFlags,
3072    pub view_mask: u32,
3073    pub color_attachment_count: u32,
3074    pub color_attachment_formats: *const Format,
3075    pub depth_attachment_format: Format,
3076    pub stencil_attachment_format: Format,
3077    pub rasterization_samples: SampleCountFlags,
3078}
3079
3080impl Default for CommandBufferInheritanceRenderingInfo {
3081    #[inline]
3082    fn default() -> Self {
3083        Self {
3084            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
3085            next: ptr::null(),
3086            flags: RenderingFlags::default(),
3087            view_mask: u32::default(),
3088            color_attachment_count: u32::default(),
3089            color_attachment_formats: ptr::null(),
3090            depth_attachment_format: Format::default(),
3091            stencil_attachment_format: Format::default(),
3092            rasterization_samples: SampleCountFlags::default(),
3093        }
3094    }
3095}
3096
3097unsafe impl Send for CommandBufferInheritanceRenderingInfo {}
3098unsafe impl Sync for CommandBufferInheritanceRenderingInfo {}
3099
3100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
3101#[repr(C)]
3102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3103pub struct CommandBufferInheritanceViewportScissorInfoNV {
3104    pub s_type: StructureType,
3105    pub next: *const c_void,
3106    pub viewport_scissor_2d: Bool32,
3107    pub viewport_depth_count: u32,
3108    pub viewport_depths: *const Viewport,
3109}
3110
3111impl Default for CommandBufferInheritanceViewportScissorInfoNV {
3112    #[inline]
3113    fn default() -> Self {
3114        Self {
3115            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
3116            next: ptr::null(),
3117            viewport_scissor_2d: Bool32::default(),
3118            viewport_depth_count: u32::default(),
3119            viewport_depths: ptr::null(),
3120        }
3121    }
3122}
3123
3124unsafe impl Send for CommandBufferInheritanceViewportScissorInfoNV {}
3125unsafe impl Sync for CommandBufferInheritanceViewportScissorInfoNV {}
3126
3127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
3128#[repr(C)]
3129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3130pub struct CommandBufferSubmitInfo {
3131    pub s_type: StructureType,
3132    pub next: *const c_void,
3133    pub command_buffer: CommandBuffer,
3134    pub device_mask: u32,
3135}
3136
3137impl Default for CommandBufferSubmitInfo {
3138    #[inline]
3139    fn default() -> Self {
3140        Self {
3141            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
3142            next: ptr::null(),
3143            command_buffer: CommandBuffer::default(),
3144            device_mask: u32::default(),
3145        }
3146    }
3147}
3148
3149unsafe impl Send for CommandBufferSubmitInfo {}
3150unsafe impl Sync for CommandBufferSubmitInfo {}
3151
3152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
3153#[repr(C)]
3154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3155pub struct CommandPoolCreateInfo {
3156    pub s_type: StructureType,
3157    pub next: *const c_void,
3158    pub flags: CommandPoolCreateFlags,
3159    pub queue_family_index: u32,
3160}
3161
3162impl Default for CommandPoolCreateInfo {
3163    #[inline]
3164    fn default() -> Self {
3165        Self {
3166            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
3167            next: ptr::null(),
3168            flags: CommandPoolCreateFlags::default(),
3169            queue_family_index: u32::default(),
3170        }
3171    }
3172}
3173
3174unsafe impl Send for CommandPoolCreateInfo {}
3175unsafe impl Sync for CommandPoolCreateInfo {}
3176
3177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
3178#[repr(C)]
3179#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3180pub struct ComponentMapping {
3181    pub r: ComponentSwizzle,
3182    pub g: ComponentSwizzle,
3183    pub b: ComponentSwizzle,
3184    pub a: ComponentSwizzle,
3185}
3186
3187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputeOccupancyPriorityParametersNV.html>
3188#[repr(C)]
3189#[derive(Copy, Clone, Debug, PartialEq)]
3190pub struct ComputeOccupancyPriorityParametersNV {
3191    pub s_type: StructureType,
3192    pub next: *const c_void,
3193    pub occupancy_priority: f32,
3194    pub occupancy_throttling: f32,
3195}
3196
3197impl Default for ComputeOccupancyPriorityParametersNV {
3198    #[inline]
3199    fn default() -> Self {
3200        Self {
3201            s_type: StructureType::COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV,
3202            next: ptr::null(),
3203            occupancy_priority: f32::default(),
3204            occupancy_throttling: f32::default(),
3205        }
3206    }
3207}
3208
3209unsafe impl Send for ComputeOccupancyPriorityParametersNV {}
3210unsafe impl Sync for ComputeOccupancyPriorityParametersNV {}
3211
3212/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
3213#[repr(C)]
3214#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3215pub struct ComputePipelineCreateInfo {
3216    pub s_type: StructureType,
3217    pub next: *const c_void,
3218    pub flags: PipelineCreateFlags,
3219    pub stage: PipelineShaderStageCreateInfo,
3220    pub layout: PipelineLayout,
3221    pub base_pipeline_handle: Pipeline,
3222    pub base_pipeline_index: i32,
3223}
3224
3225impl Default for ComputePipelineCreateInfo {
3226    #[inline]
3227    fn default() -> Self {
3228        Self {
3229            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
3230            next: ptr::null(),
3231            flags: PipelineCreateFlags::default(),
3232            stage: PipelineShaderStageCreateInfo::default(),
3233            layout: PipelineLayout::default(),
3234            base_pipeline_handle: Pipeline::default(),
3235            base_pipeline_index: i32::default(),
3236        }
3237    }
3238}
3239
3240unsafe impl Send for ComputePipelineCreateInfo {}
3241unsafe impl Sync for ComputePipelineCreateInfo {}
3242
3243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
3244#[repr(C)]
3245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3246pub struct ComputePipelineIndirectBufferInfoNV {
3247    pub s_type: StructureType,
3248    pub next: *const c_void,
3249    pub device_address: DeviceAddress,
3250    pub size: DeviceSize,
3251    pub pipeline_device_address_capture_replay: DeviceAddress,
3252}
3253
3254impl Default for ComputePipelineIndirectBufferInfoNV {
3255    #[inline]
3256    fn default() -> Self {
3257        Self {
3258            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
3259            next: ptr::null(),
3260            device_address: DeviceAddress::default(),
3261            size: DeviceSize::default(),
3262            pipeline_device_address_capture_replay: DeviceAddress::default(),
3263        }
3264    }
3265}
3266
3267unsafe impl Send for ComputePipelineIndirectBufferInfoNV {}
3268unsafe impl Sync for ComputePipelineIndirectBufferInfoNV {}
3269
3270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
3271#[repr(C)]
3272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3273pub struct ConditionalRenderingBeginInfoEXT {
3274    pub s_type: StructureType,
3275    pub next: *const c_void,
3276    pub buffer: Buffer,
3277    pub offset: DeviceSize,
3278    pub flags: ConditionalRenderingFlagsEXT,
3279}
3280
3281impl Default for ConditionalRenderingBeginInfoEXT {
3282    #[inline]
3283    fn default() -> Self {
3284        Self {
3285            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
3286            next: ptr::null(),
3287            buffer: Buffer::default(),
3288            offset: DeviceSize::default(),
3289            flags: ConditionalRenderingFlagsEXT::default(),
3290        }
3291    }
3292}
3293
3294unsafe impl Send for ConditionalRenderingBeginInfoEXT {}
3295unsafe impl Sync for ConditionalRenderingBeginInfoEXT {}
3296
3297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
3298#[repr(C)]
3299#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3300pub struct ConformanceVersion {
3301    pub major: u8,
3302    pub minor: u8,
3303    pub subminor: u8,
3304    pub patch: u8,
3305}
3306
3307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
3308#[repr(C)]
3309#[derive(Copy, Clone, Debug)]
3310pub struct ConvertCooperativeVectorMatrixInfoNV {
3311    pub s_type: StructureType,
3312    pub next: *const c_void,
3313    pub src_size: usize,
3314    pub src_data: DeviceOrHostAddressConstKHR,
3315    pub dst_size: *mut usize,
3316    pub dst_data: DeviceOrHostAddressKHR,
3317    pub src_component_type: ComponentTypeKHR,
3318    pub dst_component_type: ComponentTypeKHR,
3319    pub num_rows: u32,
3320    pub num_columns: u32,
3321    pub src_layout: CooperativeVectorMatrixLayoutNV,
3322    pub src_stride: usize,
3323    pub dst_layout: CooperativeVectorMatrixLayoutNV,
3324    pub dst_stride: usize,
3325}
3326
3327impl Default for ConvertCooperativeVectorMatrixInfoNV {
3328    #[inline]
3329    fn default() -> Self {
3330        Self {
3331            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
3332            next: ptr::null(),
3333            src_size: usize::default(),
3334            src_data: DeviceOrHostAddressConstKHR::default(),
3335            dst_size: ptr::null_mut(),
3336            dst_data: DeviceOrHostAddressKHR::default(),
3337            src_component_type: ComponentTypeKHR::default(),
3338            dst_component_type: ComponentTypeKHR::default(),
3339            num_rows: u32::default(),
3340            num_columns: u32::default(),
3341            src_layout: CooperativeVectorMatrixLayoutNV::default(),
3342            src_stride: usize::default(),
3343            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
3344            dst_stride: usize::default(),
3345        }
3346    }
3347}
3348
3349unsafe impl Send for ConvertCooperativeVectorMatrixInfoNV {}
3350unsafe impl Sync for ConvertCooperativeVectorMatrixInfoNV {}
3351
3352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
3353#[repr(C)]
3354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3355pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
3356    pub s_type: StructureType,
3357    pub next: *mut c_void,
3358    pub m_granularity: u32,
3359    pub n_granularity: u32,
3360    pub k_granularity: u32,
3361    pub a_type: ComponentTypeKHR,
3362    pub b_type: ComponentTypeKHR,
3363    pub c_type: ComponentTypeKHR,
3364    pub result_type: ComponentTypeKHR,
3365    pub saturating_accumulation: Bool32,
3366    pub scope: ScopeKHR,
3367    pub workgroup_invocations: u32,
3368}
3369
3370impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
3371    #[inline]
3372    fn default() -> Self {
3373        Self {
3374            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
3375            next: ptr::null_mut(),
3376            m_granularity: u32::default(),
3377            n_granularity: u32::default(),
3378            k_granularity: u32::default(),
3379            a_type: ComponentTypeKHR::default(),
3380            b_type: ComponentTypeKHR::default(),
3381            c_type: ComponentTypeKHR::default(),
3382            result_type: ComponentTypeKHR::default(),
3383            saturating_accumulation: Bool32::default(),
3384            scope: ScopeKHR::default(),
3385            workgroup_invocations: u32::default(),
3386        }
3387    }
3388}
3389
3390unsafe impl Send for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3391unsafe impl Sync for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3392
3393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
3394#[repr(C)]
3395#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3396pub struct CooperativeMatrixPropertiesKHR {
3397    pub s_type: StructureType,
3398    pub next: *mut c_void,
3399    pub m_size: u32,
3400    pub n_size: u32,
3401    pub k_size: u32,
3402    pub a_type: ComponentTypeKHR,
3403    pub b_type: ComponentTypeKHR,
3404    pub c_type: ComponentTypeKHR,
3405    pub result_type: ComponentTypeKHR,
3406    pub saturating_accumulation: Bool32,
3407    pub scope: ScopeKHR,
3408}
3409
3410impl Default for CooperativeMatrixPropertiesKHR {
3411    #[inline]
3412    fn default() -> Self {
3413        Self {
3414            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
3415            next: ptr::null_mut(),
3416            m_size: u32::default(),
3417            n_size: u32::default(),
3418            k_size: u32::default(),
3419            a_type: ComponentTypeKHR::default(),
3420            b_type: ComponentTypeKHR::default(),
3421            c_type: ComponentTypeKHR::default(),
3422            result_type: ComponentTypeKHR::default(),
3423            saturating_accumulation: Bool32::default(),
3424            scope: ScopeKHR::default(),
3425        }
3426    }
3427}
3428
3429unsafe impl Send for CooperativeMatrixPropertiesKHR {}
3430unsafe impl Sync for CooperativeMatrixPropertiesKHR {}
3431
3432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
3433#[repr(C)]
3434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3435pub struct CooperativeMatrixPropertiesNV {
3436    pub s_type: StructureType,
3437    pub next: *mut c_void,
3438    pub m_size: u32,
3439    pub n_size: u32,
3440    pub k_size: u32,
3441    pub a_type: ComponentTypeNV,
3442    pub b_type: ComponentTypeNV,
3443    pub c_type: ComponentTypeNV,
3444    pub d_type: ComponentTypeNV,
3445    pub scope: ScopeNV,
3446}
3447
3448impl Default for CooperativeMatrixPropertiesNV {
3449    #[inline]
3450    fn default() -> Self {
3451        Self {
3452            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
3453            next: ptr::null_mut(),
3454            m_size: u32::default(),
3455            n_size: u32::default(),
3456            k_size: u32::default(),
3457            a_type: ComponentTypeNV::default(),
3458            b_type: ComponentTypeNV::default(),
3459            c_type: ComponentTypeNV::default(),
3460            d_type: ComponentTypeNV::default(),
3461            scope: ScopeNV::default(),
3462        }
3463    }
3464}
3465
3466unsafe impl Send for CooperativeMatrixPropertiesNV {}
3467unsafe impl Sync for CooperativeMatrixPropertiesNV {}
3468
3469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3470#[repr(C)]
3471#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3472pub struct CooperativeVectorPropertiesNV {
3473    pub s_type: StructureType,
3474    pub next: *mut c_void,
3475    pub input_type: ComponentTypeKHR,
3476    pub input_interpretation: ComponentTypeKHR,
3477    pub matrix_interpretation: ComponentTypeKHR,
3478    pub bias_interpretation: ComponentTypeKHR,
3479    pub result_type: ComponentTypeKHR,
3480    pub transpose: Bool32,
3481}
3482
3483impl Default for CooperativeVectorPropertiesNV {
3484    #[inline]
3485    fn default() -> Self {
3486        Self {
3487            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3488            next: ptr::null_mut(),
3489            input_type: ComponentTypeKHR::default(),
3490            input_interpretation: ComponentTypeKHR::default(),
3491            matrix_interpretation: ComponentTypeKHR::default(),
3492            bias_interpretation: ComponentTypeKHR::default(),
3493            result_type: ComponentTypeKHR::default(),
3494            transpose: Bool32::default(),
3495        }
3496    }
3497}
3498
3499unsafe impl Send for CooperativeVectorPropertiesNV {}
3500unsafe impl Sync for CooperativeVectorPropertiesNV {}
3501
3502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3503#[repr(C)]
3504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3505pub struct CopyAccelerationStructureInfoKHR {
3506    pub s_type: StructureType,
3507    pub next: *const c_void,
3508    pub src: AccelerationStructureKHR,
3509    pub dst: AccelerationStructureKHR,
3510    pub mode: CopyAccelerationStructureModeKHR,
3511}
3512
3513impl Default for CopyAccelerationStructureInfoKHR {
3514    #[inline]
3515    fn default() -> Self {
3516        Self {
3517            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3518            next: ptr::null(),
3519            src: AccelerationStructureKHR::default(),
3520            dst: AccelerationStructureKHR::default(),
3521            mode: CopyAccelerationStructureModeKHR::default(),
3522        }
3523    }
3524}
3525
3526unsafe impl Send for CopyAccelerationStructureInfoKHR {}
3527unsafe impl Sync for CopyAccelerationStructureInfoKHR {}
3528
3529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3530#[repr(C)]
3531#[derive(Copy, Clone, Debug)]
3532pub struct CopyAccelerationStructureToMemoryInfoKHR {
3533    pub s_type: StructureType,
3534    pub next: *const c_void,
3535    pub src: AccelerationStructureKHR,
3536    pub dst: DeviceOrHostAddressKHR,
3537    pub mode: CopyAccelerationStructureModeKHR,
3538}
3539
3540impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3541    #[inline]
3542    fn default() -> Self {
3543        Self {
3544            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3545            next: ptr::null(),
3546            src: AccelerationStructureKHR::default(),
3547            dst: DeviceOrHostAddressKHR::default(),
3548            mode: CopyAccelerationStructureModeKHR::default(),
3549        }
3550    }
3551}
3552
3553unsafe impl Send for CopyAccelerationStructureToMemoryInfoKHR {}
3554unsafe impl Sync for CopyAccelerationStructureToMemoryInfoKHR {}
3555
3556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3557#[repr(C)]
3558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3559pub struct CopyBufferInfo2 {
3560    pub s_type: StructureType,
3561    pub next: *const c_void,
3562    pub src_buffer: Buffer,
3563    pub dst_buffer: Buffer,
3564    pub region_count: u32,
3565    pub regions: *const BufferCopy2,
3566}
3567
3568impl Default for CopyBufferInfo2 {
3569    #[inline]
3570    fn default() -> Self {
3571        Self {
3572            s_type: StructureType::COPY_BUFFER_INFO_2,
3573            next: ptr::null(),
3574            src_buffer: Buffer::default(),
3575            dst_buffer: Buffer::default(),
3576            region_count: u32::default(),
3577            regions: ptr::null(),
3578        }
3579    }
3580}
3581
3582unsafe impl Send for CopyBufferInfo2 {}
3583unsafe impl Sync for CopyBufferInfo2 {}
3584
3585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3586#[repr(C)]
3587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3588pub struct CopyBufferToImageInfo2 {
3589    pub s_type: StructureType,
3590    pub next: *const c_void,
3591    pub src_buffer: Buffer,
3592    pub dst_image: Image,
3593    pub dst_image_layout: ImageLayout,
3594    pub region_count: u32,
3595    pub regions: *const BufferImageCopy2,
3596}
3597
3598impl Default for CopyBufferToImageInfo2 {
3599    #[inline]
3600    fn default() -> Self {
3601        Self {
3602            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3603            next: ptr::null(),
3604            src_buffer: Buffer::default(),
3605            dst_image: Image::default(),
3606            dst_image_layout: ImageLayout::default(),
3607            region_count: u32::default(),
3608            regions: ptr::null(),
3609        }
3610    }
3611}
3612
3613unsafe impl Send for CopyBufferToImageInfo2 {}
3614unsafe impl Sync for CopyBufferToImageInfo2 {}
3615
3616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3617#[repr(C)]
3618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3619pub struct CopyCommandTransformInfoQCOM {
3620    pub s_type: StructureType,
3621    pub next: *const c_void,
3622    pub transform: SurfaceTransformFlagsKHR,
3623}
3624
3625impl Default for CopyCommandTransformInfoQCOM {
3626    #[inline]
3627    fn default() -> Self {
3628        Self {
3629            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3630            next: ptr::null(),
3631            transform: SurfaceTransformFlagsKHR::default(),
3632        }
3633    }
3634}
3635
3636unsafe impl Send for CopyCommandTransformInfoQCOM {}
3637unsafe impl Sync for CopyCommandTransformInfoQCOM {}
3638
3639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3640#[repr(C)]
3641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3642pub struct CopyDescriptorSet {
3643    pub s_type: StructureType,
3644    pub next: *const c_void,
3645    pub src_set: DescriptorSet,
3646    pub src_binding: u32,
3647    pub src_array_element: u32,
3648    pub dst_set: DescriptorSet,
3649    pub dst_binding: u32,
3650    pub dst_array_element: u32,
3651    pub descriptor_count: u32,
3652}
3653
3654impl Default for CopyDescriptorSet {
3655    #[inline]
3656    fn default() -> Self {
3657        Self {
3658            s_type: StructureType::COPY_DESCRIPTOR_SET,
3659            next: ptr::null(),
3660            src_set: DescriptorSet::default(),
3661            src_binding: u32::default(),
3662            src_array_element: u32::default(),
3663            dst_set: DescriptorSet::default(),
3664            dst_binding: u32::default(),
3665            dst_array_element: u32::default(),
3666            descriptor_count: u32::default(),
3667        }
3668    }
3669}
3670
3671unsafe impl Send for CopyDescriptorSet {}
3672unsafe impl Sync for CopyDescriptorSet {}
3673
3674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3675#[repr(C)]
3676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3677pub struct CopyImageInfo2 {
3678    pub s_type: StructureType,
3679    pub next: *const c_void,
3680    pub src_image: Image,
3681    pub src_image_layout: ImageLayout,
3682    pub dst_image: Image,
3683    pub dst_image_layout: ImageLayout,
3684    pub region_count: u32,
3685    pub regions: *const ImageCopy2,
3686}
3687
3688impl Default for CopyImageInfo2 {
3689    #[inline]
3690    fn default() -> Self {
3691        Self {
3692            s_type: StructureType::COPY_IMAGE_INFO_2,
3693            next: ptr::null(),
3694            src_image: Image::default(),
3695            src_image_layout: ImageLayout::default(),
3696            dst_image: Image::default(),
3697            dst_image_layout: ImageLayout::default(),
3698            region_count: u32::default(),
3699            regions: ptr::null(),
3700        }
3701    }
3702}
3703
3704unsafe impl Send for CopyImageInfo2 {}
3705unsafe impl Sync for CopyImageInfo2 {}
3706
3707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3708#[repr(C)]
3709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3710pub struct CopyImageToBufferInfo2 {
3711    pub s_type: StructureType,
3712    pub next: *const c_void,
3713    pub src_image: Image,
3714    pub src_image_layout: ImageLayout,
3715    pub dst_buffer: Buffer,
3716    pub region_count: u32,
3717    pub regions: *const BufferImageCopy2,
3718}
3719
3720impl Default for CopyImageToBufferInfo2 {
3721    #[inline]
3722    fn default() -> Self {
3723        Self {
3724            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3725            next: ptr::null(),
3726            src_image: Image::default(),
3727            src_image_layout: ImageLayout::default(),
3728            dst_buffer: Buffer::default(),
3729            region_count: u32::default(),
3730            regions: ptr::null(),
3731        }
3732    }
3733}
3734
3735unsafe impl Send for CopyImageToBufferInfo2 {}
3736unsafe impl Sync for CopyImageToBufferInfo2 {}
3737
3738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3739#[repr(C)]
3740#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3741pub struct CopyImageToImageInfo {
3742    pub s_type: StructureType,
3743    pub next: *const c_void,
3744    pub flags: HostImageCopyFlags,
3745    pub src_image: Image,
3746    pub src_image_layout: ImageLayout,
3747    pub dst_image: Image,
3748    pub dst_image_layout: ImageLayout,
3749    pub region_count: u32,
3750    pub regions: *const ImageCopy2,
3751}
3752
3753impl Default for CopyImageToImageInfo {
3754    #[inline]
3755    fn default() -> Self {
3756        Self {
3757            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3758            next: ptr::null(),
3759            flags: HostImageCopyFlags::default(),
3760            src_image: Image::default(),
3761            src_image_layout: ImageLayout::default(),
3762            dst_image: Image::default(),
3763            dst_image_layout: ImageLayout::default(),
3764            region_count: u32::default(),
3765            regions: ptr::null(),
3766        }
3767    }
3768}
3769
3770unsafe impl Send for CopyImageToImageInfo {}
3771unsafe impl Sync for CopyImageToImageInfo {}
3772
3773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3774#[repr(C)]
3775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3776pub struct CopyImageToMemoryInfo {
3777    pub s_type: StructureType,
3778    pub next: *const c_void,
3779    pub flags: HostImageCopyFlags,
3780    pub src_image: Image,
3781    pub src_image_layout: ImageLayout,
3782    pub region_count: u32,
3783    pub regions: *const ImageToMemoryCopy,
3784}
3785
3786impl Default for CopyImageToMemoryInfo {
3787    #[inline]
3788    fn default() -> Self {
3789        Self {
3790            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3791            next: ptr::null(),
3792            flags: HostImageCopyFlags::default(),
3793            src_image: Image::default(),
3794            src_image_layout: ImageLayout::default(),
3795            region_count: u32::default(),
3796            regions: ptr::null(),
3797        }
3798    }
3799}
3800
3801unsafe impl Send for CopyImageToMemoryInfo {}
3802unsafe impl Sync for CopyImageToMemoryInfo {}
3803
3804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandKHR.html>
3805#[repr(C)]
3806#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3807pub struct CopyMemoryIndirectCommandKHR {
3808    pub src_address: DeviceAddress,
3809    pub dst_address: DeviceAddress,
3810    pub size: DeviceSize,
3811}
3812
3813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectInfoKHR.html>
3814#[repr(C)]
3815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3816pub struct CopyMemoryIndirectInfoKHR {
3817    pub s_type: StructureType,
3818    pub next: *const c_void,
3819    pub src_copy_flags: AddressCopyFlagsKHR,
3820    pub dst_copy_flags: AddressCopyFlagsKHR,
3821    pub copy_count: u32,
3822    pub copy_address_range: StridedDeviceAddressRangeKHR,
3823}
3824
3825impl Default for CopyMemoryIndirectInfoKHR {
3826    #[inline]
3827    fn default() -> Self {
3828        Self {
3829            s_type: StructureType::COPY_MEMORY_INDIRECT_INFO_KHR,
3830            next: ptr::null(),
3831            src_copy_flags: AddressCopyFlagsKHR::default(),
3832            dst_copy_flags: AddressCopyFlagsKHR::default(),
3833            copy_count: u32::default(),
3834            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3835        }
3836    }
3837}
3838
3839unsafe impl Send for CopyMemoryIndirectInfoKHR {}
3840unsafe impl Sync for CopyMemoryIndirectInfoKHR {}
3841
3842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3843#[repr(C)]
3844#[derive(Copy, Clone, Debug)]
3845pub struct CopyMemoryToAccelerationStructureInfoKHR {
3846    pub s_type: StructureType,
3847    pub next: *const c_void,
3848    pub src: DeviceOrHostAddressConstKHR,
3849    pub dst: AccelerationStructureKHR,
3850    pub mode: CopyAccelerationStructureModeKHR,
3851}
3852
3853impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3854    #[inline]
3855    fn default() -> Self {
3856        Self {
3857            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3858            next: ptr::null(),
3859            src: DeviceOrHostAddressConstKHR::default(),
3860            dst: AccelerationStructureKHR::default(),
3861            mode: CopyAccelerationStructureModeKHR::default(),
3862        }
3863    }
3864}
3865
3866unsafe impl Send for CopyMemoryToAccelerationStructureInfoKHR {}
3867unsafe impl Sync for CopyMemoryToAccelerationStructureInfoKHR {}
3868
3869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandKHR.html>
3870#[repr(C)]
3871#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3872pub struct CopyMemoryToImageIndirectCommandKHR {
3873    pub src_address: DeviceAddress,
3874    pub buffer_row_length: u32,
3875    pub buffer_image_height: u32,
3876    pub image_subresource: ImageSubresourceLayers,
3877    pub image_offset: Offset3D,
3878    pub image_extent: Extent3D,
3879}
3880
3881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectInfoKHR.html>
3882#[repr(C)]
3883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3884pub struct CopyMemoryToImageIndirectInfoKHR {
3885    pub s_type: StructureType,
3886    pub next: *const c_void,
3887    pub src_copy_flags: AddressCopyFlagsKHR,
3888    pub copy_count: u32,
3889    pub copy_address_range: StridedDeviceAddressRangeKHR,
3890    pub dst_image: Image,
3891    pub dst_image_layout: ImageLayout,
3892    pub image_subresources: *const ImageSubresourceLayers,
3893}
3894
3895impl Default for CopyMemoryToImageIndirectInfoKHR {
3896    #[inline]
3897    fn default() -> Self {
3898        Self {
3899            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR,
3900            next: ptr::null(),
3901            src_copy_flags: AddressCopyFlagsKHR::default(),
3902            copy_count: u32::default(),
3903            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3904            dst_image: Image::default(),
3905            dst_image_layout: ImageLayout::default(),
3906            image_subresources: ptr::null(),
3907        }
3908    }
3909}
3910
3911unsafe impl Send for CopyMemoryToImageIndirectInfoKHR {}
3912unsafe impl Sync for CopyMemoryToImageIndirectInfoKHR {}
3913
3914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3915#[repr(C)]
3916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3917pub struct CopyMemoryToImageInfo {
3918    pub s_type: StructureType,
3919    pub next: *const c_void,
3920    pub flags: HostImageCopyFlags,
3921    pub dst_image: Image,
3922    pub dst_image_layout: ImageLayout,
3923    pub region_count: u32,
3924    pub regions: *const MemoryToImageCopy,
3925}
3926
3927impl Default for CopyMemoryToImageInfo {
3928    #[inline]
3929    fn default() -> Self {
3930        Self {
3931            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3932            next: ptr::null(),
3933            flags: HostImageCopyFlags::default(),
3934            dst_image: Image::default(),
3935            dst_image_layout: ImageLayout::default(),
3936            region_count: u32::default(),
3937            regions: ptr::null(),
3938        }
3939    }
3940}
3941
3942unsafe impl Send for CopyMemoryToImageInfo {}
3943unsafe impl Sync for CopyMemoryToImageInfo {}
3944
3945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3946#[repr(C)]
3947#[derive(Copy, Clone, Debug)]
3948pub struct CopyMemoryToMicromapInfoEXT {
3949    pub s_type: StructureType,
3950    pub next: *const c_void,
3951    pub src: DeviceOrHostAddressConstKHR,
3952    pub dst: MicromapEXT,
3953    pub mode: CopyMicromapModeEXT,
3954}
3955
3956impl Default for CopyMemoryToMicromapInfoEXT {
3957    #[inline]
3958    fn default() -> Self {
3959        Self {
3960            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
3961            next: ptr::null(),
3962            src: DeviceOrHostAddressConstKHR::default(),
3963            dst: MicromapEXT::default(),
3964            mode: CopyMicromapModeEXT::default(),
3965        }
3966    }
3967}
3968
3969unsafe impl Send for CopyMemoryToMicromapInfoEXT {}
3970unsafe impl Sync for CopyMemoryToMicromapInfoEXT {}
3971
3972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
3973#[repr(C)]
3974#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3975pub struct CopyMicromapInfoEXT {
3976    pub s_type: StructureType,
3977    pub next: *const c_void,
3978    pub src: MicromapEXT,
3979    pub dst: MicromapEXT,
3980    pub mode: CopyMicromapModeEXT,
3981}
3982
3983impl Default for CopyMicromapInfoEXT {
3984    #[inline]
3985    fn default() -> Self {
3986        Self {
3987            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
3988            next: ptr::null(),
3989            src: MicromapEXT::default(),
3990            dst: MicromapEXT::default(),
3991            mode: CopyMicromapModeEXT::default(),
3992        }
3993    }
3994}
3995
3996unsafe impl Send for CopyMicromapInfoEXT {}
3997unsafe impl Sync for CopyMicromapInfoEXT {}
3998
3999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
4000#[repr(C)]
4001#[derive(Copy, Clone, Debug)]
4002pub struct CopyMicromapToMemoryInfoEXT {
4003    pub s_type: StructureType,
4004    pub next: *const c_void,
4005    pub src: MicromapEXT,
4006    pub dst: DeviceOrHostAddressKHR,
4007    pub mode: CopyMicromapModeEXT,
4008}
4009
4010impl Default for CopyMicromapToMemoryInfoEXT {
4011    #[inline]
4012    fn default() -> Self {
4013        Self {
4014            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
4015            next: ptr::null(),
4016            src: MicromapEXT::default(),
4017            dst: DeviceOrHostAddressKHR::default(),
4018            mode: CopyMicromapModeEXT::default(),
4019        }
4020    }
4021}
4022
4023unsafe impl Send for CopyMicromapToMemoryInfoEXT {}
4024unsafe impl Sync for CopyMicromapToMemoryInfoEXT {}
4025
4026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html>
4027#[repr(C)]
4028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4029pub struct CopyTensorInfoARM {
4030    pub s_type: StructureType,
4031    pub next: *const c_void,
4032    pub src_tensor: TensorARM,
4033    pub dst_tensor: TensorARM,
4034    pub region_count: u32,
4035    pub regions: *const TensorCopyARM,
4036}
4037
4038impl Default for CopyTensorInfoARM {
4039    #[inline]
4040    fn default() -> Self {
4041        Self {
4042            s_type: StructureType::COPY_TENSOR_INFO_ARM,
4043            next: ptr::null(),
4044            src_tensor: TensorARM::default(),
4045            dst_tensor: TensorARM::default(),
4046            region_count: u32::default(),
4047            regions: ptr::null(),
4048        }
4049    }
4050}
4051
4052unsafe impl Send for CopyTensorInfoARM {}
4053unsafe impl Sync for CopyTensorInfoARM {}
4054
4055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
4056#[repr(C)]
4057#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4058pub struct CuFunctionCreateInfoNVX {
4059    pub s_type: StructureType,
4060    pub next: *const c_void,
4061    pub module: CuModuleNVX,
4062    pub name: *const c_char,
4063}
4064
4065impl Default for CuFunctionCreateInfoNVX {
4066    #[inline]
4067    fn default() -> Self {
4068        Self {
4069            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
4070            next: ptr::null(),
4071            module: CuModuleNVX::default(),
4072            name: ptr::null(),
4073        }
4074    }
4075}
4076
4077unsafe impl Send for CuFunctionCreateInfoNVX {}
4078unsafe impl Sync for CuFunctionCreateInfoNVX {}
4079
4080/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
4081#[repr(C)]
4082#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4083pub struct CuLaunchInfoNVX {
4084    pub s_type: StructureType,
4085    pub next: *const c_void,
4086    pub function: CuFunctionNVX,
4087    pub grid_dim_x: u32,
4088    pub grid_dim_y: u32,
4089    pub grid_dim_z: u32,
4090    pub block_dim_x: u32,
4091    pub block_dim_y: u32,
4092    pub block_dim_z: u32,
4093    pub shared_mem_bytes: u32,
4094    pub param_count: usize,
4095    pub params: *const c_void,
4096    pub extra_count: usize,
4097    pub extras: *const c_void,
4098}
4099
4100impl Default for CuLaunchInfoNVX {
4101    #[inline]
4102    fn default() -> Self {
4103        Self {
4104            s_type: StructureType::CU_LAUNCH_INFO_NVX,
4105            next: ptr::null(),
4106            function: CuFunctionNVX::default(),
4107            grid_dim_x: u32::default(),
4108            grid_dim_y: u32::default(),
4109            grid_dim_z: u32::default(),
4110            block_dim_x: u32::default(),
4111            block_dim_y: u32::default(),
4112            block_dim_z: u32::default(),
4113            shared_mem_bytes: u32::default(),
4114            param_count: usize::default(),
4115            params: ptr::null(),
4116            extra_count: usize::default(),
4117            extras: ptr::null(),
4118        }
4119    }
4120}
4121
4122unsafe impl Send for CuLaunchInfoNVX {}
4123unsafe impl Sync for CuLaunchInfoNVX {}
4124
4125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
4126#[repr(C)]
4127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4128pub struct CuModuleCreateInfoNVX {
4129    pub s_type: StructureType,
4130    pub next: *const c_void,
4131    pub data_size: usize,
4132    pub data: *const c_void,
4133}
4134
4135impl Default for CuModuleCreateInfoNVX {
4136    #[inline]
4137    fn default() -> Self {
4138        Self {
4139            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
4140            next: ptr::null(),
4141            data_size: usize::default(),
4142            data: ptr::null(),
4143        }
4144    }
4145}
4146
4147unsafe impl Send for CuModuleCreateInfoNVX {}
4148unsafe impl Sync for CuModuleCreateInfoNVX {}
4149
4150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
4151#[repr(C)]
4152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4153pub struct CuModuleTexturingModeCreateInfoNVX {
4154    pub s_type: StructureType,
4155    pub next: *const c_void,
4156    pub use64bit_texturing: Bool32,
4157}
4158
4159impl Default for CuModuleTexturingModeCreateInfoNVX {
4160    #[inline]
4161    fn default() -> Self {
4162        Self {
4163            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
4164            next: ptr::null(),
4165            use64bit_texturing: Bool32::default(),
4166        }
4167    }
4168}
4169
4170unsafe impl Send for CuModuleTexturingModeCreateInfoNVX {}
4171unsafe impl Sync for CuModuleTexturingModeCreateInfoNVX {}
4172
4173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
4174#[repr(C)]
4175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4176pub struct CudaFunctionCreateInfoNV {
4177    pub s_type: StructureType,
4178    pub next: *const c_void,
4179    pub module: CudaModuleNV,
4180    pub name: *const c_char,
4181}
4182
4183impl Default for CudaFunctionCreateInfoNV {
4184    #[inline]
4185    fn default() -> Self {
4186        Self {
4187            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
4188            next: ptr::null(),
4189            module: CudaModuleNV::default(),
4190            name: ptr::null(),
4191        }
4192    }
4193}
4194
4195unsafe impl Send for CudaFunctionCreateInfoNV {}
4196unsafe impl Sync for CudaFunctionCreateInfoNV {}
4197
4198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
4199#[repr(C)]
4200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4201pub struct CudaLaunchInfoNV {
4202    pub s_type: StructureType,
4203    pub next: *const c_void,
4204    pub function: CudaFunctionNV,
4205    pub grid_dim_x: u32,
4206    pub grid_dim_y: u32,
4207    pub grid_dim_z: u32,
4208    pub block_dim_x: u32,
4209    pub block_dim_y: u32,
4210    pub block_dim_z: u32,
4211    pub shared_mem_bytes: u32,
4212    pub param_count: usize,
4213    pub params: *const c_void,
4214    pub extra_count: usize,
4215    pub extras: *const c_void,
4216}
4217
4218impl Default for CudaLaunchInfoNV {
4219    #[inline]
4220    fn default() -> Self {
4221        Self {
4222            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
4223            next: ptr::null(),
4224            function: CudaFunctionNV::default(),
4225            grid_dim_x: u32::default(),
4226            grid_dim_y: u32::default(),
4227            grid_dim_z: u32::default(),
4228            block_dim_x: u32::default(),
4229            block_dim_y: u32::default(),
4230            block_dim_z: u32::default(),
4231            shared_mem_bytes: u32::default(),
4232            param_count: usize::default(),
4233            params: ptr::null(),
4234            extra_count: usize::default(),
4235            extras: ptr::null(),
4236        }
4237    }
4238}
4239
4240unsafe impl Send for CudaLaunchInfoNV {}
4241unsafe impl Sync for CudaLaunchInfoNV {}
4242
4243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
4244#[repr(C)]
4245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4246pub struct CudaModuleCreateInfoNV {
4247    pub s_type: StructureType,
4248    pub next: *const c_void,
4249    pub data_size: usize,
4250    pub data: *const c_void,
4251}
4252
4253impl Default for CudaModuleCreateInfoNV {
4254    #[inline]
4255    fn default() -> Self {
4256        Self {
4257            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
4258            next: ptr::null(),
4259            data_size: usize::default(),
4260            data: ptr::null(),
4261        }
4262    }
4263}
4264
4265unsafe impl Send for CudaModuleCreateInfoNV {}
4266unsafe impl Sync for CudaModuleCreateInfoNV {}
4267
4268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCustomResolveCreateInfoEXT.html>
4269#[repr(C)]
4270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4271pub struct CustomResolveCreateInfoEXT {
4272    pub s_type: StructureType,
4273    pub next: *const c_void,
4274    pub custom_resolve: Bool32,
4275    pub color_attachment_count: u32,
4276    pub color_attachment_formats: *const Format,
4277    pub depth_attachment_format: Format,
4278    pub stencil_attachment_format: Format,
4279}
4280
4281impl Default for CustomResolveCreateInfoEXT {
4282    #[inline]
4283    fn default() -> Self {
4284        Self {
4285            s_type: StructureType::CUSTOM_RESOLVE_CREATE_INFO_EXT,
4286            next: ptr::null(),
4287            custom_resolve: Bool32::default(),
4288            color_attachment_count: u32::default(),
4289            color_attachment_formats: ptr::null(),
4290            depth_attachment_format: Format::default(),
4291            stencil_attachment_format: Format::default(),
4292        }
4293    }
4294}
4295
4296unsafe impl Send for CustomResolveCreateInfoEXT {}
4297unsafe impl Sync for CustomResolveCreateInfoEXT {}
4298
4299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
4300#[repr(C)]
4301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4302pub struct D3D12FenceSubmitInfoKHR {
4303    pub s_type: StructureType,
4304    pub next: *const c_void,
4305    pub wait_semaphore_values_count: u32,
4306    pub wait_semaphore_values: *const u64,
4307    pub signal_semaphore_values_count: u32,
4308    pub signal_semaphore_values: *const u64,
4309}
4310
4311impl Default for D3D12FenceSubmitInfoKHR {
4312    #[inline]
4313    fn default() -> Self {
4314        Self {
4315            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
4316            next: ptr::null(),
4317            wait_semaphore_values_count: u32::default(),
4318            wait_semaphore_values: ptr::null(),
4319            signal_semaphore_values_count: u32::default(),
4320            signal_semaphore_values: ptr::null(),
4321        }
4322    }
4323}
4324
4325unsafe impl Send for D3D12FenceSubmitInfoKHR {}
4326unsafe impl Sync for D3D12FenceSubmitInfoKHR {}
4327
4328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineBuiltinModelCreateInfoQCOM.html>
4329#[repr(C)]
4330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4331pub struct DataGraphPipelineBuiltinModelCreateInfoQCOM {
4332    pub s_type: StructureType,
4333    pub next: *const c_void,
4334    pub operation: *const PhysicalDeviceDataGraphOperationSupportARM,
4335}
4336
4337impl Default for DataGraphPipelineBuiltinModelCreateInfoQCOM {
4338    #[inline]
4339    fn default() -> Self {
4340        Self {
4341            s_type: StructureType::DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM,
4342            next: ptr::null(),
4343            operation: ptr::null(),
4344        }
4345    }
4346}
4347
4348unsafe impl Send for DataGraphPipelineBuiltinModelCreateInfoQCOM {}
4349unsafe impl Sync for DataGraphPipelineBuiltinModelCreateInfoQCOM {}
4350
4351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html>
4352#[repr(C)]
4353#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4354pub struct DataGraphPipelineCompilerControlCreateInfoARM {
4355    pub s_type: StructureType,
4356    pub next: *const c_void,
4357    pub vendor_options: *const c_char,
4358}
4359
4360impl Default for DataGraphPipelineCompilerControlCreateInfoARM {
4361    #[inline]
4362    fn default() -> Self {
4363        Self {
4364            s_type: StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM,
4365            next: ptr::null(),
4366            vendor_options: ptr::null(),
4367        }
4368    }
4369}
4370
4371unsafe impl Send for DataGraphPipelineCompilerControlCreateInfoARM {}
4372unsafe impl Sync for DataGraphPipelineCompilerControlCreateInfoARM {}
4373
4374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html>
4375#[repr(C)]
4376#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4377pub struct DataGraphPipelineConstantARM {
4378    pub s_type: StructureType,
4379    pub next: *const c_void,
4380    pub id: u32,
4381    pub constant_data: *const c_void,
4382}
4383
4384impl Default for DataGraphPipelineConstantARM {
4385    #[inline]
4386    fn default() -> Self {
4387        Self {
4388            s_type: StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM,
4389            next: ptr::null(),
4390            id: u32::default(),
4391            constant_data: ptr::null(),
4392        }
4393    }
4394}
4395
4396unsafe impl Send for DataGraphPipelineConstantARM {}
4397unsafe impl Sync for DataGraphPipelineConstantARM {}
4398
4399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html>
4400#[repr(C)]
4401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4402pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4403    pub s_type: StructureType,
4404    pub next: *const c_void,
4405    pub dimension: u32,
4406    pub zero_count: u32,
4407    pub group_size: u32,
4408}
4409
4410impl Default for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4411    #[inline]
4412    fn default() -> Self {
4413        Self {
4414            s_type:
4415                StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM,
4416            next: ptr::null(),
4417            dimension: u32::default(),
4418            zero_count: u32::default(),
4419            group_size: u32::default(),
4420        }
4421    }
4422}
4423
4424unsafe impl Send for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4425unsafe impl Sync for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4426
4427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html>
4428#[repr(C)]
4429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4430pub struct DataGraphPipelineCreateInfoARM {
4431    pub s_type: StructureType,
4432    pub next: *const c_void,
4433    pub flags: PipelineCreateFlags2KHR,
4434    pub layout: PipelineLayout,
4435    pub resource_info_count: u32,
4436    pub resource_infos: *const DataGraphPipelineResourceInfoARM,
4437}
4438
4439impl Default for DataGraphPipelineCreateInfoARM {
4440    #[inline]
4441    fn default() -> Self {
4442        Self {
4443            s_type: StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM,
4444            next: ptr::null(),
4445            flags: PipelineCreateFlags2KHR::default(),
4446            layout: PipelineLayout::default(),
4447            resource_info_count: u32::default(),
4448            resource_infos: ptr::null(),
4449        }
4450    }
4451}
4452
4453unsafe impl Send for DataGraphPipelineCreateInfoARM {}
4454unsafe impl Sync for DataGraphPipelineCreateInfoARM {}
4455
4456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html>
4457#[repr(C)]
4458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4459pub struct DataGraphPipelineDispatchInfoARM {
4460    pub s_type: StructureType,
4461    pub next: *mut c_void,
4462    pub flags: DataGraphPipelineDispatchFlagsARM,
4463}
4464
4465impl Default for DataGraphPipelineDispatchInfoARM {
4466    #[inline]
4467    fn default() -> Self {
4468        Self {
4469            s_type: StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM,
4470            next: ptr::null_mut(),
4471            flags: DataGraphPipelineDispatchFlagsARM::default(),
4472        }
4473    }
4474}
4475
4476unsafe impl Send for DataGraphPipelineDispatchInfoARM {}
4477unsafe impl Sync for DataGraphPipelineDispatchInfoARM {}
4478
4479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html>
4480#[repr(C)]
4481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4482pub struct DataGraphPipelineIdentifierCreateInfoARM {
4483    pub s_type: StructureType,
4484    pub next: *const c_void,
4485    pub identifier_size: u32,
4486    pub identifier: *const u8,
4487}
4488
4489impl Default for DataGraphPipelineIdentifierCreateInfoARM {
4490    #[inline]
4491    fn default() -> Self {
4492        Self {
4493            s_type: StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM,
4494            next: ptr::null(),
4495            identifier_size: u32::default(),
4496            identifier: ptr::null(),
4497        }
4498    }
4499}
4500
4501unsafe impl Send for DataGraphPipelineIdentifierCreateInfoARM {}
4502unsafe impl Sync for DataGraphPipelineIdentifierCreateInfoARM {}
4503
4504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html>
4505#[repr(C)]
4506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4507pub struct DataGraphPipelineInfoARM {
4508    pub s_type: StructureType,
4509    pub next: *const c_void,
4510    pub data_graph_pipeline: Pipeline,
4511}
4512
4513impl Default for DataGraphPipelineInfoARM {
4514    #[inline]
4515    fn default() -> Self {
4516        Self {
4517            s_type: StructureType::DATA_GRAPH_PIPELINE_INFO_ARM,
4518            next: ptr::null(),
4519            data_graph_pipeline: Pipeline::default(),
4520        }
4521    }
4522}
4523
4524unsafe impl Send for DataGraphPipelineInfoARM {}
4525unsafe impl Sync for DataGraphPipelineInfoARM {}
4526
4527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html>
4528#[repr(C)]
4529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4530pub struct DataGraphPipelinePropertyQueryResultARM {
4531    pub s_type: StructureType,
4532    pub next: *const c_void,
4533    pub property: DataGraphPipelinePropertyARM,
4534    pub is_text: Bool32,
4535    pub data_size: usize,
4536    pub data: *mut c_void,
4537}
4538
4539impl Default for DataGraphPipelinePropertyQueryResultARM {
4540    #[inline]
4541    fn default() -> Self {
4542        Self {
4543            s_type: StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM,
4544            next: ptr::null(),
4545            property: DataGraphPipelinePropertyARM::default(),
4546            is_text: Bool32::default(),
4547            data_size: usize::default(),
4548            data: ptr::null_mut(),
4549        }
4550    }
4551}
4552
4553unsafe impl Send for DataGraphPipelinePropertyQueryResultARM {}
4554unsafe impl Sync for DataGraphPipelinePropertyQueryResultARM {}
4555
4556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html>
4557#[repr(C)]
4558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4559pub struct DataGraphPipelineResourceInfoARM {
4560    pub s_type: StructureType,
4561    pub next: *const c_void,
4562    pub descriptor_set: u32,
4563    pub binding: u32,
4564    pub array_element: u32,
4565}
4566
4567impl Default for DataGraphPipelineResourceInfoARM {
4568    #[inline]
4569    fn default() -> Self {
4570        Self {
4571            s_type: StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM,
4572            next: ptr::null(),
4573            descriptor_set: u32::default(),
4574            binding: u32::default(),
4575            array_element: u32::default(),
4576        }
4577    }
4578}
4579
4580unsafe impl Send for DataGraphPipelineResourceInfoARM {}
4581unsafe impl Sync for DataGraphPipelineResourceInfoARM {}
4582
4583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html>
4584#[repr(C)]
4585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4586pub struct DataGraphPipelineSessionBindPointRequirementARM {
4587    pub s_type: StructureType,
4588    pub next: *const c_void,
4589    pub bind_point: DataGraphPipelineSessionBindPointARM,
4590    pub bind_point_type: DataGraphPipelineSessionBindPointTypeARM,
4591    pub num_objects: u32,
4592}
4593
4594impl Default for DataGraphPipelineSessionBindPointRequirementARM {
4595    #[inline]
4596    fn default() -> Self {
4597        Self {
4598            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM,
4599            next: ptr::null(),
4600            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4601            bind_point_type: DataGraphPipelineSessionBindPointTypeARM::default(),
4602            num_objects: u32::default(),
4603        }
4604    }
4605}
4606
4607unsafe impl Send for DataGraphPipelineSessionBindPointRequirementARM {}
4608unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementARM {}
4609
4610/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html>
4611#[repr(C)]
4612#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4613pub struct DataGraphPipelineSessionBindPointRequirementsInfoARM {
4614    pub s_type: StructureType,
4615    pub next: *const c_void,
4616    pub session: DataGraphPipelineSessionARM,
4617}
4618
4619impl Default for DataGraphPipelineSessionBindPointRequirementsInfoARM {
4620    #[inline]
4621    fn default() -> Self {
4622        Self {
4623            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM,
4624            next: ptr::null(),
4625            session: DataGraphPipelineSessionARM::default(),
4626        }
4627    }
4628}
4629
4630unsafe impl Send for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4631unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4632
4633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html>
4634#[repr(C)]
4635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4636pub struct DataGraphPipelineSessionCreateInfoARM {
4637    pub s_type: StructureType,
4638    pub next: *const c_void,
4639    pub flags: DataGraphPipelineSessionCreateFlagsARM,
4640    pub data_graph_pipeline: Pipeline,
4641}
4642
4643impl Default for DataGraphPipelineSessionCreateInfoARM {
4644    #[inline]
4645    fn default() -> Self {
4646        Self {
4647            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM,
4648            next: ptr::null(),
4649            flags: DataGraphPipelineSessionCreateFlagsARM::default(),
4650            data_graph_pipeline: Pipeline::default(),
4651        }
4652    }
4653}
4654
4655unsafe impl Send for DataGraphPipelineSessionCreateInfoARM {}
4656unsafe impl Sync for DataGraphPipelineSessionCreateInfoARM {}
4657
4658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html>
4659#[repr(C)]
4660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4661pub struct DataGraphPipelineSessionMemoryRequirementsInfoARM {
4662    pub s_type: StructureType,
4663    pub next: *const c_void,
4664    pub session: DataGraphPipelineSessionARM,
4665    pub bind_point: DataGraphPipelineSessionBindPointARM,
4666    pub object_index: u32,
4667}
4668
4669impl Default for DataGraphPipelineSessionMemoryRequirementsInfoARM {
4670    #[inline]
4671    fn default() -> Self {
4672        Self {
4673            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM,
4674            next: ptr::null(),
4675            session: DataGraphPipelineSessionARM::default(),
4676            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4677            object_index: u32::default(),
4678        }
4679    }
4680}
4681
4682unsafe impl Send for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4683unsafe impl Sync for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4684
4685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html>
4686#[repr(C)]
4687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4688pub struct DataGraphPipelineShaderModuleCreateInfoARM {
4689    pub s_type: StructureType,
4690    pub next: *const c_void,
4691    pub module: ShaderModule,
4692    pub name: *const c_char,
4693    pub specialization_info: *const SpecializationInfo,
4694    pub constant_count: u32,
4695    pub constants: *const DataGraphPipelineConstantARM,
4696}
4697
4698impl Default for DataGraphPipelineShaderModuleCreateInfoARM {
4699    #[inline]
4700    fn default() -> Self {
4701        Self {
4702            s_type: StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM,
4703            next: ptr::null(),
4704            module: ShaderModule::default(),
4705            name: ptr::null(),
4706            specialization_info: ptr::null(),
4707            constant_count: u32::default(),
4708            constants: ptr::null(),
4709        }
4710    }
4711}
4712
4713unsafe impl Send for DataGraphPipelineShaderModuleCreateInfoARM {}
4714unsafe impl Sync for DataGraphPipelineShaderModuleCreateInfoARM {}
4715
4716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html>
4717#[repr(C)]
4718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4719pub struct DataGraphProcessingEngineCreateInfoARM {
4720    pub s_type: StructureType,
4721    pub next: *const c_void,
4722    pub processing_engine_count: u32,
4723    pub processing_engines: *mut PhysicalDeviceDataGraphProcessingEngineARM,
4724}
4725
4726impl Default for DataGraphProcessingEngineCreateInfoARM {
4727    #[inline]
4728    fn default() -> Self {
4729        Self {
4730            s_type: StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM,
4731            next: ptr::null(),
4732            processing_engine_count: u32::default(),
4733            processing_engines: ptr::null_mut(),
4734        }
4735    }
4736}
4737
4738unsafe impl Send for DataGraphProcessingEngineCreateInfoARM {}
4739unsafe impl Sync for DataGraphProcessingEngineCreateInfoARM {}
4740
4741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
4742#[repr(C)]
4743#[derive(Copy, Clone, Debug, PartialEq)]
4744pub struct DebugMarkerMarkerInfoEXT {
4745    pub s_type: StructureType,
4746    pub next: *const c_void,
4747    pub marker_name: *const c_char,
4748    pub color: [f32; 4],
4749}
4750
4751impl Default for DebugMarkerMarkerInfoEXT {
4752    #[inline]
4753    fn default() -> Self {
4754        Self {
4755            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
4756            next: ptr::null(),
4757            marker_name: ptr::null(),
4758            color: [f32::default(); 4],
4759        }
4760    }
4761}
4762
4763unsafe impl Send for DebugMarkerMarkerInfoEXT {}
4764unsafe impl Sync for DebugMarkerMarkerInfoEXT {}
4765
4766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
4767#[repr(C)]
4768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4769pub struct DebugMarkerObjectNameInfoEXT {
4770    pub s_type: StructureType,
4771    pub next: *const c_void,
4772    pub object_type: DebugReportObjectTypeEXT,
4773    pub object: u64,
4774    pub object_name: *const c_char,
4775}
4776
4777impl Default for DebugMarkerObjectNameInfoEXT {
4778    #[inline]
4779    fn default() -> Self {
4780        Self {
4781            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
4782            next: ptr::null(),
4783            object_type: DebugReportObjectTypeEXT::default(),
4784            object: u64::default(),
4785            object_name: ptr::null(),
4786        }
4787    }
4788}
4789
4790unsafe impl Send for DebugMarkerObjectNameInfoEXT {}
4791unsafe impl Sync for DebugMarkerObjectNameInfoEXT {}
4792
4793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
4794#[repr(C)]
4795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4796pub struct DebugMarkerObjectTagInfoEXT {
4797    pub s_type: StructureType,
4798    pub next: *const c_void,
4799    pub object_type: DebugReportObjectTypeEXT,
4800    pub object: u64,
4801    pub tag_name: u64,
4802    pub tag_size: usize,
4803    pub tag: *const c_void,
4804}
4805
4806impl Default for DebugMarkerObjectTagInfoEXT {
4807    #[inline]
4808    fn default() -> Self {
4809        Self {
4810            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
4811            next: ptr::null(),
4812            object_type: DebugReportObjectTypeEXT::default(),
4813            object: u64::default(),
4814            tag_name: u64::default(),
4815            tag_size: usize::default(),
4816            tag: ptr::null(),
4817        }
4818    }
4819}
4820
4821unsafe impl Send for DebugMarkerObjectTagInfoEXT {}
4822unsafe impl Sync for DebugMarkerObjectTagInfoEXT {}
4823
4824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
4825#[repr(C)]
4826#[derive(Copy, Clone)]
4827pub struct DebugReportCallbackCreateInfoEXT {
4828    pub s_type: StructureType,
4829    pub next: *const c_void,
4830    pub flags: DebugReportFlagsEXT,
4831    pub callback: PFN_vkDebugReportCallbackEXT,
4832    pub user_data: *mut c_void,
4833}
4834
4835impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
4836    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4837        f.debug_struct("DebugReportCallbackCreateInfoEXT")
4838            .field("s_type", &self.s_type)
4839            .field("next", &self.next)
4840            .field("flags", &self.flags)
4841            .field("callback", &(self.callback.map(|f| f as *const u8)))
4842            .field("user_data", &self.user_data)
4843            .finish()
4844    }
4845}
4846
4847impl Default for DebugReportCallbackCreateInfoEXT {
4848    #[inline]
4849    fn default() -> Self {
4850        Self {
4851            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
4852            next: ptr::null(),
4853            flags: DebugReportFlagsEXT::default(),
4854            callback: PFN_vkDebugReportCallbackEXT::default(),
4855            user_data: ptr::null_mut(),
4856        }
4857    }
4858}
4859
4860unsafe impl Send for DebugReportCallbackCreateInfoEXT {}
4861unsafe impl Sync for DebugReportCallbackCreateInfoEXT {}
4862
4863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
4864#[repr(C)]
4865#[derive(Copy, Clone, Debug, PartialEq)]
4866pub struct DebugUtilsLabelEXT {
4867    pub s_type: StructureType,
4868    pub next: *const c_void,
4869    pub label_name: *const c_char,
4870    pub color: [f32; 4],
4871}
4872
4873impl Default for DebugUtilsLabelEXT {
4874    #[inline]
4875    fn default() -> Self {
4876        Self {
4877            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
4878            next: ptr::null(),
4879            label_name: ptr::null(),
4880            color: [f32::default(); 4],
4881        }
4882    }
4883}
4884
4885unsafe impl Send for DebugUtilsLabelEXT {}
4886unsafe impl Sync for DebugUtilsLabelEXT {}
4887
4888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
4889#[repr(C)]
4890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4891pub struct DebugUtilsMessengerCallbackDataEXT {
4892    pub s_type: StructureType,
4893    pub next: *const c_void,
4894    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
4895    pub message_id_name: *const c_char,
4896    pub message_id_number: i32,
4897    pub message: *const c_char,
4898    pub queue_label_count: u32,
4899    pub queue_labels: *const DebugUtilsLabelEXT,
4900    pub cmd_buf_label_count: u32,
4901    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
4902    pub object_count: u32,
4903    pub objects: *const DebugUtilsObjectNameInfoEXT,
4904}
4905
4906impl Default for DebugUtilsMessengerCallbackDataEXT {
4907    #[inline]
4908    fn default() -> Self {
4909        Self {
4910            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
4911            next: ptr::null(),
4912            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
4913            message_id_name: ptr::null(),
4914            message_id_number: i32::default(),
4915            message: ptr::null(),
4916            queue_label_count: u32::default(),
4917            queue_labels: ptr::null(),
4918            cmd_buf_label_count: u32::default(),
4919            cmd_buf_labels: ptr::null(),
4920            object_count: u32::default(),
4921            objects: ptr::null(),
4922        }
4923    }
4924}
4925
4926unsafe impl Send for DebugUtilsMessengerCallbackDataEXT {}
4927unsafe impl Sync for DebugUtilsMessengerCallbackDataEXT {}
4928
4929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
4930#[repr(C)]
4931#[derive(Copy, Clone)]
4932pub struct DebugUtilsMessengerCreateInfoEXT {
4933    pub s_type: StructureType,
4934    pub next: *const c_void,
4935    pub flags: DebugUtilsMessengerCreateFlagsEXT,
4936    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
4937    pub message_type: DebugUtilsMessageTypeFlagsEXT,
4938    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
4939    pub user_data: *mut c_void,
4940}
4941
4942impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
4943    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4944        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
4945            .field("s_type", &self.s_type)
4946            .field("next", &self.next)
4947            .field("flags", &self.flags)
4948            .field("message_severity", &self.message_severity)
4949            .field("message_type", &self.message_type)
4950            .field(
4951                "user_callback",
4952                &(self.user_callback.map(|f| f as *const u8)),
4953            )
4954            .field("user_data", &self.user_data)
4955            .finish()
4956    }
4957}
4958
4959impl Default for DebugUtilsMessengerCreateInfoEXT {
4960    #[inline]
4961    fn default() -> Self {
4962        Self {
4963            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
4964            next: ptr::null(),
4965            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
4966            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
4967            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
4968            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
4969            user_data: ptr::null_mut(),
4970        }
4971    }
4972}
4973
4974unsafe impl Send for DebugUtilsMessengerCreateInfoEXT {}
4975unsafe impl Sync for DebugUtilsMessengerCreateInfoEXT {}
4976
4977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
4978#[repr(C)]
4979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4980pub struct DebugUtilsObjectNameInfoEXT {
4981    pub s_type: StructureType,
4982    pub next: *const c_void,
4983    pub object_type: ObjectType,
4984    pub object_handle: u64,
4985    pub object_name: *const c_char,
4986}
4987
4988impl Default for DebugUtilsObjectNameInfoEXT {
4989    #[inline]
4990    fn default() -> Self {
4991        Self {
4992            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
4993            next: ptr::null(),
4994            object_type: ObjectType::default(),
4995            object_handle: u64::default(),
4996            object_name: ptr::null(),
4997        }
4998    }
4999}
5000
5001unsafe impl Send for DebugUtilsObjectNameInfoEXT {}
5002unsafe impl Sync for DebugUtilsObjectNameInfoEXT {}
5003
5004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
5005#[repr(C)]
5006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5007pub struct DebugUtilsObjectTagInfoEXT {
5008    pub s_type: StructureType,
5009    pub next: *const c_void,
5010    pub object_type: ObjectType,
5011    pub object_handle: u64,
5012    pub tag_name: u64,
5013    pub tag_size: usize,
5014    pub tag: *const c_void,
5015}
5016
5017impl Default for DebugUtilsObjectTagInfoEXT {
5018    #[inline]
5019    fn default() -> Self {
5020        Self {
5021            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
5022            next: ptr::null(),
5023            object_type: ObjectType::default(),
5024            object_handle: u64::default(),
5025            tag_name: u64::default(),
5026            tag_size: usize::default(),
5027            tag: ptr::null(),
5028        }
5029    }
5030}
5031
5032unsafe impl Send for DebugUtilsObjectTagInfoEXT {}
5033unsafe impl Sync for DebugUtilsObjectTagInfoEXT {}
5034
5035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryInfoEXT.html>
5036#[repr(C)]
5037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5038pub struct DecompressMemoryInfoEXT {
5039    pub s_type: StructureType,
5040    pub next: *const c_void,
5041    pub decompression_method: MemoryDecompressionMethodFlagsEXT,
5042    pub region_count: u32,
5043    pub regions: *const DecompressMemoryRegionEXT,
5044}
5045
5046impl Default for DecompressMemoryInfoEXT {
5047    #[inline]
5048    fn default() -> Self {
5049        Self {
5050            s_type: StructureType::DECOMPRESS_MEMORY_INFO_EXT,
5051            next: ptr::null(),
5052            decompression_method: MemoryDecompressionMethodFlagsEXT::default(),
5053            region_count: u32::default(),
5054            regions: ptr::null(),
5055        }
5056    }
5057}
5058
5059unsafe impl Send for DecompressMemoryInfoEXT {}
5060unsafe impl Sync for DecompressMemoryInfoEXT {}
5061
5062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionEXT.html>
5063#[repr(C)]
5064#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5065pub struct DecompressMemoryRegionEXT {
5066    pub src_address: DeviceAddress,
5067    pub dst_address: DeviceAddress,
5068    pub compressed_size: DeviceSize,
5069    pub decompressed_size: DeviceSize,
5070}
5071
5072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
5073#[repr(C)]
5074#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5075pub struct DecompressMemoryRegionNV {
5076    pub src_address: DeviceAddress,
5077    pub dst_address: DeviceAddress,
5078    pub compressed_size: DeviceSize,
5079    pub decompressed_size: DeviceSize,
5080    pub decompression_method: MemoryDecompressionMethodFlagsNV,
5081}
5082
5083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
5084#[repr(C)]
5085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5086pub struct DedicatedAllocationBufferCreateInfoNV {
5087    pub s_type: StructureType,
5088    pub next: *const c_void,
5089    pub dedicated_allocation: Bool32,
5090}
5091
5092impl Default for DedicatedAllocationBufferCreateInfoNV {
5093    #[inline]
5094    fn default() -> Self {
5095        Self {
5096            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
5097            next: ptr::null(),
5098            dedicated_allocation: Bool32::default(),
5099        }
5100    }
5101}
5102
5103unsafe impl Send for DedicatedAllocationBufferCreateInfoNV {}
5104unsafe impl Sync for DedicatedAllocationBufferCreateInfoNV {}
5105
5106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
5107#[repr(C)]
5108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5109pub struct DedicatedAllocationImageCreateInfoNV {
5110    pub s_type: StructureType,
5111    pub next: *const c_void,
5112    pub dedicated_allocation: Bool32,
5113}
5114
5115impl Default for DedicatedAllocationImageCreateInfoNV {
5116    #[inline]
5117    fn default() -> Self {
5118        Self {
5119            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
5120            next: ptr::null(),
5121            dedicated_allocation: Bool32::default(),
5122        }
5123    }
5124}
5125
5126unsafe impl Send for DedicatedAllocationImageCreateInfoNV {}
5127unsafe impl Sync for DedicatedAllocationImageCreateInfoNV {}
5128
5129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
5130#[repr(C)]
5131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5132pub struct DedicatedAllocationMemoryAllocateInfoNV {
5133    pub s_type: StructureType,
5134    pub next: *const c_void,
5135    pub image: Image,
5136    pub buffer: Buffer,
5137}
5138
5139impl Default for DedicatedAllocationMemoryAllocateInfoNV {
5140    #[inline]
5141    fn default() -> Self {
5142        Self {
5143            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
5144            next: ptr::null(),
5145            image: Image::default(),
5146            buffer: Buffer::default(),
5147        }
5148    }
5149}
5150
5151unsafe impl Send for DedicatedAllocationMemoryAllocateInfoNV {}
5152unsafe impl Sync for DedicatedAllocationMemoryAllocateInfoNV {}
5153
5154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
5155#[repr(C)]
5156#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5157pub struct DependencyInfo {
5158    pub s_type: StructureType,
5159    pub next: *const c_void,
5160    pub dependency_flags: DependencyFlags,
5161    pub memory_barrier_count: u32,
5162    pub memory_barriers: *const MemoryBarrier2,
5163    pub buffer_memory_barrier_count: u32,
5164    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
5165    pub image_memory_barrier_count: u32,
5166    pub image_memory_barriers: *const ImageMemoryBarrier2,
5167}
5168
5169impl Default for DependencyInfo {
5170    #[inline]
5171    fn default() -> Self {
5172        Self {
5173            s_type: StructureType::DEPENDENCY_INFO,
5174            next: ptr::null(),
5175            dependency_flags: DependencyFlags::default(),
5176            memory_barrier_count: u32::default(),
5177            memory_barriers: ptr::null(),
5178            buffer_memory_barrier_count: u32::default(),
5179            buffer_memory_barriers: ptr::null(),
5180            image_memory_barrier_count: u32::default(),
5181            image_memory_barriers: ptr::null(),
5182        }
5183    }
5184}
5185
5186unsafe impl Send for DependencyInfo {}
5187unsafe impl Sync for DependencyInfo {}
5188
5189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
5190#[repr(C)]
5191#[derive(Copy, Clone, Debug, PartialEq)]
5192pub struct DepthBiasInfoEXT {
5193    pub s_type: StructureType,
5194    pub next: *const c_void,
5195    pub depth_bias_constant_factor: f32,
5196    pub depth_bias_clamp: f32,
5197    pub depth_bias_slope_factor: f32,
5198}
5199
5200impl Default for DepthBiasInfoEXT {
5201    #[inline]
5202    fn default() -> Self {
5203        Self {
5204            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
5205            next: ptr::null(),
5206            depth_bias_constant_factor: f32::default(),
5207            depth_bias_clamp: f32::default(),
5208            depth_bias_slope_factor: f32::default(),
5209        }
5210    }
5211}
5212
5213unsafe impl Send for DepthBiasInfoEXT {}
5214unsafe impl Sync for DepthBiasInfoEXT {}
5215
5216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
5217#[repr(C)]
5218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5219pub struct DepthBiasRepresentationInfoEXT {
5220    pub s_type: StructureType,
5221    pub next: *const c_void,
5222    pub depth_bias_representation: DepthBiasRepresentationEXT,
5223    pub depth_bias_exact: Bool32,
5224}
5225
5226impl Default for DepthBiasRepresentationInfoEXT {
5227    #[inline]
5228    fn default() -> Self {
5229        Self {
5230            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
5231            next: ptr::null(),
5232            depth_bias_representation: DepthBiasRepresentationEXT::default(),
5233            depth_bias_exact: Bool32::default(),
5234        }
5235    }
5236}
5237
5238unsafe impl Send for DepthBiasRepresentationInfoEXT {}
5239unsafe impl Sync for DepthBiasRepresentationInfoEXT {}
5240
5241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
5242#[repr(C)]
5243#[derive(Copy, Clone, Default, Debug, PartialEq)]
5244pub struct DepthClampRangeEXT {
5245    pub min_depth_clamp: f32,
5246    pub max_depth_clamp: f32,
5247}
5248
5249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
5250#[repr(C)]
5251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5252pub struct DescriptorAddressInfoEXT {
5253    pub s_type: StructureType,
5254    pub next: *mut c_void,
5255    pub address: DeviceAddress,
5256    pub range: DeviceSize,
5257    pub format: Format,
5258}
5259
5260impl Default for DescriptorAddressInfoEXT {
5261    #[inline]
5262    fn default() -> Self {
5263        Self {
5264            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
5265            next: ptr::null_mut(),
5266            address: DeviceAddress::default(),
5267            range: DeviceSize::default(),
5268            format: Format::default(),
5269        }
5270    }
5271}
5272
5273unsafe impl Send for DescriptorAddressInfoEXT {}
5274unsafe impl Sync for DescriptorAddressInfoEXT {}
5275
5276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
5277#[repr(C)]
5278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5279pub struct DescriptorBufferBindingInfoEXT {
5280    pub s_type: StructureType,
5281    pub next: *const c_void,
5282    pub address: DeviceAddress,
5283    pub usage: BufferUsageFlags,
5284}
5285
5286impl Default for DescriptorBufferBindingInfoEXT {
5287    #[inline]
5288    fn default() -> Self {
5289        Self {
5290            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
5291            next: ptr::null(),
5292            address: DeviceAddress::default(),
5293            usage: BufferUsageFlags::default(),
5294        }
5295    }
5296}
5297
5298unsafe impl Send for DescriptorBufferBindingInfoEXT {}
5299unsafe impl Sync for DescriptorBufferBindingInfoEXT {}
5300
5301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
5302#[repr(C)]
5303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5304pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5305    pub s_type: StructureType,
5306    pub next: *const c_void,
5307    pub buffer: Buffer,
5308}
5309
5310impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5311    #[inline]
5312    fn default() -> Self {
5313        Self {
5314            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
5315            next: ptr::null(),
5316            buffer: Buffer::default(),
5317        }
5318    }
5319}
5320
5321unsafe impl Send for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5322unsafe impl Sync for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5323
5324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
5325#[repr(C)]
5326#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5327pub struct DescriptorBufferInfo {
5328    pub buffer: Buffer,
5329    pub offset: DeviceSize,
5330    pub range: DeviceSize,
5331}
5332
5333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
5334#[repr(C)]
5335#[derive(Copy, Clone, Debug)]
5336pub struct DescriptorGetInfoEXT {
5337    pub s_type: StructureType,
5338    pub next: *const c_void,
5339    pub type_: DescriptorType,
5340    pub data: DescriptorDataEXT,
5341}
5342
5343impl Default for DescriptorGetInfoEXT {
5344    #[inline]
5345    fn default() -> Self {
5346        Self {
5347            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
5348            next: ptr::null(),
5349            type_: DescriptorType::default(),
5350            data: DescriptorDataEXT::default(),
5351        }
5352    }
5353}
5354
5355unsafe impl Send for DescriptorGetInfoEXT {}
5356unsafe impl Sync for DescriptorGetInfoEXT {}
5357
5358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html>
5359#[repr(C)]
5360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5361pub struct DescriptorGetTensorInfoARM {
5362    pub s_type: StructureType,
5363    pub next: *const c_void,
5364    pub tensor_view: TensorViewARM,
5365}
5366
5367impl Default for DescriptorGetTensorInfoARM {
5368    #[inline]
5369    fn default() -> Self {
5370        Self {
5371            s_type: StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM,
5372            next: ptr::null(),
5373            tensor_view: TensorViewARM::default(),
5374        }
5375    }
5376}
5377
5378unsafe impl Send for DescriptorGetTensorInfoARM {}
5379unsafe impl Sync for DescriptorGetTensorInfoARM {}
5380
5381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
5382#[repr(C)]
5383#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5384pub struct DescriptorImageInfo {
5385    pub sampler: Sampler,
5386    pub image_view: ImageView,
5387    pub image_layout: ImageLayout,
5388}
5389
5390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
5391#[repr(C)]
5392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5393pub struct DescriptorPoolCreateInfo {
5394    pub s_type: StructureType,
5395    pub next: *const c_void,
5396    pub flags: DescriptorPoolCreateFlags,
5397    pub max_sets: u32,
5398    pub pool_size_count: u32,
5399    pub pool_sizes: *const DescriptorPoolSize,
5400}
5401
5402impl Default for DescriptorPoolCreateInfo {
5403    #[inline]
5404    fn default() -> Self {
5405        Self {
5406            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
5407            next: ptr::null(),
5408            flags: DescriptorPoolCreateFlags::default(),
5409            max_sets: u32::default(),
5410            pool_size_count: u32::default(),
5411            pool_sizes: ptr::null(),
5412        }
5413    }
5414}
5415
5416unsafe impl Send for DescriptorPoolCreateInfo {}
5417unsafe impl Sync for DescriptorPoolCreateInfo {}
5418
5419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
5420#[repr(C)]
5421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5422pub struct DescriptorPoolInlineUniformBlockCreateInfo {
5423    pub s_type: StructureType,
5424    pub next: *const c_void,
5425    pub max_inline_uniform_block_bindings: u32,
5426}
5427
5428impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
5429    #[inline]
5430    fn default() -> Self {
5431        Self {
5432            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
5433            next: ptr::null(),
5434            max_inline_uniform_block_bindings: u32::default(),
5435        }
5436    }
5437}
5438
5439unsafe impl Send for DescriptorPoolInlineUniformBlockCreateInfo {}
5440unsafe impl Sync for DescriptorPoolInlineUniformBlockCreateInfo {}
5441
5442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
5443#[repr(C)]
5444#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5445pub struct DescriptorPoolSize {
5446    pub type_: DescriptorType,
5447    pub descriptor_count: u32,
5448}
5449
5450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
5451#[repr(C)]
5452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5453pub struct DescriptorSetAllocateInfo {
5454    pub s_type: StructureType,
5455    pub next: *const c_void,
5456    pub descriptor_pool: DescriptorPool,
5457    pub descriptor_set_count: u32,
5458    pub set_layouts: *const DescriptorSetLayout,
5459}
5460
5461impl Default for DescriptorSetAllocateInfo {
5462    #[inline]
5463    fn default() -> Self {
5464        Self {
5465            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
5466            next: ptr::null(),
5467            descriptor_pool: DescriptorPool::default(),
5468            descriptor_set_count: u32::default(),
5469            set_layouts: ptr::null(),
5470        }
5471    }
5472}
5473
5474unsafe impl Send for DescriptorSetAllocateInfo {}
5475unsafe impl Sync for DescriptorSetAllocateInfo {}
5476
5477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
5478#[repr(C)]
5479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5480pub struct DescriptorSetBindingReferenceVALVE {
5481    pub s_type: StructureType,
5482    pub next: *const c_void,
5483    pub descriptor_set_layout: DescriptorSetLayout,
5484    pub binding: u32,
5485}
5486
5487impl Default for DescriptorSetBindingReferenceVALVE {
5488    #[inline]
5489    fn default() -> Self {
5490        Self {
5491            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
5492            next: ptr::null(),
5493            descriptor_set_layout: DescriptorSetLayout::default(),
5494            binding: u32::default(),
5495        }
5496    }
5497}
5498
5499unsafe impl Send for DescriptorSetBindingReferenceVALVE {}
5500unsafe impl Sync for DescriptorSetBindingReferenceVALVE {}
5501
5502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
5503#[repr(C)]
5504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5505pub struct DescriptorSetLayoutBinding {
5506    pub binding: u32,
5507    pub descriptor_type: DescriptorType,
5508    pub descriptor_count: u32,
5509    pub stage_flags: ShaderStageFlags,
5510    pub immutable_samplers: *const Sampler,
5511}
5512
5513impl Default for DescriptorSetLayoutBinding {
5514    #[inline]
5515    fn default() -> Self {
5516        Self {
5517            binding: u32::default(),
5518            descriptor_type: DescriptorType::default(),
5519            descriptor_count: u32::default(),
5520            stage_flags: ShaderStageFlags::default(),
5521            immutable_samplers: ptr::null(),
5522        }
5523    }
5524}
5525
5526unsafe impl Send for DescriptorSetLayoutBinding {}
5527unsafe impl Sync for DescriptorSetLayoutBinding {}
5528
5529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
5530#[repr(C)]
5531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5532pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
5533    pub s_type: StructureType,
5534    pub next: *const c_void,
5535    pub binding_count: u32,
5536    pub binding_flags: *const DescriptorBindingFlags,
5537}
5538
5539impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
5540    #[inline]
5541    fn default() -> Self {
5542        Self {
5543            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
5544            next: ptr::null(),
5545            binding_count: u32::default(),
5546            binding_flags: ptr::null(),
5547        }
5548    }
5549}
5550
5551unsafe impl Send for DescriptorSetLayoutBindingFlagsCreateInfo {}
5552unsafe impl Sync for DescriptorSetLayoutBindingFlagsCreateInfo {}
5553
5554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
5555#[repr(C)]
5556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5557pub struct DescriptorSetLayoutCreateInfo {
5558    pub s_type: StructureType,
5559    pub next: *const c_void,
5560    pub flags: DescriptorSetLayoutCreateFlags,
5561    pub binding_count: u32,
5562    pub bindings: *const DescriptorSetLayoutBinding,
5563}
5564
5565impl Default for DescriptorSetLayoutCreateInfo {
5566    #[inline]
5567    fn default() -> Self {
5568        Self {
5569            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
5570            next: ptr::null(),
5571            flags: DescriptorSetLayoutCreateFlags::default(),
5572            binding_count: u32::default(),
5573            bindings: ptr::null(),
5574        }
5575    }
5576}
5577
5578unsafe impl Send for DescriptorSetLayoutCreateInfo {}
5579unsafe impl Sync for DescriptorSetLayoutCreateInfo {}
5580
5581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
5582#[repr(C)]
5583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5584pub struct DescriptorSetLayoutHostMappingInfoVALVE {
5585    pub s_type: StructureType,
5586    pub next: *mut c_void,
5587    pub descriptor_offset: usize,
5588    pub descriptor_size: u32,
5589}
5590
5591impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
5592    #[inline]
5593    fn default() -> Self {
5594        Self {
5595            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
5596            next: ptr::null_mut(),
5597            descriptor_offset: usize::default(),
5598            descriptor_size: u32::default(),
5599        }
5600    }
5601}
5602
5603unsafe impl Send for DescriptorSetLayoutHostMappingInfoVALVE {}
5604unsafe impl Sync for DescriptorSetLayoutHostMappingInfoVALVE {}
5605
5606/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
5607#[repr(C)]
5608#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5609pub struct DescriptorSetLayoutSupport {
5610    pub s_type: StructureType,
5611    pub next: *mut c_void,
5612    pub supported: Bool32,
5613}
5614
5615impl Default for DescriptorSetLayoutSupport {
5616    #[inline]
5617    fn default() -> Self {
5618        Self {
5619            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
5620            next: ptr::null_mut(),
5621            supported: Bool32::default(),
5622        }
5623    }
5624}
5625
5626unsafe impl Send for DescriptorSetLayoutSupport {}
5627unsafe impl Sync for DescriptorSetLayoutSupport {}
5628
5629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
5630#[repr(C)]
5631#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5632pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
5633    pub s_type: StructureType,
5634    pub next: *const c_void,
5635    pub descriptor_set_count: u32,
5636    pub descriptor_counts: *const u32,
5637}
5638
5639impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
5640    #[inline]
5641    fn default() -> Self {
5642        Self {
5643            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
5644            next: ptr::null(),
5645            descriptor_set_count: u32::default(),
5646            descriptor_counts: ptr::null(),
5647        }
5648    }
5649}
5650
5651unsafe impl Send for DescriptorSetVariableDescriptorCountAllocateInfo {}
5652unsafe impl Sync for DescriptorSetVariableDescriptorCountAllocateInfo {}
5653
5654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
5655#[repr(C)]
5656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5657pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
5658    pub s_type: StructureType,
5659    pub next: *mut c_void,
5660    pub max_variable_descriptor_count: u32,
5661}
5662
5663impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
5664    #[inline]
5665    fn default() -> Self {
5666        Self {
5667            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
5668            next: ptr::null_mut(),
5669            max_variable_descriptor_count: u32::default(),
5670        }
5671    }
5672}
5673
5674unsafe impl Send for DescriptorSetVariableDescriptorCountLayoutSupport {}
5675unsafe impl Sync for DescriptorSetVariableDescriptorCountLayoutSupport {}
5676
5677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
5678#[repr(C)]
5679#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5680pub struct DescriptorUpdateTemplateCreateInfo {
5681    pub s_type: StructureType,
5682    pub next: *const c_void,
5683    pub flags: DescriptorUpdateTemplateCreateFlags,
5684    pub descriptor_update_entry_count: u32,
5685    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
5686    pub template_type: DescriptorUpdateTemplateType,
5687    pub descriptor_set_layout: DescriptorSetLayout,
5688    pub pipeline_bind_point: PipelineBindPoint,
5689    pub pipeline_layout: PipelineLayout,
5690    pub set: u32,
5691}
5692
5693impl Default for DescriptorUpdateTemplateCreateInfo {
5694    #[inline]
5695    fn default() -> Self {
5696        Self {
5697            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
5698            next: ptr::null(),
5699            flags: DescriptorUpdateTemplateCreateFlags::default(),
5700            descriptor_update_entry_count: u32::default(),
5701            descriptor_update_entries: ptr::null(),
5702            template_type: DescriptorUpdateTemplateType::default(),
5703            descriptor_set_layout: DescriptorSetLayout::default(),
5704            pipeline_bind_point: PipelineBindPoint::default(),
5705            pipeline_layout: PipelineLayout::default(),
5706            set: u32::default(),
5707        }
5708    }
5709}
5710
5711unsafe impl Send for DescriptorUpdateTemplateCreateInfo {}
5712unsafe impl Sync for DescriptorUpdateTemplateCreateInfo {}
5713
5714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
5715#[repr(C)]
5716#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5717pub struct DescriptorUpdateTemplateEntry {
5718    pub dst_binding: u32,
5719    pub dst_array_element: u32,
5720    pub descriptor_count: u32,
5721    pub descriptor_type: DescriptorType,
5722    pub offset: usize,
5723    pub stride: usize,
5724}
5725
5726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
5727#[repr(C)]
5728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5729pub struct DeviceAddressBindingCallbackDataEXT {
5730    pub s_type: StructureType,
5731    pub next: *mut c_void,
5732    pub flags: DeviceAddressBindingFlagsEXT,
5733    pub base_address: DeviceAddress,
5734    pub size: DeviceSize,
5735    pub binding_type: DeviceAddressBindingTypeEXT,
5736}
5737
5738impl Default for DeviceAddressBindingCallbackDataEXT {
5739    #[inline]
5740    fn default() -> Self {
5741        Self {
5742            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
5743            next: ptr::null_mut(),
5744            flags: DeviceAddressBindingFlagsEXT::default(),
5745            base_address: DeviceAddress::default(),
5746            size: DeviceSize::default(),
5747            binding_type: DeviceAddressBindingTypeEXT::default(),
5748        }
5749    }
5750}
5751
5752unsafe impl Send for DeviceAddressBindingCallbackDataEXT {}
5753unsafe impl Sync for DeviceAddressBindingCallbackDataEXT {}
5754
5755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
5756#[repr(C)]
5757#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5758pub struct DeviceBufferMemoryRequirements {
5759    pub s_type: StructureType,
5760    pub next: *const c_void,
5761    pub create_info: *const BufferCreateInfo,
5762}
5763
5764impl Default for DeviceBufferMemoryRequirements {
5765    #[inline]
5766    fn default() -> Self {
5767        Self {
5768            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
5769            next: ptr::null(),
5770            create_info: ptr::null(),
5771        }
5772    }
5773}
5774
5775unsafe impl Send for DeviceBufferMemoryRequirements {}
5776unsafe impl Sync for DeviceBufferMemoryRequirements {}
5777
5778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
5779#[repr(C)]
5780#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5781pub struct DeviceCreateInfo {
5782    pub s_type: StructureType,
5783    pub next: *const c_void,
5784    pub flags: DeviceCreateFlags,
5785    pub queue_create_info_count: u32,
5786    pub queue_create_infos: *const DeviceQueueCreateInfo,
5787    pub enabled_layer_count: u32,
5788    pub enabled_layer_names: *const *const c_char,
5789    pub enabled_extension_count: u32,
5790    pub enabled_extension_names: *const *const c_char,
5791    pub enabled_features: *const PhysicalDeviceFeatures,
5792}
5793
5794impl Default for DeviceCreateInfo {
5795    #[inline]
5796    fn default() -> Self {
5797        Self {
5798            s_type: StructureType::DEVICE_CREATE_INFO,
5799            next: ptr::null(),
5800            flags: DeviceCreateFlags::default(),
5801            queue_create_info_count: u32::default(),
5802            queue_create_infos: ptr::null(),
5803            enabled_layer_count: u32::default(),
5804            enabled_layer_names: ptr::null(),
5805            enabled_extension_count: u32::default(),
5806            enabled_extension_names: ptr::null(),
5807            enabled_features: ptr::null(),
5808        }
5809    }
5810}
5811
5812unsafe impl Send for DeviceCreateInfo {}
5813unsafe impl Sync for DeviceCreateInfo {}
5814
5815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
5816#[repr(C)]
5817#[derive(Copy, Clone)]
5818pub struct DeviceDeviceMemoryReportCreateInfoEXT {
5819    pub s_type: StructureType,
5820    pub next: *const c_void,
5821    pub flags: DeviceMemoryReportFlagsEXT,
5822    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
5823    pub user_data: *mut c_void,
5824}
5825
5826impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
5827    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5828        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
5829            .field("s_type", &self.s_type)
5830            .field("next", &self.next)
5831            .field("flags", &self.flags)
5832            .field(
5833                "user_callback",
5834                &(self.user_callback.map(|f| f as *const u8)),
5835            )
5836            .field("user_data", &self.user_data)
5837            .finish()
5838    }
5839}
5840
5841impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
5842    #[inline]
5843    fn default() -> Self {
5844        Self {
5845            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
5846            next: ptr::null(),
5847            flags: DeviceMemoryReportFlagsEXT::default(),
5848            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
5849            user_data: ptr::null_mut(),
5850        }
5851    }
5852}
5853
5854unsafe impl Send for DeviceDeviceMemoryReportCreateInfoEXT {}
5855unsafe impl Sync for DeviceDeviceMemoryReportCreateInfoEXT {}
5856
5857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
5858#[repr(C)]
5859#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5860pub struct DeviceDiagnosticsConfigCreateInfoNV {
5861    pub s_type: StructureType,
5862    pub next: *const c_void,
5863    pub flags: DeviceDiagnosticsConfigFlagsNV,
5864}
5865
5866impl Default for DeviceDiagnosticsConfigCreateInfoNV {
5867    #[inline]
5868    fn default() -> Self {
5869        Self {
5870            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
5871            next: ptr::null(),
5872            flags: DeviceDiagnosticsConfigFlagsNV::default(),
5873        }
5874    }
5875}
5876
5877unsafe impl Send for DeviceDiagnosticsConfigCreateInfoNV {}
5878unsafe impl Sync for DeviceDiagnosticsConfigCreateInfoNV {}
5879
5880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
5881#[repr(C)]
5882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5883pub struct DeviceEventInfoEXT {
5884    pub s_type: StructureType,
5885    pub next: *const c_void,
5886    pub device_event: DeviceEventTypeEXT,
5887}
5888
5889impl Default for DeviceEventInfoEXT {
5890    #[inline]
5891    fn default() -> Self {
5892        Self {
5893            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
5894            next: ptr::null(),
5895            device_event: DeviceEventTypeEXT::default(),
5896        }
5897    }
5898}
5899
5900unsafe impl Send for DeviceEventInfoEXT {}
5901unsafe impl Sync for DeviceEventInfoEXT {}
5902
5903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
5904#[repr(C)]
5905#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5906pub struct DeviceFaultAddressInfoEXT {
5907    pub address_type: DeviceFaultAddressTypeEXT,
5908    pub reported_address: DeviceAddress,
5909    pub address_precision: DeviceSize,
5910}
5911
5912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
5913#[repr(C)]
5914#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5915pub struct DeviceFaultCountsEXT {
5916    pub s_type: StructureType,
5917    pub next: *mut c_void,
5918    pub address_info_count: u32,
5919    pub vendor_info_count: u32,
5920    pub vendor_binary_size: DeviceSize,
5921}
5922
5923impl Default for DeviceFaultCountsEXT {
5924    #[inline]
5925    fn default() -> Self {
5926        Self {
5927            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
5928            next: ptr::null_mut(),
5929            address_info_count: u32::default(),
5930            vendor_info_count: u32::default(),
5931            vendor_binary_size: DeviceSize::default(),
5932        }
5933    }
5934}
5935
5936unsafe impl Send for DeviceFaultCountsEXT {}
5937unsafe impl Sync for DeviceFaultCountsEXT {}
5938
5939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
5940#[repr(C)]
5941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5942pub struct DeviceFaultInfoEXT {
5943    pub s_type: StructureType,
5944    pub next: *mut c_void,
5945    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5946    pub address_infos: *mut DeviceFaultAddressInfoEXT,
5947    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
5948    pub vendor_binary_data: *mut c_void,
5949}
5950
5951impl Default for DeviceFaultInfoEXT {
5952    #[inline]
5953    fn default() -> Self {
5954        Self {
5955            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
5956            next: ptr::null_mut(),
5957            description: StringArray::default(),
5958            address_infos: ptr::null_mut(),
5959            vendor_infos: ptr::null_mut(),
5960            vendor_binary_data: ptr::null_mut(),
5961        }
5962    }
5963}
5964
5965unsafe impl Send for DeviceFaultInfoEXT {}
5966unsafe impl Sync for DeviceFaultInfoEXT {}
5967
5968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
5969#[repr(C)]
5970#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5971pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
5972    pub header_size: u32,
5973    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
5974    pub vendor_id: u32,
5975    pub device_id: u32,
5976    pub driver_version: u32,
5977    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
5978    pub application_name_offset: u32,
5979    pub application_version: u32,
5980    pub engine_name_offset: u32,
5981    pub engine_version: u32,
5982    pub api_version: u32,
5983}
5984
5985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
5986#[repr(C)]
5987#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5988pub struct DeviceFaultVendorInfoEXT {
5989    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5990    pub vendor_fault_code: u64,
5991    pub vendor_fault_data: u64,
5992}
5993
5994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
5995#[repr(C)]
5996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5997pub struct DeviceGroupBindSparseInfo {
5998    pub s_type: StructureType,
5999    pub next: *const c_void,
6000    pub resource_device_index: u32,
6001    pub memory_device_index: u32,
6002}
6003
6004impl Default for DeviceGroupBindSparseInfo {
6005    #[inline]
6006    fn default() -> Self {
6007        Self {
6008            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
6009            next: ptr::null(),
6010            resource_device_index: u32::default(),
6011            memory_device_index: u32::default(),
6012        }
6013    }
6014}
6015
6016unsafe impl Send for DeviceGroupBindSparseInfo {}
6017unsafe impl Sync for DeviceGroupBindSparseInfo {}
6018
6019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
6020#[repr(C)]
6021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6022pub struct DeviceGroupCommandBufferBeginInfo {
6023    pub s_type: StructureType,
6024    pub next: *const c_void,
6025    pub device_mask: u32,
6026}
6027
6028impl Default for DeviceGroupCommandBufferBeginInfo {
6029    #[inline]
6030    fn default() -> Self {
6031        Self {
6032            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
6033            next: ptr::null(),
6034            device_mask: u32::default(),
6035        }
6036    }
6037}
6038
6039unsafe impl Send for DeviceGroupCommandBufferBeginInfo {}
6040unsafe impl Sync for DeviceGroupCommandBufferBeginInfo {}
6041
6042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
6043#[repr(C)]
6044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6045pub struct DeviceGroupDeviceCreateInfo {
6046    pub s_type: StructureType,
6047    pub next: *const c_void,
6048    pub physical_device_count: u32,
6049    pub physical_devices: *const PhysicalDevice,
6050}
6051
6052impl Default for DeviceGroupDeviceCreateInfo {
6053    #[inline]
6054    fn default() -> Self {
6055        Self {
6056            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
6057            next: ptr::null(),
6058            physical_device_count: u32::default(),
6059            physical_devices: ptr::null(),
6060        }
6061    }
6062}
6063
6064unsafe impl Send for DeviceGroupDeviceCreateInfo {}
6065unsafe impl Sync for DeviceGroupDeviceCreateInfo {}
6066
6067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
6068#[repr(C)]
6069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6070pub struct DeviceGroupPresentCapabilitiesKHR {
6071    pub s_type: StructureType,
6072    pub next: *mut c_void,
6073    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE as usize],
6074    pub modes: DeviceGroupPresentModeFlagsKHR,
6075}
6076
6077impl Default for DeviceGroupPresentCapabilitiesKHR {
6078    #[inline]
6079    fn default() -> Self {
6080        Self {
6081            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
6082            next: ptr::null_mut(),
6083            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
6084            modes: DeviceGroupPresentModeFlagsKHR::default(),
6085        }
6086    }
6087}
6088
6089unsafe impl Send for DeviceGroupPresentCapabilitiesKHR {}
6090unsafe impl Sync for DeviceGroupPresentCapabilitiesKHR {}
6091
6092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
6093#[repr(C)]
6094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6095pub struct DeviceGroupPresentInfoKHR {
6096    pub s_type: StructureType,
6097    pub next: *const c_void,
6098    pub swapchain_count: u32,
6099    pub device_masks: *const u32,
6100    pub mode: DeviceGroupPresentModeFlagsKHR,
6101}
6102
6103impl Default for DeviceGroupPresentInfoKHR {
6104    #[inline]
6105    fn default() -> Self {
6106        Self {
6107            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
6108            next: ptr::null(),
6109            swapchain_count: u32::default(),
6110            device_masks: ptr::null(),
6111            mode: DeviceGroupPresentModeFlagsKHR::default(),
6112        }
6113    }
6114}
6115
6116unsafe impl Send for DeviceGroupPresentInfoKHR {}
6117unsafe impl Sync for DeviceGroupPresentInfoKHR {}
6118
6119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
6120#[repr(C)]
6121#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6122pub struct DeviceGroupRenderPassBeginInfo {
6123    pub s_type: StructureType,
6124    pub next: *const c_void,
6125    pub device_mask: u32,
6126    pub device_render_area_count: u32,
6127    pub device_render_areas: *const Rect2D,
6128}
6129
6130impl Default for DeviceGroupRenderPassBeginInfo {
6131    #[inline]
6132    fn default() -> Self {
6133        Self {
6134            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
6135            next: ptr::null(),
6136            device_mask: u32::default(),
6137            device_render_area_count: u32::default(),
6138            device_render_areas: ptr::null(),
6139        }
6140    }
6141}
6142
6143unsafe impl Send for DeviceGroupRenderPassBeginInfo {}
6144unsafe impl Sync for DeviceGroupRenderPassBeginInfo {}
6145
6146/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
6147#[repr(C)]
6148#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6149pub struct DeviceGroupSubmitInfo {
6150    pub s_type: StructureType,
6151    pub next: *const c_void,
6152    pub wait_semaphore_count: u32,
6153    pub wait_semaphore_device_indices: *const u32,
6154    pub command_buffer_count: u32,
6155    pub command_buffer_device_masks: *const u32,
6156    pub signal_semaphore_count: u32,
6157    pub signal_semaphore_device_indices: *const u32,
6158}
6159
6160impl Default for DeviceGroupSubmitInfo {
6161    #[inline]
6162    fn default() -> Self {
6163        Self {
6164            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
6165            next: ptr::null(),
6166            wait_semaphore_count: u32::default(),
6167            wait_semaphore_device_indices: ptr::null(),
6168            command_buffer_count: u32::default(),
6169            command_buffer_device_masks: ptr::null(),
6170            signal_semaphore_count: u32::default(),
6171            signal_semaphore_device_indices: ptr::null(),
6172        }
6173    }
6174}
6175
6176unsafe impl Send for DeviceGroupSubmitInfo {}
6177unsafe impl Sync for DeviceGroupSubmitInfo {}
6178
6179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
6180#[repr(C)]
6181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6182pub struct DeviceGroupSwapchainCreateInfoKHR {
6183    pub s_type: StructureType,
6184    pub next: *const c_void,
6185    pub modes: DeviceGroupPresentModeFlagsKHR,
6186}
6187
6188impl Default for DeviceGroupSwapchainCreateInfoKHR {
6189    #[inline]
6190    fn default() -> Self {
6191        Self {
6192            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
6193            next: ptr::null(),
6194            modes: DeviceGroupPresentModeFlagsKHR::default(),
6195        }
6196    }
6197}
6198
6199unsafe impl Send for DeviceGroupSwapchainCreateInfoKHR {}
6200unsafe impl Sync for DeviceGroupSwapchainCreateInfoKHR {}
6201
6202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
6203#[repr(C)]
6204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6205pub struct DeviceImageMemoryRequirements {
6206    pub s_type: StructureType,
6207    pub next: *const c_void,
6208    pub create_info: *const ImageCreateInfo,
6209    pub plane_aspect: ImageAspectFlags,
6210}
6211
6212impl Default for DeviceImageMemoryRequirements {
6213    #[inline]
6214    fn default() -> Self {
6215        Self {
6216            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
6217            next: ptr::null(),
6218            create_info: ptr::null(),
6219            plane_aspect: ImageAspectFlags::default(),
6220        }
6221    }
6222}
6223
6224unsafe impl Send for DeviceImageMemoryRequirements {}
6225unsafe impl Sync for DeviceImageMemoryRequirements {}
6226
6227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
6228#[repr(C)]
6229#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6230pub struct DeviceImageSubresourceInfo {
6231    pub s_type: StructureType,
6232    pub next: *const c_void,
6233    pub create_info: *const ImageCreateInfo,
6234    pub subresource: *const ImageSubresource2,
6235}
6236
6237impl Default for DeviceImageSubresourceInfo {
6238    #[inline]
6239    fn default() -> Self {
6240        Self {
6241            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
6242            next: ptr::null(),
6243            create_info: ptr::null(),
6244            subresource: ptr::null(),
6245        }
6246    }
6247}
6248
6249unsafe impl Send for DeviceImageSubresourceInfo {}
6250unsafe impl Sync for DeviceImageSubresourceInfo {}
6251
6252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
6253#[repr(C)]
6254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6255pub struct DeviceMemoryOpaqueCaptureAddressInfo {
6256    pub s_type: StructureType,
6257    pub next: *const c_void,
6258    pub memory: DeviceMemory,
6259}
6260
6261impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
6262    #[inline]
6263    fn default() -> Self {
6264        Self {
6265            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
6266            next: ptr::null(),
6267            memory: DeviceMemory::default(),
6268        }
6269    }
6270}
6271
6272unsafe impl Send for DeviceMemoryOpaqueCaptureAddressInfo {}
6273unsafe impl Sync for DeviceMemoryOpaqueCaptureAddressInfo {}
6274
6275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
6276#[repr(C)]
6277#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6278pub struct DeviceMemoryOverallocationCreateInfoAMD {
6279    pub s_type: StructureType,
6280    pub next: *const c_void,
6281    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
6282}
6283
6284impl Default for DeviceMemoryOverallocationCreateInfoAMD {
6285    #[inline]
6286    fn default() -> Self {
6287        Self {
6288            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
6289            next: ptr::null(),
6290            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
6291        }
6292    }
6293}
6294
6295unsafe impl Send for DeviceMemoryOverallocationCreateInfoAMD {}
6296unsafe impl Sync for DeviceMemoryOverallocationCreateInfoAMD {}
6297
6298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
6299#[repr(C)]
6300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6301pub struct DeviceMemoryReportCallbackDataEXT {
6302    pub s_type: StructureType,
6303    pub next: *mut c_void,
6304    pub flags: DeviceMemoryReportFlagsEXT,
6305    pub type_: DeviceMemoryReportEventTypeEXT,
6306    pub memory_object_id: u64,
6307    pub size: DeviceSize,
6308    pub object_type: ObjectType,
6309    pub object_handle: u64,
6310    pub heap_index: u32,
6311}
6312
6313impl Default for DeviceMemoryReportCallbackDataEXT {
6314    #[inline]
6315    fn default() -> Self {
6316        Self {
6317            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
6318            next: ptr::null_mut(),
6319            flags: DeviceMemoryReportFlagsEXT::default(),
6320            type_: DeviceMemoryReportEventTypeEXT::default(),
6321            memory_object_id: u64::default(),
6322            size: DeviceSize::default(),
6323            object_type: ObjectType::default(),
6324            object_handle: u64::default(),
6325            heap_index: u32::default(),
6326        }
6327    }
6328}
6329
6330unsafe impl Send for DeviceMemoryReportCallbackDataEXT {}
6331unsafe impl Sync for DeviceMemoryReportCallbackDataEXT {}
6332
6333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
6334#[repr(C)]
6335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6336pub struct DevicePipelineBinaryInternalCacheControlKHR {
6337    pub s_type: StructureType,
6338    pub next: *const c_void,
6339    pub disable_internal_cache: Bool32,
6340}
6341
6342impl Default for DevicePipelineBinaryInternalCacheControlKHR {
6343    #[inline]
6344    fn default() -> Self {
6345        Self {
6346            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
6347            next: ptr::null(),
6348            disable_internal_cache: Bool32::default(),
6349        }
6350    }
6351}
6352
6353unsafe impl Send for DevicePipelineBinaryInternalCacheControlKHR {}
6354unsafe impl Sync for DevicePipelineBinaryInternalCacheControlKHR {}
6355
6356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
6357#[repr(C)]
6358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6359pub struct DevicePrivateDataCreateInfo {
6360    pub s_type: StructureType,
6361    pub next: *const c_void,
6362    pub private_data_slot_request_count: u32,
6363}
6364
6365impl Default for DevicePrivateDataCreateInfo {
6366    #[inline]
6367    fn default() -> Self {
6368        Self {
6369            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
6370            next: ptr::null(),
6371            private_data_slot_request_count: u32::default(),
6372        }
6373    }
6374}
6375
6376unsafe impl Send for DevicePrivateDataCreateInfo {}
6377unsafe impl Sync for DevicePrivateDataCreateInfo {}
6378
6379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
6380#[repr(C)]
6381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6382pub struct DeviceQueueCreateInfo {
6383    pub s_type: StructureType,
6384    pub next: *const c_void,
6385    pub flags: DeviceQueueCreateFlags,
6386    pub queue_family_index: u32,
6387    pub queue_count: u32,
6388    pub queue_priorities: *const f32,
6389}
6390
6391impl Default for DeviceQueueCreateInfo {
6392    #[inline]
6393    fn default() -> Self {
6394        Self {
6395            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
6396            next: ptr::null(),
6397            flags: DeviceQueueCreateFlags::default(),
6398            queue_family_index: u32::default(),
6399            queue_count: u32::default(),
6400            queue_priorities: ptr::null(),
6401        }
6402    }
6403}
6404
6405unsafe impl Send for DeviceQueueCreateInfo {}
6406unsafe impl Sync for DeviceQueueCreateInfo {}
6407
6408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
6409#[repr(C)]
6410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6411pub struct DeviceQueueGlobalPriorityCreateInfo {
6412    pub s_type: StructureType,
6413    pub next: *const c_void,
6414    pub global_priority: QueueGlobalPriority,
6415}
6416
6417impl Default for DeviceQueueGlobalPriorityCreateInfo {
6418    #[inline]
6419    fn default() -> Self {
6420        Self {
6421            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
6422            next: ptr::null(),
6423            global_priority: QueueGlobalPriority::default(),
6424        }
6425    }
6426}
6427
6428unsafe impl Send for DeviceQueueGlobalPriorityCreateInfo {}
6429unsafe impl Sync for DeviceQueueGlobalPriorityCreateInfo {}
6430
6431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
6432#[repr(C)]
6433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6434pub struct DeviceQueueInfo2 {
6435    pub s_type: StructureType,
6436    pub next: *const c_void,
6437    pub flags: DeviceQueueCreateFlags,
6438    pub queue_family_index: u32,
6439    pub queue_index: u32,
6440}
6441
6442impl Default for DeviceQueueInfo2 {
6443    #[inline]
6444    fn default() -> Self {
6445        Self {
6446            s_type: StructureType::DEVICE_QUEUE_INFO_2,
6447            next: ptr::null(),
6448            flags: DeviceQueueCreateFlags::default(),
6449            queue_family_index: u32::default(),
6450            queue_index: u32::default(),
6451        }
6452    }
6453}
6454
6455unsafe impl Send for DeviceQueueInfo2 {}
6456unsafe impl Sync for DeviceQueueInfo2 {}
6457
6458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
6459#[repr(C)]
6460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6461pub struct DeviceQueueShaderCoreControlCreateInfoARM {
6462    pub s_type: StructureType,
6463    pub next: *mut c_void,
6464    pub shader_core_count: u32,
6465}
6466
6467impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
6468    #[inline]
6469    fn default() -> Self {
6470        Self {
6471            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
6472            next: ptr::null_mut(),
6473            shader_core_count: u32::default(),
6474        }
6475    }
6476}
6477
6478unsafe impl Send for DeviceQueueShaderCoreControlCreateInfoARM {}
6479unsafe impl Sync for DeviceQueueShaderCoreControlCreateInfoARM {}
6480
6481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
6482#[repr(C)]
6483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6484pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6485    pub s_type: StructureType,
6486    pub next: *const c_void,
6487    pub semaphore_sci_sync_pool_request_count: u32,
6488}
6489
6490impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6491    #[inline]
6492    fn default() -> Self {
6493        Self {
6494            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
6495            next: ptr::null(),
6496            semaphore_sci_sync_pool_request_count: u32::default(),
6497        }
6498    }
6499}
6500
6501unsafe impl Send for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6502unsafe impl Sync for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6503
6504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html>
6505#[repr(C)]
6506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6507pub struct DeviceTensorMemoryRequirementsARM {
6508    pub s_type: StructureType,
6509    pub next: *const c_void,
6510    pub create_info: *const TensorCreateInfoARM,
6511}
6512
6513impl Default for DeviceTensorMemoryRequirementsARM {
6514    #[inline]
6515    fn default() -> Self {
6516        Self {
6517            s_type: StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM,
6518            next: ptr::null(),
6519            create_info: ptr::null(),
6520        }
6521    }
6522}
6523
6524unsafe impl Send for DeviceTensorMemoryRequirementsARM {}
6525unsafe impl Sync for DeviceTensorMemoryRequirementsARM {}
6526
6527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
6528#[repr(C)]
6529#[derive(Copy, Clone)]
6530pub struct DirectDriverLoadingInfoLUNARG {
6531    pub s_type: StructureType,
6532    pub next: *mut c_void,
6533    pub flags: DirectDriverLoadingFlagsLUNARG,
6534    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
6535}
6536
6537impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
6538    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6539        f.debug_struct("DirectDriverLoadingInfoLUNARG")
6540            .field("s_type", &self.s_type)
6541            .field("next", &self.next)
6542            .field("flags", &self.flags)
6543            .field(
6544                "get_instance_proc_addr",
6545                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
6546            )
6547            .finish()
6548    }
6549}
6550
6551impl Default for DirectDriverLoadingInfoLUNARG {
6552    #[inline]
6553    fn default() -> Self {
6554        Self {
6555            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
6556            next: ptr::null_mut(),
6557            flags: DirectDriverLoadingFlagsLUNARG::default(),
6558            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
6559        }
6560    }
6561}
6562
6563unsafe impl Send for DirectDriverLoadingInfoLUNARG {}
6564unsafe impl Sync for DirectDriverLoadingInfoLUNARG {}
6565
6566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
6567#[repr(C)]
6568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6569pub struct DirectDriverLoadingListLUNARG {
6570    pub s_type: StructureType,
6571    pub next: *const c_void,
6572    pub mode: DirectDriverLoadingModeLUNARG,
6573    pub driver_count: u32,
6574    pub drivers: *const DirectDriverLoadingInfoLUNARG,
6575}
6576
6577impl Default for DirectDriverLoadingListLUNARG {
6578    #[inline]
6579    fn default() -> Self {
6580        Self {
6581            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
6582            next: ptr::null(),
6583            mode: DirectDriverLoadingModeLUNARG::default(),
6584            driver_count: u32::default(),
6585            drivers: ptr::null(),
6586        }
6587    }
6588}
6589
6590unsafe impl Send for DirectDriverLoadingListLUNARG {}
6591unsafe impl Sync for DirectDriverLoadingListLUNARG {}
6592
6593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
6594#[repr(C)]
6595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6596pub struct DirectFBSurfaceCreateInfoEXT {
6597    pub s_type: StructureType,
6598    pub next: *const c_void,
6599    pub flags: DirectFBSurfaceCreateFlagsEXT,
6600    pub dfb: *mut IDirectFB,
6601    pub surface: *mut IDirectFBSurface,
6602}
6603
6604impl Default for DirectFBSurfaceCreateInfoEXT {
6605    #[inline]
6606    fn default() -> Self {
6607        Self {
6608            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
6609            next: ptr::null(),
6610            flags: DirectFBSurfaceCreateFlagsEXT::default(),
6611            dfb: ptr::null_mut(),
6612            surface: ptr::null_mut(),
6613        }
6614    }
6615}
6616
6617unsafe impl Send for DirectFBSurfaceCreateInfoEXT {}
6618unsafe impl Sync for DirectFBSurfaceCreateInfoEXT {}
6619
6620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
6621#[repr(C)]
6622#[derive(Copy, Clone, Default, Debug)]
6623pub struct DispatchGraphCountInfoAMDX {
6624    pub count: u32,
6625    pub infos: DeviceOrHostAddressConstAMDX,
6626    pub stride: u64,
6627}
6628
6629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
6630#[repr(C)]
6631#[derive(Copy, Clone, Default, Debug)]
6632pub struct DispatchGraphInfoAMDX {
6633    pub node_index: u32,
6634    pub payload_count: u32,
6635    pub payloads: DeviceOrHostAddressConstAMDX,
6636    pub payload_stride: u64,
6637}
6638
6639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
6640#[repr(C)]
6641#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6642pub struct DispatchIndirectCommand {
6643    pub x: u32,
6644    pub y: u32,
6645    pub z: u32,
6646}
6647
6648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html>
6649#[repr(C)]
6650#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6651pub struct DispatchTileInfoQCOM {
6652    pub s_type: StructureType,
6653    pub next: *const c_void,
6654}
6655
6656impl Default for DispatchTileInfoQCOM {
6657    #[inline]
6658    fn default() -> Self {
6659        Self {
6660            s_type: StructureType::DISPATCH_TILE_INFO_QCOM,
6661            next: ptr::null(),
6662        }
6663    }
6664}
6665
6666unsafe impl Send for DispatchTileInfoQCOM {}
6667unsafe impl Sync for DispatchTileInfoQCOM {}
6668
6669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
6670#[repr(C)]
6671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6672pub struct DisplayEventInfoEXT {
6673    pub s_type: StructureType,
6674    pub next: *const c_void,
6675    pub display_event: DisplayEventTypeEXT,
6676}
6677
6678impl Default for DisplayEventInfoEXT {
6679    #[inline]
6680    fn default() -> Self {
6681        Self {
6682            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
6683            next: ptr::null(),
6684            display_event: DisplayEventTypeEXT::default(),
6685        }
6686    }
6687}
6688
6689unsafe impl Send for DisplayEventInfoEXT {}
6690unsafe impl Sync for DisplayEventInfoEXT {}
6691
6692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
6693#[repr(C)]
6694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6695pub struct DisplayModeCreateInfoKHR {
6696    pub s_type: StructureType,
6697    pub next: *const c_void,
6698    pub flags: DisplayModeCreateFlagsKHR,
6699    pub parameters: DisplayModeParametersKHR,
6700}
6701
6702impl Default for DisplayModeCreateInfoKHR {
6703    #[inline]
6704    fn default() -> Self {
6705        Self {
6706            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
6707            next: ptr::null(),
6708            flags: DisplayModeCreateFlagsKHR::default(),
6709            parameters: DisplayModeParametersKHR::default(),
6710        }
6711    }
6712}
6713
6714unsafe impl Send for DisplayModeCreateInfoKHR {}
6715unsafe impl Sync for DisplayModeCreateInfoKHR {}
6716
6717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
6718#[repr(C)]
6719#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6720pub struct DisplayModeParametersKHR {
6721    pub visible_region: Extent2D,
6722    pub refresh_rate: u32,
6723}
6724
6725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
6726#[repr(C)]
6727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6728pub struct DisplayModeProperties2KHR {
6729    pub s_type: StructureType,
6730    pub next: *mut c_void,
6731    pub display_mode_properties: DisplayModePropertiesKHR,
6732}
6733
6734impl Default for DisplayModeProperties2KHR {
6735    #[inline]
6736    fn default() -> Self {
6737        Self {
6738            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
6739            next: ptr::null_mut(),
6740            display_mode_properties: DisplayModePropertiesKHR::default(),
6741        }
6742    }
6743}
6744
6745unsafe impl Send for DisplayModeProperties2KHR {}
6746unsafe impl Sync for DisplayModeProperties2KHR {}
6747
6748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
6749#[repr(C)]
6750#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6751pub struct DisplayModePropertiesKHR {
6752    pub display_mode: DisplayModeKHR,
6753    pub parameters: DisplayModeParametersKHR,
6754}
6755
6756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
6757#[repr(C)]
6758#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6759pub struct DisplayModeStereoPropertiesNV {
6760    pub s_type: StructureType,
6761    pub next: *mut c_void,
6762    pub hdmi_3d_supported: Bool32,
6763}
6764
6765impl Default for DisplayModeStereoPropertiesNV {
6766    #[inline]
6767    fn default() -> Self {
6768        Self {
6769            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
6770            next: ptr::null_mut(),
6771            hdmi_3d_supported: Bool32::default(),
6772        }
6773    }
6774}
6775
6776unsafe impl Send for DisplayModeStereoPropertiesNV {}
6777unsafe impl Sync for DisplayModeStereoPropertiesNV {}
6778
6779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
6780#[repr(C)]
6781#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6782pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
6783    pub s_type: StructureType,
6784    pub next: *mut c_void,
6785    pub local_dimming_support: Bool32,
6786}
6787
6788impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
6789    #[inline]
6790    fn default() -> Self {
6791        Self {
6792            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
6793            next: ptr::null_mut(),
6794            local_dimming_support: Bool32::default(),
6795        }
6796    }
6797}
6798
6799unsafe impl Send for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6800unsafe impl Sync for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6801
6802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
6803#[repr(C)]
6804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6805pub struct DisplayPlaneCapabilities2KHR {
6806    pub s_type: StructureType,
6807    pub next: *mut c_void,
6808    pub capabilities: DisplayPlaneCapabilitiesKHR,
6809}
6810
6811impl Default for DisplayPlaneCapabilities2KHR {
6812    #[inline]
6813    fn default() -> Self {
6814        Self {
6815            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
6816            next: ptr::null_mut(),
6817            capabilities: DisplayPlaneCapabilitiesKHR::default(),
6818        }
6819    }
6820}
6821
6822unsafe impl Send for DisplayPlaneCapabilities2KHR {}
6823unsafe impl Sync for DisplayPlaneCapabilities2KHR {}
6824
6825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
6826#[repr(C)]
6827#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6828pub struct DisplayPlaneCapabilitiesKHR {
6829    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
6830    pub min_src_position: Offset2D,
6831    pub max_src_position: Offset2D,
6832    pub min_src_extent: Extent2D,
6833    pub max_src_extent: Extent2D,
6834    pub min_dst_position: Offset2D,
6835    pub max_dst_position: Offset2D,
6836    pub min_dst_extent: Extent2D,
6837    pub max_dst_extent: Extent2D,
6838}
6839
6840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
6841#[repr(C)]
6842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6843pub struct DisplayPlaneInfo2KHR {
6844    pub s_type: StructureType,
6845    pub next: *const c_void,
6846    pub mode: DisplayModeKHR,
6847    pub plane_index: u32,
6848}
6849
6850impl Default for DisplayPlaneInfo2KHR {
6851    #[inline]
6852    fn default() -> Self {
6853        Self {
6854            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
6855            next: ptr::null(),
6856            mode: DisplayModeKHR::default(),
6857            plane_index: u32::default(),
6858        }
6859    }
6860}
6861
6862unsafe impl Send for DisplayPlaneInfo2KHR {}
6863unsafe impl Sync for DisplayPlaneInfo2KHR {}
6864
6865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
6866#[repr(C)]
6867#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6868pub struct DisplayPlaneProperties2KHR {
6869    pub s_type: StructureType,
6870    pub next: *mut c_void,
6871    pub display_plane_properties: DisplayPlanePropertiesKHR,
6872}
6873
6874impl Default for DisplayPlaneProperties2KHR {
6875    #[inline]
6876    fn default() -> Self {
6877        Self {
6878            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
6879            next: ptr::null_mut(),
6880            display_plane_properties: DisplayPlanePropertiesKHR::default(),
6881        }
6882    }
6883}
6884
6885unsafe impl Send for DisplayPlaneProperties2KHR {}
6886unsafe impl Sync for DisplayPlaneProperties2KHR {}
6887
6888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
6889#[repr(C)]
6890#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6891pub struct DisplayPlanePropertiesKHR {
6892    pub current_display: DisplayKHR,
6893    pub current_stack_index: u32,
6894}
6895
6896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
6897#[repr(C)]
6898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6899pub struct DisplayPowerInfoEXT {
6900    pub s_type: StructureType,
6901    pub next: *const c_void,
6902    pub power_state: DisplayPowerStateEXT,
6903}
6904
6905impl Default for DisplayPowerInfoEXT {
6906    #[inline]
6907    fn default() -> Self {
6908        Self {
6909            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
6910            next: ptr::null(),
6911            power_state: DisplayPowerStateEXT::default(),
6912        }
6913    }
6914}
6915
6916unsafe impl Send for DisplayPowerInfoEXT {}
6917unsafe impl Sync for DisplayPowerInfoEXT {}
6918
6919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
6920#[repr(C)]
6921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6922pub struct DisplayPresentInfoKHR {
6923    pub s_type: StructureType,
6924    pub next: *const c_void,
6925    pub src_rect: Rect2D,
6926    pub dst_rect: Rect2D,
6927    pub persistent: Bool32,
6928}
6929
6930impl Default for DisplayPresentInfoKHR {
6931    #[inline]
6932    fn default() -> Self {
6933        Self {
6934            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
6935            next: ptr::null(),
6936            src_rect: Rect2D::default(),
6937            dst_rect: Rect2D::default(),
6938            persistent: Bool32::default(),
6939        }
6940    }
6941}
6942
6943unsafe impl Send for DisplayPresentInfoKHR {}
6944unsafe impl Sync for DisplayPresentInfoKHR {}
6945
6946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
6947#[repr(C)]
6948#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6949pub struct DisplayProperties2KHR {
6950    pub s_type: StructureType,
6951    pub next: *mut c_void,
6952    pub display_properties: DisplayPropertiesKHR,
6953}
6954
6955impl Default for DisplayProperties2KHR {
6956    #[inline]
6957    fn default() -> Self {
6958        Self {
6959            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
6960            next: ptr::null_mut(),
6961            display_properties: DisplayPropertiesKHR::default(),
6962        }
6963    }
6964}
6965
6966unsafe impl Send for DisplayProperties2KHR {}
6967unsafe impl Sync for DisplayProperties2KHR {}
6968
6969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
6970#[repr(C)]
6971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6972pub struct DisplayPropertiesKHR {
6973    pub display: DisplayKHR,
6974    pub display_name: *const c_char,
6975    pub physical_dimensions: Extent2D,
6976    pub physical_resolution: Extent2D,
6977    pub supported_transforms: SurfaceTransformFlagsKHR,
6978    pub plane_reorder_possible: Bool32,
6979    pub persistent_content: Bool32,
6980}
6981
6982impl Default for DisplayPropertiesKHR {
6983    #[inline]
6984    fn default() -> Self {
6985        Self {
6986            display: DisplayKHR::default(),
6987            display_name: ptr::null(),
6988            physical_dimensions: Extent2D::default(),
6989            physical_resolution: Extent2D::default(),
6990            supported_transforms: SurfaceTransformFlagsKHR::default(),
6991            plane_reorder_possible: Bool32::default(),
6992            persistent_content: Bool32::default(),
6993        }
6994    }
6995}
6996
6997unsafe impl Send for DisplayPropertiesKHR {}
6998unsafe impl Sync for DisplayPropertiesKHR {}
6999
7000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
7001#[repr(C)]
7002#[derive(Copy, Clone, Debug, PartialEq)]
7003pub struct DisplaySurfaceCreateInfoKHR {
7004    pub s_type: StructureType,
7005    pub next: *const c_void,
7006    pub flags: DisplaySurfaceCreateFlagsKHR,
7007    pub display_mode: DisplayModeKHR,
7008    pub plane_index: u32,
7009    pub plane_stack_index: u32,
7010    pub transform: SurfaceTransformFlagsKHR,
7011    pub global_alpha: f32,
7012    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
7013    pub image_extent: Extent2D,
7014}
7015
7016impl Default for DisplaySurfaceCreateInfoKHR {
7017    #[inline]
7018    fn default() -> Self {
7019        Self {
7020            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
7021            next: ptr::null(),
7022            flags: DisplaySurfaceCreateFlagsKHR::default(),
7023            display_mode: DisplayModeKHR::default(),
7024            plane_index: u32::default(),
7025            plane_stack_index: u32::default(),
7026            transform: SurfaceTransformFlagsKHR::default(),
7027            global_alpha: f32::default(),
7028            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
7029            image_extent: Extent2D::default(),
7030        }
7031    }
7032}
7033
7034unsafe impl Send for DisplaySurfaceCreateInfoKHR {}
7035unsafe impl Sync for DisplaySurfaceCreateInfoKHR {}
7036
7037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
7038#[repr(C)]
7039#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7040pub struct DisplaySurfaceStereoCreateInfoNV {
7041    pub s_type: StructureType,
7042    pub next: *const c_void,
7043    pub stereo_type: DisplaySurfaceStereoTypeNV,
7044}
7045
7046impl Default for DisplaySurfaceStereoCreateInfoNV {
7047    #[inline]
7048    fn default() -> Self {
7049        Self {
7050            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
7051            next: ptr::null(),
7052            stereo_type: DisplaySurfaceStereoTypeNV::default(),
7053        }
7054    }
7055}
7056
7057unsafe impl Send for DisplaySurfaceStereoCreateInfoNV {}
7058unsafe impl Sync for DisplaySurfaceStereoCreateInfoNV {}
7059
7060/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
7061#[repr(C)]
7062#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7063pub struct DrawIndexedIndirectCommand {
7064    pub index_count: u32,
7065    pub instance_count: u32,
7066    pub first_index: u32,
7067    pub vertex_offset: i32,
7068    pub first_instance: u32,
7069}
7070
7071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
7072#[repr(C)]
7073#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7074pub struct DrawIndirectCommand {
7075    pub vertex_count: u32,
7076    pub instance_count: u32,
7077    pub first_vertex: u32,
7078    pub first_instance: u32,
7079}
7080
7081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
7082#[repr(C)]
7083#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7084pub struct DrawIndirectCountIndirectCommandEXT {
7085    pub buffer_address: DeviceAddress,
7086    pub stride: u32,
7087    pub command_count: u32,
7088}
7089
7090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
7091#[repr(C)]
7092#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7093pub struct DrawMeshTasksIndirectCommandEXT {
7094    pub group_count_x: u32,
7095    pub group_count_y: u32,
7096    pub group_count_z: u32,
7097}
7098
7099/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
7100#[repr(C)]
7101#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7102pub struct DrawMeshTasksIndirectCommandNV {
7103    pub task_count: u32,
7104    pub first_task: u32,
7105}
7106
7107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
7108#[repr(C)]
7109#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7110pub struct DrmFormatModifierProperties2EXT {
7111    pub drm_format_modifier: u64,
7112    pub drm_format_modifier_plane_count: u32,
7113    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
7114}
7115
7116/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
7117#[repr(C)]
7118#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7119pub struct DrmFormatModifierPropertiesEXT {
7120    pub drm_format_modifier: u64,
7121    pub drm_format_modifier_plane_count: u32,
7122    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
7123}
7124
7125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
7126#[repr(C)]
7127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7128pub struct DrmFormatModifierPropertiesList2EXT {
7129    pub s_type: StructureType,
7130    pub next: *mut c_void,
7131    pub drm_format_modifier_count: u32,
7132    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
7133}
7134
7135impl Default for DrmFormatModifierPropertiesList2EXT {
7136    #[inline]
7137    fn default() -> Self {
7138        Self {
7139            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
7140            next: ptr::null_mut(),
7141            drm_format_modifier_count: u32::default(),
7142            drm_format_modifier_properties: ptr::null_mut(),
7143        }
7144    }
7145}
7146
7147unsafe impl Send for DrmFormatModifierPropertiesList2EXT {}
7148unsafe impl Sync for DrmFormatModifierPropertiesList2EXT {}
7149
7150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
7151#[repr(C)]
7152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7153pub struct DrmFormatModifierPropertiesListEXT {
7154    pub s_type: StructureType,
7155    pub next: *mut c_void,
7156    pub drm_format_modifier_count: u32,
7157    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
7158}
7159
7160impl Default for DrmFormatModifierPropertiesListEXT {
7161    #[inline]
7162    fn default() -> Self {
7163        Self {
7164            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
7165            next: ptr::null_mut(),
7166            drm_format_modifier_count: u32::default(),
7167            drm_format_modifier_properties: ptr::null_mut(),
7168        }
7169    }
7170}
7171
7172unsafe impl Send for DrmFormatModifierPropertiesListEXT {}
7173unsafe impl Sync for DrmFormatModifierPropertiesListEXT {}
7174
7175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
7176#[repr(C)]
7177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7178pub struct EventCreateInfo {
7179    pub s_type: StructureType,
7180    pub next: *const c_void,
7181    pub flags: EventCreateFlags,
7182}
7183
7184impl Default for EventCreateInfo {
7185    #[inline]
7186    fn default() -> Self {
7187        Self {
7188            s_type: StructureType::EVENT_CREATE_INFO,
7189            next: ptr::null(),
7190            flags: EventCreateFlags::default(),
7191        }
7192    }
7193}
7194
7195unsafe impl Send for EventCreateInfo {}
7196unsafe impl Sync for EventCreateInfo {}
7197
7198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
7199#[repr(C)]
7200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7201pub struct ExecutionGraphPipelineCreateInfoAMDX {
7202    pub s_type: StructureType,
7203    pub next: *const c_void,
7204    pub flags: PipelineCreateFlags,
7205    pub stage_count: u32,
7206    pub stages: *const PipelineShaderStageCreateInfo,
7207    pub library_info: *const PipelineLibraryCreateInfoKHR,
7208    pub layout: PipelineLayout,
7209    pub base_pipeline_handle: Pipeline,
7210    pub base_pipeline_index: i32,
7211}
7212
7213impl Default for ExecutionGraphPipelineCreateInfoAMDX {
7214    #[inline]
7215    fn default() -> Self {
7216        Self {
7217            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
7218            next: ptr::null(),
7219            flags: PipelineCreateFlags::default(),
7220            stage_count: u32::default(),
7221            stages: ptr::null(),
7222            library_info: ptr::null(),
7223            layout: PipelineLayout::default(),
7224            base_pipeline_handle: Pipeline::default(),
7225            base_pipeline_index: i32::default(),
7226        }
7227    }
7228}
7229
7230unsafe impl Send for ExecutionGraphPipelineCreateInfoAMDX {}
7231unsafe impl Sync for ExecutionGraphPipelineCreateInfoAMDX {}
7232
7233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
7234#[repr(C)]
7235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7236pub struct ExecutionGraphPipelineScratchSizeAMDX {
7237    pub s_type: StructureType,
7238    pub next: *mut c_void,
7239    pub min_size: DeviceSize,
7240    pub max_size: DeviceSize,
7241    pub size_granularity: DeviceSize,
7242}
7243
7244impl Default for ExecutionGraphPipelineScratchSizeAMDX {
7245    #[inline]
7246    fn default() -> Self {
7247        Self {
7248            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
7249            next: ptr::null_mut(),
7250            min_size: DeviceSize::default(),
7251            max_size: DeviceSize::default(),
7252            size_granularity: DeviceSize::default(),
7253        }
7254    }
7255}
7256
7257unsafe impl Send for ExecutionGraphPipelineScratchSizeAMDX {}
7258unsafe impl Sync for ExecutionGraphPipelineScratchSizeAMDX {}
7259
7260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
7261#[repr(C)]
7262#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7263pub struct ExportFenceCreateInfo {
7264    pub s_type: StructureType,
7265    pub next: *const c_void,
7266    pub handle_types: ExternalFenceHandleTypeFlags,
7267}
7268
7269impl Default for ExportFenceCreateInfo {
7270    #[inline]
7271    fn default() -> Self {
7272        Self {
7273            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
7274            next: ptr::null(),
7275            handle_types: ExternalFenceHandleTypeFlags::default(),
7276        }
7277    }
7278}
7279
7280unsafe impl Send for ExportFenceCreateInfo {}
7281unsafe impl Sync for ExportFenceCreateInfo {}
7282
7283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
7284#[repr(C)]
7285#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7286pub struct ExportFenceSciSyncInfoNV {
7287    pub s_type: StructureType,
7288    pub next: *const c_void,
7289    pub attributes: NvSciSyncAttrList,
7290}
7291
7292impl Default for ExportFenceSciSyncInfoNV {
7293    #[inline]
7294    fn default() -> Self {
7295        Self {
7296            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
7297            next: ptr::null(),
7298            attributes: ptr::null_mut(),
7299        }
7300    }
7301}
7302
7303unsafe impl Send for ExportFenceSciSyncInfoNV {}
7304unsafe impl Sync for ExportFenceSciSyncInfoNV {}
7305
7306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
7307#[repr(C)]
7308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7309pub struct ExportFenceWin32HandleInfoKHR {
7310    pub s_type: StructureType,
7311    pub next: *const c_void,
7312    pub attributes: *const SECURITY_ATTRIBUTES,
7313    pub dw_access: DWORD,
7314    pub name: LPCWSTR,
7315}
7316
7317impl Default for ExportFenceWin32HandleInfoKHR {
7318    #[inline]
7319    fn default() -> Self {
7320        Self {
7321            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
7322            next: ptr::null(),
7323            attributes: ptr::null(),
7324            dw_access: DWORD::default(),
7325            name: ptr::null_mut(),
7326        }
7327    }
7328}
7329
7330unsafe impl Send for ExportFenceWin32HandleInfoKHR {}
7331unsafe impl Sync for ExportFenceWin32HandleInfoKHR {}
7332
7333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
7334#[repr(C)]
7335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7336pub struct ExportMemoryAllocateInfo {
7337    pub s_type: StructureType,
7338    pub next: *const c_void,
7339    pub handle_types: ExternalMemoryHandleTypeFlags,
7340}
7341
7342impl Default for ExportMemoryAllocateInfo {
7343    #[inline]
7344    fn default() -> Self {
7345        Self {
7346            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
7347            next: ptr::null(),
7348            handle_types: ExternalMemoryHandleTypeFlags::default(),
7349        }
7350    }
7351}
7352
7353unsafe impl Send for ExportMemoryAllocateInfo {}
7354unsafe impl Sync for ExportMemoryAllocateInfo {}
7355
7356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
7357#[repr(C)]
7358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7359pub struct ExportMemoryAllocateInfoNV {
7360    pub s_type: StructureType,
7361    pub next: *const c_void,
7362    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7363}
7364
7365impl Default for ExportMemoryAllocateInfoNV {
7366    #[inline]
7367    fn default() -> Self {
7368        Self {
7369            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
7370            next: ptr::null(),
7371            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7372        }
7373    }
7374}
7375
7376unsafe impl Send for ExportMemoryAllocateInfoNV {}
7377unsafe impl Sync for ExportMemoryAllocateInfoNV {}
7378
7379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
7380#[repr(C)]
7381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7382pub struct ExportMemorySciBufInfoNV {
7383    pub s_type: StructureType,
7384    pub next: *const c_void,
7385    pub attributes: NvSciBufAttrList,
7386}
7387
7388impl Default for ExportMemorySciBufInfoNV {
7389    #[inline]
7390    fn default() -> Self {
7391        Self {
7392            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
7393            next: ptr::null(),
7394            attributes: ptr::null_mut(),
7395        }
7396    }
7397}
7398
7399unsafe impl Send for ExportMemorySciBufInfoNV {}
7400unsafe impl Sync for ExportMemorySciBufInfoNV {}
7401
7402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
7403#[repr(C)]
7404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7405pub struct ExportMemoryWin32HandleInfoKHR {
7406    pub s_type: StructureType,
7407    pub next: *const c_void,
7408    pub attributes: *const SECURITY_ATTRIBUTES,
7409    pub dw_access: DWORD,
7410    pub name: LPCWSTR,
7411}
7412
7413impl Default for ExportMemoryWin32HandleInfoKHR {
7414    #[inline]
7415    fn default() -> Self {
7416        Self {
7417            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
7418            next: ptr::null(),
7419            attributes: ptr::null(),
7420            dw_access: DWORD::default(),
7421            name: ptr::null_mut(),
7422        }
7423    }
7424}
7425
7426unsafe impl Send for ExportMemoryWin32HandleInfoKHR {}
7427unsafe impl Sync for ExportMemoryWin32HandleInfoKHR {}
7428
7429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
7430#[repr(C)]
7431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7432pub struct ExportMemoryWin32HandleInfoNV {
7433    pub s_type: StructureType,
7434    pub next: *const c_void,
7435    pub attributes: *const SECURITY_ATTRIBUTES,
7436    pub dw_access: DWORD,
7437}
7438
7439impl Default for ExportMemoryWin32HandleInfoNV {
7440    #[inline]
7441    fn default() -> Self {
7442        Self {
7443            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
7444            next: ptr::null(),
7445            attributes: ptr::null(),
7446            dw_access: DWORD::default(),
7447        }
7448    }
7449}
7450
7451unsafe impl Send for ExportMemoryWin32HandleInfoNV {}
7452unsafe impl Sync for ExportMemoryWin32HandleInfoNV {}
7453
7454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
7455#[repr(C)]
7456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7457pub struct ExportMetalBufferInfoEXT {
7458    pub s_type: StructureType,
7459    pub next: *const c_void,
7460    pub memory: DeviceMemory,
7461    pub mtl_buffer: MTLBuffer_id,
7462}
7463
7464impl Default for ExportMetalBufferInfoEXT {
7465    #[inline]
7466    fn default() -> Self {
7467        Self {
7468            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
7469            next: ptr::null(),
7470            memory: DeviceMemory::default(),
7471            mtl_buffer: ptr::null_mut(),
7472        }
7473    }
7474}
7475
7476unsafe impl Send for ExportMetalBufferInfoEXT {}
7477unsafe impl Sync for ExportMetalBufferInfoEXT {}
7478
7479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
7480#[repr(C)]
7481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7482pub struct ExportMetalCommandQueueInfoEXT {
7483    pub s_type: StructureType,
7484    pub next: *const c_void,
7485    pub queue: Queue,
7486    pub mtl_command_queue: MTLCommandQueue_id,
7487}
7488
7489impl Default for ExportMetalCommandQueueInfoEXT {
7490    #[inline]
7491    fn default() -> Self {
7492        Self {
7493            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
7494            next: ptr::null(),
7495            queue: Queue::default(),
7496            mtl_command_queue: ptr::null_mut(),
7497        }
7498    }
7499}
7500
7501unsafe impl Send for ExportMetalCommandQueueInfoEXT {}
7502unsafe impl Sync for ExportMetalCommandQueueInfoEXT {}
7503
7504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
7505#[repr(C)]
7506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7507pub struct ExportMetalDeviceInfoEXT {
7508    pub s_type: StructureType,
7509    pub next: *const c_void,
7510    pub mtl_device: MTLDevice_id,
7511}
7512
7513impl Default for ExportMetalDeviceInfoEXT {
7514    #[inline]
7515    fn default() -> Self {
7516        Self {
7517            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
7518            next: ptr::null(),
7519            mtl_device: ptr::null_mut(),
7520        }
7521    }
7522}
7523
7524unsafe impl Send for ExportMetalDeviceInfoEXT {}
7525unsafe impl Sync for ExportMetalDeviceInfoEXT {}
7526
7527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
7528#[repr(C)]
7529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7530pub struct ExportMetalIOSurfaceInfoEXT {
7531    pub s_type: StructureType,
7532    pub next: *const c_void,
7533    pub image: Image,
7534    pub io_surface: IOSurfaceRef,
7535}
7536
7537impl Default for ExportMetalIOSurfaceInfoEXT {
7538    #[inline]
7539    fn default() -> Self {
7540        Self {
7541            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
7542            next: ptr::null(),
7543            image: Image::default(),
7544            io_surface: ptr::null_mut(),
7545        }
7546    }
7547}
7548
7549unsafe impl Send for ExportMetalIOSurfaceInfoEXT {}
7550unsafe impl Sync for ExportMetalIOSurfaceInfoEXT {}
7551
7552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
7553#[repr(C)]
7554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7555pub struct ExportMetalObjectCreateInfoEXT {
7556    pub s_type: StructureType,
7557    pub next: *const c_void,
7558    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
7559}
7560
7561impl Default for ExportMetalObjectCreateInfoEXT {
7562    #[inline]
7563    fn default() -> Self {
7564        Self {
7565            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
7566            next: ptr::null(),
7567            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
7568        }
7569    }
7570}
7571
7572unsafe impl Send for ExportMetalObjectCreateInfoEXT {}
7573unsafe impl Sync for ExportMetalObjectCreateInfoEXT {}
7574
7575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
7576#[repr(C)]
7577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7578pub struct ExportMetalObjectsInfoEXT {
7579    pub s_type: StructureType,
7580    pub next: *const c_void,
7581}
7582
7583impl Default for ExportMetalObjectsInfoEXT {
7584    #[inline]
7585    fn default() -> Self {
7586        Self {
7587            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
7588            next: ptr::null(),
7589        }
7590    }
7591}
7592
7593unsafe impl Send for ExportMetalObjectsInfoEXT {}
7594unsafe impl Sync for ExportMetalObjectsInfoEXT {}
7595
7596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
7597#[repr(C)]
7598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7599pub struct ExportMetalSharedEventInfoEXT {
7600    pub s_type: StructureType,
7601    pub next: *const c_void,
7602    pub semaphore: Semaphore,
7603    pub event: Event,
7604    pub mtl_shared_event: MTLSharedEvent_id,
7605}
7606
7607impl Default for ExportMetalSharedEventInfoEXT {
7608    #[inline]
7609    fn default() -> Self {
7610        Self {
7611            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
7612            next: ptr::null(),
7613            semaphore: Semaphore::default(),
7614            event: Event::default(),
7615            mtl_shared_event: ptr::null_mut(),
7616        }
7617    }
7618}
7619
7620unsafe impl Send for ExportMetalSharedEventInfoEXT {}
7621unsafe impl Sync for ExportMetalSharedEventInfoEXT {}
7622
7623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
7624#[repr(C)]
7625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7626pub struct ExportMetalTextureInfoEXT {
7627    pub s_type: StructureType,
7628    pub next: *const c_void,
7629    pub image: Image,
7630    pub image_view: ImageView,
7631    pub buffer_view: BufferView,
7632    pub plane: ImageAspectFlags,
7633    pub mtl_texture: MTLTexture_id,
7634}
7635
7636impl Default for ExportMetalTextureInfoEXT {
7637    #[inline]
7638    fn default() -> Self {
7639        Self {
7640            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
7641            next: ptr::null(),
7642            image: Image::default(),
7643            image_view: ImageView::default(),
7644            buffer_view: BufferView::default(),
7645            plane: ImageAspectFlags::default(),
7646            mtl_texture: ptr::null_mut(),
7647        }
7648    }
7649}
7650
7651unsafe impl Send for ExportMetalTextureInfoEXT {}
7652unsafe impl Sync for ExportMetalTextureInfoEXT {}
7653
7654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
7655#[repr(C)]
7656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7657pub struct ExportSemaphoreCreateInfo {
7658    pub s_type: StructureType,
7659    pub next: *const c_void,
7660    pub handle_types: ExternalSemaphoreHandleTypeFlags,
7661}
7662
7663impl Default for ExportSemaphoreCreateInfo {
7664    #[inline]
7665    fn default() -> Self {
7666        Self {
7667            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
7668            next: ptr::null(),
7669            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7670        }
7671    }
7672}
7673
7674unsafe impl Send for ExportSemaphoreCreateInfo {}
7675unsafe impl Sync for ExportSemaphoreCreateInfo {}
7676
7677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
7678#[repr(C)]
7679#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7680pub struct ExportSemaphoreSciSyncInfoNV {
7681    pub s_type: StructureType,
7682    pub next: *const c_void,
7683    pub attributes: NvSciSyncAttrList,
7684}
7685
7686impl Default for ExportSemaphoreSciSyncInfoNV {
7687    #[inline]
7688    fn default() -> Self {
7689        Self {
7690            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
7691            next: ptr::null(),
7692            attributes: ptr::null_mut(),
7693        }
7694    }
7695}
7696
7697unsafe impl Send for ExportSemaphoreSciSyncInfoNV {}
7698unsafe impl Sync for ExportSemaphoreSciSyncInfoNV {}
7699
7700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
7701#[repr(C)]
7702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7703pub struct ExportSemaphoreWin32HandleInfoKHR {
7704    pub s_type: StructureType,
7705    pub next: *const c_void,
7706    pub attributes: *const SECURITY_ATTRIBUTES,
7707    pub dw_access: DWORD,
7708    pub name: LPCWSTR,
7709}
7710
7711impl Default for ExportSemaphoreWin32HandleInfoKHR {
7712    #[inline]
7713    fn default() -> Self {
7714        Self {
7715            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
7716            next: ptr::null(),
7717            attributes: ptr::null(),
7718            dw_access: DWORD::default(),
7719            name: ptr::null_mut(),
7720        }
7721    }
7722}
7723
7724unsafe impl Send for ExportSemaphoreWin32HandleInfoKHR {}
7725unsafe impl Sync for ExportSemaphoreWin32HandleInfoKHR {}
7726
7727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
7728#[repr(C)]
7729#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7730pub struct ExtensionProperties {
7731    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
7732    pub spec_version: u32,
7733}
7734
7735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
7736#[repr(C)]
7737#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7738pub struct Extent2D {
7739    pub width: u32,
7740    pub height: u32,
7741}
7742
7743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
7744#[repr(C)]
7745#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7746pub struct Extent3D {
7747    pub width: u32,
7748    pub height: u32,
7749    pub depth: u32,
7750}
7751
7752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
7753#[repr(C)]
7754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7755pub struct ExternalBufferProperties {
7756    pub s_type: StructureType,
7757    pub next: *mut c_void,
7758    pub external_memory_properties: ExternalMemoryProperties,
7759}
7760
7761impl Default for ExternalBufferProperties {
7762    #[inline]
7763    fn default() -> Self {
7764        Self {
7765            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
7766            next: ptr::null_mut(),
7767            external_memory_properties: ExternalMemoryProperties::default(),
7768        }
7769    }
7770}
7771
7772unsafe impl Send for ExternalBufferProperties {}
7773unsafe impl Sync for ExternalBufferProperties {}
7774
7775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html>
7776#[repr(C)]
7777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7778pub struct ExternalComputeQueueCreateInfoNV {
7779    pub s_type: StructureType,
7780    pub next: *const c_void,
7781    pub preferred_queue: Queue,
7782}
7783
7784impl Default for ExternalComputeQueueCreateInfoNV {
7785    #[inline]
7786    fn default() -> Self {
7787        Self {
7788            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV,
7789            next: ptr::null(),
7790            preferred_queue: Queue::default(),
7791        }
7792    }
7793}
7794
7795unsafe impl Send for ExternalComputeQueueCreateInfoNV {}
7796unsafe impl Sync for ExternalComputeQueueCreateInfoNV {}
7797
7798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html>
7799#[repr(C)]
7800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7801pub struct ExternalComputeQueueDataParamsNV {
7802    pub s_type: StructureType,
7803    pub next: *const c_void,
7804    pub device_index: u32,
7805}
7806
7807impl Default for ExternalComputeQueueDataParamsNV {
7808    #[inline]
7809    fn default() -> Self {
7810        Self {
7811            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV,
7812            next: ptr::null(),
7813            device_index: u32::default(),
7814        }
7815    }
7816}
7817
7818unsafe impl Send for ExternalComputeQueueDataParamsNV {}
7819unsafe impl Sync for ExternalComputeQueueDataParamsNV {}
7820
7821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html>
7822#[repr(C)]
7823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7824pub struct ExternalComputeQueueDeviceCreateInfoNV {
7825    pub s_type: StructureType,
7826    pub next: *const c_void,
7827    pub reserved_external_queues: u32,
7828}
7829
7830impl Default for ExternalComputeQueueDeviceCreateInfoNV {
7831    #[inline]
7832    fn default() -> Self {
7833        Self {
7834            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV,
7835            next: ptr::null(),
7836            reserved_external_queues: u32::default(),
7837        }
7838    }
7839}
7840
7841unsafe impl Send for ExternalComputeQueueDeviceCreateInfoNV {}
7842unsafe impl Sync for ExternalComputeQueueDeviceCreateInfoNV {}
7843
7844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
7845#[repr(C)]
7846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7847pub struct ExternalFenceProperties {
7848    pub s_type: StructureType,
7849    pub next: *mut c_void,
7850    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
7851    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
7852    pub external_fence_features: ExternalFenceFeatureFlags,
7853}
7854
7855impl Default for ExternalFenceProperties {
7856    #[inline]
7857    fn default() -> Self {
7858        Self {
7859            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
7860            next: ptr::null_mut(),
7861            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
7862            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
7863            external_fence_features: ExternalFenceFeatureFlags::default(),
7864        }
7865    }
7866}
7867
7868unsafe impl Send for ExternalFenceProperties {}
7869unsafe impl Sync for ExternalFenceProperties {}
7870
7871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
7872#[repr(C)]
7873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7874pub struct ExternalFormatANDROID {
7875    pub s_type: StructureType,
7876    pub next: *mut c_void,
7877    pub external_format: u64,
7878}
7879
7880impl Default for ExternalFormatANDROID {
7881    #[inline]
7882    fn default() -> Self {
7883        Self {
7884            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
7885            next: ptr::null_mut(),
7886            external_format: u64::default(),
7887        }
7888    }
7889}
7890
7891unsafe impl Send for ExternalFormatANDROID {}
7892unsafe impl Sync for ExternalFormatANDROID {}
7893
7894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatOHOS.html>
7895#[repr(C)]
7896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7897pub struct ExternalFormatOHOS {
7898    pub s_type: StructureType,
7899    pub next: *mut c_void,
7900    pub external_format: u64,
7901}
7902
7903impl Default for ExternalFormatOHOS {
7904    #[inline]
7905    fn default() -> Self {
7906        Self {
7907            s_type: StructureType::EXTERNAL_FORMAT_OHOS,
7908            next: ptr::null_mut(),
7909            external_format: u64::default(),
7910        }
7911    }
7912}
7913
7914unsafe impl Send for ExternalFormatOHOS {}
7915unsafe impl Sync for ExternalFormatOHOS {}
7916
7917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
7918#[repr(C)]
7919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7920pub struct ExternalFormatQNX {
7921    pub s_type: StructureType,
7922    pub next: *mut c_void,
7923    pub external_format: u64,
7924}
7925
7926impl Default for ExternalFormatQNX {
7927    #[inline]
7928    fn default() -> Self {
7929        Self {
7930            s_type: StructureType::EXTERNAL_FORMAT_QNX,
7931            next: ptr::null_mut(),
7932            external_format: u64::default(),
7933        }
7934    }
7935}
7936
7937unsafe impl Send for ExternalFormatQNX {}
7938unsafe impl Sync for ExternalFormatQNX {}
7939
7940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
7941#[repr(C)]
7942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7943pub struct ExternalImageFormatProperties {
7944    pub s_type: StructureType,
7945    pub next: *mut c_void,
7946    pub external_memory_properties: ExternalMemoryProperties,
7947}
7948
7949impl Default for ExternalImageFormatProperties {
7950    #[inline]
7951    fn default() -> Self {
7952        Self {
7953            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
7954            next: ptr::null_mut(),
7955            external_memory_properties: ExternalMemoryProperties::default(),
7956        }
7957    }
7958}
7959
7960unsafe impl Send for ExternalImageFormatProperties {}
7961unsafe impl Sync for ExternalImageFormatProperties {}
7962
7963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
7964#[repr(C)]
7965#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7966pub struct ExternalImageFormatPropertiesNV {
7967    pub image_format_properties: ImageFormatProperties,
7968    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
7969    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
7970    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
7971}
7972
7973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
7974#[repr(C)]
7975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7976pub struct ExternalMemoryAcquireUnmodifiedEXT {
7977    pub s_type: StructureType,
7978    pub next: *const c_void,
7979    pub acquire_unmodified_memory: Bool32,
7980}
7981
7982impl Default for ExternalMemoryAcquireUnmodifiedEXT {
7983    #[inline]
7984    fn default() -> Self {
7985        Self {
7986            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
7987            next: ptr::null(),
7988            acquire_unmodified_memory: Bool32::default(),
7989        }
7990    }
7991}
7992
7993unsafe impl Send for ExternalMemoryAcquireUnmodifiedEXT {}
7994unsafe impl Sync for ExternalMemoryAcquireUnmodifiedEXT {}
7995
7996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
7997#[repr(C)]
7998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7999pub struct ExternalMemoryBufferCreateInfo {
8000    pub s_type: StructureType,
8001    pub next: *const c_void,
8002    pub handle_types: ExternalMemoryHandleTypeFlags,
8003}
8004
8005impl Default for ExternalMemoryBufferCreateInfo {
8006    #[inline]
8007    fn default() -> Self {
8008        Self {
8009            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
8010            next: ptr::null(),
8011            handle_types: ExternalMemoryHandleTypeFlags::default(),
8012        }
8013    }
8014}
8015
8016unsafe impl Send for ExternalMemoryBufferCreateInfo {}
8017unsafe impl Sync for ExternalMemoryBufferCreateInfo {}
8018
8019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
8020#[repr(C)]
8021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8022pub struct ExternalMemoryImageCreateInfo {
8023    pub s_type: StructureType,
8024    pub next: *const c_void,
8025    pub handle_types: ExternalMemoryHandleTypeFlags,
8026}
8027
8028impl Default for ExternalMemoryImageCreateInfo {
8029    #[inline]
8030    fn default() -> Self {
8031        Self {
8032            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
8033            next: ptr::null(),
8034            handle_types: ExternalMemoryHandleTypeFlags::default(),
8035        }
8036    }
8037}
8038
8039unsafe impl Send for ExternalMemoryImageCreateInfo {}
8040unsafe impl Sync for ExternalMemoryImageCreateInfo {}
8041
8042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
8043#[repr(C)]
8044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8045pub struct ExternalMemoryImageCreateInfoNV {
8046    pub s_type: StructureType,
8047    pub next: *const c_void,
8048    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
8049}
8050
8051impl Default for ExternalMemoryImageCreateInfoNV {
8052    #[inline]
8053    fn default() -> Self {
8054        Self {
8055            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
8056            next: ptr::null(),
8057            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
8058        }
8059    }
8060}
8061
8062unsafe impl Send for ExternalMemoryImageCreateInfoNV {}
8063unsafe impl Sync for ExternalMemoryImageCreateInfoNV {}
8064
8065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
8066#[repr(C)]
8067#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8068pub struct ExternalMemoryProperties {
8069    pub external_memory_features: ExternalMemoryFeatureFlags,
8070    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
8071    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
8072}
8073
8074/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html>
8075#[repr(C)]
8076#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8077pub struct ExternalMemoryTensorCreateInfoARM {
8078    pub s_type: StructureType,
8079    pub next: *const c_void,
8080    pub handle_types: ExternalMemoryHandleTypeFlags,
8081}
8082
8083impl Default for ExternalMemoryTensorCreateInfoARM {
8084    #[inline]
8085    fn default() -> Self {
8086        Self {
8087            s_type: StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM,
8088            next: ptr::null(),
8089            handle_types: ExternalMemoryHandleTypeFlags::default(),
8090        }
8091    }
8092}
8093
8094unsafe impl Send for ExternalMemoryTensorCreateInfoARM {}
8095unsafe impl Sync for ExternalMemoryTensorCreateInfoARM {}
8096
8097/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
8098#[repr(C)]
8099#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8100pub struct ExternalSemaphoreProperties {
8101    pub s_type: StructureType,
8102    pub next: *mut c_void,
8103    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
8104    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
8105    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
8106}
8107
8108impl Default for ExternalSemaphoreProperties {
8109    #[inline]
8110    fn default() -> Self {
8111        Self {
8112            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
8113            next: ptr::null_mut(),
8114            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8115            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8116            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
8117        }
8118    }
8119}
8120
8121unsafe impl Send for ExternalSemaphoreProperties {}
8122unsafe impl Sync for ExternalSemaphoreProperties {}
8123
8124/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html>
8125#[repr(C)]
8126#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8127pub struct ExternalTensorPropertiesARM {
8128    pub s_type: StructureType,
8129    pub next: *const c_void,
8130    pub external_memory_properties: ExternalMemoryProperties,
8131}
8132
8133impl Default for ExternalTensorPropertiesARM {
8134    #[inline]
8135    fn default() -> Self {
8136        Self {
8137            s_type: StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM,
8138            next: ptr::null(),
8139            external_memory_properties: ExternalMemoryProperties::default(),
8140        }
8141    }
8142}
8143
8144unsafe impl Send for ExternalTensorPropertiesARM {}
8145unsafe impl Sync for ExternalTensorPropertiesARM {}
8146
8147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
8148#[repr(C)]
8149#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8150pub struct FenceCreateInfo {
8151    pub s_type: StructureType,
8152    pub next: *const c_void,
8153    pub flags: FenceCreateFlags,
8154}
8155
8156impl Default for FenceCreateInfo {
8157    #[inline]
8158    fn default() -> Self {
8159        Self {
8160            s_type: StructureType::FENCE_CREATE_INFO,
8161            next: ptr::null(),
8162            flags: FenceCreateFlags::default(),
8163        }
8164    }
8165}
8166
8167unsafe impl Send for FenceCreateInfo {}
8168unsafe impl Sync for FenceCreateInfo {}
8169
8170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
8171#[repr(C)]
8172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8173pub struct FenceGetFdInfoKHR {
8174    pub s_type: StructureType,
8175    pub next: *const c_void,
8176    pub fence: Fence,
8177    pub handle_type: ExternalFenceHandleTypeFlags,
8178}
8179
8180impl Default for FenceGetFdInfoKHR {
8181    #[inline]
8182    fn default() -> Self {
8183        Self {
8184            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
8185            next: ptr::null(),
8186            fence: Fence::default(),
8187            handle_type: ExternalFenceHandleTypeFlags::default(),
8188        }
8189    }
8190}
8191
8192unsafe impl Send for FenceGetFdInfoKHR {}
8193unsafe impl Sync for FenceGetFdInfoKHR {}
8194
8195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
8196#[repr(C)]
8197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8198pub struct FenceGetSciSyncInfoNV {
8199    pub s_type: StructureType,
8200    pub next: *const c_void,
8201    pub fence: Fence,
8202    pub handle_type: ExternalFenceHandleTypeFlags,
8203}
8204
8205impl Default for FenceGetSciSyncInfoNV {
8206    #[inline]
8207    fn default() -> Self {
8208        Self {
8209            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
8210            next: ptr::null(),
8211            fence: Fence::default(),
8212            handle_type: ExternalFenceHandleTypeFlags::default(),
8213        }
8214    }
8215}
8216
8217unsafe impl Send for FenceGetSciSyncInfoNV {}
8218unsafe impl Sync for FenceGetSciSyncInfoNV {}
8219
8220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
8221#[repr(C)]
8222#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8223pub struct FenceGetWin32HandleInfoKHR {
8224    pub s_type: StructureType,
8225    pub next: *const c_void,
8226    pub fence: Fence,
8227    pub handle_type: ExternalFenceHandleTypeFlags,
8228}
8229
8230impl Default for FenceGetWin32HandleInfoKHR {
8231    #[inline]
8232    fn default() -> Self {
8233        Self {
8234            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
8235            next: ptr::null(),
8236            fence: Fence::default(),
8237            handle_type: ExternalFenceHandleTypeFlags::default(),
8238        }
8239    }
8240}
8241
8242unsafe impl Send for FenceGetWin32HandleInfoKHR {}
8243unsafe impl Sync for FenceGetWin32HandleInfoKHR {}
8244
8245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
8246#[repr(C)]
8247#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8248pub struct FilterCubicImageViewImageFormatPropertiesEXT {
8249    pub s_type: StructureType,
8250    pub next: *mut c_void,
8251    pub filter_cubic: Bool32,
8252    pub filter_cubic_minmax: Bool32,
8253}
8254
8255impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
8256    #[inline]
8257    fn default() -> Self {
8258        Self {
8259            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
8260            next: ptr::null_mut(),
8261            filter_cubic: Bool32::default(),
8262            filter_cubic_minmax: Bool32::default(),
8263        }
8264    }
8265}
8266
8267unsafe impl Send for FilterCubicImageViewImageFormatPropertiesEXT {}
8268unsafe impl Sync for FilterCubicImageViewImageFormatPropertiesEXT {}
8269
8270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
8271#[repr(C)]
8272#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8273pub struct FormatProperties {
8274    pub linear_tiling_features: FormatFeatureFlags,
8275    pub optimal_tiling_features: FormatFeatureFlags,
8276    pub buffer_features: FormatFeatureFlags,
8277}
8278
8279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
8280#[repr(C)]
8281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8282pub struct FormatProperties2 {
8283    pub s_type: StructureType,
8284    pub next: *mut c_void,
8285    pub format_properties: FormatProperties,
8286}
8287
8288impl Default for FormatProperties2 {
8289    #[inline]
8290    fn default() -> Self {
8291        Self {
8292            s_type: StructureType::FORMAT_PROPERTIES_2,
8293            next: ptr::null_mut(),
8294            format_properties: FormatProperties::default(),
8295        }
8296    }
8297}
8298
8299unsafe impl Send for FormatProperties2 {}
8300unsafe impl Sync for FormatProperties2 {}
8301
8302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
8303#[repr(C)]
8304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8305pub struct FormatProperties3 {
8306    pub s_type: StructureType,
8307    pub next: *mut c_void,
8308    pub linear_tiling_features: FormatFeatureFlags2,
8309    pub optimal_tiling_features: FormatFeatureFlags2,
8310    pub buffer_features: FormatFeatureFlags2,
8311}
8312
8313impl Default for FormatProperties3 {
8314    #[inline]
8315    fn default() -> Self {
8316        Self {
8317            s_type: StructureType::FORMAT_PROPERTIES_3,
8318            next: ptr::null_mut(),
8319            linear_tiling_features: FormatFeatureFlags2::default(),
8320            optimal_tiling_features: FormatFeatureFlags2::default(),
8321            buffer_features: FormatFeatureFlags2::default(),
8322        }
8323    }
8324}
8325
8326unsafe impl Send for FormatProperties3 {}
8327unsafe impl Sync for FormatProperties3 {}
8328
8329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
8330#[repr(C)]
8331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8332pub struct FragmentShadingRateAttachmentInfoKHR {
8333    pub s_type: StructureType,
8334    pub next: *const c_void,
8335    pub fragment_shading_rate_attachment: *const AttachmentReference2,
8336    pub shading_rate_attachment_texel_size: Extent2D,
8337}
8338
8339impl Default for FragmentShadingRateAttachmentInfoKHR {
8340    #[inline]
8341    fn default() -> Self {
8342        Self {
8343            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
8344            next: ptr::null(),
8345            fragment_shading_rate_attachment: ptr::null(),
8346            shading_rate_attachment_texel_size: Extent2D::default(),
8347        }
8348    }
8349}
8350
8351unsafe impl Send for FragmentShadingRateAttachmentInfoKHR {}
8352unsafe impl Sync for FragmentShadingRateAttachmentInfoKHR {}
8353
8354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
8355#[repr(C)]
8356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8357pub struct FrameBoundaryEXT {
8358    pub s_type: StructureType,
8359    pub next: *const c_void,
8360    pub flags: FrameBoundaryFlagsEXT,
8361    pub frame_id: u64,
8362    pub image_count: u32,
8363    pub images: *const Image,
8364    pub buffer_count: u32,
8365    pub buffers: *const Buffer,
8366    pub tag_name: u64,
8367    pub tag_size: usize,
8368    pub tag: *const c_void,
8369}
8370
8371impl Default for FrameBoundaryEXT {
8372    #[inline]
8373    fn default() -> Self {
8374        Self {
8375            s_type: StructureType::FRAME_BOUNDARY_EXT,
8376            next: ptr::null(),
8377            flags: FrameBoundaryFlagsEXT::default(),
8378            frame_id: u64::default(),
8379            image_count: u32::default(),
8380            images: ptr::null(),
8381            buffer_count: u32::default(),
8382            buffers: ptr::null(),
8383            tag_name: u64::default(),
8384            tag_size: usize::default(),
8385            tag: ptr::null(),
8386        }
8387    }
8388}
8389
8390unsafe impl Send for FrameBoundaryEXT {}
8391unsafe impl Sync for FrameBoundaryEXT {}
8392
8393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html>
8394#[repr(C)]
8395#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8396pub struct FrameBoundaryTensorsARM {
8397    pub s_type: StructureType,
8398    pub next: *const c_void,
8399    pub tensor_count: u32,
8400    pub tensors: *const TensorARM,
8401}
8402
8403impl Default for FrameBoundaryTensorsARM {
8404    #[inline]
8405    fn default() -> Self {
8406        Self {
8407            s_type: StructureType::FRAME_BOUNDARY_TENSORS_ARM,
8408            next: ptr::null(),
8409            tensor_count: u32::default(),
8410            tensors: ptr::null(),
8411        }
8412    }
8413}
8414
8415unsafe impl Send for FrameBoundaryTensorsARM {}
8416unsafe impl Sync for FrameBoundaryTensorsARM {}
8417
8418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
8419#[repr(C)]
8420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8421pub struct FramebufferAttachmentImageInfo {
8422    pub s_type: StructureType,
8423    pub next: *const c_void,
8424    pub flags: ImageCreateFlags,
8425    pub usage: ImageUsageFlags,
8426    pub width: u32,
8427    pub height: u32,
8428    pub layer_count: u32,
8429    pub view_format_count: u32,
8430    pub view_formats: *const Format,
8431}
8432
8433impl Default for FramebufferAttachmentImageInfo {
8434    #[inline]
8435    fn default() -> Self {
8436        Self {
8437            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
8438            next: ptr::null(),
8439            flags: ImageCreateFlags::default(),
8440            usage: ImageUsageFlags::default(),
8441            width: u32::default(),
8442            height: u32::default(),
8443            layer_count: u32::default(),
8444            view_format_count: u32::default(),
8445            view_formats: ptr::null(),
8446        }
8447    }
8448}
8449
8450unsafe impl Send for FramebufferAttachmentImageInfo {}
8451unsafe impl Sync for FramebufferAttachmentImageInfo {}
8452
8453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
8454#[repr(C)]
8455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8456pub struct FramebufferAttachmentsCreateInfo {
8457    pub s_type: StructureType,
8458    pub next: *const c_void,
8459    pub attachment_image_info_count: u32,
8460    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
8461}
8462
8463impl Default for FramebufferAttachmentsCreateInfo {
8464    #[inline]
8465    fn default() -> Self {
8466        Self {
8467            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
8468            next: ptr::null(),
8469            attachment_image_info_count: u32::default(),
8470            attachment_image_infos: ptr::null(),
8471        }
8472    }
8473}
8474
8475unsafe impl Send for FramebufferAttachmentsCreateInfo {}
8476unsafe impl Sync for FramebufferAttachmentsCreateInfo {}
8477
8478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
8479#[repr(C)]
8480#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8481pub struct FramebufferCreateInfo {
8482    pub s_type: StructureType,
8483    pub next: *const c_void,
8484    pub flags: FramebufferCreateFlags,
8485    pub render_pass: RenderPass,
8486    pub attachment_count: u32,
8487    pub attachments: *const ImageView,
8488    pub width: u32,
8489    pub height: u32,
8490    pub layers: u32,
8491}
8492
8493impl Default for FramebufferCreateInfo {
8494    #[inline]
8495    fn default() -> Self {
8496        Self {
8497            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
8498            next: ptr::null(),
8499            flags: FramebufferCreateFlags::default(),
8500            render_pass: RenderPass::default(),
8501            attachment_count: u32::default(),
8502            attachments: ptr::null(),
8503            width: u32::default(),
8504            height: u32::default(),
8505            layers: u32::default(),
8506        }
8507    }
8508}
8509
8510unsafe impl Send for FramebufferCreateInfo {}
8511unsafe impl Sync for FramebufferCreateInfo {}
8512
8513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
8514#[repr(C)]
8515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8516pub struct FramebufferMixedSamplesCombinationNV {
8517    pub s_type: StructureType,
8518    pub next: *mut c_void,
8519    pub coverage_reduction_mode: CoverageReductionModeNV,
8520    pub rasterization_samples: SampleCountFlags,
8521    pub depth_stencil_samples: SampleCountFlags,
8522    pub color_samples: SampleCountFlags,
8523}
8524
8525impl Default for FramebufferMixedSamplesCombinationNV {
8526    #[inline]
8527    fn default() -> Self {
8528        Self {
8529            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
8530            next: ptr::null_mut(),
8531            coverage_reduction_mode: CoverageReductionModeNV::default(),
8532            rasterization_samples: SampleCountFlags::default(),
8533            depth_stencil_samples: SampleCountFlags::default(),
8534            color_samples: SampleCountFlags::default(),
8535        }
8536    }
8537}
8538
8539unsafe impl Send for FramebufferMixedSamplesCombinationNV {}
8540unsafe impl Sync for FramebufferMixedSamplesCombinationNV {}
8541
8542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
8543#[repr(C)]
8544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8545pub struct GeneratedCommandsInfoEXT {
8546    pub s_type: StructureType,
8547    pub next: *const c_void,
8548    pub shader_stages: ShaderStageFlags,
8549    pub indirect_execution_set: IndirectExecutionSetEXT,
8550    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8551    pub indirect_address: DeviceAddress,
8552    pub indirect_address_size: DeviceSize,
8553    pub preprocess_address: DeviceAddress,
8554    pub preprocess_size: DeviceSize,
8555    pub max_sequence_count: u32,
8556    pub sequence_count_address: DeviceAddress,
8557    pub max_draw_count: u32,
8558}
8559
8560impl Default for GeneratedCommandsInfoEXT {
8561    #[inline]
8562    fn default() -> Self {
8563        Self {
8564            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
8565            next: ptr::null(),
8566            shader_stages: ShaderStageFlags::default(),
8567            indirect_execution_set: IndirectExecutionSetEXT::default(),
8568            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8569            indirect_address: DeviceAddress::default(),
8570            indirect_address_size: DeviceSize::default(),
8571            preprocess_address: DeviceAddress::default(),
8572            preprocess_size: DeviceSize::default(),
8573            max_sequence_count: u32::default(),
8574            sequence_count_address: DeviceAddress::default(),
8575            max_draw_count: u32::default(),
8576        }
8577    }
8578}
8579
8580unsafe impl Send for GeneratedCommandsInfoEXT {}
8581unsafe impl Sync for GeneratedCommandsInfoEXT {}
8582
8583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
8584#[repr(C)]
8585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8586pub struct GeneratedCommandsInfoNV {
8587    pub s_type: StructureType,
8588    pub next: *const c_void,
8589    pub pipeline_bind_point: PipelineBindPoint,
8590    pub pipeline: Pipeline,
8591    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8592    pub stream_count: u32,
8593    pub streams: *const IndirectCommandsStreamNV,
8594    pub sequences_count: u32,
8595    pub preprocess_buffer: Buffer,
8596    pub preprocess_offset: DeviceSize,
8597    pub preprocess_size: DeviceSize,
8598    pub sequences_count_buffer: Buffer,
8599    pub sequences_count_offset: DeviceSize,
8600    pub sequences_index_buffer: Buffer,
8601    pub sequences_index_offset: DeviceSize,
8602}
8603
8604impl Default for GeneratedCommandsInfoNV {
8605    #[inline]
8606    fn default() -> Self {
8607        Self {
8608            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
8609            next: ptr::null(),
8610            pipeline_bind_point: PipelineBindPoint::default(),
8611            pipeline: Pipeline::default(),
8612            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8613            stream_count: u32::default(),
8614            streams: ptr::null(),
8615            sequences_count: u32::default(),
8616            preprocess_buffer: Buffer::default(),
8617            preprocess_offset: DeviceSize::default(),
8618            preprocess_size: DeviceSize::default(),
8619            sequences_count_buffer: Buffer::default(),
8620            sequences_count_offset: DeviceSize::default(),
8621            sequences_index_buffer: Buffer::default(),
8622            sequences_index_offset: DeviceSize::default(),
8623        }
8624    }
8625}
8626
8627unsafe impl Send for GeneratedCommandsInfoNV {}
8628unsafe impl Sync for GeneratedCommandsInfoNV {}
8629
8630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
8631#[repr(C)]
8632#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8633pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
8634    pub s_type: StructureType,
8635    pub next: *const c_void,
8636    pub indirect_execution_set: IndirectExecutionSetEXT,
8637    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8638    pub max_sequence_count: u32,
8639    pub max_draw_count: u32,
8640}
8641
8642impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
8643    #[inline]
8644    fn default() -> Self {
8645        Self {
8646            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
8647            next: ptr::null(),
8648            indirect_execution_set: IndirectExecutionSetEXT::default(),
8649            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8650            max_sequence_count: u32::default(),
8651            max_draw_count: u32::default(),
8652        }
8653    }
8654}
8655
8656unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoEXT {}
8657unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoEXT {}
8658
8659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
8660#[repr(C)]
8661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8662pub struct GeneratedCommandsMemoryRequirementsInfoNV {
8663    pub s_type: StructureType,
8664    pub next: *const c_void,
8665    pub pipeline_bind_point: PipelineBindPoint,
8666    pub pipeline: Pipeline,
8667    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8668    pub max_sequences_count: u32,
8669}
8670
8671impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
8672    #[inline]
8673    fn default() -> Self {
8674        Self {
8675            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
8676            next: ptr::null(),
8677            pipeline_bind_point: PipelineBindPoint::default(),
8678            pipeline: Pipeline::default(),
8679            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8680            max_sequences_count: u32::default(),
8681        }
8682    }
8683}
8684
8685unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoNV {}
8686unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoNV {}
8687
8688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
8689#[repr(C)]
8690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8691pub struct GeneratedCommandsPipelineInfoEXT {
8692    pub s_type: StructureType,
8693    pub next: *mut c_void,
8694    pub pipeline: Pipeline,
8695}
8696
8697impl Default for GeneratedCommandsPipelineInfoEXT {
8698    #[inline]
8699    fn default() -> Self {
8700        Self {
8701            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
8702            next: ptr::null_mut(),
8703            pipeline: Pipeline::default(),
8704        }
8705    }
8706}
8707
8708unsafe impl Send for GeneratedCommandsPipelineInfoEXT {}
8709unsafe impl Sync for GeneratedCommandsPipelineInfoEXT {}
8710
8711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
8712#[repr(C)]
8713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8714pub struct GeneratedCommandsShaderInfoEXT {
8715    pub s_type: StructureType,
8716    pub next: *mut c_void,
8717    pub shader_count: u32,
8718    pub shaders: *const ShaderEXT,
8719}
8720
8721impl Default for GeneratedCommandsShaderInfoEXT {
8722    #[inline]
8723    fn default() -> Self {
8724        Self {
8725            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
8726            next: ptr::null_mut(),
8727            shader_count: u32::default(),
8728            shaders: ptr::null(),
8729        }
8730    }
8731}
8732
8733unsafe impl Send for GeneratedCommandsShaderInfoEXT {}
8734unsafe impl Sync for GeneratedCommandsShaderInfoEXT {}
8735
8736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
8737#[repr(C)]
8738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8739pub struct GeometryAABBNV {
8740    pub s_type: StructureType,
8741    pub next: *const c_void,
8742    pub aabb_data: Buffer,
8743    pub num_aab_bs: u32,
8744    pub stride: u32,
8745    pub offset: DeviceSize,
8746}
8747
8748impl Default for GeometryAABBNV {
8749    #[inline]
8750    fn default() -> Self {
8751        Self {
8752            s_type: StructureType::GEOMETRY_AABB_NV,
8753            next: ptr::null(),
8754            aabb_data: Buffer::default(),
8755            num_aab_bs: u32::default(),
8756            stride: u32::default(),
8757            offset: DeviceSize::default(),
8758        }
8759    }
8760}
8761
8762unsafe impl Send for GeometryAABBNV {}
8763unsafe impl Sync for GeometryAABBNV {}
8764
8765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
8766#[repr(C)]
8767#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8768pub struct GeometryDataNV {
8769    pub triangles: GeometryTrianglesNV,
8770    pub aabbs: GeometryAABBNV,
8771}
8772
8773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
8774#[repr(C)]
8775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8776pub struct GeometryNV {
8777    pub s_type: StructureType,
8778    pub next: *const c_void,
8779    pub geometry_type: GeometryTypeKHR,
8780    pub geometry: GeometryDataNV,
8781    pub flags: GeometryFlagsKHR,
8782}
8783
8784impl Default for GeometryNV {
8785    #[inline]
8786    fn default() -> Self {
8787        Self {
8788            s_type: StructureType::GEOMETRY_NV,
8789            next: ptr::null(),
8790            geometry_type: GeometryTypeKHR::default(),
8791            geometry: GeometryDataNV::default(),
8792            flags: GeometryFlagsKHR::default(),
8793        }
8794    }
8795}
8796
8797unsafe impl Send for GeometryNV {}
8798unsafe impl Sync for GeometryNV {}
8799
8800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
8801#[repr(C)]
8802#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8803pub struct GeometryTrianglesNV {
8804    pub s_type: StructureType,
8805    pub next: *const c_void,
8806    pub vertex_data: Buffer,
8807    pub vertex_offset: DeviceSize,
8808    pub vertex_count: u32,
8809    pub vertex_stride: DeviceSize,
8810    pub vertex_format: Format,
8811    pub index_data: Buffer,
8812    pub index_offset: DeviceSize,
8813    pub index_count: u32,
8814    pub index_type: IndexType,
8815    pub transform_data: Buffer,
8816    pub transform_offset: DeviceSize,
8817}
8818
8819impl Default for GeometryTrianglesNV {
8820    #[inline]
8821    fn default() -> Self {
8822        Self {
8823            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
8824            next: ptr::null(),
8825            vertex_data: Buffer::default(),
8826            vertex_offset: DeviceSize::default(),
8827            vertex_count: u32::default(),
8828            vertex_stride: DeviceSize::default(),
8829            vertex_format: Format::default(),
8830            index_data: Buffer::default(),
8831            index_offset: DeviceSize::default(),
8832            index_count: u32::default(),
8833            index_type: IndexType::default(),
8834            transform_data: Buffer::default(),
8835            transform_offset: DeviceSize::default(),
8836        }
8837    }
8838}
8839
8840unsafe impl Send for GeometryTrianglesNV {}
8841unsafe impl Sync for GeometryTrianglesNV {}
8842
8843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
8844#[repr(C)]
8845#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8846pub struct GetLatencyMarkerInfoNV {
8847    pub s_type: StructureType,
8848    pub next: *const c_void,
8849    pub timing_count: u32,
8850    pub timings: *mut LatencyTimingsFrameReportNV,
8851}
8852
8853impl Default for GetLatencyMarkerInfoNV {
8854    #[inline]
8855    fn default() -> Self {
8856        Self {
8857            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
8858            next: ptr::null(),
8859            timing_count: u32::default(),
8860            timings: ptr::null_mut(),
8861        }
8862    }
8863}
8864
8865unsafe impl Send for GetLatencyMarkerInfoNV {}
8866unsafe impl Sync for GetLatencyMarkerInfoNV {}
8867
8868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
8869#[repr(C)]
8870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8871pub struct GraphicsPipelineCreateInfo {
8872    pub s_type: StructureType,
8873    pub next: *const c_void,
8874    pub flags: PipelineCreateFlags,
8875    pub stage_count: u32,
8876    pub stages: *const PipelineShaderStageCreateInfo,
8877    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8878    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
8879    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8880    pub viewport_state: *const PipelineViewportStateCreateInfo,
8881    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
8882    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
8883    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
8884    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
8885    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
8886    pub layout: PipelineLayout,
8887    pub render_pass: RenderPass,
8888    pub subpass: u32,
8889    pub base_pipeline_handle: Pipeline,
8890    pub base_pipeline_index: i32,
8891}
8892
8893impl Default for GraphicsPipelineCreateInfo {
8894    #[inline]
8895    fn default() -> Self {
8896        Self {
8897            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
8898            next: ptr::null(),
8899            flags: PipelineCreateFlags::default(),
8900            stage_count: u32::default(),
8901            stages: ptr::null(),
8902            vertex_input_state: ptr::null(),
8903            input_assembly_state: ptr::null(),
8904            tessellation_state: ptr::null(),
8905            viewport_state: ptr::null(),
8906            rasterization_state: ptr::null(),
8907            multisample_state: ptr::null(),
8908            depth_stencil_state: ptr::null(),
8909            color_blend_state: ptr::null(),
8910            dynamic_state: ptr::null(),
8911            layout: PipelineLayout::default(),
8912            render_pass: RenderPass::default(),
8913            subpass: u32::default(),
8914            base_pipeline_handle: Pipeline::default(),
8915            base_pipeline_index: i32::default(),
8916        }
8917    }
8918}
8919
8920unsafe impl Send for GraphicsPipelineCreateInfo {}
8921unsafe impl Sync for GraphicsPipelineCreateInfo {}
8922
8923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
8924#[repr(C)]
8925#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8926pub struct GraphicsPipelineLibraryCreateInfoEXT {
8927    pub s_type: StructureType,
8928    pub next: *const c_void,
8929    pub flags: GraphicsPipelineLibraryFlagsEXT,
8930}
8931
8932impl Default for GraphicsPipelineLibraryCreateInfoEXT {
8933    #[inline]
8934    fn default() -> Self {
8935        Self {
8936            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
8937            next: ptr::null(),
8938            flags: GraphicsPipelineLibraryFlagsEXT::default(),
8939        }
8940    }
8941}
8942
8943unsafe impl Send for GraphicsPipelineLibraryCreateInfoEXT {}
8944unsafe impl Sync for GraphicsPipelineLibraryCreateInfoEXT {}
8945
8946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
8947#[repr(C)]
8948#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8949pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
8950    pub s_type: StructureType,
8951    pub next: *const c_void,
8952    pub group_count: u32,
8953    pub groups: *const GraphicsShaderGroupCreateInfoNV,
8954    pub pipeline_count: u32,
8955    pub pipelines: *const Pipeline,
8956}
8957
8958impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
8959    #[inline]
8960    fn default() -> Self {
8961        Self {
8962            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
8963            next: ptr::null(),
8964            group_count: u32::default(),
8965            groups: ptr::null(),
8966            pipeline_count: u32::default(),
8967            pipelines: ptr::null(),
8968        }
8969    }
8970}
8971
8972unsafe impl Send for GraphicsPipelineShaderGroupsCreateInfoNV {}
8973unsafe impl Sync for GraphicsPipelineShaderGroupsCreateInfoNV {}
8974
8975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
8976#[repr(C)]
8977#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8978pub struct GraphicsShaderGroupCreateInfoNV {
8979    pub s_type: StructureType,
8980    pub next: *const c_void,
8981    pub stage_count: u32,
8982    pub stages: *const PipelineShaderStageCreateInfo,
8983    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8984    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8985}
8986
8987impl Default for GraphicsShaderGroupCreateInfoNV {
8988    #[inline]
8989    fn default() -> Self {
8990        Self {
8991            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
8992            next: ptr::null(),
8993            stage_count: u32::default(),
8994            stages: ptr::null(),
8995            vertex_input_state: ptr::null(),
8996            tessellation_state: ptr::null(),
8997        }
8998    }
8999}
9000
9001unsafe impl Send for GraphicsShaderGroupCreateInfoNV {}
9002unsafe impl Sync for GraphicsShaderGroupCreateInfoNV {}
9003
9004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
9005#[repr(C)]
9006#[derive(Copy, Clone, Debug, PartialEq)]
9007pub struct HdrMetadataEXT {
9008    pub s_type: StructureType,
9009    pub next: *const c_void,
9010    pub display_primary_red: XYColorEXT,
9011    pub display_primary_green: XYColorEXT,
9012    pub display_primary_blue: XYColorEXT,
9013    pub white_point: XYColorEXT,
9014    pub max_luminance: f32,
9015    pub min_luminance: f32,
9016    pub max_content_light_level: f32,
9017    pub max_frame_average_light_level: f32,
9018}
9019
9020impl Default for HdrMetadataEXT {
9021    #[inline]
9022    fn default() -> Self {
9023        Self {
9024            s_type: StructureType::HDR_METADATA_EXT,
9025            next: ptr::null(),
9026            display_primary_red: XYColorEXT::default(),
9027            display_primary_green: XYColorEXT::default(),
9028            display_primary_blue: XYColorEXT::default(),
9029            white_point: XYColorEXT::default(),
9030            max_luminance: f32::default(),
9031            min_luminance: f32::default(),
9032            max_content_light_level: f32::default(),
9033            max_frame_average_light_level: f32::default(),
9034        }
9035    }
9036}
9037
9038unsafe impl Send for HdrMetadataEXT {}
9039unsafe impl Sync for HdrMetadataEXT {}
9040
9041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
9042#[repr(C)]
9043#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9044pub struct HdrVividDynamicMetadataHUAWEI {
9045    pub s_type: StructureType,
9046    pub next: *const c_void,
9047    pub dynamic_metadata_size: usize,
9048    pub dynamic_metadata: *const c_void,
9049}
9050
9051impl Default for HdrVividDynamicMetadataHUAWEI {
9052    #[inline]
9053    fn default() -> Self {
9054        Self {
9055            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
9056            next: ptr::null(),
9057            dynamic_metadata_size: usize::default(),
9058            dynamic_metadata: ptr::null(),
9059        }
9060    }
9061}
9062
9063unsafe impl Send for HdrVividDynamicMetadataHUAWEI {}
9064unsafe impl Sync for HdrVividDynamicMetadataHUAWEI {}
9065
9066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
9067#[repr(C)]
9068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9069pub struct HeadlessSurfaceCreateInfoEXT {
9070    pub s_type: StructureType,
9071    pub next: *const c_void,
9072    pub flags: HeadlessSurfaceCreateFlagsEXT,
9073}
9074
9075impl Default for HeadlessSurfaceCreateInfoEXT {
9076    #[inline]
9077    fn default() -> Self {
9078        Self {
9079            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
9080            next: ptr::null(),
9081            flags: HeadlessSurfaceCreateFlagsEXT::default(),
9082        }
9083    }
9084}
9085
9086unsafe impl Send for HeadlessSurfaceCreateInfoEXT {}
9087unsafe impl Sync for HeadlessSurfaceCreateInfoEXT {}
9088
9089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
9090#[repr(C)]
9091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9092pub struct HostImageCopyDevicePerformanceQuery {
9093    pub s_type: StructureType,
9094    pub next: *mut c_void,
9095    pub optimal_device_access: Bool32,
9096    pub identical_memory_layout: Bool32,
9097}
9098
9099impl Default for HostImageCopyDevicePerformanceQuery {
9100    #[inline]
9101    fn default() -> Self {
9102        Self {
9103            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
9104            next: ptr::null_mut(),
9105            optimal_device_access: Bool32::default(),
9106            identical_memory_layout: Bool32::default(),
9107        }
9108    }
9109}
9110
9111unsafe impl Send for HostImageCopyDevicePerformanceQuery {}
9112unsafe impl Sync for HostImageCopyDevicePerformanceQuery {}
9113
9114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
9115#[repr(C)]
9116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9117pub struct HostImageLayoutTransitionInfo {
9118    pub s_type: StructureType,
9119    pub next: *const c_void,
9120    pub image: Image,
9121    pub old_layout: ImageLayout,
9122    pub new_layout: ImageLayout,
9123    pub subresource_range: ImageSubresourceRange,
9124}
9125
9126impl Default for HostImageLayoutTransitionInfo {
9127    #[inline]
9128    fn default() -> Self {
9129        Self {
9130            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
9131            next: ptr::null(),
9132            image: Image::default(),
9133            old_layout: ImageLayout::default(),
9134            new_layout: ImageLayout::default(),
9135            subresource_range: ImageSubresourceRange::default(),
9136        }
9137    }
9138}
9139
9140unsafe impl Send for HostImageLayoutTransitionInfo {}
9141unsafe impl Sync for HostImageLayoutTransitionInfo {}
9142
9143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
9144#[repr(C)]
9145#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9146pub struct IOSSurfaceCreateInfoMVK {
9147    pub s_type: StructureType,
9148    pub next: *const c_void,
9149    pub flags: IOSSurfaceCreateFlagsMVK,
9150    pub view: *const c_void,
9151}
9152
9153impl Default for IOSSurfaceCreateInfoMVK {
9154    #[inline]
9155    fn default() -> Self {
9156        Self {
9157            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
9158            next: ptr::null(),
9159            flags: IOSSurfaceCreateFlagsMVK::default(),
9160            view: ptr::null(),
9161        }
9162    }
9163}
9164
9165unsafe impl Send for IOSSurfaceCreateInfoMVK {}
9166unsafe impl Sync for IOSSurfaceCreateInfoMVK {}
9167
9168/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
9169#[repr(C)]
9170#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9171pub struct ImageAlignmentControlCreateInfoMESA {
9172    pub s_type: StructureType,
9173    pub next: *const c_void,
9174    pub maximum_requested_alignment: u32,
9175}
9176
9177impl Default for ImageAlignmentControlCreateInfoMESA {
9178    #[inline]
9179    fn default() -> Self {
9180        Self {
9181            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
9182            next: ptr::null(),
9183            maximum_requested_alignment: u32::default(),
9184        }
9185    }
9186}
9187
9188unsafe impl Send for ImageAlignmentControlCreateInfoMESA {}
9189unsafe impl Sync for ImageAlignmentControlCreateInfoMESA {}
9190
9191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
9192#[repr(C)]
9193#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9194pub struct ImageBlit {
9195    pub src_subresource: ImageSubresourceLayers,
9196    pub src_offsets: [Offset3D; 2],
9197    pub dst_subresource: ImageSubresourceLayers,
9198    pub dst_offsets: [Offset3D; 2],
9199}
9200
9201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
9202#[repr(C)]
9203#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9204pub struct ImageBlit2 {
9205    pub s_type: StructureType,
9206    pub next: *const c_void,
9207    pub src_subresource: ImageSubresourceLayers,
9208    pub src_offsets: [Offset3D; 2],
9209    pub dst_subresource: ImageSubresourceLayers,
9210    pub dst_offsets: [Offset3D; 2],
9211}
9212
9213impl Default for ImageBlit2 {
9214    #[inline]
9215    fn default() -> Self {
9216        Self {
9217            s_type: StructureType::IMAGE_BLIT_2,
9218            next: ptr::null(),
9219            src_subresource: ImageSubresourceLayers::default(),
9220            src_offsets: [Offset3D::default(); 2],
9221            dst_subresource: ImageSubresourceLayers::default(),
9222            dst_offsets: [Offset3D::default(); 2],
9223        }
9224    }
9225}
9226
9227unsafe impl Send for ImageBlit2 {}
9228unsafe impl Sync for ImageBlit2 {}
9229
9230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
9231#[repr(C)]
9232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9233pub struct ImageCaptureDescriptorDataInfoEXT {
9234    pub s_type: StructureType,
9235    pub next: *const c_void,
9236    pub image: Image,
9237}
9238
9239impl Default for ImageCaptureDescriptorDataInfoEXT {
9240    #[inline]
9241    fn default() -> Self {
9242        Self {
9243            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9244            next: ptr::null(),
9245            image: Image::default(),
9246        }
9247    }
9248}
9249
9250unsafe impl Send for ImageCaptureDescriptorDataInfoEXT {}
9251unsafe impl Sync for ImageCaptureDescriptorDataInfoEXT {}
9252
9253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
9254#[repr(C)]
9255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9256pub struct ImageCompressionControlEXT {
9257    pub s_type: StructureType,
9258    pub next: *const c_void,
9259    pub flags: ImageCompressionFlagsEXT,
9260    pub compression_control_plane_count: u32,
9261    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
9262}
9263
9264impl Default for ImageCompressionControlEXT {
9265    #[inline]
9266    fn default() -> Self {
9267        Self {
9268            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
9269            next: ptr::null(),
9270            flags: ImageCompressionFlagsEXT::default(),
9271            compression_control_plane_count: u32::default(),
9272            fixed_rate_flags: ptr::null_mut(),
9273        }
9274    }
9275}
9276
9277unsafe impl Send for ImageCompressionControlEXT {}
9278unsafe impl Sync for ImageCompressionControlEXT {}
9279
9280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
9281#[repr(C)]
9282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9283pub struct ImageCompressionPropertiesEXT {
9284    pub s_type: StructureType,
9285    pub next: *mut c_void,
9286    pub image_compression_flags: ImageCompressionFlagsEXT,
9287    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
9288}
9289
9290impl Default for ImageCompressionPropertiesEXT {
9291    #[inline]
9292    fn default() -> Self {
9293        Self {
9294            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
9295            next: ptr::null_mut(),
9296            image_compression_flags: ImageCompressionFlagsEXT::default(),
9297            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
9298        }
9299    }
9300}
9301
9302unsafe impl Send for ImageCompressionPropertiesEXT {}
9303unsafe impl Sync for ImageCompressionPropertiesEXT {}
9304
9305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
9306#[repr(C)]
9307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9308pub struct ImageConstraintsInfoFUCHSIA {
9309    pub s_type: StructureType,
9310    pub next: *const c_void,
9311    pub format_constraints_count: u32,
9312    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
9313    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
9314    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
9315}
9316
9317impl Default for ImageConstraintsInfoFUCHSIA {
9318    #[inline]
9319    fn default() -> Self {
9320        Self {
9321            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
9322            next: ptr::null(),
9323            format_constraints_count: u32::default(),
9324            format_constraints: ptr::null(),
9325            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
9326            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
9327        }
9328    }
9329}
9330
9331unsafe impl Send for ImageConstraintsInfoFUCHSIA {}
9332unsafe impl Sync for ImageConstraintsInfoFUCHSIA {}
9333
9334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
9335#[repr(C)]
9336#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9337pub struct ImageCopy {
9338    pub src_subresource: ImageSubresourceLayers,
9339    pub src_offset: Offset3D,
9340    pub dst_subresource: ImageSubresourceLayers,
9341    pub dst_offset: Offset3D,
9342    pub extent: Extent3D,
9343}
9344
9345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
9346#[repr(C)]
9347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9348pub struct ImageCopy2 {
9349    pub s_type: StructureType,
9350    pub next: *const c_void,
9351    pub src_subresource: ImageSubresourceLayers,
9352    pub src_offset: Offset3D,
9353    pub dst_subresource: ImageSubresourceLayers,
9354    pub dst_offset: Offset3D,
9355    pub extent: Extent3D,
9356}
9357
9358impl Default for ImageCopy2 {
9359    #[inline]
9360    fn default() -> Self {
9361        Self {
9362            s_type: StructureType::IMAGE_COPY_2,
9363            next: ptr::null(),
9364            src_subresource: ImageSubresourceLayers::default(),
9365            src_offset: Offset3D::default(),
9366            dst_subresource: ImageSubresourceLayers::default(),
9367            dst_offset: Offset3D::default(),
9368            extent: Extent3D::default(),
9369        }
9370    }
9371}
9372
9373unsafe impl Send for ImageCopy2 {}
9374unsafe impl Sync for ImageCopy2 {}
9375
9376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
9377#[repr(C)]
9378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9379pub struct ImageCreateInfo {
9380    pub s_type: StructureType,
9381    pub next: *const c_void,
9382    pub flags: ImageCreateFlags,
9383    pub image_type: ImageType,
9384    pub format: Format,
9385    pub extent: Extent3D,
9386    pub mip_levels: u32,
9387    pub array_layers: u32,
9388    pub samples: SampleCountFlags,
9389    pub tiling: ImageTiling,
9390    pub usage: ImageUsageFlags,
9391    pub sharing_mode: SharingMode,
9392    pub queue_family_index_count: u32,
9393    pub queue_family_indices: *const u32,
9394    pub initial_layout: ImageLayout,
9395}
9396
9397impl Default for ImageCreateInfo {
9398    #[inline]
9399    fn default() -> Self {
9400        Self {
9401            s_type: StructureType::IMAGE_CREATE_INFO,
9402            next: ptr::null(),
9403            flags: ImageCreateFlags::default(),
9404            image_type: ImageType::default(),
9405            format: Format::default(),
9406            extent: Extent3D::default(),
9407            mip_levels: u32::default(),
9408            array_layers: u32::default(),
9409            samples: SampleCountFlags::default(),
9410            tiling: ImageTiling::default(),
9411            usage: ImageUsageFlags::default(),
9412            sharing_mode: SharingMode::default(),
9413            queue_family_index_count: u32::default(),
9414            queue_family_indices: ptr::null(),
9415            initial_layout: ImageLayout::default(),
9416        }
9417    }
9418}
9419
9420unsafe impl Send for ImageCreateInfo {}
9421unsafe impl Sync for ImageCreateInfo {}
9422
9423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
9424#[repr(C)]
9425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9426pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
9427    pub s_type: StructureType,
9428    pub next: *const c_void,
9429    pub drm_format_modifier: u64,
9430    pub drm_format_modifier_plane_count: u32,
9431    pub plane_layouts: *const SubresourceLayout,
9432}
9433
9434impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
9435    #[inline]
9436    fn default() -> Self {
9437        Self {
9438            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
9439            next: ptr::null(),
9440            drm_format_modifier: u64::default(),
9441            drm_format_modifier_plane_count: u32::default(),
9442            plane_layouts: ptr::null(),
9443        }
9444    }
9445}
9446
9447unsafe impl Send for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9448unsafe impl Sync for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9449
9450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
9451#[repr(C)]
9452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9453pub struct ImageDrmFormatModifierListCreateInfoEXT {
9454    pub s_type: StructureType,
9455    pub next: *const c_void,
9456    pub drm_format_modifier_count: u32,
9457    pub drm_format_modifiers: *const u64,
9458}
9459
9460impl Default for ImageDrmFormatModifierListCreateInfoEXT {
9461    #[inline]
9462    fn default() -> Self {
9463        Self {
9464            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
9465            next: ptr::null(),
9466            drm_format_modifier_count: u32::default(),
9467            drm_format_modifiers: ptr::null(),
9468        }
9469    }
9470}
9471
9472unsafe impl Send for ImageDrmFormatModifierListCreateInfoEXT {}
9473unsafe impl Sync for ImageDrmFormatModifierListCreateInfoEXT {}
9474
9475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
9476#[repr(C)]
9477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9478pub struct ImageDrmFormatModifierPropertiesEXT {
9479    pub s_type: StructureType,
9480    pub next: *mut c_void,
9481    pub drm_format_modifier: u64,
9482}
9483
9484impl Default for ImageDrmFormatModifierPropertiesEXT {
9485    #[inline]
9486    fn default() -> Self {
9487        Self {
9488            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
9489            next: ptr::null_mut(),
9490            drm_format_modifier: u64::default(),
9491        }
9492    }
9493}
9494
9495unsafe impl Send for ImageDrmFormatModifierPropertiesEXT {}
9496unsafe impl Sync for ImageDrmFormatModifierPropertiesEXT {}
9497
9498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
9499#[repr(C)]
9500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9501pub struct ImageFormatConstraintsInfoFUCHSIA {
9502    pub s_type: StructureType,
9503    pub next: *const c_void,
9504    pub image_create_info: ImageCreateInfo,
9505    pub required_format_features: FormatFeatureFlags,
9506    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
9507    pub sysmem_pixel_format: u64,
9508    pub color_space_count: u32,
9509    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
9510}
9511
9512impl Default for ImageFormatConstraintsInfoFUCHSIA {
9513    #[inline]
9514    fn default() -> Self {
9515        Self {
9516            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
9517            next: ptr::null(),
9518            image_create_info: ImageCreateInfo::default(),
9519            required_format_features: FormatFeatureFlags::default(),
9520            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
9521            sysmem_pixel_format: u64::default(),
9522            color_space_count: u32::default(),
9523            color_spaces: ptr::null(),
9524        }
9525    }
9526}
9527
9528unsafe impl Send for ImageFormatConstraintsInfoFUCHSIA {}
9529unsafe impl Sync for ImageFormatConstraintsInfoFUCHSIA {}
9530
9531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
9532#[repr(C)]
9533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9534pub struct ImageFormatListCreateInfo {
9535    pub s_type: StructureType,
9536    pub next: *const c_void,
9537    pub view_format_count: u32,
9538    pub view_formats: *const Format,
9539}
9540
9541impl Default for ImageFormatListCreateInfo {
9542    #[inline]
9543    fn default() -> Self {
9544        Self {
9545            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
9546            next: ptr::null(),
9547            view_format_count: u32::default(),
9548            view_formats: ptr::null(),
9549        }
9550    }
9551}
9552
9553unsafe impl Send for ImageFormatListCreateInfo {}
9554unsafe impl Sync for ImageFormatListCreateInfo {}
9555
9556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
9557#[repr(C)]
9558#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9559pub struct ImageFormatProperties {
9560    pub max_extent: Extent3D,
9561    pub max_mip_levels: u32,
9562    pub max_array_layers: u32,
9563    pub sample_counts: SampleCountFlags,
9564    pub max_resource_size: DeviceSize,
9565}
9566
9567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
9568#[repr(C)]
9569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9570pub struct ImageFormatProperties2 {
9571    pub s_type: StructureType,
9572    pub next: *mut c_void,
9573    pub image_format_properties: ImageFormatProperties,
9574}
9575
9576impl Default for ImageFormatProperties2 {
9577    #[inline]
9578    fn default() -> Self {
9579        Self {
9580            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
9581            next: ptr::null_mut(),
9582            image_format_properties: ImageFormatProperties::default(),
9583        }
9584    }
9585}
9586
9587unsafe impl Send for ImageFormatProperties2 {}
9588unsafe impl Sync for ImageFormatProperties2 {}
9589
9590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
9591#[repr(C)]
9592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9593pub struct ImageMemoryBarrier {
9594    pub s_type: StructureType,
9595    pub next: *const c_void,
9596    pub src_access_mask: AccessFlags,
9597    pub dst_access_mask: AccessFlags,
9598    pub old_layout: ImageLayout,
9599    pub new_layout: ImageLayout,
9600    pub src_queue_family_index: u32,
9601    pub dst_queue_family_index: u32,
9602    pub image: Image,
9603    pub subresource_range: ImageSubresourceRange,
9604}
9605
9606impl Default for ImageMemoryBarrier {
9607    #[inline]
9608    fn default() -> Self {
9609        Self {
9610            s_type: StructureType::IMAGE_MEMORY_BARRIER,
9611            next: ptr::null(),
9612            src_access_mask: AccessFlags::default(),
9613            dst_access_mask: AccessFlags::default(),
9614            old_layout: ImageLayout::default(),
9615            new_layout: ImageLayout::default(),
9616            src_queue_family_index: u32::default(),
9617            dst_queue_family_index: u32::default(),
9618            image: Image::default(),
9619            subresource_range: ImageSubresourceRange::default(),
9620        }
9621    }
9622}
9623
9624unsafe impl Send for ImageMemoryBarrier {}
9625unsafe impl Sync for ImageMemoryBarrier {}
9626
9627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
9628#[repr(C)]
9629#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9630pub struct ImageMemoryBarrier2 {
9631    pub s_type: StructureType,
9632    pub next: *const c_void,
9633    pub src_stage_mask: PipelineStageFlags2,
9634    pub src_access_mask: AccessFlags2,
9635    pub dst_stage_mask: PipelineStageFlags2,
9636    pub dst_access_mask: AccessFlags2,
9637    pub old_layout: ImageLayout,
9638    pub new_layout: ImageLayout,
9639    pub src_queue_family_index: u32,
9640    pub dst_queue_family_index: u32,
9641    pub image: Image,
9642    pub subresource_range: ImageSubresourceRange,
9643}
9644
9645impl Default for ImageMemoryBarrier2 {
9646    #[inline]
9647    fn default() -> Self {
9648        Self {
9649            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
9650            next: ptr::null(),
9651            src_stage_mask: PipelineStageFlags2::default(),
9652            src_access_mask: AccessFlags2::default(),
9653            dst_stage_mask: PipelineStageFlags2::default(),
9654            dst_access_mask: AccessFlags2::default(),
9655            old_layout: ImageLayout::default(),
9656            new_layout: ImageLayout::default(),
9657            src_queue_family_index: u32::default(),
9658            dst_queue_family_index: u32::default(),
9659            image: Image::default(),
9660            subresource_range: ImageSubresourceRange::default(),
9661        }
9662    }
9663}
9664
9665unsafe impl Send for ImageMemoryBarrier2 {}
9666unsafe impl Sync for ImageMemoryBarrier2 {}
9667
9668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
9669#[repr(C)]
9670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9671pub struct ImageMemoryRequirementsInfo2 {
9672    pub s_type: StructureType,
9673    pub next: *const c_void,
9674    pub image: Image,
9675}
9676
9677impl Default for ImageMemoryRequirementsInfo2 {
9678    #[inline]
9679    fn default() -> Self {
9680        Self {
9681            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
9682            next: ptr::null(),
9683            image: Image::default(),
9684        }
9685    }
9686}
9687
9688unsafe impl Send for ImageMemoryRequirementsInfo2 {}
9689unsafe impl Sync for ImageMemoryRequirementsInfo2 {}
9690
9691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
9692#[repr(C)]
9693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9694pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
9695    pub s_type: StructureType,
9696    pub next: *const c_void,
9697    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
9698    pub image_pipe_handle: zx_handle_t,
9699}
9700
9701impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
9702    #[inline]
9703    fn default() -> Self {
9704        Self {
9705            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
9706            next: ptr::null(),
9707            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
9708            image_pipe_handle: zx_handle_t::default(),
9709        }
9710    }
9711}
9712
9713unsafe impl Send for ImagePipeSurfaceCreateInfoFUCHSIA {}
9714unsafe impl Sync for ImagePipeSurfaceCreateInfoFUCHSIA {}
9715
9716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
9717#[repr(C)]
9718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9719pub struct ImagePlaneMemoryRequirementsInfo {
9720    pub s_type: StructureType,
9721    pub next: *const c_void,
9722    pub plane_aspect: ImageAspectFlags,
9723}
9724
9725impl Default for ImagePlaneMemoryRequirementsInfo {
9726    #[inline]
9727    fn default() -> Self {
9728        Self {
9729            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
9730            next: ptr::null(),
9731            plane_aspect: ImageAspectFlags::default(),
9732        }
9733    }
9734}
9735
9736unsafe impl Send for ImagePlaneMemoryRequirementsInfo {}
9737unsafe impl Sync for ImagePlaneMemoryRequirementsInfo {}
9738
9739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
9740#[repr(C)]
9741#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9742pub struct ImageResolve {
9743    pub src_subresource: ImageSubresourceLayers,
9744    pub src_offset: Offset3D,
9745    pub dst_subresource: ImageSubresourceLayers,
9746    pub dst_offset: Offset3D,
9747    pub extent: Extent3D,
9748}
9749
9750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
9751#[repr(C)]
9752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9753pub struct ImageResolve2 {
9754    pub s_type: StructureType,
9755    pub next: *const c_void,
9756    pub src_subresource: ImageSubresourceLayers,
9757    pub src_offset: Offset3D,
9758    pub dst_subresource: ImageSubresourceLayers,
9759    pub dst_offset: Offset3D,
9760    pub extent: Extent3D,
9761}
9762
9763impl Default for ImageResolve2 {
9764    #[inline]
9765    fn default() -> Self {
9766        Self {
9767            s_type: StructureType::IMAGE_RESOLVE_2,
9768            next: ptr::null(),
9769            src_subresource: ImageSubresourceLayers::default(),
9770            src_offset: Offset3D::default(),
9771            dst_subresource: ImageSubresourceLayers::default(),
9772            dst_offset: Offset3D::default(),
9773            extent: Extent3D::default(),
9774        }
9775    }
9776}
9777
9778unsafe impl Send for ImageResolve2 {}
9779unsafe impl Sync for ImageResolve2 {}
9780
9781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
9782#[repr(C)]
9783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9784pub struct ImageSparseMemoryRequirementsInfo2 {
9785    pub s_type: StructureType,
9786    pub next: *const c_void,
9787    pub image: Image,
9788}
9789
9790impl Default for ImageSparseMemoryRequirementsInfo2 {
9791    #[inline]
9792    fn default() -> Self {
9793        Self {
9794            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
9795            next: ptr::null(),
9796            image: Image::default(),
9797        }
9798    }
9799}
9800
9801unsafe impl Send for ImageSparseMemoryRequirementsInfo2 {}
9802unsafe impl Sync for ImageSparseMemoryRequirementsInfo2 {}
9803
9804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
9805#[repr(C)]
9806#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9807pub struct ImageStencilUsageCreateInfo {
9808    pub s_type: StructureType,
9809    pub next: *const c_void,
9810    pub stencil_usage: ImageUsageFlags,
9811}
9812
9813impl Default for ImageStencilUsageCreateInfo {
9814    #[inline]
9815    fn default() -> Self {
9816        Self {
9817            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
9818            next: ptr::null(),
9819            stencil_usage: ImageUsageFlags::default(),
9820        }
9821    }
9822}
9823
9824unsafe impl Send for ImageStencilUsageCreateInfo {}
9825unsafe impl Sync for ImageStencilUsageCreateInfo {}
9826
9827/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
9828#[repr(C)]
9829#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9830pub struct ImageSubresource {
9831    pub aspect_mask: ImageAspectFlags,
9832    pub mip_level: u32,
9833    pub array_layer: u32,
9834}
9835
9836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
9837#[repr(C)]
9838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9839pub struct ImageSubresource2 {
9840    pub s_type: StructureType,
9841    pub next: *mut c_void,
9842    pub image_subresource: ImageSubresource,
9843}
9844
9845impl Default for ImageSubresource2 {
9846    #[inline]
9847    fn default() -> Self {
9848        Self {
9849            s_type: StructureType::IMAGE_SUBRESOURCE_2,
9850            next: ptr::null_mut(),
9851            image_subresource: ImageSubresource::default(),
9852        }
9853    }
9854}
9855
9856unsafe impl Send for ImageSubresource2 {}
9857unsafe impl Sync for ImageSubresource2 {}
9858
9859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
9860#[repr(C)]
9861#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9862pub struct ImageSubresourceLayers {
9863    pub aspect_mask: ImageAspectFlags,
9864    pub mip_level: u32,
9865    pub base_array_layer: u32,
9866    pub layer_count: u32,
9867}
9868
9869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
9870#[repr(C)]
9871#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9872pub struct ImageSubresourceRange {
9873    pub aspect_mask: ImageAspectFlags,
9874    pub base_mip_level: u32,
9875    pub level_count: u32,
9876    pub base_array_layer: u32,
9877    pub layer_count: u32,
9878}
9879
9880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
9881#[repr(C)]
9882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9883pub struct ImageSwapchainCreateInfoKHR {
9884    pub s_type: StructureType,
9885    pub next: *const c_void,
9886    pub swapchain: SwapchainKHR,
9887}
9888
9889impl Default for ImageSwapchainCreateInfoKHR {
9890    #[inline]
9891    fn default() -> Self {
9892        Self {
9893            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
9894            next: ptr::null(),
9895            swapchain: SwapchainKHR::default(),
9896        }
9897    }
9898}
9899
9900unsafe impl Send for ImageSwapchainCreateInfoKHR {}
9901unsafe impl Sync for ImageSwapchainCreateInfoKHR {}
9902
9903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
9904#[repr(C)]
9905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9906pub struct ImageToMemoryCopy {
9907    pub s_type: StructureType,
9908    pub next: *const c_void,
9909    pub host_pointer: *mut c_void,
9910    pub memory_row_length: u32,
9911    pub memory_image_height: u32,
9912    pub image_subresource: ImageSubresourceLayers,
9913    pub image_offset: Offset3D,
9914    pub image_extent: Extent3D,
9915}
9916
9917impl Default for ImageToMemoryCopy {
9918    #[inline]
9919    fn default() -> Self {
9920        Self {
9921            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
9922            next: ptr::null(),
9923            host_pointer: ptr::null_mut(),
9924            memory_row_length: u32::default(),
9925            memory_image_height: u32::default(),
9926            image_subresource: ImageSubresourceLayers::default(),
9927            image_offset: Offset3D::default(),
9928            image_extent: Extent3D::default(),
9929        }
9930    }
9931}
9932
9933unsafe impl Send for ImageToMemoryCopy {}
9934unsafe impl Sync for ImageToMemoryCopy {}
9935
9936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
9937#[repr(C)]
9938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9939pub struct ImageViewASTCDecodeModeEXT {
9940    pub s_type: StructureType,
9941    pub next: *const c_void,
9942    pub decode_mode: Format,
9943}
9944
9945impl Default for ImageViewASTCDecodeModeEXT {
9946    #[inline]
9947    fn default() -> Self {
9948        Self {
9949            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
9950            next: ptr::null(),
9951            decode_mode: Format::default(),
9952        }
9953    }
9954}
9955
9956unsafe impl Send for ImageViewASTCDecodeModeEXT {}
9957unsafe impl Sync for ImageViewASTCDecodeModeEXT {}
9958
9959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
9960#[repr(C)]
9961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9962pub struct ImageViewAddressPropertiesNVX {
9963    pub s_type: StructureType,
9964    pub next: *mut c_void,
9965    pub device_address: DeviceAddress,
9966    pub size: DeviceSize,
9967}
9968
9969impl Default for ImageViewAddressPropertiesNVX {
9970    #[inline]
9971    fn default() -> Self {
9972        Self {
9973            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
9974            next: ptr::null_mut(),
9975            device_address: DeviceAddress::default(),
9976            size: DeviceSize::default(),
9977        }
9978    }
9979}
9980
9981unsafe impl Send for ImageViewAddressPropertiesNVX {}
9982unsafe impl Sync for ImageViewAddressPropertiesNVX {}
9983
9984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
9985#[repr(C)]
9986#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9987pub struct ImageViewCaptureDescriptorDataInfoEXT {
9988    pub s_type: StructureType,
9989    pub next: *const c_void,
9990    pub image_view: ImageView,
9991}
9992
9993impl Default for ImageViewCaptureDescriptorDataInfoEXT {
9994    #[inline]
9995    fn default() -> Self {
9996        Self {
9997            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9998            next: ptr::null(),
9999            image_view: ImageView::default(),
10000        }
10001    }
10002}
10003
10004unsafe impl Send for ImageViewCaptureDescriptorDataInfoEXT {}
10005unsafe impl Sync for ImageViewCaptureDescriptorDataInfoEXT {}
10006
10007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
10008#[repr(C)]
10009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10010pub struct ImageViewCreateInfo {
10011    pub s_type: StructureType,
10012    pub next: *const c_void,
10013    pub flags: ImageViewCreateFlags,
10014    pub image: Image,
10015    pub view_type: ImageViewType,
10016    pub format: Format,
10017    pub components: ComponentMapping,
10018    pub subresource_range: ImageSubresourceRange,
10019}
10020
10021impl Default for ImageViewCreateInfo {
10022    #[inline]
10023    fn default() -> Self {
10024        Self {
10025            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
10026            next: ptr::null(),
10027            flags: ImageViewCreateFlags::default(),
10028            image: Image::default(),
10029            view_type: ImageViewType::default(),
10030            format: Format::default(),
10031            components: ComponentMapping::default(),
10032            subresource_range: ImageSubresourceRange::default(),
10033        }
10034    }
10035}
10036
10037unsafe impl Send for ImageViewCreateInfo {}
10038unsafe impl Sync for ImageViewCreateInfo {}
10039
10040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
10041#[repr(C)]
10042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10043pub struct ImageViewHandleInfoNVX {
10044    pub s_type: StructureType,
10045    pub next: *const c_void,
10046    pub image_view: ImageView,
10047    pub descriptor_type: DescriptorType,
10048    pub sampler: Sampler,
10049}
10050
10051impl Default for ImageViewHandleInfoNVX {
10052    #[inline]
10053    fn default() -> Self {
10054        Self {
10055            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
10056            next: ptr::null(),
10057            image_view: ImageView::default(),
10058            descriptor_type: DescriptorType::default(),
10059            sampler: Sampler::default(),
10060        }
10061    }
10062}
10063
10064unsafe impl Send for ImageViewHandleInfoNVX {}
10065unsafe impl Sync for ImageViewHandleInfoNVX {}
10066
10067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
10068#[repr(C)]
10069#[derive(Copy, Clone, Debug, PartialEq)]
10070pub struct ImageViewMinLodCreateInfoEXT {
10071    pub s_type: StructureType,
10072    pub next: *const c_void,
10073    pub min_lod: f32,
10074}
10075
10076impl Default for ImageViewMinLodCreateInfoEXT {
10077    #[inline]
10078    fn default() -> Self {
10079        Self {
10080            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
10081            next: ptr::null(),
10082            min_lod: f32::default(),
10083        }
10084    }
10085}
10086
10087unsafe impl Send for ImageViewMinLodCreateInfoEXT {}
10088unsafe impl Sync for ImageViewMinLodCreateInfoEXT {}
10089
10090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
10091#[repr(C)]
10092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10093pub struct ImageViewSampleWeightCreateInfoQCOM {
10094    pub s_type: StructureType,
10095    pub next: *const c_void,
10096    pub filter_center: Offset2D,
10097    pub filter_size: Extent2D,
10098    pub num_phases: u32,
10099}
10100
10101impl Default for ImageViewSampleWeightCreateInfoQCOM {
10102    #[inline]
10103    fn default() -> Self {
10104        Self {
10105            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
10106            next: ptr::null(),
10107            filter_center: Offset2D::default(),
10108            filter_size: Extent2D::default(),
10109            num_phases: u32::default(),
10110        }
10111    }
10112}
10113
10114unsafe impl Send for ImageViewSampleWeightCreateInfoQCOM {}
10115unsafe impl Sync for ImageViewSampleWeightCreateInfoQCOM {}
10116
10117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
10118#[repr(C)]
10119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10120pub struct ImageViewSlicedCreateInfoEXT {
10121    pub s_type: StructureType,
10122    pub next: *const c_void,
10123    pub slice_offset: u32,
10124    pub slice_count: u32,
10125}
10126
10127impl Default for ImageViewSlicedCreateInfoEXT {
10128    #[inline]
10129    fn default() -> Self {
10130        Self {
10131            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
10132            next: ptr::null(),
10133            slice_offset: u32::default(),
10134            slice_count: u32::default(),
10135        }
10136    }
10137}
10138
10139unsafe impl Send for ImageViewSlicedCreateInfoEXT {}
10140unsafe impl Sync for ImageViewSlicedCreateInfoEXT {}
10141
10142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
10143#[repr(C)]
10144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10145pub struct ImageViewUsageCreateInfo {
10146    pub s_type: StructureType,
10147    pub next: *const c_void,
10148    pub usage: ImageUsageFlags,
10149}
10150
10151impl Default for ImageViewUsageCreateInfo {
10152    #[inline]
10153    fn default() -> Self {
10154        Self {
10155            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
10156            next: ptr::null(),
10157            usage: ImageUsageFlags::default(),
10158        }
10159    }
10160}
10161
10162unsafe impl Send for ImageViewUsageCreateInfo {}
10163unsafe impl Sync for ImageViewUsageCreateInfo {}
10164
10165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
10166#[repr(C)]
10167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10168pub struct ImportAndroidHardwareBufferInfoANDROID {
10169    pub s_type: StructureType,
10170    pub next: *const c_void,
10171    pub buffer: *mut AHardwareBuffer,
10172}
10173
10174impl Default for ImportAndroidHardwareBufferInfoANDROID {
10175    #[inline]
10176    fn default() -> Self {
10177        Self {
10178            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
10179            next: ptr::null(),
10180            buffer: ptr::null_mut(),
10181        }
10182    }
10183}
10184
10185unsafe impl Send for ImportAndroidHardwareBufferInfoANDROID {}
10186unsafe impl Sync for ImportAndroidHardwareBufferInfoANDROID {}
10187
10188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
10189#[repr(C)]
10190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10191pub struct ImportFenceFdInfoKHR {
10192    pub s_type: StructureType,
10193    pub next: *const c_void,
10194    pub fence: Fence,
10195    pub flags: FenceImportFlags,
10196    pub handle_type: ExternalFenceHandleTypeFlags,
10197    pub fd: c_int,
10198}
10199
10200impl Default for ImportFenceFdInfoKHR {
10201    #[inline]
10202    fn default() -> Self {
10203        Self {
10204            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
10205            next: ptr::null(),
10206            fence: Fence::default(),
10207            flags: FenceImportFlags::default(),
10208            handle_type: ExternalFenceHandleTypeFlags::default(),
10209            fd: c_int::default(),
10210        }
10211    }
10212}
10213
10214unsafe impl Send for ImportFenceFdInfoKHR {}
10215unsafe impl Sync for ImportFenceFdInfoKHR {}
10216
10217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
10218#[repr(C)]
10219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10220pub struct ImportFenceSciSyncInfoNV {
10221    pub s_type: StructureType,
10222    pub next: *const c_void,
10223    pub fence: Fence,
10224    pub handle_type: ExternalFenceHandleTypeFlags,
10225    pub handle: *mut c_void,
10226}
10227
10228impl Default for ImportFenceSciSyncInfoNV {
10229    #[inline]
10230    fn default() -> Self {
10231        Self {
10232            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
10233            next: ptr::null(),
10234            fence: Fence::default(),
10235            handle_type: ExternalFenceHandleTypeFlags::default(),
10236            handle: ptr::null_mut(),
10237        }
10238    }
10239}
10240
10241unsafe impl Send for ImportFenceSciSyncInfoNV {}
10242unsafe impl Sync for ImportFenceSciSyncInfoNV {}
10243
10244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
10245#[repr(C)]
10246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10247pub struct ImportFenceWin32HandleInfoKHR {
10248    pub s_type: StructureType,
10249    pub next: *const c_void,
10250    pub fence: Fence,
10251    pub flags: FenceImportFlags,
10252    pub handle_type: ExternalFenceHandleTypeFlags,
10253    pub handle: HANDLE,
10254    pub name: LPCWSTR,
10255}
10256
10257impl Default for ImportFenceWin32HandleInfoKHR {
10258    #[inline]
10259    fn default() -> Self {
10260        Self {
10261            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
10262            next: ptr::null(),
10263            fence: Fence::default(),
10264            flags: FenceImportFlags::default(),
10265            handle_type: ExternalFenceHandleTypeFlags::default(),
10266            handle: ptr::null_mut(),
10267            name: ptr::null_mut(),
10268        }
10269    }
10270}
10271
10272unsafe impl Send for ImportFenceWin32HandleInfoKHR {}
10273unsafe impl Sync for ImportFenceWin32HandleInfoKHR {}
10274
10275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
10276#[repr(C)]
10277#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10278pub struct ImportMemoryBufferCollectionFUCHSIA {
10279    pub s_type: StructureType,
10280    pub next: *const c_void,
10281    pub collection: BufferCollectionFUCHSIA,
10282    pub index: u32,
10283}
10284
10285impl Default for ImportMemoryBufferCollectionFUCHSIA {
10286    #[inline]
10287    fn default() -> Self {
10288        Self {
10289            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
10290            next: ptr::null(),
10291            collection: BufferCollectionFUCHSIA::default(),
10292            index: u32::default(),
10293        }
10294    }
10295}
10296
10297unsafe impl Send for ImportMemoryBufferCollectionFUCHSIA {}
10298unsafe impl Sync for ImportMemoryBufferCollectionFUCHSIA {}
10299
10300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
10301#[repr(C)]
10302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10303pub struct ImportMemoryFdInfoKHR {
10304    pub s_type: StructureType,
10305    pub next: *const c_void,
10306    pub handle_type: ExternalMemoryHandleTypeFlags,
10307    pub fd: c_int,
10308}
10309
10310impl Default for ImportMemoryFdInfoKHR {
10311    #[inline]
10312    fn default() -> Self {
10313        Self {
10314            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
10315            next: ptr::null(),
10316            handle_type: ExternalMemoryHandleTypeFlags::default(),
10317            fd: c_int::default(),
10318        }
10319    }
10320}
10321
10322unsafe impl Send for ImportMemoryFdInfoKHR {}
10323unsafe impl Sync for ImportMemoryFdInfoKHR {}
10324
10325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
10326#[repr(C)]
10327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10328pub struct ImportMemoryHostPointerInfoEXT {
10329    pub s_type: StructureType,
10330    pub next: *const c_void,
10331    pub handle_type: ExternalMemoryHandleTypeFlags,
10332    pub host_pointer: *mut c_void,
10333}
10334
10335impl Default for ImportMemoryHostPointerInfoEXT {
10336    #[inline]
10337    fn default() -> Self {
10338        Self {
10339            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
10340            next: ptr::null(),
10341            handle_type: ExternalMemoryHandleTypeFlags::default(),
10342            host_pointer: ptr::null_mut(),
10343        }
10344    }
10345}
10346
10347unsafe impl Send for ImportMemoryHostPointerInfoEXT {}
10348unsafe impl Sync for ImportMemoryHostPointerInfoEXT {}
10349
10350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
10351#[repr(C)]
10352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10353pub struct ImportMemoryMetalHandleInfoEXT {
10354    pub s_type: StructureType,
10355    pub next: *const c_void,
10356    pub handle_type: ExternalMemoryHandleTypeFlags,
10357    pub handle: *mut c_void,
10358}
10359
10360impl Default for ImportMemoryMetalHandleInfoEXT {
10361    #[inline]
10362    fn default() -> Self {
10363        Self {
10364            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
10365            next: ptr::null(),
10366            handle_type: ExternalMemoryHandleTypeFlags::default(),
10367            handle: ptr::null_mut(),
10368        }
10369    }
10370}
10371
10372unsafe impl Send for ImportMemoryMetalHandleInfoEXT {}
10373unsafe impl Sync for ImportMemoryMetalHandleInfoEXT {}
10374
10375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
10376#[repr(C)]
10377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10378pub struct ImportMemorySciBufInfoNV {
10379    pub s_type: StructureType,
10380    pub next: *const c_void,
10381    pub handle_type: ExternalMemoryHandleTypeFlags,
10382    pub handle: NvSciBufObj,
10383}
10384
10385impl Default for ImportMemorySciBufInfoNV {
10386    #[inline]
10387    fn default() -> Self {
10388        Self {
10389            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
10390            next: ptr::null(),
10391            handle_type: ExternalMemoryHandleTypeFlags::default(),
10392            handle: ptr::null_mut(),
10393        }
10394    }
10395}
10396
10397unsafe impl Send for ImportMemorySciBufInfoNV {}
10398unsafe impl Sync for ImportMemorySciBufInfoNV {}
10399
10400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
10401#[repr(C)]
10402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10403pub struct ImportMemoryWin32HandleInfoKHR {
10404    pub s_type: StructureType,
10405    pub next: *const c_void,
10406    pub handle_type: ExternalMemoryHandleTypeFlags,
10407    pub handle: HANDLE,
10408    pub name: LPCWSTR,
10409}
10410
10411impl Default for ImportMemoryWin32HandleInfoKHR {
10412    #[inline]
10413    fn default() -> Self {
10414        Self {
10415            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
10416            next: ptr::null(),
10417            handle_type: ExternalMemoryHandleTypeFlags::default(),
10418            handle: ptr::null_mut(),
10419            name: ptr::null_mut(),
10420        }
10421    }
10422}
10423
10424unsafe impl Send for ImportMemoryWin32HandleInfoKHR {}
10425unsafe impl Sync for ImportMemoryWin32HandleInfoKHR {}
10426
10427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
10428#[repr(C)]
10429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10430pub struct ImportMemoryWin32HandleInfoNV {
10431    pub s_type: StructureType,
10432    pub next: *const c_void,
10433    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
10434    pub handle: HANDLE,
10435}
10436
10437impl Default for ImportMemoryWin32HandleInfoNV {
10438    #[inline]
10439    fn default() -> Self {
10440        Self {
10441            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
10442            next: ptr::null(),
10443            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
10444            handle: ptr::null_mut(),
10445        }
10446    }
10447}
10448
10449unsafe impl Send for ImportMemoryWin32HandleInfoNV {}
10450unsafe impl Sync for ImportMemoryWin32HandleInfoNV {}
10451
10452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
10453#[repr(C)]
10454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10455pub struct ImportMemoryZirconHandleInfoFUCHSIA {
10456    pub s_type: StructureType,
10457    pub next: *const c_void,
10458    pub handle_type: ExternalMemoryHandleTypeFlags,
10459    pub handle: zx_handle_t,
10460}
10461
10462impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
10463    #[inline]
10464    fn default() -> Self {
10465        Self {
10466            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
10467            next: ptr::null(),
10468            handle_type: ExternalMemoryHandleTypeFlags::default(),
10469            handle: zx_handle_t::default(),
10470        }
10471    }
10472}
10473
10474unsafe impl Send for ImportMemoryZirconHandleInfoFUCHSIA {}
10475unsafe impl Sync for ImportMemoryZirconHandleInfoFUCHSIA {}
10476
10477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
10478#[repr(C)]
10479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10480pub struct ImportMetalBufferInfoEXT {
10481    pub s_type: StructureType,
10482    pub next: *const c_void,
10483    pub mtl_buffer: MTLBuffer_id,
10484}
10485
10486impl Default for ImportMetalBufferInfoEXT {
10487    #[inline]
10488    fn default() -> Self {
10489        Self {
10490            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
10491            next: ptr::null(),
10492            mtl_buffer: ptr::null_mut(),
10493        }
10494    }
10495}
10496
10497unsafe impl Send for ImportMetalBufferInfoEXT {}
10498unsafe impl Sync for ImportMetalBufferInfoEXT {}
10499
10500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
10501#[repr(C)]
10502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10503pub struct ImportMetalIOSurfaceInfoEXT {
10504    pub s_type: StructureType,
10505    pub next: *const c_void,
10506    pub io_surface: IOSurfaceRef,
10507}
10508
10509impl Default for ImportMetalIOSurfaceInfoEXT {
10510    #[inline]
10511    fn default() -> Self {
10512        Self {
10513            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
10514            next: ptr::null(),
10515            io_surface: ptr::null_mut(),
10516        }
10517    }
10518}
10519
10520unsafe impl Send for ImportMetalIOSurfaceInfoEXT {}
10521unsafe impl Sync for ImportMetalIOSurfaceInfoEXT {}
10522
10523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
10524#[repr(C)]
10525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10526pub struct ImportMetalSharedEventInfoEXT {
10527    pub s_type: StructureType,
10528    pub next: *const c_void,
10529    pub mtl_shared_event: MTLSharedEvent_id,
10530}
10531
10532impl Default for ImportMetalSharedEventInfoEXT {
10533    #[inline]
10534    fn default() -> Self {
10535        Self {
10536            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
10537            next: ptr::null(),
10538            mtl_shared_event: ptr::null_mut(),
10539        }
10540    }
10541}
10542
10543unsafe impl Send for ImportMetalSharedEventInfoEXT {}
10544unsafe impl Sync for ImportMetalSharedEventInfoEXT {}
10545
10546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
10547#[repr(C)]
10548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10549pub struct ImportMetalTextureInfoEXT {
10550    pub s_type: StructureType,
10551    pub next: *const c_void,
10552    pub plane: ImageAspectFlags,
10553    pub mtl_texture: MTLTexture_id,
10554}
10555
10556impl Default for ImportMetalTextureInfoEXT {
10557    #[inline]
10558    fn default() -> Self {
10559        Self {
10560            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
10561            next: ptr::null(),
10562            plane: ImageAspectFlags::default(),
10563            mtl_texture: ptr::null_mut(),
10564        }
10565    }
10566}
10567
10568unsafe impl Send for ImportMetalTextureInfoEXT {}
10569unsafe impl Sync for ImportMetalTextureInfoEXT {}
10570
10571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportNativeBufferInfoOHOS.html>
10572#[repr(C)]
10573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10574pub struct ImportNativeBufferInfoOHOS {
10575    pub s_type: StructureType,
10576    pub next: *const c_void,
10577    pub buffer: *mut OH_NativeBuffer,
10578}
10579
10580impl Default for ImportNativeBufferInfoOHOS {
10581    #[inline]
10582    fn default() -> Self {
10583        Self {
10584            s_type: StructureType::IMPORT_NATIVE_BUFFER_INFO_OHOS,
10585            next: ptr::null(),
10586            buffer: ptr::null_mut(),
10587        }
10588    }
10589}
10590
10591unsafe impl Send for ImportNativeBufferInfoOHOS {}
10592unsafe impl Sync for ImportNativeBufferInfoOHOS {}
10593
10594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
10595#[repr(C)]
10596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10597pub struct ImportScreenBufferInfoQNX {
10598    pub s_type: StructureType,
10599    pub next: *const c_void,
10600    pub buffer: *mut _screen_buffer,
10601}
10602
10603impl Default for ImportScreenBufferInfoQNX {
10604    #[inline]
10605    fn default() -> Self {
10606        Self {
10607            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
10608            next: ptr::null(),
10609            buffer: ptr::null_mut(),
10610        }
10611    }
10612}
10613
10614unsafe impl Send for ImportScreenBufferInfoQNX {}
10615unsafe impl Sync for ImportScreenBufferInfoQNX {}
10616
10617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
10618#[repr(C)]
10619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10620pub struct ImportSemaphoreFdInfoKHR {
10621    pub s_type: StructureType,
10622    pub next: *const c_void,
10623    pub semaphore: Semaphore,
10624    pub flags: SemaphoreImportFlags,
10625    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10626    pub fd: c_int,
10627}
10628
10629impl Default for ImportSemaphoreFdInfoKHR {
10630    #[inline]
10631    fn default() -> Self {
10632        Self {
10633            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
10634            next: ptr::null(),
10635            semaphore: Semaphore::default(),
10636            flags: SemaphoreImportFlags::default(),
10637            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10638            fd: c_int::default(),
10639        }
10640    }
10641}
10642
10643unsafe impl Send for ImportSemaphoreFdInfoKHR {}
10644unsafe impl Sync for ImportSemaphoreFdInfoKHR {}
10645
10646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
10647#[repr(C)]
10648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10649pub struct ImportSemaphoreSciSyncInfoNV {
10650    pub s_type: StructureType,
10651    pub next: *const c_void,
10652    pub semaphore: Semaphore,
10653    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10654    pub handle: *mut c_void,
10655}
10656
10657impl Default for ImportSemaphoreSciSyncInfoNV {
10658    #[inline]
10659    fn default() -> Self {
10660        Self {
10661            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
10662            next: ptr::null(),
10663            semaphore: Semaphore::default(),
10664            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10665            handle: ptr::null_mut(),
10666        }
10667    }
10668}
10669
10670unsafe impl Send for ImportSemaphoreSciSyncInfoNV {}
10671unsafe impl Sync for ImportSemaphoreSciSyncInfoNV {}
10672
10673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
10674#[repr(C)]
10675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10676pub struct ImportSemaphoreWin32HandleInfoKHR {
10677    pub s_type: StructureType,
10678    pub next: *const c_void,
10679    pub semaphore: Semaphore,
10680    pub flags: SemaphoreImportFlags,
10681    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10682    pub handle: HANDLE,
10683    pub name: LPCWSTR,
10684}
10685
10686impl Default for ImportSemaphoreWin32HandleInfoKHR {
10687    #[inline]
10688    fn default() -> Self {
10689        Self {
10690            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
10691            next: ptr::null(),
10692            semaphore: Semaphore::default(),
10693            flags: SemaphoreImportFlags::default(),
10694            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10695            handle: ptr::null_mut(),
10696            name: ptr::null_mut(),
10697        }
10698    }
10699}
10700
10701unsafe impl Send for ImportSemaphoreWin32HandleInfoKHR {}
10702unsafe impl Sync for ImportSemaphoreWin32HandleInfoKHR {}
10703
10704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
10705#[repr(C)]
10706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10707pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
10708    pub s_type: StructureType,
10709    pub next: *const c_void,
10710    pub semaphore: Semaphore,
10711    pub flags: SemaphoreImportFlags,
10712    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10713    pub zircon_handle: zx_handle_t,
10714}
10715
10716impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
10717    #[inline]
10718    fn default() -> Self {
10719        Self {
10720            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
10721            next: ptr::null(),
10722            semaphore: Semaphore::default(),
10723            flags: SemaphoreImportFlags::default(),
10724            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10725            zircon_handle: zx_handle_t::default(),
10726        }
10727    }
10728}
10729
10730unsafe impl Send for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10731unsafe impl Sync for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10732
10733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
10734#[repr(C)]
10735#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10736pub struct IndirectCommandsExecutionSetTokenEXT {
10737    pub type_: IndirectExecutionSetInfoTypeEXT,
10738    pub shader_stages: ShaderStageFlags,
10739}
10740
10741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
10742#[repr(C)]
10743#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10744pub struct IndirectCommandsIndexBufferTokenEXT {
10745    pub mode: IndirectCommandsInputModeFlagsEXT,
10746}
10747
10748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
10749#[repr(C)]
10750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10751pub struct IndirectCommandsLayoutCreateInfoEXT {
10752    pub s_type: StructureType,
10753    pub next: *const c_void,
10754    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
10755    pub shader_stages: ShaderStageFlags,
10756    pub indirect_stride: u32,
10757    pub pipeline_layout: PipelineLayout,
10758    pub token_count: u32,
10759    pub tokens: *const IndirectCommandsLayoutTokenEXT,
10760}
10761
10762impl Default for IndirectCommandsLayoutCreateInfoEXT {
10763    #[inline]
10764    fn default() -> Self {
10765        Self {
10766            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
10767            next: ptr::null(),
10768            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
10769            shader_stages: ShaderStageFlags::default(),
10770            indirect_stride: u32::default(),
10771            pipeline_layout: PipelineLayout::default(),
10772            token_count: u32::default(),
10773            tokens: ptr::null(),
10774        }
10775    }
10776}
10777
10778unsafe impl Send for IndirectCommandsLayoutCreateInfoEXT {}
10779unsafe impl Sync for IndirectCommandsLayoutCreateInfoEXT {}
10780
10781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
10782#[repr(C)]
10783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10784pub struct IndirectCommandsLayoutCreateInfoNV {
10785    pub s_type: StructureType,
10786    pub next: *const c_void,
10787    pub flags: IndirectCommandsLayoutUsageFlagsNV,
10788    pub pipeline_bind_point: PipelineBindPoint,
10789    pub token_count: u32,
10790    pub tokens: *const IndirectCommandsLayoutTokenNV,
10791    pub stream_count: u32,
10792    pub stream_strides: *const u32,
10793}
10794
10795impl Default for IndirectCommandsLayoutCreateInfoNV {
10796    #[inline]
10797    fn default() -> Self {
10798        Self {
10799            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
10800            next: ptr::null(),
10801            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
10802            pipeline_bind_point: PipelineBindPoint::default(),
10803            token_count: u32::default(),
10804            tokens: ptr::null(),
10805            stream_count: u32::default(),
10806            stream_strides: ptr::null(),
10807        }
10808    }
10809}
10810
10811unsafe impl Send for IndirectCommandsLayoutCreateInfoNV {}
10812unsafe impl Sync for IndirectCommandsLayoutCreateInfoNV {}
10813
10814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
10815#[repr(C)]
10816#[derive(Copy, Clone, Debug)]
10817pub struct IndirectCommandsLayoutTokenEXT {
10818    pub s_type: StructureType,
10819    pub next: *const c_void,
10820    pub type_: IndirectCommandsTokenTypeEXT,
10821    pub data: IndirectCommandsTokenDataEXT,
10822    pub offset: u32,
10823}
10824
10825impl Default for IndirectCommandsLayoutTokenEXT {
10826    #[inline]
10827    fn default() -> Self {
10828        Self {
10829            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
10830            next: ptr::null(),
10831            type_: IndirectCommandsTokenTypeEXT::default(),
10832            data: IndirectCommandsTokenDataEXT::default(),
10833            offset: u32::default(),
10834        }
10835    }
10836}
10837
10838unsafe impl Send for IndirectCommandsLayoutTokenEXT {}
10839unsafe impl Sync for IndirectCommandsLayoutTokenEXT {}
10840
10841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
10842#[repr(C)]
10843#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10844pub struct IndirectCommandsLayoutTokenNV {
10845    pub s_type: StructureType,
10846    pub next: *const c_void,
10847    pub token_type: IndirectCommandsTokenTypeNV,
10848    pub stream: u32,
10849    pub offset: u32,
10850    pub vertex_binding_unit: u32,
10851    pub vertex_dynamic_stride: Bool32,
10852    pub pushconstant_pipeline_layout: PipelineLayout,
10853    pub pushconstant_shader_stage_flags: ShaderStageFlags,
10854    pub pushconstant_offset: u32,
10855    pub pushconstant_size: u32,
10856    pub indirect_state_flags: IndirectStateFlagsNV,
10857    pub index_type_count: u32,
10858    pub index_types: *const IndexType,
10859    pub index_type_values: *const u32,
10860}
10861
10862impl Default for IndirectCommandsLayoutTokenNV {
10863    #[inline]
10864    fn default() -> Self {
10865        Self {
10866            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
10867            next: ptr::null(),
10868            token_type: IndirectCommandsTokenTypeNV::default(),
10869            stream: u32::default(),
10870            offset: u32::default(),
10871            vertex_binding_unit: u32::default(),
10872            vertex_dynamic_stride: Bool32::default(),
10873            pushconstant_pipeline_layout: PipelineLayout::default(),
10874            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
10875            pushconstant_offset: u32::default(),
10876            pushconstant_size: u32::default(),
10877            indirect_state_flags: IndirectStateFlagsNV::default(),
10878            index_type_count: u32::default(),
10879            index_types: ptr::null(),
10880            index_type_values: ptr::null(),
10881        }
10882    }
10883}
10884
10885unsafe impl Send for IndirectCommandsLayoutTokenNV {}
10886unsafe impl Sync for IndirectCommandsLayoutTokenNV {}
10887
10888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
10889#[repr(C)]
10890#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10891pub struct IndirectCommandsPushConstantTokenEXT {
10892    pub update_range: PushConstantRange,
10893}
10894
10895/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
10896#[repr(C)]
10897#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10898pub struct IndirectCommandsStreamNV {
10899    pub buffer: Buffer,
10900    pub offset: DeviceSize,
10901}
10902
10903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
10904#[repr(C)]
10905#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10906pub struct IndirectCommandsVertexBufferTokenEXT {
10907    pub vertex_binding_unit: u32,
10908}
10909
10910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
10911#[repr(C)]
10912#[derive(Copy, Clone, Debug)]
10913pub struct IndirectExecutionSetCreateInfoEXT {
10914    pub s_type: StructureType,
10915    pub next: *const c_void,
10916    pub type_: IndirectExecutionSetInfoTypeEXT,
10917    pub info: IndirectExecutionSetInfoEXT,
10918}
10919
10920impl Default for IndirectExecutionSetCreateInfoEXT {
10921    #[inline]
10922    fn default() -> Self {
10923        Self {
10924            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
10925            next: ptr::null(),
10926            type_: IndirectExecutionSetInfoTypeEXT::default(),
10927            info: IndirectExecutionSetInfoEXT::default(),
10928        }
10929    }
10930}
10931
10932unsafe impl Send for IndirectExecutionSetCreateInfoEXT {}
10933unsafe impl Sync for IndirectExecutionSetCreateInfoEXT {}
10934
10935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
10936#[repr(C)]
10937#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10938pub struct IndirectExecutionSetPipelineInfoEXT {
10939    pub s_type: StructureType,
10940    pub next: *const c_void,
10941    pub initial_pipeline: Pipeline,
10942    pub max_pipeline_count: u32,
10943}
10944
10945impl Default for IndirectExecutionSetPipelineInfoEXT {
10946    #[inline]
10947    fn default() -> Self {
10948        Self {
10949            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
10950            next: ptr::null(),
10951            initial_pipeline: Pipeline::default(),
10952            max_pipeline_count: u32::default(),
10953        }
10954    }
10955}
10956
10957unsafe impl Send for IndirectExecutionSetPipelineInfoEXT {}
10958unsafe impl Sync for IndirectExecutionSetPipelineInfoEXT {}
10959
10960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
10961#[repr(C)]
10962#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10963pub struct IndirectExecutionSetShaderInfoEXT {
10964    pub s_type: StructureType,
10965    pub next: *const c_void,
10966    pub shader_count: u32,
10967    pub initial_shaders: *const ShaderEXT,
10968    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
10969    pub max_shader_count: u32,
10970    pub push_constant_range_count: u32,
10971    pub push_constant_ranges: *const PushConstantRange,
10972}
10973
10974impl Default for IndirectExecutionSetShaderInfoEXT {
10975    #[inline]
10976    fn default() -> Self {
10977        Self {
10978            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
10979            next: ptr::null(),
10980            shader_count: u32::default(),
10981            initial_shaders: ptr::null(),
10982            set_layout_infos: ptr::null(),
10983            max_shader_count: u32::default(),
10984            push_constant_range_count: u32::default(),
10985            push_constant_ranges: ptr::null(),
10986        }
10987    }
10988}
10989
10990unsafe impl Send for IndirectExecutionSetShaderInfoEXT {}
10991unsafe impl Sync for IndirectExecutionSetShaderInfoEXT {}
10992
10993/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
10994#[repr(C)]
10995#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10996pub struct IndirectExecutionSetShaderLayoutInfoEXT {
10997    pub s_type: StructureType,
10998    pub next: *const c_void,
10999    pub set_layout_count: u32,
11000    pub set_layouts: *const DescriptorSetLayout,
11001}
11002
11003impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
11004    #[inline]
11005    fn default() -> Self {
11006        Self {
11007            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
11008            next: ptr::null(),
11009            set_layout_count: u32::default(),
11010            set_layouts: ptr::null(),
11011        }
11012    }
11013}
11014
11015unsafe impl Send for IndirectExecutionSetShaderLayoutInfoEXT {}
11016unsafe impl Sync for IndirectExecutionSetShaderLayoutInfoEXT {}
11017
11018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
11019#[repr(C)]
11020#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11021pub struct InitializePerformanceApiInfoINTEL {
11022    pub s_type: StructureType,
11023    pub next: *const c_void,
11024    pub user_data: *mut c_void,
11025}
11026
11027impl Default for InitializePerformanceApiInfoINTEL {
11028    #[inline]
11029    fn default() -> Self {
11030        Self {
11031            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
11032            next: ptr::null(),
11033            user_data: ptr::null_mut(),
11034        }
11035    }
11036}
11037
11038unsafe impl Send for InitializePerformanceApiInfoINTEL {}
11039unsafe impl Sync for InitializePerformanceApiInfoINTEL {}
11040
11041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
11042#[repr(C)]
11043#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11044pub struct InputAttachmentAspectReference {
11045    pub subpass: u32,
11046    pub input_attachment_index: u32,
11047    pub aspect_mask: ImageAspectFlags,
11048}
11049
11050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
11051#[repr(C)]
11052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11053pub struct InstanceCreateInfo {
11054    pub s_type: StructureType,
11055    pub next: *const c_void,
11056    pub flags: InstanceCreateFlags,
11057    pub application_info: *const ApplicationInfo,
11058    pub enabled_layer_count: u32,
11059    pub enabled_layer_names: *const *const c_char,
11060    pub enabled_extension_count: u32,
11061    pub enabled_extension_names: *const *const c_char,
11062}
11063
11064impl Default for InstanceCreateInfo {
11065    #[inline]
11066    fn default() -> Self {
11067        Self {
11068            s_type: StructureType::INSTANCE_CREATE_INFO,
11069            next: ptr::null(),
11070            flags: InstanceCreateFlags::default(),
11071            application_info: ptr::null(),
11072            enabled_layer_count: u32::default(),
11073            enabled_layer_names: ptr::null(),
11074            enabled_extension_count: u32::default(),
11075            enabled_extension_names: ptr::null(),
11076        }
11077    }
11078}
11079
11080unsafe impl Send for InstanceCreateInfo {}
11081unsafe impl Sync for InstanceCreateInfo {}
11082
11083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
11084#[repr(C)]
11085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11086pub struct LatencySleepInfoNV {
11087    pub s_type: StructureType,
11088    pub next: *const c_void,
11089    pub signal_semaphore: Semaphore,
11090    pub value: u64,
11091}
11092
11093impl Default for LatencySleepInfoNV {
11094    #[inline]
11095    fn default() -> Self {
11096        Self {
11097            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
11098            next: ptr::null(),
11099            signal_semaphore: Semaphore::default(),
11100            value: u64::default(),
11101        }
11102    }
11103}
11104
11105unsafe impl Send for LatencySleepInfoNV {}
11106unsafe impl Sync for LatencySleepInfoNV {}
11107
11108/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
11109#[repr(C)]
11110#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11111pub struct LatencySleepModeInfoNV {
11112    pub s_type: StructureType,
11113    pub next: *const c_void,
11114    pub low_latency_mode: Bool32,
11115    pub low_latency_boost: Bool32,
11116    pub minimum_interval_us: u32,
11117}
11118
11119impl Default for LatencySleepModeInfoNV {
11120    #[inline]
11121    fn default() -> Self {
11122        Self {
11123            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
11124            next: ptr::null(),
11125            low_latency_mode: Bool32::default(),
11126            low_latency_boost: Bool32::default(),
11127            minimum_interval_us: u32::default(),
11128        }
11129    }
11130}
11131
11132unsafe impl Send for LatencySleepModeInfoNV {}
11133unsafe impl Sync for LatencySleepModeInfoNV {}
11134
11135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
11136#[repr(C)]
11137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11138pub struct LatencySubmissionPresentIdNV {
11139    pub s_type: StructureType,
11140    pub next: *const c_void,
11141    pub present_id: u64,
11142}
11143
11144impl Default for LatencySubmissionPresentIdNV {
11145    #[inline]
11146    fn default() -> Self {
11147        Self {
11148            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
11149            next: ptr::null(),
11150            present_id: u64::default(),
11151        }
11152    }
11153}
11154
11155unsafe impl Send for LatencySubmissionPresentIdNV {}
11156unsafe impl Sync for LatencySubmissionPresentIdNV {}
11157
11158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
11159#[repr(C)]
11160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11161pub struct LatencySurfaceCapabilitiesNV {
11162    pub s_type: StructureType,
11163    pub next: *const c_void,
11164    pub present_mode_count: u32,
11165    pub present_modes: *mut PresentModeKHR,
11166}
11167
11168impl Default for LatencySurfaceCapabilitiesNV {
11169    #[inline]
11170    fn default() -> Self {
11171        Self {
11172            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
11173            next: ptr::null(),
11174            present_mode_count: u32::default(),
11175            present_modes: ptr::null_mut(),
11176        }
11177    }
11178}
11179
11180unsafe impl Send for LatencySurfaceCapabilitiesNV {}
11181unsafe impl Sync for LatencySurfaceCapabilitiesNV {}
11182
11183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
11184#[repr(C)]
11185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11186pub struct LatencyTimingsFrameReportNV {
11187    pub s_type: StructureType,
11188    pub next: *mut c_void,
11189    pub present_id: u64,
11190    pub input_sample_time_us: u64,
11191    pub sim_start_time_us: u64,
11192    pub sim_end_time_us: u64,
11193    pub render_submit_start_time_us: u64,
11194    pub render_submit_end_time_us: u64,
11195    pub present_start_time_us: u64,
11196    pub present_end_time_us: u64,
11197    pub driver_start_time_us: u64,
11198    pub driver_end_time_us: u64,
11199    pub os_render_queue_start_time_us: u64,
11200    pub os_render_queue_end_time_us: u64,
11201    pub gpu_render_start_time_us: u64,
11202    pub gpu_render_end_time_us: u64,
11203}
11204
11205impl Default for LatencyTimingsFrameReportNV {
11206    #[inline]
11207    fn default() -> Self {
11208        Self {
11209            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
11210            next: ptr::null_mut(),
11211            present_id: u64::default(),
11212            input_sample_time_us: u64::default(),
11213            sim_start_time_us: u64::default(),
11214            sim_end_time_us: u64::default(),
11215            render_submit_start_time_us: u64::default(),
11216            render_submit_end_time_us: u64::default(),
11217            present_start_time_us: u64::default(),
11218            present_end_time_us: u64::default(),
11219            driver_start_time_us: u64::default(),
11220            driver_end_time_us: u64::default(),
11221            os_render_queue_start_time_us: u64::default(),
11222            os_render_queue_end_time_us: u64::default(),
11223            gpu_render_start_time_us: u64::default(),
11224            gpu_render_end_time_us: u64::default(),
11225        }
11226    }
11227}
11228
11229unsafe impl Send for LatencyTimingsFrameReportNV {}
11230unsafe impl Sync for LatencyTimingsFrameReportNV {}
11231
11232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
11233#[repr(C)]
11234#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11235pub struct LayerProperties {
11236    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
11237    pub spec_version: u32,
11238    pub implementation_version: u32,
11239    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
11240}
11241
11242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
11243#[repr(C)]
11244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11245pub struct LayerSettingEXT {
11246    pub layer_name: *const c_char,
11247    pub setting_name: *const c_char,
11248    pub type_: LayerSettingTypeEXT,
11249    pub value_count: u32,
11250    pub values: *const c_void,
11251}
11252
11253impl Default for LayerSettingEXT {
11254    #[inline]
11255    fn default() -> Self {
11256        Self {
11257            layer_name: ptr::null(),
11258            setting_name: ptr::null(),
11259            type_: LayerSettingTypeEXT::default(),
11260            value_count: u32::default(),
11261            values: ptr::null(),
11262        }
11263    }
11264}
11265
11266unsafe impl Send for LayerSettingEXT {}
11267unsafe impl Sync for LayerSettingEXT {}
11268
11269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
11270#[repr(C)]
11271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11272pub struct LayerSettingsCreateInfoEXT {
11273    pub s_type: StructureType,
11274    pub next: *const c_void,
11275    pub setting_count: u32,
11276    pub settings: *const LayerSettingEXT,
11277}
11278
11279impl Default for LayerSettingsCreateInfoEXT {
11280    #[inline]
11281    fn default() -> Self {
11282        Self {
11283            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
11284            next: ptr::null(),
11285            setting_count: u32::default(),
11286            settings: ptr::null(),
11287        }
11288    }
11289}
11290
11291unsafe impl Send for LayerSettingsCreateInfoEXT {}
11292unsafe impl Sync for LayerSettingsCreateInfoEXT {}
11293
11294/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
11295#[repr(C)]
11296#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11297pub struct MacOSSurfaceCreateInfoMVK {
11298    pub s_type: StructureType,
11299    pub next: *const c_void,
11300    pub flags: MacOSSurfaceCreateFlagsMVK,
11301    pub view: *const c_void,
11302}
11303
11304impl Default for MacOSSurfaceCreateInfoMVK {
11305    #[inline]
11306    fn default() -> Self {
11307        Self {
11308            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
11309            next: ptr::null(),
11310            flags: MacOSSurfaceCreateFlagsMVK::default(),
11311            view: ptr::null(),
11312        }
11313    }
11314}
11315
11316unsafe impl Send for MacOSSurfaceCreateInfoMVK {}
11317unsafe impl Sync for MacOSSurfaceCreateInfoMVK {}
11318
11319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
11320#[repr(C)]
11321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11322pub struct MappedMemoryRange {
11323    pub s_type: StructureType,
11324    pub next: *const c_void,
11325    pub memory: DeviceMemory,
11326    pub offset: DeviceSize,
11327    pub size: DeviceSize,
11328}
11329
11330impl Default for MappedMemoryRange {
11331    #[inline]
11332    fn default() -> Self {
11333        Self {
11334            s_type: StructureType::MAPPED_MEMORY_RANGE,
11335            next: ptr::null(),
11336            memory: DeviceMemory::default(),
11337            offset: DeviceSize::default(),
11338            size: DeviceSize::default(),
11339        }
11340    }
11341}
11342
11343unsafe impl Send for MappedMemoryRange {}
11344unsafe impl Sync for MappedMemoryRange {}
11345
11346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
11347#[repr(C)]
11348#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11349pub struct MemoryAllocateFlagsInfo {
11350    pub s_type: StructureType,
11351    pub next: *const c_void,
11352    pub flags: MemoryAllocateFlags,
11353    pub device_mask: u32,
11354}
11355
11356impl Default for MemoryAllocateFlagsInfo {
11357    #[inline]
11358    fn default() -> Self {
11359        Self {
11360            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
11361            next: ptr::null(),
11362            flags: MemoryAllocateFlags::default(),
11363            device_mask: u32::default(),
11364        }
11365    }
11366}
11367
11368unsafe impl Send for MemoryAllocateFlagsInfo {}
11369unsafe impl Sync for MemoryAllocateFlagsInfo {}
11370
11371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
11372#[repr(C)]
11373#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11374pub struct MemoryAllocateInfo {
11375    pub s_type: StructureType,
11376    pub next: *const c_void,
11377    pub allocation_size: DeviceSize,
11378    pub memory_type_index: u32,
11379}
11380
11381impl Default for MemoryAllocateInfo {
11382    #[inline]
11383    fn default() -> Self {
11384        Self {
11385            s_type: StructureType::MEMORY_ALLOCATE_INFO,
11386            next: ptr::null(),
11387            allocation_size: DeviceSize::default(),
11388            memory_type_index: u32::default(),
11389        }
11390    }
11391}
11392
11393unsafe impl Send for MemoryAllocateInfo {}
11394unsafe impl Sync for MemoryAllocateInfo {}
11395
11396/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
11397#[repr(C)]
11398#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11399pub struct MemoryBarrier {
11400    pub s_type: StructureType,
11401    pub next: *const c_void,
11402    pub src_access_mask: AccessFlags,
11403    pub dst_access_mask: AccessFlags,
11404}
11405
11406impl Default for MemoryBarrier {
11407    #[inline]
11408    fn default() -> Self {
11409        Self {
11410            s_type: StructureType::MEMORY_BARRIER,
11411            next: ptr::null(),
11412            src_access_mask: AccessFlags::default(),
11413            dst_access_mask: AccessFlags::default(),
11414        }
11415    }
11416}
11417
11418unsafe impl Send for MemoryBarrier {}
11419unsafe impl Sync for MemoryBarrier {}
11420
11421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
11422#[repr(C)]
11423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11424pub struct MemoryBarrier2 {
11425    pub s_type: StructureType,
11426    pub next: *const c_void,
11427    pub src_stage_mask: PipelineStageFlags2,
11428    pub src_access_mask: AccessFlags2,
11429    pub dst_stage_mask: PipelineStageFlags2,
11430    pub dst_access_mask: AccessFlags2,
11431}
11432
11433impl Default for MemoryBarrier2 {
11434    #[inline]
11435    fn default() -> Self {
11436        Self {
11437            s_type: StructureType::MEMORY_BARRIER_2,
11438            next: ptr::null(),
11439            src_stage_mask: PipelineStageFlags2::default(),
11440            src_access_mask: AccessFlags2::default(),
11441            dst_stage_mask: PipelineStageFlags2::default(),
11442            dst_access_mask: AccessFlags2::default(),
11443        }
11444    }
11445}
11446
11447unsafe impl Send for MemoryBarrier2 {}
11448unsafe impl Sync for MemoryBarrier2 {}
11449
11450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
11451#[repr(C)]
11452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11453pub struct MemoryBarrierAccessFlags3KHR {
11454    pub s_type: StructureType,
11455    pub next: *const c_void,
11456    pub src_access_mask3: AccessFlags3KHR,
11457    pub dst_access_mask3: AccessFlags3KHR,
11458}
11459
11460impl Default for MemoryBarrierAccessFlags3KHR {
11461    #[inline]
11462    fn default() -> Self {
11463        Self {
11464            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
11465            next: ptr::null(),
11466            src_access_mask3: AccessFlags3KHR::default(),
11467            dst_access_mask3: AccessFlags3KHR::default(),
11468        }
11469    }
11470}
11471
11472unsafe impl Send for MemoryBarrierAccessFlags3KHR {}
11473unsafe impl Sync for MemoryBarrierAccessFlags3KHR {}
11474
11475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
11476#[repr(C)]
11477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11478pub struct MemoryDedicatedAllocateInfo {
11479    pub s_type: StructureType,
11480    pub next: *const c_void,
11481    pub image: Image,
11482    pub buffer: Buffer,
11483}
11484
11485impl Default for MemoryDedicatedAllocateInfo {
11486    #[inline]
11487    fn default() -> Self {
11488        Self {
11489            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
11490            next: ptr::null(),
11491            image: Image::default(),
11492            buffer: Buffer::default(),
11493        }
11494    }
11495}
11496
11497unsafe impl Send for MemoryDedicatedAllocateInfo {}
11498unsafe impl Sync for MemoryDedicatedAllocateInfo {}
11499
11500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html>
11501#[repr(C)]
11502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11503pub struct MemoryDedicatedAllocateInfoTensorARM {
11504    pub s_type: StructureType,
11505    pub next: *const c_void,
11506    pub tensor: TensorARM,
11507}
11508
11509impl Default for MemoryDedicatedAllocateInfoTensorARM {
11510    #[inline]
11511    fn default() -> Self {
11512        Self {
11513            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM,
11514            next: ptr::null(),
11515            tensor: TensorARM::default(),
11516        }
11517    }
11518}
11519
11520unsafe impl Send for MemoryDedicatedAllocateInfoTensorARM {}
11521unsafe impl Sync for MemoryDedicatedAllocateInfoTensorARM {}
11522
11523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
11524#[repr(C)]
11525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11526pub struct MemoryDedicatedRequirements {
11527    pub s_type: StructureType,
11528    pub next: *mut c_void,
11529    pub prefers_dedicated_allocation: Bool32,
11530    pub requires_dedicated_allocation: Bool32,
11531}
11532
11533impl Default for MemoryDedicatedRequirements {
11534    #[inline]
11535    fn default() -> Self {
11536        Self {
11537            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
11538            next: ptr::null_mut(),
11539            prefers_dedicated_allocation: Bool32::default(),
11540            requires_dedicated_allocation: Bool32::default(),
11541        }
11542    }
11543}
11544
11545unsafe impl Send for MemoryDedicatedRequirements {}
11546unsafe impl Sync for MemoryDedicatedRequirements {}
11547
11548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
11549#[repr(C)]
11550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11551pub struct MemoryFdPropertiesKHR {
11552    pub s_type: StructureType,
11553    pub next: *mut c_void,
11554    pub memory_type_bits: u32,
11555}
11556
11557impl Default for MemoryFdPropertiesKHR {
11558    #[inline]
11559    fn default() -> Self {
11560        Self {
11561            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
11562            next: ptr::null_mut(),
11563            memory_type_bits: u32::default(),
11564        }
11565    }
11566}
11567
11568unsafe impl Send for MemoryFdPropertiesKHR {}
11569unsafe impl Sync for MemoryFdPropertiesKHR {}
11570
11571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
11572#[repr(C)]
11573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11574pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
11575    pub s_type: StructureType,
11576    pub next: *const c_void,
11577    pub memory: DeviceMemory,
11578}
11579
11580impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
11581    #[inline]
11582    fn default() -> Self {
11583        Self {
11584            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
11585            next: ptr::null(),
11586            memory: DeviceMemory::default(),
11587        }
11588    }
11589}
11590
11591unsafe impl Send for MemoryGetAndroidHardwareBufferInfoANDROID {}
11592unsafe impl Sync for MemoryGetAndroidHardwareBufferInfoANDROID {}
11593
11594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
11595#[repr(C)]
11596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11597pub struct MemoryGetFdInfoKHR {
11598    pub s_type: StructureType,
11599    pub next: *const c_void,
11600    pub memory: DeviceMemory,
11601    pub handle_type: ExternalMemoryHandleTypeFlags,
11602}
11603
11604impl Default for MemoryGetFdInfoKHR {
11605    #[inline]
11606    fn default() -> Self {
11607        Self {
11608            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
11609            next: ptr::null(),
11610            memory: DeviceMemory::default(),
11611            handle_type: ExternalMemoryHandleTypeFlags::default(),
11612        }
11613    }
11614}
11615
11616unsafe impl Send for MemoryGetFdInfoKHR {}
11617unsafe impl Sync for MemoryGetFdInfoKHR {}
11618
11619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
11620#[repr(C)]
11621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11622pub struct MemoryGetMetalHandleInfoEXT {
11623    pub s_type: StructureType,
11624    pub next: *const c_void,
11625    pub memory: DeviceMemory,
11626    pub handle_type: ExternalMemoryHandleTypeFlags,
11627}
11628
11629impl Default for MemoryGetMetalHandleInfoEXT {
11630    #[inline]
11631    fn default() -> Self {
11632        Self {
11633            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
11634            next: ptr::null(),
11635            memory: DeviceMemory::default(),
11636            handle_type: ExternalMemoryHandleTypeFlags::default(),
11637        }
11638    }
11639}
11640
11641unsafe impl Send for MemoryGetMetalHandleInfoEXT {}
11642unsafe impl Sync for MemoryGetMetalHandleInfoEXT {}
11643
11644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetNativeBufferInfoOHOS.html>
11645#[repr(C)]
11646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11647pub struct MemoryGetNativeBufferInfoOHOS {
11648    pub s_type: StructureType,
11649    pub next: *const c_void,
11650    pub memory: DeviceMemory,
11651}
11652
11653impl Default for MemoryGetNativeBufferInfoOHOS {
11654    #[inline]
11655    fn default() -> Self {
11656        Self {
11657            s_type: StructureType::MEMORY_GET_NATIVE_BUFFER_INFO_OHOS,
11658            next: ptr::null(),
11659            memory: DeviceMemory::default(),
11660        }
11661    }
11662}
11663
11664unsafe impl Send for MemoryGetNativeBufferInfoOHOS {}
11665unsafe impl Sync for MemoryGetNativeBufferInfoOHOS {}
11666
11667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
11668#[repr(C)]
11669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11670pub struct MemoryGetRemoteAddressInfoNV {
11671    pub s_type: StructureType,
11672    pub next: *const c_void,
11673    pub memory: DeviceMemory,
11674    pub handle_type: ExternalMemoryHandleTypeFlags,
11675}
11676
11677impl Default for MemoryGetRemoteAddressInfoNV {
11678    #[inline]
11679    fn default() -> Self {
11680        Self {
11681            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
11682            next: ptr::null(),
11683            memory: DeviceMemory::default(),
11684            handle_type: ExternalMemoryHandleTypeFlags::default(),
11685        }
11686    }
11687}
11688
11689unsafe impl Send for MemoryGetRemoteAddressInfoNV {}
11690unsafe impl Sync for MemoryGetRemoteAddressInfoNV {}
11691
11692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
11693#[repr(C)]
11694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11695pub struct MemoryGetSciBufInfoNV {
11696    pub s_type: StructureType,
11697    pub next: *const c_void,
11698    pub memory: DeviceMemory,
11699    pub handle_type: ExternalMemoryHandleTypeFlags,
11700}
11701
11702impl Default for MemoryGetSciBufInfoNV {
11703    #[inline]
11704    fn default() -> Self {
11705        Self {
11706            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
11707            next: ptr::null(),
11708            memory: DeviceMemory::default(),
11709            handle_type: ExternalMemoryHandleTypeFlags::default(),
11710        }
11711    }
11712}
11713
11714unsafe impl Send for MemoryGetSciBufInfoNV {}
11715unsafe impl Sync for MemoryGetSciBufInfoNV {}
11716
11717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
11718#[repr(C)]
11719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11720pub struct MemoryGetWin32HandleInfoKHR {
11721    pub s_type: StructureType,
11722    pub next: *const c_void,
11723    pub memory: DeviceMemory,
11724    pub handle_type: ExternalMemoryHandleTypeFlags,
11725}
11726
11727impl Default for MemoryGetWin32HandleInfoKHR {
11728    #[inline]
11729    fn default() -> Self {
11730        Self {
11731            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
11732            next: ptr::null(),
11733            memory: DeviceMemory::default(),
11734            handle_type: ExternalMemoryHandleTypeFlags::default(),
11735        }
11736    }
11737}
11738
11739unsafe impl Send for MemoryGetWin32HandleInfoKHR {}
11740unsafe impl Sync for MemoryGetWin32HandleInfoKHR {}
11741
11742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
11743#[repr(C)]
11744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11745pub struct MemoryGetZirconHandleInfoFUCHSIA {
11746    pub s_type: StructureType,
11747    pub next: *const c_void,
11748    pub memory: DeviceMemory,
11749    pub handle_type: ExternalMemoryHandleTypeFlags,
11750}
11751
11752impl Default for MemoryGetZirconHandleInfoFUCHSIA {
11753    #[inline]
11754    fn default() -> Self {
11755        Self {
11756            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
11757            next: ptr::null(),
11758            memory: DeviceMemory::default(),
11759            handle_type: ExternalMemoryHandleTypeFlags::default(),
11760        }
11761    }
11762}
11763
11764unsafe impl Send for MemoryGetZirconHandleInfoFUCHSIA {}
11765unsafe impl Sync for MemoryGetZirconHandleInfoFUCHSIA {}
11766
11767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
11768#[repr(C)]
11769#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11770pub struct MemoryHeap {
11771    pub size: DeviceSize,
11772    pub flags: MemoryHeapFlags,
11773}
11774
11775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
11776#[repr(C)]
11777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11778pub struct MemoryHostPointerPropertiesEXT {
11779    pub s_type: StructureType,
11780    pub next: *mut c_void,
11781    pub memory_type_bits: u32,
11782}
11783
11784impl Default for MemoryHostPointerPropertiesEXT {
11785    #[inline]
11786    fn default() -> Self {
11787        Self {
11788            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
11789            next: ptr::null_mut(),
11790            memory_type_bits: u32::default(),
11791        }
11792    }
11793}
11794
11795unsafe impl Send for MemoryHostPointerPropertiesEXT {}
11796unsafe impl Sync for MemoryHostPointerPropertiesEXT {}
11797
11798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
11799#[repr(C)]
11800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11801pub struct MemoryMapInfo {
11802    pub s_type: StructureType,
11803    pub next: *const c_void,
11804    pub flags: MemoryMapFlags,
11805    pub memory: DeviceMemory,
11806    pub offset: DeviceSize,
11807    pub size: DeviceSize,
11808}
11809
11810impl Default for MemoryMapInfo {
11811    #[inline]
11812    fn default() -> Self {
11813        Self {
11814            s_type: StructureType::MEMORY_MAP_INFO,
11815            next: ptr::null(),
11816            flags: MemoryMapFlags::default(),
11817            memory: DeviceMemory::default(),
11818            offset: DeviceSize::default(),
11819            size: DeviceSize::default(),
11820        }
11821    }
11822}
11823
11824unsafe impl Send for MemoryMapInfo {}
11825unsafe impl Sync for MemoryMapInfo {}
11826
11827/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
11828#[repr(C)]
11829#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11830pub struct MemoryMapPlacedInfoEXT {
11831    pub s_type: StructureType,
11832    pub next: *const c_void,
11833    pub placed_address: *mut c_void,
11834}
11835
11836impl Default for MemoryMapPlacedInfoEXT {
11837    #[inline]
11838    fn default() -> Self {
11839        Self {
11840            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
11841            next: ptr::null(),
11842            placed_address: ptr::null_mut(),
11843        }
11844    }
11845}
11846
11847unsafe impl Send for MemoryMapPlacedInfoEXT {}
11848unsafe impl Sync for MemoryMapPlacedInfoEXT {}
11849
11850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
11851#[repr(C)]
11852#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11853pub struct MemoryMetalHandlePropertiesEXT {
11854    pub s_type: StructureType,
11855    pub next: *mut c_void,
11856    pub memory_type_bits: u32,
11857}
11858
11859impl Default for MemoryMetalHandlePropertiesEXT {
11860    #[inline]
11861    fn default() -> Self {
11862        Self {
11863            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
11864            next: ptr::null_mut(),
11865            memory_type_bits: u32::default(),
11866        }
11867    }
11868}
11869
11870unsafe impl Send for MemoryMetalHandlePropertiesEXT {}
11871unsafe impl Sync for MemoryMetalHandlePropertiesEXT {}
11872
11873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
11874#[repr(C)]
11875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11876pub struct MemoryOpaqueCaptureAddressAllocateInfo {
11877    pub s_type: StructureType,
11878    pub next: *const c_void,
11879    pub opaque_capture_address: u64,
11880}
11881
11882impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
11883    #[inline]
11884    fn default() -> Self {
11885        Self {
11886            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
11887            next: ptr::null(),
11888            opaque_capture_address: u64::default(),
11889        }
11890    }
11891}
11892
11893unsafe impl Send for MemoryOpaqueCaptureAddressAllocateInfo {}
11894unsafe impl Sync for MemoryOpaqueCaptureAddressAllocateInfo {}
11895
11896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
11897#[repr(C)]
11898#[derive(Copy, Clone, Debug, PartialEq)]
11899pub struct MemoryPriorityAllocateInfoEXT {
11900    pub s_type: StructureType,
11901    pub next: *const c_void,
11902    pub priority: f32,
11903}
11904
11905impl Default for MemoryPriorityAllocateInfoEXT {
11906    #[inline]
11907    fn default() -> Self {
11908        Self {
11909            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
11910            next: ptr::null(),
11911            priority: f32::default(),
11912        }
11913    }
11914}
11915
11916unsafe impl Send for MemoryPriorityAllocateInfoEXT {}
11917unsafe impl Sync for MemoryPriorityAllocateInfoEXT {}
11918
11919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
11920#[repr(C)]
11921#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11922pub struct MemoryRequirements {
11923    pub size: DeviceSize,
11924    pub alignment: DeviceSize,
11925    pub memory_type_bits: u32,
11926}
11927
11928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
11929#[repr(C)]
11930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11931pub struct MemoryRequirements2 {
11932    pub s_type: StructureType,
11933    pub next: *mut c_void,
11934    pub memory_requirements: MemoryRequirements,
11935}
11936
11937impl Default for MemoryRequirements2 {
11938    #[inline]
11939    fn default() -> Self {
11940        Self {
11941            s_type: StructureType::MEMORY_REQUIREMENTS_2,
11942            next: ptr::null_mut(),
11943            memory_requirements: MemoryRequirements::default(),
11944        }
11945    }
11946}
11947
11948unsafe impl Send for MemoryRequirements2 {}
11949unsafe impl Sync for MemoryRequirements2 {}
11950
11951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
11952#[repr(C)]
11953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11954pub struct MemorySciBufPropertiesNV {
11955    pub s_type: StructureType,
11956    pub next: *const c_void,
11957    pub memory_type_bits: u32,
11958}
11959
11960impl Default for MemorySciBufPropertiesNV {
11961    #[inline]
11962    fn default() -> Self {
11963        Self {
11964            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
11965            next: ptr::null(),
11966            memory_type_bits: u32::default(),
11967        }
11968    }
11969}
11970
11971unsafe impl Send for MemorySciBufPropertiesNV {}
11972unsafe impl Sync for MemorySciBufPropertiesNV {}
11973
11974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
11975#[repr(C)]
11976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11977pub struct MemoryToImageCopy {
11978    pub s_type: StructureType,
11979    pub next: *const c_void,
11980    pub host_pointer: *const c_void,
11981    pub memory_row_length: u32,
11982    pub memory_image_height: u32,
11983    pub image_subresource: ImageSubresourceLayers,
11984    pub image_offset: Offset3D,
11985    pub image_extent: Extent3D,
11986}
11987
11988impl Default for MemoryToImageCopy {
11989    #[inline]
11990    fn default() -> Self {
11991        Self {
11992            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
11993            next: ptr::null(),
11994            host_pointer: ptr::null(),
11995            memory_row_length: u32::default(),
11996            memory_image_height: u32::default(),
11997            image_subresource: ImageSubresourceLayers::default(),
11998            image_offset: Offset3D::default(),
11999            image_extent: Extent3D::default(),
12000        }
12001    }
12002}
12003
12004unsafe impl Send for MemoryToImageCopy {}
12005unsafe impl Sync for MemoryToImageCopy {}
12006
12007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
12008#[repr(C)]
12009#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12010pub struct MemoryType {
12011    pub property_flags: MemoryPropertyFlags,
12012    pub heap_index: u32,
12013}
12014
12015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
12016#[repr(C)]
12017#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12018pub struct MemoryUnmapInfo {
12019    pub s_type: StructureType,
12020    pub next: *const c_void,
12021    pub flags: MemoryUnmapFlags,
12022    pub memory: DeviceMemory,
12023}
12024
12025impl Default for MemoryUnmapInfo {
12026    #[inline]
12027    fn default() -> Self {
12028        Self {
12029            s_type: StructureType::MEMORY_UNMAP_INFO,
12030            next: ptr::null(),
12031            flags: MemoryUnmapFlags::default(),
12032            memory: DeviceMemory::default(),
12033        }
12034    }
12035}
12036
12037unsafe impl Send for MemoryUnmapInfo {}
12038unsafe impl Sync for MemoryUnmapInfo {}
12039
12040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
12041#[repr(C)]
12042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12043pub struct MemoryWin32HandlePropertiesKHR {
12044    pub s_type: StructureType,
12045    pub next: *mut c_void,
12046    pub memory_type_bits: u32,
12047}
12048
12049impl Default for MemoryWin32HandlePropertiesKHR {
12050    #[inline]
12051    fn default() -> Self {
12052        Self {
12053            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
12054            next: ptr::null_mut(),
12055            memory_type_bits: u32::default(),
12056        }
12057    }
12058}
12059
12060unsafe impl Send for MemoryWin32HandlePropertiesKHR {}
12061unsafe impl Sync for MemoryWin32HandlePropertiesKHR {}
12062
12063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
12064#[repr(C)]
12065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12066pub struct MemoryZirconHandlePropertiesFUCHSIA {
12067    pub s_type: StructureType,
12068    pub next: *mut c_void,
12069    pub memory_type_bits: u32,
12070}
12071
12072impl Default for MemoryZirconHandlePropertiesFUCHSIA {
12073    #[inline]
12074    fn default() -> Self {
12075        Self {
12076            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
12077            next: ptr::null_mut(),
12078            memory_type_bits: u32::default(),
12079        }
12080    }
12081}
12082
12083unsafe impl Send for MemoryZirconHandlePropertiesFUCHSIA {}
12084unsafe impl Sync for MemoryZirconHandlePropertiesFUCHSIA {}
12085
12086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
12087#[repr(C)]
12088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12089pub struct MetalSurfaceCreateInfoEXT {
12090    pub s_type: StructureType,
12091    pub next: *const c_void,
12092    pub flags: MetalSurfaceCreateFlagsEXT,
12093    pub layer: *const CAMetalLayer,
12094}
12095
12096impl Default for MetalSurfaceCreateInfoEXT {
12097    #[inline]
12098    fn default() -> Self {
12099        Self {
12100            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
12101            next: ptr::null(),
12102            flags: MetalSurfaceCreateFlagsEXT::default(),
12103            layer: ptr::null(),
12104        }
12105    }
12106}
12107
12108unsafe impl Send for MetalSurfaceCreateInfoEXT {}
12109unsafe impl Sync for MetalSurfaceCreateInfoEXT {}
12110
12111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
12112#[repr(C)]
12113#[derive(Copy, Clone, Debug)]
12114pub struct MicromapBuildInfoEXT {
12115    pub s_type: StructureType,
12116    pub next: *const c_void,
12117    pub type_: MicromapTypeEXT,
12118    pub flags: BuildMicromapFlagsEXT,
12119    pub mode: BuildMicromapModeEXT,
12120    pub dst_micromap: MicromapEXT,
12121    pub usage_counts_count: u32,
12122    pub usage_counts: *const MicromapUsageEXT,
12123    pub pointer_usage_counts: *const *const MicromapUsageEXT,
12124    pub data: DeviceOrHostAddressConstKHR,
12125    pub scratch_data: DeviceOrHostAddressKHR,
12126    pub triangle_array: DeviceOrHostAddressConstKHR,
12127    pub triangle_array_stride: DeviceSize,
12128}
12129
12130impl Default for MicromapBuildInfoEXT {
12131    #[inline]
12132    fn default() -> Self {
12133        Self {
12134            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
12135            next: ptr::null(),
12136            type_: MicromapTypeEXT::default(),
12137            flags: BuildMicromapFlagsEXT::default(),
12138            mode: BuildMicromapModeEXT::default(),
12139            dst_micromap: MicromapEXT::default(),
12140            usage_counts_count: u32::default(),
12141            usage_counts: ptr::null(),
12142            pointer_usage_counts: ptr::null(),
12143            data: DeviceOrHostAddressConstKHR::default(),
12144            scratch_data: DeviceOrHostAddressKHR::default(),
12145            triangle_array: DeviceOrHostAddressConstKHR::default(),
12146            triangle_array_stride: DeviceSize::default(),
12147        }
12148    }
12149}
12150
12151unsafe impl Send for MicromapBuildInfoEXT {}
12152unsafe impl Sync for MicromapBuildInfoEXT {}
12153
12154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
12155#[repr(C)]
12156#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12157pub struct MicromapBuildSizesInfoEXT {
12158    pub s_type: StructureType,
12159    pub next: *const c_void,
12160    pub micromap_size: DeviceSize,
12161    pub build_scratch_size: DeviceSize,
12162    pub discardable: Bool32,
12163}
12164
12165impl Default for MicromapBuildSizesInfoEXT {
12166    #[inline]
12167    fn default() -> Self {
12168        Self {
12169            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
12170            next: ptr::null(),
12171            micromap_size: DeviceSize::default(),
12172            build_scratch_size: DeviceSize::default(),
12173            discardable: Bool32::default(),
12174        }
12175    }
12176}
12177
12178unsafe impl Send for MicromapBuildSizesInfoEXT {}
12179unsafe impl Sync for MicromapBuildSizesInfoEXT {}
12180
12181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
12182#[repr(C)]
12183#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12184pub struct MicromapCreateInfoEXT {
12185    pub s_type: StructureType,
12186    pub next: *const c_void,
12187    pub create_flags: MicromapCreateFlagsEXT,
12188    pub buffer: Buffer,
12189    pub offset: DeviceSize,
12190    pub size: DeviceSize,
12191    pub type_: MicromapTypeEXT,
12192    pub device_address: DeviceAddress,
12193}
12194
12195impl Default for MicromapCreateInfoEXT {
12196    #[inline]
12197    fn default() -> Self {
12198        Self {
12199            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
12200            next: ptr::null(),
12201            create_flags: MicromapCreateFlagsEXT::default(),
12202            buffer: Buffer::default(),
12203            offset: DeviceSize::default(),
12204            size: DeviceSize::default(),
12205            type_: MicromapTypeEXT::default(),
12206            device_address: DeviceAddress::default(),
12207        }
12208    }
12209}
12210
12211unsafe impl Send for MicromapCreateInfoEXT {}
12212unsafe impl Sync for MicromapCreateInfoEXT {}
12213
12214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
12215#[repr(C)]
12216#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12217pub struct MicromapTriangleEXT {
12218    pub data_offset: u32,
12219    pub subdivision_level: u16,
12220    pub format: u16,
12221}
12222
12223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
12224#[repr(C)]
12225#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12226pub struct MicromapUsageEXT {
12227    pub count: u32,
12228    pub subdivision_level: u32,
12229    pub format: u32,
12230}
12231
12232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
12233#[repr(C)]
12234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12235pub struct MicromapVersionInfoEXT {
12236    pub s_type: StructureType,
12237    pub next: *const c_void,
12238    pub version_data: *const u8,
12239}
12240
12241impl Default for MicromapVersionInfoEXT {
12242    #[inline]
12243    fn default() -> Self {
12244        Self {
12245            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
12246            next: ptr::null(),
12247            version_data: ptr::null(),
12248        }
12249    }
12250}
12251
12252unsafe impl Send for MicromapVersionInfoEXT {}
12253unsafe impl Sync for MicromapVersionInfoEXT {}
12254
12255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
12256#[repr(C)]
12257#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12258pub struct MultiDrawIndexedInfoEXT {
12259    pub first_index: u32,
12260    pub index_count: u32,
12261    pub vertex_offset: i32,
12262}
12263
12264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
12265#[repr(C)]
12266#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12267pub struct MultiDrawInfoEXT {
12268    pub first_vertex: u32,
12269    pub vertex_count: u32,
12270}
12271
12272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
12273#[repr(C)]
12274#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12275pub struct MultisamplePropertiesEXT {
12276    pub s_type: StructureType,
12277    pub next: *mut c_void,
12278    pub max_sample_location_grid_size: Extent2D,
12279}
12280
12281impl Default for MultisamplePropertiesEXT {
12282    #[inline]
12283    fn default() -> Self {
12284        Self {
12285            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
12286            next: ptr::null_mut(),
12287            max_sample_location_grid_size: Extent2D::default(),
12288        }
12289    }
12290}
12291
12292unsafe impl Send for MultisamplePropertiesEXT {}
12293unsafe impl Sync for MultisamplePropertiesEXT {}
12294
12295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
12296#[repr(C)]
12297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12298pub struct MultisampledRenderToSingleSampledInfoEXT {
12299    pub s_type: StructureType,
12300    pub next: *const c_void,
12301    pub multisampled_render_to_single_sampled_enable: Bool32,
12302    pub rasterization_samples: SampleCountFlags,
12303}
12304
12305impl Default for MultisampledRenderToSingleSampledInfoEXT {
12306    #[inline]
12307    fn default() -> Self {
12308        Self {
12309            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
12310            next: ptr::null(),
12311            multisampled_render_to_single_sampled_enable: Bool32::default(),
12312            rasterization_samples: SampleCountFlags::default(),
12313        }
12314    }
12315}
12316
12317unsafe impl Send for MultisampledRenderToSingleSampledInfoEXT {}
12318unsafe impl Sync for MultisampledRenderToSingleSampledInfoEXT {}
12319
12320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
12321#[repr(C)]
12322#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12323pub struct MultiviewPerViewAttributesInfoNVX {
12324    pub s_type: StructureType,
12325    pub next: *const c_void,
12326    pub per_view_attributes: Bool32,
12327    pub per_view_attributes_position_x_only: Bool32,
12328}
12329
12330impl Default for MultiviewPerViewAttributesInfoNVX {
12331    #[inline]
12332    fn default() -> Self {
12333        Self {
12334            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
12335            next: ptr::null(),
12336            per_view_attributes: Bool32::default(),
12337            per_view_attributes_position_x_only: Bool32::default(),
12338        }
12339    }
12340}
12341
12342unsafe impl Send for MultiviewPerViewAttributesInfoNVX {}
12343unsafe impl Sync for MultiviewPerViewAttributesInfoNVX {}
12344
12345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
12346#[repr(C)]
12347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12348pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12349    pub s_type: StructureType,
12350    pub next: *const c_void,
12351    pub per_view_render_area_count: u32,
12352    pub per_view_render_areas: *const Rect2D,
12353}
12354
12355impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12356    #[inline]
12357    fn default() -> Self {
12358        Self {
12359            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
12360            next: ptr::null(),
12361            per_view_render_area_count: u32::default(),
12362            per_view_render_areas: ptr::null(),
12363        }
12364    }
12365}
12366
12367unsafe impl Send for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12368unsafe impl Sync for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12369
12370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
12371#[repr(C)]
12372#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12373pub struct MutableDescriptorTypeCreateInfoEXT {
12374    pub s_type: StructureType,
12375    pub next: *const c_void,
12376    pub mutable_descriptor_type_list_count: u32,
12377    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
12378}
12379
12380impl Default for MutableDescriptorTypeCreateInfoEXT {
12381    #[inline]
12382    fn default() -> Self {
12383        Self {
12384            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
12385            next: ptr::null(),
12386            mutable_descriptor_type_list_count: u32::default(),
12387            mutable_descriptor_type_lists: ptr::null(),
12388        }
12389    }
12390}
12391
12392unsafe impl Send for MutableDescriptorTypeCreateInfoEXT {}
12393unsafe impl Sync for MutableDescriptorTypeCreateInfoEXT {}
12394
12395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
12396#[repr(C)]
12397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12398pub struct MutableDescriptorTypeListEXT {
12399    pub descriptor_type_count: u32,
12400    pub descriptor_types: *const DescriptorType,
12401}
12402
12403impl Default for MutableDescriptorTypeListEXT {
12404    #[inline]
12405    fn default() -> Self {
12406        Self {
12407            descriptor_type_count: u32::default(),
12408            descriptor_types: ptr::null(),
12409        }
12410    }
12411}
12412
12413unsafe impl Send for MutableDescriptorTypeListEXT {}
12414unsafe impl Sync for MutableDescriptorTypeListEXT {}
12415
12416/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferFormatPropertiesOHOS.html>
12417#[repr(C)]
12418#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12419pub struct NativeBufferFormatPropertiesOHOS {
12420    pub s_type: StructureType,
12421    pub next: *mut c_void,
12422    pub format: Format,
12423    pub external_format: u64,
12424    pub format_features: FormatFeatureFlags,
12425    pub sampler_ycbcr_conversion_components: ComponentMapping,
12426    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
12427    pub suggested_ycbcr_range: SamplerYcbcrRange,
12428    pub suggested_x_chroma_offset: ChromaLocation,
12429    pub suggested_y_chroma_offset: ChromaLocation,
12430}
12431
12432impl Default for NativeBufferFormatPropertiesOHOS {
12433    #[inline]
12434    fn default() -> Self {
12435        Self {
12436            s_type: StructureType::NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS,
12437            next: ptr::null_mut(),
12438            format: Format::default(),
12439            external_format: u64::default(),
12440            format_features: FormatFeatureFlags::default(),
12441            sampler_ycbcr_conversion_components: ComponentMapping::default(),
12442            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
12443            suggested_ycbcr_range: SamplerYcbcrRange::default(),
12444            suggested_x_chroma_offset: ChromaLocation::default(),
12445            suggested_y_chroma_offset: ChromaLocation::default(),
12446        }
12447    }
12448}
12449
12450unsafe impl Send for NativeBufferFormatPropertiesOHOS {}
12451unsafe impl Sync for NativeBufferFormatPropertiesOHOS {}
12452
12453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferPropertiesOHOS.html>
12454#[repr(C)]
12455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12456pub struct NativeBufferPropertiesOHOS {
12457    pub s_type: StructureType,
12458    pub next: *mut c_void,
12459    pub allocation_size: DeviceSize,
12460    pub memory_type_bits: u32,
12461}
12462
12463impl Default for NativeBufferPropertiesOHOS {
12464    #[inline]
12465    fn default() -> Self {
12466        Self {
12467            s_type: StructureType::NATIVE_BUFFER_PROPERTIES_OHOS,
12468            next: ptr::null_mut(),
12469            allocation_size: DeviceSize::default(),
12470            memory_type_bits: u32::default(),
12471        }
12472    }
12473}
12474
12475unsafe impl Send for NativeBufferPropertiesOHOS {}
12476unsafe impl Sync for NativeBufferPropertiesOHOS {}
12477
12478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferUsageOHOS.html>
12479#[repr(C)]
12480#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12481pub struct NativeBufferUsageOHOS {
12482    pub s_type: StructureType,
12483    pub next: *mut c_void,
12484    pub ohos_native_buffer_usage: u64,
12485}
12486
12487impl Default for NativeBufferUsageOHOS {
12488    #[inline]
12489    fn default() -> Self {
12490        Self {
12491            s_type: StructureType::NATIVE_BUFFER_USAGE_OHOS,
12492            next: ptr::null_mut(),
12493            ohos_native_buffer_usage: u64::default(),
12494        }
12495    }
12496}
12497
12498unsafe impl Send for NativeBufferUsageOHOS {}
12499unsafe impl Sync for NativeBufferUsageOHOS {}
12500
12501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
12502#[repr(C)]
12503#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12504pub struct Offset2D {
12505    pub x: i32,
12506    pub y: i32,
12507}
12508
12509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
12510#[repr(C)]
12511#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12512pub struct Offset3D {
12513    pub x: i32,
12514    pub y: i32,
12515    pub z: i32,
12516}
12517
12518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
12519#[repr(C)]
12520#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12521pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
12522    pub s_type: StructureType,
12523    pub next: *const c_void,
12524    pub opaque_capture_descriptor_data: *const c_void,
12525}
12526
12527impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
12528    #[inline]
12529    fn default() -> Self {
12530        Self {
12531            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
12532            next: ptr::null(),
12533            opaque_capture_descriptor_data: ptr::null(),
12534        }
12535    }
12536}
12537
12538unsafe impl Send for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12539unsafe impl Sync for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12540
12541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
12542#[repr(C)]
12543#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12544pub struct OpticalFlowExecuteInfoNV {
12545    pub s_type: StructureType,
12546    pub next: *mut c_void,
12547    pub flags: OpticalFlowExecuteFlagsNV,
12548    pub region_count: u32,
12549    pub regions: *const Rect2D,
12550}
12551
12552impl Default for OpticalFlowExecuteInfoNV {
12553    #[inline]
12554    fn default() -> Self {
12555        Self {
12556            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
12557            next: ptr::null_mut(),
12558            flags: OpticalFlowExecuteFlagsNV::default(),
12559            region_count: u32::default(),
12560            regions: ptr::null(),
12561        }
12562    }
12563}
12564
12565unsafe impl Send for OpticalFlowExecuteInfoNV {}
12566unsafe impl Sync for OpticalFlowExecuteInfoNV {}
12567
12568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
12569#[repr(C)]
12570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12571pub struct OpticalFlowImageFormatInfoNV {
12572    pub s_type: StructureType,
12573    pub next: *const c_void,
12574    pub usage: OpticalFlowUsageFlagsNV,
12575}
12576
12577impl Default for OpticalFlowImageFormatInfoNV {
12578    #[inline]
12579    fn default() -> Self {
12580        Self {
12581            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
12582            next: ptr::null(),
12583            usage: OpticalFlowUsageFlagsNV::default(),
12584        }
12585    }
12586}
12587
12588unsafe impl Send for OpticalFlowImageFormatInfoNV {}
12589unsafe impl Sync for OpticalFlowImageFormatInfoNV {}
12590
12591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
12592#[repr(C)]
12593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12594pub struct OpticalFlowImageFormatPropertiesNV {
12595    pub s_type: StructureType,
12596    pub next: *mut c_void,
12597    pub format: Format,
12598}
12599
12600impl Default for OpticalFlowImageFormatPropertiesNV {
12601    #[inline]
12602    fn default() -> Self {
12603        Self {
12604            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
12605            next: ptr::null_mut(),
12606            format: Format::default(),
12607        }
12608    }
12609}
12610
12611unsafe impl Send for OpticalFlowImageFormatPropertiesNV {}
12612unsafe impl Sync for OpticalFlowImageFormatPropertiesNV {}
12613
12614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
12615#[repr(C)]
12616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12617pub struct OpticalFlowSessionCreateInfoNV {
12618    pub s_type: StructureType,
12619    pub next: *mut c_void,
12620    pub width: u32,
12621    pub height: u32,
12622    pub image_format: Format,
12623    pub flow_vector_format: Format,
12624    pub cost_format: Format,
12625    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
12626    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
12627    pub performance_level: OpticalFlowPerformanceLevelNV,
12628    pub flags: OpticalFlowSessionCreateFlagsNV,
12629}
12630
12631impl Default for OpticalFlowSessionCreateInfoNV {
12632    #[inline]
12633    fn default() -> Self {
12634        Self {
12635            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
12636            next: ptr::null_mut(),
12637            width: u32::default(),
12638            height: u32::default(),
12639            image_format: Format::default(),
12640            flow_vector_format: Format::default(),
12641            cost_format: Format::default(),
12642            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12643            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12644            performance_level: OpticalFlowPerformanceLevelNV::default(),
12645            flags: OpticalFlowSessionCreateFlagsNV::default(),
12646        }
12647    }
12648}
12649
12650unsafe impl Send for OpticalFlowSessionCreateInfoNV {}
12651unsafe impl Sync for OpticalFlowSessionCreateInfoNV {}
12652
12653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
12654#[repr(C)]
12655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12656pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
12657    pub s_type: StructureType,
12658    pub next: *mut c_void,
12659    pub id: u32,
12660    pub size: u32,
12661    pub private_data: *const c_void,
12662}
12663
12664impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
12665    #[inline]
12666    fn default() -> Self {
12667        Self {
12668            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
12669            next: ptr::null_mut(),
12670            id: u32::default(),
12671            size: u32::default(),
12672            private_data: ptr::null(),
12673        }
12674    }
12675}
12676
12677unsafe impl Send for OpticalFlowSessionCreatePrivateDataInfoNV {}
12678unsafe impl Sync for OpticalFlowSessionCreatePrivateDataInfoNV {}
12679
12680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
12681#[repr(C)]
12682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12683pub struct OutOfBandQueueTypeInfoNV {
12684    pub s_type: StructureType,
12685    pub next: *const c_void,
12686    pub queue_type: OutOfBandQueueTypeNV,
12687}
12688
12689impl Default for OutOfBandQueueTypeInfoNV {
12690    #[inline]
12691    fn default() -> Self {
12692        Self {
12693            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
12694            next: ptr::null(),
12695            queue_type: OutOfBandQueueTypeNV::default(),
12696        }
12697    }
12698}
12699
12700unsafe impl Send for OutOfBandQueueTypeInfoNV {}
12701unsafe impl Sync for OutOfBandQueueTypeInfoNV {}
12702
12703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
12704#[repr(C)]
12705#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12706pub struct PartitionedAccelerationStructureFlagsNV {
12707    pub s_type: StructureType,
12708    pub next: *mut c_void,
12709    pub enable_partition_translation: Bool32,
12710}
12711
12712impl Default for PartitionedAccelerationStructureFlagsNV {
12713    #[inline]
12714    fn default() -> Self {
12715        Self {
12716            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
12717            next: ptr::null_mut(),
12718            enable_partition_translation: Bool32::default(),
12719        }
12720    }
12721}
12722
12723unsafe impl Send for PartitionedAccelerationStructureFlagsNV {}
12724unsafe impl Sync for PartitionedAccelerationStructureFlagsNV {}
12725
12726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
12727#[repr(C)]
12728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12729pub struct PartitionedAccelerationStructureInstancesInputNV {
12730    pub s_type: StructureType,
12731    pub next: *mut c_void,
12732    pub flags: BuildAccelerationStructureFlagsKHR,
12733    pub instance_count: u32,
12734    pub max_instance_per_partition_count: u32,
12735    pub partition_count: u32,
12736    pub max_instance_in_global_partition_count: u32,
12737}
12738
12739impl Default for PartitionedAccelerationStructureInstancesInputNV {
12740    #[inline]
12741    fn default() -> Self {
12742        Self {
12743            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
12744            next: ptr::null_mut(),
12745            flags: BuildAccelerationStructureFlagsKHR::default(),
12746            instance_count: u32::default(),
12747            max_instance_per_partition_count: u32::default(),
12748            partition_count: u32::default(),
12749            max_instance_in_global_partition_count: u32::default(),
12750        }
12751    }
12752}
12753
12754unsafe impl Send for PartitionedAccelerationStructureInstancesInputNV {}
12755unsafe impl Sync for PartitionedAccelerationStructureInstancesInputNV {}
12756
12757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
12758#[repr(C)]
12759#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12760pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
12761    pub instance_index: u32,
12762    pub instance_contribution_to_hit_group_index: u32,
12763    pub acceleration_structure: DeviceAddress,
12764}
12765
12766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
12767#[repr(C)]
12768#[derive(Copy, Clone, Default, Debug, PartialEq)]
12769pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
12770    pub transform: TransformMatrixKHR,
12771    pub explicit_aabb: [f32; 6],
12772    pub instance_id: u32,
12773    pub instance_mask: u32,
12774    pub instance_contribution_to_hit_group_index: u32,
12775    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
12776    pub instance_index: u32,
12777    pub partition_index: u32,
12778    pub acceleration_structure: DeviceAddress,
12779}
12780
12781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
12782#[repr(C)]
12783#[derive(Copy, Clone, Default, Debug, PartialEq)]
12784pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
12785    pub partition_index: u32,
12786    pub partition_translation: [f32; 3],
12787}
12788
12789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingEXT.html>
12790#[repr(C)]
12791#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12792pub struct PastPresentationTimingEXT {
12793    pub s_type: StructureType,
12794    pub next: *mut c_void,
12795    pub present_id: u64,
12796    pub target_time: u64,
12797    pub present_stage_count: u32,
12798    pub present_stages: *mut PresentStageTimeEXT,
12799    pub time_domain: TimeDomainKHR,
12800    pub time_domain_id: u64,
12801    pub report_complete: Bool32,
12802}
12803
12804impl Default for PastPresentationTimingEXT {
12805    #[inline]
12806    fn default() -> Self {
12807        Self {
12808            s_type: StructureType::PAST_PRESENTATION_TIMING_EXT,
12809            next: ptr::null_mut(),
12810            present_id: u64::default(),
12811            target_time: u64::default(),
12812            present_stage_count: u32::default(),
12813            present_stages: ptr::null_mut(),
12814            time_domain: TimeDomainKHR::default(),
12815            time_domain_id: u64::default(),
12816            report_complete: Bool32::default(),
12817        }
12818    }
12819}
12820
12821unsafe impl Send for PastPresentationTimingEXT {}
12822unsafe impl Sync for PastPresentationTimingEXT {}
12823
12824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
12825#[repr(C)]
12826#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12827pub struct PastPresentationTimingGOOGLE {
12828    pub present_id: u32,
12829    pub desired_present_time: u64,
12830    pub actual_present_time: u64,
12831    pub earliest_present_time: u64,
12832    pub present_margin: u64,
12833}
12834
12835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingInfoEXT.html>
12836#[repr(C)]
12837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12838pub struct PastPresentationTimingInfoEXT {
12839    pub s_type: StructureType,
12840    pub next: *const c_void,
12841    pub flags: PastPresentationTimingFlagsEXT,
12842    pub swapchain: SwapchainKHR,
12843}
12844
12845impl Default for PastPresentationTimingInfoEXT {
12846    #[inline]
12847    fn default() -> Self {
12848        Self {
12849            s_type: StructureType::PAST_PRESENTATION_TIMING_INFO_EXT,
12850            next: ptr::null(),
12851            flags: PastPresentationTimingFlagsEXT::default(),
12852            swapchain: SwapchainKHR::default(),
12853        }
12854    }
12855}
12856
12857unsafe impl Send for PastPresentationTimingInfoEXT {}
12858unsafe impl Sync for PastPresentationTimingInfoEXT {}
12859
12860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingPropertiesEXT.html>
12861#[repr(C)]
12862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12863pub struct PastPresentationTimingPropertiesEXT {
12864    pub s_type: StructureType,
12865    pub next: *mut c_void,
12866    pub timing_properties_counter: u64,
12867    pub time_domains_counter: u64,
12868    pub presentation_timing_count: u32,
12869    pub presentation_timings: *mut PastPresentationTimingEXT,
12870}
12871
12872impl Default for PastPresentationTimingPropertiesEXT {
12873    #[inline]
12874    fn default() -> Self {
12875        Self {
12876            s_type: StructureType::PAST_PRESENTATION_TIMING_PROPERTIES_EXT,
12877            next: ptr::null_mut(),
12878            timing_properties_counter: u64::default(),
12879            time_domains_counter: u64::default(),
12880            presentation_timing_count: u32::default(),
12881            presentation_timings: ptr::null_mut(),
12882        }
12883    }
12884}
12885
12886unsafe impl Send for PastPresentationTimingPropertiesEXT {}
12887unsafe impl Sync for PastPresentationTimingPropertiesEXT {}
12888
12889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html>
12890#[repr(C)]
12891#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12892pub struct PerTileBeginInfoQCOM {
12893    pub s_type: StructureType,
12894    pub next: *const c_void,
12895}
12896
12897impl Default for PerTileBeginInfoQCOM {
12898    #[inline]
12899    fn default() -> Self {
12900        Self {
12901            s_type: StructureType::PER_TILE_BEGIN_INFO_QCOM,
12902            next: ptr::null(),
12903        }
12904    }
12905}
12906
12907unsafe impl Send for PerTileBeginInfoQCOM {}
12908unsafe impl Sync for PerTileBeginInfoQCOM {}
12909
12910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html>
12911#[repr(C)]
12912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12913pub struct PerTileEndInfoQCOM {
12914    pub s_type: StructureType,
12915    pub next: *const c_void,
12916}
12917
12918impl Default for PerTileEndInfoQCOM {
12919    #[inline]
12920    fn default() -> Self {
12921        Self {
12922            s_type: StructureType::PER_TILE_END_INFO_QCOM,
12923            next: ptr::null(),
12924        }
12925    }
12926}
12927
12928unsafe impl Send for PerTileEndInfoQCOM {}
12929unsafe impl Sync for PerTileEndInfoQCOM {}
12930
12931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
12932#[repr(C)]
12933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12934pub struct PerformanceConfigurationAcquireInfoINTEL {
12935    pub s_type: StructureType,
12936    pub next: *const c_void,
12937    pub type_: PerformanceConfigurationTypeINTEL,
12938}
12939
12940impl Default for PerformanceConfigurationAcquireInfoINTEL {
12941    #[inline]
12942    fn default() -> Self {
12943        Self {
12944            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
12945            next: ptr::null(),
12946            type_: PerformanceConfigurationTypeINTEL::default(),
12947        }
12948    }
12949}
12950
12951unsafe impl Send for PerformanceConfigurationAcquireInfoINTEL {}
12952unsafe impl Sync for PerformanceConfigurationAcquireInfoINTEL {}
12953
12954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterARM.html>
12955#[repr(C)]
12956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12957pub struct PerformanceCounterARM {
12958    pub s_type: StructureType,
12959    pub next: *mut c_void,
12960    pub counter_id: u32,
12961}
12962
12963impl Default for PerformanceCounterARM {
12964    #[inline]
12965    fn default() -> Self {
12966        Self {
12967            s_type: StructureType::PERFORMANCE_COUNTER_ARM,
12968            next: ptr::null_mut(),
12969            counter_id: u32::default(),
12970        }
12971    }
12972}
12973
12974unsafe impl Send for PerformanceCounterARM {}
12975unsafe impl Sync for PerformanceCounterARM {}
12976
12977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionARM.html>
12978#[repr(C)]
12979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12980pub struct PerformanceCounterDescriptionARM {
12981    pub s_type: StructureType,
12982    pub next: *mut c_void,
12983    pub flags: PerformanceCounterDescriptionFlagsARM,
12984    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
12985}
12986
12987impl Default for PerformanceCounterDescriptionARM {
12988    #[inline]
12989    fn default() -> Self {
12990        Self {
12991            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_ARM,
12992            next: ptr::null_mut(),
12993            flags: PerformanceCounterDescriptionFlagsARM::default(),
12994            name: StringArray::default(),
12995        }
12996    }
12997}
12998
12999unsafe impl Send for PerformanceCounterDescriptionARM {}
13000unsafe impl Sync for PerformanceCounterDescriptionARM {}
13001
13002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
13003#[repr(C)]
13004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13005pub struct PerformanceCounterDescriptionKHR {
13006    pub s_type: StructureType,
13007    pub next: *mut c_void,
13008    pub flags: PerformanceCounterDescriptionFlagsKHR,
13009    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
13010    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
13011    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
13012}
13013
13014impl Default for PerformanceCounterDescriptionKHR {
13015    #[inline]
13016    fn default() -> Self {
13017        Self {
13018            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
13019            next: ptr::null_mut(),
13020            flags: PerformanceCounterDescriptionFlagsKHR::default(),
13021            name: StringArray::default(),
13022            category: StringArray::default(),
13023            description: StringArray::default(),
13024        }
13025    }
13026}
13027
13028unsafe impl Send for PerformanceCounterDescriptionKHR {}
13029unsafe impl Sync for PerformanceCounterDescriptionKHR {}
13030
13031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
13032#[repr(C)]
13033#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13034pub struct PerformanceCounterKHR {
13035    pub s_type: StructureType,
13036    pub next: *mut c_void,
13037    pub unit: PerformanceCounterUnitKHR,
13038    pub scope: PerformanceCounterScopeKHR,
13039    pub storage: PerformanceCounterStorageKHR,
13040    pub uuid: ByteArray<UUID_SIZE>,
13041}
13042
13043impl Default for PerformanceCounterKHR {
13044    #[inline]
13045    fn default() -> Self {
13046        Self {
13047            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
13048            next: ptr::null_mut(),
13049            unit: PerformanceCounterUnitKHR::default(),
13050            scope: PerformanceCounterScopeKHR::default(),
13051            storage: PerformanceCounterStorageKHR::default(),
13052            uuid: ByteArray::default(),
13053        }
13054    }
13055}
13056
13057unsafe impl Send for PerformanceCounterKHR {}
13058unsafe impl Sync for PerformanceCounterKHR {}
13059
13060/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
13061#[repr(C)]
13062#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13063pub struct PerformanceMarkerInfoINTEL {
13064    pub s_type: StructureType,
13065    pub next: *const c_void,
13066    pub marker: u64,
13067}
13068
13069impl Default for PerformanceMarkerInfoINTEL {
13070    #[inline]
13071    fn default() -> Self {
13072        Self {
13073            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
13074            next: ptr::null(),
13075            marker: u64::default(),
13076        }
13077    }
13078}
13079
13080unsafe impl Send for PerformanceMarkerInfoINTEL {}
13081unsafe impl Sync for PerformanceMarkerInfoINTEL {}
13082
13083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
13084#[repr(C)]
13085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13086pub struct PerformanceOverrideInfoINTEL {
13087    pub s_type: StructureType,
13088    pub next: *const c_void,
13089    pub type_: PerformanceOverrideTypeINTEL,
13090    pub enable: Bool32,
13091    pub parameter: u64,
13092}
13093
13094impl Default for PerformanceOverrideInfoINTEL {
13095    #[inline]
13096    fn default() -> Self {
13097        Self {
13098            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
13099            next: ptr::null(),
13100            type_: PerformanceOverrideTypeINTEL::default(),
13101            enable: Bool32::default(),
13102            parameter: u64::default(),
13103        }
13104    }
13105}
13106
13107unsafe impl Send for PerformanceOverrideInfoINTEL {}
13108unsafe impl Sync for PerformanceOverrideInfoINTEL {}
13109
13110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
13111#[repr(C)]
13112#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13113pub struct PerformanceQueryReservationInfoKHR {
13114    pub s_type: StructureType,
13115    pub next: *const c_void,
13116    pub max_performance_queries_per_pool: u32,
13117}
13118
13119impl Default for PerformanceQueryReservationInfoKHR {
13120    #[inline]
13121    fn default() -> Self {
13122        Self {
13123            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
13124            next: ptr::null(),
13125            max_performance_queries_per_pool: u32::default(),
13126        }
13127    }
13128}
13129
13130unsafe impl Send for PerformanceQueryReservationInfoKHR {}
13131unsafe impl Sync for PerformanceQueryReservationInfoKHR {}
13132
13133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
13134#[repr(C)]
13135#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13136pub struct PerformanceQuerySubmitInfoKHR {
13137    pub s_type: StructureType,
13138    pub next: *const c_void,
13139    pub counter_pass_index: u32,
13140}
13141
13142impl Default for PerformanceQuerySubmitInfoKHR {
13143    #[inline]
13144    fn default() -> Self {
13145        Self {
13146            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
13147            next: ptr::null(),
13148            counter_pass_index: u32::default(),
13149        }
13150    }
13151}
13152
13153unsafe impl Send for PerformanceQuerySubmitInfoKHR {}
13154unsafe impl Sync for PerformanceQuerySubmitInfoKHR {}
13155
13156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
13157#[repr(C)]
13158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13159pub struct PerformanceStreamMarkerInfoINTEL {
13160    pub s_type: StructureType,
13161    pub next: *const c_void,
13162    pub marker: u32,
13163}
13164
13165impl Default for PerformanceStreamMarkerInfoINTEL {
13166    #[inline]
13167    fn default() -> Self {
13168        Self {
13169            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
13170            next: ptr::null(),
13171            marker: u32::default(),
13172        }
13173    }
13174}
13175
13176unsafe impl Send for PerformanceStreamMarkerInfoINTEL {}
13177unsafe impl Sync for PerformanceStreamMarkerInfoINTEL {}
13178
13179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
13180#[repr(C)]
13181#[derive(Copy, Clone, Default, Debug)]
13182pub struct PerformanceValueINTEL {
13183    pub type_: PerformanceValueTypeINTEL,
13184    pub data: PerformanceValueDataINTEL,
13185}
13186
13187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
13188#[repr(C)]
13189#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13190pub struct PhysicalDevice16BitStorageFeatures {
13191    pub s_type: StructureType,
13192    pub next: *mut c_void,
13193    pub storage_buffer_16bit_access: Bool32,
13194    pub uniform_and_storage_buffer_16bit_access: Bool32,
13195    pub storage_push_constant16: Bool32,
13196    pub storage_input_output16: Bool32,
13197}
13198
13199impl Default for PhysicalDevice16BitStorageFeatures {
13200    #[inline]
13201    fn default() -> Self {
13202        Self {
13203            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
13204            next: ptr::null_mut(),
13205            storage_buffer_16bit_access: Bool32::default(),
13206            uniform_and_storage_buffer_16bit_access: Bool32::default(),
13207            storage_push_constant16: Bool32::default(),
13208            storage_input_output16: Bool32::default(),
13209        }
13210    }
13211}
13212
13213unsafe impl Send for PhysicalDevice16BitStorageFeatures {}
13214unsafe impl Sync for PhysicalDevice16BitStorageFeatures {}
13215
13216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
13217#[repr(C)]
13218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13219pub struct PhysicalDevice4444FormatsFeaturesEXT {
13220    pub s_type: StructureType,
13221    pub next: *mut c_void,
13222    pub format_a4_r4_g4_b4: Bool32,
13223    pub format_a4_b4_g4_r4: Bool32,
13224}
13225
13226impl Default for PhysicalDevice4444FormatsFeaturesEXT {
13227    #[inline]
13228    fn default() -> Self {
13229        Self {
13230            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
13231            next: ptr::null_mut(),
13232            format_a4_r4_g4_b4: Bool32::default(),
13233            format_a4_b4_g4_r4: Bool32::default(),
13234        }
13235    }
13236}
13237
13238unsafe impl Send for PhysicalDevice4444FormatsFeaturesEXT {}
13239unsafe impl Sync for PhysicalDevice4444FormatsFeaturesEXT {}
13240
13241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
13242#[repr(C)]
13243#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13244pub struct PhysicalDevice8BitStorageFeatures {
13245    pub s_type: StructureType,
13246    pub next: *mut c_void,
13247    pub storage_buffer_8bit_access: Bool32,
13248    pub uniform_and_storage_buffer_8bit_access: Bool32,
13249    pub storage_push_constant8: Bool32,
13250}
13251
13252impl Default for PhysicalDevice8BitStorageFeatures {
13253    #[inline]
13254    fn default() -> Self {
13255        Self {
13256            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
13257            next: ptr::null_mut(),
13258            storage_buffer_8bit_access: Bool32::default(),
13259            uniform_and_storage_buffer_8bit_access: Bool32::default(),
13260            storage_push_constant8: Bool32::default(),
13261        }
13262    }
13263}
13264
13265unsafe impl Send for PhysicalDevice8BitStorageFeatures {}
13266unsafe impl Sync for PhysicalDevice8BitStorageFeatures {}
13267
13268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
13269#[repr(C)]
13270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13271pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
13272    pub s_type: StructureType,
13273    pub next: *mut c_void,
13274    pub decode_mode_shared_exponent: Bool32,
13275}
13276
13277impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
13278    #[inline]
13279    fn default() -> Self {
13280        Self {
13281            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
13282            next: ptr::null_mut(),
13283            decode_mode_shared_exponent: Bool32::default(),
13284        }
13285    }
13286}
13287
13288unsafe impl Send for PhysicalDeviceASTCDecodeFeaturesEXT {}
13289unsafe impl Sync for PhysicalDeviceASTCDecodeFeaturesEXT {}
13290
13291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
13292#[repr(C)]
13293#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13294pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
13295    pub s_type: StructureType,
13296    pub next: *mut c_void,
13297    pub acceleration_structure: Bool32,
13298    pub acceleration_structure_capture_replay: Bool32,
13299    pub acceleration_structure_indirect_build: Bool32,
13300    pub acceleration_structure_host_commands: Bool32,
13301    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
13302}
13303
13304impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
13305    #[inline]
13306    fn default() -> Self {
13307        Self {
13308            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
13309            next: ptr::null_mut(),
13310            acceleration_structure: Bool32::default(),
13311            acceleration_structure_capture_replay: Bool32::default(),
13312            acceleration_structure_indirect_build: Bool32::default(),
13313            acceleration_structure_host_commands: Bool32::default(),
13314            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
13315        }
13316    }
13317}
13318
13319unsafe impl Send for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13320unsafe impl Sync for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13321
13322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
13323#[repr(C)]
13324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13325pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
13326    pub s_type: StructureType,
13327    pub next: *mut c_void,
13328    pub max_geometry_count: u64,
13329    pub max_instance_count: u64,
13330    pub max_primitive_count: u64,
13331    pub max_per_stage_descriptor_acceleration_structures: u32,
13332    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
13333    pub max_descriptor_set_acceleration_structures: u32,
13334    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
13335    pub min_acceleration_structure_scratch_offset_alignment: u32,
13336}
13337
13338impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
13339    #[inline]
13340    fn default() -> Self {
13341        Self {
13342            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
13343            next: ptr::null_mut(),
13344            max_geometry_count: u64::default(),
13345            max_instance_count: u64::default(),
13346            max_primitive_count: u64::default(),
13347            max_per_stage_descriptor_acceleration_structures: u32::default(),
13348            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
13349            max_descriptor_set_acceleration_structures: u32::default(),
13350            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
13351            min_acceleration_structure_scratch_offset_alignment: u32::default(),
13352        }
13353    }
13354}
13355
13356unsafe impl Send for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13357unsafe impl Sync for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13358
13359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
13360#[repr(C)]
13361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13362pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
13363    pub s_type: StructureType,
13364    pub next: *mut c_void,
13365    pub report_address_binding: Bool32,
13366}
13367
13368impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
13369    #[inline]
13370    fn default() -> Self {
13371        Self {
13372            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
13373            next: ptr::null_mut(),
13374            report_address_binding: Bool32::default(),
13375        }
13376    }
13377}
13378
13379unsafe impl Send for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13380unsafe impl Sync for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13381
13382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
13383#[repr(C)]
13384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13385pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
13386    pub s_type: StructureType,
13387    pub next: *mut c_void,
13388    pub amigo_profiling: Bool32,
13389}
13390
13391impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
13392    #[inline]
13393    fn default() -> Self {
13394        Self {
13395            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
13396            next: ptr::null_mut(),
13397            amigo_profiling: Bool32::default(),
13398        }
13399    }
13400}
13401
13402unsafe impl Send for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13403unsafe impl Sync for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13404
13405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
13406#[repr(C)]
13407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13408pub struct PhysicalDeviceAntiLagFeaturesAMD {
13409    pub s_type: StructureType,
13410    pub next: *mut c_void,
13411    pub anti_lag: Bool32,
13412}
13413
13414impl Default for PhysicalDeviceAntiLagFeaturesAMD {
13415    #[inline]
13416    fn default() -> Self {
13417        Self {
13418            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
13419            next: ptr::null_mut(),
13420            anti_lag: Bool32::default(),
13421        }
13422    }
13423}
13424
13425unsafe impl Send for PhysicalDeviceAntiLagFeaturesAMD {}
13426unsafe impl Sync for PhysicalDeviceAntiLagFeaturesAMD {}
13427
13428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
13429#[repr(C)]
13430#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13431pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13432    pub s_type: StructureType,
13433    pub next: *mut c_void,
13434    pub attachment_feedback_loop_dynamic_state: Bool32,
13435}
13436
13437impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13438    #[inline]
13439    fn default() -> Self {
13440        Self {
13441            s_type:
13442                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
13443            next: ptr::null_mut(),
13444            attachment_feedback_loop_dynamic_state: Bool32::default(),
13445        }
13446    }
13447}
13448
13449unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13450unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13451
13452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
13453#[repr(C)]
13454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13455pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13456    pub s_type: StructureType,
13457    pub next: *mut c_void,
13458    pub attachment_feedback_loop_layout: Bool32,
13459}
13460
13461impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13462    #[inline]
13463    fn default() -> Self {
13464        Self {
13465            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
13466            next: ptr::null_mut(),
13467            attachment_feedback_loop_layout: Bool32::default(),
13468        }
13469    }
13470}
13471
13472unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13473unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13474
13475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
13476#[repr(C)]
13477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13478pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13479    pub s_type: StructureType,
13480    pub next: *mut c_void,
13481    pub advanced_blend_coherent_operations: Bool32,
13482}
13483
13484impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13485    #[inline]
13486    fn default() -> Self {
13487        Self {
13488            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
13489            next: ptr::null_mut(),
13490            advanced_blend_coherent_operations: Bool32::default(),
13491        }
13492    }
13493}
13494
13495unsafe impl Send for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13496unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13497
13498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
13499#[repr(C)]
13500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13501pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13502    pub s_type: StructureType,
13503    pub next: *mut c_void,
13504    pub advanced_blend_max_color_attachments: u32,
13505    pub advanced_blend_independent_blend: Bool32,
13506    pub advanced_blend_non_premultiplied_src_color: Bool32,
13507    pub advanced_blend_non_premultiplied_dst_color: Bool32,
13508    pub advanced_blend_correlated_overlap: Bool32,
13509    pub advanced_blend_all_operations: Bool32,
13510}
13511
13512impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13513    #[inline]
13514    fn default() -> Self {
13515        Self {
13516            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
13517            next: ptr::null_mut(),
13518            advanced_blend_max_color_attachments: u32::default(),
13519            advanced_blend_independent_blend: Bool32::default(),
13520            advanced_blend_non_premultiplied_src_color: Bool32::default(),
13521            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
13522            advanced_blend_correlated_overlap: Bool32::default(),
13523            advanced_blend_all_operations: Bool32::default(),
13524        }
13525    }
13526}
13527
13528unsafe impl Send for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13529unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13530
13531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
13532#[repr(C)]
13533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13534pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13535    pub s_type: StructureType,
13536    pub next: *mut c_void,
13537    pub border_color_swizzle: Bool32,
13538    pub border_color_swizzle_from_image: Bool32,
13539}
13540
13541impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13542    #[inline]
13543    fn default() -> Self {
13544        Self {
13545            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
13546            next: ptr::null_mut(),
13547            border_color_swizzle: Bool32::default(),
13548            border_color_swizzle_from_image: Bool32::default(),
13549        }
13550    }
13551}
13552
13553unsafe impl Send for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13554unsafe impl Sync for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13555
13556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
13557#[repr(C)]
13558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13559pub struct PhysicalDeviceBufferDeviceAddressFeatures {
13560    pub s_type: StructureType,
13561    pub next: *mut c_void,
13562    pub buffer_device_address: Bool32,
13563    pub buffer_device_address_capture_replay: Bool32,
13564    pub buffer_device_address_multi_device: Bool32,
13565}
13566
13567impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
13568    #[inline]
13569    fn default() -> Self {
13570        Self {
13571            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
13572            next: ptr::null_mut(),
13573            buffer_device_address: Bool32::default(),
13574            buffer_device_address_capture_replay: Bool32::default(),
13575            buffer_device_address_multi_device: Bool32::default(),
13576        }
13577    }
13578}
13579
13580unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeatures {}
13581unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeatures {}
13582
13583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
13584#[repr(C)]
13585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13586pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13587    pub s_type: StructureType,
13588    pub next: *mut c_void,
13589    pub buffer_device_address: Bool32,
13590    pub buffer_device_address_capture_replay: Bool32,
13591    pub buffer_device_address_multi_device: Bool32,
13592}
13593
13594impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13595    #[inline]
13596    fn default() -> Self {
13597        Self {
13598            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
13599            next: ptr::null_mut(),
13600            buffer_device_address: Bool32::default(),
13601            buffer_device_address_capture_replay: Bool32::default(),
13602            buffer_device_address_multi_device: Bool32::default(),
13603        }
13604    }
13605}
13606
13607unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13608unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13609
13610/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
13611#[repr(C)]
13612#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13613pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13614    pub s_type: StructureType,
13615    pub next: *mut c_void,
13616    pub cluster_acceleration_structure: Bool32,
13617}
13618
13619impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13620    #[inline]
13621    fn default() -> Self {
13622        Self {
13623            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
13624            next: ptr::null_mut(),
13625            cluster_acceleration_structure: Bool32::default(),
13626        }
13627    }
13628}
13629
13630unsafe impl Send for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13631unsafe impl Sync for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13632
13633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
13634#[repr(C)]
13635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13636pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13637    pub s_type: StructureType,
13638    pub next: *mut c_void,
13639    pub max_vertices_per_cluster: u32,
13640    pub max_triangles_per_cluster: u32,
13641    pub cluster_scratch_byte_alignment: u32,
13642    pub cluster_byte_alignment: u32,
13643    pub cluster_template_byte_alignment: u32,
13644    pub cluster_bottom_level_byte_alignment: u32,
13645    pub cluster_template_bounds_byte_alignment: u32,
13646    pub max_cluster_geometry_index: u32,
13647}
13648
13649impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13650    #[inline]
13651    fn default() -> Self {
13652        Self {
13653            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
13654            next: ptr::null_mut(),
13655            max_vertices_per_cluster: u32::default(),
13656            max_triangles_per_cluster: u32::default(),
13657            cluster_scratch_byte_alignment: u32::default(),
13658            cluster_byte_alignment: u32::default(),
13659            cluster_template_byte_alignment: u32::default(),
13660            cluster_bottom_level_byte_alignment: u32::default(),
13661            cluster_template_bounds_byte_alignment: u32::default(),
13662            max_cluster_geometry_index: u32::default(),
13663        }
13664    }
13665}
13666
13667unsafe impl Send for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13668unsafe impl Sync for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13669
13670/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
13671#[repr(C)]
13672#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13673pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13674    pub s_type: StructureType,
13675    pub next: *mut c_void,
13676    pub clusterculling_shader: Bool32,
13677    pub multiview_cluster_culling_shader: Bool32,
13678}
13679
13680impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13681    #[inline]
13682    fn default() -> Self {
13683        Self {
13684            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
13685            next: ptr::null_mut(),
13686            clusterculling_shader: Bool32::default(),
13687            multiview_cluster_culling_shader: Bool32::default(),
13688        }
13689    }
13690}
13691
13692unsafe impl Send for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13693unsafe impl Sync for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13694
13695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
13696#[repr(C)]
13697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13698pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13699    pub s_type: StructureType,
13700    pub next: *mut c_void,
13701    pub max_work_group_count: [u32; 3],
13702    pub max_work_group_size: [u32; 3],
13703    pub max_output_cluster_count: u32,
13704    pub indirect_buffer_offset_alignment: DeviceSize,
13705}
13706
13707impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13708    #[inline]
13709    fn default() -> Self {
13710        Self {
13711            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
13712            next: ptr::null_mut(),
13713            max_work_group_count: [u32::default(); 3],
13714            max_work_group_size: [u32::default(); 3],
13715            max_output_cluster_count: u32::default(),
13716            indirect_buffer_offset_alignment: DeviceSize::default(),
13717        }
13718    }
13719}
13720
13721unsafe impl Send for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13722unsafe impl Sync for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13723
13724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
13725#[repr(C)]
13726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13727pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13728    pub s_type: StructureType,
13729    pub next: *mut c_void,
13730    pub cluster_shading_rate: Bool32,
13731}
13732
13733impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13734    #[inline]
13735    fn default() -> Self {
13736        Self {
13737            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
13738            next: ptr::null_mut(),
13739            cluster_shading_rate: Bool32::default(),
13740        }
13741    }
13742}
13743
13744unsafe impl Send for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13745unsafe impl Sync for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13746
13747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
13748#[repr(C)]
13749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13750pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
13751    pub s_type: StructureType,
13752    pub next: *mut c_void,
13753    pub device_coherent_memory: Bool32,
13754}
13755
13756impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
13757    #[inline]
13758    fn default() -> Self {
13759        Self {
13760            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
13761            next: ptr::null_mut(),
13762            device_coherent_memory: Bool32::default(),
13763        }
13764    }
13765}
13766
13767unsafe impl Send for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13768unsafe impl Sync for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13769
13770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
13771#[repr(C)]
13772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13773pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
13774    pub s_type: StructureType,
13775    pub next: *mut c_void,
13776    pub color_write_enable: Bool32,
13777}
13778
13779impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
13780    #[inline]
13781    fn default() -> Self {
13782        Self {
13783            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
13784            next: ptr::null_mut(),
13785            color_write_enable: Bool32::default(),
13786        }
13787    }
13788}
13789
13790unsafe impl Send for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13791unsafe impl Sync for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13792
13793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
13794#[repr(C)]
13795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13796pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13797    pub s_type: StructureType,
13798    pub next: *mut c_void,
13799    pub command_buffer_inheritance: Bool32,
13800}
13801
13802impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13803    #[inline]
13804    fn default() -> Self {
13805        Self {
13806            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
13807            next: ptr::null_mut(),
13808            command_buffer_inheritance: Bool32::default(),
13809        }
13810    }
13811}
13812
13813unsafe impl Send for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13814unsafe impl Sync for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13815
13816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV.html>
13817#[repr(C)]
13818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13819pub struct PhysicalDeviceComputeOccupancyPriorityFeaturesNV {
13820    pub s_type: StructureType,
13821    pub next: *mut c_void,
13822    pub compute_occupancy_priority: Bool32,
13823}
13824
13825impl Default for PhysicalDeviceComputeOccupancyPriorityFeaturesNV {
13826    #[inline]
13827    fn default() -> Self {
13828        Self {
13829            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV,
13830            next: ptr::null_mut(),
13831            compute_occupancy_priority: Bool32::default(),
13832        }
13833    }
13834}
13835
13836unsafe impl Send for PhysicalDeviceComputeOccupancyPriorityFeaturesNV {}
13837unsafe impl Sync for PhysicalDeviceComputeOccupancyPriorityFeaturesNV {}
13838
13839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
13840#[repr(C)]
13841#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13842pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13843    pub s_type: StructureType,
13844    pub next: *mut c_void,
13845    pub compute_derivative_group_quads: Bool32,
13846    pub compute_derivative_group_linear: Bool32,
13847}
13848
13849impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13850    #[inline]
13851    fn default() -> Self {
13852        Self {
13853            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
13854            next: ptr::null_mut(),
13855            compute_derivative_group_quads: Bool32::default(),
13856            compute_derivative_group_linear: Bool32::default(),
13857        }
13858    }
13859}
13860
13861unsafe impl Send for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13862unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13863
13864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
13865#[repr(C)]
13866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13867pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13868    pub s_type: StructureType,
13869    pub next: *mut c_void,
13870    pub mesh_and_task_shader_derivatives: Bool32,
13871}
13872
13873impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13874    #[inline]
13875    fn default() -> Self {
13876        Self {
13877            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
13878            next: ptr::null_mut(),
13879            mesh_and_task_shader_derivatives: Bool32::default(),
13880        }
13881    }
13882}
13883
13884unsafe impl Send for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13885unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13886
13887/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
13888#[repr(C)]
13889#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13890pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
13891    pub s_type: StructureType,
13892    pub next: *mut c_void,
13893    pub conditional_rendering: Bool32,
13894    pub inherited_conditional_rendering: Bool32,
13895}
13896
13897impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
13898    #[inline]
13899    fn default() -> Self {
13900        Self {
13901            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
13902            next: ptr::null_mut(),
13903            conditional_rendering: Bool32::default(),
13904            inherited_conditional_rendering: Bool32::default(),
13905        }
13906    }
13907}
13908
13909unsafe impl Send for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13910unsafe impl Sync for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13911
13912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
13913#[repr(C)]
13914#[derive(Copy, Clone, Debug, PartialEq)]
13915pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
13916    pub s_type: StructureType,
13917    pub next: *mut c_void,
13918    pub primitive_overestimation_size: f32,
13919    pub max_extra_primitive_overestimation_size: f32,
13920    pub extra_primitive_overestimation_size_granularity: f32,
13921    pub primitive_underestimation: Bool32,
13922    pub conservative_point_and_line_rasterization: Bool32,
13923    pub degenerate_triangles_rasterized: Bool32,
13924    pub degenerate_lines_rasterized: Bool32,
13925    pub fully_covered_fragment_shader_input_variable: Bool32,
13926    pub conservative_rasterization_post_depth_coverage: Bool32,
13927}
13928
13929impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
13930    #[inline]
13931    fn default() -> Self {
13932        Self {
13933            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
13934            next: ptr::null_mut(),
13935            primitive_overestimation_size: f32::default(),
13936            max_extra_primitive_overestimation_size: f32::default(),
13937            extra_primitive_overestimation_size_granularity: f32::default(),
13938            primitive_underestimation: Bool32::default(),
13939            conservative_point_and_line_rasterization: Bool32::default(),
13940            degenerate_triangles_rasterized: Bool32::default(),
13941            degenerate_lines_rasterized: Bool32::default(),
13942            fully_covered_fragment_shader_input_variable: Bool32::default(),
13943            conservative_rasterization_post_depth_coverage: Bool32::default(),
13944        }
13945    }
13946}
13947
13948unsafe impl Send for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13949unsafe impl Sync for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13950
13951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
13952#[repr(C)]
13953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13954pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
13955    pub s_type: StructureType,
13956    pub next: *mut c_void,
13957    pub cooperative_matrix_workgroup_scope: Bool32,
13958    pub cooperative_matrix_flexible_dimensions: Bool32,
13959    pub cooperative_matrix_reductions: Bool32,
13960    pub cooperative_matrix_conversions: Bool32,
13961    pub cooperative_matrix_per_element_operations: Bool32,
13962    pub cooperative_matrix_tensor_addressing: Bool32,
13963    pub cooperative_matrix_block_loads: Bool32,
13964}
13965
13966impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
13967    #[inline]
13968    fn default() -> Self {
13969        Self {
13970            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
13971            next: ptr::null_mut(),
13972            cooperative_matrix_workgroup_scope: Bool32::default(),
13973            cooperative_matrix_flexible_dimensions: Bool32::default(),
13974            cooperative_matrix_reductions: Bool32::default(),
13975            cooperative_matrix_conversions: Bool32::default(),
13976            cooperative_matrix_per_element_operations: Bool32::default(),
13977            cooperative_matrix_tensor_addressing: Bool32::default(),
13978            cooperative_matrix_block_loads: Bool32::default(),
13979        }
13980    }
13981}
13982
13983unsafe impl Send for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13984unsafe impl Sync for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13985
13986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
13987#[repr(C)]
13988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13989pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
13990    pub s_type: StructureType,
13991    pub next: *mut c_void,
13992    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
13993    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
13994    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
13995}
13996
13997impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
13998    #[inline]
13999    fn default() -> Self {
14000        Self {
14001            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
14002            next: ptr::null_mut(),
14003            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
14004            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
14005            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
14006        }
14007    }
14008}
14009
14010unsafe impl Send for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
14011unsafe impl Sync for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
14012
14013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
14014#[repr(C)]
14015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14016pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
14017    pub s_type: StructureType,
14018    pub next: *mut c_void,
14019    pub cooperative_matrix: Bool32,
14020    pub cooperative_matrix_robust_buffer_access: Bool32,
14021}
14022
14023impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
14024    #[inline]
14025    fn default() -> Self {
14026        Self {
14027            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
14028            next: ptr::null_mut(),
14029            cooperative_matrix: Bool32::default(),
14030            cooperative_matrix_robust_buffer_access: Bool32::default(),
14031        }
14032    }
14033}
14034
14035unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
14036unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
14037
14038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
14039#[repr(C)]
14040#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14041pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
14042    pub s_type: StructureType,
14043    pub next: *mut c_void,
14044    pub cooperative_matrix: Bool32,
14045    pub cooperative_matrix_robust_buffer_access: Bool32,
14046}
14047
14048impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
14049    #[inline]
14050    fn default() -> Self {
14051        Self {
14052            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
14053            next: ptr::null_mut(),
14054            cooperative_matrix: Bool32::default(),
14055            cooperative_matrix_robust_buffer_access: Bool32::default(),
14056        }
14057    }
14058}
14059
14060unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesNV {}
14061unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesNV {}
14062
14063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
14064#[repr(C)]
14065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14066pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
14067    pub s_type: StructureType,
14068    pub next: *mut c_void,
14069    pub cooperative_matrix_supported_stages: ShaderStageFlags,
14070}
14071
14072impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
14073    #[inline]
14074    fn default() -> Self {
14075        Self {
14076            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
14077            next: ptr::null_mut(),
14078            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
14079        }
14080    }
14081}
14082
14083unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
14084unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
14085
14086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
14087#[repr(C)]
14088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14089pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
14090    pub s_type: StructureType,
14091    pub next: *mut c_void,
14092    pub cooperative_matrix_supported_stages: ShaderStageFlags,
14093}
14094
14095impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
14096    #[inline]
14097    fn default() -> Self {
14098        Self {
14099            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
14100            next: ptr::null_mut(),
14101            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
14102        }
14103    }
14104}
14105
14106unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesNV {}
14107unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesNV {}
14108
14109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
14110#[repr(C)]
14111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14112pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
14113    pub s_type: StructureType,
14114    pub next: *mut c_void,
14115    pub cooperative_vector: Bool32,
14116    pub cooperative_vector_training: Bool32,
14117}
14118
14119impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
14120    #[inline]
14121    fn default() -> Self {
14122        Self {
14123            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
14124            next: ptr::null_mut(),
14125            cooperative_vector: Bool32::default(),
14126            cooperative_vector_training: Bool32::default(),
14127        }
14128    }
14129}
14130
14131unsafe impl Send for PhysicalDeviceCooperativeVectorFeaturesNV {}
14132unsafe impl Sync for PhysicalDeviceCooperativeVectorFeaturesNV {}
14133
14134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
14135#[repr(C)]
14136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14137pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
14138    pub s_type: StructureType,
14139    pub next: *mut c_void,
14140    pub cooperative_vector_supported_stages: ShaderStageFlags,
14141    pub cooperative_vector_training_float16_accumulation: Bool32,
14142    pub cooperative_vector_training_float32_accumulation: Bool32,
14143    pub max_cooperative_vector_components: u32,
14144}
14145
14146impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
14147    #[inline]
14148    fn default() -> Self {
14149        Self {
14150            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
14151            next: ptr::null_mut(),
14152            cooperative_vector_supported_stages: ShaderStageFlags::default(),
14153            cooperative_vector_training_float16_accumulation: Bool32::default(),
14154            cooperative_vector_training_float32_accumulation: Bool32::default(),
14155            max_cooperative_vector_components: u32::default(),
14156        }
14157    }
14158}
14159
14160unsafe impl Send for PhysicalDeviceCooperativeVectorPropertiesNV {}
14161unsafe impl Sync for PhysicalDeviceCooperativeVectorPropertiesNV {}
14162
14163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR.html>
14164#[repr(C)]
14165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14166pub struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
14167    pub s_type: StructureType,
14168    pub next: *mut c_void,
14169    pub indirect_memory_copy: Bool32,
14170    pub indirect_memory_to_image_copy: Bool32,
14171}
14172
14173impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
14174    #[inline]
14175    fn default() -> Self {
14176        Self {
14177            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR,
14178            next: ptr::null_mut(),
14179            indirect_memory_copy: Bool32::default(),
14180            indirect_memory_to_image_copy: Bool32::default(),
14181        }
14182    }
14183}
14184
14185unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
14186unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
14187
14188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
14189#[repr(C)]
14190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14191pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14192    pub s_type: StructureType,
14193    pub next: *mut c_void,
14194    pub indirect_copy: Bool32,
14195}
14196
14197impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14198    #[inline]
14199    fn default() -> Self {
14200        Self {
14201            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
14202            next: ptr::null_mut(),
14203            indirect_copy: Bool32::default(),
14204        }
14205    }
14206}
14207
14208unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14209unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14210
14211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR.html>
14212#[repr(C)]
14213#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14214pub struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14215    pub s_type: StructureType,
14216    pub next: *mut c_void,
14217    pub supported_queues: QueueFlags,
14218}
14219
14220impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14221    #[inline]
14222    fn default() -> Self {
14223        Self {
14224            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR,
14225            next: ptr::null_mut(),
14226            supported_queues: QueueFlags::default(),
14227        }
14228    }
14229}
14230
14231unsafe impl Send for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14232unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14233
14234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
14235#[repr(C)]
14236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14237pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
14238    pub s_type: StructureType,
14239    pub next: *mut c_void,
14240    pub corner_sampled_image: Bool32,
14241}
14242
14243impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
14244    #[inline]
14245    fn default() -> Self {
14246        Self {
14247            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
14248            next: ptr::null_mut(),
14249            corner_sampled_image: Bool32::default(),
14250        }
14251    }
14252}
14253
14254unsafe impl Send for PhysicalDeviceCornerSampledImageFeaturesNV {}
14255unsafe impl Sync for PhysicalDeviceCornerSampledImageFeaturesNV {}
14256
14257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
14258#[repr(C)]
14259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14260pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
14261    pub s_type: StructureType,
14262    pub next: *mut c_void,
14263    pub coverage_reduction_mode: Bool32,
14264}
14265
14266impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
14267    #[inline]
14268    fn default() -> Self {
14269        Self {
14270            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
14271            next: ptr::null_mut(),
14272            coverage_reduction_mode: Bool32::default(),
14273        }
14274    }
14275}
14276
14277unsafe impl Send for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14278unsafe impl Sync for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14279
14280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
14281#[repr(C)]
14282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14283pub struct PhysicalDeviceCubicClampFeaturesQCOM {
14284    pub s_type: StructureType,
14285    pub next: *mut c_void,
14286    pub cubic_range_clamp: Bool32,
14287}
14288
14289impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
14290    #[inline]
14291    fn default() -> Self {
14292        Self {
14293            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
14294            next: ptr::null_mut(),
14295            cubic_range_clamp: Bool32::default(),
14296        }
14297    }
14298}
14299
14300unsafe impl Send for PhysicalDeviceCubicClampFeaturesQCOM {}
14301unsafe impl Sync for PhysicalDeviceCubicClampFeaturesQCOM {}
14302
14303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
14304#[repr(C)]
14305#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14306pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
14307    pub s_type: StructureType,
14308    pub next: *mut c_void,
14309    pub selectable_cubic_weights: Bool32,
14310}
14311
14312impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
14313    #[inline]
14314    fn default() -> Self {
14315        Self {
14316            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
14317            next: ptr::null_mut(),
14318            selectable_cubic_weights: Bool32::default(),
14319        }
14320    }
14321}
14322
14323unsafe impl Send for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14324unsafe impl Sync for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14325
14326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
14327#[repr(C)]
14328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14329pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
14330    pub s_type: StructureType,
14331    pub next: *mut c_void,
14332    pub cuda_kernel_launch_features: Bool32,
14333}
14334
14335impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
14336    #[inline]
14337    fn default() -> Self {
14338        Self {
14339            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
14340            next: ptr::null_mut(),
14341            cuda_kernel_launch_features: Bool32::default(),
14342        }
14343    }
14344}
14345
14346unsafe impl Send for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14347unsafe impl Sync for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14348
14349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
14350#[repr(C)]
14351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14352pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
14353    pub s_type: StructureType,
14354    pub next: *mut c_void,
14355    pub compute_capability_minor: u32,
14356    pub compute_capability_major: u32,
14357}
14358
14359impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
14360    #[inline]
14361    fn default() -> Self {
14362        Self {
14363            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
14364            next: ptr::null_mut(),
14365            compute_capability_minor: u32::default(),
14366            compute_capability_major: u32::default(),
14367        }
14368    }
14369}
14370
14371unsafe impl Send for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14372unsafe impl Sync for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14373
14374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
14375#[repr(C)]
14376#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14377pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
14378    pub s_type: StructureType,
14379    pub next: *mut c_void,
14380    pub custom_border_colors: Bool32,
14381    pub custom_border_color_without_format: Bool32,
14382}
14383
14384impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
14385    #[inline]
14386    fn default() -> Self {
14387        Self {
14388            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
14389            next: ptr::null_mut(),
14390            custom_border_colors: Bool32::default(),
14391            custom_border_color_without_format: Bool32::default(),
14392        }
14393    }
14394}
14395
14396unsafe impl Send for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14397unsafe impl Sync for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14398
14399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
14400#[repr(C)]
14401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14402pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
14403    pub s_type: StructureType,
14404    pub next: *mut c_void,
14405    pub max_custom_border_color_samplers: u32,
14406}
14407
14408impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
14409    #[inline]
14410    fn default() -> Self {
14411        Self {
14412            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
14413            next: ptr::null_mut(),
14414            max_custom_border_color_samplers: u32::default(),
14415        }
14416    }
14417}
14418
14419unsafe impl Send for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14420unsafe impl Sync for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14421
14422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomResolveFeaturesEXT.html>
14423#[repr(C)]
14424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14425pub struct PhysicalDeviceCustomResolveFeaturesEXT {
14426    pub s_type: StructureType,
14427    pub next: *mut c_void,
14428    pub custom_resolve: Bool32,
14429}
14430
14431impl Default for PhysicalDeviceCustomResolveFeaturesEXT {
14432    #[inline]
14433    fn default() -> Self {
14434        Self {
14435            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT,
14436            next: ptr::null_mut(),
14437            custom_resolve: Bool32::default(),
14438        }
14439    }
14440}
14441
14442unsafe impl Send for PhysicalDeviceCustomResolveFeaturesEXT {}
14443unsafe impl Sync for PhysicalDeviceCustomResolveFeaturesEXT {}
14444
14445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html>
14446#[repr(C)]
14447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14448pub struct PhysicalDeviceDataGraphFeaturesARM {
14449    pub s_type: StructureType,
14450    pub next: *mut c_void,
14451    pub data_graph: Bool32,
14452    pub data_graph_update_after_bind: Bool32,
14453    pub data_graph_specialization_constants: Bool32,
14454    pub data_graph_descriptor_buffer: Bool32,
14455    pub data_graph_shader_module: Bool32,
14456}
14457
14458impl Default for PhysicalDeviceDataGraphFeaturesARM {
14459    #[inline]
14460    fn default() -> Self {
14461        Self {
14462            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM,
14463            next: ptr::null_mut(),
14464            data_graph: Bool32::default(),
14465            data_graph_update_after_bind: Bool32::default(),
14466            data_graph_specialization_constants: Bool32::default(),
14467            data_graph_descriptor_buffer: Bool32::default(),
14468            data_graph_shader_module: Bool32::default(),
14469        }
14470    }
14471}
14472
14473unsafe impl Send for PhysicalDeviceDataGraphFeaturesARM {}
14474unsafe impl Sync for PhysicalDeviceDataGraphFeaturesARM {}
14475
14476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphModelFeaturesQCOM.html>
14477#[repr(C)]
14478#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14479pub struct PhysicalDeviceDataGraphModelFeaturesQCOM {
14480    pub s_type: StructureType,
14481    pub next: *mut c_void,
14482    pub data_graph_model: Bool32,
14483}
14484
14485impl Default for PhysicalDeviceDataGraphModelFeaturesQCOM {
14486    #[inline]
14487    fn default() -> Self {
14488        Self {
14489            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM,
14490            next: ptr::null_mut(),
14491            data_graph_model: Bool32::default(),
14492        }
14493    }
14494}
14495
14496unsafe impl Send for PhysicalDeviceDataGraphModelFeaturesQCOM {}
14497unsafe impl Sync for PhysicalDeviceDataGraphModelFeaturesQCOM {}
14498
14499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html>
14500#[repr(C)]
14501#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14502pub struct PhysicalDeviceDataGraphOperationSupportARM {
14503    pub operation_type: PhysicalDeviceDataGraphOperationTypeARM,
14504    pub name: StringArray<MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM>,
14505    pub version: u32,
14506}
14507
14508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html>
14509#[repr(C)]
14510#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14511pub struct PhysicalDeviceDataGraphProcessingEngineARM {
14512    pub type_: PhysicalDeviceDataGraphProcessingEngineTypeARM,
14513    pub is_foreign: Bool32,
14514}
14515
14516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
14517#[repr(C)]
14518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14519pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14520    pub s_type: StructureType,
14521    pub next: *mut c_void,
14522    pub dedicated_allocation_image_aliasing: Bool32,
14523}
14524
14525impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14526    #[inline]
14527    fn default() -> Self {
14528        Self {
14529            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
14530            next: ptr::null_mut(),
14531            dedicated_allocation_image_aliasing: Bool32::default(),
14532        }
14533    }
14534}
14535
14536unsafe impl Send for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14537unsafe impl Sync for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14538
14539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX.html>
14540#[repr(C)]
14541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14542pub struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14543    pub s_type: StructureType,
14544    pub next: *mut c_void,
14545    pub dense_geometry_format: Bool32,
14546}
14547
14548impl Default for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14549    #[inline]
14550    fn default() -> Self {
14551        Self {
14552            s_type: StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX,
14553            next: ptr::null_mut(),
14554            dense_geometry_format: Bool32::default(),
14555        }
14556    }
14557}
14558
14559unsafe impl Send for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14560unsafe impl Sync for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14561
14562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
14563#[repr(C)]
14564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14565pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
14566    pub s_type: StructureType,
14567    pub next: *mut c_void,
14568    pub depth_bias_control: Bool32,
14569    pub least_representable_value_force_unorm_representation: Bool32,
14570    pub float_representation: Bool32,
14571    pub depth_bias_exact: Bool32,
14572}
14573
14574impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
14575    #[inline]
14576    fn default() -> Self {
14577        Self {
14578            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
14579            next: ptr::null_mut(),
14580            depth_bias_control: Bool32::default(),
14581            least_representable_value_force_unorm_representation: Bool32::default(),
14582            float_representation: Bool32::default(),
14583            depth_bias_exact: Bool32::default(),
14584        }
14585    }
14586}
14587
14588unsafe impl Send for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14589unsafe impl Sync for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14590
14591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
14592#[repr(C)]
14593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14594pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
14595    pub s_type: StructureType,
14596    pub next: *mut c_void,
14597    pub depth_clamp_control: Bool32,
14598}
14599
14600impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
14601    #[inline]
14602    fn default() -> Self {
14603        Self {
14604            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
14605            next: ptr::null_mut(),
14606            depth_clamp_control: Bool32::default(),
14607        }
14608    }
14609}
14610
14611unsafe impl Send for PhysicalDeviceDepthClampControlFeaturesEXT {}
14612unsafe impl Sync for PhysicalDeviceDepthClampControlFeaturesEXT {}
14613
14614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
14615#[repr(C)]
14616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14617pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14618    pub s_type: StructureType,
14619    pub next: *mut c_void,
14620    pub depth_clamp_zero_one: Bool32,
14621}
14622
14623impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14624    #[inline]
14625    fn default() -> Self {
14626        Self {
14627            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
14628            next: ptr::null_mut(),
14629            depth_clamp_zero_one: Bool32::default(),
14630        }
14631    }
14632}
14633
14634unsafe impl Send for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14635unsafe impl Sync for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14636
14637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
14638#[repr(C)]
14639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14640pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
14641    pub s_type: StructureType,
14642    pub next: *mut c_void,
14643    pub depth_clip_control: Bool32,
14644}
14645
14646impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
14647    #[inline]
14648    fn default() -> Self {
14649        Self {
14650            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
14651            next: ptr::null_mut(),
14652            depth_clip_control: Bool32::default(),
14653        }
14654    }
14655}
14656
14657unsafe impl Send for PhysicalDeviceDepthClipControlFeaturesEXT {}
14658unsafe impl Sync for PhysicalDeviceDepthClipControlFeaturesEXT {}
14659
14660/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
14661#[repr(C)]
14662#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14663pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
14664    pub s_type: StructureType,
14665    pub next: *mut c_void,
14666    pub depth_clip_enable: Bool32,
14667}
14668
14669impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
14670    #[inline]
14671    fn default() -> Self {
14672        Self {
14673            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
14674            next: ptr::null_mut(),
14675            depth_clip_enable: Bool32::default(),
14676        }
14677    }
14678}
14679
14680unsafe impl Send for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14681unsafe impl Sync for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14682
14683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
14684#[repr(C)]
14685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14686pub struct PhysicalDeviceDepthStencilResolveProperties {
14687    pub s_type: StructureType,
14688    pub next: *mut c_void,
14689    pub supported_depth_resolve_modes: ResolveModeFlags,
14690    pub supported_stencil_resolve_modes: ResolveModeFlags,
14691    pub independent_resolve_none: Bool32,
14692    pub independent_resolve: Bool32,
14693}
14694
14695impl Default for PhysicalDeviceDepthStencilResolveProperties {
14696    #[inline]
14697    fn default() -> Self {
14698        Self {
14699            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
14700            next: ptr::null_mut(),
14701            supported_depth_resolve_modes: ResolveModeFlags::default(),
14702            supported_stencil_resolve_modes: ResolveModeFlags::default(),
14703            independent_resolve_none: Bool32::default(),
14704            independent_resolve: Bool32::default(),
14705        }
14706    }
14707}
14708
14709unsafe impl Send for PhysicalDeviceDepthStencilResolveProperties {}
14710unsafe impl Sync for PhysicalDeviceDepthStencilResolveProperties {}
14711
14712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
14713#[repr(C)]
14714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14715pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14716    pub s_type: StructureType,
14717    pub next: *mut c_void,
14718    pub combined_image_sampler_density_map_descriptor_size: usize,
14719}
14720
14721impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14722    #[inline]
14723    fn default() -> Self {
14724        Self {
14725            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
14726            next: ptr::null_mut(),
14727            combined_image_sampler_density_map_descriptor_size: usize::default(),
14728        }
14729    }
14730}
14731
14732unsafe impl Send for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14733unsafe impl Sync for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14734
14735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
14736#[repr(C)]
14737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14738pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
14739    pub s_type: StructureType,
14740    pub next: *mut c_void,
14741    pub descriptor_buffer: Bool32,
14742    pub descriptor_buffer_capture_replay: Bool32,
14743    pub descriptor_buffer_image_layout_ignored: Bool32,
14744    pub descriptor_buffer_push_descriptors: Bool32,
14745}
14746
14747impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
14748    #[inline]
14749    fn default() -> Self {
14750        Self {
14751            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
14752            next: ptr::null_mut(),
14753            descriptor_buffer: Bool32::default(),
14754            descriptor_buffer_capture_replay: Bool32::default(),
14755            descriptor_buffer_image_layout_ignored: Bool32::default(),
14756            descriptor_buffer_push_descriptors: Bool32::default(),
14757        }
14758    }
14759}
14760
14761unsafe impl Send for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14762unsafe impl Sync for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14763
14764/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
14765#[repr(C)]
14766#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14767pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
14768    pub s_type: StructureType,
14769    pub next: *mut c_void,
14770    pub combined_image_sampler_descriptor_single_array: Bool32,
14771    pub bufferless_push_descriptors: Bool32,
14772    pub allow_sampler_image_view_post_submit_creation: Bool32,
14773    pub descriptor_buffer_offset_alignment: DeviceSize,
14774    pub max_descriptor_buffer_bindings: u32,
14775    pub max_resource_descriptor_buffer_bindings: u32,
14776    pub max_sampler_descriptor_buffer_bindings: u32,
14777    pub max_embedded_immutable_sampler_bindings: u32,
14778    pub max_embedded_immutable_samplers: u32,
14779    pub buffer_capture_replay_descriptor_data_size: usize,
14780    pub image_capture_replay_descriptor_data_size: usize,
14781    pub image_view_capture_replay_descriptor_data_size: usize,
14782    pub sampler_capture_replay_descriptor_data_size: usize,
14783    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
14784    pub sampler_descriptor_size: usize,
14785    pub combined_image_sampler_descriptor_size: usize,
14786    pub sampled_image_descriptor_size: usize,
14787    pub storage_image_descriptor_size: usize,
14788    pub uniform_texel_buffer_descriptor_size: usize,
14789    pub robust_uniform_texel_buffer_descriptor_size: usize,
14790    pub storage_texel_buffer_descriptor_size: usize,
14791    pub robust_storage_texel_buffer_descriptor_size: usize,
14792    pub uniform_buffer_descriptor_size: usize,
14793    pub robust_uniform_buffer_descriptor_size: usize,
14794    pub storage_buffer_descriptor_size: usize,
14795    pub robust_storage_buffer_descriptor_size: usize,
14796    pub input_attachment_descriptor_size: usize,
14797    pub acceleration_structure_descriptor_size: usize,
14798    pub max_sampler_descriptor_buffer_range: DeviceSize,
14799    pub max_resource_descriptor_buffer_range: DeviceSize,
14800    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
14801    pub resource_descriptor_buffer_address_space_size: DeviceSize,
14802    pub descriptor_buffer_address_space_size: DeviceSize,
14803}
14804
14805impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
14806    #[inline]
14807    fn default() -> Self {
14808        Self {
14809            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
14810            next: ptr::null_mut(),
14811            combined_image_sampler_descriptor_single_array: Bool32::default(),
14812            bufferless_push_descriptors: Bool32::default(),
14813            allow_sampler_image_view_post_submit_creation: Bool32::default(),
14814            descriptor_buffer_offset_alignment: DeviceSize::default(),
14815            max_descriptor_buffer_bindings: u32::default(),
14816            max_resource_descriptor_buffer_bindings: u32::default(),
14817            max_sampler_descriptor_buffer_bindings: u32::default(),
14818            max_embedded_immutable_sampler_bindings: u32::default(),
14819            max_embedded_immutable_samplers: u32::default(),
14820            buffer_capture_replay_descriptor_data_size: usize::default(),
14821            image_capture_replay_descriptor_data_size: usize::default(),
14822            image_view_capture_replay_descriptor_data_size: usize::default(),
14823            sampler_capture_replay_descriptor_data_size: usize::default(),
14824            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
14825            sampler_descriptor_size: usize::default(),
14826            combined_image_sampler_descriptor_size: usize::default(),
14827            sampled_image_descriptor_size: usize::default(),
14828            storage_image_descriptor_size: usize::default(),
14829            uniform_texel_buffer_descriptor_size: usize::default(),
14830            robust_uniform_texel_buffer_descriptor_size: usize::default(),
14831            storage_texel_buffer_descriptor_size: usize::default(),
14832            robust_storage_texel_buffer_descriptor_size: usize::default(),
14833            uniform_buffer_descriptor_size: usize::default(),
14834            robust_uniform_buffer_descriptor_size: usize::default(),
14835            storage_buffer_descriptor_size: usize::default(),
14836            robust_storage_buffer_descriptor_size: usize::default(),
14837            input_attachment_descriptor_size: usize::default(),
14838            acceleration_structure_descriptor_size: usize::default(),
14839            max_sampler_descriptor_buffer_range: DeviceSize::default(),
14840            max_resource_descriptor_buffer_range: DeviceSize::default(),
14841            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
14842            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
14843            descriptor_buffer_address_space_size: DeviceSize::default(),
14844        }
14845    }
14846}
14847
14848unsafe impl Send for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14849unsafe impl Sync for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14850
14851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html>
14852#[repr(C)]
14853#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14854pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14855    pub s_type: StructureType,
14856    pub next: *mut c_void,
14857    pub descriptor_buffer_tensor_descriptors: Bool32,
14858}
14859
14860impl Default for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14861    #[inline]
14862    fn default() -> Self {
14863        Self {
14864            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM,
14865            next: ptr::null_mut(),
14866            descriptor_buffer_tensor_descriptors: Bool32::default(),
14867        }
14868    }
14869}
14870
14871unsafe impl Send for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14872unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14873
14874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html>
14875#[repr(C)]
14876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14877pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14878    pub s_type: StructureType,
14879    pub next: *mut c_void,
14880    pub tensor_capture_replay_descriptor_data_size: usize,
14881    pub tensor_view_capture_replay_descriptor_data_size: usize,
14882    pub tensor_descriptor_size: usize,
14883}
14884
14885impl Default for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14886    #[inline]
14887    fn default() -> Self {
14888        Self {
14889            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM,
14890            next: ptr::null_mut(),
14891            tensor_capture_replay_descriptor_data_size: usize::default(),
14892            tensor_view_capture_replay_descriptor_data_size: usize::default(),
14893            tensor_descriptor_size: usize::default(),
14894        }
14895    }
14896}
14897
14898unsafe impl Send for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14899unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14900
14901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
14902#[repr(C)]
14903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14904pub struct PhysicalDeviceDescriptorIndexingFeatures {
14905    pub s_type: StructureType,
14906    pub next: *mut c_void,
14907    pub shader_input_attachment_array_dynamic_indexing: Bool32,
14908    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
14909    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
14910    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
14911    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
14912    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
14913    pub shader_storage_image_array_non_uniform_indexing: Bool32,
14914    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
14915    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
14916    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
14917    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
14918    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
14919    pub descriptor_binding_storage_image_update_after_bind: Bool32,
14920    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
14921    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
14922    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
14923    pub descriptor_binding_update_unused_while_pending: Bool32,
14924    pub descriptor_binding_partially_bound: Bool32,
14925    pub descriptor_binding_variable_descriptor_count: Bool32,
14926    pub runtime_descriptor_array: Bool32,
14927}
14928
14929impl Default for PhysicalDeviceDescriptorIndexingFeatures {
14930    #[inline]
14931    fn default() -> Self {
14932        Self {
14933            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
14934            next: ptr::null_mut(),
14935            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
14936            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
14937            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
14938            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
14939            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
14940            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
14941            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
14942            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
14943            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14944            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14945            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
14946            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
14947            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
14948            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
14949            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
14950            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
14951            descriptor_binding_update_unused_while_pending: Bool32::default(),
14952            descriptor_binding_partially_bound: Bool32::default(),
14953            descriptor_binding_variable_descriptor_count: Bool32::default(),
14954            runtime_descriptor_array: Bool32::default(),
14955        }
14956    }
14957}
14958
14959unsafe impl Send for PhysicalDeviceDescriptorIndexingFeatures {}
14960unsafe impl Sync for PhysicalDeviceDescriptorIndexingFeatures {}
14961
14962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
14963#[repr(C)]
14964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14965pub struct PhysicalDeviceDescriptorIndexingProperties {
14966    pub s_type: StructureType,
14967    pub next: *mut c_void,
14968    pub max_update_after_bind_descriptors_in_all_pools: u32,
14969    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
14970    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
14971    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
14972    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
14973    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
14974    pub robust_buffer_access_update_after_bind: Bool32,
14975    pub quad_divergent_implicit_lod: Bool32,
14976    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
14977    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
14978    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
14979    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
14980    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
14981    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
14982    pub max_per_stage_update_after_bind_resources: u32,
14983    pub max_descriptor_set_update_after_bind_samplers: u32,
14984    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
14985    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
14986    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
14987    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
14988    pub max_descriptor_set_update_after_bind_sampled_images: u32,
14989    pub max_descriptor_set_update_after_bind_storage_images: u32,
14990    pub max_descriptor_set_update_after_bind_input_attachments: u32,
14991}
14992
14993impl Default for PhysicalDeviceDescriptorIndexingProperties {
14994    #[inline]
14995    fn default() -> Self {
14996        Self {
14997            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
14998            next: ptr::null_mut(),
14999            max_update_after_bind_descriptors_in_all_pools: u32::default(),
15000            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
15001            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
15002            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
15003            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
15004            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
15005            robust_buffer_access_update_after_bind: Bool32::default(),
15006            quad_divergent_implicit_lod: Bool32::default(),
15007            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
15008            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
15009            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
15010            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
15011            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
15012            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
15013            max_per_stage_update_after_bind_resources: u32::default(),
15014            max_descriptor_set_update_after_bind_samplers: u32::default(),
15015            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
15016            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
15017            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
15018            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
15019            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
15020            max_descriptor_set_update_after_bind_storage_images: u32::default(),
15021            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
15022        }
15023    }
15024}
15025
15026unsafe impl Send for PhysicalDeviceDescriptorIndexingProperties {}
15027unsafe impl Sync for PhysicalDeviceDescriptorIndexingProperties {}
15028
15029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
15030#[repr(C)]
15031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15032pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
15033    pub s_type: StructureType,
15034    pub next: *mut c_void,
15035    pub descriptor_pool_overallocation: Bool32,
15036}
15037
15038impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
15039    #[inline]
15040    fn default() -> Self {
15041        Self {
15042            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
15043            next: ptr::null_mut(),
15044            descriptor_pool_overallocation: Bool32::default(),
15045        }
15046    }
15047}
15048
15049unsafe impl Send for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
15050unsafe impl Sync for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
15051
15052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
15053#[repr(C)]
15054#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15055pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
15056    pub s_type: StructureType,
15057    pub next: *mut c_void,
15058    pub descriptor_set_host_mapping: Bool32,
15059}
15060
15061impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
15062    #[inline]
15063    fn default() -> Self {
15064        Self {
15065            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
15066            next: ptr::null_mut(),
15067            descriptor_set_host_mapping: Bool32::default(),
15068        }
15069    }
15070}
15071
15072unsafe impl Send for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
15073unsafe impl Sync for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
15074
15075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
15076#[repr(C)]
15077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15078pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
15079    pub s_type: StructureType,
15080    pub next: *mut c_void,
15081    pub device_generated_compute: Bool32,
15082    pub device_generated_compute_pipelines: Bool32,
15083    pub device_generated_compute_capture_replay: Bool32,
15084}
15085
15086impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
15087    #[inline]
15088    fn default() -> Self {
15089        Self {
15090            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
15091            next: ptr::null_mut(),
15092            device_generated_compute: Bool32::default(),
15093            device_generated_compute_pipelines: Bool32::default(),
15094            device_generated_compute_capture_replay: Bool32::default(),
15095        }
15096    }
15097}
15098
15099unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
15100unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
15101
15102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
15103#[repr(C)]
15104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15105pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
15106    pub s_type: StructureType,
15107    pub next: *mut c_void,
15108    pub device_generated_commands: Bool32,
15109    pub dynamic_generated_pipeline_layout: Bool32,
15110}
15111
15112impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
15113    #[inline]
15114    fn default() -> Self {
15115        Self {
15116            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
15117            next: ptr::null_mut(),
15118            device_generated_commands: Bool32::default(),
15119            dynamic_generated_pipeline_layout: Bool32::default(),
15120        }
15121    }
15122}
15123
15124unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
15125unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
15126
15127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
15128#[repr(C)]
15129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15130pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
15131    pub s_type: StructureType,
15132    pub next: *mut c_void,
15133    pub device_generated_commands: Bool32,
15134}
15135
15136impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
15137    #[inline]
15138    fn default() -> Self {
15139        Self {
15140            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
15141            next: ptr::null_mut(),
15142            device_generated_commands: Bool32::default(),
15143        }
15144    }
15145}
15146
15147unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
15148unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
15149
15150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
15151#[repr(C)]
15152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15153pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
15154    pub s_type: StructureType,
15155    pub next: *mut c_void,
15156    pub max_indirect_pipeline_count: u32,
15157    pub max_indirect_shader_object_count: u32,
15158    pub max_indirect_sequence_count: u32,
15159    pub max_indirect_commands_token_count: u32,
15160    pub max_indirect_commands_token_offset: u32,
15161    pub max_indirect_commands_indirect_stride: u32,
15162    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
15163    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
15164    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
15165    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
15166    pub device_generated_commands_transform_feedback: Bool32,
15167    pub device_generated_commands_multi_draw_indirect_count: Bool32,
15168}
15169
15170impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
15171    #[inline]
15172    fn default() -> Self {
15173        Self {
15174            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
15175            next: ptr::null_mut(),
15176            max_indirect_pipeline_count: u32::default(),
15177            max_indirect_shader_object_count: u32::default(),
15178            max_indirect_sequence_count: u32::default(),
15179            max_indirect_commands_token_count: u32::default(),
15180            max_indirect_commands_token_offset: u32::default(),
15181            max_indirect_commands_indirect_stride: u32::default(),
15182            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
15183            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
15184            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
15185            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
15186            device_generated_commands_transform_feedback: Bool32::default(),
15187            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
15188        }
15189    }
15190}
15191
15192unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
15193unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
15194
15195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
15196#[repr(C)]
15197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15198pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15199    pub s_type: StructureType,
15200    pub next: *mut c_void,
15201    pub max_graphics_shader_group_count: u32,
15202    pub max_indirect_sequence_count: u32,
15203    pub max_indirect_commands_token_count: u32,
15204    pub max_indirect_commands_stream_count: u32,
15205    pub max_indirect_commands_token_offset: u32,
15206    pub max_indirect_commands_stream_stride: u32,
15207    pub min_sequences_count_buffer_offset_alignment: u32,
15208    pub min_sequences_index_buffer_offset_alignment: u32,
15209    pub min_indirect_commands_buffer_offset_alignment: u32,
15210}
15211
15212impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15213    #[inline]
15214    fn default() -> Self {
15215        Self {
15216            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
15217            next: ptr::null_mut(),
15218            max_graphics_shader_group_count: u32::default(),
15219            max_indirect_sequence_count: u32::default(),
15220            max_indirect_commands_token_count: u32::default(),
15221            max_indirect_commands_stream_count: u32::default(),
15222            max_indirect_commands_token_offset: u32::default(),
15223            max_indirect_commands_stream_stride: u32::default(),
15224            min_sequences_count_buffer_offset_alignment: u32::default(),
15225            min_sequences_index_buffer_offset_alignment: u32::default(),
15226            min_indirect_commands_buffer_offset_alignment: u32::default(),
15227        }
15228    }
15229}
15230
15231unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
15232unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
15233
15234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
15235#[repr(C)]
15236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15237pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15238    pub s_type: StructureType,
15239    pub next: *mut c_void,
15240    pub device_memory_report: Bool32,
15241}
15242
15243impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15244    #[inline]
15245    fn default() -> Self {
15246        Self {
15247            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
15248            next: ptr::null_mut(),
15249            device_memory_report: Bool32::default(),
15250        }
15251    }
15252}
15253
15254unsafe impl Send for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15255unsafe impl Sync for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15256
15257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
15258#[repr(C)]
15259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15260pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
15261    pub s_type: StructureType,
15262    pub next: *mut c_void,
15263    pub diagnostics_config: Bool32,
15264}
15265
15266impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
15267    #[inline]
15268    fn default() -> Self {
15269        Self {
15270            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
15271            next: ptr::null_mut(),
15272            diagnostics_config: Bool32::default(),
15273        }
15274    }
15275}
15276
15277unsafe impl Send for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15278unsafe impl Sync for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15279
15280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
15281#[repr(C)]
15282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15283pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
15284    pub s_type: StructureType,
15285    pub next: *mut c_void,
15286    pub max_discard_rectangles: u32,
15287}
15288
15289impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
15290    #[inline]
15291    fn default() -> Self {
15292        Self {
15293            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
15294            next: ptr::null_mut(),
15295            max_discard_rectangles: u32::default(),
15296        }
15297    }
15298}
15299
15300unsafe impl Send for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15301unsafe impl Sync for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15302
15303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
15304#[repr(C)]
15305#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15306pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
15307    pub s_type: StructureType,
15308    pub next: *mut c_void,
15309    pub displacement_micromap: Bool32,
15310}
15311
15312impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
15313    #[inline]
15314    fn default() -> Self {
15315        Self {
15316            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
15317            next: ptr::null_mut(),
15318            displacement_micromap: Bool32::default(),
15319        }
15320    }
15321}
15322
15323unsafe impl Send for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15324unsafe impl Sync for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15325
15326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
15327#[repr(C)]
15328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15329pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
15330    pub s_type: StructureType,
15331    pub next: *mut c_void,
15332    pub max_displacement_micromap_subdivision_level: u32,
15333}
15334
15335impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
15336    #[inline]
15337    fn default() -> Self {
15338        Self {
15339            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
15340            next: ptr::null_mut(),
15341            max_displacement_micromap_subdivision_level: u32::default(),
15342        }
15343    }
15344}
15345
15346unsafe impl Send for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15347unsafe impl Sync for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15348
15349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
15350#[repr(C)]
15351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15352pub struct PhysicalDeviceDriverProperties {
15353    pub s_type: StructureType,
15354    pub next: *mut c_void,
15355    pub driver_id: DriverId,
15356    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
15357    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
15358    pub conformance_version: ConformanceVersion,
15359}
15360
15361impl Default for PhysicalDeviceDriverProperties {
15362    #[inline]
15363    fn default() -> Self {
15364        Self {
15365            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
15366            next: ptr::null_mut(),
15367            driver_id: DriverId::default(),
15368            driver_name: StringArray::default(),
15369            driver_info: StringArray::default(),
15370            conformance_version: ConformanceVersion::default(),
15371        }
15372    }
15373}
15374
15375unsafe impl Send for PhysicalDeviceDriverProperties {}
15376unsafe impl Sync for PhysicalDeviceDriverProperties {}
15377
15378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
15379#[repr(C)]
15380#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15381pub struct PhysicalDeviceDrmPropertiesEXT {
15382    pub s_type: StructureType,
15383    pub next: *mut c_void,
15384    pub has_primary: Bool32,
15385    pub has_render: Bool32,
15386    pub primary_major: i64,
15387    pub primary_minor: i64,
15388    pub render_major: i64,
15389    pub render_minor: i64,
15390}
15391
15392impl Default for PhysicalDeviceDrmPropertiesEXT {
15393    #[inline]
15394    fn default() -> Self {
15395        Self {
15396            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
15397            next: ptr::null_mut(),
15398            has_primary: Bool32::default(),
15399            has_render: Bool32::default(),
15400            primary_major: i64::default(),
15401            primary_minor: i64::default(),
15402            render_major: i64::default(),
15403            render_minor: i64::default(),
15404        }
15405    }
15406}
15407
15408unsafe impl Send for PhysicalDeviceDrmPropertiesEXT {}
15409unsafe impl Sync for PhysicalDeviceDrmPropertiesEXT {}
15410
15411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
15412#[repr(C)]
15413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15414pub struct PhysicalDeviceDynamicRenderingFeatures {
15415    pub s_type: StructureType,
15416    pub next: *mut c_void,
15417    pub dynamic_rendering: Bool32,
15418}
15419
15420impl Default for PhysicalDeviceDynamicRenderingFeatures {
15421    #[inline]
15422    fn default() -> Self {
15423        Self {
15424            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
15425            next: ptr::null_mut(),
15426            dynamic_rendering: Bool32::default(),
15427        }
15428    }
15429}
15430
15431unsafe impl Send for PhysicalDeviceDynamicRenderingFeatures {}
15432unsafe impl Sync for PhysicalDeviceDynamicRenderingFeatures {}
15433
15434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
15435#[repr(C)]
15436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15437pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
15438    pub s_type: StructureType,
15439    pub next: *mut c_void,
15440    pub dynamic_rendering_local_read: Bool32,
15441}
15442
15443impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
15444    #[inline]
15445    fn default() -> Self {
15446        Self {
15447            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
15448            next: ptr::null_mut(),
15449            dynamic_rendering_local_read: Bool32::default(),
15450        }
15451    }
15452}
15453
15454unsafe impl Send for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15455unsafe impl Sync for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15456
15457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
15458#[repr(C)]
15459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15460pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15461    pub s_type: StructureType,
15462    pub next: *mut c_void,
15463    pub dynamic_rendering_unused_attachments: Bool32,
15464}
15465
15466impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15467    #[inline]
15468    fn default() -> Self {
15469        Self {
15470            s_type:
15471                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
15472            next: ptr::null_mut(),
15473            dynamic_rendering_unused_attachments: Bool32::default(),
15474        }
15475    }
15476}
15477
15478unsafe impl Send for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
15479unsafe impl Sync for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
15480
15481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
15482#[repr(C)]
15483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15484pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
15485    pub s_type: StructureType,
15486    pub next: *mut c_void,
15487    pub exclusive_scissor: Bool32,
15488}
15489
15490impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
15491    #[inline]
15492    fn default() -> Self {
15493        Self {
15494            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
15495            next: ptr::null_mut(),
15496            exclusive_scissor: Bool32::default(),
15497        }
15498    }
15499}
15500
15501unsafe impl Send for PhysicalDeviceExclusiveScissorFeaturesNV {}
15502unsafe impl Sync for PhysicalDeviceExclusiveScissorFeaturesNV {}
15503
15504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
15505#[repr(C)]
15506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15507pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15508    pub s_type: StructureType,
15509    pub next: *mut c_void,
15510    pub extended_dynamic_state2: Bool32,
15511    pub extended_dynamic_state2_logic_op: Bool32,
15512    pub extended_dynamic_state2_patch_control_points: Bool32,
15513}
15514
15515impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15516    #[inline]
15517    fn default() -> Self {
15518        Self {
15519            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
15520            next: ptr::null_mut(),
15521            extended_dynamic_state2: Bool32::default(),
15522            extended_dynamic_state2_logic_op: Bool32::default(),
15523            extended_dynamic_state2_patch_control_points: Bool32::default(),
15524        }
15525    }
15526}
15527
15528unsafe impl Send for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15529unsafe impl Sync for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15530
15531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
15532#[repr(C)]
15533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15534pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15535    pub s_type: StructureType,
15536    pub next: *mut c_void,
15537    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
15538    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
15539    pub extended_dynamic_state3_polygon_mode: Bool32,
15540    pub extended_dynamic_state3_rasterization_samples: Bool32,
15541    pub extended_dynamic_state3_sample_mask: Bool32,
15542    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
15543    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
15544    pub extended_dynamic_state3_logic_op_enable: Bool32,
15545    pub extended_dynamic_state3_color_blend_enable: Bool32,
15546    pub extended_dynamic_state3_color_blend_equation: Bool32,
15547    pub extended_dynamic_state3_color_write_mask: Bool32,
15548    pub extended_dynamic_state3_rasterization_stream: Bool32,
15549    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
15550    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
15551    pub extended_dynamic_state_3depth_clip_enable: Bool32,
15552    pub extended_dynamic_state3_sample_locations_enable: Bool32,
15553    pub extended_dynamic_state3_color_blend_advanced: Bool32,
15554    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
15555    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
15556    pub extended_dynamic_state3_line_stipple_enable: Bool32,
15557    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
15558    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
15559    pub extended_dynamic_state3_viewport_swizzle: Bool32,
15560    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
15561    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
15562    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
15563    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
15564    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
15565    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
15566    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
15567    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
15568}
15569
15570impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15571    #[inline]
15572    fn default() -> Self {
15573        Self {
15574            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
15575            next: ptr::null_mut(),
15576            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
15577            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
15578            extended_dynamic_state3_polygon_mode: Bool32::default(),
15579            extended_dynamic_state3_rasterization_samples: Bool32::default(),
15580            extended_dynamic_state3_sample_mask: Bool32::default(),
15581            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
15582            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
15583            extended_dynamic_state3_logic_op_enable: Bool32::default(),
15584            extended_dynamic_state3_color_blend_enable: Bool32::default(),
15585            extended_dynamic_state3_color_blend_equation: Bool32::default(),
15586            extended_dynamic_state3_color_write_mask: Bool32::default(),
15587            extended_dynamic_state3_rasterization_stream: Bool32::default(),
15588            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
15589            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
15590            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
15591            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
15592            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
15593            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
15594            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
15595            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
15596            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
15597            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
15598            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
15599            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
15600            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
15601            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
15602            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
15603            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
15604            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
15605            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
15606            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
15607        }
15608    }
15609}
15610
15611unsafe impl Send for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15612unsafe impl Sync for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15613
15614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
15615#[repr(C)]
15616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15617pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15618    pub s_type: StructureType,
15619    pub next: *mut c_void,
15620    pub dynamic_primitive_topology_unrestricted: Bool32,
15621}
15622
15623impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15624    #[inline]
15625    fn default() -> Self {
15626        Self {
15627            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
15628            next: ptr::null_mut(),
15629            dynamic_primitive_topology_unrestricted: Bool32::default(),
15630        }
15631    }
15632}
15633
15634unsafe impl Send for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15635unsafe impl Sync for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15636
15637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
15638#[repr(C)]
15639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15640pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15641    pub s_type: StructureType,
15642    pub next: *mut c_void,
15643    pub extended_dynamic_state: Bool32,
15644}
15645
15646impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15647    #[inline]
15648    fn default() -> Self {
15649        Self {
15650            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
15651            next: ptr::null_mut(),
15652            extended_dynamic_state: Bool32::default(),
15653        }
15654    }
15655}
15656
15657unsafe impl Send for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15658unsafe impl Sync for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15659
15660/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
15661#[repr(C)]
15662#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15663pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15664    pub s_type: StructureType,
15665    pub next: *mut c_void,
15666    pub extended_sparse_address_space: Bool32,
15667}
15668
15669impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15670    #[inline]
15671    fn default() -> Self {
15672        Self {
15673            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
15674            next: ptr::null_mut(),
15675            extended_sparse_address_space: Bool32::default(),
15676        }
15677    }
15678}
15679
15680unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15681unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15682
15683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
15684#[repr(C)]
15685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15686pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15687    pub s_type: StructureType,
15688    pub next: *mut c_void,
15689    pub extended_sparse_address_space_size: DeviceSize,
15690    pub extended_sparse_image_usage_flags: ImageUsageFlags,
15691    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
15692}
15693
15694impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15695    #[inline]
15696    fn default() -> Self {
15697        Self {
15698            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
15699            next: ptr::null_mut(),
15700            extended_sparse_address_space_size: DeviceSize::default(),
15701            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
15702            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
15703        }
15704    }
15705}
15706
15707unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15708unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15709
15710/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
15711#[repr(C)]
15712#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15713pub struct PhysicalDeviceExternalBufferInfo {
15714    pub s_type: StructureType,
15715    pub next: *const c_void,
15716    pub flags: BufferCreateFlags,
15717    pub usage: BufferUsageFlags,
15718    pub handle_type: ExternalMemoryHandleTypeFlags,
15719}
15720
15721impl Default for PhysicalDeviceExternalBufferInfo {
15722    #[inline]
15723    fn default() -> Self {
15724        Self {
15725            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
15726            next: ptr::null(),
15727            flags: BufferCreateFlags::default(),
15728            usage: BufferUsageFlags::default(),
15729            handle_type: ExternalMemoryHandleTypeFlags::default(),
15730        }
15731    }
15732}
15733
15734unsafe impl Send for PhysicalDeviceExternalBufferInfo {}
15735unsafe impl Sync for PhysicalDeviceExternalBufferInfo {}
15736
15737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html>
15738#[repr(C)]
15739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15740pub struct PhysicalDeviceExternalComputeQueuePropertiesNV {
15741    pub s_type: StructureType,
15742    pub next: *mut c_void,
15743    pub external_data_size: u32,
15744    pub max_external_queues: u32,
15745}
15746
15747impl Default for PhysicalDeviceExternalComputeQueuePropertiesNV {
15748    #[inline]
15749    fn default() -> Self {
15750        Self {
15751            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV,
15752            next: ptr::null_mut(),
15753            external_data_size: u32::default(),
15754            max_external_queues: u32::default(),
15755        }
15756    }
15757}
15758
15759unsafe impl Send for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15760unsafe impl Sync for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15761
15762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
15763#[repr(C)]
15764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15765pub struct PhysicalDeviceExternalFenceInfo {
15766    pub s_type: StructureType,
15767    pub next: *const c_void,
15768    pub handle_type: ExternalFenceHandleTypeFlags,
15769}
15770
15771impl Default for PhysicalDeviceExternalFenceInfo {
15772    #[inline]
15773    fn default() -> Self {
15774        Self {
15775            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
15776            next: ptr::null(),
15777            handle_type: ExternalFenceHandleTypeFlags::default(),
15778        }
15779    }
15780}
15781
15782unsafe impl Send for PhysicalDeviceExternalFenceInfo {}
15783unsafe impl Sync for PhysicalDeviceExternalFenceInfo {}
15784
15785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
15786#[repr(C)]
15787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15788pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15789    pub s_type: StructureType,
15790    pub next: *mut c_void,
15791    pub external_format_resolve: Bool32,
15792}
15793
15794impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15795    #[inline]
15796    fn default() -> Self {
15797        Self {
15798            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
15799            next: ptr::null_mut(),
15800            external_format_resolve: Bool32::default(),
15801        }
15802    }
15803}
15804
15805unsafe impl Send for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15806unsafe impl Sync for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15807
15808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
15809#[repr(C)]
15810#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15811pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15812    pub s_type: StructureType,
15813    pub next: *mut c_void,
15814    pub null_color_attachment_with_external_format_resolve: Bool32,
15815    pub external_format_resolve_chroma_offset_x: ChromaLocation,
15816    pub external_format_resolve_chroma_offset_y: ChromaLocation,
15817}
15818
15819impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15820    #[inline]
15821    fn default() -> Self {
15822        Self {
15823            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
15824            next: ptr::null_mut(),
15825            null_color_attachment_with_external_format_resolve: Bool32::default(),
15826            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
15827            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
15828        }
15829    }
15830}
15831
15832unsafe impl Send for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15833unsafe impl Sync for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15834
15835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
15836#[repr(C)]
15837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15838pub struct PhysicalDeviceExternalImageFormatInfo {
15839    pub s_type: StructureType,
15840    pub next: *const c_void,
15841    pub handle_type: ExternalMemoryHandleTypeFlags,
15842}
15843
15844impl Default for PhysicalDeviceExternalImageFormatInfo {
15845    #[inline]
15846    fn default() -> Self {
15847        Self {
15848            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
15849            next: ptr::null(),
15850            handle_type: ExternalMemoryHandleTypeFlags::default(),
15851        }
15852    }
15853}
15854
15855unsafe impl Send for PhysicalDeviceExternalImageFormatInfo {}
15856unsafe impl Sync for PhysicalDeviceExternalImageFormatInfo {}
15857
15858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
15859#[repr(C)]
15860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15861pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
15862    pub s_type: StructureType,
15863    pub next: *mut c_void,
15864    pub min_imported_host_pointer_alignment: DeviceSize,
15865}
15866
15867impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
15868    #[inline]
15869    fn default() -> Self {
15870        Self {
15871            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
15872            next: ptr::null_mut(),
15873            min_imported_host_pointer_alignment: DeviceSize::default(),
15874        }
15875    }
15876}
15877
15878unsafe impl Send for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15879unsafe impl Sync for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15880
15881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
15882#[repr(C)]
15883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15884pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15885    pub s_type: StructureType,
15886    pub next: *mut c_void,
15887    pub external_memory_rdma: Bool32,
15888}
15889
15890impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15891    #[inline]
15892    fn default() -> Self {
15893        Self {
15894            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
15895            next: ptr::null_mut(),
15896            external_memory_rdma: Bool32::default(),
15897        }
15898    }
15899}
15900
15901unsafe impl Send for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15902unsafe impl Sync for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15903
15904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
15905#[repr(C)]
15906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15907pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
15908    pub s_type: StructureType,
15909    pub next: *mut c_void,
15910    pub sci_buf_import: Bool32,
15911    pub sci_buf_export: Bool32,
15912}
15913
15914impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
15915    #[inline]
15916    fn default() -> Self {
15917        Self {
15918            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
15919            next: ptr::null_mut(),
15920            sci_buf_import: Bool32::default(),
15921            sci_buf_export: Bool32::default(),
15922        }
15923    }
15924}
15925
15926unsafe impl Send for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15927unsafe impl Sync for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15928
15929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
15930#[repr(C)]
15931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15932pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15933    pub s_type: StructureType,
15934    pub next: *mut c_void,
15935    pub screen_buffer_import: Bool32,
15936}
15937
15938impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15939    #[inline]
15940    fn default() -> Self {
15941        Self {
15942            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
15943            next: ptr::null_mut(),
15944            screen_buffer_import: Bool32::default(),
15945        }
15946    }
15947}
15948
15949unsafe impl Send for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15950unsafe impl Sync for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15951
15952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
15953#[repr(C)]
15954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15955pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
15956    pub s_type: StructureType,
15957    pub next: *mut c_void,
15958    pub sci_sync_fence: Bool32,
15959    pub sci_sync_semaphore2: Bool32,
15960    pub sci_sync_import: Bool32,
15961    pub sci_sync_export: Bool32,
15962}
15963
15964impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
15965    #[inline]
15966    fn default() -> Self {
15967        Self {
15968            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
15969            next: ptr::null_mut(),
15970            sci_sync_fence: Bool32::default(),
15971            sci_sync_semaphore2: Bool32::default(),
15972            sci_sync_import: Bool32::default(),
15973            sci_sync_export: Bool32::default(),
15974        }
15975    }
15976}
15977
15978unsafe impl Send for PhysicalDeviceExternalSciSync2FeaturesNV {}
15979unsafe impl Sync for PhysicalDeviceExternalSciSync2FeaturesNV {}
15980
15981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
15982#[repr(C)]
15983#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15984pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
15985    pub s_type: StructureType,
15986    pub next: *mut c_void,
15987    pub sci_sync_fence: Bool32,
15988    pub sci_sync_semaphore: Bool32,
15989    pub sci_sync_import: Bool32,
15990    pub sci_sync_export: Bool32,
15991}
15992
15993impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
15994    #[inline]
15995    fn default() -> Self {
15996        Self {
15997            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
15998            next: ptr::null_mut(),
15999            sci_sync_fence: Bool32::default(),
16000            sci_sync_semaphore: Bool32::default(),
16001            sci_sync_import: Bool32::default(),
16002            sci_sync_export: Bool32::default(),
16003        }
16004    }
16005}
16006
16007unsafe impl Send for PhysicalDeviceExternalSciSyncFeaturesNV {}
16008unsafe impl Sync for PhysicalDeviceExternalSciSyncFeaturesNV {}
16009
16010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
16011#[repr(C)]
16012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16013pub struct PhysicalDeviceExternalSemaphoreInfo {
16014    pub s_type: StructureType,
16015    pub next: *const c_void,
16016    pub handle_type: ExternalSemaphoreHandleTypeFlags,
16017}
16018
16019impl Default for PhysicalDeviceExternalSemaphoreInfo {
16020    #[inline]
16021    fn default() -> Self {
16022        Self {
16023            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
16024            next: ptr::null(),
16025            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16026        }
16027    }
16028}
16029
16030unsafe impl Send for PhysicalDeviceExternalSemaphoreInfo {}
16031unsafe impl Sync for PhysicalDeviceExternalSemaphoreInfo {}
16032
16033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html>
16034#[repr(C)]
16035#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16036pub struct PhysicalDeviceExternalTensorInfoARM {
16037    pub s_type: StructureType,
16038    pub next: *const c_void,
16039    pub flags: TensorCreateFlagsARM,
16040    pub description: *const TensorDescriptionARM,
16041    pub handle_type: ExternalMemoryHandleTypeFlags,
16042}
16043
16044impl Default for PhysicalDeviceExternalTensorInfoARM {
16045    #[inline]
16046    fn default() -> Self {
16047        Self {
16048            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM,
16049            next: ptr::null(),
16050            flags: TensorCreateFlagsARM::default(),
16051            description: ptr::null(),
16052            handle_type: ExternalMemoryHandleTypeFlags::default(),
16053        }
16054    }
16055}
16056
16057unsafe impl Send for PhysicalDeviceExternalTensorInfoARM {}
16058unsafe impl Sync for PhysicalDeviceExternalTensorInfoARM {}
16059
16060/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
16061#[repr(C)]
16062#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16063pub struct PhysicalDeviceFaultFeaturesEXT {
16064    pub s_type: StructureType,
16065    pub next: *mut c_void,
16066    pub device_fault: Bool32,
16067    pub device_fault_vendor_binary: Bool32,
16068}
16069
16070impl Default for PhysicalDeviceFaultFeaturesEXT {
16071    #[inline]
16072    fn default() -> Self {
16073        Self {
16074            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
16075            next: ptr::null_mut(),
16076            device_fault: Bool32::default(),
16077            device_fault_vendor_binary: Bool32::default(),
16078        }
16079    }
16080}
16081
16082unsafe impl Send for PhysicalDeviceFaultFeaturesEXT {}
16083unsafe impl Sync for PhysicalDeviceFaultFeaturesEXT {}
16084
16085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
16086#[repr(C)]
16087#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
16088pub struct PhysicalDeviceFeatures {
16089    pub robust_buffer_access: Bool32,
16090    pub full_draw_index_uint32: Bool32,
16091    pub image_cube_array: Bool32,
16092    pub independent_blend: Bool32,
16093    pub geometry_shader: Bool32,
16094    pub tessellation_shader: Bool32,
16095    pub sample_rate_shading: Bool32,
16096    pub dual_src_blend: Bool32,
16097    pub logic_op: Bool32,
16098    pub multi_draw_indirect: Bool32,
16099    pub draw_indirect_first_instance: Bool32,
16100    pub depth_clamp: Bool32,
16101    pub depth_bias_clamp: Bool32,
16102    pub fill_mode_non_solid: Bool32,
16103    pub depth_bounds: Bool32,
16104    pub wide_lines: Bool32,
16105    pub large_points: Bool32,
16106    pub alpha_to_one: Bool32,
16107    pub multi_viewport: Bool32,
16108    pub sampler_anisotropy: Bool32,
16109    pub texture_compression_etc2: Bool32,
16110    pub texture_compression_astc_ldr: Bool32,
16111    pub texture_compression_bc: Bool32,
16112    pub occlusion_query_precise: Bool32,
16113    pub pipeline_statistics_query: Bool32,
16114    pub vertex_pipeline_stores_and_atomics: Bool32,
16115    pub fragment_stores_and_atomics: Bool32,
16116    pub shader_tessellation_and_geometry_point_size: Bool32,
16117    pub shader_image_gather_extended: Bool32,
16118    pub shader_storage_image_extended_formats: Bool32,
16119    pub shader_storage_image_multisample: Bool32,
16120    pub shader_storage_image_read_without_format: Bool32,
16121    pub shader_storage_image_write_without_format: Bool32,
16122    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
16123    pub shader_sampled_image_array_dynamic_indexing: Bool32,
16124    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
16125    pub shader_storage_image_array_dynamic_indexing: Bool32,
16126    pub shader_clip_distance: Bool32,
16127    pub shader_cull_distance: Bool32,
16128    pub shader_float64: Bool32,
16129    pub shader_int64: Bool32,
16130    pub shader_int16: Bool32,
16131    pub shader_resource_residency: Bool32,
16132    pub shader_resource_min_lod: Bool32,
16133    pub sparse_binding: Bool32,
16134    pub sparse_residency_buffer: Bool32,
16135    pub sparse_residency_image_2d: Bool32,
16136    pub sparse_residency_image_3d: Bool32,
16137    pub sparse_residency2_samples: Bool32,
16138    pub sparse_residency4_samples: Bool32,
16139    pub sparse_residency8_samples: Bool32,
16140    pub sparse_residency16_samples: Bool32,
16141    pub sparse_residency_aliased: Bool32,
16142    pub variable_multisample_rate: Bool32,
16143    pub inherited_queries: Bool32,
16144}
16145
16146/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
16147#[repr(C)]
16148#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16149pub struct PhysicalDeviceFeatures2 {
16150    pub s_type: StructureType,
16151    pub next: *mut c_void,
16152    pub features: PhysicalDeviceFeatures,
16153}
16154
16155impl Default for PhysicalDeviceFeatures2 {
16156    #[inline]
16157    fn default() -> Self {
16158        Self {
16159            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
16160            next: ptr::null_mut(),
16161            features: PhysicalDeviceFeatures::default(),
16162        }
16163    }
16164}
16165
16166unsafe impl Send for PhysicalDeviceFeatures2 {}
16167unsafe impl Sync for PhysicalDeviceFeatures2 {}
16168
16169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
16170#[repr(C)]
16171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16172pub struct PhysicalDeviceFloatControlsProperties {
16173    pub s_type: StructureType,
16174    pub next: *mut c_void,
16175    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
16176    pub rounding_mode_independence: ShaderFloatControlsIndependence,
16177    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
16178    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
16179    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
16180    pub shader_denorm_preserve_float16: Bool32,
16181    pub shader_denorm_preserve_float32: Bool32,
16182    pub shader_denorm_preserve_float64: Bool32,
16183    pub shader_denorm_flush_to_zero_float16: Bool32,
16184    pub shader_denorm_flush_to_zero_float32: Bool32,
16185    pub shader_denorm_flush_to_zero_float64: Bool32,
16186    pub shader_rounding_mode_rte_float16: Bool32,
16187    pub shader_rounding_mode_rte_float32: Bool32,
16188    pub shader_rounding_mode_rte_float64: Bool32,
16189    pub shader_rounding_mode_rtz_float16: Bool32,
16190    pub shader_rounding_mode_rtz_float32: Bool32,
16191    pub shader_rounding_mode_rtz_float64: Bool32,
16192}
16193
16194impl Default for PhysicalDeviceFloatControlsProperties {
16195    #[inline]
16196    fn default() -> Self {
16197        Self {
16198            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
16199            next: ptr::null_mut(),
16200            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
16201            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
16202            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
16203            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
16204            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
16205            shader_denorm_preserve_float16: Bool32::default(),
16206            shader_denorm_preserve_float32: Bool32::default(),
16207            shader_denorm_preserve_float64: Bool32::default(),
16208            shader_denorm_flush_to_zero_float16: Bool32::default(),
16209            shader_denorm_flush_to_zero_float32: Bool32::default(),
16210            shader_denorm_flush_to_zero_float64: Bool32::default(),
16211            shader_rounding_mode_rte_float16: Bool32::default(),
16212            shader_rounding_mode_rte_float32: Bool32::default(),
16213            shader_rounding_mode_rte_float64: Bool32::default(),
16214            shader_rounding_mode_rtz_float16: Bool32::default(),
16215            shader_rounding_mode_rtz_float32: Bool32::default(),
16216            shader_rounding_mode_rtz_float64: Bool32::default(),
16217        }
16218    }
16219}
16220
16221unsafe impl Send for PhysicalDeviceFloatControlsProperties {}
16222unsafe impl Sync for PhysicalDeviceFloatControlsProperties {}
16223
16224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html>
16225#[repr(C)]
16226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16227pub struct PhysicalDeviceFormatPackFeaturesARM {
16228    pub s_type: StructureType,
16229    pub next: *mut c_void,
16230    pub format_pack: Bool32,
16231}
16232
16233impl Default for PhysicalDeviceFormatPackFeaturesARM {
16234    #[inline]
16235    fn default() -> Self {
16236        Self {
16237            s_type: StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM,
16238            next: ptr::null_mut(),
16239            format_pack: Bool32::default(),
16240        }
16241    }
16242}
16243
16244unsafe impl Send for PhysicalDeviceFormatPackFeaturesARM {}
16245unsafe impl Sync for PhysicalDeviceFormatPackFeaturesARM {}
16246
16247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
16248#[repr(C)]
16249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16250pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16251    pub s_type: StructureType,
16252    pub next: *mut c_void,
16253    pub fragment_density_map_deferred: Bool32,
16254}
16255
16256impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16257    #[inline]
16258    fn default() -> Self {
16259        Self {
16260            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
16261            next: ptr::null_mut(),
16262            fragment_density_map_deferred: Bool32::default(),
16263        }
16264    }
16265}
16266
16267unsafe impl Send for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16268unsafe impl Sync for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16269
16270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
16271#[repr(C)]
16272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16273pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16274    pub s_type: StructureType,
16275    pub next: *mut c_void,
16276    pub subsampled_loads: Bool32,
16277    pub subsampled_coarse_reconstruction_early_access: Bool32,
16278    pub max_subsampled_array_layers: u32,
16279    pub max_descriptor_set_subsampled_samplers: u32,
16280}
16281
16282impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16283    #[inline]
16284    fn default() -> Self {
16285        Self {
16286            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
16287            next: ptr::null_mut(),
16288            subsampled_loads: Bool32::default(),
16289            subsampled_coarse_reconstruction_early_access: Bool32::default(),
16290            max_subsampled_array_layers: u32::default(),
16291            max_descriptor_set_subsampled_samplers: u32::default(),
16292        }
16293    }
16294}
16295
16296unsafe impl Send for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16297unsafe impl Sync for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16298
16299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
16300#[repr(C)]
16301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16302pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
16303    pub s_type: StructureType,
16304    pub next: *mut c_void,
16305    pub fragment_density_map: Bool32,
16306    pub fragment_density_map_dynamic: Bool32,
16307    pub fragment_density_map_non_subsampled_images: Bool32,
16308}
16309
16310impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
16311    #[inline]
16312    fn default() -> Self {
16313        Self {
16314            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
16315            next: ptr::null_mut(),
16316            fragment_density_map: Bool32::default(),
16317            fragment_density_map_dynamic: Bool32::default(),
16318            fragment_density_map_non_subsampled_images: Bool32::default(),
16319        }
16320    }
16321}
16322
16323unsafe impl Send for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16324unsafe impl Sync for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16325
16326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html>
16327#[repr(C)]
16328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16329pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16330    pub s_type: StructureType,
16331    pub next: *mut c_void,
16332    pub fragment_density_map_layered: Bool32,
16333}
16334
16335impl Default for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16336    #[inline]
16337    fn default() -> Self {
16338        Self {
16339            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE,
16340            next: ptr::null_mut(),
16341            fragment_density_map_layered: Bool32::default(),
16342        }
16343    }
16344}
16345
16346unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16347unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16348
16349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html>
16350#[repr(C)]
16351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16352pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16353    pub s_type: StructureType,
16354    pub next: *mut c_void,
16355    pub max_fragment_density_map_layers: u32,
16356}
16357
16358impl Default for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16359    #[inline]
16360    fn default() -> Self {
16361        Self {
16362            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE,
16363            next: ptr::null_mut(),
16364            max_fragment_density_map_layers: u32::default(),
16365        }
16366    }
16367}
16368
16369unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16370unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16371
16372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html>
16373#[repr(C)]
16374#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16375pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16376    pub s_type: StructureType,
16377    pub next: *mut c_void,
16378    pub fragment_density_map_offset: Bool32,
16379}
16380
16381impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16382    #[inline]
16383    fn default() -> Self {
16384        Self {
16385            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
16386            next: ptr::null_mut(),
16387            fragment_density_map_offset: Bool32::default(),
16388        }
16389    }
16390}
16391
16392unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16393unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16394
16395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html>
16396#[repr(C)]
16397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16398pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16399    pub s_type: StructureType,
16400    pub next: *mut c_void,
16401    pub fragment_density_offset_granularity: Extent2D,
16402}
16403
16404impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16405    #[inline]
16406    fn default() -> Self {
16407        Self {
16408            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
16409            next: ptr::null_mut(),
16410            fragment_density_offset_granularity: Extent2D::default(),
16411        }
16412    }
16413}
16414
16415unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16416unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16417
16418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
16419#[repr(C)]
16420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16421pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
16422    pub s_type: StructureType,
16423    pub next: *mut c_void,
16424    pub min_fragment_density_texel_size: Extent2D,
16425    pub max_fragment_density_texel_size: Extent2D,
16426    pub fragment_density_invocations: Bool32,
16427}
16428
16429impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
16430    #[inline]
16431    fn default() -> Self {
16432        Self {
16433            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
16434            next: ptr::null_mut(),
16435            min_fragment_density_texel_size: Extent2D::default(),
16436            max_fragment_density_texel_size: Extent2D::default(),
16437            fragment_density_invocations: Bool32::default(),
16438        }
16439    }
16440}
16441
16442unsafe impl Send for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16443unsafe impl Sync for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16444
16445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
16446#[repr(C)]
16447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16448pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16449    pub s_type: StructureType,
16450    pub next: *mut c_void,
16451    pub fragment_shader_barycentric: Bool32,
16452}
16453
16454impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16455    #[inline]
16456    fn default() -> Self {
16457        Self {
16458            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
16459            next: ptr::null_mut(),
16460            fragment_shader_barycentric: Bool32::default(),
16461        }
16462    }
16463}
16464
16465unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
16466unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
16467
16468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
16469#[repr(C)]
16470#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16471pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
16472    pub s_type: StructureType,
16473    pub next: *mut c_void,
16474    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
16475}
16476
16477impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
16478    #[inline]
16479    fn default() -> Self {
16480        Self {
16481            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
16482            next: ptr::null_mut(),
16483            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
16484        }
16485    }
16486}
16487
16488unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
16489unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
16490
16491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
16492#[repr(C)]
16493#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16494pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16495    pub s_type: StructureType,
16496    pub next: *mut c_void,
16497    pub fragment_shader_sample_interlock: Bool32,
16498    pub fragment_shader_pixel_interlock: Bool32,
16499    pub fragment_shader_shading_rate_interlock: Bool32,
16500}
16501
16502impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16503    #[inline]
16504    fn default() -> Self {
16505        Self {
16506            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
16507            next: ptr::null_mut(),
16508            fragment_shader_sample_interlock: Bool32::default(),
16509            fragment_shader_pixel_interlock: Bool32::default(),
16510            fragment_shader_shading_rate_interlock: Bool32::default(),
16511        }
16512    }
16513}
16514
16515unsafe impl Send for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16516unsafe impl Sync for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16517
16518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
16519#[repr(C)]
16520#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16521pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16522    pub s_type: StructureType,
16523    pub next: *mut c_void,
16524    pub fragment_shading_rate_enums: Bool32,
16525    pub supersample_fragment_shading_rates: Bool32,
16526    pub no_invocation_fragment_shading_rates: Bool32,
16527}
16528
16529impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16530    #[inline]
16531    fn default() -> Self {
16532        Self {
16533            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
16534            next: ptr::null_mut(),
16535            fragment_shading_rate_enums: Bool32::default(),
16536            supersample_fragment_shading_rates: Bool32::default(),
16537            no_invocation_fragment_shading_rates: Bool32::default(),
16538        }
16539    }
16540}
16541
16542unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16543unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16544
16545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
16546#[repr(C)]
16547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16548pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16549    pub s_type: StructureType,
16550    pub next: *mut c_void,
16551    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
16552}
16553
16554impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16555    #[inline]
16556    fn default() -> Self {
16557        Self {
16558            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
16559            next: ptr::null_mut(),
16560            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
16561        }
16562    }
16563}
16564
16565unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16566unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16567
16568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
16569#[repr(C)]
16570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16571pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
16572    pub s_type: StructureType,
16573    pub next: *mut c_void,
16574    pub pipeline_fragment_shading_rate: Bool32,
16575    pub primitive_fragment_shading_rate: Bool32,
16576    pub attachment_fragment_shading_rate: Bool32,
16577}
16578
16579impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
16580    #[inline]
16581    fn default() -> Self {
16582        Self {
16583            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
16584            next: ptr::null_mut(),
16585            pipeline_fragment_shading_rate: Bool32::default(),
16586            primitive_fragment_shading_rate: Bool32::default(),
16587            attachment_fragment_shading_rate: Bool32::default(),
16588        }
16589    }
16590}
16591
16592unsafe impl Send for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16593unsafe impl Sync for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16594
16595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
16596#[repr(C)]
16597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16598pub struct PhysicalDeviceFragmentShadingRateKHR {
16599    pub s_type: StructureType,
16600    pub next: *mut c_void,
16601    pub sample_counts: SampleCountFlags,
16602    pub fragment_size: Extent2D,
16603}
16604
16605impl Default for PhysicalDeviceFragmentShadingRateKHR {
16606    #[inline]
16607    fn default() -> Self {
16608        Self {
16609            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
16610            next: ptr::null_mut(),
16611            sample_counts: SampleCountFlags::default(),
16612            fragment_size: Extent2D::default(),
16613        }
16614    }
16615}
16616
16617unsafe impl Send for PhysicalDeviceFragmentShadingRateKHR {}
16618unsafe impl Sync for PhysicalDeviceFragmentShadingRateKHR {}
16619
16620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
16621#[repr(C)]
16622#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16623pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
16624    pub s_type: StructureType,
16625    pub next: *mut c_void,
16626    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
16627    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
16628    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
16629    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
16630    pub layered_shading_rate_attachments: Bool32,
16631    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
16632    pub max_fragment_size: Extent2D,
16633    pub max_fragment_size_aspect_ratio: u32,
16634    pub max_fragment_shading_rate_coverage_samples: u32,
16635    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
16636    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
16637    pub fragment_shading_rate_with_sample_mask: Bool32,
16638    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
16639    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
16640    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
16641    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
16642    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
16643}
16644
16645impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
16646    #[inline]
16647    fn default() -> Self {
16648        Self {
16649            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
16650            next: ptr::null_mut(),
16651            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16652            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16653            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
16654            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
16655            layered_shading_rate_attachments: Bool32::default(),
16656            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
16657            max_fragment_size: Extent2D::default(),
16658            max_fragment_size_aspect_ratio: u32::default(),
16659            max_fragment_shading_rate_coverage_samples: u32::default(),
16660            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
16661            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
16662            fragment_shading_rate_with_sample_mask: Bool32::default(),
16663            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
16664            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
16665            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
16666            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
16667            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
16668        }
16669    }
16670}
16671
16672unsafe impl Send for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16673unsafe impl Sync for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16674
16675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
16676#[repr(C)]
16677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16678pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
16679    pub s_type: StructureType,
16680    pub next: *mut c_void,
16681    pub frame_boundary: Bool32,
16682}
16683
16684impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
16685    #[inline]
16686    fn default() -> Self {
16687        Self {
16688            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
16689            next: ptr::null_mut(),
16690            frame_boundary: Bool32::default(),
16691        }
16692    }
16693}
16694
16695unsafe impl Send for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16696unsafe impl Sync for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16697
16698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
16699#[repr(C)]
16700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16701pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
16702    pub s_type: StructureType,
16703    pub next: *mut c_void,
16704    pub global_priority_query: Bool32,
16705}
16706
16707impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
16708    #[inline]
16709    fn default() -> Self {
16710        Self {
16711            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
16712            next: ptr::null_mut(),
16713            global_priority_query: Bool32::default(),
16714        }
16715    }
16716}
16717
16718unsafe impl Send for PhysicalDeviceGlobalPriorityQueryFeatures {}
16719unsafe impl Sync for PhysicalDeviceGlobalPriorityQueryFeatures {}
16720
16721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
16722#[repr(C)]
16723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16724pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16725    pub s_type: StructureType,
16726    pub next: *mut c_void,
16727    pub graphics_pipeline_library: Bool32,
16728}
16729
16730impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16731    #[inline]
16732    fn default() -> Self {
16733        Self {
16734            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
16735            next: ptr::null_mut(),
16736            graphics_pipeline_library: Bool32::default(),
16737        }
16738    }
16739}
16740
16741unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16742unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16743
16744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
16745#[repr(C)]
16746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16747pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16748    pub s_type: StructureType,
16749    pub next: *mut c_void,
16750    pub graphics_pipeline_library_fast_linking: Bool32,
16751    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
16752}
16753
16754impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16755    #[inline]
16756    fn default() -> Self {
16757        Self {
16758            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
16759            next: ptr::null_mut(),
16760            graphics_pipeline_library_fast_linking: Bool32::default(),
16761            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
16762        }
16763    }
16764}
16765
16766unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16767unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16768
16769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
16770#[repr(C)]
16771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16772pub struct PhysicalDeviceGroupProperties {
16773    pub s_type: StructureType,
16774    pub next: *mut c_void,
16775    pub physical_device_count: u32,
16776    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE as usize],
16777    pub subset_allocation: Bool32,
16778}
16779
16780impl Default for PhysicalDeviceGroupProperties {
16781    #[inline]
16782    fn default() -> Self {
16783        Self {
16784            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
16785            next: ptr::null_mut(),
16786            physical_device_count: u32::default(),
16787            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
16788            subset_allocation: Bool32::default(),
16789        }
16790    }
16791}
16792
16793unsafe impl Send for PhysicalDeviceGroupProperties {}
16794unsafe impl Sync for PhysicalDeviceGroupProperties {}
16795
16796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
16797#[repr(C)]
16798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16799pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
16800    pub s_type: StructureType,
16801    pub next: *mut c_void,
16802    pub hdr_vivid: Bool32,
16803}
16804
16805impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
16806    #[inline]
16807    fn default() -> Self {
16808        Self {
16809            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
16810            next: ptr::null_mut(),
16811            hdr_vivid: Bool32::default(),
16812        }
16813    }
16814}
16815
16816unsafe impl Send for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16817unsafe impl Sync for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16818
16819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
16820#[repr(C)]
16821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16822pub struct PhysicalDeviceHostImageCopyFeatures {
16823    pub s_type: StructureType,
16824    pub next: *mut c_void,
16825    pub host_image_copy: Bool32,
16826}
16827
16828impl Default for PhysicalDeviceHostImageCopyFeatures {
16829    #[inline]
16830    fn default() -> Self {
16831        Self {
16832            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
16833            next: ptr::null_mut(),
16834            host_image_copy: Bool32::default(),
16835        }
16836    }
16837}
16838
16839unsafe impl Send for PhysicalDeviceHostImageCopyFeatures {}
16840unsafe impl Sync for PhysicalDeviceHostImageCopyFeatures {}
16841
16842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
16843#[repr(C)]
16844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16845pub struct PhysicalDeviceHostImageCopyProperties {
16846    pub s_type: StructureType,
16847    pub next: *mut c_void,
16848    pub copy_src_layout_count: u32,
16849    pub copy_src_layouts: *mut ImageLayout,
16850    pub copy_dst_layout_count: u32,
16851    pub copy_dst_layouts: *mut ImageLayout,
16852    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
16853    pub identical_memory_type_requirements: Bool32,
16854}
16855
16856impl Default for PhysicalDeviceHostImageCopyProperties {
16857    #[inline]
16858    fn default() -> Self {
16859        Self {
16860            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
16861            next: ptr::null_mut(),
16862            copy_src_layout_count: u32::default(),
16863            copy_src_layouts: ptr::null_mut(),
16864            copy_dst_layout_count: u32::default(),
16865            copy_dst_layouts: ptr::null_mut(),
16866            optimal_tiling_layout_uuid: ByteArray::default(),
16867            identical_memory_type_requirements: Bool32::default(),
16868        }
16869    }
16870}
16871
16872unsafe impl Send for PhysicalDeviceHostImageCopyProperties {}
16873unsafe impl Sync for PhysicalDeviceHostImageCopyProperties {}
16874
16875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
16876#[repr(C)]
16877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16878pub struct PhysicalDeviceHostQueryResetFeatures {
16879    pub s_type: StructureType,
16880    pub next: *mut c_void,
16881    pub host_query_reset: Bool32,
16882}
16883
16884impl Default for PhysicalDeviceHostQueryResetFeatures {
16885    #[inline]
16886    fn default() -> Self {
16887        Self {
16888            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
16889            next: ptr::null_mut(),
16890            host_query_reset: Bool32::default(),
16891        }
16892    }
16893}
16894
16895unsafe impl Send for PhysicalDeviceHostQueryResetFeatures {}
16896unsafe impl Sync for PhysicalDeviceHostQueryResetFeatures {}
16897
16898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
16899#[repr(C)]
16900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16901pub struct PhysicalDeviceIDProperties {
16902    pub s_type: StructureType,
16903    pub next: *mut c_void,
16904    pub device_uuid: ByteArray<UUID_SIZE>,
16905    pub driver_uuid: ByteArray<UUID_SIZE>,
16906    pub device_luid: ByteArray<LUID_SIZE>,
16907    pub device_node_mask: u32,
16908    pub device_luid_valid: Bool32,
16909}
16910
16911impl Default for PhysicalDeviceIDProperties {
16912    #[inline]
16913    fn default() -> Self {
16914        Self {
16915            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
16916            next: ptr::null_mut(),
16917            device_uuid: ByteArray::default(),
16918            driver_uuid: ByteArray::default(),
16919            device_luid: ByteArray::default(),
16920            device_node_mask: u32::default(),
16921            device_luid_valid: Bool32::default(),
16922        }
16923    }
16924}
16925
16926unsafe impl Send for PhysicalDeviceIDProperties {}
16927unsafe impl Sync for PhysicalDeviceIDProperties {}
16928
16929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
16930#[repr(C)]
16931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16932pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16933    pub s_type: StructureType,
16934    pub next: *mut c_void,
16935    pub image_2d_view_of_3d: Bool32,
16936    pub sampler_2d_view_of_3d: Bool32,
16937}
16938
16939impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16940    #[inline]
16941    fn default() -> Self {
16942        Self {
16943            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
16944            next: ptr::null_mut(),
16945            image_2d_view_of_3d: Bool32::default(),
16946            sampler_2d_view_of_3d: Bool32::default(),
16947        }
16948    }
16949}
16950
16951unsafe impl Send for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16952unsafe impl Sync for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16953
16954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
16955#[repr(C)]
16956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16957pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
16958    pub s_type: StructureType,
16959    pub next: *mut c_void,
16960    pub image_alignment_control: Bool32,
16961}
16962
16963impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
16964    #[inline]
16965    fn default() -> Self {
16966        Self {
16967            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
16968            next: ptr::null_mut(),
16969            image_alignment_control: Bool32::default(),
16970        }
16971    }
16972}
16973
16974unsafe impl Send for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16975unsafe impl Sync for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16976
16977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
16978#[repr(C)]
16979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16980pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
16981    pub s_type: StructureType,
16982    pub next: *mut c_void,
16983    pub supported_image_alignment_mask: u32,
16984}
16985
16986impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
16987    #[inline]
16988    fn default() -> Self {
16989        Self {
16990            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
16991            next: ptr::null_mut(),
16992            supported_image_alignment_mask: u32::default(),
16993        }
16994    }
16995}
16996
16997unsafe impl Send for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16998unsafe impl Sync for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16999
17000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
17001#[repr(C)]
17002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17003pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
17004    pub s_type: StructureType,
17005    pub next: *mut c_void,
17006    pub image_compression_control: Bool32,
17007}
17008
17009impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
17010    #[inline]
17011    fn default() -> Self {
17012        Self {
17013            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
17014            next: ptr::null_mut(),
17015            image_compression_control: Bool32::default(),
17016        }
17017    }
17018}
17019
17020unsafe impl Send for PhysicalDeviceImageCompressionControlFeaturesEXT {}
17021unsafe impl Sync for PhysicalDeviceImageCompressionControlFeaturesEXT {}
17022
17023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
17024#[repr(C)]
17025#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17026pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
17027    pub s_type: StructureType,
17028    pub next: *mut c_void,
17029    pub image_compression_control_swapchain: Bool32,
17030}
17031
17032impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
17033    #[inline]
17034    fn default() -> Self {
17035        Self {
17036            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
17037            next: ptr::null_mut(),
17038            image_compression_control_swapchain: Bool32::default(),
17039        }
17040    }
17041}
17042
17043unsafe impl Send for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
17044unsafe impl Sync for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
17045
17046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
17047#[repr(C)]
17048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17049pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
17050    pub s_type: StructureType,
17051    pub next: *const c_void,
17052    pub drm_format_modifier: u64,
17053    pub sharing_mode: SharingMode,
17054    pub queue_family_index_count: u32,
17055    pub queue_family_indices: *const u32,
17056}
17057
17058impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
17059    #[inline]
17060    fn default() -> Self {
17061        Self {
17062            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
17063            next: ptr::null(),
17064            drm_format_modifier: u64::default(),
17065            sharing_mode: SharingMode::default(),
17066            queue_family_index_count: u32::default(),
17067            queue_family_indices: ptr::null(),
17068        }
17069    }
17070}
17071
17072unsafe impl Send for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
17073unsafe impl Sync for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
17074
17075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
17076#[repr(C)]
17077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17078pub struct PhysicalDeviceImageFormatInfo2 {
17079    pub s_type: StructureType,
17080    pub next: *const c_void,
17081    pub format: Format,
17082    pub type_: ImageType,
17083    pub tiling: ImageTiling,
17084    pub usage: ImageUsageFlags,
17085    pub flags: ImageCreateFlags,
17086}
17087
17088impl Default for PhysicalDeviceImageFormatInfo2 {
17089    #[inline]
17090    fn default() -> Self {
17091        Self {
17092            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
17093            next: ptr::null(),
17094            format: Format::default(),
17095            type_: ImageType::default(),
17096            tiling: ImageTiling::default(),
17097            usage: ImageUsageFlags::default(),
17098            flags: ImageCreateFlags::default(),
17099        }
17100    }
17101}
17102
17103unsafe impl Send for PhysicalDeviceImageFormatInfo2 {}
17104unsafe impl Sync for PhysicalDeviceImageFormatInfo2 {}
17105
17106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
17107#[repr(C)]
17108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17109pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
17110    pub s_type: StructureType,
17111    pub next: *mut c_void,
17112    pub texture_block_match2: Bool32,
17113}
17114
17115impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
17116    #[inline]
17117    fn default() -> Self {
17118        Self {
17119            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
17120            next: ptr::null_mut(),
17121            texture_block_match2: Bool32::default(),
17122        }
17123    }
17124}
17125
17126unsafe impl Send for PhysicalDeviceImageProcessing2FeaturesQCOM {}
17127unsafe impl Sync for PhysicalDeviceImageProcessing2FeaturesQCOM {}
17128
17129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
17130#[repr(C)]
17131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17132pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
17133    pub s_type: StructureType,
17134    pub next: *mut c_void,
17135    pub max_block_match_window: Extent2D,
17136}
17137
17138impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
17139    #[inline]
17140    fn default() -> Self {
17141        Self {
17142            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
17143            next: ptr::null_mut(),
17144            max_block_match_window: Extent2D::default(),
17145        }
17146    }
17147}
17148
17149unsafe impl Send for PhysicalDeviceImageProcessing2PropertiesQCOM {}
17150unsafe impl Sync for PhysicalDeviceImageProcessing2PropertiesQCOM {}
17151
17152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
17153#[repr(C)]
17154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17155pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
17156    pub s_type: StructureType,
17157    pub next: *mut c_void,
17158    pub texture_sample_weighted: Bool32,
17159    pub texture_box_filter: Bool32,
17160    pub texture_block_match: Bool32,
17161}
17162
17163impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
17164    #[inline]
17165    fn default() -> Self {
17166        Self {
17167            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
17168            next: ptr::null_mut(),
17169            texture_sample_weighted: Bool32::default(),
17170            texture_box_filter: Bool32::default(),
17171            texture_block_match: Bool32::default(),
17172        }
17173    }
17174}
17175
17176unsafe impl Send for PhysicalDeviceImageProcessingFeaturesQCOM {}
17177unsafe impl Sync for PhysicalDeviceImageProcessingFeaturesQCOM {}
17178
17179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
17180#[repr(C)]
17181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17182pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
17183    pub s_type: StructureType,
17184    pub next: *mut c_void,
17185    pub max_weight_filter_phases: u32,
17186    pub max_weight_filter_dimension: Extent2D,
17187    pub max_block_match_region: Extent2D,
17188    pub max_box_filter_block_size: Extent2D,
17189}
17190
17191impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
17192    #[inline]
17193    fn default() -> Self {
17194        Self {
17195            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
17196            next: ptr::null_mut(),
17197            max_weight_filter_phases: u32::default(),
17198            max_weight_filter_dimension: Extent2D::default(),
17199            max_block_match_region: Extent2D::default(),
17200            max_box_filter_block_size: Extent2D::default(),
17201        }
17202    }
17203}
17204
17205unsafe impl Send for PhysicalDeviceImageProcessingPropertiesQCOM {}
17206unsafe impl Sync for PhysicalDeviceImageProcessingPropertiesQCOM {}
17207
17208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
17209#[repr(C)]
17210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17211pub struct PhysicalDeviceImageRobustnessFeatures {
17212    pub s_type: StructureType,
17213    pub next: *mut c_void,
17214    pub robust_image_access: Bool32,
17215}
17216
17217impl Default for PhysicalDeviceImageRobustnessFeatures {
17218    #[inline]
17219    fn default() -> Self {
17220        Self {
17221            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
17222            next: ptr::null_mut(),
17223            robust_image_access: Bool32::default(),
17224        }
17225    }
17226}
17227
17228unsafe impl Send for PhysicalDeviceImageRobustnessFeatures {}
17229unsafe impl Sync for PhysicalDeviceImageRobustnessFeatures {}
17230
17231/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
17232#[repr(C)]
17233#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17234pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17235    pub s_type: StructureType,
17236    pub next: *mut c_void,
17237    pub image_sliced_view_of_3d: Bool32,
17238}
17239
17240impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17241    #[inline]
17242    fn default() -> Self {
17243        Self {
17244            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
17245            next: ptr::null_mut(),
17246            image_sliced_view_of_3d: Bool32::default(),
17247        }
17248    }
17249}
17250
17251unsafe impl Send for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17252unsafe impl Sync for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17253
17254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
17255#[repr(C)]
17256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17257pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
17258    pub s_type: StructureType,
17259    pub next: *mut c_void,
17260    pub image_view_type: ImageViewType,
17261}
17262
17263impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
17264    #[inline]
17265    fn default() -> Self {
17266        Self {
17267            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
17268            next: ptr::null_mut(),
17269            image_view_type: ImageViewType::default(),
17270        }
17271    }
17272}
17273
17274unsafe impl Send for PhysicalDeviceImageViewImageFormatInfoEXT {}
17275unsafe impl Sync for PhysicalDeviceImageViewImageFormatInfoEXT {}
17276
17277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
17278#[repr(C)]
17279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17280pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
17281    pub s_type: StructureType,
17282    pub next: *mut c_void,
17283    pub min_lod: Bool32,
17284}
17285
17286impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
17287    #[inline]
17288    fn default() -> Self {
17289        Self {
17290            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
17291            next: ptr::null_mut(),
17292            min_lod: Bool32::default(),
17293        }
17294    }
17295}
17296
17297unsafe impl Send for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17298unsafe impl Sync for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17299
17300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
17301#[repr(C)]
17302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17303pub struct PhysicalDeviceImagelessFramebufferFeatures {
17304    pub s_type: StructureType,
17305    pub next: *mut c_void,
17306    pub imageless_framebuffer: Bool32,
17307}
17308
17309impl Default for PhysicalDeviceImagelessFramebufferFeatures {
17310    #[inline]
17311    fn default() -> Self {
17312        Self {
17313            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
17314            next: ptr::null_mut(),
17315            imageless_framebuffer: Bool32::default(),
17316        }
17317    }
17318}
17319
17320unsafe impl Send for PhysicalDeviceImagelessFramebufferFeatures {}
17321unsafe impl Sync for PhysicalDeviceImagelessFramebufferFeatures {}
17322
17323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
17324#[repr(C)]
17325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17326pub struct PhysicalDeviceIndexTypeUint8Features {
17327    pub s_type: StructureType,
17328    pub next: *mut c_void,
17329    pub index_type_uint8: Bool32,
17330}
17331
17332impl Default for PhysicalDeviceIndexTypeUint8Features {
17333    #[inline]
17334    fn default() -> Self {
17335        Self {
17336            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
17337            next: ptr::null_mut(),
17338            index_type_uint8: Bool32::default(),
17339        }
17340    }
17341}
17342
17343unsafe impl Send for PhysicalDeviceIndexTypeUint8Features {}
17344unsafe impl Sync for PhysicalDeviceIndexTypeUint8Features {}
17345
17346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
17347#[repr(C)]
17348#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17349pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
17350    pub s_type: StructureType,
17351    pub next: *mut c_void,
17352    pub inherited_viewport_scissor_2d: Bool32,
17353}
17354
17355impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
17356    #[inline]
17357    fn default() -> Self {
17358        Self {
17359            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
17360            next: ptr::null_mut(),
17361            inherited_viewport_scissor_2d: Bool32::default(),
17362        }
17363    }
17364}
17365
17366unsafe impl Send for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17367unsafe impl Sync for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17368
17369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
17370#[repr(C)]
17371#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17372pub struct PhysicalDeviceInlineUniformBlockFeatures {
17373    pub s_type: StructureType,
17374    pub next: *mut c_void,
17375    pub inline_uniform_block: Bool32,
17376    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
17377}
17378
17379impl Default for PhysicalDeviceInlineUniformBlockFeatures {
17380    #[inline]
17381    fn default() -> Self {
17382        Self {
17383            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
17384            next: ptr::null_mut(),
17385            inline_uniform_block: Bool32::default(),
17386            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
17387        }
17388    }
17389}
17390
17391unsafe impl Send for PhysicalDeviceInlineUniformBlockFeatures {}
17392unsafe impl Sync for PhysicalDeviceInlineUniformBlockFeatures {}
17393
17394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
17395#[repr(C)]
17396#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17397pub struct PhysicalDeviceInlineUniformBlockProperties {
17398    pub s_type: StructureType,
17399    pub next: *mut c_void,
17400    pub max_inline_uniform_block_size: u32,
17401    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
17402    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
17403    pub max_descriptor_set_inline_uniform_blocks: u32,
17404    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
17405}
17406
17407impl Default for PhysicalDeviceInlineUniformBlockProperties {
17408    #[inline]
17409    fn default() -> Self {
17410        Self {
17411            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
17412            next: ptr::null_mut(),
17413            max_inline_uniform_block_size: u32::default(),
17414            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
17415            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
17416            max_descriptor_set_inline_uniform_blocks: u32::default(),
17417            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
17418        }
17419    }
17420}
17421
17422unsafe impl Send for PhysicalDeviceInlineUniformBlockProperties {}
17423unsafe impl Sync for PhysicalDeviceInlineUniformBlockProperties {}
17424
17425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
17426#[repr(C)]
17427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17428pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17429    pub s_type: StructureType,
17430    pub next: *mut c_void,
17431    pub invocation_mask: Bool32,
17432}
17433
17434impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17435    #[inline]
17436    fn default() -> Self {
17437        Self {
17438            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
17439            next: ptr::null_mut(),
17440            invocation_mask: Bool32::default(),
17441        }
17442    }
17443}
17444
17445unsafe impl Send for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
17446unsafe impl Sync for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
17447
17448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
17449#[repr(C)]
17450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17451pub struct PhysicalDeviceLayeredApiPropertiesKHR {
17452    pub s_type: StructureType,
17453    pub next: *mut c_void,
17454    pub vendor_id: u32,
17455    pub device_id: u32,
17456    pub layered_api: PhysicalDeviceLayeredApiKHR,
17457    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
17458}
17459
17460impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
17461    #[inline]
17462    fn default() -> Self {
17463        Self {
17464            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
17465            next: ptr::null_mut(),
17466            vendor_id: u32::default(),
17467            device_id: u32::default(),
17468            layered_api: PhysicalDeviceLayeredApiKHR::default(),
17469            device_name: StringArray::default(),
17470        }
17471    }
17472}
17473
17474unsafe impl Send for PhysicalDeviceLayeredApiPropertiesKHR {}
17475unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesKHR {}
17476
17477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
17478#[repr(C)]
17479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17480pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
17481    pub s_type: StructureType,
17482    pub next: *mut c_void,
17483    pub layered_api_count: u32,
17484    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
17485}
17486
17487impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
17488    #[inline]
17489    fn default() -> Self {
17490        Self {
17491            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
17492            next: ptr::null_mut(),
17493            layered_api_count: u32::default(),
17494            layered_apis: ptr::null_mut(),
17495        }
17496    }
17497}
17498
17499unsafe impl Send for PhysicalDeviceLayeredApiPropertiesListKHR {}
17500unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesListKHR {}
17501
17502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
17503#[repr(C)]
17504#[derive(Copy, Clone, Debug, PartialEq)]
17505pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17506    pub s_type: StructureType,
17507    pub next: *mut c_void,
17508    pub properties: PhysicalDeviceProperties2,
17509}
17510
17511impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17512    #[inline]
17513    fn default() -> Self {
17514        Self {
17515            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
17516            next: ptr::null_mut(),
17517            properties: PhysicalDeviceProperties2::default(),
17518        }
17519    }
17520}
17521
17522unsafe impl Send for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17523unsafe impl Sync for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17524
17525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
17526#[repr(C)]
17527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17528pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
17529    pub s_type: StructureType,
17530    pub next: *mut c_void,
17531    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
17532}
17533
17534impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
17535    #[inline]
17536    fn default() -> Self {
17537        Self {
17538            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
17539            next: ptr::null_mut(),
17540            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
17541        }
17542    }
17543}
17544
17545unsafe impl Send for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17546unsafe impl Sync for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17547
17548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
17549#[repr(C)]
17550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17551pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
17552    pub s_type: StructureType,
17553    pub next: *mut c_void,
17554    pub legacy_dithering: Bool32,
17555}
17556
17557impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
17558    #[inline]
17559    fn default() -> Self {
17560        Self {
17561            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
17562            next: ptr::null_mut(),
17563            legacy_dithering: Bool32::default(),
17564        }
17565    }
17566}
17567
17568unsafe impl Send for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17569unsafe impl Sync for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17570
17571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
17572#[repr(C)]
17573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17574pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17575    pub s_type: StructureType,
17576    pub next: *mut c_void,
17577    pub legacy_vertex_attributes: Bool32,
17578}
17579
17580impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17581    #[inline]
17582    fn default() -> Self {
17583        Self {
17584            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
17585            next: ptr::null_mut(),
17586            legacy_vertex_attributes: Bool32::default(),
17587        }
17588    }
17589}
17590
17591unsafe impl Send for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17592unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17593
17594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
17595#[repr(C)]
17596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17597pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17598    pub s_type: StructureType,
17599    pub next: *mut c_void,
17600    pub native_unaligned_performance: Bool32,
17601}
17602
17603impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17604    #[inline]
17605    fn default() -> Self {
17606        Self {
17607            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
17608            next: ptr::null_mut(),
17609            native_unaligned_performance: Bool32::default(),
17610        }
17611    }
17612}
17613
17614unsafe impl Send for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17615unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17616
17617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
17618#[repr(C)]
17619#[derive(Copy, Clone, Default, Debug, PartialEq)]
17620pub struct PhysicalDeviceLimits {
17621    pub max_image_dimension_1d: u32,
17622    pub max_image_dimension_2d: u32,
17623    pub max_image_dimension_3d: u32,
17624    pub max_image_dimension_cube: u32,
17625    pub max_image_array_layers: u32,
17626    pub max_texel_buffer_elements: u32,
17627    pub max_uniform_buffer_range: u32,
17628    pub max_storage_buffer_range: u32,
17629    pub max_push_constants_size: u32,
17630    pub max_memory_allocation_count: u32,
17631    pub max_sampler_allocation_count: u32,
17632    pub buffer_image_granularity: DeviceSize,
17633    pub sparse_address_space_size: DeviceSize,
17634    pub max_bound_descriptor_sets: u32,
17635    pub max_per_stage_descriptor_samplers: u32,
17636    pub max_per_stage_descriptor_uniform_buffers: u32,
17637    pub max_per_stage_descriptor_storage_buffers: u32,
17638    pub max_per_stage_descriptor_sampled_images: u32,
17639    pub max_per_stage_descriptor_storage_images: u32,
17640    pub max_per_stage_descriptor_input_attachments: u32,
17641    pub max_per_stage_resources: u32,
17642    pub max_descriptor_set_samplers: u32,
17643    pub max_descriptor_set_uniform_buffers: u32,
17644    pub max_descriptor_set_uniform_buffers_dynamic: u32,
17645    pub max_descriptor_set_storage_buffers: u32,
17646    pub max_descriptor_set_storage_buffers_dynamic: u32,
17647    pub max_descriptor_set_sampled_images: u32,
17648    pub max_descriptor_set_storage_images: u32,
17649    pub max_descriptor_set_input_attachments: u32,
17650    pub max_vertex_input_attributes: u32,
17651    pub max_vertex_input_bindings: u32,
17652    pub max_vertex_input_attribute_offset: u32,
17653    pub max_vertex_input_binding_stride: u32,
17654    pub max_vertex_output_components: u32,
17655    pub max_tessellation_generation_level: u32,
17656    pub max_tessellation_patch_size: u32,
17657    pub max_tessellation_control_per_vertex_input_components: u32,
17658    pub max_tessellation_control_per_vertex_output_components: u32,
17659    pub max_tessellation_control_per_patch_output_components: u32,
17660    pub max_tessellation_control_total_output_components: u32,
17661    pub max_tessellation_evaluation_input_components: u32,
17662    pub max_tessellation_evaluation_output_components: u32,
17663    pub max_geometry_shader_invocations: u32,
17664    pub max_geometry_input_components: u32,
17665    pub max_geometry_output_components: u32,
17666    pub max_geometry_output_vertices: u32,
17667    pub max_geometry_total_output_components: u32,
17668    pub max_fragment_input_components: u32,
17669    pub max_fragment_output_attachments: u32,
17670    pub max_fragment_dual_src_attachments: u32,
17671    pub max_fragment_combined_output_resources: u32,
17672    pub max_compute_shared_memory_size: u32,
17673    pub max_compute_work_group_count: [u32; 3],
17674    pub max_compute_work_group_invocations: u32,
17675    pub max_compute_work_group_size: [u32; 3],
17676    pub sub_pixel_precision_bits: u32,
17677    pub sub_texel_precision_bits: u32,
17678    pub mipmap_precision_bits: u32,
17679    pub max_draw_indexed_index_value: u32,
17680    pub max_draw_indirect_count: u32,
17681    pub max_sampler_lod_bias: f32,
17682    pub max_sampler_anisotropy: f32,
17683    pub max_viewports: u32,
17684    pub max_viewport_dimensions: [u32; 2],
17685    pub viewport_bounds_range: [f32; 2],
17686    pub viewport_sub_pixel_bits: u32,
17687    pub min_memory_map_alignment: usize,
17688    pub min_texel_buffer_offset_alignment: DeviceSize,
17689    pub min_uniform_buffer_offset_alignment: DeviceSize,
17690    pub min_storage_buffer_offset_alignment: DeviceSize,
17691    pub min_texel_offset: i32,
17692    pub max_texel_offset: u32,
17693    pub min_texel_gather_offset: i32,
17694    pub max_texel_gather_offset: u32,
17695    pub min_interpolation_offset: f32,
17696    pub max_interpolation_offset: f32,
17697    pub sub_pixel_interpolation_offset_bits: u32,
17698    pub max_framebuffer_width: u32,
17699    pub max_framebuffer_height: u32,
17700    pub max_framebuffer_layers: u32,
17701    pub framebuffer_color_sample_counts: SampleCountFlags,
17702    pub framebuffer_depth_sample_counts: SampleCountFlags,
17703    pub framebuffer_stencil_sample_counts: SampleCountFlags,
17704    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
17705    pub max_color_attachments: u32,
17706    pub sampled_image_color_sample_counts: SampleCountFlags,
17707    pub sampled_image_integer_sample_counts: SampleCountFlags,
17708    pub sampled_image_depth_sample_counts: SampleCountFlags,
17709    pub sampled_image_stencil_sample_counts: SampleCountFlags,
17710    pub storage_image_sample_counts: SampleCountFlags,
17711    pub max_sample_mask_words: u32,
17712    pub timestamp_compute_and_graphics: Bool32,
17713    pub timestamp_period: f32,
17714    pub max_clip_distances: u32,
17715    pub max_cull_distances: u32,
17716    pub max_combined_clip_and_cull_distances: u32,
17717    pub discrete_queue_priorities: u32,
17718    pub point_size_range: [f32; 2],
17719    pub line_width_range: [f32; 2],
17720    pub point_size_granularity: f32,
17721    pub line_width_granularity: f32,
17722    pub strict_lines: Bool32,
17723    pub standard_sample_locations: Bool32,
17724    pub optimal_buffer_copy_offset_alignment: DeviceSize,
17725    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
17726    pub non_coherent_atom_size: DeviceSize,
17727}
17728
17729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
17730#[repr(C)]
17731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17732pub struct PhysicalDeviceLineRasterizationFeatures {
17733    pub s_type: StructureType,
17734    pub next: *mut c_void,
17735    pub rectangular_lines: Bool32,
17736    pub bresenham_lines: Bool32,
17737    pub smooth_lines: Bool32,
17738    pub stippled_rectangular_lines: Bool32,
17739    pub stippled_bresenham_lines: Bool32,
17740    pub stippled_smooth_lines: Bool32,
17741}
17742
17743impl Default for PhysicalDeviceLineRasterizationFeatures {
17744    #[inline]
17745    fn default() -> Self {
17746        Self {
17747            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
17748            next: ptr::null_mut(),
17749            rectangular_lines: Bool32::default(),
17750            bresenham_lines: Bool32::default(),
17751            smooth_lines: Bool32::default(),
17752            stippled_rectangular_lines: Bool32::default(),
17753            stippled_bresenham_lines: Bool32::default(),
17754            stippled_smooth_lines: Bool32::default(),
17755        }
17756    }
17757}
17758
17759unsafe impl Send for PhysicalDeviceLineRasterizationFeatures {}
17760unsafe impl Sync for PhysicalDeviceLineRasterizationFeatures {}
17761
17762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
17763#[repr(C)]
17764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17765pub struct PhysicalDeviceLineRasterizationProperties {
17766    pub s_type: StructureType,
17767    pub next: *mut c_void,
17768    pub line_sub_pixel_precision_bits: u32,
17769}
17770
17771impl Default for PhysicalDeviceLineRasterizationProperties {
17772    #[inline]
17773    fn default() -> Self {
17774        Self {
17775            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
17776            next: ptr::null_mut(),
17777            line_sub_pixel_precision_bits: u32::default(),
17778        }
17779    }
17780}
17781
17782unsafe impl Send for PhysicalDeviceLineRasterizationProperties {}
17783unsafe impl Sync for PhysicalDeviceLineRasterizationProperties {}
17784
17785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
17786#[repr(C)]
17787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17788pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
17789    pub s_type: StructureType,
17790    pub next: *mut c_void,
17791    pub linear_color_attachment: Bool32,
17792}
17793
17794impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
17795    #[inline]
17796    fn default() -> Self {
17797        Self {
17798            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
17799            next: ptr::null_mut(),
17800            linear_color_attachment: Bool32::default(),
17801        }
17802    }
17803}
17804
17805unsafe impl Send for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17806unsafe impl Sync for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17807
17808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10FeaturesKHR.html>
17809#[repr(C)]
17810#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17811pub struct PhysicalDeviceMaintenance10FeaturesKHR {
17812    pub s_type: StructureType,
17813    pub next: *mut c_void,
17814    pub maintenance10: Bool32,
17815}
17816
17817impl Default for PhysicalDeviceMaintenance10FeaturesKHR {
17818    #[inline]
17819    fn default() -> Self {
17820        Self {
17821            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR,
17822            next: ptr::null_mut(),
17823            maintenance10: Bool32::default(),
17824        }
17825    }
17826}
17827
17828unsafe impl Send for PhysicalDeviceMaintenance10FeaturesKHR {}
17829unsafe impl Sync for PhysicalDeviceMaintenance10FeaturesKHR {}
17830
17831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10PropertiesKHR.html>
17832#[repr(C)]
17833#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17834pub struct PhysicalDeviceMaintenance10PropertiesKHR {
17835    pub s_type: StructureType,
17836    pub next: *mut c_void,
17837    pub rgba4_opaque_black_swizzled: Bool32,
17838    pub resolve_srgb_format_applies_transfer_function: Bool32,
17839    pub resolve_srgb_format_supports_transfer_function_control: Bool32,
17840}
17841
17842impl Default for PhysicalDeviceMaintenance10PropertiesKHR {
17843    #[inline]
17844    fn default() -> Self {
17845        Self {
17846            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR,
17847            next: ptr::null_mut(),
17848            rgba4_opaque_black_swizzled: Bool32::default(),
17849            resolve_srgb_format_applies_transfer_function: Bool32::default(),
17850            resolve_srgb_format_supports_transfer_function_control: Bool32::default(),
17851        }
17852    }
17853}
17854
17855unsafe impl Send for PhysicalDeviceMaintenance10PropertiesKHR {}
17856unsafe impl Sync for PhysicalDeviceMaintenance10PropertiesKHR {}
17857
17858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
17859#[repr(C)]
17860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17861pub struct PhysicalDeviceMaintenance3Properties {
17862    pub s_type: StructureType,
17863    pub next: *mut c_void,
17864    pub max_per_set_descriptors: u32,
17865    pub max_memory_allocation_size: DeviceSize,
17866}
17867
17868impl Default for PhysicalDeviceMaintenance3Properties {
17869    #[inline]
17870    fn default() -> Self {
17871        Self {
17872            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
17873            next: ptr::null_mut(),
17874            max_per_set_descriptors: u32::default(),
17875            max_memory_allocation_size: DeviceSize::default(),
17876        }
17877    }
17878}
17879
17880unsafe impl Send for PhysicalDeviceMaintenance3Properties {}
17881unsafe impl Sync for PhysicalDeviceMaintenance3Properties {}
17882
17883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
17884#[repr(C)]
17885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17886pub struct PhysicalDeviceMaintenance4Features {
17887    pub s_type: StructureType,
17888    pub next: *mut c_void,
17889    pub maintenance4: Bool32,
17890}
17891
17892impl Default for PhysicalDeviceMaintenance4Features {
17893    #[inline]
17894    fn default() -> Self {
17895        Self {
17896            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
17897            next: ptr::null_mut(),
17898            maintenance4: Bool32::default(),
17899        }
17900    }
17901}
17902
17903unsafe impl Send for PhysicalDeviceMaintenance4Features {}
17904unsafe impl Sync for PhysicalDeviceMaintenance4Features {}
17905
17906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
17907#[repr(C)]
17908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17909pub struct PhysicalDeviceMaintenance4Properties {
17910    pub s_type: StructureType,
17911    pub next: *mut c_void,
17912    pub max_buffer_size: DeviceSize,
17913}
17914
17915impl Default for PhysicalDeviceMaintenance4Properties {
17916    #[inline]
17917    fn default() -> Self {
17918        Self {
17919            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
17920            next: ptr::null_mut(),
17921            max_buffer_size: DeviceSize::default(),
17922        }
17923    }
17924}
17925
17926unsafe impl Send for PhysicalDeviceMaintenance4Properties {}
17927unsafe impl Sync for PhysicalDeviceMaintenance4Properties {}
17928
17929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
17930#[repr(C)]
17931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17932pub struct PhysicalDeviceMaintenance5Features {
17933    pub s_type: StructureType,
17934    pub next: *mut c_void,
17935    pub maintenance5: Bool32,
17936}
17937
17938impl Default for PhysicalDeviceMaintenance5Features {
17939    #[inline]
17940    fn default() -> Self {
17941        Self {
17942            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
17943            next: ptr::null_mut(),
17944            maintenance5: Bool32::default(),
17945        }
17946    }
17947}
17948
17949unsafe impl Send for PhysicalDeviceMaintenance5Features {}
17950unsafe impl Sync for PhysicalDeviceMaintenance5Features {}
17951
17952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
17953#[repr(C)]
17954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17955pub struct PhysicalDeviceMaintenance5Properties {
17956    pub s_type: StructureType,
17957    pub next: *mut c_void,
17958    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
17959    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
17960    pub depth_stencil_swizzle_one_support: Bool32,
17961    pub polygon_mode_point_size: Bool32,
17962    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
17963    pub non_strict_wide_lines_use_parallelogram: Bool32,
17964}
17965
17966impl Default for PhysicalDeviceMaintenance5Properties {
17967    #[inline]
17968    fn default() -> Self {
17969        Self {
17970            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
17971            next: ptr::null_mut(),
17972            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
17973            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
17974            depth_stencil_swizzle_one_support: Bool32::default(),
17975            polygon_mode_point_size: Bool32::default(),
17976            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
17977            non_strict_wide_lines_use_parallelogram: Bool32::default(),
17978        }
17979    }
17980}
17981
17982unsafe impl Send for PhysicalDeviceMaintenance5Properties {}
17983unsafe impl Sync for PhysicalDeviceMaintenance5Properties {}
17984
17985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
17986#[repr(C)]
17987#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17988pub struct PhysicalDeviceMaintenance6Features {
17989    pub s_type: StructureType,
17990    pub next: *mut c_void,
17991    pub maintenance6: Bool32,
17992}
17993
17994impl Default for PhysicalDeviceMaintenance6Features {
17995    #[inline]
17996    fn default() -> Self {
17997        Self {
17998            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
17999            next: ptr::null_mut(),
18000            maintenance6: Bool32::default(),
18001        }
18002    }
18003}
18004
18005unsafe impl Send for PhysicalDeviceMaintenance6Features {}
18006unsafe impl Sync for PhysicalDeviceMaintenance6Features {}
18007
18008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
18009#[repr(C)]
18010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18011pub struct PhysicalDeviceMaintenance6Properties {
18012    pub s_type: StructureType,
18013    pub next: *mut c_void,
18014    pub block_texel_view_compatible_multiple_layers: Bool32,
18015    pub max_combined_image_sampler_descriptor_count: u32,
18016    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
18017}
18018
18019impl Default for PhysicalDeviceMaintenance6Properties {
18020    #[inline]
18021    fn default() -> Self {
18022        Self {
18023            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
18024            next: ptr::null_mut(),
18025            block_texel_view_compatible_multiple_layers: Bool32::default(),
18026            max_combined_image_sampler_descriptor_count: u32::default(),
18027            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
18028        }
18029    }
18030}
18031
18032unsafe impl Send for PhysicalDeviceMaintenance6Properties {}
18033unsafe impl Sync for PhysicalDeviceMaintenance6Properties {}
18034
18035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
18036#[repr(C)]
18037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18038pub struct PhysicalDeviceMaintenance7FeaturesKHR {
18039    pub s_type: StructureType,
18040    pub next: *mut c_void,
18041    pub maintenance7: Bool32,
18042}
18043
18044impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
18045    #[inline]
18046    fn default() -> Self {
18047        Self {
18048            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
18049            next: ptr::null_mut(),
18050            maintenance7: Bool32::default(),
18051        }
18052    }
18053}
18054
18055unsafe impl Send for PhysicalDeviceMaintenance7FeaturesKHR {}
18056unsafe impl Sync for PhysicalDeviceMaintenance7FeaturesKHR {}
18057
18058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
18059#[repr(C)]
18060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18061pub struct PhysicalDeviceMaintenance7PropertiesKHR {
18062    pub s_type: StructureType,
18063    pub next: *mut c_void,
18064    pub robust_fragment_shading_rate_attachment_access: Bool32,
18065    pub separate_depth_stencil_attachment_access: Bool32,
18066    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
18067    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
18068    pub max_descriptor_set_total_buffers_dynamic: u32,
18069    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
18070    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
18071    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
18072}
18073
18074impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
18075    #[inline]
18076    fn default() -> Self {
18077        Self {
18078            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
18079            next: ptr::null_mut(),
18080            robust_fragment_shading_rate_attachment_access: Bool32::default(),
18081            separate_depth_stencil_attachment_access: Bool32::default(),
18082            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
18083            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
18084            max_descriptor_set_total_buffers_dynamic: u32::default(),
18085            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
18086            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
18087            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
18088        }
18089    }
18090}
18091
18092unsafe impl Send for PhysicalDeviceMaintenance7PropertiesKHR {}
18093unsafe impl Sync for PhysicalDeviceMaintenance7PropertiesKHR {}
18094
18095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
18096#[repr(C)]
18097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18098pub struct PhysicalDeviceMaintenance8FeaturesKHR {
18099    pub s_type: StructureType,
18100    pub next: *mut c_void,
18101    pub maintenance8: Bool32,
18102}
18103
18104impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
18105    #[inline]
18106    fn default() -> Self {
18107        Self {
18108            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
18109            next: ptr::null_mut(),
18110            maintenance8: Bool32::default(),
18111        }
18112    }
18113}
18114
18115unsafe impl Send for PhysicalDeviceMaintenance8FeaturesKHR {}
18116unsafe impl Sync for PhysicalDeviceMaintenance8FeaturesKHR {}
18117
18118/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html>
18119#[repr(C)]
18120#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18121pub struct PhysicalDeviceMaintenance9FeaturesKHR {
18122    pub s_type: StructureType,
18123    pub next: *mut c_void,
18124    pub maintenance9: Bool32,
18125}
18126
18127impl Default for PhysicalDeviceMaintenance9FeaturesKHR {
18128    #[inline]
18129    fn default() -> Self {
18130        Self {
18131            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR,
18132            next: ptr::null_mut(),
18133            maintenance9: Bool32::default(),
18134        }
18135    }
18136}
18137
18138unsafe impl Send for PhysicalDeviceMaintenance9FeaturesKHR {}
18139unsafe impl Sync for PhysicalDeviceMaintenance9FeaturesKHR {}
18140
18141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html>
18142#[repr(C)]
18143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18144pub struct PhysicalDeviceMaintenance9PropertiesKHR {
18145    pub s_type: StructureType,
18146    pub next: *mut c_void,
18147    pub image_2d_view_of_3d_sparse: Bool32,
18148    pub default_vertex_attribute_value: DefaultVertexAttributeValueKHR,
18149}
18150
18151impl Default for PhysicalDeviceMaintenance9PropertiesKHR {
18152    #[inline]
18153    fn default() -> Self {
18154        Self {
18155            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR,
18156            next: ptr::null_mut(),
18157            image_2d_view_of_3d_sparse: Bool32::default(),
18158            default_vertex_attribute_value: DefaultVertexAttributeValueKHR::default(),
18159        }
18160    }
18161}
18162
18163unsafe impl Send for PhysicalDeviceMaintenance9PropertiesKHR {}
18164unsafe impl Sync for PhysicalDeviceMaintenance9PropertiesKHR {}
18165
18166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
18167#[repr(C)]
18168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18169pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
18170    pub s_type: StructureType,
18171    pub next: *mut c_void,
18172    pub memory_map_placed: Bool32,
18173    pub memory_map_range_placed: Bool32,
18174    pub memory_unmap_reserve: Bool32,
18175}
18176
18177impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
18178    #[inline]
18179    fn default() -> Self {
18180        Self {
18181            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
18182            next: ptr::null_mut(),
18183            memory_map_placed: Bool32::default(),
18184            memory_map_range_placed: Bool32::default(),
18185            memory_unmap_reserve: Bool32::default(),
18186        }
18187    }
18188}
18189
18190unsafe impl Send for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
18191unsafe impl Sync for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
18192
18193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
18194#[repr(C)]
18195#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18196pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
18197    pub s_type: StructureType,
18198    pub next: *mut c_void,
18199    pub min_placed_memory_map_alignment: DeviceSize,
18200}
18201
18202impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
18203    #[inline]
18204    fn default() -> Self {
18205        Self {
18206            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
18207            next: ptr::null_mut(),
18208            min_placed_memory_map_alignment: DeviceSize::default(),
18209        }
18210    }
18211}
18212
18213unsafe impl Send for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
18214unsafe impl Sync for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
18215
18216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
18217#[repr(C)]
18218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18219pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
18220    pub s_type: StructureType,
18221    pub next: *mut c_void,
18222    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS as usize],
18223    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS as usize],
18224}
18225
18226impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
18227    #[inline]
18228    fn default() -> Self {
18229        Self {
18230            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
18231            next: ptr::null_mut(),
18232            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
18233            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
18234        }
18235    }
18236}
18237
18238unsafe impl Send for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18239unsafe impl Sync for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18240
18241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesEXT.html>
18242#[repr(C)]
18243#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18244pub struct PhysicalDeviceMemoryDecompressionFeaturesEXT {
18245    pub s_type: StructureType,
18246    pub next: *mut c_void,
18247    pub memory_decompression: Bool32,
18248}
18249
18250impl Default for PhysicalDeviceMemoryDecompressionFeaturesEXT {
18251    #[inline]
18252    fn default() -> Self {
18253        Self {
18254            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT,
18255            next: ptr::null_mut(),
18256            memory_decompression: Bool32::default(),
18257        }
18258    }
18259}
18260
18261unsafe impl Send for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18262unsafe impl Sync for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18263
18264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesEXT.html>
18265#[repr(C)]
18266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18267pub struct PhysicalDeviceMemoryDecompressionPropertiesEXT {
18268    pub s_type: StructureType,
18269    pub next: *mut c_void,
18270    pub decompression_methods: MemoryDecompressionMethodFlagsEXT,
18271    pub max_decompression_indirect_count: u64,
18272}
18273
18274impl Default for PhysicalDeviceMemoryDecompressionPropertiesEXT {
18275    #[inline]
18276    fn default() -> Self {
18277        Self {
18278            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT,
18279            next: ptr::null_mut(),
18280            decompression_methods: MemoryDecompressionMethodFlagsEXT::default(),
18281            max_decompression_indirect_count: u64::default(),
18282        }
18283    }
18284}
18285
18286unsafe impl Send for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18287unsafe impl Sync for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18288
18289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
18290#[repr(C)]
18291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18292pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
18293    pub s_type: StructureType,
18294    pub next: *mut c_void,
18295    pub memory_priority: Bool32,
18296}
18297
18298impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
18299    #[inline]
18300    fn default() -> Self {
18301        Self {
18302            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
18303            next: ptr::null_mut(),
18304            memory_priority: Bool32::default(),
18305        }
18306    }
18307}
18308
18309unsafe impl Send for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18310unsafe impl Sync for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18311
18312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
18313#[repr(C)]
18314#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
18315pub struct PhysicalDeviceMemoryProperties {
18316    pub memory_type_count: u32,
18317    pub memory_types: [MemoryType; MAX_MEMORY_TYPES as usize],
18318    pub memory_heap_count: u32,
18319    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS as usize],
18320}
18321
18322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
18323#[repr(C)]
18324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18325pub struct PhysicalDeviceMemoryProperties2 {
18326    pub s_type: StructureType,
18327    pub next: *mut c_void,
18328    pub memory_properties: PhysicalDeviceMemoryProperties,
18329}
18330
18331impl Default for PhysicalDeviceMemoryProperties2 {
18332    #[inline]
18333    fn default() -> Self {
18334        Self {
18335            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
18336            next: ptr::null_mut(),
18337            memory_properties: PhysicalDeviceMemoryProperties::default(),
18338        }
18339    }
18340}
18341
18342unsafe impl Send for PhysicalDeviceMemoryProperties2 {}
18343unsafe impl Sync for PhysicalDeviceMemoryProperties2 {}
18344
18345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
18346#[repr(C)]
18347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18348pub struct PhysicalDeviceMeshShaderFeaturesEXT {
18349    pub s_type: StructureType,
18350    pub next: *mut c_void,
18351    pub task_shader: Bool32,
18352    pub mesh_shader: Bool32,
18353    pub multiview_mesh_shader: Bool32,
18354    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
18355    pub mesh_shader_queries: Bool32,
18356}
18357
18358impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
18359    #[inline]
18360    fn default() -> Self {
18361        Self {
18362            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
18363            next: ptr::null_mut(),
18364            task_shader: Bool32::default(),
18365            mesh_shader: Bool32::default(),
18366            multiview_mesh_shader: Bool32::default(),
18367            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
18368            mesh_shader_queries: Bool32::default(),
18369        }
18370    }
18371}
18372
18373unsafe impl Send for PhysicalDeviceMeshShaderFeaturesEXT {}
18374unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesEXT {}
18375
18376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
18377#[repr(C)]
18378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18379pub struct PhysicalDeviceMeshShaderFeaturesNV {
18380    pub s_type: StructureType,
18381    pub next: *mut c_void,
18382    pub task_shader: Bool32,
18383    pub mesh_shader: Bool32,
18384}
18385
18386impl Default for PhysicalDeviceMeshShaderFeaturesNV {
18387    #[inline]
18388    fn default() -> Self {
18389        Self {
18390            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
18391            next: ptr::null_mut(),
18392            task_shader: Bool32::default(),
18393            mesh_shader: Bool32::default(),
18394        }
18395    }
18396}
18397
18398unsafe impl Send for PhysicalDeviceMeshShaderFeaturesNV {}
18399unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesNV {}
18400
18401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
18402#[repr(C)]
18403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18404pub struct PhysicalDeviceMeshShaderPropertiesEXT {
18405    pub s_type: StructureType,
18406    pub next: *mut c_void,
18407    pub max_task_work_group_total_count: u32,
18408    pub max_task_work_group_count: [u32; 3],
18409    pub max_task_work_group_invocations: u32,
18410    pub max_task_work_group_size: [u32; 3],
18411    pub max_task_payload_size: u32,
18412    pub max_task_shared_memory_size: u32,
18413    pub max_task_payload_and_shared_memory_size: u32,
18414    pub max_mesh_work_group_total_count: u32,
18415    pub max_mesh_work_group_count: [u32; 3],
18416    pub max_mesh_work_group_invocations: u32,
18417    pub max_mesh_work_group_size: [u32; 3],
18418    pub max_mesh_shared_memory_size: u32,
18419    pub max_mesh_payload_and_shared_memory_size: u32,
18420    pub max_mesh_output_memory_size: u32,
18421    pub max_mesh_payload_and_output_memory_size: u32,
18422    pub max_mesh_output_components: u32,
18423    pub max_mesh_output_vertices: u32,
18424    pub max_mesh_output_primitives: u32,
18425    pub max_mesh_output_layers: u32,
18426    pub max_mesh_multiview_view_count: u32,
18427    pub mesh_output_per_vertex_granularity: u32,
18428    pub mesh_output_per_primitive_granularity: u32,
18429    pub max_preferred_task_work_group_invocations: u32,
18430    pub max_preferred_mesh_work_group_invocations: u32,
18431    pub prefers_local_invocation_vertex_output: Bool32,
18432    pub prefers_local_invocation_primitive_output: Bool32,
18433    pub prefers_compact_vertex_output: Bool32,
18434    pub prefers_compact_primitive_output: Bool32,
18435}
18436
18437impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
18438    #[inline]
18439    fn default() -> Self {
18440        Self {
18441            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
18442            next: ptr::null_mut(),
18443            max_task_work_group_total_count: u32::default(),
18444            max_task_work_group_count: [u32::default(); 3],
18445            max_task_work_group_invocations: u32::default(),
18446            max_task_work_group_size: [u32::default(); 3],
18447            max_task_payload_size: u32::default(),
18448            max_task_shared_memory_size: u32::default(),
18449            max_task_payload_and_shared_memory_size: u32::default(),
18450            max_mesh_work_group_total_count: u32::default(),
18451            max_mesh_work_group_count: [u32::default(); 3],
18452            max_mesh_work_group_invocations: u32::default(),
18453            max_mesh_work_group_size: [u32::default(); 3],
18454            max_mesh_shared_memory_size: u32::default(),
18455            max_mesh_payload_and_shared_memory_size: u32::default(),
18456            max_mesh_output_memory_size: u32::default(),
18457            max_mesh_payload_and_output_memory_size: u32::default(),
18458            max_mesh_output_components: u32::default(),
18459            max_mesh_output_vertices: u32::default(),
18460            max_mesh_output_primitives: u32::default(),
18461            max_mesh_output_layers: u32::default(),
18462            max_mesh_multiview_view_count: u32::default(),
18463            mesh_output_per_vertex_granularity: u32::default(),
18464            mesh_output_per_primitive_granularity: u32::default(),
18465            max_preferred_task_work_group_invocations: u32::default(),
18466            max_preferred_mesh_work_group_invocations: u32::default(),
18467            prefers_local_invocation_vertex_output: Bool32::default(),
18468            prefers_local_invocation_primitive_output: Bool32::default(),
18469            prefers_compact_vertex_output: Bool32::default(),
18470            prefers_compact_primitive_output: Bool32::default(),
18471        }
18472    }
18473}
18474
18475unsafe impl Send for PhysicalDeviceMeshShaderPropertiesEXT {}
18476unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesEXT {}
18477
18478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
18479#[repr(C)]
18480#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18481pub struct PhysicalDeviceMeshShaderPropertiesNV {
18482    pub s_type: StructureType,
18483    pub next: *mut c_void,
18484    pub max_draw_mesh_tasks_count: u32,
18485    pub max_task_work_group_invocations: u32,
18486    pub max_task_work_group_size: [u32; 3],
18487    pub max_task_total_memory_size: u32,
18488    pub max_task_output_count: u32,
18489    pub max_mesh_work_group_invocations: u32,
18490    pub max_mesh_work_group_size: [u32; 3],
18491    pub max_mesh_total_memory_size: u32,
18492    pub max_mesh_output_vertices: u32,
18493    pub max_mesh_output_primitives: u32,
18494    pub max_mesh_multiview_view_count: u32,
18495    pub mesh_output_per_vertex_granularity: u32,
18496    pub mesh_output_per_primitive_granularity: u32,
18497}
18498
18499impl Default for PhysicalDeviceMeshShaderPropertiesNV {
18500    #[inline]
18501    fn default() -> Self {
18502        Self {
18503            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
18504            next: ptr::null_mut(),
18505            max_draw_mesh_tasks_count: u32::default(),
18506            max_task_work_group_invocations: u32::default(),
18507            max_task_work_group_size: [u32::default(); 3],
18508            max_task_total_memory_size: u32::default(),
18509            max_task_output_count: u32::default(),
18510            max_mesh_work_group_invocations: u32::default(),
18511            max_mesh_work_group_size: [u32::default(); 3],
18512            max_mesh_total_memory_size: u32::default(),
18513            max_mesh_output_vertices: u32::default(),
18514            max_mesh_output_primitives: u32::default(),
18515            max_mesh_multiview_view_count: u32::default(),
18516            mesh_output_per_vertex_granularity: u32::default(),
18517            mesh_output_per_primitive_granularity: u32::default(),
18518        }
18519    }
18520}
18521
18522unsafe impl Send for PhysicalDeviceMeshShaderPropertiesNV {}
18523unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesNV {}
18524
18525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
18526#[repr(C)]
18527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18528pub struct PhysicalDeviceMultiDrawFeaturesEXT {
18529    pub s_type: StructureType,
18530    pub next: *mut c_void,
18531    pub multi_draw: Bool32,
18532}
18533
18534impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
18535    #[inline]
18536    fn default() -> Self {
18537        Self {
18538            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
18539            next: ptr::null_mut(),
18540            multi_draw: Bool32::default(),
18541        }
18542    }
18543}
18544
18545unsafe impl Send for PhysicalDeviceMultiDrawFeaturesEXT {}
18546unsafe impl Sync for PhysicalDeviceMultiDrawFeaturesEXT {}
18547
18548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
18549#[repr(C)]
18550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18551pub struct PhysicalDeviceMultiDrawPropertiesEXT {
18552    pub s_type: StructureType,
18553    pub next: *mut c_void,
18554    pub max_multi_draw_count: u32,
18555}
18556
18557impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
18558    #[inline]
18559    fn default() -> Self {
18560        Self {
18561            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
18562            next: ptr::null_mut(),
18563            max_multi_draw_count: u32::default(),
18564        }
18565    }
18566}
18567
18568unsafe impl Send for PhysicalDeviceMultiDrawPropertiesEXT {}
18569unsafe impl Sync for PhysicalDeviceMultiDrawPropertiesEXT {}
18570
18571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
18572#[repr(C)]
18573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18574pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18575    pub s_type: StructureType,
18576    pub next: *mut c_void,
18577    pub multisampled_render_to_single_sampled: Bool32,
18578}
18579
18580impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18581    #[inline]
18582    fn default() -> Self {
18583        Self {
18584            s_type:
18585                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
18586            next: ptr::null_mut(),
18587            multisampled_render_to_single_sampled: Bool32::default(),
18588        }
18589    }
18590}
18591
18592unsafe impl Send for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18593unsafe impl Sync for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18594
18595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
18596#[repr(C)]
18597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18598pub struct PhysicalDeviceMultiviewFeatures {
18599    pub s_type: StructureType,
18600    pub next: *mut c_void,
18601    pub multiview: Bool32,
18602    pub multiview_geometry_shader: Bool32,
18603    pub multiview_tessellation_shader: Bool32,
18604}
18605
18606impl Default for PhysicalDeviceMultiviewFeatures {
18607    #[inline]
18608    fn default() -> Self {
18609        Self {
18610            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
18611            next: ptr::null_mut(),
18612            multiview: Bool32::default(),
18613            multiview_geometry_shader: Bool32::default(),
18614            multiview_tessellation_shader: Bool32::default(),
18615        }
18616    }
18617}
18618
18619unsafe impl Send for PhysicalDeviceMultiviewFeatures {}
18620unsafe impl Sync for PhysicalDeviceMultiviewFeatures {}
18621
18622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
18623#[repr(C)]
18624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18625pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18626    pub s_type: StructureType,
18627    pub next: *mut c_void,
18628    pub per_view_position_all_components: Bool32,
18629}
18630
18631impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18632    #[inline]
18633    fn default() -> Self {
18634        Self {
18635            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
18636            next: ptr::null_mut(),
18637            per_view_position_all_components: Bool32::default(),
18638        }
18639    }
18640}
18641
18642unsafe impl Send for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18643unsafe impl Sync for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18644
18645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
18646#[repr(C)]
18647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18648pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18649    pub s_type: StructureType,
18650    pub next: *mut c_void,
18651    pub multiview_per_view_render_areas: Bool32,
18652}
18653
18654impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18655    #[inline]
18656    fn default() -> Self {
18657        Self {
18658            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
18659            next: ptr::null_mut(),
18660            multiview_per_view_render_areas: Bool32::default(),
18661        }
18662    }
18663}
18664
18665unsafe impl Send for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18666unsafe impl Sync for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18667
18668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
18669#[repr(C)]
18670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18671pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18672    pub s_type: StructureType,
18673    pub next: *mut c_void,
18674    pub multiview_per_view_viewports: Bool32,
18675}
18676
18677impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18678    #[inline]
18679    fn default() -> Self {
18680        Self {
18681            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
18682            next: ptr::null_mut(),
18683            multiview_per_view_viewports: Bool32::default(),
18684        }
18685    }
18686}
18687
18688unsafe impl Send for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18689unsafe impl Sync for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18690
18691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
18692#[repr(C)]
18693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18694pub struct PhysicalDeviceMultiviewProperties {
18695    pub s_type: StructureType,
18696    pub next: *mut c_void,
18697    pub max_multiview_view_count: u32,
18698    pub max_multiview_instance_index: u32,
18699}
18700
18701impl Default for PhysicalDeviceMultiviewProperties {
18702    #[inline]
18703    fn default() -> Self {
18704        Self {
18705            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
18706            next: ptr::null_mut(),
18707            max_multiview_view_count: u32::default(),
18708            max_multiview_instance_index: u32::default(),
18709        }
18710    }
18711}
18712
18713unsafe impl Send for PhysicalDeviceMultiviewProperties {}
18714unsafe impl Sync for PhysicalDeviceMultiviewProperties {}
18715
18716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
18717#[repr(C)]
18718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18719pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18720    pub s_type: StructureType,
18721    pub next: *mut c_void,
18722    pub mutable_descriptor_type: Bool32,
18723}
18724
18725impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18726    #[inline]
18727    fn default() -> Self {
18728        Self {
18729            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
18730            next: ptr::null_mut(),
18731            mutable_descriptor_type: Bool32::default(),
18732        }
18733    }
18734}
18735
18736unsafe impl Send for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18737unsafe impl Sync for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18738
18739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
18740#[repr(C)]
18741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18742pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
18743    pub s_type: StructureType,
18744    pub next: *mut c_void,
18745    pub nested_command_buffer: Bool32,
18746    pub nested_command_buffer_rendering: Bool32,
18747    pub nested_command_buffer_simultaneous_use: Bool32,
18748}
18749
18750impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
18751    #[inline]
18752    fn default() -> Self {
18753        Self {
18754            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
18755            next: ptr::null_mut(),
18756            nested_command_buffer: Bool32::default(),
18757            nested_command_buffer_rendering: Bool32::default(),
18758            nested_command_buffer_simultaneous_use: Bool32::default(),
18759        }
18760    }
18761}
18762
18763unsafe impl Send for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18764unsafe impl Sync for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18765
18766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
18767#[repr(C)]
18768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18769pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
18770    pub s_type: StructureType,
18771    pub next: *mut c_void,
18772    pub max_command_buffer_nesting_level: u32,
18773}
18774
18775impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
18776    #[inline]
18777    fn default() -> Self {
18778        Self {
18779            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
18780            next: ptr::null_mut(),
18781            max_command_buffer_nesting_level: u32::default(),
18782        }
18783    }
18784}
18785
18786unsafe impl Send for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18787unsafe impl Sync for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18788
18789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
18790#[repr(C)]
18791#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18792pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18793    pub s_type: StructureType,
18794    pub next: *mut c_void,
18795    pub non_seamless_cube_map: Bool32,
18796}
18797
18798impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18799    #[inline]
18800    fn default() -> Self {
18801        Self {
18802            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
18803            next: ptr::null_mut(),
18804            non_seamless_cube_map: Bool32::default(),
18805        }
18806    }
18807}
18808
18809unsafe impl Send for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18810unsafe impl Sync for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18811
18812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
18813#[repr(C)]
18814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18815pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
18816    pub s_type: StructureType,
18817    pub next: *mut c_void,
18818    pub micromap: Bool32,
18819    pub micromap_capture_replay: Bool32,
18820    pub micromap_host_commands: Bool32,
18821}
18822
18823impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
18824    #[inline]
18825    fn default() -> Self {
18826        Self {
18827            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
18828            next: ptr::null_mut(),
18829            micromap: Bool32::default(),
18830            micromap_capture_replay: Bool32::default(),
18831            micromap_host_commands: Bool32::default(),
18832        }
18833    }
18834}
18835
18836unsafe impl Send for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18837unsafe impl Sync for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18838
18839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
18840#[repr(C)]
18841#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18842pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
18843    pub s_type: StructureType,
18844    pub next: *mut c_void,
18845    pub max_opacity2_state_subdivision_level: u32,
18846    pub max_opacity4_state_subdivision_level: u32,
18847}
18848
18849impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
18850    #[inline]
18851    fn default() -> Self {
18852        Self {
18853            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
18854            next: ptr::null_mut(),
18855            max_opacity2_state_subdivision_level: u32::default(),
18856            max_opacity4_state_subdivision_level: u32::default(),
18857        }
18858    }
18859}
18860
18861unsafe impl Send for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18862unsafe impl Sync for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18863
18864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
18865#[repr(C)]
18866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18867pub struct PhysicalDeviceOpticalFlowFeaturesNV {
18868    pub s_type: StructureType,
18869    pub next: *mut c_void,
18870    pub optical_flow: Bool32,
18871}
18872
18873impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
18874    #[inline]
18875    fn default() -> Self {
18876        Self {
18877            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
18878            next: ptr::null_mut(),
18879            optical_flow: Bool32::default(),
18880        }
18881    }
18882}
18883
18884unsafe impl Send for PhysicalDeviceOpticalFlowFeaturesNV {}
18885unsafe impl Sync for PhysicalDeviceOpticalFlowFeaturesNV {}
18886
18887/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
18888#[repr(C)]
18889#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18890pub struct PhysicalDeviceOpticalFlowPropertiesNV {
18891    pub s_type: StructureType,
18892    pub next: *mut c_void,
18893    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
18894    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
18895    pub hint_supported: Bool32,
18896    pub cost_supported: Bool32,
18897    pub bidirectional_flow_supported: Bool32,
18898    pub global_flow_supported: Bool32,
18899    pub min_width: u32,
18900    pub min_height: u32,
18901    pub max_width: u32,
18902    pub max_height: u32,
18903    pub max_num_regions_of_interest: u32,
18904}
18905
18906impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
18907    #[inline]
18908    fn default() -> Self {
18909        Self {
18910            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
18911            next: ptr::null_mut(),
18912            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18913            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18914            hint_supported: Bool32::default(),
18915            cost_supported: Bool32::default(),
18916            bidirectional_flow_supported: Bool32::default(),
18917            global_flow_supported: Bool32::default(),
18918            min_width: u32::default(),
18919            min_height: u32::default(),
18920            max_width: u32::default(),
18921            max_height: u32::default(),
18922            max_num_regions_of_interest: u32::default(),
18923        }
18924    }
18925}
18926
18927unsafe impl Send for PhysicalDeviceOpticalFlowPropertiesNV {}
18928unsafe impl Sync for PhysicalDeviceOpticalFlowPropertiesNV {}
18929
18930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
18931#[repr(C)]
18932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18933pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
18934    pub s_type: StructureType,
18935    pub next: *mut c_void,
18936    pub pci_domain: u32,
18937    pub pci_bus: u32,
18938    pub pci_device: u32,
18939    pub pci_function: u32,
18940}
18941
18942impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
18943    #[inline]
18944    fn default() -> Self {
18945        Self {
18946            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
18947            next: ptr::null_mut(),
18948            pci_domain: u32::default(),
18949            pci_bus: u32::default(),
18950            pci_device: u32::default(),
18951            pci_function: u32::default(),
18952        }
18953    }
18954}
18955
18956unsafe impl Send for PhysicalDevicePCIBusInfoPropertiesEXT {}
18957unsafe impl Sync for PhysicalDevicePCIBusInfoPropertiesEXT {}
18958
18959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
18960#[repr(C)]
18961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18962pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18963    pub s_type: StructureType,
18964    pub next: *mut c_void,
18965    pub pageable_device_local_memory: Bool32,
18966}
18967
18968impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18969    #[inline]
18970    fn default() -> Self {
18971        Self {
18972            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
18973            next: ptr::null_mut(),
18974            pageable_device_local_memory: Bool32::default(),
18975        }
18976    }
18977}
18978
18979unsafe impl Send for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18980unsafe impl Sync for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18981
18982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
18983#[repr(C)]
18984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18985pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18986    pub s_type: StructureType,
18987    pub next: *mut c_void,
18988    pub partitioned_acceleration_structure: Bool32,
18989}
18990
18991impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18992    #[inline]
18993    fn default() -> Self {
18994        Self {
18995            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
18996            next: ptr::null_mut(),
18997            partitioned_acceleration_structure: Bool32::default(),
18998        }
18999    }
19000}
19001
19002unsafe impl Send for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
19003unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
19004
19005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
19006#[repr(C)]
19007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19008pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
19009    pub s_type: StructureType,
19010    pub next: *mut c_void,
19011    pub max_partition_count: u32,
19012}
19013
19014impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
19015    #[inline]
19016    fn default() -> Self {
19017        Self {
19018            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
19019            next: ptr::null_mut(),
19020            max_partition_count: u32::default(),
19021        }
19022    }
19023}
19024
19025unsafe impl Send for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
19026unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
19027
19028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
19029#[repr(C)]
19030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19031pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
19032    pub s_type: StructureType,
19033    pub next: *mut c_void,
19034    pub per_stage_descriptor_set: Bool32,
19035    pub dynamic_pipeline_layout: Bool32,
19036}
19037
19038impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
19039    #[inline]
19040    fn default() -> Self {
19041        Self {
19042            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
19043            next: ptr::null_mut(),
19044            per_stage_descriptor_set: Bool32::default(),
19045            dynamic_pipeline_layout: Bool32::default(),
19046        }
19047    }
19048}
19049
19050unsafe impl Send for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
19051unsafe impl Sync for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
19052
19053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionFeaturesARM.html>
19054#[repr(C)]
19055#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19056pub struct PhysicalDevicePerformanceCountersByRegionFeaturesARM {
19057    pub s_type: StructureType,
19058    pub next: *mut c_void,
19059    pub performance_counters_by_region: Bool32,
19060}
19061
19062impl Default for PhysicalDevicePerformanceCountersByRegionFeaturesARM {
19063    #[inline]
19064    fn default() -> Self {
19065        Self {
19066            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM,
19067            next: ptr::null_mut(),
19068            performance_counters_by_region: Bool32::default(),
19069        }
19070    }
19071}
19072
19073unsafe impl Send for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
19074unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
19075
19076/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionPropertiesARM.html>
19077#[repr(C)]
19078#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19079pub struct PhysicalDevicePerformanceCountersByRegionPropertiesARM {
19080    pub s_type: StructureType,
19081    pub next: *mut c_void,
19082    pub max_per_region_performance_counters: u32,
19083    pub performance_counter_region_size: Extent2D,
19084    pub row_stride_alignment: u32,
19085    pub region_alignment: u32,
19086    pub identity_transform_order: Bool32,
19087}
19088
19089impl Default for PhysicalDevicePerformanceCountersByRegionPropertiesARM {
19090    #[inline]
19091    fn default() -> Self {
19092        Self {
19093            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM,
19094            next: ptr::null_mut(),
19095            max_per_region_performance_counters: u32::default(),
19096            performance_counter_region_size: Extent2D::default(),
19097            row_stride_alignment: u32::default(),
19098            region_alignment: u32::default(),
19099            identity_transform_order: Bool32::default(),
19100        }
19101    }
19102}
19103
19104unsafe impl Send for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
19105unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
19106
19107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
19108#[repr(C)]
19109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19110pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
19111    pub s_type: StructureType,
19112    pub next: *mut c_void,
19113    pub performance_counter_query_pools: Bool32,
19114    pub performance_counter_multiple_query_pools: Bool32,
19115}
19116
19117impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
19118    #[inline]
19119    fn default() -> Self {
19120        Self {
19121            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
19122            next: ptr::null_mut(),
19123            performance_counter_query_pools: Bool32::default(),
19124            performance_counter_multiple_query_pools: Bool32::default(),
19125        }
19126    }
19127}
19128
19129unsafe impl Send for PhysicalDevicePerformanceQueryFeaturesKHR {}
19130unsafe impl Sync for PhysicalDevicePerformanceQueryFeaturesKHR {}
19131
19132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
19133#[repr(C)]
19134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19135pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
19136    pub s_type: StructureType,
19137    pub next: *mut c_void,
19138    pub allow_command_buffer_query_copies: Bool32,
19139}
19140
19141impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
19142    #[inline]
19143    fn default() -> Self {
19144        Self {
19145            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
19146            next: ptr::null_mut(),
19147            allow_command_buffer_query_copies: Bool32::default(),
19148        }
19149    }
19150}
19151
19152unsafe impl Send for PhysicalDevicePerformanceQueryPropertiesKHR {}
19153unsafe impl Sync for PhysicalDevicePerformanceQueryPropertiesKHR {}
19154
19155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
19156#[repr(C)]
19157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19158pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
19159    pub s_type: StructureType,
19160    pub next: *mut c_void,
19161    pub pipeline_binaries: Bool32,
19162}
19163
19164impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
19165    #[inline]
19166    fn default() -> Self {
19167        Self {
19168            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
19169            next: ptr::null_mut(),
19170            pipeline_binaries: Bool32::default(),
19171        }
19172    }
19173}
19174
19175unsafe impl Send for PhysicalDevicePipelineBinaryFeaturesKHR {}
19176unsafe impl Sync for PhysicalDevicePipelineBinaryFeaturesKHR {}
19177
19178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
19179#[repr(C)]
19180#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19181pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
19182    pub s_type: StructureType,
19183    pub next: *mut c_void,
19184    pub pipeline_binary_internal_cache: Bool32,
19185    pub pipeline_binary_internal_cache_control: Bool32,
19186    pub pipeline_binary_prefers_internal_cache: Bool32,
19187    pub pipeline_binary_precompiled_internal_cache: Bool32,
19188    pub pipeline_binary_compressed_data: Bool32,
19189}
19190
19191impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
19192    #[inline]
19193    fn default() -> Self {
19194        Self {
19195            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
19196            next: ptr::null_mut(),
19197            pipeline_binary_internal_cache: Bool32::default(),
19198            pipeline_binary_internal_cache_control: Bool32::default(),
19199            pipeline_binary_prefers_internal_cache: Bool32::default(),
19200            pipeline_binary_precompiled_internal_cache: Bool32::default(),
19201            pipeline_binary_compressed_data: Bool32::default(),
19202        }
19203    }
19204}
19205
19206unsafe impl Send for PhysicalDevicePipelineBinaryPropertiesKHR {}
19207unsafe impl Sync for PhysicalDevicePipelineBinaryPropertiesKHR {}
19208
19209/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html>
19210#[repr(C)]
19211#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19212pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
19213    pub s_type: StructureType,
19214    pub next: *mut c_void,
19215    pub pipeline_cache_incremental_mode: Bool32,
19216}
19217
19218impl Default for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
19219    #[inline]
19220    fn default() -> Self {
19221        Self {
19222            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC,
19223            next: ptr::null_mut(),
19224            pipeline_cache_incremental_mode: Bool32::default(),
19225        }
19226    }
19227}
19228
19229unsafe impl Send for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
19230unsafe impl Sync for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
19231
19232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
19233#[repr(C)]
19234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19235pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
19236    pub s_type: StructureType,
19237    pub next: *mut c_void,
19238    pub pipeline_creation_cache_control: Bool32,
19239}
19240
19241impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
19242    #[inline]
19243    fn default() -> Self {
19244        Self {
19245            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
19246            next: ptr::null_mut(),
19247            pipeline_creation_cache_control: Bool32::default(),
19248        }
19249    }
19250}
19251
19252unsafe impl Send for PhysicalDevicePipelineCreationCacheControlFeatures {}
19253unsafe impl Sync for PhysicalDevicePipelineCreationCacheControlFeatures {}
19254
19255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
19256#[repr(C)]
19257#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19258pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19259    pub s_type: StructureType,
19260    pub next: *mut c_void,
19261    pub pipeline_executable_info: Bool32,
19262}
19263
19264impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19265    #[inline]
19266    fn default() -> Self {
19267        Self {
19268            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
19269            next: ptr::null_mut(),
19270            pipeline_executable_info: Bool32::default(),
19271        }
19272    }
19273}
19274
19275unsafe impl Send for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19276unsafe impl Sync for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19277
19278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
19279#[repr(C)]
19280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19281pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19282    pub s_type: StructureType,
19283    pub next: *mut c_void,
19284    pub pipeline_library_group_handles: Bool32,
19285}
19286
19287impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19288    #[inline]
19289    fn default() -> Self {
19290        Self {
19291            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
19292            next: ptr::null_mut(),
19293            pipeline_library_group_handles: Bool32::default(),
19294        }
19295    }
19296}
19297
19298unsafe impl Send for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19299unsafe impl Sync for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19300
19301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
19302#[repr(C)]
19303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19304pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19305    pub s_type: StructureType,
19306    pub next: *mut c_void,
19307    pub pipeline_opacity_micromap: Bool32,
19308}
19309
19310impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19311    #[inline]
19312    fn default() -> Self {
19313        Self {
19314            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
19315            next: ptr::null_mut(),
19316            pipeline_opacity_micromap: Bool32::default(),
19317        }
19318    }
19319}
19320
19321unsafe impl Send for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19322unsafe impl Sync for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19323
19324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
19325#[repr(C)]
19326#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19327pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
19328    pub s_type: StructureType,
19329    pub next: *mut c_void,
19330    pub pipeline_properties_identifier: Bool32,
19331}
19332
19333impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
19334    #[inline]
19335    fn default() -> Self {
19336        Self {
19337            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
19338            next: ptr::null_mut(),
19339            pipeline_properties_identifier: Bool32::default(),
19340        }
19341    }
19342}
19343
19344unsafe impl Send for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19345unsafe impl Sync for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19346
19347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
19348#[repr(C)]
19349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19350pub struct PhysicalDevicePipelineProtectedAccessFeatures {
19351    pub s_type: StructureType,
19352    pub next: *mut c_void,
19353    pub pipeline_protected_access: Bool32,
19354}
19355
19356impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
19357    #[inline]
19358    fn default() -> Self {
19359        Self {
19360            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
19361            next: ptr::null_mut(),
19362            pipeline_protected_access: Bool32::default(),
19363        }
19364    }
19365}
19366
19367unsafe impl Send for PhysicalDevicePipelineProtectedAccessFeatures {}
19368unsafe impl Sync for PhysicalDevicePipelineProtectedAccessFeatures {}
19369
19370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
19371#[repr(C)]
19372#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19373pub struct PhysicalDevicePipelineRobustnessFeatures {
19374    pub s_type: StructureType,
19375    pub next: *mut c_void,
19376    pub pipeline_robustness: Bool32,
19377}
19378
19379impl Default for PhysicalDevicePipelineRobustnessFeatures {
19380    #[inline]
19381    fn default() -> Self {
19382        Self {
19383            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
19384            next: ptr::null_mut(),
19385            pipeline_robustness: Bool32::default(),
19386        }
19387    }
19388}
19389
19390unsafe impl Send for PhysicalDevicePipelineRobustnessFeatures {}
19391unsafe impl Sync for PhysicalDevicePipelineRobustnessFeatures {}
19392
19393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
19394#[repr(C)]
19395#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19396pub struct PhysicalDevicePipelineRobustnessProperties {
19397    pub s_type: StructureType,
19398    pub next: *mut c_void,
19399    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
19400    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
19401    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
19402    pub default_robustness_images: PipelineRobustnessImageBehavior,
19403}
19404
19405impl Default for PhysicalDevicePipelineRobustnessProperties {
19406    #[inline]
19407    fn default() -> Self {
19408        Self {
19409            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
19410            next: ptr::null_mut(),
19411            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
19412            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
19413            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
19414            default_robustness_images: PipelineRobustnessImageBehavior::default(),
19415        }
19416    }
19417}
19418
19419unsafe impl Send for PhysicalDevicePipelineRobustnessProperties {}
19420unsafe impl Sync for PhysicalDevicePipelineRobustnessProperties {}
19421
19422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
19423#[repr(C)]
19424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19425pub struct PhysicalDevicePointClippingProperties {
19426    pub s_type: StructureType,
19427    pub next: *mut c_void,
19428    pub point_clipping_behavior: PointClippingBehavior,
19429}
19430
19431impl Default for PhysicalDevicePointClippingProperties {
19432    #[inline]
19433    fn default() -> Self {
19434        Self {
19435            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
19436            next: ptr::null_mut(),
19437            point_clipping_behavior: PointClippingBehavior::default(),
19438        }
19439    }
19440}
19441
19442unsafe impl Send for PhysicalDevicePointClippingProperties {}
19443unsafe impl Sync for PhysicalDevicePointClippingProperties {}
19444
19445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
19446#[repr(C)]
19447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19448pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
19449    pub s_type: StructureType,
19450    pub next: *mut c_void,
19451    pub constant_alpha_color_blend_factors: Bool32,
19452    pub events: Bool32,
19453    pub image_view_format_reinterpretation: Bool32,
19454    pub image_view_format_swizzle: Bool32,
19455    pub image_view_2d_on_3d_image: Bool32,
19456    pub multisample_array_image: Bool32,
19457    pub mutable_comparison_samplers: Bool32,
19458    pub point_polygons: Bool32,
19459    pub sampler_mip_lod_bias: Bool32,
19460    pub separate_stencil_mask_ref: Bool32,
19461    pub shader_sample_rate_interpolation_functions: Bool32,
19462    pub tessellation_isolines: Bool32,
19463    pub tessellation_point_mode: Bool32,
19464    pub triangle_fans: Bool32,
19465    pub vertex_attribute_access_beyond_stride: Bool32,
19466}
19467
19468impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
19469    #[inline]
19470    fn default() -> Self {
19471        Self {
19472            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
19473            next: ptr::null_mut(),
19474            constant_alpha_color_blend_factors: Bool32::default(),
19475            events: Bool32::default(),
19476            image_view_format_reinterpretation: Bool32::default(),
19477            image_view_format_swizzle: Bool32::default(),
19478            image_view_2d_on_3d_image: Bool32::default(),
19479            multisample_array_image: Bool32::default(),
19480            mutable_comparison_samplers: Bool32::default(),
19481            point_polygons: Bool32::default(),
19482            sampler_mip_lod_bias: Bool32::default(),
19483            separate_stencil_mask_ref: Bool32::default(),
19484            shader_sample_rate_interpolation_functions: Bool32::default(),
19485            tessellation_isolines: Bool32::default(),
19486            tessellation_point_mode: Bool32::default(),
19487            triangle_fans: Bool32::default(),
19488            vertex_attribute_access_beyond_stride: Bool32::default(),
19489        }
19490    }
19491}
19492
19493unsafe impl Send for PhysicalDevicePortabilitySubsetFeaturesKHR {}
19494unsafe impl Sync for PhysicalDevicePortabilitySubsetFeaturesKHR {}
19495
19496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
19497#[repr(C)]
19498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19499pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
19500    pub s_type: StructureType,
19501    pub next: *mut c_void,
19502    pub min_vertex_input_binding_stride_alignment: u32,
19503}
19504
19505impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
19506    #[inline]
19507    fn default() -> Self {
19508        Self {
19509            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
19510            next: ptr::null_mut(),
19511            min_vertex_input_binding_stride_alignment: u32::default(),
19512        }
19513    }
19514}
19515
19516unsafe impl Send for PhysicalDevicePortabilitySubsetPropertiesKHR {}
19517unsafe impl Sync for PhysicalDevicePortabilitySubsetPropertiesKHR {}
19518
19519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
19520#[repr(C)]
19521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19522pub struct PhysicalDevicePresentBarrierFeaturesNV {
19523    pub s_type: StructureType,
19524    pub next: *mut c_void,
19525    pub present_barrier: Bool32,
19526}
19527
19528impl Default for PhysicalDevicePresentBarrierFeaturesNV {
19529    #[inline]
19530    fn default() -> Self {
19531        Self {
19532            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
19533            next: ptr::null_mut(),
19534            present_barrier: Bool32::default(),
19535        }
19536    }
19537}
19538
19539unsafe impl Send for PhysicalDevicePresentBarrierFeaturesNV {}
19540unsafe impl Sync for PhysicalDevicePresentBarrierFeaturesNV {}
19541
19542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html>
19543#[repr(C)]
19544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19545pub struct PhysicalDevicePresentId2FeaturesKHR {
19546    pub s_type: StructureType,
19547    pub next: *mut c_void,
19548    pub present_id2: Bool32,
19549}
19550
19551impl Default for PhysicalDevicePresentId2FeaturesKHR {
19552    #[inline]
19553    fn default() -> Self {
19554        Self {
19555            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR,
19556            next: ptr::null_mut(),
19557            present_id2: Bool32::default(),
19558        }
19559    }
19560}
19561
19562unsafe impl Send for PhysicalDevicePresentId2FeaturesKHR {}
19563unsafe impl Sync for PhysicalDevicePresentId2FeaturesKHR {}
19564
19565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
19566#[repr(C)]
19567#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19568pub struct PhysicalDevicePresentIdFeaturesKHR {
19569    pub s_type: StructureType,
19570    pub next: *mut c_void,
19571    pub present_id: Bool32,
19572}
19573
19574impl Default for PhysicalDevicePresentIdFeaturesKHR {
19575    #[inline]
19576    fn default() -> Self {
19577        Self {
19578            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
19579            next: ptr::null_mut(),
19580            present_id: Bool32::default(),
19581        }
19582    }
19583}
19584
19585unsafe impl Send for PhysicalDevicePresentIdFeaturesKHR {}
19586unsafe impl Sync for PhysicalDevicePresentIdFeaturesKHR {}
19587
19588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
19589#[repr(C)]
19590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19591pub struct PhysicalDevicePresentMeteringFeaturesNV {
19592    pub s_type: StructureType,
19593    pub next: *mut c_void,
19594    pub present_metering: Bool32,
19595}
19596
19597impl Default for PhysicalDevicePresentMeteringFeaturesNV {
19598    #[inline]
19599    fn default() -> Self {
19600        Self {
19601            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
19602            next: ptr::null_mut(),
19603            present_metering: Bool32::default(),
19604        }
19605    }
19606}
19607
19608unsafe impl Send for PhysicalDevicePresentMeteringFeaturesNV {}
19609unsafe impl Sync for PhysicalDevicePresentMeteringFeaturesNV {}
19610
19611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html>
19612#[repr(C)]
19613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19614pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19615    pub s_type: StructureType,
19616    pub next: *mut c_void,
19617    pub present_mode_fifo_latest_ready: Bool32,
19618}
19619
19620impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19621    #[inline]
19622    fn default() -> Self {
19623        Self {
19624            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,
19625            next: ptr::null_mut(),
19626            present_mode_fifo_latest_ready: Bool32::default(),
19627        }
19628    }
19629}
19630
19631unsafe impl Send for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19632unsafe impl Sync for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19633
19634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentTimingFeaturesEXT.html>
19635#[repr(C)]
19636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19637pub struct PhysicalDevicePresentTimingFeaturesEXT {
19638    pub s_type: StructureType,
19639    pub next: *mut c_void,
19640    pub present_timing: Bool32,
19641    pub present_at_absolute_time: Bool32,
19642    pub present_at_relative_time: Bool32,
19643}
19644
19645impl Default for PhysicalDevicePresentTimingFeaturesEXT {
19646    #[inline]
19647    fn default() -> Self {
19648        Self {
19649            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT,
19650            next: ptr::null_mut(),
19651            present_timing: Bool32::default(),
19652            present_at_absolute_time: Bool32::default(),
19653            present_at_relative_time: Bool32::default(),
19654        }
19655    }
19656}
19657
19658unsafe impl Send for PhysicalDevicePresentTimingFeaturesEXT {}
19659unsafe impl Sync for PhysicalDevicePresentTimingFeaturesEXT {}
19660
19661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html>
19662#[repr(C)]
19663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19664pub struct PhysicalDevicePresentWait2FeaturesKHR {
19665    pub s_type: StructureType,
19666    pub next: *mut c_void,
19667    pub present_wait2: Bool32,
19668}
19669
19670impl Default for PhysicalDevicePresentWait2FeaturesKHR {
19671    #[inline]
19672    fn default() -> Self {
19673        Self {
19674            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR,
19675            next: ptr::null_mut(),
19676            present_wait2: Bool32::default(),
19677        }
19678    }
19679}
19680
19681unsafe impl Send for PhysicalDevicePresentWait2FeaturesKHR {}
19682unsafe impl Sync for PhysicalDevicePresentWait2FeaturesKHR {}
19683
19684/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
19685#[repr(C)]
19686#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19687pub struct PhysicalDevicePresentWaitFeaturesKHR {
19688    pub s_type: StructureType,
19689    pub next: *mut c_void,
19690    pub present_wait: Bool32,
19691}
19692
19693impl Default for PhysicalDevicePresentWaitFeaturesKHR {
19694    #[inline]
19695    fn default() -> Self {
19696        Self {
19697            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
19698            next: ptr::null_mut(),
19699            present_wait: Bool32::default(),
19700        }
19701    }
19702}
19703
19704unsafe impl Send for PhysicalDevicePresentWaitFeaturesKHR {}
19705unsafe impl Sync for PhysicalDevicePresentWaitFeaturesKHR {}
19706
19707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
19708#[repr(C)]
19709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19710pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19711    pub s_type: StructureType,
19712    pub next: *mut c_void,
19713    pub primitive_topology_list_restart: Bool32,
19714    pub primitive_topology_patch_list_restart: Bool32,
19715}
19716
19717impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19718    #[inline]
19719    fn default() -> Self {
19720        Self {
19721            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
19722            next: ptr::null_mut(),
19723            primitive_topology_list_restart: Bool32::default(),
19724            primitive_topology_patch_list_restart: Bool32::default(),
19725        }
19726    }
19727}
19728
19729unsafe impl Send for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19730unsafe impl Sync for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19731
19732/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
19733#[repr(C)]
19734#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19735pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19736    pub s_type: StructureType,
19737    pub next: *mut c_void,
19738    pub primitives_generated_query: Bool32,
19739    pub primitives_generated_query_with_rasterizer_discard: Bool32,
19740    pub primitives_generated_query_with_non_zero_streams: Bool32,
19741}
19742
19743impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19744    #[inline]
19745    fn default() -> Self {
19746        Self {
19747            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
19748            next: ptr::null_mut(),
19749            primitives_generated_query: Bool32::default(),
19750            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
19751            primitives_generated_query_with_non_zero_streams: Bool32::default(),
19752        }
19753    }
19754}
19755
19756unsafe impl Send for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19757unsafe impl Sync for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19758
19759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
19760#[repr(C)]
19761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19762pub struct PhysicalDevicePrivateDataFeatures {
19763    pub s_type: StructureType,
19764    pub next: *mut c_void,
19765    pub private_data: Bool32,
19766}
19767
19768impl Default for PhysicalDevicePrivateDataFeatures {
19769    #[inline]
19770    fn default() -> Self {
19771        Self {
19772            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
19773            next: ptr::null_mut(),
19774            private_data: Bool32::default(),
19775        }
19776    }
19777}
19778
19779unsafe impl Send for PhysicalDevicePrivateDataFeatures {}
19780unsafe impl Sync for PhysicalDevicePrivateDataFeatures {}
19781
19782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
19783#[repr(C)]
19784#[derive(Copy, Clone, Default, Debug, PartialEq)]
19785pub struct PhysicalDeviceProperties {
19786    pub api_version: u32,
19787    pub driver_version: u32,
19788    pub vendor_id: u32,
19789    pub device_id: u32,
19790    pub device_type: PhysicalDeviceType,
19791    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
19792    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
19793    pub limits: PhysicalDeviceLimits,
19794    pub sparse_properties: PhysicalDeviceSparseProperties,
19795}
19796
19797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
19798#[repr(C)]
19799#[derive(Copy, Clone, Debug, PartialEq)]
19800pub struct PhysicalDeviceProperties2 {
19801    pub s_type: StructureType,
19802    pub next: *mut c_void,
19803    pub properties: PhysicalDeviceProperties,
19804}
19805
19806impl Default for PhysicalDeviceProperties2 {
19807    #[inline]
19808    fn default() -> Self {
19809        Self {
19810            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
19811            next: ptr::null_mut(),
19812            properties: PhysicalDeviceProperties::default(),
19813        }
19814    }
19815}
19816
19817unsafe impl Send for PhysicalDeviceProperties2 {}
19818unsafe impl Sync for PhysicalDeviceProperties2 {}
19819
19820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
19821#[repr(C)]
19822#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19823pub struct PhysicalDeviceProtectedMemoryFeatures {
19824    pub s_type: StructureType,
19825    pub next: *mut c_void,
19826    pub protected_memory: Bool32,
19827}
19828
19829impl Default for PhysicalDeviceProtectedMemoryFeatures {
19830    #[inline]
19831    fn default() -> Self {
19832        Self {
19833            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
19834            next: ptr::null_mut(),
19835            protected_memory: Bool32::default(),
19836        }
19837    }
19838}
19839
19840unsafe impl Send for PhysicalDeviceProtectedMemoryFeatures {}
19841unsafe impl Sync for PhysicalDeviceProtectedMemoryFeatures {}
19842
19843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
19844#[repr(C)]
19845#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19846pub struct PhysicalDeviceProtectedMemoryProperties {
19847    pub s_type: StructureType,
19848    pub next: *mut c_void,
19849    pub protected_no_fault: Bool32,
19850}
19851
19852impl Default for PhysicalDeviceProtectedMemoryProperties {
19853    #[inline]
19854    fn default() -> Self {
19855        Self {
19856            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
19857            next: ptr::null_mut(),
19858            protected_no_fault: Bool32::default(),
19859        }
19860    }
19861}
19862
19863unsafe impl Send for PhysicalDeviceProtectedMemoryProperties {}
19864unsafe impl Sync for PhysicalDeviceProtectedMemoryProperties {}
19865
19866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
19867#[repr(C)]
19868#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19869pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
19870    pub s_type: StructureType,
19871    pub next: *mut c_void,
19872    pub provoking_vertex_last: Bool32,
19873    pub transform_feedback_preserves_provoking_vertex: Bool32,
19874}
19875
19876impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
19877    #[inline]
19878    fn default() -> Self {
19879        Self {
19880            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
19881            next: ptr::null_mut(),
19882            provoking_vertex_last: Bool32::default(),
19883            transform_feedback_preserves_provoking_vertex: Bool32::default(),
19884        }
19885    }
19886}
19887
19888unsafe impl Send for PhysicalDeviceProvokingVertexFeaturesEXT {}
19889unsafe impl Sync for PhysicalDeviceProvokingVertexFeaturesEXT {}
19890
19891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
19892#[repr(C)]
19893#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19894pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
19895    pub s_type: StructureType,
19896    pub next: *mut c_void,
19897    pub provoking_vertex_mode_per_pipeline: Bool32,
19898    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
19899}
19900
19901impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
19902    #[inline]
19903    fn default() -> Self {
19904        Self {
19905            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
19906            next: ptr::null_mut(),
19907            provoking_vertex_mode_per_pipeline: Bool32::default(),
19908            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
19909        }
19910    }
19911}
19912
19913unsafe impl Send for PhysicalDeviceProvokingVertexPropertiesEXT {}
19914unsafe impl Sync for PhysicalDeviceProvokingVertexPropertiesEXT {}
19915
19916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
19917#[repr(C)]
19918#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19919pub struct PhysicalDevicePushDescriptorProperties {
19920    pub s_type: StructureType,
19921    pub next: *mut c_void,
19922    pub max_push_descriptors: u32,
19923}
19924
19925impl Default for PhysicalDevicePushDescriptorProperties {
19926    #[inline]
19927    fn default() -> Self {
19928        Self {
19929            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
19930            next: ptr::null_mut(),
19931            max_push_descriptors: u32::default(),
19932        }
19933    }
19934}
19935
19936unsafe impl Send for PhysicalDevicePushDescriptorProperties {}
19937unsafe impl Sync for PhysicalDevicePushDescriptorProperties {}
19938
19939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html>
19940#[repr(C)]
19941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19942pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19943    pub s_type: StructureType,
19944    pub next: *const c_void,
19945    pub queue_family_index: u32,
19946    pub engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM,
19947}
19948
19949impl Default for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19950    #[inline]
19951    fn default() -> Self {
19952        Self {
19953            s_type:
19954                StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM,
19955            next: ptr::null(),
19956            queue_family_index: u32::default(),
19957            engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM::default(),
19958        }
19959    }
19960}
19961
19962unsafe impl Send for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19963unsafe impl Sync for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19964
19965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
19966#[repr(C)]
19967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19968pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19969    pub s_type: StructureType,
19970    pub next: *mut c_void,
19971    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
19972}
19973
19974impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19975    #[inline]
19976    fn default() -> Self {
19977        Self {
19978            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
19979            next: ptr::null_mut(),
19980            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
19981        }
19982    }
19983}
19984
19985unsafe impl Send for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19986unsafe impl Sync for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19987
19988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
19989#[repr(C)]
19990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19991pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19992    pub s_type: StructureType,
19993    pub next: *mut c_void,
19994    pub rasterization_order_color_attachment_access: Bool32,
19995    pub rasterization_order_depth_attachment_access: Bool32,
19996    pub rasterization_order_stencil_attachment_access: Bool32,
19997}
19998
19999impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
20000    #[inline]
20001    fn default() -> Self {
20002        Self {
20003            s_type:
20004                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
20005            next: ptr::null_mut(),
20006            rasterization_order_color_attachment_access: Bool32::default(),
20007            rasterization_order_depth_attachment_access: Bool32::default(),
20008            rasterization_order_stencil_attachment_access: Bool32::default(),
20009        }
20010    }
20011}
20012
20013unsafe impl Send for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
20014unsafe impl Sync for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
20015
20016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
20017#[repr(C)]
20018#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20019pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
20020    pub s_type: StructureType,
20021    pub next: *mut c_void,
20022    pub shader_raw_access_chains: Bool32,
20023}
20024
20025impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
20026    #[inline]
20027    fn default() -> Self {
20028        Self {
20029            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
20030            next: ptr::null_mut(),
20031            shader_raw_access_chains: Bool32::default(),
20032        }
20033    }
20034}
20035
20036unsafe impl Send for PhysicalDeviceRawAccessChainsFeaturesNV {}
20037unsafe impl Sync for PhysicalDeviceRawAccessChainsFeaturesNV {}
20038
20039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
20040#[repr(C)]
20041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20042pub struct PhysicalDeviceRayQueryFeaturesKHR {
20043    pub s_type: StructureType,
20044    pub next: *mut c_void,
20045    pub ray_query: Bool32,
20046}
20047
20048impl Default for PhysicalDeviceRayQueryFeaturesKHR {
20049    #[inline]
20050    fn default() -> Self {
20051        Self {
20052            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
20053            next: ptr::null_mut(),
20054            ray_query: Bool32::default(),
20055        }
20056    }
20057}
20058
20059unsafe impl Send for PhysicalDeviceRayQueryFeaturesKHR {}
20060unsafe impl Sync for PhysicalDeviceRayQueryFeaturesKHR {}
20061
20062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT.html>
20063#[repr(C)]
20064#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20065pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {
20066    pub s_type: StructureType,
20067    pub next: *mut c_void,
20068    pub ray_tracing_invocation_reorder: Bool32,
20069}
20070
20071impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {
20072    #[inline]
20073    fn default() -> Self {
20074        Self {
20075            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT,
20076            next: ptr::null_mut(),
20077            ray_tracing_invocation_reorder: Bool32::default(),
20078        }
20079    }
20080}
20081
20082unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {}
20083unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {}
20084
20085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
20086#[repr(C)]
20087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20088pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
20089    pub s_type: StructureType,
20090    pub next: *mut c_void,
20091    pub ray_tracing_invocation_reorder: Bool32,
20092}
20093
20094impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
20095    #[inline]
20096    fn default() -> Self {
20097        Self {
20098            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
20099            next: ptr::null_mut(),
20100            ray_tracing_invocation_reorder: Bool32::default(),
20101        }
20102    }
20103}
20104
20105unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
20106unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
20107
20108/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT.html>
20109#[repr(C)]
20110#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20111pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {
20112    pub s_type: StructureType,
20113    pub next: *mut c_void,
20114    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeEXT,
20115    pub max_shader_binding_table_record_index: u32,
20116}
20117
20118impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {
20119    #[inline]
20120    fn default() -> Self {
20121        Self {
20122            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT,
20123            next: ptr::null_mut(),
20124            ray_tracing_invocation_reorder_reordering_hint:
20125                RayTracingInvocationReorderModeEXT::default(),
20126            max_shader_binding_table_record_index: u32::default(),
20127        }
20128    }
20129}
20130
20131unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {}
20132unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {}
20133
20134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
20135#[repr(C)]
20136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20137pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
20138    pub s_type: StructureType,
20139    pub next: *mut c_void,
20140    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeEXT,
20141}
20142
20143impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
20144    #[inline]
20145    fn default() -> Self {
20146        Self {
20147            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
20148            next: ptr::null_mut(),
20149            ray_tracing_invocation_reorder_reordering_hint:
20150                RayTracingInvocationReorderModeEXT::default(),
20151        }
20152    }
20153}
20154
20155unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
20156unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
20157
20158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
20159#[repr(C)]
20160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20161pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
20162    pub s_type: StructureType,
20163    pub next: *mut c_void,
20164    pub spheres: Bool32,
20165    pub linear_swept_spheres: Bool32,
20166}
20167
20168impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
20169    #[inline]
20170    fn default() -> Self {
20171        Self {
20172            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
20173            next: ptr::null_mut(),
20174            spheres: Bool32::default(),
20175            linear_swept_spheres: Bool32::default(),
20176        }
20177    }
20178}
20179
20180unsafe impl Send for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
20181unsafe impl Sync for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
20182
20183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
20184#[repr(C)]
20185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20186pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
20187    pub s_type: StructureType,
20188    pub next: *mut c_void,
20189    pub ray_tracing_maintenance1: Bool32,
20190    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
20191}
20192
20193impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
20194    #[inline]
20195    fn default() -> Self {
20196        Self {
20197            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
20198            next: ptr::null_mut(),
20199            ray_tracing_maintenance1: Bool32::default(),
20200            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
20201        }
20202    }
20203}
20204
20205unsafe impl Send for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
20206unsafe impl Sync for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
20207
20208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
20209#[repr(C)]
20210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20211pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
20212    pub s_type: StructureType,
20213    pub next: *mut c_void,
20214    pub ray_tracing_motion_blur: Bool32,
20215    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
20216}
20217
20218impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
20219    #[inline]
20220    fn default() -> Self {
20221        Self {
20222            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
20223            next: ptr::null_mut(),
20224            ray_tracing_motion_blur: Bool32::default(),
20225            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
20226        }
20227    }
20228}
20229
20230unsafe impl Send for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
20231unsafe impl Sync for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
20232
20233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
20234#[repr(C)]
20235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20236pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
20237    pub s_type: StructureType,
20238    pub next: *mut c_void,
20239    pub ray_tracing_pipeline: Bool32,
20240    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
20241    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
20242    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
20243    pub ray_traversal_primitive_culling: Bool32,
20244}
20245
20246impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
20247    #[inline]
20248    fn default() -> Self {
20249        Self {
20250            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
20251            next: ptr::null_mut(),
20252            ray_tracing_pipeline: Bool32::default(),
20253            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
20254            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
20255            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
20256            ray_traversal_primitive_culling: Bool32::default(),
20257        }
20258    }
20259}
20260
20261unsafe impl Send for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
20262unsafe impl Sync for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
20263
20264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
20265#[repr(C)]
20266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20267pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
20268    pub s_type: StructureType,
20269    pub next: *mut c_void,
20270    pub shader_group_handle_size: u32,
20271    pub max_ray_recursion_depth: u32,
20272    pub max_shader_group_stride: u32,
20273    pub shader_group_base_alignment: u32,
20274    pub shader_group_handle_capture_replay_size: u32,
20275    pub max_ray_dispatch_invocation_count: u32,
20276    pub shader_group_handle_alignment: u32,
20277    pub max_ray_hit_attribute_size: u32,
20278}
20279
20280impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
20281    #[inline]
20282    fn default() -> Self {
20283        Self {
20284            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
20285            next: ptr::null_mut(),
20286            shader_group_handle_size: u32::default(),
20287            max_ray_recursion_depth: u32::default(),
20288            max_shader_group_stride: u32::default(),
20289            shader_group_base_alignment: u32::default(),
20290            shader_group_handle_capture_replay_size: u32::default(),
20291            max_ray_dispatch_invocation_count: u32::default(),
20292            shader_group_handle_alignment: u32::default(),
20293            max_ray_hit_attribute_size: u32::default(),
20294        }
20295    }
20296}
20297
20298unsafe impl Send for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20299unsafe impl Sync for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20300
20301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
20302#[repr(C)]
20303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20304pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20305    pub s_type: StructureType,
20306    pub next: *mut c_void,
20307    pub ray_tracing_position_fetch: Bool32,
20308}
20309
20310impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20311    #[inline]
20312    fn default() -> Self {
20313        Self {
20314            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
20315            next: ptr::null_mut(),
20316            ray_tracing_position_fetch: Bool32::default(),
20317        }
20318    }
20319}
20320
20321unsafe impl Send for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20322unsafe impl Sync for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20323
20324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
20325#[repr(C)]
20326#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20327pub struct PhysicalDeviceRayTracingPropertiesNV {
20328    pub s_type: StructureType,
20329    pub next: *mut c_void,
20330    pub shader_group_handle_size: u32,
20331    pub max_recursion_depth: u32,
20332    pub max_shader_group_stride: u32,
20333    pub shader_group_base_alignment: u32,
20334    pub max_geometry_count: u64,
20335    pub max_instance_count: u64,
20336    pub max_triangle_count: u64,
20337    pub max_descriptor_set_acceleration_structures: u32,
20338}
20339
20340impl Default for PhysicalDeviceRayTracingPropertiesNV {
20341    #[inline]
20342    fn default() -> Self {
20343        Self {
20344            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
20345            next: ptr::null_mut(),
20346            shader_group_handle_size: u32::default(),
20347            max_recursion_depth: u32::default(),
20348            max_shader_group_stride: u32::default(),
20349            shader_group_base_alignment: u32::default(),
20350            max_geometry_count: u64::default(),
20351            max_instance_count: u64::default(),
20352            max_triangle_count: u64::default(),
20353            max_descriptor_set_acceleration_structures: u32::default(),
20354        }
20355    }
20356}
20357
20358unsafe impl Send for PhysicalDeviceRayTracingPropertiesNV {}
20359unsafe impl Sync for PhysicalDeviceRayTracingPropertiesNV {}
20360
20361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
20362#[repr(C)]
20363#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20364pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
20365    pub s_type: StructureType,
20366    pub next: *mut c_void,
20367    pub ray_tracing_validation: Bool32,
20368}
20369
20370impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
20371    #[inline]
20372    fn default() -> Self {
20373        Self {
20374            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
20375            next: ptr::null_mut(),
20376            ray_tracing_validation: Bool32::default(),
20377        }
20378    }
20379}
20380
20381unsafe impl Send for PhysicalDeviceRayTracingValidationFeaturesNV {}
20382unsafe impl Sync for PhysicalDeviceRayTracingValidationFeaturesNV {}
20383
20384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
20385#[repr(C)]
20386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20387pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
20388    pub s_type: StructureType,
20389    pub next: *mut c_void,
20390    pub relaxed_line_rasterization: Bool32,
20391}
20392
20393impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
20394    #[inline]
20395    fn default() -> Self {
20396        Self {
20397            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
20398            next: ptr::null_mut(),
20399            relaxed_line_rasterization: Bool32::default(),
20400        }
20401    }
20402}
20403
20404unsafe impl Send for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
20405unsafe impl Sync for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
20406
20407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
20408#[repr(C)]
20409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20410pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
20411    pub s_type: StructureType,
20412    pub next: *mut c_void,
20413    pub render_pass_striped: Bool32,
20414}
20415
20416impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
20417    #[inline]
20418    fn default() -> Self {
20419        Self {
20420            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
20421            next: ptr::null_mut(),
20422            render_pass_striped: Bool32::default(),
20423        }
20424    }
20425}
20426
20427unsafe impl Send for PhysicalDeviceRenderPassStripedFeaturesARM {}
20428unsafe impl Sync for PhysicalDeviceRenderPassStripedFeaturesARM {}
20429
20430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
20431#[repr(C)]
20432#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20433pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
20434    pub s_type: StructureType,
20435    pub next: *mut c_void,
20436    pub render_pass_stripe_granularity: Extent2D,
20437    pub max_render_pass_stripes: u32,
20438}
20439
20440impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
20441    #[inline]
20442    fn default() -> Self {
20443        Self {
20444            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
20445            next: ptr::null_mut(),
20446            render_pass_stripe_granularity: Extent2D::default(),
20447            max_render_pass_stripes: u32::default(),
20448        }
20449    }
20450}
20451
20452unsafe impl Send for PhysicalDeviceRenderPassStripedPropertiesARM {}
20453unsafe impl Sync for PhysicalDeviceRenderPassStripedPropertiesARM {}
20454
20455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
20456#[repr(C)]
20457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20458pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
20459    pub s_type: StructureType,
20460    pub next: *mut c_void,
20461    pub representative_fragment_test: Bool32,
20462}
20463
20464impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
20465    #[inline]
20466    fn default() -> Self {
20467        Self {
20468            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
20469            next: ptr::null_mut(),
20470            representative_fragment_test: Bool32::default(),
20471        }
20472    }
20473}
20474
20475unsafe impl Send for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
20476unsafe impl Sync for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
20477
20478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html>
20479#[repr(C)]
20480#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20481pub struct PhysicalDeviceRobustness2FeaturesKHR {
20482    pub s_type: StructureType,
20483    pub next: *mut c_void,
20484    pub robust_buffer_access2: Bool32,
20485    pub robust_image_access2: Bool32,
20486    pub null_descriptor: Bool32,
20487}
20488
20489impl Default for PhysicalDeviceRobustness2FeaturesKHR {
20490    #[inline]
20491    fn default() -> Self {
20492        Self {
20493            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,
20494            next: ptr::null_mut(),
20495            robust_buffer_access2: Bool32::default(),
20496            robust_image_access2: Bool32::default(),
20497            null_descriptor: Bool32::default(),
20498        }
20499    }
20500}
20501
20502unsafe impl Send for PhysicalDeviceRobustness2FeaturesKHR {}
20503unsafe impl Sync for PhysicalDeviceRobustness2FeaturesKHR {}
20504
20505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html>
20506#[repr(C)]
20507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20508pub struct PhysicalDeviceRobustness2PropertiesKHR {
20509    pub s_type: StructureType,
20510    pub next: *mut c_void,
20511    pub robust_storage_buffer_access_size_alignment: DeviceSize,
20512    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
20513}
20514
20515impl Default for PhysicalDeviceRobustness2PropertiesKHR {
20516    #[inline]
20517    fn default() -> Self {
20518        Self {
20519            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,
20520            next: ptr::null_mut(),
20521            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
20522            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
20523        }
20524    }
20525}
20526
20527unsafe impl Send for PhysicalDeviceRobustness2PropertiesKHR {}
20528unsafe impl Sync for PhysicalDeviceRobustness2PropertiesKHR {}
20529
20530/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
20531#[repr(C)]
20532#[derive(Copy, Clone, Debug, PartialEq)]
20533pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
20534    pub s_type: StructureType,
20535    pub next: *mut c_void,
20536    pub sample_location_sample_counts: SampleCountFlags,
20537    pub max_sample_location_grid_size: Extent2D,
20538    pub sample_location_coordinate_range: [f32; 2],
20539    pub sample_location_sub_pixel_bits: u32,
20540    pub variable_sample_locations: Bool32,
20541}
20542
20543impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
20544    #[inline]
20545    fn default() -> Self {
20546        Self {
20547            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
20548            next: ptr::null_mut(),
20549            sample_location_sample_counts: SampleCountFlags::default(),
20550            max_sample_location_grid_size: Extent2D::default(),
20551            sample_location_coordinate_range: [f32::default(); 2],
20552            sample_location_sub_pixel_bits: u32::default(),
20553            variable_sample_locations: Bool32::default(),
20554        }
20555    }
20556}
20557
20558unsafe impl Send for PhysicalDeviceSampleLocationsPropertiesEXT {}
20559unsafe impl Sync for PhysicalDeviceSampleLocationsPropertiesEXT {}
20560
20561/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
20562#[repr(C)]
20563#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20564pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
20565    pub s_type: StructureType,
20566    pub next: *mut c_void,
20567    pub filter_minmax_single_component_formats: Bool32,
20568    pub filter_minmax_image_component_mapping: Bool32,
20569}
20570
20571impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
20572    #[inline]
20573    fn default() -> Self {
20574        Self {
20575            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
20576            next: ptr::null_mut(),
20577            filter_minmax_single_component_formats: Bool32::default(),
20578            filter_minmax_image_component_mapping: Bool32::default(),
20579        }
20580    }
20581}
20582
20583unsafe impl Send for PhysicalDeviceSamplerFilterMinmaxProperties {}
20584unsafe impl Sync for PhysicalDeviceSamplerFilterMinmaxProperties {}
20585
20586/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
20587#[repr(C)]
20588#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20589pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
20590    pub s_type: StructureType,
20591    pub next: *mut c_void,
20592    pub sampler_ycbcr_conversion: Bool32,
20593}
20594
20595impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
20596    #[inline]
20597    fn default() -> Self {
20598        Self {
20599            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
20600            next: ptr::null_mut(),
20601            sampler_ycbcr_conversion: Bool32::default(),
20602        }
20603    }
20604}
20605
20606unsafe impl Send for PhysicalDeviceSamplerYcbcrConversionFeatures {}
20607unsafe impl Sync for PhysicalDeviceSamplerYcbcrConversionFeatures {}
20608
20609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
20610#[repr(C)]
20611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20612pub struct PhysicalDeviceScalarBlockLayoutFeatures {
20613    pub s_type: StructureType,
20614    pub next: *mut c_void,
20615    pub scalar_block_layout: Bool32,
20616}
20617
20618impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
20619    #[inline]
20620    fn default() -> Self {
20621        Self {
20622            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
20623            next: ptr::null_mut(),
20624            scalar_block_layout: Bool32::default(),
20625        }
20626    }
20627}
20628
20629unsafe impl Send for PhysicalDeviceScalarBlockLayoutFeatures {}
20630unsafe impl Sync for PhysicalDeviceScalarBlockLayoutFeatures {}
20631
20632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
20633#[repr(C)]
20634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20635pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
20636    pub s_type: StructureType,
20637    pub next: *mut c_void,
20638    pub scheduling_controls: Bool32,
20639}
20640
20641impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
20642    #[inline]
20643    fn default() -> Self {
20644        Self {
20645            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
20646            next: ptr::null_mut(),
20647            scheduling_controls: Bool32::default(),
20648        }
20649    }
20650}
20651
20652unsafe impl Send for PhysicalDeviceSchedulingControlsFeaturesARM {}
20653unsafe impl Sync for PhysicalDeviceSchedulingControlsFeaturesARM {}
20654
20655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
20656#[repr(C)]
20657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20658pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
20659    pub s_type: StructureType,
20660    pub next: *mut c_void,
20661    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
20662}
20663
20664impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
20665    #[inline]
20666    fn default() -> Self {
20667        Self {
20668            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
20669            next: ptr::null_mut(),
20670            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
20671        }
20672    }
20673}
20674
20675unsafe impl Send for PhysicalDeviceSchedulingControlsPropertiesARM {}
20676unsafe impl Sync for PhysicalDeviceSchedulingControlsPropertiesARM {}
20677
20678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
20679#[repr(C)]
20680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20681pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20682    pub s_type: StructureType,
20683    pub next: *mut c_void,
20684    pub separate_depth_stencil_layouts: Bool32,
20685}
20686
20687impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20688    #[inline]
20689    fn default() -> Self {
20690        Self {
20691            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
20692            next: ptr::null_mut(),
20693            separate_depth_stencil_layouts: Bool32::default(),
20694        }
20695    }
20696}
20697
20698unsafe impl Send for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20699unsafe impl Sync for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20700
20701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShader64BitIndexingFeaturesEXT.html>
20702#[repr(C)]
20703#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20704pub struct PhysicalDeviceShader64BitIndexingFeaturesEXT {
20705    pub s_type: StructureType,
20706    pub next: *mut c_void,
20707    pub shader_64bit_indexing: Bool32,
20708}
20709
20710impl Default for PhysicalDeviceShader64BitIndexingFeaturesEXT {
20711    #[inline]
20712    fn default() -> Self {
20713        Self {
20714            s_type: StructureType::PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT,
20715            next: ptr::null_mut(),
20716            shader_64bit_indexing: Bool32::default(),
20717        }
20718    }
20719}
20720
20721unsafe impl Send for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
20722unsafe impl Sync for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
20723
20724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
20725#[repr(C)]
20726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20727pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20728    pub s_type: StructureType,
20729    pub next: *mut c_void,
20730    pub shader_float16_vector_atomics: Bool32,
20731}
20732
20733impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20734    #[inline]
20735    fn default() -> Self {
20736        Self {
20737            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
20738            next: ptr::null_mut(),
20739            shader_float16_vector_atomics: Bool32::default(),
20740        }
20741    }
20742}
20743
20744unsafe impl Send for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20745unsafe impl Sync for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20746
20747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
20748#[repr(C)]
20749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20750pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20751    pub s_type: StructureType,
20752    pub next: *mut c_void,
20753    pub shader_buffer_float16_atomics: Bool32,
20754    pub shader_buffer_float16_atomic_add: Bool32,
20755    pub shader_buffer_float16_atomic_min_max: Bool32,
20756    pub shader_buffer_float32_atomic_min_max: Bool32,
20757    pub shader_buffer_float64_atomic_min_max: Bool32,
20758    pub shader_shared_float16_atomics: Bool32,
20759    pub shader_shared_float16_atomic_add: Bool32,
20760    pub shader_shared_float16_atomic_min_max: Bool32,
20761    pub shader_shared_float32_atomic_min_max: Bool32,
20762    pub shader_shared_float64_atomic_min_max: Bool32,
20763    pub shader_image_float32_atomic_min_max: Bool32,
20764    pub sparse_image_float32_atomic_min_max: Bool32,
20765}
20766
20767impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20768    #[inline]
20769    fn default() -> Self {
20770        Self {
20771            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
20772            next: ptr::null_mut(),
20773            shader_buffer_float16_atomics: Bool32::default(),
20774            shader_buffer_float16_atomic_add: Bool32::default(),
20775            shader_buffer_float16_atomic_min_max: Bool32::default(),
20776            shader_buffer_float32_atomic_min_max: Bool32::default(),
20777            shader_buffer_float64_atomic_min_max: Bool32::default(),
20778            shader_shared_float16_atomics: Bool32::default(),
20779            shader_shared_float16_atomic_add: Bool32::default(),
20780            shader_shared_float16_atomic_min_max: Bool32::default(),
20781            shader_shared_float32_atomic_min_max: Bool32::default(),
20782            shader_shared_float64_atomic_min_max: Bool32::default(),
20783            shader_image_float32_atomic_min_max: Bool32::default(),
20784            sparse_image_float32_atomic_min_max: Bool32::default(),
20785        }
20786    }
20787}
20788
20789unsafe impl Send for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20790unsafe impl Sync for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20791
20792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
20793#[repr(C)]
20794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20795pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20796    pub s_type: StructureType,
20797    pub next: *mut c_void,
20798    pub shader_buffer_float32_atomics: Bool32,
20799    pub shader_buffer_float32_atomic_add: Bool32,
20800    pub shader_buffer_float64_atomics: Bool32,
20801    pub shader_buffer_float64_atomic_add: Bool32,
20802    pub shader_shared_float32_atomics: Bool32,
20803    pub shader_shared_float32_atomic_add: Bool32,
20804    pub shader_shared_float64_atomics: Bool32,
20805    pub shader_shared_float64_atomic_add: Bool32,
20806    pub shader_image_float32_atomics: Bool32,
20807    pub shader_image_float32_atomic_add: Bool32,
20808    pub sparse_image_float32_atomics: Bool32,
20809    pub sparse_image_float32_atomic_add: Bool32,
20810}
20811
20812impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20813    #[inline]
20814    fn default() -> Self {
20815        Self {
20816            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
20817            next: ptr::null_mut(),
20818            shader_buffer_float32_atomics: Bool32::default(),
20819            shader_buffer_float32_atomic_add: Bool32::default(),
20820            shader_buffer_float64_atomics: Bool32::default(),
20821            shader_buffer_float64_atomic_add: Bool32::default(),
20822            shader_shared_float32_atomics: Bool32::default(),
20823            shader_shared_float32_atomic_add: Bool32::default(),
20824            shader_shared_float64_atomics: Bool32::default(),
20825            shader_shared_float64_atomic_add: Bool32::default(),
20826            shader_image_float32_atomics: Bool32::default(),
20827            shader_image_float32_atomic_add: Bool32::default(),
20828            sparse_image_float32_atomics: Bool32::default(),
20829            sparse_image_float32_atomic_add: Bool32::default(),
20830        }
20831    }
20832}
20833
20834unsafe impl Send for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20835unsafe impl Sync for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20836
20837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
20838#[repr(C)]
20839#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20840pub struct PhysicalDeviceShaderAtomicInt64Features {
20841    pub s_type: StructureType,
20842    pub next: *mut c_void,
20843    pub shader_buffer_int64_atomics: Bool32,
20844    pub shader_shared_int64_atomics: Bool32,
20845}
20846
20847impl Default for PhysicalDeviceShaderAtomicInt64Features {
20848    #[inline]
20849    fn default() -> Self {
20850        Self {
20851            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
20852            next: ptr::null_mut(),
20853            shader_buffer_int64_atomics: Bool32::default(),
20854            shader_shared_int64_atomics: Bool32::default(),
20855        }
20856    }
20857}
20858
20859unsafe impl Send for PhysicalDeviceShaderAtomicInt64Features {}
20860unsafe impl Sync for PhysicalDeviceShaderAtomicInt64Features {}
20861
20862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html>
20863#[repr(C)]
20864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20865pub struct PhysicalDeviceShaderBfloat16FeaturesKHR {
20866    pub s_type: StructureType,
20867    pub next: *mut c_void,
20868    pub shader_b_float16_type: Bool32,
20869    pub shader_b_float_16dot_product: Bool32,
20870    pub shader_b_float16_cooperative_matrix: Bool32,
20871}
20872
20873impl Default for PhysicalDeviceShaderBfloat16FeaturesKHR {
20874    #[inline]
20875    fn default() -> Self {
20876        Self {
20877            s_type: StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR,
20878            next: ptr::null_mut(),
20879            shader_b_float16_type: Bool32::default(),
20880            shader_b_float_16dot_product: Bool32::default(),
20881            shader_b_float16_cooperative_matrix: Bool32::default(),
20882        }
20883    }
20884}
20885
20886unsafe impl Send for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20887unsafe impl Sync for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20888
20889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
20890#[repr(C)]
20891#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20892pub struct PhysicalDeviceShaderClockFeaturesKHR {
20893    pub s_type: StructureType,
20894    pub next: *mut c_void,
20895    pub shader_subgroup_clock: Bool32,
20896    pub shader_device_clock: Bool32,
20897}
20898
20899impl Default for PhysicalDeviceShaderClockFeaturesKHR {
20900    #[inline]
20901    fn default() -> Self {
20902        Self {
20903            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
20904            next: ptr::null_mut(),
20905            shader_subgroup_clock: Bool32::default(),
20906            shader_device_clock: Bool32::default(),
20907        }
20908    }
20909}
20910
20911unsafe impl Send for PhysicalDeviceShaderClockFeaturesKHR {}
20912unsafe impl Sync for PhysicalDeviceShaderClockFeaturesKHR {}
20913
20914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
20915#[repr(C)]
20916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20917pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20918    pub s_type: StructureType,
20919    pub next: *mut c_void,
20920    pub shader_core_builtins: Bool32,
20921}
20922
20923impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20924    #[inline]
20925    fn default() -> Self {
20926        Self {
20927            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
20928            next: ptr::null_mut(),
20929            shader_core_builtins: Bool32::default(),
20930        }
20931    }
20932}
20933
20934unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20935unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20936
20937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
20938#[repr(C)]
20939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20940pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20941    pub s_type: StructureType,
20942    pub next: *mut c_void,
20943    pub shader_core_mask: u64,
20944    pub shader_core_count: u32,
20945    pub shader_warps_per_core: u32,
20946}
20947
20948impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20949    #[inline]
20950    fn default() -> Self {
20951        Self {
20952            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
20953            next: ptr::null_mut(),
20954            shader_core_mask: u64::default(),
20955            shader_core_count: u32::default(),
20956            shader_warps_per_core: u32::default(),
20957        }
20958    }
20959}
20960
20961unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20962unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20963
20964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
20965#[repr(C)]
20966#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20967pub struct PhysicalDeviceShaderCoreProperties2AMD {
20968    pub s_type: StructureType,
20969    pub next: *mut c_void,
20970    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
20971    pub active_compute_unit_count: u32,
20972}
20973
20974impl Default for PhysicalDeviceShaderCoreProperties2AMD {
20975    #[inline]
20976    fn default() -> Self {
20977        Self {
20978            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
20979            next: ptr::null_mut(),
20980            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
20981            active_compute_unit_count: u32::default(),
20982        }
20983    }
20984}
20985
20986unsafe impl Send for PhysicalDeviceShaderCoreProperties2AMD {}
20987unsafe impl Sync for PhysicalDeviceShaderCoreProperties2AMD {}
20988
20989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
20990#[repr(C)]
20991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20992pub struct PhysicalDeviceShaderCorePropertiesAMD {
20993    pub s_type: StructureType,
20994    pub next: *mut c_void,
20995    pub shader_engine_count: u32,
20996    pub shader_arrays_per_engine_count: u32,
20997    pub compute_units_per_shader_array: u32,
20998    pub simd_per_compute_unit: u32,
20999    pub wavefronts_per_simd: u32,
21000    pub wavefront_size: u32,
21001    pub sgprs_per_simd: u32,
21002    pub min_sgpr_allocation: u32,
21003    pub max_sgpr_allocation: u32,
21004    pub sgpr_allocation_granularity: u32,
21005    pub vgprs_per_simd: u32,
21006    pub min_vgpr_allocation: u32,
21007    pub max_vgpr_allocation: u32,
21008    pub vgpr_allocation_granularity: u32,
21009}
21010
21011impl Default for PhysicalDeviceShaderCorePropertiesAMD {
21012    #[inline]
21013    fn default() -> Self {
21014        Self {
21015            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
21016            next: ptr::null_mut(),
21017            shader_engine_count: u32::default(),
21018            shader_arrays_per_engine_count: u32::default(),
21019            compute_units_per_shader_array: u32::default(),
21020            simd_per_compute_unit: u32::default(),
21021            wavefronts_per_simd: u32::default(),
21022            wavefront_size: u32::default(),
21023            sgprs_per_simd: u32::default(),
21024            min_sgpr_allocation: u32::default(),
21025            max_sgpr_allocation: u32::default(),
21026            sgpr_allocation_granularity: u32::default(),
21027            vgprs_per_simd: u32::default(),
21028            min_vgpr_allocation: u32::default(),
21029            max_vgpr_allocation: u32::default(),
21030            vgpr_allocation_granularity: u32::default(),
21031        }
21032    }
21033}
21034
21035unsafe impl Send for PhysicalDeviceShaderCorePropertiesAMD {}
21036unsafe impl Sync for PhysicalDeviceShaderCorePropertiesAMD {}
21037
21038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
21039#[repr(C)]
21040#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21041pub struct PhysicalDeviceShaderCorePropertiesARM {
21042    pub s_type: StructureType,
21043    pub next: *mut c_void,
21044    pub pixel_rate: u32,
21045    pub texel_rate: u32,
21046    pub fma_rate: u32,
21047}
21048
21049impl Default for PhysicalDeviceShaderCorePropertiesARM {
21050    #[inline]
21051    fn default() -> Self {
21052        Self {
21053            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
21054            next: ptr::null_mut(),
21055            pixel_rate: u32::default(),
21056            texel_rate: u32::default(),
21057            fma_rate: u32::default(),
21058        }
21059    }
21060}
21061
21062unsafe impl Send for PhysicalDeviceShaderCorePropertiesARM {}
21063unsafe impl Sync for PhysicalDeviceShaderCorePropertiesARM {}
21064
21065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
21066#[repr(C)]
21067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21068pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
21069    pub s_type: StructureType,
21070    pub next: *mut c_void,
21071    pub shader_demote_to_helper_invocation: Bool32,
21072}
21073
21074impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
21075    #[inline]
21076    fn default() -> Self {
21077        Self {
21078            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
21079            next: ptr::null_mut(),
21080            shader_demote_to_helper_invocation: Bool32::default(),
21081        }
21082    }
21083}
21084
21085unsafe impl Send for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
21086unsafe impl Sync for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
21087
21088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
21089#[repr(C)]
21090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21091pub struct PhysicalDeviceShaderDrawParametersFeatures {
21092    pub s_type: StructureType,
21093    pub next: *mut c_void,
21094    pub shader_draw_parameters: Bool32,
21095}
21096
21097impl Default for PhysicalDeviceShaderDrawParametersFeatures {
21098    #[inline]
21099    fn default() -> Self {
21100        Self {
21101            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
21102            next: ptr::null_mut(),
21103            shader_draw_parameters: Bool32::default(),
21104        }
21105    }
21106}
21107
21108unsafe impl Send for PhysicalDeviceShaderDrawParametersFeatures {}
21109unsafe impl Sync for PhysicalDeviceShaderDrawParametersFeatures {}
21110
21111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
21112#[repr(C)]
21113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21114pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
21115    pub s_type: StructureType,
21116    pub next: *mut c_void,
21117    pub shader_early_and_late_fragment_tests: Bool32,
21118}
21119
21120impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
21121    #[inline]
21122    fn default() -> Self {
21123        Self {
21124            s_type:
21125                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
21126            next: ptr::null_mut(),
21127            shader_early_and_late_fragment_tests: Bool32::default(),
21128        }
21129    }
21130}
21131
21132unsafe impl Send for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
21133unsafe impl Sync for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
21134
21135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
21136#[repr(C)]
21137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21138pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
21139    pub s_type: StructureType,
21140    pub next: *mut c_void,
21141    pub shader_enqueue: Bool32,
21142    pub shader_mesh_enqueue: Bool32,
21143}
21144
21145impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
21146    #[inline]
21147    fn default() -> Self {
21148        Self {
21149            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
21150            next: ptr::null_mut(),
21151            shader_enqueue: Bool32::default(),
21152            shader_mesh_enqueue: Bool32::default(),
21153        }
21154    }
21155}
21156
21157unsafe impl Send for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
21158unsafe impl Sync for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
21159
21160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
21161#[repr(C)]
21162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21163pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
21164    pub s_type: StructureType,
21165    pub next: *mut c_void,
21166    pub max_execution_graph_depth: u32,
21167    pub max_execution_graph_shader_output_nodes: u32,
21168    pub max_execution_graph_shader_payload_size: u32,
21169    pub max_execution_graph_shader_payload_count: u32,
21170    pub execution_graph_dispatch_address_alignment: u32,
21171    pub max_execution_graph_workgroup_count: [u32; 3],
21172    pub max_execution_graph_workgroups: u32,
21173}
21174
21175impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
21176    #[inline]
21177    fn default() -> Self {
21178        Self {
21179            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
21180            next: ptr::null_mut(),
21181            max_execution_graph_depth: u32::default(),
21182            max_execution_graph_shader_output_nodes: u32::default(),
21183            max_execution_graph_shader_payload_size: u32::default(),
21184            max_execution_graph_shader_payload_count: u32::default(),
21185            execution_graph_dispatch_address_alignment: u32::default(),
21186            max_execution_graph_workgroup_count: [u32::default(); 3],
21187            max_execution_graph_workgroups: u32::default(),
21188        }
21189    }
21190}
21191
21192unsafe impl Send for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
21193unsafe impl Sync for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
21194
21195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
21196#[repr(C)]
21197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21198pub struct PhysicalDeviceShaderExpectAssumeFeatures {
21199    pub s_type: StructureType,
21200    pub next: *mut c_void,
21201    pub shader_expect_assume: Bool32,
21202}
21203
21204impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
21205    #[inline]
21206    fn default() -> Self {
21207        Self {
21208            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
21209            next: ptr::null_mut(),
21210            shader_expect_assume: Bool32::default(),
21211        }
21212    }
21213}
21214
21215unsafe impl Send for PhysicalDeviceShaderExpectAssumeFeatures {}
21216unsafe impl Sync for PhysicalDeviceShaderExpectAssumeFeatures {}
21217
21218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
21219#[repr(C)]
21220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21221pub struct PhysicalDeviceShaderFloat16Int8Features {
21222    pub s_type: StructureType,
21223    pub next: *mut c_void,
21224    pub shader_float16: Bool32,
21225    pub shader_int8: Bool32,
21226}
21227
21228impl Default for PhysicalDeviceShaderFloat16Int8Features {
21229    #[inline]
21230    fn default() -> Self {
21231        Self {
21232            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
21233            next: ptr::null_mut(),
21234            shader_float16: Bool32::default(),
21235            shader_int8: Bool32::default(),
21236        }
21237    }
21238}
21239
21240unsafe impl Send for PhysicalDeviceShaderFloat16Int8Features {}
21241unsafe impl Sync for PhysicalDeviceShaderFloat16Int8Features {}
21242
21243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html>
21244#[repr(C)]
21245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21246pub struct PhysicalDeviceShaderFloat8FeaturesEXT {
21247    pub s_type: StructureType,
21248    pub next: *mut c_void,
21249    pub shader_float8: Bool32,
21250    pub shader_float8_cooperative_matrix: Bool32,
21251}
21252
21253impl Default for PhysicalDeviceShaderFloat8FeaturesEXT {
21254    #[inline]
21255    fn default() -> Self {
21256        Self {
21257            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT,
21258            next: ptr::null_mut(),
21259            shader_float8: Bool32::default(),
21260            shader_float8_cooperative_matrix: Bool32::default(),
21261        }
21262    }
21263}
21264
21265unsafe impl Send for PhysicalDeviceShaderFloat8FeaturesEXT {}
21266unsafe impl Sync for PhysicalDeviceShaderFloat8FeaturesEXT {}
21267
21268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
21269#[repr(C)]
21270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21271pub struct PhysicalDeviceShaderFloatControls2Features {
21272    pub s_type: StructureType,
21273    pub next: *mut c_void,
21274    pub shader_float_controls2: Bool32,
21275}
21276
21277impl Default for PhysicalDeviceShaderFloatControls2Features {
21278    #[inline]
21279    fn default() -> Self {
21280        Self {
21281            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
21282            next: ptr::null_mut(),
21283            shader_float_controls2: Bool32::default(),
21284        }
21285    }
21286}
21287
21288unsafe impl Send for PhysicalDeviceShaderFloatControls2Features {}
21289unsafe impl Sync for PhysicalDeviceShaderFloatControls2Features {}
21290
21291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFmaFeaturesKHR.html>
21292#[repr(C)]
21293#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21294pub struct PhysicalDeviceShaderFmaFeaturesKHR {
21295    pub s_type: StructureType,
21296    pub next: *mut c_void,
21297    pub shader_fma_float16: Bool32,
21298    pub shader_fma_float32: Bool32,
21299    pub shader_fma_float64: Bool32,
21300}
21301
21302impl Default for PhysicalDeviceShaderFmaFeaturesKHR {
21303    #[inline]
21304    fn default() -> Self {
21305        Self {
21306            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR,
21307            next: ptr::null_mut(),
21308            shader_fma_float16: Bool32::default(),
21309            shader_fma_float32: Bool32::default(),
21310            shader_fma_float64: Bool32::default(),
21311        }
21312    }
21313}
21314
21315unsafe impl Send for PhysicalDeviceShaderFmaFeaturesKHR {}
21316unsafe impl Sync for PhysicalDeviceShaderFmaFeaturesKHR {}
21317
21318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
21319#[repr(C)]
21320#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21321pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21322    pub s_type: StructureType,
21323    pub next: *mut c_void,
21324    pub shader_image_int64_atomics: Bool32,
21325    pub sparse_image_int64_atomics: Bool32,
21326}
21327
21328impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21329    #[inline]
21330    fn default() -> Self {
21331        Self {
21332            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
21333            next: ptr::null_mut(),
21334            shader_image_int64_atomics: Bool32::default(),
21335            sparse_image_int64_atomics: Bool32::default(),
21336        }
21337    }
21338}
21339
21340unsafe impl Send for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21341unsafe impl Sync for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21342
21343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
21344#[repr(C)]
21345#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21346pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
21347    pub s_type: StructureType,
21348    pub next: *mut c_void,
21349    pub image_footprint: Bool32,
21350}
21351
21352impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
21353    #[inline]
21354    fn default() -> Self {
21355        Self {
21356            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
21357            next: ptr::null_mut(),
21358            image_footprint: Bool32::default(),
21359        }
21360    }
21361}
21362
21363unsafe impl Send for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21364unsafe impl Sync for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21365
21366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
21367#[repr(C)]
21368#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21369pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
21370    pub s_type: StructureType,
21371    pub next: *mut c_void,
21372    pub shader_integer_dot_product: Bool32,
21373}
21374
21375impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
21376    #[inline]
21377    fn default() -> Self {
21378        Self {
21379            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
21380            next: ptr::null_mut(),
21381            shader_integer_dot_product: Bool32::default(),
21382        }
21383    }
21384}
21385
21386unsafe impl Send for PhysicalDeviceShaderIntegerDotProductFeatures {}
21387unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductFeatures {}
21388
21389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
21390#[repr(C)]
21391#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21392pub struct PhysicalDeviceShaderIntegerDotProductProperties {
21393    pub s_type: StructureType,
21394    pub next: *mut c_void,
21395    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
21396    pub integer_dot_product_8bit_signed_accelerated: Bool32,
21397    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
21398    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
21399    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
21400    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
21401    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
21402    pub integer_dot_product_16bit_signed_accelerated: Bool32,
21403    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
21404    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
21405    pub integer_dot_product_32bit_signed_accelerated: Bool32,
21406    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
21407    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
21408    pub integer_dot_product_64bit_signed_accelerated: Bool32,
21409    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
21410    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
21411    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
21412    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
21413    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
21414    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
21415    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
21416        Bool32,
21417    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
21418    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
21419    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
21420    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
21421    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
21422    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
21423    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
21424    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
21425    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
21426}
21427
21428impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
21429    #[inline]
21430    fn default() -> Self {
21431        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() }
21432    }
21433}
21434
21435unsafe impl Send for PhysicalDeviceShaderIntegerDotProductProperties {}
21436unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductProperties {}
21437
21438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
21439#[repr(C)]
21440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21441pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
21442    pub s_type: StructureType,
21443    pub next: *mut c_void,
21444    pub shader_integer_functions2: Bool32,
21445}
21446
21447impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
21448    #[inline]
21449    fn default() -> Self {
21450        Self {
21451            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
21452            next: ptr::null_mut(),
21453            shader_integer_functions2: Bool32::default(),
21454        }
21455    }
21456}
21457
21458unsafe impl Send for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
21459unsafe impl Sync for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
21460
21461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderLongVectorFeaturesEXT.html>
21462#[repr(C)]
21463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21464pub struct PhysicalDeviceShaderLongVectorFeaturesEXT {
21465    pub s_type: StructureType,
21466    pub next: *mut c_void,
21467    pub long_vector: Bool32,
21468}
21469
21470impl Default for PhysicalDeviceShaderLongVectorFeaturesEXT {
21471    #[inline]
21472    fn default() -> Self {
21473        Self {
21474            s_type: StructureType::PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT,
21475            next: ptr::null_mut(),
21476            long_vector: Bool32::default(),
21477        }
21478    }
21479}
21480
21481unsafe impl Send for PhysicalDeviceShaderLongVectorFeaturesEXT {}
21482unsafe impl Sync for PhysicalDeviceShaderLongVectorFeaturesEXT {}
21483
21484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderLongVectorPropertiesEXT.html>
21485#[repr(C)]
21486#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21487pub struct PhysicalDeviceShaderLongVectorPropertiesEXT {
21488    pub s_type: StructureType,
21489    pub next: *mut c_void,
21490    pub max_vector_components: u32,
21491}
21492
21493impl Default for PhysicalDeviceShaderLongVectorPropertiesEXT {
21494    #[inline]
21495    fn default() -> Self {
21496        Self {
21497            s_type: StructureType::PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT,
21498            next: ptr::null_mut(),
21499            max_vector_components: u32::default(),
21500        }
21501    }
21502}
21503
21504unsafe impl Send for PhysicalDeviceShaderLongVectorPropertiesEXT {}
21505unsafe impl Sync for PhysicalDeviceShaderLongVectorPropertiesEXT {}
21506
21507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
21508#[repr(C)]
21509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21510pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
21511    pub s_type: StructureType,
21512    pub next: *mut c_void,
21513    pub shader_maximal_reconvergence: Bool32,
21514}
21515
21516impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
21517    #[inline]
21518    fn default() -> Self {
21519        Self {
21520            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
21521            next: ptr::null_mut(),
21522            shader_maximal_reconvergence: Bool32::default(),
21523        }
21524    }
21525}
21526
21527unsafe impl Send for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
21528unsafe impl Sync for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
21529
21530/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
21531#[repr(C)]
21532#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21533pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
21534    pub s_type: StructureType,
21535    pub next: *mut c_void,
21536    pub shader_module_identifier: Bool32,
21537}
21538
21539impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
21540    #[inline]
21541    fn default() -> Self {
21542        Self {
21543            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
21544            next: ptr::null_mut(),
21545            shader_module_identifier: Bool32::default(),
21546        }
21547    }
21548}
21549
21550unsafe impl Send for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
21551unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
21552
21553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
21554#[repr(C)]
21555#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21556pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
21557    pub s_type: StructureType,
21558    pub next: *mut c_void,
21559    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
21560}
21561
21562impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
21563    #[inline]
21564    fn default() -> Self {
21565        Self {
21566            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
21567            next: ptr::null_mut(),
21568            shader_module_identifier_algorithm_uuid: ByteArray::default(),
21569        }
21570    }
21571}
21572
21573unsafe impl Send for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
21574unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
21575
21576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
21577#[repr(C)]
21578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21579pub struct PhysicalDeviceShaderObjectFeaturesEXT {
21580    pub s_type: StructureType,
21581    pub next: *mut c_void,
21582    pub shader_object: Bool32,
21583}
21584
21585impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
21586    #[inline]
21587    fn default() -> Self {
21588        Self {
21589            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
21590            next: ptr::null_mut(),
21591            shader_object: Bool32::default(),
21592        }
21593    }
21594}
21595
21596unsafe impl Send for PhysicalDeviceShaderObjectFeaturesEXT {}
21597unsafe impl Sync for PhysicalDeviceShaderObjectFeaturesEXT {}
21598
21599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
21600#[repr(C)]
21601#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21602pub struct PhysicalDeviceShaderObjectPropertiesEXT {
21603    pub s_type: StructureType,
21604    pub next: *mut c_void,
21605    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
21606    pub shader_binary_version: u32,
21607}
21608
21609impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
21610    #[inline]
21611    fn default() -> Self {
21612        Self {
21613            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
21614            next: ptr::null_mut(),
21615            shader_binary_uuid: ByteArray::default(),
21616            shader_binary_version: u32::default(),
21617        }
21618    }
21619}
21620
21621unsafe impl Send for PhysicalDeviceShaderObjectPropertiesEXT {}
21622unsafe impl Sync for PhysicalDeviceShaderObjectPropertiesEXT {}
21623
21624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
21625#[repr(C)]
21626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21627pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
21628    pub s_type: StructureType,
21629    pub next: *mut c_void,
21630    pub shader_quad_control: Bool32,
21631}
21632
21633impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
21634    #[inline]
21635    fn default() -> Self {
21636        Self {
21637            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
21638            next: ptr::null_mut(),
21639            shader_quad_control: Bool32::default(),
21640        }
21641    }
21642}
21643
21644unsafe impl Send for PhysicalDeviceShaderQuadControlFeaturesKHR {}
21645unsafe impl Sync for PhysicalDeviceShaderQuadControlFeaturesKHR {}
21646
21647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
21648#[repr(C)]
21649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21650pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
21651    pub s_type: StructureType,
21652    pub next: *mut c_void,
21653    pub shader_relaxed_extended_instruction: Bool32,
21654}
21655
21656impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
21657    #[inline]
21658    fn default() -> Self {
21659        Self {
21660            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
21661            next: ptr::null_mut(),
21662            shader_relaxed_extended_instruction: Bool32::default(),
21663        }
21664    }
21665}
21666
21667unsafe impl Send for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
21668unsafe impl Sync for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
21669
21670/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
21671#[repr(C)]
21672#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21673pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
21674    pub s_type: StructureType,
21675    pub next: *mut c_void,
21676    pub shader_replicated_composites: Bool32,
21677}
21678
21679impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
21680    #[inline]
21681    fn default() -> Self {
21682        Self {
21683            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
21684            next: ptr::null_mut(),
21685            shader_replicated_composites: Bool32::default(),
21686        }
21687    }
21688}
21689
21690unsafe impl Send for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
21691unsafe impl Sync for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
21692
21693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
21694#[repr(C)]
21695#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21696pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
21697    pub s_type: StructureType,
21698    pub next: *mut c_void,
21699    pub shader_sm_builtins: Bool32,
21700}
21701
21702impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
21703    #[inline]
21704    fn default() -> Self {
21705        Self {
21706            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
21707            next: ptr::null_mut(),
21708            shader_sm_builtins: Bool32::default(),
21709        }
21710    }
21711}
21712
21713unsafe impl Send for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
21714unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
21715
21716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
21717#[repr(C)]
21718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21719pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
21720    pub s_type: StructureType,
21721    pub next: *mut c_void,
21722    pub shader_sm_count: u32,
21723    pub shader_warps_per_sm: u32,
21724}
21725
21726impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
21727    #[inline]
21728    fn default() -> Self {
21729        Self {
21730            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
21731            next: ptr::null_mut(),
21732            shader_sm_count: u32::default(),
21733            shader_warps_per_sm: u32::default(),
21734        }
21735    }
21736}
21737
21738unsafe impl Send for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
21739unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
21740
21741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
21742#[repr(C)]
21743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21744pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21745    pub s_type: StructureType,
21746    pub next: *mut c_void,
21747    pub shader_subgroup_extended_types: Bool32,
21748}
21749
21750impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
21751    #[inline]
21752    fn default() -> Self {
21753        Self {
21754            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
21755            next: ptr::null_mut(),
21756            shader_subgroup_extended_types: Bool32::default(),
21757        }
21758    }
21759}
21760
21761unsafe impl Send for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21762unsafe impl Sync for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
21763
21764/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
21765#[repr(C)]
21766#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21767pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
21768    pub s_type: StructureType,
21769    pub next: *mut c_void,
21770    pub shader_subgroup_rotate: Bool32,
21771    pub shader_subgroup_rotate_clustered: Bool32,
21772}
21773
21774impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
21775    #[inline]
21776    fn default() -> Self {
21777        Self {
21778            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
21779            next: ptr::null_mut(),
21780            shader_subgroup_rotate: Bool32::default(),
21781            shader_subgroup_rotate_clustered: Bool32::default(),
21782        }
21783    }
21784}
21785
21786unsafe impl Send for PhysicalDeviceShaderSubgroupRotateFeatures {}
21787unsafe impl Sync for PhysicalDeviceShaderSubgroupRotateFeatures {}
21788
21789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
21790#[repr(C)]
21791#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21792pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21793    pub s_type: StructureType,
21794    pub next: *mut c_void,
21795    pub shader_subgroup_uniform_control_flow: Bool32,
21796}
21797
21798impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21799    #[inline]
21800    fn default() -> Self {
21801        Self {
21802            s_type:
21803                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
21804            next: ptr::null_mut(),
21805            shader_subgroup_uniform_control_flow: Bool32::default(),
21806        }
21807    }
21808}
21809
21810unsafe impl Send for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21811unsafe impl Sync for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21812
21813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
21814#[repr(C)]
21815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21816pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
21817    pub s_type: StructureType,
21818    pub next: *mut c_void,
21819    pub shader_terminate_invocation: Bool32,
21820}
21821
21822impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
21823    #[inline]
21824    fn default() -> Self {
21825        Self {
21826            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
21827            next: ptr::null_mut(),
21828            shader_terminate_invocation: Bool32::default(),
21829        }
21830    }
21831}
21832
21833unsafe impl Send for PhysicalDeviceShaderTerminateInvocationFeatures {}
21834unsafe impl Sync for PhysicalDeviceShaderTerminateInvocationFeatures {}
21835
21836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
21837#[repr(C)]
21838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21839pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
21840    pub s_type: StructureType,
21841    pub next: *mut c_void,
21842    pub shader_tile_image_color_read_access: Bool32,
21843    pub shader_tile_image_depth_read_access: Bool32,
21844    pub shader_tile_image_stencil_read_access: Bool32,
21845}
21846
21847impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
21848    #[inline]
21849    fn default() -> Self {
21850        Self {
21851            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
21852            next: ptr::null_mut(),
21853            shader_tile_image_color_read_access: Bool32::default(),
21854            shader_tile_image_depth_read_access: Bool32::default(),
21855            shader_tile_image_stencil_read_access: Bool32::default(),
21856        }
21857    }
21858}
21859
21860unsafe impl Send for PhysicalDeviceShaderTileImageFeaturesEXT {}
21861unsafe impl Sync for PhysicalDeviceShaderTileImageFeaturesEXT {}
21862
21863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
21864#[repr(C)]
21865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21866pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
21867    pub s_type: StructureType,
21868    pub next: *mut c_void,
21869    pub shader_tile_image_coherent_read_accelerated: Bool32,
21870    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
21871    pub shader_tile_image_read_from_helper_invocation: Bool32,
21872}
21873
21874impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
21875    #[inline]
21876    fn default() -> Self {
21877        Self {
21878            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
21879            next: ptr::null_mut(),
21880            shader_tile_image_coherent_read_accelerated: Bool32::default(),
21881            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
21882            shader_tile_image_read_from_helper_invocation: Bool32::default(),
21883        }
21884    }
21885}
21886
21887unsafe impl Send for PhysicalDeviceShaderTileImagePropertiesEXT {}
21888unsafe impl Sync for PhysicalDeviceShaderTileImagePropertiesEXT {}
21889
21890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.html>
21891#[repr(C)]
21892#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21893pub struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
21894    pub s_type: StructureType,
21895    pub next: *mut c_void,
21896    pub shader_uniform_buffer_unsized_array: Bool32,
21897}
21898
21899impl Default for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
21900    #[inline]
21901    fn default() -> Self {
21902        Self {
21903            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT,
21904            next: ptr::null_mut(),
21905            shader_uniform_buffer_unsized_array: Bool32::default(),
21906        }
21907    }
21908}
21909
21910unsafe impl Send for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
21911unsafe impl Sync for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
21912
21913/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUntypedPointersFeaturesKHR.html>
21914#[repr(C)]
21915#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21916pub struct PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21917    pub s_type: StructureType,
21918    pub next: *mut c_void,
21919    pub shader_untyped_pointers: Bool32,
21920}
21921
21922impl Default for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21923    #[inline]
21924    fn default() -> Self {
21925        Self {
21926            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR,
21927            next: ptr::null_mut(),
21928            shader_untyped_pointers: Bool32::default(),
21929        }
21930    }
21931}
21932
21933unsafe impl Send for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21934unsafe impl Sync for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21935
21936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
21937#[repr(C)]
21938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21939pub struct PhysicalDeviceShadingRateImageFeaturesNV {
21940    pub s_type: StructureType,
21941    pub next: *mut c_void,
21942    pub shading_rate_image: Bool32,
21943    pub shading_rate_coarse_sample_order: Bool32,
21944}
21945
21946impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
21947    #[inline]
21948    fn default() -> Self {
21949        Self {
21950            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
21951            next: ptr::null_mut(),
21952            shading_rate_image: Bool32::default(),
21953            shading_rate_coarse_sample_order: Bool32::default(),
21954        }
21955    }
21956}
21957
21958unsafe impl Send for PhysicalDeviceShadingRateImageFeaturesNV {}
21959unsafe impl Sync for PhysicalDeviceShadingRateImageFeaturesNV {}
21960
21961/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
21962#[repr(C)]
21963#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21964pub struct PhysicalDeviceShadingRateImagePropertiesNV {
21965    pub s_type: StructureType,
21966    pub next: *mut c_void,
21967    pub shading_rate_texel_size: Extent2D,
21968    pub shading_rate_palette_size: u32,
21969    pub shading_rate_max_coarse_samples: u32,
21970}
21971
21972impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
21973    #[inline]
21974    fn default() -> Self {
21975        Self {
21976            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
21977            next: ptr::null_mut(),
21978            shading_rate_texel_size: Extent2D::default(),
21979            shading_rate_palette_size: u32::default(),
21980            shading_rate_max_coarse_samples: u32::default(),
21981        }
21982    }
21983}
21984
21985unsafe impl Send for PhysicalDeviceShadingRateImagePropertiesNV {}
21986unsafe impl Sync for PhysicalDeviceShadingRateImagePropertiesNV {}
21987
21988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
21989#[repr(C)]
21990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21991pub struct PhysicalDeviceSparseImageFormatInfo2 {
21992    pub s_type: StructureType,
21993    pub next: *const c_void,
21994    pub format: Format,
21995    pub type_: ImageType,
21996    pub samples: SampleCountFlags,
21997    pub usage: ImageUsageFlags,
21998    pub tiling: ImageTiling,
21999}
22000
22001impl Default for PhysicalDeviceSparseImageFormatInfo2 {
22002    #[inline]
22003    fn default() -> Self {
22004        Self {
22005            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
22006            next: ptr::null(),
22007            format: Format::default(),
22008            type_: ImageType::default(),
22009            samples: SampleCountFlags::default(),
22010            usage: ImageUsageFlags::default(),
22011            tiling: ImageTiling::default(),
22012        }
22013    }
22014}
22015
22016unsafe impl Send for PhysicalDeviceSparseImageFormatInfo2 {}
22017unsafe impl Sync for PhysicalDeviceSparseImageFormatInfo2 {}
22018
22019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
22020#[repr(C)]
22021#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22022pub struct PhysicalDeviceSparseProperties {
22023    pub residency_standard_2d_block_shape: Bool32,
22024    pub residency_standard_2d_multisample_block_shape: Bool32,
22025    pub residency_standard_3d_block_shape: Bool32,
22026    pub residency_aligned_mip_size: Bool32,
22027    pub residency_non_resident_strict: Bool32,
22028}
22029
22030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
22031#[repr(C)]
22032#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22033pub struct PhysicalDeviceSubgroupProperties {
22034    pub s_type: StructureType,
22035    pub next: *mut c_void,
22036    pub subgroup_size: u32,
22037    pub supported_stages: ShaderStageFlags,
22038    pub supported_operations: SubgroupFeatureFlags,
22039    pub quad_operations_in_all_stages: Bool32,
22040}
22041
22042impl Default for PhysicalDeviceSubgroupProperties {
22043    #[inline]
22044    fn default() -> Self {
22045        Self {
22046            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
22047            next: ptr::null_mut(),
22048            subgroup_size: u32::default(),
22049            supported_stages: ShaderStageFlags::default(),
22050            supported_operations: SubgroupFeatureFlags::default(),
22051            quad_operations_in_all_stages: Bool32::default(),
22052        }
22053    }
22054}
22055
22056unsafe impl Send for PhysicalDeviceSubgroupProperties {}
22057unsafe impl Sync for PhysicalDeviceSubgroupProperties {}
22058
22059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
22060#[repr(C)]
22061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22062pub struct PhysicalDeviceSubgroupSizeControlFeatures {
22063    pub s_type: StructureType,
22064    pub next: *mut c_void,
22065    pub subgroup_size_control: Bool32,
22066    pub compute_full_subgroups: Bool32,
22067}
22068
22069impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
22070    #[inline]
22071    fn default() -> Self {
22072        Self {
22073            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
22074            next: ptr::null_mut(),
22075            subgroup_size_control: Bool32::default(),
22076            compute_full_subgroups: Bool32::default(),
22077        }
22078    }
22079}
22080
22081unsafe impl Send for PhysicalDeviceSubgroupSizeControlFeatures {}
22082unsafe impl Sync for PhysicalDeviceSubgroupSizeControlFeatures {}
22083
22084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
22085#[repr(C)]
22086#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22087pub struct PhysicalDeviceSubgroupSizeControlProperties {
22088    pub s_type: StructureType,
22089    pub next: *mut c_void,
22090    pub min_subgroup_size: u32,
22091    pub max_subgroup_size: u32,
22092    pub max_compute_workgroup_subgroups: u32,
22093    pub required_subgroup_size_stages: ShaderStageFlags,
22094}
22095
22096impl Default for PhysicalDeviceSubgroupSizeControlProperties {
22097    #[inline]
22098    fn default() -> Self {
22099        Self {
22100            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
22101            next: ptr::null_mut(),
22102            min_subgroup_size: u32::default(),
22103            max_subgroup_size: u32::default(),
22104            max_compute_workgroup_subgroups: u32::default(),
22105            required_subgroup_size_stages: ShaderStageFlags::default(),
22106        }
22107    }
22108}
22109
22110unsafe impl Send for PhysicalDeviceSubgroupSizeControlProperties {}
22111unsafe impl Sync for PhysicalDeviceSubgroupSizeControlProperties {}
22112
22113/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
22114#[repr(C)]
22115#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22116pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
22117    pub s_type: StructureType,
22118    pub next: *mut c_void,
22119    pub subpass_merge_feedback: Bool32,
22120}
22121
22122impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
22123    #[inline]
22124    fn default() -> Self {
22125        Self {
22126            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
22127            next: ptr::null_mut(),
22128            subpass_merge_feedback: Bool32::default(),
22129        }
22130    }
22131}
22132
22133unsafe impl Send for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
22134unsafe impl Sync for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
22135
22136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
22137#[repr(C)]
22138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22139pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
22140    pub s_type: StructureType,
22141    pub next: *mut c_void,
22142    pub subpass_shading: Bool32,
22143}
22144
22145impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
22146    #[inline]
22147    fn default() -> Self {
22148        Self {
22149            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
22150            next: ptr::null_mut(),
22151            subpass_shading: Bool32::default(),
22152        }
22153    }
22154}
22155
22156unsafe impl Send for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
22157unsafe impl Sync for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
22158
22159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
22160#[repr(C)]
22161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22162pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
22163    pub s_type: StructureType,
22164    pub next: *mut c_void,
22165    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
22166}
22167
22168impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
22169    #[inline]
22170    fn default() -> Self {
22171        Self {
22172            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
22173            next: ptr::null_mut(),
22174            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
22175        }
22176    }
22177}
22178
22179unsafe impl Send for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
22180unsafe impl Sync for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
22181
22182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
22183#[repr(C)]
22184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22185pub struct PhysicalDeviceSurfaceInfo2KHR {
22186    pub s_type: StructureType,
22187    pub next: *const c_void,
22188    pub surface: SurfaceKHR,
22189}
22190
22191impl Default for PhysicalDeviceSurfaceInfo2KHR {
22192    #[inline]
22193    fn default() -> Self {
22194        Self {
22195            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
22196            next: ptr::null(),
22197            surface: SurfaceKHR::default(),
22198        }
22199    }
22200}
22201
22202unsafe impl Send for PhysicalDeviceSurfaceInfo2KHR {}
22203unsafe impl Sync for PhysicalDeviceSurfaceInfo2KHR {}
22204
22205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html>
22206#[repr(C)]
22207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22208pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
22209    pub s_type: StructureType,
22210    pub next: *mut c_void,
22211    pub swapchain_maintenance1: Bool32,
22212}
22213
22214impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
22215    #[inline]
22216    fn default() -> Self {
22217        Self {
22218            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,
22219            next: ptr::null_mut(),
22220            swapchain_maintenance1: Bool32::default(),
22221        }
22222    }
22223}
22224
22225unsafe impl Send for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
22226unsafe impl Sync for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
22227
22228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
22229#[repr(C)]
22230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22231pub struct PhysicalDeviceSynchronization2Features {
22232    pub s_type: StructureType,
22233    pub next: *mut c_void,
22234    pub synchronization2: Bool32,
22235}
22236
22237impl Default for PhysicalDeviceSynchronization2Features {
22238    #[inline]
22239    fn default() -> Self {
22240        Self {
22241            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
22242            next: ptr::null_mut(),
22243            synchronization2: Bool32::default(),
22244        }
22245    }
22246}
22247
22248unsafe impl Send for PhysicalDeviceSynchronization2Features {}
22249unsafe impl Sync for PhysicalDeviceSynchronization2Features {}
22250
22251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html>
22252#[repr(C)]
22253#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22254pub struct PhysicalDeviceTensorFeaturesARM {
22255    pub s_type: StructureType,
22256    pub next: *mut c_void,
22257    pub tensor_non_packed: Bool32,
22258    pub shader_tensor_access: Bool32,
22259    pub shader_storage_tensor_array_dynamic_indexing: Bool32,
22260    pub shader_storage_tensor_array_non_uniform_indexing: Bool32,
22261    pub descriptor_binding_storage_tensor_update_after_bind: Bool32,
22262    pub tensors: Bool32,
22263}
22264
22265impl Default for PhysicalDeviceTensorFeaturesARM {
22266    #[inline]
22267    fn default() -> Self {
22268        Self {
22269            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM,
22270            next: ptr::null_mut(),
22271            tensor_non_packed: Bool32::default(),
22272            shader_tensor_access: Bool32::default(),
22273            shader_storage_tensor_array_dynamic_indexing: Bool32::default(),
22274            shader_storage_tensor_array_non_uniform_indexing: Bool32::default(),
22275            descriptor_binding_storage_tensor_update_after_bind: Bool32::default(),
22276            tensors: Bool32::default(),
22277        }
22278    }
22279}
22280
22281unsafe impl Send for PhysicalDeviceTensorFeaturesARM {}
22282unsafe impl Sync for PhysicalDeviceTensorFeaturesARM {}
22283
22284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html>
22285#[repr(C)]
22286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22287pub struct PhysicalDeviceTensorPropertiesARM {
22288    pub s_type: StructureType,
22289    pub next: *mut c_void,
22290    pub max_tensor_dimension_count: u32,
22291    pub max_tensor_elements: u64,
22292    pub max_per_dimension_tensor_elements: u64,
22293    pub max_tensor_stride: i64,
22294    pub max_tensor_size: u64,
22295    pub max_tensor_shader_access_array_length: u32,
22296    pub max_tensor_shader_access_size: u32,
22297    pub max_descriptor_set_storage_tensors: u32,
22298    pub max_per_stage_descriptor_set_storage_tensors: u32,
22299    pub max_descriptor_set_update_after_bind_storage_tensors: u32,
22300    pub max_per_stage_descriptor_update_after_bind_storage_tensors: u32,
22301    pub shader_storage_tensor_array_non_uniform_indexing_native: Bool32,
22302    pub shader_tensor_supported_stages: ShaderStageFlags,
22303}
22304
22305impl Default for PhysicalDeviceTensorPropertiesARM {
22306    #[inline]
22307    fn default() -> Self {
22308        Self {
22309            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM,
22310            next: ptr::null_mut(),
22311            max_tensor_dimension_count: u32::default(),
22312            max_tensor_elements: u64::default(),
22313            max_per_dimension_tensor_elements: u64::default(),
22314            max_tensor_stride: i64::default(),
22315            max_tensor_size: u64::default(),
22316            max_tensor_shader_access_array_length: u32::default(),
22317            max_tensor_shader_access_size: u32::default(),
22318            max_descriptor_set_storage_tensors: u32::default(),
22319            max_per_stage_descriptor_set_storage_tensors: u32::default(),
22320            max_descriptor_set_update_after_bind_storage_tensors: u32::default(),
22321            max_per_stage_descriptor_update_after_bind_storage_tensors: u32::default(),
22322            shader_storage_tensor_array_non_uniform_indexing_native: Bool32::default(),
22323            shader_tensor_supported_stages: ShaderStageFlags::default(),
22324        }
22325    }
22326}
22327
22328unsafe impl Send for PhysicalDeviceTensorPropertiesARM {}
22329unsafe impl Sync for PhysicalDeviceTensorPropertiesARM {}
22330
22331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
22332#[repr(C)]
22333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22334pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22335    pub s_type: StructureType,
22336    pub next: *mut c_void,
22337    pub texel_buffer_alignment: Bool32,
22338}
22339
22340impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22341    #[inline]
22342    fn default() -> Self {
22343        Self {
22344            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
22345            next: ptr::null_mut(),
22346            texel_buffer_alignment: Bool32::default(),
22347        }
22348    }
22349}
22350
22351unsafe impl Send for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22352unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22353
22354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
22355#[repr(C)]
22356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22357pub struct PhysicalDeviceTexelBufferAlignmentProperties {
22358    pub s_type: StructureType,
22359    pub next: *mut c_void,
22360    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
22361    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
22362    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
22363    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
22364}
22365
22366impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
22367    #[inline]
22368    fn default() -> Self {
22369        Self {
22370            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
22371            next: ptr::null_mut(),
22372            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
22373            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
22374            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
22375            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
22376        }
22377    }
22378}
22379
22380unsafe impl Send for PhysicalDeviceTexelBufferAlignmentProperties {}
22381unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentProperties {}
22382
22383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT.html>
22384#[repr(C)]
22385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22386pub struct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {
22387    pub s_type: StructureType,
22388    pub next: *mut c_void,
22389    pub textureCompressionASTC_3D: Bool32,
22390}
22391
22392impl Default for PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {
22393    #[inline]
22394    fn default() -> Self {
22395        Self {
22396            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT,
22397            next: ptr::null_mut(),
22398            textureCompressionASTC_3D: Bool32::default(),
22399        }
22400    }
22401}
22402
22403unsafe impl Send for PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {}
22404unsafe impl Sync for PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {}
22405
22406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
22407#[repr(C)]
22408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22409pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
22410    pub s_type: StructureType,
22411    pub next: *mut c_void,
22412    pub texture_compression_astc_hdr: Bool32,
22413}
22414
22415impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
22416    #[inline]
22417    fn default() -> Self {
22418        Self {
22419            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
22420            next: ptr::null_mut(),
22421            texture_compression_astc_hdr: Bool32::default(),
22422        }
22423    }
22424}
22425
22426unsafe impl Send for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
22427unsafe impl Sync for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
22428
22429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html>
22430#[repr(C)]
22431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22432pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOM {
22433    pub s_type: StructureType,
22434    pub next: *mut c_void,
22435    pub tile_memory_heap: Bool32,
22436}
22437
22438impl Default for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
22439    #[inline]
22440    fn default() -> Self {
22441        Self {
22442            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM,
22443            next: ptr::null_mut(),
22444            tile_memory_heap: Bool32::default(),
22445        }
22446    }
22447}
22448
22449unsafe impl Send for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
22450unsafe impl Sync for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
22451
22452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html>
22453#[repr(C)]
22454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22455pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOM {
22456    pub s_type: StructureType,
22457    pub next: *mut c_void,
22458    pub queue_submit_boundary: Bool32,
22459    pub tile_buffer_transfers: Bool32,
22460}
22461
22462impl Default for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
22463    #[inline]
22464    fn default() -> Self {
22465        Self {
22466            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM,
22467            next: ptr::null_mut(),
22468            queue_submit_boundary: Bool32::default(),
22469            tile_buffer_transfers: Bool32::default(),
22470        }
22471    }
22472}
22473
22474unsafe impl Send for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
22475unsafe impl Sync for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
22476
22477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
22478#[repr(C)]
22479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22480pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
22481    pub s_type: StructureType,
22482    pub next: *mut c_void,
22483    pub tile_properties: Bool32,
22484}
22485
22486impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
22487    #[inline]
22488    fn default() -> Self {
22489        Self {
22490            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
22491            next: ptr::null_mut(),
22492            tile_properties: Bool32::default(),
22493        }
22494    }
22495}
22496
22497unsafe impl Send for PhysicalDeviceTilePropertiesFeaturesQCOM {}
22498unsafe impl Sync for PhysicalDeviceTilePropertiesFeaturesQCOM {}
22499
22500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html>
22501#[repr(C)]
22502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22503pub struct PhysicalDeviceTileShadingFeaturesQCOM {
22504    pub s_type: StructureType,
22505    pub next: *mut c_void,
22506    pub tile_shading: Bool32,
22507    pub tile_shading_fragment_stage: Bool32,
22508    pub tile_shading_color_attachments: Bool32,
22509    pub tile_shading_depth_attachments: Bool32,
22510    pub tile_shading_stencil_attachments: Bool32,
22511    pub tile_shading_input_attachments: Bool32,
22512    pub tile_shading_sampled_attachments: Bool32,
22513    pub tile_shading_per_tile_draw: Bool32,
22514    pub tile_shading_per_tile_dispatch: Bool32,
22515    pub tile_shading_dispatch_tile: Bool32,
22516    pub tile_shading_apron: Bool32,
22517    pub tile_shading_anisotropic_apron: Bool32,
22518    pub tile_shading_atomic_ops: Bool32,
22519    pub tile_shading_image_processing: Bool32,
22520}
22521
22522impl Default for PhysicalDeviceTileShadingFeaturesQCOM {
22523    #[inline]
22524    fn default() -> Self {
22525        Self {
22526            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM,
22527            next: ptr::null_mut(),
22528            tile_shading: Bool32::default(),
22529            tile_shading_fragment_stage: Bool32::default(),
22530            tile_shading_color_attachments: Bool32::default(),
22531            tile_shading_depth_attachments: Bool32::default(),
22532            tile_shading_stencil_attachments: Bool32::default(),
22533            tile_shading_input_attachments: Bool32::default(),
22534            tile_shading_sampled_attachments: Bool32::default(),
22535            tile_shading_per_tile_draw: Bool32::default(),
22536            tile_shading_per_tile_dispatch: Bool32::default(),
22537            tile_shading_dispatch_tile: Bool32::default(),
22538            tile_shading_apron: Bool32::default(),
22539            tile_shading_anisotropic_apron: Bool32::default(),
22540            tile_shading_atomic_ops: Bool32::default(),
22541            tile_shading_image_processing: Bool32::default(),
22542        }
22543    }
22544}
22545
22546unsafe impl Send for PhysicalDeviceTileShadingFeaturesQCOM {}
22547unsafe impl Sync for PhysicalDeviceTileShadingFeaturesQCOM {}
22548
22549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html>
22550#[repr(C)]
22551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22552pub struct PhysicalDeviceTileShadingPropertiesQCOM {
22553    pub s_type: StructureType,
22554    pub next: *mut c_void,
22555    pub max_apron_size: u32,
22556    pub prefer_non_coherent: Bool32,
22557    pub tile_granularity: Extent2D,
22558    pub max_tile_shading_rate: Extent2D,
22559}
22560
22561impl Default for PhysicalDeviceTileShadingPropertiesQCOM {
22562    #[inline]
22563    fn default() -> Self {
22564        Self {
22565            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM,
22566            next: ptr::null_mut(),
22567            max_apron_size: u32::default(),
22568            prefer_non_coherent: Bool32::default(),
22569            tile_granularity: Extent2D::default(),
22570            max_tile_shading_rate: Extent2D::default(),
22571        }
22572    }
22573}
22574
22575unsafe impl Send for PhysicalDeviceTileShadingPropertiesQCOM {}
22576unsafe impl Sync for PhysicalDeviceTileShadingPropertiesQCOM {}
22577
22578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
22579#[repr(C)]
22580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22581pub struct PhysicalDeviceTimelineSemaphoreFeatures {
22582    pub s_type: StructureType,
22583    pub next: *mut c_void,
22584    pub timeline_semaphore: Bool32,
22585}
22586
22587impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
22588    #[inline]
22589    fn default() -> Self {
22590        Self {
22591            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
22592            next: ptr::null_mut(),
22593            timeline_semaphore: Bool32::default(),
22594        }
22595    }
22596}
22597
22598unsafe impl Send for PhysicalDeviceTimelineSemaphoreFeatures {}
22599unsafe impl Sync for PhysicalDeviceTimelineSemaphoreFeatures {}
22600
22601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
22602#[repr(C)]
22603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22604pub struct PhysicalDeviceTimelineSemaphoreProperties {
22605    pub s_type: StructureType,
22606    pub next: *mut c_void,
22607    pub max_timeline_semaphore_value_difference: u64,
22608}
22609
22610impl Default for PhysicalDeviceTimelineSemaphoreProperties {
22611    #[inline]
22612    fn default() -> Self {
22613        Self {
22614            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
22615            next: ptr::null_mut(),
22616            max_timeline_semaphore_value_difference: u64::default(),
22617        }
22618    }
22619}
22620
22621unsafe impl Send for PhysicalDeviceTimelineSemaphoreProperties {}
22622unsafe impl Sync for PhysicalDeviceTimelineSemaphoreProperties {}
22623
22624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
22625#[repr(C)]
22626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22627pub struct PhysicalDeviceToolProperties {
22628    pub s_type: StructureType,
22629    pub next: *mut c_void,
22630    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
22631    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
22632    pub purposes: ToolPurposeFlags,
22633    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
22634    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
22635}
22636
22637impl Default for PhysicalDeviceToolProperties {
22638    #[inline]
22639    fn default() -> Self {
22640        Self {
22641            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
22642            next: ptr::null_mut(),
22643            name: StringArray::default(),
22644            version: StringArray::default(),
22645            purposes: ToolPurposeFlags::default(),
22646            description: StringArray::default(),
22647            layer: StringArray::default(),
22648        }
22649    }
22650}
22651
22652unsafe impl Send for PhysicalDeviceToolProperties {}
22653unsafe impl Sync for PhysicalDeviceToolProperties {}
22654
22655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
22656#[repr(C)]
22657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22658pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
22659    pub s_type: StructureType,
22660    pub next: *mut c_void,
22661    pub transform_feedback: Bool32,
22662    pub geometry_streams: Bool32,
22663}
22664
22665impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
22666    #[inline]
22667    fn default() -> Self {
22668        Self {
22669            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
22670            next: ptr::null_mut(),
22671            transform_feedback: Bool32::default(),
22672            geometry_streams: Bool32::default(),
22673        }
22674    }
22675}
22676
22677unsafe impl Send for PhysicalDeviceTransformFeedbackFeaturesEXT {}
22678unsafe impl Sync for PhysicalDeviceTransformFeedbackFeaturesEXT {}
22679
22680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
22681#[repr(C)]
22682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22683pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
22684    pub s_type: StructureType,
22685    pub next: *mut c_void,
22686    pub max_transform_feedback_streams: u32,
22687    pub max_transform_feedback_buffers: u32,
22688    pub max_transform_feedback_buffer_size: DeviceSize,
22689    pub max_transform_feedback_stream_data_size: u32,
22690    pub max_transform_feedback_buffer_data_size: u32,
22691    pub max_transform_feedback_buffer_data_stride: u32,
22692    pub transform_feedback_queries: Bool32,
22693    pub transform_feedback_streams_lines_triangles: Bool32,
22694    pub transform_feedback_rasterization_stream_select: Bool32,
22695    pub transform_feedback_draw: Bool32,
22696}
22697
22698impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
22699    #[inline]
22700    fn default() -> Self {
22701        Self {
22702            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
22703            next: ptr::null_mut(),
22704            max_transform_feedback_streams: u32::default(),
22705            max_transform_feedback_buffers: u32::default(),
22706            max_transform_feedback_buffer_size: DeviceSize::default(),
22707            max_transform_feedback_stream_data_size: u32::default(),
22708            max_transform_feedback_buffer_data_size: u32::default(),
22709            max_transform_feedback_buffer_data_stride: u32::default(),
22710            transform_feedback_queries: Bool32::default(),
22711            transform_feedback_streams_lines_triangles: Bool32::default(),
22712            transform_feedback_rasterization_stream_select: Bool32::default(),
22713            transform_feedback_draw: Bool32::default(),
22714        }
22715    }
22716}
22717
22718unsafe impl Send for PhysicalDeviceTransformFeedbackPropertiesEXT {}
22719unsafe impl Sync for PhysicalDeviceTransformFeedbackPropertiesEXT {}
22720
22721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html>
22722#[repr(C)]
22723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22724pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
22725    pub s_type: StructureType,
22726    pub next: *mut c_void,
22727    pub unified_image_layouts: Bool32,
22728    pub unified_image_layouts_video: Bool32,
22729}
22730
22731impl Default for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
22732    #[inline]
22733    fn default() -> Self {
22734        Self {
22735            s_type: StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR,
22736            next: ptr::null_mut(),
22737            unified_image_layouts: Bool32::default(),
22738            unified_image_layouts_video: Bool32::default(),
22739        }
22740    }
22741}
22742
22743unsafe impl Send for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
22744unsafe impl Sync for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
22745
22746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
22747#[repr(C)]
22748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22749pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
22750    pub s_type: StructureType,
22751    pub next: *mut c_void,
22752    pub uniform_buffer_standard_layout: Bool32,
22753}
22754
22755impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
22756    #[inline]
22757    fn default() -> Self {
22758        Self {
22759            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
22760            next: ptr::null_mut(),
22761            uniform_buffer_standard_layout: Bool32::default(),
22762        }
22763    }
22764}
22765
22766unsafe impl Send for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
22767unsafe impl Sync for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
22768
22769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
22770#[repr(C)]
22771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22772pub struct PhysicalDeviceVariablePointersFeatures {
22773    pub s_type: StructureType,
22774    pub next: *mut c_void,
22775    pub variable_pointers_storage_buffer: Bool32,
22776    pub variable_pointers: Bool32,
22777}
22778
22779impl Default for PhysicalDeviceVariablePointersFeatures {
22780    #[inline]
22781    fn default() -> Self {
22782        Self {
22783            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
22784            next: ptr::null_mut(),
22785            variable_pointers_storage_buffer: Bool32::default(),
22786            variable_pointers: Bool32::default(),
22787        }
22788    }
22789}
22790
22791unsafe impl Send for PhysicalDeviceVariablePointersFeatures {}
22792unsafe impl Sync for PhysicalDeviceVariablePointersFeatures {}
22793
22794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
22795#[repr(C)]
22796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22797pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
22798    pub s_type: StructureType,
22799    pub next: *mut c_void,
22800    pub vertex_attribute_instance_rate_divisor: Bool32,
22801    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
22802}
22803
22804impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
22805    #[inline]
22806    fn default() -> Self {
22807        Self {
22808            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
22809            next: ptr::null_mut(),
22810            vertex_attribute_instance_rate_divisor: Bool32::default(),
22811            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
22812        }
22813    }
22814}
22815
22816unsafe impl Send for PhysicalDeviceVertexAttributeDivisorFeatures {}
22817unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorFeatures {}
22818
22819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
22820#[repr(C)]
22821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22822pub struct PhysicalDeviceVertexAttributeDivisorProperties {
22823    pub s_type: StructureType,
22824    pub next: *mut c_void,
22825    pub max_vertex_attrib_divisor: u32,
22826    pub supports_non_zero_first_instance: Bool32,
22827}
22828
22829impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
22830    #[inline]
22831    fn default() -> Self {
22832        Self {
22833            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
22834            next: ptr::null_mut(),
22835            max_vertex_attrib_divisor: u32::default(),
22836            supports_non_zero_first_instance: Bool32::default(),
22837        }
22838    }
22839}
22840
22841unsafe impl Send for PhysicalDeviceVertexAttributeDivisorProperties {}
22842unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorProperties {}
22843
22844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
22845#[repr(C)]
22846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22847pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22848    pub s_type: StructureType,
22849    pub next: *mut c_void,
22850    pub max_vertex_attrib_divisor: u32,
22851}
22852
22853impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22854    #[inline]
22855    fn default() -> Self {
22856        Self {
22857            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
22858            next: ptr::null_mut(),
22859            max_vertex_attrib_divisor: u32::default(),
22860        }
22861    }
22862}
22863
22864unsafe impl Send for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22865unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22866
22867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
22868#[repr(C)]
22869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22870pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22871    pub s_type: StructureType,
22872    pub next: *mut c_void,
22873    pub vertex_attribute_robustness: Bool32,
22874}
22875
22876impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22877    #[inline]
22878    fn default() -> Self {
22879        Self {
22880            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
22881            next: ptr::null_mut(),
22882            vertex_attribute_robustness: Bool32::default(),
22883        }
22884    }
22885}
22886
22887unsafe impl Send for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22888unsafe impl Sync for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22889
22890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
22891#[repr(C)]
22892#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22893pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22894    pub s_type: StructureType,
22895    pub next: *mut c_void,
22896    pub vertex_input_dynamic_state: Bool32,
22897}
22898
22899impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22900    #[inline]
22901    fn default() -> Self {
22902        Self {
22903            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
22904            next: ptr::null_mut(),
22905            vertex_input_dynamic_state: Bool32::default(),
22906        }
22907    }
22908}
22909
22910unsafe impl Send for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22911unsafe impl Sync for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22912
22913/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html>
22914#[repr(C)]
22915#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22916pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22917    pub s_type: StructureType,
22918    pub next: *mut c_void,
22919    pub video_decode_vp9: Bool32,
22920}
22921
22922impl Default for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22923    #[inline]
22924    fn default() -> Self {
22925        Self {
22926            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR,
22927            next: ptr::null_mut(),
22928            video_decode_vp9: Bool32::default(),
22929        }
22930    }
22931}
22932
22933unsafe impl Send for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22934unsafe impl Sync for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22935
22936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
22937#[repr(C)]
22938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22939pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22940    pub s_type: StructureType,
22941    pub next: *mut c_void,
22942    pub video_encode_av1: Bool32,
22943}
22944
22945impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22946    #[inline]
22947    fn default() -> Self {
22948        Self {
22949            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
22950            next: ptr::null_mut(),
22951            video_encode_av1: Bool32::default(),
22952        }
22953    }
22954}
22955
22956unsafe impl Send for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22957unsafe impl Sync for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22958
22959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html>
22960#[repr(C)]
22961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22962pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22963    pub s_type: StructureType,
22964    pub next: *mut c_void,
22965    pub video_encode_intra_refresh: Bool32,
22966}
22967
22968impl Default for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22969    #[inline]
22970    fn default() -> Self {
22971        Self {
22972            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR,
22973            next: ptr::null_mut(),
22974            video_encode_intra_refresh: Bool32::default(),
22975        }
22976    }
22977}
22978
22979unsafe impl Send for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22980unsafe impl Sync for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22981
22982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
22983#[repr(C)]
22984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22985pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22986    pub s_type: StructureType,
22987    pub next: *const c_void,
22988    pub video_profile: *const VideoProfileInfoKHR,
22989    pub quality_level: u32,
22990}
22991
22992impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22993    #[inline]
22994    fn default() -> Self {
22995        Self {
22996            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
22997            next: ptr::null(),
22998            video_profile: ptr::null(),
22999            quality_level: u32::default(),
23000        }
23001    }
23002}
23003
23004unsafe impl Send for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
23005unsafe impl Sync for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
23006
23007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
23008#[repr(C)]
23009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23010pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
23011    pub s_type: StructureType,
23012    pub next: *mut c_void,
23013    pub video_encode_quantization_map: Bool32,
23014}
23015
23016impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
23017    #[inline]
23018    fn default() -> Self {
23019        Self {
23020            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
23021            next: ptr::null_mut(),
23022            video_encode_quantization_map: Bool32::default(),
23023        }
23024    }
23025}
23026
23027unsafe impl Send for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
23028unsafe impl Sync for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
23029
23030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE.html>
23031#[repr(C)]
23032#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23033pub struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
23034    pub s_type: StructureType,
23035    pub next: *mut c_void,
23036    pub video_encode_rgb_conversion: Bool32,
23037}
23038
23039impl Default for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
23040    #[inline]
23041    fn default() -> Self {
23042        Self {
23043            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE,
23044            next: ptr::null_mut(),
23045            video_encode_rgb_conversion: Bool32::default(),
23046        }
23047    }
23048}
23049
23050unsafe impl Send for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
23051unsafe impl Sync for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
23052
23053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
23054#[repr(C)]
23055#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23056pub struct PhysicalDeviceVideoFormatInfoKHR {
23057    pub s_type: StructureType,
23058    pub next: *const c_void,
23059    pub image_usage: ImageUsageFlags,
23060}
23061
23062impl Default for PhysicalDeviceVideoFormatInfoKHR {
23063    #[inline]
23064    fn default() -> Self {
23065        Self {
23066            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
23067            next: ptr::null(),
23068            image_usage: ImageUsageFlags::default(),
23069        }
23070    }
23071}
23072
23073unsafe impl Send for PhysicalDeviceVideoFormatInfoKHR {}
23074unsafe impl Sync for PhysicalDeviceVideoFormatInfoKHR {}
23075
23076/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
23077#[repr(C)]
23078#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23079pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
23080    pub s_type: StructureType,
23081    pub next: *mut c_void,
23082    pub video_maintenance1: Bool32,
23083}
23084
23085impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
23086    #[inline]
23087    fn default() -> Self {
23088        Self {
23089            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
23090            next: ptr::null_mut(),
23091            video_maintenance1: Bool32::default(),
23092        }
23093    }
23094}
23095
23096unsafe impl Send for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
23097unsafe impl Sync for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
23098
23099/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
23100#[repr(C)]
23101#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23102pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
23103    pub s_type: StructureType,
23104    pub next: *mut c_void,
23105    pub video_maintenance2: Bool32,
23106}
23107
23108impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
23109    #[inline]
23110    fn default() -> Self {
23111        Self {
23112            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
23113            next: ptr::null_mut(),
23114            video_maintenance2: Bool32::default(),
23115        }
23116    }
23117}
23118
23119unsafe impl Send for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
23120unsafe impl Sync for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
23121
23122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
23123#[repr(C)]
23124#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23125pub struct PhysicalDeviceVulkan11Features {
23126    pub s_type: StructureType,
23127    pub next: *mut c_void,
23128    pub storage_buffer_16bit_access: Bool32,
23129    pub uniform_and_storage_buffer_16bit_access: Bool32,
23130    pub storage_push_constant16: Bool32,
23131    pub storage_input_output16: Bool32,
23132    pub multiview: Bool32,
23133    pub multiview_geometry_shader: Bool32,
23134    pub multiview_tessellation_shader: Bool32,
23135    pub variable_pointers_storage_buffer: Bool32,
23136    pub variable_pointers: Bool32,
23137    pub protected_memory: Bool32,
23138    pub sampler_ycbcr_conversion: Bool32,
23139    pub shader_draw_parameters: Bool32,
23140}
23141
23142impl Default for PhysicalDeviceVulkan11Features {
23143    #[inline]
23144    fn default() -> Self {
23145        Self {
23146            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
23147            next: ptr::null_mut(),
23148            storage_buffer_16bit_access: Bool32::default(),
23149            uniform_and_storage_buffer_16bit_access: Bool32::default(),
23150            storage_push_constant16: Bool32::default(),
23151            storage_input_output16: Bool32::default(),
23152            multiview: Bool32::default(),
23153            multiview_geometry_shader: Bool32::default(),
23154            multiview_tessellation_shader: Bool32::default(),
23155            variable_pointers_storage_buffer: Bool32::default(),
23156            variable_pointers: Bool32::default(),
23157            protected_memory: Bool32::default(),
23158            sampler_ycbcr_conversion: Bool32::default(),
23159            shader_draw_parameters: Bool32::default(),
23160        }
23161    }
23162}
23163
23164unsafe impl Send for PhysicalDeviceVulkan11Features {}
23165unsafe impl Sync for PhysicalDeviceVulkan11Features {}
23166
23167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
23168#[repr(C)]
23169#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23170pub struct PhysicalDeviceVulkan11Properties {
23171    pub s_type: StructureType,
23172    pub next: *mut c_void,
23173    pub device_uuid: ByteArray<UUID_SIZE>,
23174    pub driver_uuid: ByteArray<UUID_SIZE>,
23175    pub device_luid: ByteArray<LUID_SIZE>,
23176    pub device_node_mask: u32,
23177    pub device_luid_valid: Bool32,
23178    pub subgroup_size: u32,
23179    pub subgroup_supported_stages: ShaderStageFlags,
23180    pub subgroup_supported_operations: SubgroupFeatureFlags,
23181    pub subgroup_quad_operations_in_all_stages: Bool32,
23182    pub point_clipping_behavior: PointClippingBehavior,
23183    pub max_multiview_view_count: u32,
23184    pub max_multiview_instance_index: u32,
23185    pub protected_no_fault: Bool32,
23186    pub max_per_set_descriptors: u32,
23187    pub max_memory_allocation_size: DeviceSize,
23188}
23189
23190impl Default for PhysicalDeviceVulkan11Properties {
23191    #[inline]
23192    fn default() -> Self {
23193        Self {
23194            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
23195            next: ptr::null_mut(),
23196            device_uuid: ByteArray::default(),
23197            driver_uuid: ByteArray::default(),
23198            device_luid: ByteArray::default(),
23199            device_node_mask: u32::default(),
23200            device_luid_valid: Bool32::default(),
23201            subgroup_size: u32::default(),
23202            subgroup_supported_stages: ShaderStageFlags::default(),
23203            subgroup_supported_operations: SubgroupFeatureFlags::default(),
23204            subgroup_quad_operations_in_all_stages: Bool32::default(),
23205            point_clipping_behavior: PointClippingBehavior::default(),
23206            max_multiview_view_count: u32::default(),
23207            max_multiview_instance_index: u32::default(),
23208            protected_no_fault: Bool32::default(),
23209            max_per_set_descriptors: u32::default(),
23210            max_memory_allocation_size: DeviceSize::default(),
23211        }
23212    }
23213}
23214
23215unsafe impl Send for PhysicalDeviceVulkan11Properties {}
23216unsafe impl Sync for PhysicalDeviceVulkan11Properties {}
23217
23218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
23219#[repr(C)]
23220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23221pub struct PhysicalDeviceVulkan12Features {
23222    pub s_type: StructureType,
23223    pub next: *mut c_void,
23224    pub sampler_mirror_clamp_to_edge: Bool32,
23225    pub draw_indirect_count: Bool32,
23226    pub storage_buffer_8bit_access: Bool32,
23227    pub uniform_and_storage_buffer_8bit_access: Bool32,
23228    pub storage_push_constant8: Bool32,
23229    pub shader_buffer_int64_atomics: Bool32,
23230    pub shader_shared_int64_atomics: Bool32,
23231    pub shader_float16: Bool32,
23232    pub shader_int8: Bool32,
23233    pub descriptor_indexing: Bool32,
23234    pub shader_input_attachment_array_dynamic_indexing: Bool32,
23235    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
23236    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
23237    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
23238    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
23239    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
23240    pub shader_storage_image_array_non_uniform_indexing: Bool32,
23241    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
23242    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
23243    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
23244    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
23245    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
23246    pub descriptor_binding_storage_image_update_after_bind: Bool32,
23247    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
23248    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
23249    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
23250    pub descriptor_binding_update_unused_while_pending: Bool32,
23251    pub descriptor_binding_partially_bound: Bool32,
23252    pub descriptor_binding_variable_descriptor_count: Bool32,
23253    pub runtime_descriptor_array: Bool32,
23254    pub sampler_filter_minmax: Bool32,
23255    pub scalar_block_layout: Bool32,
23256    pub imageless_framebuffer: Bool32,
23257    pub uniform_buffer_standard_layout: Bool32,
23258    pub shader_subgroup_extended_types: Bool32,
23259    pub separate_depth_stencil_layouts: Bool32,
23260    pub host_query_reset: Bool32,
23261    pub timeline_semaphore: Bool32,
23262    pub buffer_device_address: Bool32,
23263    pub buffer_device_address_capture_replay: Bool32,
23264    pub buffer_device_address_multi_device: Bool32,
23265    pub vulkan_memory_model: Bool32,
23266    pub vulkan_memory_model_device_scope: Bool32,
23267    pub vulkan_memory_model_availability_visibility_chains: Bool32,
23268    pub shader_output_viewport_index: Bool32,
23269    pub shader_output_layer: Bool32,
23270    pub subgroup_broadcast_dynamic_id: Bool32,
23271}
23272
23273impl Default for PhysicalDeviceVulkan12Features {
23274    #[inline]
23275    fn default() -> Self {
23276        Self {
23277            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
23278            next: ptr::null_mut(),
23279            sampler_mirror_clamp_to_edge: Bool32::default(),
23280            draw_indirect_count: Bool32::default(),
23281            storage_buffer_8bit_access: Bool32::default(),
23282            uniform_and_storage_buffer_8bit_access: Bool32::default(),
23283            storage_push_constant8: Bool32::default(),
23284            shader_buffer_int64_atomics: Bool32::default(),
23285            shader_shared_int64_atomics: Bool32::default(),
23286            shader_float16: Bool32::default(),
23287            shader_int8: Bool32::default(),
23288            descriptor_indexing: Bool32::default(),
23289            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
23290            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
23291            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
23292            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
23293            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
23294            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
23295            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
23296            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
23297            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
23298            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
23299            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
23300            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
23301            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
23302            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
23303            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
23304            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
23305            descriptor_binding_update_unused_while_pending: Bool32::default(),
23306            descriptor_binding_partially_bound: Bool32::default(),
23307            descriptor_binding_variable_descriptor_count: Bool32::default(),
23308            runtime_descriptor_array: Bool32::default(),
23309            sampler_filter_minmax: Bool32::default(),
23310            scalar_block_layout: Bool32::default(),
23311            imageless_framebuffer: Bool32::default(),
23312            uniform_buffer_standard_layout: Bool32::default(),
23313            shader_subgroup_extended_types: Bool32::default(),
23314            separate_depth_stencil_layouts: Bool32::default(),
23315            host_query_reset: Bool32::default(),
23316            timeline_semaphore: Bool32::default(),
23317            buffer_device_address: Bool32::default(),
23318            buffer_device_address_capture_replay: Bool32::default(),
23319            buffer_device_address_multi_device: Bool32::default(),
23320            vulkan_memory_model: Bool32::default(),
23321            vulkan_memory_model_device_scope: Bool32::default(),
23322            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
23323            shader_output_viewport_index: Bool32::default(),
23324            shader_output_layer: Bool32::default(),
23325            subgroup_broadcast_dynamic_id: Bool32::default(),
23326        }
23327    }
23328}
23329
23330unsafe impl Send for PhysicalDeviceVulkan12Features {}
23331unsafe impl Sync for PhysicalDeviceVulkan12Features {}
23332
23333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
23334#[repr(C)]
23335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23336pub struct PhysicalDeviceVulkan12Properties {
23337    pub s_type: StructureType,
23338    pub next: *mut c_void,
23339    pub driver_id: DriverId,
23340    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
23341    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
23342    pub conformance_version: ConformanceVersion,
23343    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
23344    pub rounding_mode_independence: ShaderFloatControlsIndependence,
23345    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
23346    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
23347    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
23348    pub shader_denorm_preserve_float16: Bool32,
23349    pub shader_denorm_preserve_float32: Bool32,
23350    pub shader_denorm_preserve_float64: Bool32,
23351    pub shader_denorm_flush_to_zero_float16: Bool32,
23352    pub shader_denorm_flush_to_zero_float32: Bool32,
23353    pub shader_denorm_flush_to_zero_float64: Bool32,
23354    pub shader_rounding_mode_rte_float16: Bool32,
23355    pub shader_rounding_mode_rte_float32: Bool32,
23356    pub shader_rounding_mode_rte_float64: Bool32,
23357    pub shader_rounding_mode_rtz_float16: Bool32,
23358    pub shader_rounding_mode_rtz_float32: Bool32,
23359    pub shader_rounding_mode_rtz_float64: Bool32,
23360    pub max_update_after_bind_descriptors_in_all_pools: u32,
23361    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
23362    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
23363    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
23364    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
23365    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
23366    pub robust_buffer_access_update_after_bind: Bool32,
23367    pub quad_divergent_implicit_lod: Bool32,
23368    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
23369    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
23370    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
23371    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
23372    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
23373    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
23374    pub max_per_stage_update_after_bind_resources: u32,
23375    pub max_descriptor_set_update_after_bind_samplers: u32,
23376    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
23377    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
23378    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
23379    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
23380    pub max_descriptor_set_update_after_bind_sampled_images: u32,
23381    pub max_descriptor_set_update_after_bind_storage_images: u32,
23382    pub max_descriptor_set_update_after_bind_input_attachments: u32,
23383    pub supported_depth_resolve_modes: ResolveModeFlags,
23384    pub supported_stencil_resolve_modes: ResolveModeFlags,
23385    pub independent_resolve_none: Bool32,
23386    pub independent_resolve: Bool32,
23387    pub filter_minmax_single_component_formats: Bool32,
23388    pub filter_minmax_image_component_mapping: Bool32,
23389    pub max_timeline_semaphore_value_difference: u64,
23390    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
23391}
23392
23393impl Default for PhysicalDeviceVulkan12Properties {
23394    #[inline]
23395    fn default() -> Self {
23396        Self {
23397            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
23398            next: ptr::null_mut(),
23399            driver_id: DriverId::default(),
23400            driver_name: StringArray::default(),
23401            driver_info: StringArray::default(),
23402            conformance_version: ConformanceVersion::default(),
23403            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
23404            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
23405            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
23406            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
23407            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
23408            shader_denorm_preserve_float16: Bool32::default(),
23409            shader_denorm_preserve_float32: Bool32::default(),
23410            shader_denorm_preserve_float64: Bool32::default(),
23411            shader_denorm_flush_to_zero_float16: Bool32::default(),
23412            shader_denorm_flush_to_zero_float32: Bool32::default(),
23413            shader_denorm_flush_to_zero_float64: Bool32::default(),
23414            shader_rounding_mode_rte_float16: Bool32::default(),
23415            shader_rounding_mode_rte_float32: Bool32::default(),
23416            shader_rounding_mode_rte_float64: Bool32::default(),
23417            shader_rounding_mode_rtz_float16: Bool32::default(),
23418            shader_rounding_mode_rtz_float32: Bool32::default(),
23419            shader_rounding_mode_rtz_float64: Bool32::default(),
23420            max_update_after_bind_descriptors_in_all_pools: u32::default(),
23421            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
23422            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
23423            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
23424            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
23425            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
23426            robust_buffer_access_update_after_bind: Bool32::default(),
23427            quad_divergent_implicit_lod: Bool32::default(),
23428            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
23429            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
23430            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
23431            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
23432            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
23433            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
23434            max_per_stage_update_after_bind_resources: u32::default(),
23435            max_descriptor_set_update_after_bind_samplers: u32::default(),
23436            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
23437            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
23438            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
23439            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
23440            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
23441            max_descriptor_set_update_after_bind_storage_images: u32::default(),
23442            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
23443            supported_depth_resolve_modes: ResolveModeFlags::default(),
23444            supported_stencil_resolve_modes: ResolveModeFlags::default(),
23445            independent_resolve_none: Bool32::default(),
23446            independent_resolve: Bool32::default(),
23447            filter_minmax_single_component_formats: Bool32::default(),
23448            filter_minmax_image_component_mapping: Bool32::default(),
23449            max_timeline_semaphore_value_difference: u64::default(),
23450            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
23451        }
23452    }
23453}
23454
23455unsafe impl Send for PhysicalDeviceVulkan12Properties {}
23456unsafe impl Sync for PhysicalDeviceVulkan12Properties {}
23457
23458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
23459#[repr(C)]
23460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23461pub struct PhysicalDeviceVulkan13Features {
23462    pub s_type: StructureType,
23463    pub next: *mut c_void,
23464    pub robust_image_access: Bool32,
23465    pub inline_uniform_block: Bool32,
23466    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
23467    pub pipeline_creation_cache_control: Bool32,
23468    pub private_data: Bool32,
23469    pub shader_demote_to_helper_invocation: Bool32,
23470    pub shader_terminate_invocation: Bool32,
23471    pub subgroup_size_control: Bool32,
23472    pub compute_full_subgroups: Bool32,
23473    pub synchronization2: Bool32,
23474    pub texture_compression_astc_hdr: Bool32,
23475    pub shader_zero_initialize_workgroup_memory: Bool32,
23476    pub dynamic_rendering: Bool32,
23477    pub shader_integer_dot_product: Bool32,
23478    pub maintenance4: Bool32,
23479}
23480
23481impl Default for PhysicalDeviceVulkan13Features {
23482    #[inline]
23483    fn default() -> Self {
23484        Self {
23485            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
23486            next: ptr::null_mut(),
23487            robust_image_access: Bool32::default(),
23488            inline_uniform_block: Bool32::default(),
23489            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
23490            pipeline_creation_cache_control: Bool32::default(),
23491            private_data: Bool32::default(),
23492            shader_demote_to_helper_invocation: Bool32::default(),
23493            shader_terminate_invocation: Bool32::default(),
23494            subgroup_size_control: Bool32::default(),
23495            compute_full_subgroups: Bool32::default(),
23496            synchronization2: Bool32::default(),
23497            texture_compression_astc_hdr: Bool32::default(),
23498            shader_zero_initialize_workgroup_memory: Bool32::default(),
23499            dynamic_rendering: Bool32::default(),
23500            shader_integer_dot_product: Bool32::default(),
23501            maintenance4: Bool32::default(),
23502        }
23503    }
23504}
23505
23506unsafe impl Send for PhysicalDeviceVulkan13Features {}
23507unsafe impl Sync for PhysicalDeviceVulkan13Features {}
23508
23509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
23510#[repr(C)]
23511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23512pub struct PhysicalDeviceVulkan13Properties {
23513    pub s_type: StructureType,
23514    pub next: *mut c_void,
23515    pub min_subgroup_size: u32,
23516    pub max_subgroup_size: u32,
23517    pub max_compute_workgroup_subgroups: u32,
23518    pub required_subgroup_size_stages: ShaderStageFlags,
23519    pub max_inline_uniform_block_size: u32,
23520    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
23521    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
23522    pub max_descriptor_set_inline_uniform_blocks: u32,
23523    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
23524    pub max_inline_uniform_total_size: u32,
23525    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
23526    pub integer_dot_product_8bit_signed_accelerated: Bool32,
23527    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
23528    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
23529    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
23530    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
23531    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
23532    pub integer_dot_product_16bit_signed_accelerated: Bool32,
23533    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
23534    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
23535    pub integer_dot_product_32bit_signed_accelerated: Bool32,
23536    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
23537    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
23538    pub integer_dot_product_64bit_signed_accelerated: Bool32,
23539    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
23540    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
23541    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
23542    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
23543    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
23544    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
23545    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
23546        Bool32,
23547    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
23548    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
23549    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
23550    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
23551    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
23552    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
23553    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
23554    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
23555    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
23556    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
23557    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
23558    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
23559    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
23560    pub max_buffer_size: DeviceSize,
23561}
23562
23563impl Default for PhysicalDeviceVulkan13Properties {
23564    #[inline]
23565    fn default() -> Self {
23566        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() }
23567    }
23568}
23569
23570unsafe impl Send for PhysicalDeviceVulkan13Properties {}
23571unsafe impl Sync for PhysicalDeviceVulkan13Properties {}
23572
23573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
23574#[repr(C)]
23575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23576pub struct PhysicalDeviceVulkan14Features {
23577    pub s_type: StructureType,
23578    pub next: *mut c_void,
23579    pub global_priority_query: Bool32,
23580    pub shader_subgroup_rotate: Bool32,
23581    pub shader_subgroup_rotate_clustered: Bool32,
23582    pub shader_float_controls2: Bool32,
23583    pub shader_expect_assume: Bool32,
23584    pub rectangular_lines: Bool32,
23585    pub bresenham_lines: Bool32,
23586    pub smooth_lines: Bool32,
23587    pub stippled_rectangular_lines: Bool32,
23588    pub stippled_bresenham_lines: Bool32,
23589    pub stippled_smooth_lines: Bool32,
23590    pub vertex_attribute_instance_rate_divisor: Bool32,
23591    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
23592    pub index_type_uint8: Bool32,
23593    pub dynamic_rendering_local_read: Bool32,
23594    pub maintenance5: Bool32,
23595    pub maintenance6: Bool32,
23596    pub pipeline_protected_access: Bool32,
23597    pub pipeline_robustness: Bool32,
23598    pub host_image_copy: Bool32,
23599    pub push_descriptor: Bool32,
23600}
23601
23602impl Default for PhysicalDeviceVulkan14Features {
23603    #[inline]
23604    fn default() -> Self {
23605        Self {
23606            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
23607            next: ptr::null_mut(),
23608            global_priority_query: Bool32::default(),
23609            shader_subgroup_rotate: Bool32::default(),
23610            shader_subgroup_rotate_clustered: Bool32::default(),
23611            shader_float_controls2: Bool32::default(),
23612            shader_expect_assume: Bool32::default(),
23613            rectangular_lines: Bool32::default(),
23614            bresenham_lines: Bool32::default(),
23615            smooth_lines: Bool32::default(),
23616            stippled_rectangular_lines: Bool32::default(),
23617            stippled_bresenham_lines: Bool32::default(),
23618            stippled_smooth_lines: Bool32::default(),
23619            vertex_attribute_instance_rate_divisor: Bool32::default(),
23620            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
23621            index_type_uint8: Bool32::default(),
23622            dynamic_rendering_local_read: Bool32::default(),
23623            maintenance5: Bool32::default(),
23624            maintenance6: Bool32::default(),
23625            pipeline_protected_access: Bool32::default(),
23626            pipeline_robustness: Bool32::default(),
23627            host_image_copy: Bool32::default(),
23628            push_descriptor: Bool32::default(),
23629        }
23630    }
23631}
23632
23633unsafe impl Send for PhysicalDeviceVulkan14Features {}
23634unsafe impl Sync for PhysicalDeviceVulkan14Features {}
23635
23636/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
23637#[repr(C)]
23638#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23639pub struct PhysicalDeviceVulkan14Properties {
23640    pub s_type: StructureType,
23641    pub next: *mut c_void,
23642    pub line_sub_pixel_precision_bits: u32,
23643    pub max_vertex_attrib_divisor: u32,
23644    pub supports_non_zero_first_instance: Bool32,
23645    pub max_push_descriptors: u32,
23646    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
23647    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
23648    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
23649    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
23650    pub depth_stencil_swizzle_one_support: Bool32,
23651    pub polygon_mode_point_size: Bool32,
23652    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
23653    pub non_strict_wide_lines_use_parallelogram: Bool32,
23654    pub block_texel_view_compatible_multiple_layers: Bool32,
23655    pub max_combined_image_sampler_descriptor_count: u32,
23656    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
23657    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
23658    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
23659    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
23660    pub default_robustness_images: PipelineRobustnessImageBehavior,
23661    pub copy_src_layout_count: u32,
23662    pub copy_src_layouts: *mut ImageLayout,
23663    pub copy_dst_layout_count: u32,
23664    pub copy_dst_layouts: *mut ImageLayout,
23665    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
23666    pub identical_memory_type_requirements: Bool32,
23667}
23668
23669impl Default for PhysicalDeviceVulkan14Properties {
23670    #[inline]
23671    fn default() -> Self {
23672        Self {
23673            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
23674            next: ptr::null_mut(),
23675            line_sub_pixel_precision_bits: u32::default(),
23676            max_vertex_attrib_divisor: u32::default(),
23677            supports_non_zero_first_instance: Bool32::default(),
23678            max_push_descriptors: u32::default(),
23679            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
23680            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
23681            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
23682            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
23683            depth_stencil_swizzle_one_support: Bool32::default(),
23684            polygon_mode_point_size: Bool32::default(),
23685            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
23686            non_strict_wide_lines_use_parallelogram: Bool32::default(),
23687            block_texel_view_compatible_multiple_layers: Bool32::default(),
23688            max_combined_image_sampler_descriptor_count: u32::default(),
23689            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
23690            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
23691            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
23692            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
23693            default_robustness_images: PipelineRobustnessImageBehavior::default(),
23694            copy_src_layout_count: u32::default(),
23695            copy_src_layouts: ptr::null_mut(),
23696            copy_dst_layout_count: u32::default(),
23697            copy_dst_layouts: ptr::null_mut(),
23698            optimal_tiling_layout_uuid: ByteArray::default(),
23699            identical_memory_type_requirements: Bool32::default(),
23700        }
23701    }
23702}
23703
23704unsafe impl Send for PhysicalDeviceVulkan14Properties {}
23705unsafe impl Sync for PhysicalDeviceVulkan14Properties {}
23706
23707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
23708#[repr(C)]
23709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23710pub struct PhysicalDeviceVulkanMemoryModelFeatures {
23711    pub s_type: StructureType,
23712    pub next: *mut c_void,
23713    pub vulkan_memory_model: Bool32,
23714    pub vulkan_memory_model_device_scope: Bool32,
23715    pub vulkan_memory_model_availability_visibility_chains: Bool32,
23716}
23717
23718impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
23719    #[inline]
23720    fn default() -> Self {
23721        Self {
23722            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
23723            next: ptr::null_mut(),
23724            vulkan_memory_model: Bool32::default(),
23725            vulkan_memory_model_device_scope: Bool32::default(),
23726            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
23727        }
23728    }
23729}
23730
23731unsafe impl Send for PhysicalDeviceVulkanMemoryModelFeatures {}
23732unsafe impl Sync for PhysicalDeviceVulkanMemoryModelFeatures {}
23733
23734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
23735#[repr(C)]
23736#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23737pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
23738    pub s_type: StructureType,
23739    pub next: *mut c_void,
23740    pub workgroup_memory_explicit_layout: Bool32,
23741    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
23742    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
23743    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
23744}
23745
23746impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
23747    #[inline]
23748    fn default() -> Self {
23749        Self {
23750            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
23751            next: ptr::null_mut(),
23752            workgroup_memory_explicit_layout: Bool32::default(),
23753            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
23754            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
23755            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
23756        }
23757    }
23758}
23759
23760unsafe impl Send for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
23761unsafe impl Sync for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
23762
23763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
23764#[repr(C)]
23765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23766pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
23767    pub s_type: StructureType,
23768    pub next: *mut c_void,
23769    pub ycbcr2plane444_formats: Bool32,
23770}
23771
23772impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
23773    #[inline]
23774    fn default() -> Self {
23775        Self {
23776            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
23777            next: ptr::null_mut(),
23778            ycbcr2plane444_formats: Bool32::default(),
23779        }
23780    }
23781}
23782
23783unsafe impl Send for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
23784unsafe impl Sync for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
23785
23786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
23787#[repr(C)]
23788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23789pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
23790    pub s_type: StructureType,
23791    pub next: *mut c_void,
23792    pub ycbcr_degamma: Bool32,
23793}
23794
23795impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
23796    #[inline]
23797    fn default() -> Self {
23798        Self {
23799            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
23800            next: ptr::null_mut(),
23801            ycbcr_degamma: Bool32::default(),
23802        }
23803    }
23804}
23805
23806unsafe impl Send for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
23807unsafe impl Sync for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
23808
23809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
23810#[repr(C)]
23811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23812pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23813    pub s_type: StructureType,
23814    pub next: *mut c_void,
23815    pub ycbcr_image_arrays: Bool32,
23816}
23817
23818impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23819    #[inline]
23820    fn default() -> Self {
23821        Self {
23822            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
23823            next: ptr::null_mut(),
23824            ycbcr_image_arrays: Bool32::default(),
23825        }
23826    }
23827}
23828
23829unsafe impl Send for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23830unsafe impl Sync for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23831
23832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html>
23833#[repr(C)]
23834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23835pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23836    pub s_type: StructureType,
23837    pub next: *mut c_void,
23838    pub zero_initialize_device_memory: Bool32,
23839}
23840
23841impl Default for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23842    #[inline]
23843    fn default() -> Self {
23844        Self {
23845            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT,
23846            next: ptr::null_mut(),
23847            zero_initialize_device_memory: Bool32::default(),
23848        }
23849    }
23850}
23851
23852unsafe impl Send for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23853unsafe impl Sync for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23854
23855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
23856#[repr(C)]
23857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23858pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23859    pub s_type: StructureType,
23860    pub next: *mut c_void,
23861    pub shader_zero_initialize_workgroup_memory: Bool32,
23862}
23863
23864impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23865    #[inline]
23866    fn default() -> Self {
23867        Self {
23868            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
23869            next: ptr::null_mut(),
23870            shader_zero_initialize_workgroup_memory: Bool32::default(),
23871        }
23872    }
23873}
23874
23875unsafe impl Send for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23876unsafe impl Sync for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23877
23878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
23879#[repr(C)]
23880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23881pub struct PipelineBinaryCreateInfoKHR {
23882    pub s_type: StructureType,
23883    pub next: *const c_void,
23884    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
23885    pub pipeline: Pipeline,
23886    pub pipeline_create_info: *const PipelineCreateInfoKHR,
23887}
23888
23889impl Default for PipelineBinaryCreateInfoKHR {
23890    #[inline]
23891    fn default() -> Self {
23892        Self {
23893            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
23894            next: ptr::null(),
23895            keys_and_data_info: ptr::null(),
23896            pipeline: Pipeline::default(),
23897            pipeline_create_info: ptr::null(),
23898        }
23899    }
23900}
23901
23902unsafe impl Send for PipelineBinaryCreateInfoKHR {}
23903unsafe impl Sync for PipelineBinaryCreateInfoKHR {}
23904
23905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
23906#[repr(C)]
23907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23908pub struct PipelineBinaryDataInfoKHR {
23909    pub s_type: StructureType,
23910    pub next: *mut c_void,
23911    pub pipeline_binary: PipelineBinaryKHR,
23912}
23913
23914impl Default for PipelineBinaryDataInfoKHR {
23915    #[inline]
23916    fn default() -> Self {
23917        Self {
23918            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
23919            next: ptr::null_mut(),
23920            pipeline_binary: PipelineBinaryKHR::default(),
23921        }
23922    }
23923}
23924
23925unsafe impl Send for PipelineBinaryDataInfoKHR {}
23926unsafe impl Sync for PipelineBinaryDataInfoKHR {}
23927
23928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
23929#[repr(C)]
23930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23931pub struct PipelineBinaryDataKHR {
23932    pub data_size: usize,
23933    pub data: *mut c_void,
23934}
23935
23936impl Default for PipelineBinaryDataKHR {
23937    #[inline]
23938    fn default() -> Self {
23939        Self {
23940            data_size: usize::default(),
23941            data: ptr::null_mut(),
23942        }
23943    }
23944}
23945
23946unsafe impl Send for PipelineBinaryDataKHR {}
23947unsafe impl Sync for PipelineBinaryDataKHR {}
23948
23949/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
23950#[repr(C)]
23951#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23952pub struct PipelineBinaryHandlesInfoKHR {
23953    pub s_type: StructureType,
23954    pub next: *const c_void,
23955    pub pipeline_binary_count: u32,
23956    pub pipeline_binaries: *mut PipelineBinaryKHR,
23957}
23958
23959impl Default for PipelineBinaryHandlesInfoKHR {
23960    #[inline]
23961    fn default() -> Self {
23962        Self {
23963            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
23964            next: ptr::null(),
23965            pipeline_binary_count: u32::default(),
23966            pipeline_binaries: ptr::null_mut(),
23967        }
23968    }
23969}
23970
23971unsafe impl Send for PipelineBinaryHandlesInfoKHR {}
23972unsafe impl Sync for PipelineBinaryHandlesInfoKHR {}
23973
23974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
23975#[repr(C)]
23976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23977pub struct PipelineBinaryInfoKHR {
23978    pub s_type: StructureType,
23979    pub next: *const c_void,
23980    pub binary_count: u32,
23981    pub pipeline_binaries: *const PipelineBinaryKHR,
23982}
23983
23984impl Default for PipelineBinaryInfoKHR {
23985    #[inline]
23986    fn default() -> Self {
23987        Self {
23988            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
23989            next: ptr::null(),
23990            binary_count: u32::default(),
23991            pipeline_binaries: ptr::null(),
23992        }
23993    }
23994}
23995
23996unsafe impl Send for PipelineBinaryInfoKHR {}
23997unsafe impl Sync for PipelineBinaryInfoKHR {}
23998
23999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
24000#[repr(C)]
24001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24002pub struct PipelineBinaryKeyKHR {
24003    pub s_type: StructureType,
24004    pub next: *mut c_void,
24005    pub key_size: u32,
24006    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
24007}
24008
24009impl Default for PipelineBinaryKeyKHR {
24010    #[inline]
24011    fn default() -> Self {
24012        Self {
24013            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
24014            next: ptr::null_mut(),
24015            key_size: u32::default(),
24016            key: ByteArray::default(),
24017        }
24018    }
24019}
24020
24021unsafe impl Send for PipelineBinaryKeyKHR {}
24022unsafe impl Sync for PipelineBinaryKeyKHR {}
24023
24024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
24025#[repr(C)]
24026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24027pub struct PipelineBinaryKeysAndDataKHR {
24028    pub binary_count: u32,
24029    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
24030    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
24031}
24032
24033impl Default for PipelineBinaryKeysAndDataKHR {
24034    #[inline]
24035    fn default() -> Self {
24036        Self {
24037            binary_count: u32::default(),
24038            pipeline_binary_keys: ptr::null(),
24039            pipeline_binary_data: ptr::null(),
24040        }
24041    }
24042}
24043
24044unsafe impl Send for PipelineBinaryKeysAndDataKHR {}
24045unsafe impl Sync for PipelineBinaryKeysAndDataKHR {}
24046
24047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
24048#[repr(C)]
24049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24050pub struct PipelineCacheCreateInfo {
24051    pub s_type: StructureType,
24052    pub next: *const c_void,
24053    pub flags: PipelineCacheCreateFlags,
24054    pub initial_data_size: usize,
24055    pub initial_data: *const c_void,
24056}
24057
24058impl Default for PipelineCacheCreateInfo {
24059    #[inline]
24060    fn default() -> Self {
24061        Self {
24062            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
24063            next: ptr::null(),
24064            flags: PipelineCacheCreateFlags::default(),
24065            initial_data_size: usize::default(),
24066            initial_data: ptr::null(),
24067        }
24068    }
24069}
24070
24071unsafe impl Send for PipelineCacheCreateInfo {}
24072unsafe impl Sync for PipelineCacheCreateInfo {}
24073
24074/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionDataGraphQCOM.html>
24075#[repr(C)]
24076#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24077pub struct PipelineCacheHeaderVersionDataGraphQCOM {
24078    pub header_size: u32,
24079    pub header_version: PipelineCacheHeaderVersion,
24080    pub cache_type: DataGraphModelCacheTypeQCOM,
24081    pub cache_version: u32,
24082    pub toolchain_version: [u32; DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM as usize],
24083}
24084
24085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
24086#[repr(C)]
24087#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24088pub struct PipelineCacheHeaderVersionOne {
24089    pub header_size: u32,
24090    pub header_version: PipelineCacheHeaderVersion,
24091    pub vendor_id: u32,
24092    pub device_id: u32,
24093    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
24094}
24095
24096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
24097#[repr(C)]
24098#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24099pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
24100    pub s_type: StructureType,
24101    pub next: *const c_void,
24102    pub src_premultiplied: Bool32,
24103    pub dst_premultiplied: Bool32,
24104    pub blend_overlap: BlendOverlapEXT,
24105}
24106
24107impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
24108    #[inline]
24109    fn default() -> Self {
24110        Self {
24111            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
24112            next: ptr::null(),
24113            src_premultiplied: Bool32::default(),
24114            dst_premultiplied: Bool32::default(),
24115            blend_overlap: BlendOverlapEXT::default(),
24116        }
24117    }
24118}
24119
24120unsafe impl Send for PipelineColorBlendAdvancedStateCreateInfoEXT {}
24121unsafe impl Sync for PipelineColorBlendAdvancedStateCreateInfoEXT {}
24122
24123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
24124#[repr(C)]
24125#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24126pub struct PipelineColorBlendAttachmentState {
24127    pub blend_enable: Bool32,
24128    pub src_color_blend_factor: BlendFactor,
24129    pub dst_color_blend_factor: BlendFactor,
24130    pub color_blend_op: BlendOp,
24131    pub src_alpha_blend_factor: BlendFactor,
24132    pub dst_alpha_blend_factor: BlendFactor,
24133    pub alpha_blend_op: BlendOp,
24134    pub color_write_mask: ColorComponentFlags,
24135}
24136
24137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
24138#[repr(C)]
24139#[derive(Copy, Clone, Debug, PartialEq)]
24140pub struct PipelineColorBlendStateCreateInfo {
24141    pub s_type: StructureType,
24142    pub next: *const c_void,
24143    pub flags: PipelineColorBlendStateCreateFlags,
24144    pub logic_op_enable: Bool32,
24145    pub logic_op: LogicOp,
24146    pub attachment_count: u32,
24147    pub attachments: *const PipelineColorBlendAttachmentState,
24148    pub blend_constants: [f32; 4],
24149}
24150
24151impl Default for PipelineColorBlendStateCreateInfo {
24152    #[inline]
24153    fn default() -> Self {
24154        Self {
24155            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
24156            next: ptr::null(),
24157            flags: PipelineColorBlendStateCreateFlags::default(),
24158            logic_op_enable: Bool32::default(),
24159            logic_op: LogicOp::default(),
24160            attachment_count: u32::default(),
24161            attachments: ptr::null(),
24162            blend_constants: [f32::default(); 4],
24163        }
24164    }
24165}
24166
24167unsafe impl Send for PipelineColorBlendStateCreateInfo {}
24168unsafe impl Sync for PipelineColorBlendStateCreateInfo {}
24169
24170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
24171#[repr(C)]
24172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24173pub struct PipelineColorWriteCreateInfoEXT {
24174    pub s_type: StructureType,
24175    pub next: *const c_void,
24176    pub attachment_count: u32,
24177    pub color_write_enables: *const Bool32,
24178}
24179
24180impl Default for PipelineColorWriteCreateInfoEXT {
24181    #[inline]
24182    fn default() -> Self {
24183        Self {
24184            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
24185            next: ptr::null(),
24186            attachment_count: u32::default(),
24187            color_write_enables: ptr::null(),
24188        }
24189    }
24190}
24191
24192unsafe impl Send for PipelineColorWriteCreateInfoEXT {}
24193unsafe impl Sync for PipelineColorWriteCreateInfoEXT {}
24194
24195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
24196#[repr(C)]
24197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24198pub struct PipelineCompilerControlCreateInfoAMD {
24199    pub s_type: StructureType,
24200    pub next: *const c_void,
24201    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
24202}
24203
24204impl Default for PipelineCompilerControlCreateInfoAMD {
24205    #[inline]
24206    fn default() -> Self {
24207        Self {
24208            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
24209            next: ptr::null(),
24210            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
24211        }
24212    }
24213}
24214
24215unsafe impl Send for PipelineCompilerControlCreateInfoAMD {}
24216unsafe impl Sync for PipelineCompilerControlCreateInfoAMD {}
24217
24218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
24219#[repr(C)]
24220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24221pub struct PipelineCoverageModulationStateCreateInfoNV {
24222    pub s_type: StructureType,
24223    pub next: *const c_void,
24224    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
24225    pub coverage_modulation_mode: CoverageModulationModeNV,
24226    pub coverage_modulation_table_enable: Bool32,
24227    pub coverage_modulation_table_count: u32,
24228    pub coverage_modulation_table: *const f32,
24229}
24230
24231impl Default for PipelineCoverageModulationStateCreateInfoNV {
24232    #[inline]
24233    fn default() -> Self {
24234        Self {
24235            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
24236            next: ptr::null(),
24237            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
24238            coverage_modulation_mode: CoverageModulationModeNV::default(),
24239            coverage_modulation_table_enable: Bool32::default(),
24240            coverage_modulation_table_count: u32::default(),
24241            coverage_modulation_table: ptr::null(),
24242        }
24243    }
24244}
24245
24246unsafe impl Send for PipelineCoverageModulationStateCreateInfoNV {}
24247unsafe impl Sync for PipelineCoverageModulationStateCreateInfoNV {}
24248
24249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
24250#[repr(C)]
24251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24252pub struct PipelineCoverageReductionStateCreateInfoNV {
24253    pub s_type: StructureType,
24254    pub next: *const c_void,
24255    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
24256    pub coverage_reduction_mode: CoverageReductionModeNV,
24257}
24258
24259impl Default for PipelineCoverageReductionStateCreateInfoNV {
24260    #[inline]
24261    fn default() -> Self {
24262        Self {
24263            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
24264            next: ptr::null(),
24265            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
24266            coverage_reduction_mode: CoverageReductionModeNV::default(),
24267        }
24268    }
24269}
24270
24271unsafe impl Send for PipelineCoverageReductionStateCreateInfoNV {}
24272unsafe impl Sync for PipelineCoverageReductionStateCreateInfoNV {}
24273
24274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
24275#[repr(C)]
24276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24277pub struct PipelineCoverageToColorStateCreateInfoNV {
24278    pub s_type: StructureType,
24279    pub next: *const c_void,
24280    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
24281    pub coverage_to_color_enable: Bool32,
24282    pub coverage_to_color_location: u32,
24283}
24284
24285impl Default for PipelineCoverageToColorStateCreateInfoNV {
24286    #[inline]
24287    fn default() -> Self {
24288        Self {
24289            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
24290            next: ptr::null(),
24291            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
24292            coverage_to_color_enable: Bool32::default(),
24293            coverage_to_color_location: u32::default(),
24294        }
24295    }
24296}
24297
24298unsafe impl Send for PipelineCoverageToColorStateCreateInfoNV {}
24299unsafe impl Sync for PipelineCoverageToColorStateCreateInfoNV {}
24300
24301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
24302#[repr(C)]
24303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24304pub struct PipelineCreateFlags2CreateInfo {
24305    pub s_type: StructureType,
24306    pub next: *const c_void,
24307    pub flags: PipelineCreateFlags2,
24308}
24309
24310impl Default for PipelineCreateFlags2CreateInfo {
24311    #[inline]
24312    fn default() -> Self {
24313        Self {
24314            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
24315            next: ptr::null(),
24316            flags: PipelineCreateFlags2::default(),
24317        }
24318    }
24319}
24320
24321unsafe impl Send for PipelineCreateFlags2CreateInfo {}
24322unsafe impl Sync for PipelineCreateFlags2CreateInfo {}
24323
24324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
24325#[repr(C)]
24326#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24327pub struct PipelineCreateInfoKHR {
24328    pub s_type: StructureType,
24329    pub next: *mut c_void,
24330}
24331
24332impl Default for PipelineCreateInfoKHR {
24333    #[inline]
24334    fn default() -> Self {
24335        Self {
24336            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
24337            next: ptr::null_mut(),
24338        }
24339    }
24340}
24341
24342unsafe impl Send for PipelineCreateInfoKHR {}
24343unsafe impl Sync for PipelineCreateInfoKHR {}
24344
24345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
24346#[repr(C)]
24347#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24348pub struct PipelineCreationFeedback {
24349    pub flags: PipelineCreationFeedbackFlags,
24350    pub duration: u64,
24351}
24352
24353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
24354#[repr(C)]
24355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24356pub struct PipelineCreationFeedbackCreateInfo {
24357    pub s_type: StructureType,
24358    pub next: *const c_void,
24359    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
24360    pub pipeline_stage_creation_feedback_count: u32,
24361    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
24362}
24363
24364impl Default for PipelineCreationFeedbackCreateInfo {
24365    #[inline]
24366    fn default() -> Self {
24367        Self {
24368            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
24369            next: ptr::null(),
24370            pipeline_creation_feedback: ptr::null_mut(),
24371            pipeline_stage_creation_feedback_count: u32::default(),
24372            pipeline_stage_creation_feedbacks: ptr::null_mut(),
24373        }
24374    }
24375}
24376
24377unsafe impl Send for PipelineCreationFeedbackCreateInfo {}
24378unsafe impl Sync for PipelineCreationFeedbackCreateInfo {}
24379
24380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
24381#[repr(C)]
24382#[derive(Copy, Clone, Debug, PartialEq)]
24383pub struct PipelineDepthStencilStateCreateInfo {
24384    pub s_type: StructureType,
24385    pub next: *const c_void,
24386    pub flags: PipelineDepthStencilStateCreateFlags,
24387    pub depth_test_enable: Bool32,
24388    pub depth_write_enable: Bool32,
24389    pub depth_compare_op: CompareOp,
24390    pub depth_bounds_test_enable: Bool32,
24391    pub stencil_test_enable: Bool32,
24392    pub front: StencilOpState,
24393    pub back: StencilOpState,
24394    pub min_depth_bounds: f32,
24395    pub max_depth_bounds: f32,
24396}
24397
24398impl Default for PipelineDepthStencilStateCreateInfo {
24399    #[inline]
24400    fn default() -> Self {
24401        Self {
24402            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
24403            next: ptr::null(),
24404            flags: PipelineDepthStencilStateCreateFlags::default(),
24405            depth_test_enable: Bool32::default(),
24406            depth_write_enable: Bool32::default(),
24407            depth_compare_op: CompareOp::default(),
24408            depth_bounds_test_enable: Bool32::default(),
24409            stencil_test_enable: Bool32::default(),
24410            front: StencilOpState::default(),
24411            back: StencilOpState::default(),
24412            min_depth_bounds: f32::default(),
24413            max_depth_bounds: f32::default(),
24414        }
24415    }
24416}
24417
24418unsafe impl Send for PipelineDepthStencilStateCreateInfo {}
24419unsafe impl Sync for PipelineDepthStencilStateCreateInfo {}
24420
24421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
24422#[repr(C)]
24423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24424pub struct PipelineDiscardRectangleStateCreateInfoEXT {
24425    pub s_type: StructureType,
24426    pub next: *const c_void,
24427    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
24428    pub discard_rectangle_mode: DiscardRectangleModeEXT,
24429    pub discard_rectangle_count: u32,
24430    pub discard_rectangles: *const Rect2D,
24431}
24432
24433impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
24434    #[inline]
24435    fn default() -> Self {
24436        Self {
24437            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
24438            next: ptr::null(),
24439            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
24440            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
24441            discard_rectangle_count: u32::default(),
24442            discard_rectangles: ptr::null(),
24443        }
24444    }
24445}
24446
24447unsafe impl Send for PipelineDiscardRectangleStateCreateInfoEXT {}
24448unsafe impl Sync for PipelineDiscardRectangleStateCreateInfoEXT {}
24449
24450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
24451#[repr(C)]
24452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24453pub struct PipelineDynamicStateCreateInfo {
24454    pub s_type: StructureType,
24455    pub next: *const c_void,
24456    pub flags: PipelineDynamicStateCreateFlags,
24457    pub dynamic_state_count: u32,
24458    pub dynamic_states: *const DynamicState,
24459}
24460
24461impl Default for PipelineDynamicStateCreateInfo {
24462    #[inline]
24463    fn default() -> Self {
24464        Self {
24465            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
24466            next: ptr::null(),
24467            flags: PipelineDynamicStateCreateFlags::default(),
24468            dynamic_state_count: u32::default(),
24469            dynamic_states: ptr::null(),
24470        }
24471    }
24472}
24473
24474unsafe impl Send for PipelineDynamicStateCreateInfo {}
24475unsafe impl Sync for PipelineDynamicStateCreateInfo {}
24476
24477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
24478#[repr(C)]
24479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24480pub struct PipelineExecutableInfoKHR {
24481    pub s_type: StructureType,
24482    pub next: *const c_void,
24483    pub pipeline: Pipeline,
24484    pub executable_index: u32,
24485}
24486
24487impl Default for PipelineExecutableInfoKHR {
24488    #[inline]
24489    fn default() -> Self {
24490        Self {
24491            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
24492            next: ptr::null(),
24493            pipeline: Pipeline::default(),
24494            executable_index: u32::default(),
24495        }
24496    }
24497}
24498
24499unsafe impl Send for PipelineExecutableInfoKHR {}
24500unsafe impl Sync for PipelineExecutableInfoKHR {}
24501
24502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
24503#[repr(C)]
24504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24505pub struct PipelineExecutableInternalRepresentationKHR {
24506    pub s_type: StructureType,
24507    pub next: *mut c_void,
24508    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24509    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24510    pub is_text: Bool32,
24511    pub data_size: usize,
24512    pub data: *mut c_void,
24513}
24514
24515impl Default for PipelineExecutableInternalRepresentationKHR {
24516    #[inline]
24517    fn default() -> Self {
24518        Self {
24519            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
24520            next: ptr::null_mut(),
24521            name: StringArray::default(),
24522            description: StringArray::default(),
24523            is_text: Bool32::default(),
24524            data_size: usize::default(),
24525            data: ptr::null_mut(),
24526        }
24527    }
24528}
24529
24530unsafe impl Send for PipelineExecutableInternalRepresentationKHR {}
24531unsafe impl Sync for PipelineExecutableInternalRepresentationKHR {}
24532
24533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
24534#[repr(C)]
24535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24536pub struct PipelineExecutablePropertiesKHR {
24537    pub s_type: StructureType,
24538    pub next: *mut c_void,
24539    pub stages: ShaderStageFlags,
24540    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24541    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24542    pub subgroup_size: u32,
24543}
24544
24545impl Default for PipelineExecutablePropertiesKHR {
24546    #[inline]
24547    fn default() -> Self {
24548        Self {
24549            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
24550            next: ptr::null_mut(),
24551            stages: ShaderStageFlags::default(),
24552            name: StringArray::default(),
24553            description: StringArray::default(),
24554            subgroup_size: u32::default(),
24555        }
24556    }
24557}
24558
24559unsafe impl Send for PipelineExecutablePropertiesKHR {}
24560unsafe impl Sync for PipelineExecutablePropertiesKHR {}
24561
24562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
24563#[repr(C)]
24564#[derive(Copy, Clone, Debug)]
24565pub struct PipelineExecutableStatisticKHR {
24566    pub s_type: StructureType,
24567    pub next: *mut c_void,
24568    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
24569    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
24570    pub format: PipelineExecutableStatisticFormatKHR,
24571    pub value: PipelineExecutableStatisticValueKHR,
24572}
24573
24574impl Default for PipelineExecutableStatisticKHR {
24575    #[inline]
24576    fn default() -> Self {
24577        Self {
24578            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
24579            next: ptr::null_mut(),
24580            name: StringArray::default(),
24581            description: StringArray::default(),
24582            format: PipelineExecutableStatisticFormatKHR::default(),
24583            value: PipelineExecutableStatisticValueKHR::default(),
24584        }
24585    }
24586}
24587
24588unsafe impl Send for PipelineExecutableStatisticKHR {}
24589unsafe impl Sync for PipelineExecutableStatisticKHR {}
24590
24591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html>
24592#[repr(C)]
24593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24594pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVE {
24595    pub s_type: StructureType,
24596    pub next: *const c_void,
24597    pub max_fragment_density_map_layers: u32,
24598}
24599
24600impl Default for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
24601    #[inline]
24602    fn default() -> Self {
24603        Self {
24604            s_type: StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE,
24605            next: ptr::null(),
24606            max_fragment_density_map_layers: u32::default(),
24607        }
24608    }
24609}
24610
24611unsafe impl Send for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
24612unsafe impl Sync for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
24613
24614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
24615#[repr(C)]
24616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24617pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
24618    pub s_type: StructureType,
24619    pub next: *const c_void,
24620    pub shading_rate_type: FragmentShadingRateTypeNV,
24621    pub shading_rate: FragmentShadingRateNV,
24622    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
24623}
24624
24625impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
24626    #[inline]
24627    fn default() -> Self {
24628        Self {
24629            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
24630            next: ptr::null(),
24631            shading_rate_type: FragmentShadingRateTypeNV::default(),
24632            shading_rate: FragmentShadingRateNV::default(),
24633            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
24634        }
24635    }
24636}
24637
24638unsafe impl Send for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
24639unsafe impl Sync for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
24640
24641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
24642#[repr(C)]
24643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24644pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
24645    pub s_type: StructureType,
24646    pub next: *const c_void,
24647    pub fragment_size: Extent2D,
24648    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
24649}
24650
24651impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
24652    #[inline]
24653    fn default() -> Self {
24654        Self {
24655            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
24656            next: ptr::null(),
24657            fragment_size: Extent2D::default(),
24658            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
24659        }
24660    }
24661}
24662
24663unsafe impl Send for PipelineFragmentShadingRateStateCreateInfoKHR {}
24664unsafe impl Sync for PipelineFragmentShadingRateStateCreateInfoKHR {}
24665
24666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
24667#[repr(C)]
24668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24669pub struct PipelineIndirectDeviceAddressInfoNV {
24670    pub s_type: StructureType,
24671    pub next: *const c_void,
24672    pub pipeline_bind_point: PipelineBindPoint,
24673    pub pipeline: Pipeline,
24674}
24675
24676impl Default for PipelineIndirectDeviceAddressInfoNV {
24677    #[inline]
24678    fn default() -> Self {
24679        Self {
24680            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
24681            next: ptr::null(),
24682            pipeline_bind_point: PipelineBindPoint::default(),
24683            pipeline: Pipeline::default(),
24684        }
24685    }
24686}
24687
24688unsafe impl Send for PipelineIndirectDeviceAddressInfoNV {}
24689unsafe impl Sync for PipelineIndirectDeviceAddressInfoNV {}
24690
24691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
24692#[repr(C)]
24693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24694pub struct PipelineInfoKHR {
24695    pub s_type: StructureType,
24696    pub next: *const c_void,
24697    pub pipeline: Pipeline,
24698}
24699
24700impl Default for PipelineInfoKHR {
24701    #[inline]
24702    fn default() -> Self {
24703        Self {
24704            s_type: StructureType::PIPELINE_INFO_KHR,
24705            next: ptr::null(),
24706            pipeline: Pipeline::default(),
24707        }
24708    }
24709}
24710
24711unsafe impl Send for PipelineInfoKHR {}
24712unsafe impl Sync for PipelineInfoKHR {}
24713
24714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
24715#[repr(C)]
24716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24717pub struct PipelineInputAssemblyStateCreateInfo {
24718    pub s_type: StructureType,
24719    pub next: *const c_void,
24720    pub flags: PipelineInputAssemblyStateCreateFlags,
24721    pub topology: PrimitiveTopology,
24722    pub primitive_restart_enable: Bool32,
24723}
24724
24725impl Default for PipelineInputAssemblyStateCreateInfo {
24726    #[inline]
24727    fn default() -> Self {
24728        Self {
24729            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
24730            next: ptr::null(),
24731            flags: PipelineInputAssemblyStateCreateFlags::default(),
24732            topology: PrimitiveTopology::default(),
24733            primitive_restart_enable: Bool32::default(),
24734        }
24735    }
24736}
24737
24738unsafe impl Send for PipelineInputAssemblyStateCreateInfo {}
24739unsafe impl Sync for PipelineInputAssemblyStateCreateInfo {}
24740
24741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
24742#[repr(C)]
24743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24744pub struct PipelineLayoutCreateInfo {
24745    pub s_type: StructureType,
24746    pub next: *const c_void,
24747    pub flags: PipelineLayoutCreateFlags,
24748    pub set_layout_count: u32,
24749    pub set_layouts: *const DescriptorSetLayout,
24750    pub push_constant_range_count: u32,
24751    pub push_constant_ranges: *const PushConstantRange,
24752}
24753
24754impl Default for PipelineLayoutCreateInfo {
24755    #[inline]
24756    fn default() -> Self {
24757        Self {
24758            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
24759            next: ptr::null(),
24760            flags: PipelineLayoutCreateFlags::default(),
24761            set_layout_count: u32::default(),
24762            set_layouts: ptr::null(),
24763            push_constant_range_count: u32::default(),
24764            push_constant_ranges: ptr::null(),
24765        }
24766    }
24767}
24768
24769unsafe impl Send for PipelineLayoutCreateInfo {}
24770unsafe impl Sync for PipelineLayoutCreateInfo {}
24771
24772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
24773#[repr(C)]
24774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24775pub struct PipelineLibraryCreateInfoKHR {
24776    pub s_type: StructureType,
24777    pub next: *const c_void,
24778    pub library_count: u32,
24779    pub libraries: *const Pipeline,
24780}
24781
24782impl Default for PipelineLibraryCreateInfoKHR {
24783    #[inline]
24784    fn default() -> Self {
24785        Self {
24786            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
24787            next: ptr::null(),
24788            library_count: u32::default(),
24789            libraries: ptr::null(),
24790        }
24791    }
24792}
24793
24794unsafe impl Send for PipelineLibraryCreateInfoKHR {}
24795unsafe impl Sync for PipelineLibraryCreateInfoKHR {}
24796
24797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
24798#[repr(C)]
24799#[derive(Copy, Clone, Debug, PartialEq)]
24800pub struct PipelineMultisampleStateCreateInfo {
24801    pub s_type: StructureType,
24802    pub next: *const c_void,
24803    pub flags: PipelineMultisampleStateCreateFlags,
24804    pub rasterization_samples: SampleCountFlags,
24805    pub sample_shading_enable: Bool32,
24806    pub min_sample_shading: f32,
24807    pub sample_mask: *const SampleMask,
24808    pub alpha_to_coverage_enable: Bool32,
24809    pub alpha_to_one_enable: Bool32,
24810}
24811
24812impl Default for PipelineMultisampleStateCreateInfo {
24813    #[inline]
24814    fn default() -> Self {
24815        Self {
24816            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
24817            next: ptr::null(),
24818            flags: PipelineMultisampleStateCreateFlags::default(),
24819            rasterization_samples: SampleCountFlags::default(),
24820            sample_shading_enable: Bool32::default(),
24821            min_sample_shading: f32::default(),
24822            sample_mask: ptr::null(),
24823            alpha_to_coverage_enable: Bool32::default(),
24824            alpha_to_one_enable: Bool32::default(),
24825        }
24826    }
24827}
24828
24829unsafe impl Send for PipelineMultisampleStateCreateInfo {}
24830unsafe impl Sync for PipelineMultisampleStateCreateInfo {}
24831
24832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
24833#[repr(C)]
24834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24835pub struct PipelinePropertiesIdentifierEXT {
24836    pub s_type: StructureType,
24837    pub next: *mut c_void,
24838    pub pipeline_identifier: ByteArray<UUID_SIZE>,
24839}
24840
24841impl Default for PipelinePropertiesIdentifierEXT {
24842    #[inline]
24843    fn default() -> Self {
24844        Self {
24845            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
24846            next: ptr::null_mut(),
24847            pipeline_identifier: ByteArray::default(),
24848        }
24849    }
24850}
24851
24852unsafe impl Send for PipelinePropertiesIdentifierEXT {}
24853unsafe impl Sync for PipelinePropertiesIdentifierEXT {}
24854
24855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
24856#[repr(C)]
24857#[derive(Copy, Clone, Debug, PartialEq)]
24858pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
24859    pub s_type: StructureType,
24860    pub next: *const c_void,
24861    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
24862    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
24863    pub extra_primitive_overestimation_size: f32,
24864}
24865
24866impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
24867    #[inline]
24868    fn default() -> Self {
24869        Self {
24870            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
24871            next: ptr::null(),
24872            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
24873            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
24874            extra_primitive_overestimation_size: f32::default(),
24875        }
24876    }
24877}
24878
24879unsafe impl Send for PipelineRasterizationConservativeStateCreateInfoEXT {}
24880unsafe impl Sync for PipelineRasterizationConservativeStateCreateInfoEXT {}
24881
24882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
24883#[repr(C)]
24884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24885pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
24886    pub s_type: StructureType,
24887    pub next: *const c_void,
24888    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
24889    pub depth_clip_enable: Bool32,
24890}
24891
24892impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
24893    #[inline]
24894    fn default() -> Self {
24895        Self {
24896            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
24897            next: ptr::null(),
24898            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
24899            depth_clip_enable: Bool32::default(),
24900        }
24901    }
24902}
24903
24904unsafe impl Send for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24905unsafe impl Sync for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24906
24907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
24908#[repr(C)]
24909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24910pub struct PipelineRasterizationLineStateCreateInfo {
24911    pub s_type: StructureType,
24912    pub next: *const c_void,
24913    pub line_rasterization_mode: LineRasterizationMode,
24914    pub stippled_line_enable: Bool32,
24915    pub line_stipple_factor: u32,
24916    pub line_stipple_pattern: u16,
24917}
24918
24919impl Default for PipelineRasterizationLineStateCreateInfo {
24920    #[inline]
24921    fn default() -> Self {
24922        Self {
24923            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
24924            next: ptr::null(),
24925            line_rasterization_mode: LineRasterizationMode::default(),
24926            stippled_line_enable: Bool32::default(),
24927            line_stipple_factor: u32::default(),
24928            line_stipple_pattern: u16::default(),
24929        }
24930    }
24931}
24932
24933unsafe impl Send for PipelineRasterizationLineStateCreateInfo {}
24934unsafe impl Sync for PipelineRasterizationLineStateCreateInfo {}
24935
24936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
24937#[repr(C)]
24938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24939pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24940    pub s_type: StructureType,
24941    pub next: *const c_void,
24942    pub provoking_vertex_mode: ProvokingVertexModeEXT,
24943}
24944
24945impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24946    #[inline]
24947    fn default() -> Self {
24948        Self {
24949            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
24950            next: ptr::null(),
24951            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
24952        }
24953    }
24954}
24955
24956unsafe impl Send for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24957unsafe impl Sync for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24958
24959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
24960#[repr(C)]
24961#[derive(Copy, Clone, Debug, PartialEq)]
24962pub struct PipelineRasterizationStateCreateInfo {
24963    pub s_type: StructureType,
24964    pub next: *const c_void,
24965    pub flags: PipelineRasterizationStateCreateFlags,
24966    pub depth_clamp_enable: Bool32,
24967    pub rasterizer_discard_enable: Bool32,
24968    pub polygon_mode: PolygonMode,
24969    pub cull_mode: CullModeFlags,
24970    pub front_face: FrontFace,
24971    pub depth_bias_enable: Bool32,
24972    pub depth_bias_constant_factor: f32,
24973    pub depth_bias_clamp: f32,
24974    pub depth_bias_slope_factor: f32,
24975    pub line_width: f32,
24976}
24977
24978impl Default for PipelineRasterizationStateCreateInfo {
24979    #[inline]
24980    fn default() -> Self {
24981        Self {
24982            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
24983            next: ptr::null(),
24984            flags: PipelineRasterizationStateCreateFlags::default(),
24985            depth_clamp_enable: Bool32::default(),
24986            rasterizer_discard_enable: Bool32::default(),
24987            polygon_mode: PolygonMode::default(),
24988            cull_mode: CullModeFlags::default(),
24989            front_face: FrontFace::default(),
24990            depth_bias_enable: Bool32::default(),
24991            depth_bias_constant_factor: f32::default(),
24992            depth_bias_clamp: f32::default(),
24993            depth_bias_slope_factor: f32::default(),
24994            line_width: f32::default(),
24995        }
24996    }
24997}
24998
24999unsafe impl Send for PipelineRasterizationStateCreateInfo {}
25000unsafe impl Sync for PipelineRasterizationStateCreateInfo {}
25001
25002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
25003#[repr(C)]
25004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25005pub struct PipelineRasterizationStateRasterizationOrderAMD {
25006    pub s_type: StructureType,
25007    pub next: *const c_void,
25008    pub rasterization_order: RasterizationOrderAMD,
25009}
25010
25011impl Default for PipelineRasterizationStateRasterizationOrderAMD {
25012    #[inline]
25013    fn default() -> Self {
25014        Self {
25015            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
25016            next: ptr::null(),
25017            rasterization_order: RasterizationOrderAMD::default(),
25018        }
25019    }
25020}
25021
25022unsafe impl Send for PipelineRasterizationStateRasterizationOrderAMD {}
25023unsafe impl Sync for PipelineRasterizationStateRasterizationOrderAMD {}
25024
25025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
25026#[repr(C)]
25027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25028pub struct PipelineRasterizationStateStreamCreateInfoEXT {
25029    pub s_type: StructureType,
25030    pub next: *const c_void,
25031    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
25032    pub rasterization_stream: u32,
25033}
25034
25035impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
25036    #[inline]
25037    fn default() -> Self {
25038        Self {
25039            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
25040            next: ptr::null(),
25041            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
25042            rasterization_stream: u32::default(),
25043        }
25044    }
25045}
25046
25047unsafe impl Send for PipelineRasterizationStateStreamCreateInfoEXT {}
25048unsafe impl Sync for PipelineRasterizationStateStreamCreateInfoEXT {}
25049
25050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
25051#[repr(C)]
25052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25053pub struct PipelineRenderingCreateInfo {
25054    pub s_type: StructureType,
25055    pub next: *const c_void,
25056    pub view_mask: u32,
25057    pub color_attachment_count: u32,
25058    pub color_attachment_formats: *const Format,
25059    pub depth_attachment_format: Format,
25060    pub stencil_attachment_format: Format,
25061}
25062
25063impl Default for PipelineRenderingCreateInfo {
25064    #[inline]
25065    fn default() -> Self {
25066        Self {
25067            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
25068            next: ptr::null(),
25069            view_mask: u32::default(),
25070            color_attachment_count: u32::default(),
25071            color_attachment_formats: ptr::null(),
25072            depth_attachment_format: Format::default(),
25073            stencil_attachment_format: Format::default(),
25074        }
25075    }
25076}
25077
25078unsafe impl Send for PipelineRenderingCreateInfo {}
25079unsafe impl Sync for PipelineRenderingCreateInfo {}
25080
25081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
25082#[repr(C)]
25083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25084pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
25085    pub s_type: StructureType,
25086    pub next: *const c_void,
25087    pub representative_fragment_test_enable: Bool32,
25088}
25089
25090impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
25091    #[inline]
25092    fn default() -> Self {
25093        Self {
25094            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
25095            next: ptr::null(),
25096            representative_fragment_test_enable: Bool32::default(),
25097        }
25098    }
25099}
25100
25101unsafe impl Send for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
25102unsafe impl Sync for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
25103
25104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
25105#[repr(C)]
25106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25107pub struct PipelineRobustnessCreateInfo {
25108    pub s_type: StructureType,
25109    pub next: *const c_void,
25110    pub storage_buffers: PipelineRobustnessBufferBehavior,
25111    pub uniform_buffers: PipelineRobustnessBufferBehavior,
25112    pub vertex_inputs: PipelineRobustnessBufferBehavior,
25113    pub images: PipelineRobustnessImageBehavior,
25114}
25115
25116impl Default for PipelineRobustnessCreateInfo {
25117    #[inline]
25118    fn default() -> Self {
25119        Self {
25120            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
25121            next: ptr::null(),
25122            storage_buffers: PipelineRobustnessBufferBehavior::default(),
25123            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
25124            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
25125            images: PipelineRobustnessImageBehavior::default(),
25126        }
25127    }
25128}
25129
25130unsafe impl Send for PipelineRobustnessCreateInfo {}
25131unsafe impl Sync for PipelineRobustnessCreateInfo {}
25132
25133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
25134#[repr(C)]
25135#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25136pub struct PipelineSampleLocationsStateCreateInfoEXT {
25137    pub s_type: StructureType,
25138    pub next: *const c_void,
25139    pub sample_locations_enable: Bool32,
25140    pub sample_locations_info: SampleLocationsInfoEXT,
25141}
25142
25143impl Default for PipelineSampleLocationsStateCreateInfoEXT {
25144    #[inline]
25145    fn default() -> Self {
25146        Self {
25147            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
25148            next: ptr::null(),
25149            sample_locations_enable: Bool32::default(),
25150            sample_locations_info: SampleLocationsInfoEXT::default(),
25151        }
25152    }
25153}
25154
25155unsafe impl Send for PipelineSampleLocationsStateCreateInfoEXT {}
25156unsafe impl Sync for PipelineSampleLocationsStateCreateInfoEXT {}
25157
25158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
25159#[repr(C)]
25160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25161pub struct PipelineShaderStageCreateInfo {
25162    pub s_type: StructureType,
25163    pub next: *const c_void,
25164    pub flags: PipelineShaderStageCreateFlags,
25165    pub stage: ShaderStageFlags,
25166    pub module: ShaderModule,
25167    pub name: *const c_char,
25168    pub specialization_info: *const SpecializationInfo,
25169}
25170
25171impl Default for PipelineShaderStageCreateInfo {
25172    #[inline]
25173    fn default() -> Self {
25174        Self {
25175            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
25176            next: ptr::null(),
25177            flags: PipelineShaderStageCreateFlags::default(),
25178            stage: ShaderStageFlags::default(),
25179            module: ShaderModule::default(),
25180            name: ptr::null(),
25181            specialization_info: ptr::null(),
25182        }
25183    }
25184}
25185
25186unsafe impl Send for PipelineShaderStageCreateInfo {}
25187unsafe impl Sync for PipelineShaderStageCreateInfo {}
25188
25189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
25190#[repr(C)]
25191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25192pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
25193    pub s_type: StructureType,
25194    pub next: *const c_void,
25195    pub identifier_size: u32,
25196    pub identifier: *const u8,
25197}
25198
25199impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
25200    #[inline]
25201    fn default() -> Self {
25202        Self {
25203            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
25204            next: ptr::null(),
25205            identifier_size: u32::default(),
25206            identifier: ptr::null(),
25207        }
25208    }
25209}
25210
25211unsafe impl Send for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
25212unsafe impl Sync for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
25213
25214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
25215#[repr(C)]
25216#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25217pub struct PipelineShaderStageNodeCreateInfoAMDX {
25218    pub s_type: StructureType,
25219    pub next: *const c_void,
25220    pub name: *const c_char,
25221    pub index: u32,
25222}
25223
25224impl Default for PipelineShaderStageNodeCreateInfoAMDX {
25225    #[inline]
25226    fn default() -> Self {
25227        Self {
25228            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
25229            next: ptr::null(),
25230            name: ptr::null(),
25231            index: u32::default(),
25232        }
25233    }
25234}
25235
25236unsafe impl Send for PipelineShaderStageNodeCreateInfoAMDX {}
25237unsafe impl Sync for PipelineShaderStageNodeCreateInfoAMDX {}
25238
25239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
25240#[repr(C)]
25241#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25242pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
25243    pub s_type: StructureType,
25244    pub next: *const c_void,
25245    pub required_subgroup_size: u32,
25246}
25247
25248impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
25249    #[inline]
25250    fn default() -> Self {
25251        Self {
25252            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
25253            next: ptr::null(),
25254            required_subgroup_size: u32::default(),
25255        }
25256    }
25257}
25258
25259unsafe impl Send for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
25260unsafe impl Sync for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
25261
25262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
25263#[repr(C)]
25264#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25265pub struct PipelineTessellationDomainOriginStateCreateInfo {
25266    pub s_type: StructureType,
25267    pub next: *const c_void,
25268    pub domain_origin: TessellationDomainOrigin,
25269}
25270
25271impl Default for PipelineTessellationDomainOriginStateCreateInfo {
25272    #[inline]
25273    fn default() -> Self {
25274        Self {
25275            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
25276            next: ptr::null(),
25277            domain_origin: TessellationDomainOrigin::default(),
25278        }
25279    }
25280}
25281
25282unsafe impl Send for PipelineTessellationDomainOriginStateCreateInfo {}
25283unsafe impl Sync for PipelineTessellationDomainOriginStateCreateInfo {}
25284
25285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
25286#[repr(C)]
25287#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25288pub struct PipelineTessellationStateCreateInfo {
25289    pub s_type: StructureType,
25290    pub next: *const c_void,
25291    pub flags: PipelineTessellationStateCreateFlags,
25292    pub patch_control_points: u32,
25293}
25294
25295impl Default for PipelineTessellationStateCreateInfo {
25296    #[inline]
25297    fn default() -> Self {
25298        Self {
25299            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
25300            next: ptr::null(),
25301            flags: PipelineTessellationStateCreateFlags::default(),
25302            patch_control_points: u32::default(),
25303        }
25304    }
25305}
25306
25307unsafe impl Send for PipelineTessellationStateCreateInfo {}
25308unsafe impl Sync for PipelineTessellationStateCreateInfo {}
25309
25310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
25311#[repr(C)]
25312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25313pub struct PipelineVertexInputDivisorStateCreateInfo {
25314    pub s_type: StructureType,
25315    pub next: *const c_void,
25316    pub vertex_binding_divisor_count: u32,
25317    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
25318}
25319
25320impl Default for PipelineVertexInputDivisorStateCreateInfo {
25321    #[inline]
25322    fn default() -> Self {
25323        Self {
25324            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
25325            next: ptr::null(),
25326            vertex_binding_divisor_count: u32::default(),
25327            vertex_binding_divisors: ptr::null(),
25328        }
25329    }
25330}
25331
25332unsafe impl Send for PipelineVertexInputDivisorStateCreateInfo {}
25333unsafe impl Sync for PipelineVertexInputDivisorStateCreateInfo {}
25334
25335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
25336#[repr(C)]
25337#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25338pub struct PipelineVertexInputStateCreateInfo {
25339    pub s_type: StructureType,
25340    pub next: *const c_void,
25341    pub flags: PipelineVertexInputStateCreateFlags,
25342    pub vertex_binding_description_count: u32,
25343    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
25344    pub vertex_attribute_description_count: u32,
25345    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
25346}
25347
25348impl Default for PipelineVertexInputStateCreateInfo {
25349    #[inline]
25350    fn default() -> Self {
25351        Self {
25352            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
25353            next: ptr::null(),
25354            flags: PipelineVertexInputStateCreateFlags::default(),
25355            vertex_binding_description_count: u32::default(),
25356            vertex_binding_descriptions: ptr::null(),
25357            vertex_attribute_description_count: u32::default(),
25358            vertex_attribute_descriptions: ptr::null(),
25359        }
25360    }
25361}
25362
25363unsafe impl Send for PipelineVertexInputStateCreateInfo {}
25364unsafe impl Sync for PipelineVertexInputStateCreateInfo {}
25365
25366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
25367#[repr(C)]
25368#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25369pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
25370    pub s_type: StructureType,
25371    pub next: *const c_void,
25372    pub sample_order_type: CoarseSampleOrderTypeNV,
25373    pub custom_sample_order_count: u32,
25374    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
25375}
25376
25377impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
25378    #[inline]
25379    fn default() -> Self {
25380        Self {
25381            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
25382            next: ptr::null(),
25383            sample_order_type: CoarseSampleOrderTypeNV::default(),
25384            custom_sample_order_count: u32::default(),
25385            custom_sample_orders: ptr::null(),
25386        }
25387    }
25388}
25389
25390unsafe impl Send for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
25391unsafe impl Sync for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
25392
25393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
25394#[repr(C)]
25395#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25396pub struct PipelineViewportDepthClampControlCreateInfoEXT {
25397    pub s_type: StructureType,
25398    pub next: *const c_void,
25399    pub depth_clamp_mode: DepthClampModeEXT,
25400    pub depth_clamp_range: *const DepthClampRangeEXT,
25401}
25402
25403impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
25404    #[inline]
25405    fn default() -> Self {
25406        Self {
25407            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
25408            next: ptr::null(),
25409            depth_clamp_mode: DepthClampModeEXT::default(),
25410            depth_clamp_range: ptr::null(),
25411        }
25412    }
25413}
25414
25415unsafe impl Send for PipelineViewportDepthClampControlCreateInfoEXT {}
25416unsafe impl Sync for PipelineViewportDepthClampControlCreateInfoEXT {}
25417
25418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
25419#[repr(C)]
25420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25421pub struct PipelineViewportDepthClipControlCreateInfoEXT {
25422    pub s_type: StructureType,
25423    pub next: *const c_void,
25424    pub negative_one_to_one: Bool32,
25425}
25426
25427impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
25428    #[inline]
25429    fn default() -> Self {
25430        Self {
25431            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
25432            next: ptr::null(),
25433            negative_one_to_one: Bool32::default(),
25434        }
25435    }
25436}
25437
25438unsafe impl Send for PipelineViewportDepthClipControlCreateInfoEXT {}
25439unsafe impl Sync for PipelineViewportDepthClipControlCreateInfoEXT {}
25440
25441/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
25442#[repr(C)]
25443#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25444pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
25445    pub s_type: StructureType,
25446    pub next: *const c_void,
25447    pub exclusive_scissor_count: u32,
25448    pub exclusive_scissors: *const Rect2D,
25449}
25450
25451impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
25452    #[inline]
25453    fn default() -> Self {
25454        Self {
25455            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
25456            next: ptr::null(),
25457            exclusive_scissor_count: u32::default(),
25458            exclusive_scissors: ptr::null(),
25459        }
25460    }
25461}
25462
25463unsafe impl Send for PipelineViewportExclusiveScissorStateCreateInfoNV {}
25464unsafe impl Sync for PipelineViewportExclusiveScissorStateCreateInfoNV {}
25465
25466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
25467#[repr(C)]
25468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25469pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
25470    pub s_type: StructureType,
25471    pub next: *const c_void,
25472    pub shading_rate_image_enable: Bool32,
25473    pub viewport_count: u32,
25474    pub shading_rate_palettes: *const ShadingRatePaletteNV,
25475}
25476
25477impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
25478    #[inline]
25479    fn default() -> Self {
25480        Self {
25481            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
25482            next: ptr::null(),
25483            shading_rate_image_enable: Bool32::default(),
25484            viewport_count: u32::default(),
25485            shading_rate_palettes: ptr::null(),
25486        }
25487    }
25488}
25489
25490unsafe impl Send for PipelineViewportShadingRateImageStateCreateInfoNV {}
25491unsafe impl Sync for PipelineViewportShadingRateImageStateCreateInfoNV {}
25492
25493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
25494#[repr(C)]
25495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25496pub struct PipelineViewportStateCreateInfo {
25497    pub s_type: StructureType,
25498    pub next: *const c_void,
25499    pub flags: PipelineViewportStateCreateFlags,
25500    pub viewport_count: u32,
25501    pub viewports: *const Viewport,
25502    pub scissor_count: u32,
25503    pub scissors: *const Rect2D,
25504}
25505
25506impl Default for PipelineViewportStateCreateInfo {
25507    #[inline]
25508    fn default() -> Self {
25509        Self {
25510            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
25511            next: ptr::null(),
25512            flags: PipelineViewportStateCreateFlags::default(),
25513            viewport_count: u32::default(),
25514            viewports: ptr::null(),
25515            scissor_count: u32::default(),
25516            scissors: ptr::null(),
25517        }
25518    }
25519}
25520
25521unsafe impl Send for PipelineViewportStateCreateInfo {}
25522unsafe impl Sync for PipelineViewportStateCreateInfo {}
25523
25524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
25525#[repr(C)]
25526#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25527pub struct PipelineViewportSwizzleStateCreateInfoNV {
25528    pub s_type: StructureType,
25529    pub next: *const c_void,
25530    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
25531    pub viewport_count: u32,
25532    pub viewport_swizzles: *const ViewportSwizzleNV,
25533}
25534
25535impl Default for PipelineViewportSwizzleStateCreateInfoNV {
25536    #[inline]
25537    fn default() -> Self {
25538        Self {
25539            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
25540            next: ptr::null(),
25541            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
25542            viewport_count: u32::default(),
25543            viewport_swizzles: ptr::null(),
25544        }
25545    }
25546}
25547
25548unsafe impl Send for PipelineViewportSwizzleStateCreateInfoNV {}
25549unsafe impl Sync for PipelineViewportSwizzleStateCreateInfoNV {}
25550
25551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
25552#[repr(C)]
25553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25554pub struct PipelineViewportWScalingStateCreateInfoNV {
25555    pub s_type: StructureType,
25556    pub next: *const c_void,
25557    pub viewport_w_scaling_enable: Bool32,
25558    pub viewport_count: u32,
25559    pub viewport_w_scalings: *const ViewportWScalingNV,
25560}
25561
25562impl Default for PipelineViewportWScalingStateCreateInfoNV {
25563    #[inline]
25564    fn default() -> Self {
25565        Self {
25566            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
25567            next: ptr::null(),
25568            viewport_w_scaling_enable: Bool32::default(),
25569            viewport_count: u32::default(),
25570            viewport_w_scalings: ptr::null(),
25571        }
25572    }
25573}
25574
25575unsafe impl Send for PipelineViewportWScalingStateCreateInfoNV {}
25576unsafe impl Sync for PipelineViewportWScalingStateCreateInfoNV {}
25577
25578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
25579#[repr(C)]
25580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25581pub struct PresentFrameTokenGGP {
25582    pub s_type: StructureType,
25583    pub next: *const c_void,
25584    pub frame_token: GgpFrameToken,
25585}
25586
25587impl Default for PresentFrameTokenGGP {
25588    #[inline]
25589    fn default() -> Self {
25590        Self {
25591            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
25592            next: ptr::null(),
25593            frame_token: GgpFrameToken::default(),
25594        }
25595    }
25596}
25597
25598unsafe impl Send for PresentFrameTokenGGP {}
25599unsafe impl Sync for PresentFrameTokenGGP {}
25600
25601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentId2KHR.html>
25602#[repr(C)]
25603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25604pub struct PresentId2KHR {
25605    pub s_type: StructureType,
25606    pub next: *const c_void,
25607    pub swapchain_count: u32,
25608    pub present_ids: *const u64,
25609}
25610
25611impl Default for PresentId2KHR {
25612    #[inline]
25613    fn default() -> Self {
25614        Self {
25615            s_type: StructureType::PRESENT_ID_2_KHR,
25616            next: ptr::null(),
25617            swapchain_count: u32::default(),
25618            present_ids: ptr::null(),
25619        }
25620    }
25621}
25622
25623unsafe impl Send for PresentId2KHR {}
25624unsafe impl Sync for PresentId2KHR {}
25625
25626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
25627#[repr(C)]
25628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25629pub struct PresentIdKHR {
25630    pub s_type: StructureType,
25631    pub next: *const c_void,
25632    pub swapchain_count: u32,
25633    pub present_ids: *const u64,
25634}
25635
25636impl Default for PresentIdKHR {
25637    #[inline]
25638    fn default() -> Self {
25639        Self {
25640            s_type: StructureType::PRESENT_ID_KHR,
25641            next: ptr::null(),
25642            swapchain_count: u32::default(),
25643            present_ids: ptr::null(),
25644        }
25645    }
25646}
25647
25648unsafe impl Send for PresentIdKHR {}
25649unsafe impl Sync for PresentIdKHR {}
25650
25651/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
25652#[repr(C)]
25653#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25654pub struct PresentInfoKHR {
25655    pub s_type: StructureType,
25656    pub next: *const c_void,
25657    pub wait_semaphore_count: u32,
25658    pub wait_semaphores: *const Semaphore,
25659    pub swapchain_count: u32,
25660    pub swapchains: *const SwapchainKHR,
25661    pub image_indices: *const u32,
25662    pub results: *mut Result,
25663}
25664
25665impl Default for PresentInfoKHR {
25666    #[inline]
25667    fn default() -> Self {
25668        Self {
25669            s_type: StructureType::PRESENT_INFO_KHR,
25670            next: ptr::null(),
25671            wait_semaphore_count: u32::default(),
25672            wait_semaphores: ptr::null(),
25673            swapchain_count: u32::default(),
25674            swapchains: ptr::null(),
25675            image_indices: ptr::null(),
25676            results: ptr::null_mut(),
25677        }
25678    }
25679}
25680
25681unsafe impl Send for PresentInfoKHR {}
25682unsafe impl Sync for PresentInfoKHR {}
25683
25684/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
25685#[repr(C)]
25686#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25687pub struct PresentRegionKHR {
25688    pub rectangle_count: u32,
25689    pub rectangles: *const RectLayerKHR,
25690}
25691
25692impl Default for PresentRegionKHR {
25693    #[inline]
25694    fn default() -> Self {
25695        Self {
25696            rectangle_count: u32::default(),
25697            rectangles: ptr::null(),
25698        }
25699    }
25700}
25701
25702unsafe impl Send for PresentRegionKHR {}
25703unsafe impl Sync for PresentRegionKHR {}
25704
25705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
25706#[repr(C)]
25707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25708pub struct PresentRegionsKHR {
25709    pub s_type: StructureType,
25710    pub next: *const c_void,
25711    pub swapchain_count: u32,
25712    pub regions: *const PresentRegionKHR,
25713}
25714
25715impl Default for PresentRegionsKHR {
25716    #[inline]
25717    fn default() -> Self {
25718        Self {
25719            s_type: StructureType::PRESENT_REGIONS_KHR,
25720            next: ptr::null(),
25721            swapchain_count: u32::default(),
25722            regions: ptr::null(),
25723        }
25724    }
25725}
25726
25727unsafe impl Send for PresentRegionsKHR {}
25728unsafe impl Sync for PresentRegionsKHR {}
25729
25730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentStageTimeEXT.html>
25731#[repr(C)]
25732#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25733pub struct PresentStageTimeEXT {
25734    pub stage: PresentStageFlagsEXT,
25735    pub time: u64,
25736}
25737
25738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
25739#[repr(C)]
25740#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25741pub struct PresentTimeGOOGLE {
25742    pub present_id: u32,
25743    pub desired_present_time: u64,
25744}
25745
25746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
25747#[repr(C)]
25748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25749pub struct PresentTimesInfoGOOGLE {
25750    pub s_type: StructureType,
25751    pub next: *const c_void,
25752    pub swapchain_count: u32,
25753    pub times: *const PresentTimeGOOGLE,
25754}
25755
25756impl Default for PresentTimesInfoGOOGLE {
25757    #[inline]
25758    fn default() -> Self {
25759        Self {
25760            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
25761            next: ptr::null(),
25762            swapchain_count: u32::default(),
25763            times: ptr::null(),
25764        }
25765    }
25766}
25767
25768unsafe impl Send for PresentTimesInfoGOOGLE {}
25769unsafe impl Sync for PresentTimesInfoGOOGLE {}
25770
25771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimingInfoEXT.html>
25772#[repr(C)]
25773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25774pub struct PresentTimingInfoEXT {
25775    pub s_type: StructureType,
25776    pub next: *const c_void,
25777    pub flags: PresentTimingInfoFlagsEXT,
25778    pub target_time: u64,
25779    pub time_domain_id: u64,
25780    pub present_stage_queries: PresentStageFlagsEXT,
25781    pub target_time_domain_present_stage: PresentStageFlagsEXT,
25782}
25783
25784impl Default for PresentTimingInfoEXT {
25785    #[inline]
25786    fn default() -> Self {
25787        Self {
25788            s_type: StructureType::PRESENT_TIMING_INFO_EXT,
25789            next: ptr::null(),
25790            flags: PresentTimingInfoFlagsEXT::default(),
25791            target_time: u64::default(),
25792            time_domain_id: u64::default(),
25793            present_stage_queries: PresentStageFlagsEXT::default(),
25794            target_time_domain_present_stage: PresentStageFlagsEXT::default(),
25795        }
25796    }
25797}
25798
25799unsafe impl Send for PresentTimingInfoEXT {}
25800unsafe impl Sync for PresentTimingInfoEXT {}
25801
25802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimingSurfaceCapabilitiesEXT.html>
25803#[repr(C)]
25804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25805pub struct PresentTimingSurfaceCapabilitiesEXT {
25806    pub s_type: StructureType,
25807    pub next: *mut c_void,
25808    pub present_timing_supported: Bool32,
25809    pub present_at_absolute_time_supported: Bool32,
25810    pub present_at_relative_time_supported: Bool32,
25811    pub present_stage_queries: PresentStageFlagsEXT,
25812}
25813
25814impl Default for PresentTimingSurfaceCapabilitiesEXT {
25815    #[inline]
25816    fn default() -> Self {
25817        Self {
25818            s_type: StructureType::PRESENT_TIMING_SURFACE_CAPABILITIES_EXT,
25819            next: ptr::null_mut(),
25820            present_timing_supported: Bool32::default(),
25821            present_at_absolute_time_supported: Bool32::default(),
25822            present_at_relative_time_supported: Bool32::default(),
25823            present_stage_queries: PresentStageFlagsEXT::default(),
25824        }
25825    }
25826}
25827
25828unsafe impl Send for PresentTimingSurfaceCapabilitiesEXT {}
25829unsafe impl Sync for PresentTimingSurfaceCapabilitiesEXT {}
25830
25831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimingsInfoEXT.html>
25832#[repr(C)]
25833#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25834pub struct PresentTimingsInfoEXT {
25835    pub s_type: StructureType,
25836    pub next: *const c_void,
25837    pub swapchain_count: u32,
25838    pub timing_infos: *const PresentTimingInfoEXT,
25839}
25840
25841impl Default for PresentTimingsInfoEXT {
25842    #[inline]
25843    fn default() -> Self {
25844        Self {
25845            s_type: StructureType::PRESENT_TIMINGS_INFO_EXT,
25846            next: ptr::null(),
25847            swapchain_count: u32::default(),
25848            timing_infos: ptr::null(),
25849        }
25850    }
25851}
25852
25853unsafe impl Send for PresentTimingsInfoEXT {}
25854unsafe impl Sync for PresentTimingsInfoEXT {}
25855
25856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html>
25857#[repr(C)]
25858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25859pub struct PresentWait2InfoKHR {
25860    pub s_type: StructureType,
25861    pub next: *const c_void,
25862    pub present_id: u64,
25863    pub timeout: u64,
25864}
25865
25866impl Default for PresentWait2InfoKHR {
25867    #[inline]
25868    fn default() -> Self {
25869        Self {
25870            s_type: StructureType::PRESENT_WAIT_2_INFO_KHR,
25871            next: ptr::null(),
25872            present_id: u64::default(),
25873            timeout: u64::default(),
25874        }
25875    }
25876}
25877
25878unsafe impl Send for PresentWait2InfoKHR {}
25879unsafe impl Sync for PresentWait2InfoKHR {}
25880
25881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
25882#[repr(C)]
25883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25884pub struct PrivateDataSlotCreateInfo {
25885    pub s_type: StructureType,
25886    pub next: *const c_void,
25887    pub flags: PrivateDataSlotCreateFlags,
25888}
25889
25890impl Default for PrivateDataSlotCreateInfo {
25891    #[inline]
25892    fn default() -> Self {
25893        Self {
25894            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
25895            next: ptr::null(),
25896            flags: PrivateDataSlotCreateFlags::default(),
25897        }
25898    }
25899}
25900
25901unsafe impl Send for PrivateDataSlotCreateInfo {}
25902unsafe impl Sync for PrivateDataSlotCreateInfo {}
25903
25904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
25905#[repr(C)]
25906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25907pub struct ProtectedSubmitInfo {
25908    pub s_type: StructureType,
25909    pub next: *const c_void,
25910    pub protected_submit: Bool32,
25911}
25912
25913impl Default for ProtectedSubmitInfo {
25914    #[inline]
25915    fn default() -> Self {
25916        Self {
25917            s_type: StructureType::PROTECTED_SUBMIT_INFO,
25918            next: ptr::null(),
25919            protected_submit: Bool32::default(),
25920        }
25921    }
25922}
25923
25924unsafe impl Send for ProtectedSubmitInfo {}
25925unsafe impl Sync for ProtectedSubmitInfo {}
25926
25927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
25928#[repr(C)]
25929#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25930pub struct PushConstantRange {
25931    pub stage_flags: ShaderStageFlags,
25932    pub offset: u32,
25933    pub size: u32,
25934}
25935
25936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
25937#[repr(C)]
25938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25939pub struct PushConstantsInfo {
25940    pub s_type: StructureType,
25941    pub next: *const c_void,
25942    pub layout: PipelineLayout,
25943    pub stage_flags: ShaderStageFlags,
25944    pub offset: u32,
25945    pub size: u32,
25946    pub values: *const c_void,
25947}
25948
25949impl Default for PushConstantsInfo {
25950    #[inline]
25951    fn default() -> Self {
25952        Self {
25953            s_type: StructureType::PUSH_CONSTANTS_INFO,
25954            next: ptr::null(),
25955            layout: PipelineLayout::default(),
25956            stage_flags: ShaderStageFlags::default(),
25957            offset: u32::default(),
25958            size: u32::default(),
25959            values: ptr::null(),
25960        }
25961    }
25962}
25963
25964unsafe impl Send for PushConstantsInfo {}
25965unsafe impl Sync for PushConstantsInfo {}
25966
25967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
25968#[repr(C)]
25969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25970pub struct PushDescriptorSetInfo {
25971    pub s_type: StructureType,
25972    pub next: *const c_void,
25973    pub stage_flags: ShaderStageFlags,
25974    pub layout: PipelineLayout,
25975    pub set: u32,
25976    pub descriptor_write_count: u32,
25977    pub descriptor_writes: *const WriteDescriptorSet,
25978}
25979
25980impl Default for PushDescriptorSetInfo {
25981    #[inline]
25982    fn default() -> Self {
25983        Self {
25984            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
25985            next: ptr::null(),
25986            stage_flags: ShaderStageFlags::default(),
25987            layout: PipelineLayout::default(),
25988            set: u32::default(),
25989            descriptor_write_count: u32::default(),
25990            descriptor_writes: ptr::null(),
25991        }
25992    }
25993}
25994
25995unsafe impl Send for PushDescriptorSetInfo {}
25996unsafe impl Sync for PushDescriptorSetInfo {}
25997
25998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
25999#[repr(C)]
26000#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26001pub struct PushDescriptorSetWithTemplateInfo {
26002    pub s_type: StructureType,
26003    pub next: *const c_void,
26004    pub descriptor_update_template: DescriptorUpdateTemplate,
26005    pub layout: PipelineLayout,
26006    pub set: u32,
26007    pub data: *const c_void,
26008}
26009
26010impl Default for PushDescriptorSetWithTemplateInfo {
26011    #[inline]
26012    fn default() -> Self {
26013        Self {
26014            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
26015            next: ptr::null(),
26016            descriptor_update_template: DescriptorUpdateTemplate::default(),
26017            layout: PipelineLayout::default(),
26018            set: u32::default(),
26019            data: ptr::null(),
26020        }
26021    }
26022}
26023
26024unsafe impl Send for PushDescriptorSetWithTemplateInfo {}
26025unsafe impl Sync for PushDescriptorSetWithTemplateInfo {}
26026
26027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
26028#[repr(C)]
26029#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26030pub struct QueryLowLatencySupportNV {
26031    pub s_type: StructureType,
26032    pub next: *const c_void,
26033    pub queried_low_latency_data: *mut c_void,
26034}
26035
26036impl Default for QueryLowLatencySupportNV {
26037    #[inline]
26038    fn default() -> Self {
26039        Self {
26040            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
26041            next: ptr::null(),
26042            queried_low_latency_data: ptr::null_mut(),
26043        }
26044    }
26045}
26046
26047unsafe impl Send for QueryLowLatencySupportNV {}
26048unsafe impl Sync for QueryLowLatencySupportNV {}
26049
26050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
26051#[repr(C)]
26052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26053pub struct QueryPoolCreateInfo {
26054    pub s_type: StructureType,
26055    pub next: *const c_void,
26056    pub flags: QueryPoolCreateFlags,
26057    pub query_type: QueryType,
26058    pub query_count: u32,
26059    pub pipeline_statistics: QueryPipelineStatisticFlags,
26060}
26061
26062impl Default for QueryPoolCreateInfo {
26063    #[inline]
26064    fn default() -> Self {
26065        Self {
26066            s_type: StructureType::QUERY_POOL_CREATE_INFO,
26067            next: ptr::null(),
26068            flags: QueryPoolCreateFlags::default(),
26069            query_type: QueryType::default(),
26070            query_count: u32::default(),
26071            pipeline_statistics: QueryPipelineStatisticFlags::default(),
26072        }
26073    }
26074}
26075
26076unsafe impl Send for QueryPoolCreateInfo {}
26077unsafe impl Sync for QueryPoolCreateInfo {}
26078
26079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
26080#[repr(C)]
26081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26082pub struct QueryPoolPerformanceCreateInfoKHR {
26083    pub s_type: StructureType,
26084    pub next: *const c_void,
26085    pub queue_family_index: u32,
26086    pub counter_index_count: u32,
26087    pub counter_indices: *const u32,
26088}
26089
26090impl Default for QueryPoolPerformanceCreateInfoKHR {
26091    #[inline]
26092    fn default() -> Self {
26093        Self {
26094            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
26095            next: ptr::null(),
26096            queue_family_index: u32::default(),
26097            counter_index_count: u32::default(),
26098            counter_indices: ptr::null(),
26099        }
26100    }
26101}
26102
26103unsafe impl Send for QueryPoolPerformanceCreateInfoKHR {}
26104unsafe impl Sync for QueryPoolPerformanceCreateInfoKHR {}
26105
26106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
26107#[repr(C)]
26108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26109pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
26110    pub s_type: StructureType,
26111    pub next: *const c_void,
26112    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
26113}
26114
26115impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
26116    #[inline]
26117    fn default() -> Self {
26118        Self {
26119            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
26120            next: ptr::null(),
26121            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
26122        }
26123    }
26124}
26125
26126unsafe impl Send for QueryPoolPerformanceQueryCreateInfoINTEL {}
26127unsafe impl Sync for QueryPoolPerformanceQueryCreateInfoINTEL {}
26128
26129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
26130#[repr(C)]
26131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26132pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
26133    pub s_type: StructureType,
26134    pub next: *const c_void,
26135    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
26136}
26137
26138impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
26139    #[inline]
26140    fn default() -> Self {
26141        Self {
26142            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
26143            next: ptr::null(),
26144            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
26145        }
26146    }
26147}
26148
26149unsafe impl Send for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
26150unsafe impl Sync for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
26151
26152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
26153#[repr(C)]
26154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26155pub struct QueueFamilyCheckpointProperties2NV {
26156    pub s_type: StructureType,
26157    pub next: *mut c_void,
26158    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
26159}
26160
26161impl Default for QueueFamilyCheckpointProperties2NV {
26162    #[inline]
26163    fn default() -> Self {
26164        Self {
26165            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
26166            next: ptr::null_mut(),
26167            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
26168        }
26169    }
26170}
26171
26172unsafe impl Send for QueueFamilyCheckpointProperties2NV {}
26173unsafe impl Sync for QueueFamilyCheckpointProperties2NV {}
26174
26175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
26176#[repr(C)]
26177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26178pub struct QueueFamilyCheckpointPropertiesNV {
26179    pub s_type: StructureType,
26180    pub next: *mut c_void,
26181    pub checkpoint_execution_stage_mask: PipelineStageFlags,
26182}
26183
26184impl Default for QueueFamilyCheckpointPropertiesNV {
26185    #[inline]
26186    fn default() -> Self {
26187        Self {
26188            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
26189            next: ptr::null_mut(),
26190            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
26191        }
26192    }
26193}
26194
26195unsafe impl Send for QueueFamilyCheckpointPropertiesNV {}
26196unsafe impl Sync for QueueFamilyCheckpointPropertiesNV {}
26197
26198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html>
26199#[repr(C)]
26200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26201pub struct QueueFamilyDataGraphProcessingEnginePropertiesARM {
26202    pub s_type: StructureType,
26203    pub next: *const c_void,
26204    pub foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags,
26205    pub foreign_memory_handle_types: ExternalMemoryHandleTypeFlags,
26206}
26207
26208impl Default for QueueFamilyDataGraphProcessingEnginePropertiesARM {
26209    #[inline]
26210    fn default() -> Self {
26211        Self {
26212            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM,
26213            next: ptr::null(),
26214            foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
26215            foreign_memory_handle_types: ExternalMemoryHandleTypeFlags::default(),
26216        }
26217    }
26218}
26219
26220unsafe impl Send for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
26221unsafe impl Sync for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
26222
26223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html>
26224#[repr(C)]
26225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26226pub struct QueueFamilyDataGraphPropertiesARM {
26227    pub s_type: StructureType,
26228    pub next: *const c_void,
26229    pub engine: PhysicalDeviceDataGraphProcessingEngineARM,
26230    pub operation: PhysicalDeviceDataGraphOperationSupportARM,
26231}
26232
26233impl Default for QueueFamilyDataGraphPropertiesARM {
26234    #[inline]
26235    fn default() -> Self {
26236        Self {
26237            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM,
26238            next: ptr::null(),
26239            engine: PhysicalDeviceDataGraphProcessingEngineARM::default(),
26240            operation: PhysicalDeviceDataGraphOperationSupportARM::default(),
26241        }
26242    }
26243}
26244
26245unsafe impl Send for QueueFamilyDataGraphPropertiesARM {}
26246unsafe impl Sync for QueueFamilyDataGraphPropertiesARM {}
26247
26248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
26249#[repr(C)]
26250#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26251pub struct QueueFamilyGlobalPriorityProperties {
26252    pub s_type: StructureType,
26253    pub next: *mut c_void,
26254    pub priority_count: u32,
26255    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE as usize],
26256}
26257
26258impl Default for QueueFamilyGlobalPriorityProperties {
26259    #[inline]
26260    fn default() -> Self {
26261        Self {
26262            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
26263            next: ptr::null_mut(),
26264            priority_count: u32::default(),
26265            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
26266        }
26267    }
26268}
26269
26270unsafe impl Send for QueueFamilyGlobalPriorityProperties {}
26271unsafe impl Sync for QueueFamilyGlobalPriorityProperties {}
26272
26273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html>
26274#[repr(C)]
26275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26276pub struct QueueFamilyOwnershipTransferPropertiesKHR {
26277    pub s_type: StructureType,
26278    pub next: *mut c_void,
26279    pub optimal_image_transfer_to_queue_families: u32,
26280}
26281
26282impl Default for QueueFamilyOwnershipTransferPropertiesKHR {
26283    #[inline]
26284    fn default() -> Self {
26285        Self {
26286            s_type: StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR,
26287            next: ptr::null_mut(),
26288            optimal_image_transfer_to_queue_families: u32::default(),
26289        }
26290    }
26291}
26292
26293unsafe impl Send for QueueFamilyOwnershipTransferPropertiesKHR {}
26294unsafe impl Sync for QueueFamilyOwnershipTransferPropertiesKHR {}
26295
26296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
26297#[repr(C)]
26298#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26299pub struct QueueFamilyProperties {
26300    pub queue_flags: QueueFlags,
26301    pub queue_count: u32,
26302    pub timestamp_valid_bits: u32,
26303    pub min_image_transfer_granularity: Extent3D,
26304}
26305
26306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
26307#[repr(C)]
26308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26309pub struct QueueFamilyProperties2 {
26310    pub s_type: StructureType,
26311    pub next: *mut c_void,
26312    pub queue_family_properties: QueueFamilyProperties,
26313}
26314
26315impl Default for QueueFamilyProperties2 {
26316    #[inline]
26317    fn default() -> Self {
26318        Self {
26319            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
26320            next: ptr::null_mut(),
26321            queue_family_properties: QueueFamilyProperties::default(),
26322        }
26323    }
26324}
26325
26326unsafe impl Send for QueueFamilyProperties2 {}
26327unsafe impl Sync for QueueFamilyProperties2 {}
26328
26329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
26330#[repr(C)]
26331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26332pub struct QueueFamilyQueryResultStatusPropertiesKHR {
26333    pub s_type: StructureType,
26334    pub next: *mut c_void,
26335    pub query_result_status_support: Bool32,
26336}
26337
26338impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
26339    #[inline]
26340    fn default() -> Self {
26341        Self {
26342            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
26343            next: ptr::null_mut(),
26344            query_result_status_support: Bool32::default(),
26345        }
26346    }
26347}
26348
26349unsafe impl Send for QueueFamilyQueryResultStatusPropertiesKHR {}
26350unsafe impl Sync for QueueFamilyQueryResultStatusPropertiesKHR {}
26351
26352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
26353#[repr(C)]
26354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26355pub struct QueueFamilyVideoPropertiesKHR {
26356    pub s_type: StructureType,
26357    pub next: *mut c_void,
26358    pub video_codec_operations: VideoCodecOperationFlagsKHR,
26359}
26360
26361impl Default for QueueFamilyVideoPropertiesKHR {
26362    #[inline]
26363    fn default() -> Self {
26364        Self {
26365            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
26366            next: ptr::null_mut(),
26367            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
26368        }
26369    }
26370}
26371
26372unsafe impl Send for QueueFamilyVideoPropertiesKHR {}
26373unsafe impl Sync for QueueFamilyVideoPropertiesKHR {}
26374
26375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
26376#[repr(C)]
26377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26378pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
26379    pub s_type: StructureType,
26380    pub next: *mut c_void,
26381    pub allow_cluster_acceleration_structure: Bool32,
26382}
26383
26384impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
26385    #[inline]
26386    fn default() -> Self {
26387        Self {
26388            s_type:
26389                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
26390            next: ptr::null_mut(),
26391            allow_cluster_acceleration_structure: Bool32::default(),
26392        }
26393    }
26394}
26395
26396unsafe impl Send for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
26397unsafe impl Sync for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
26398
26399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
26400#[repr(C)]
26401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26402pub struct RayTracingPipelineCreateInfoKHR {
26403    pub s_type: StructureType,
26404    pub next: *const c_void,
26405    pub flags: PipelineCreateFlags,
26406    pub stage_count: u32,
26407    pub stages: *const PipelineShaderStageCreateInfo,
26408    pub group_count: u32,
26409    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
26410    pub max_pipeline_ray_recursion_depth: u32,
26411    pub library_info: *const PipelineLibraryCreateInfoKHR,
26412    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
26413    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
26414    pub layout: PipelineLayout,
26415    pub base_pipeline_handle: Pipeline,
26416    pub base_pipeline_index: i32,
26417}
26418
26419impl Default for RayTracingPipelineCreateInfoKHR {
26420    #[inline]
26421    fn default() -> Self {
26422        Self {
26423            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
26424            next: ptr::null(),
26425            flags: PipelineCreateFlags::default(),
26426            stage_count: u32::default(),
26427            stages: ptr::null(),
26428            group_count: u32::default(),
26429            groups: ptr::null(),
26430            max_pipeline_ray_recursion_depth: u32::default(),
26431            library_info: ptr::null(),
26432            library_interface: ptr::null(),
26433            dynamic_state: ptr::null(),
26434            layout: PipelineLayout::default(),
26435            base_pipeline_handle: Pipeline::default(),
26436            base_pipeline_index: i32::default(),
26437        }
26438    }
26439}
26440
26441unsafe impl Send for RayTracingPipelineCreateInfoKHR {}
26442unsafe impl Sync for RayTracingPipelineCreateInfoKHR {}
26443
26444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
26445#[repr(C)]
26446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26447pub struct RayTracingPipelineCreateInfoNV {
26448    pub s_type: StructureType,
26449    pub next: *const c_void,
26450    pub flags: PipelineCreateFlags,
26451    pub stage_count: u32,
26452    pub stages: *const PipelineShaderStageCreateInfo,
26453    pub group_count: u32,
26454    pub groups: *const RayTracingShaderGroupCreateInfoNV,
26455    pub max_recursion_depth: u32,
26456    pub layout: PipelineLayout,
26457    pub base_pipeline_handle: Pipeline,
26458    pub base_pipeline_index: i32,
26459}
26460
26461impl Default for RayTracingPipelineCreateInfoNV {
26462    #[inline]
26463    fn default() -> Self {
26464        Self {
26465            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
26466            next: ptr::null(),
26467            flags: PipelineCreateFlags::default(),
26468            stage_count: u32::default(),
26469            stages: ptr::null(),
26470            group_count: u32::default(),
26471            groups: ptr::null(),
26472            max_recursion_depth: u32::default(),
26473            layout: PipelineLayout::default(),
26474            base_pipeline_handle: Pipeline::default(),
26475            base_pipeline_index: i32::default(),
26476        }
26477    }
26478}
26479
26480unsafe impl Send for RayTracingPipelineCreateInfoNV {}
26481unsafe impl Sync for RayTracingPipelineCreateInfoNV {}
26482
26483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
26484#[repr(C)]
26485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26486pub struct RayTracingPipelineInterfaceCreateInfoKHR {
26487    pub s_type: StructureType,
26488    pub next: *const c_void,
26489    pub max_pipeline_ray_payload_size: u32,
26490    pub max_pipeline_ray_hit_attribute_size: u32,
26491}
26492
26493impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
26494    #[inline]
26495    fn default() -> Self {
26496        Self {
26497            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
26498            next: ptr::null(),
26499            max_pipeline_ray_payload_size: u32::default(),
26500            max_pipeline_ray_hit_attribute_size: u32::default(),
26501        }
26502    }
26503}
26504
26505unsafe impl Send for RayTracingPipelineInterfaceCreateInfoKHR {}
26506unsafe impl Sync for RayTracingPipelineInterfaceCreateInfoKHR {}
26507
26508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
26509#[repr(C)]
26510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26511pub struct RayTracingShaderGroupCreateInfoKHR {
26512    pub s_type: StructureType,
26513    pub next: *const c_void,
26514    pub type_: RayTracingShaderGroupTypeKHR,
26515    pub general_shader: u32,
26516    pub closest_hit_shader: u32,
26517    pub any_hit_shader: u32,
26518    pub intersection_shader: u32,
26519    pub shader_group_capture_replay_handle: *const c_void,
26520}
26521
26522impl Default for RayTracingShaderGroupCreateInfoKHR {
26523    #[inline]
26524    fn default() -> Self {
26525        Self {
26526            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
26527            next: ptr::null(),
26528            type_: RayTracingShaderGroupTypeKHR::default(),
26529            general_shader: u32::default(),
26530            closest_hit_shader: u32::default(),
26531            any_hit_shader: u32::default(),
26532            intersection_shader: u32::default(),
26533            shader_group_capture_replay_handle: ptr::null(),
26534        }
26535    }
26536}
26537
26538unsafe impl Send for RayTracingShaderGroupCreateInfoKHR {}
26539unsafe impl Sync for RayTracingShaderGroupCreateInfoKHR {}
26540
26541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
26542#[repr(C)]
26543#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26544pub struct RayTracingShaderGroupCreateInfoNV {
26545    pub s_type: StructureType,
26546    pub next: *const c_void,
26547    pub type_: RayTracingShaderGroupTypeKHR,
26548    pub general_shader: u32,
26549    pub closest_hit_shader: u32,
26550    pub any_hit_shader: u32,
26551    pub intersection_shader: u32,
26552}
26553
26554impl Default for RayTracingShaderGroupCreateInfoNV {
26555    #[inline]
26556    fn default() -> Self {
26557        Self {
26558            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
26559            next: ptr::null(),
26560            type_: RayTracingShaderGroupTypeKHR::default(),
26561            general_shader: u32::default(),
26562            closest_hit_shader: u32::default(),
26563            any_hit_shader: u32::default(),
26564            intersection_shader: u32::default(),
26565        }
26566    }
26567}
26568
26569unsafe impl Send for RayTracingShaderGroupCreateInfoNV {}
26570unsafe impl Sync for RayTracingShaderGroupCreateInfoNV {}
26571
26572/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
26573#[repr(C)]
26574#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26575pub struct Rect2D {
26576    pub offset: Offset2D,
26577    pub extent: Extent2D,
26578}
26579
26580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
26581#[repr(C)]
26582#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26583pub struct RectLayerKHR {
26584    pub offset: Offset2D,
26585    pub extent: Extent2D,
26586    pub layer: u32,
26587}
26588
26589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
26590#[repr(C)]
26591#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26592pub struct RefreshCycleDurationGOOGLE {
26593    pub refresh_duration: u64,
26594}
26595
26596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
26597#[repr(C)]
26598#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26599pub struct RefreshObjectKHR {
26600    pub object_type: ObjectType,
26601    pub object_handle: u64,
26602    pub flags: RefreshObjectFlagsKHR,
26603}
26604
26605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
26606#[repr(C)]
26607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26608pub struct RefreshObjectListKHR {
26609    pub s_type: StructureType,
26610    pub next: *const c_void,
26611    pub object_count: u32,
26612    pub objects: *const RefreshObjectKHR,
26613}
26614
26615impl Default for RefreshObjectListKHR {
26616    #[inline]
26617    fn default() -> Self {
26618        Self {
26619            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
26620            next: ptr::null(),
26621            object_count: u32::default(),
26622            objects: ptr::null(),
26623        }
26624    }
26625}
26626
26627unsafe impl Send for RefreshObjectListKHR {}
26628unsafe impl Sync for RefreshObjectListKHR {}
26629
26630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
26631#[repr(C)]
26632#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26633pub struct ReleaseCapturedPipelineDataInfoKHR {
26634    pub s_type: StructureType,
26635    pub next: *mut c_void,
26636    pub pipeline: Pipeline,
26637}
26638
26639impl Default for ReleaseCapturedPipelineDataInfoKHR {
26640    #[inline]
26641    fn default() -> Self {
26642        Self {
26643            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
26644            next: ptr::null_mut(),
26645            pipeline: Pipeline::default(),
26646        }
26647    }
26648}
26649
26650unsafe impl Send for ReleaseCapturedPipelineDataInfoKHR {}
26651unsafe impl Sync for ReleaseCapturedPipelineDataInfoKHR {}
26652
26653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html>
26654#[repr(C)]
26655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26656pub struct ReleaseSwapchainImagesInfoKHR {
26657    pub s_type: StructureType,
26658    pub next: *const c_void,
26659    pub swapchain: SwapchainKHR,
26660    pub image_index_count: u32,
26661    pub image_indices: *const u32,
26662}
26663
26664impl Default for ReleaseSwapchainImagesInfoKHR {
26665    #[inline]
26666    fn default() -> Self {
26667        Self {
26668            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,
26669            next: ptr::null(),
26670            swapchain: SwapchainKHR::default(),
26671            image_index_count: u32::default(),
26672            image_indices: ptr::null(),
26673        }
26674    }
26675}
26676
26677unsafe impl Send for ReleaseSwapchainImagesInfoKHR {}
26678unsafe impl Sync for ReleaseSwapchainImagesInfoKHR {}
26679
26680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
26681#[repr(C)]
26682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26683pub struct RenderPassAttachmentBeginInfo {
26684    pub s_type: StructureType,
26685    pub next: *const c_void,
26686    pub attachment_count: u32,
26687    pub attachments: *const ImageView,
26688}
26689
26690impl Default for RenderPassAttachmentBeginInfo {
26691    #[inline]
26692    fn default() -> Self {
26693        Self {
26694            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
26695            next: ptr::null(),
26696            attachment_count: u32::default(),
26697            attachments: ptr::null(),
26698        }
26699    }
26700}
26701
26702unsafe impl Send for RenderPassAttachmentBeginInfo {}
26703unsafe impl Sync for RenderPassAttachmentBeginInfo {}
26704
26705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
26706#[repr(C)]
26707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26708pub struct RenderPassBeginInfo {
26709    pub s_type: StructureType,
26710    pub next: *const c_void,
26711    pub render_pass: RenderPass,
26712    pub framebuffer: Framebuffer,
26713    pub render_area: Rect2D,
26714    pub clear_value_count: u32,
26715    pub clear_values: *const ClearValue,
26716}
26717
26718impl Default for RenderPassBeginInfo {
26719    #[inline]
26720    fn default() -> Self {
26721        Self {
26722            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
26723            next: ptr::null(),
26724            render_pass: RenderPass::default(),
26725            framebuffer: Framebuffer::default(),
26726            render_area: Rect2D::default(),
26727            clear_value_count: u32::default(),
26728            clear_values: ptr::null(),
26729        }
26730    }
26731}
26732
26733unsafe impl Send for RenderPassBeginInfo {}
26734unsafe impl Sync for RenderPassBeginInfo {}
26735
26736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
26737#[repr(C)]
26738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26739pub struct RenderPassCreateInfo {
26740    pub s_type: StructureType,
26741    pub next: *const c_void,
26742    pub flags: RenderPassCreateFlags,
26743    pub attachment_count: u32,
26744    pub attachments: *const AttachmentDescription,
26745    pub subpass_count: u32,
26746    pub subpasses: *const SubpassDescription,
26747    pub dependency_count: u32,
26748    pub dependencies: *const SubpassDependency,
26749}
26750
26751impl Default for RenderPassCreateInfo {
26752    #[inline]
26753    fn default() -> Self {
26754        Self {
26755            s_type: StructureType::RENDER_PASS_CREATE_INFO,
26756            next: ptr::null(),
26757            flags: RenderPassCreateFlags::default(),
26758            attachment_count: u32::default(),
26759            attachments: ptr::null(),
26760            subpass_count: u32::default(),
26761            subpasses: ptr::null(),
26762            dependency_count: u32::default(),
26763            dependencies: ptr::null(),
26764        }
26765    }
26766}
26767
26768unsafe impl Send for RenderPassCreateInfo {}
26769unsafe impl Sync for RenderPassCreateInfo {}
26770
26771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
26772#[repr(C)]
26773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26774pub struct RenderPassCreateInfo2 {
26775    pub s_type: StructureType,
26776    pub next: *const c_void,
26777    pub flags: RenderPassCreateFlags,
26778    pub attachment_count: u32,
26779    pub attachments: *const AttachmentDescription2,
26780    pub subpass_count: u32,
26781    pub subpasses: *const SubpassDescription2,
26782    pub dependency_count: u32,
26783    pub dependencies: *const SubpassDependency2,
26784    pub correlated_view_mask_count: u32,
26785    pub correlated_view_masks: *const u32,
26786}
26787
26788impl Default for RenderPassCreateInfo2 {
26789    #[inline]
26790    fn default() -> Self {
26791        Self {
26792            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
26793            next: ptr::null(),
26794            flags: RenderPassCreateFlags::default(),
26795            attachment_count: u32::default(),
26796            attachments: ptr::null(),
26797            subpass_count: u32::default(),
26798            subpasses: ptr::null(),
26799            dependency_count: u32::default(),
26800            dependencies: ptr::null(),
26801            correlated_view_mask_count: u32::default(),
26802            correlated_view_masks: ptr::null(),
26803        }
26804    }
26805}
26806
26807unsafe impl Send for RenderPassCreateInfo2 {}
26808unsafe impl Sync for RenderPassCreateInfo2 {}
26809
26810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
26811#[repr(C)]
26812#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26813pub struct RenderPassCreationControlEXT {
26814    pub s_type: StructureType,
26815    pub next: *const c_void,
26816    pub disallow_merging: Bool32,
26817}
26818
26819impl Default for RenderPassCreationControlEXT {
26820    #[inline]
26821    fn default() -> Self {
26822        Self {
26823            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
26824            next: ptr::null(),
26825            disallow_merging: Bool32::default(),
26826        }
26827    }
26828}
26829
26830unsafe impl Send for RenderPassCreationControlEXT {}
26831unsafe impl Sync for RenderPassCreationControlEXT {}
26832
26833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
26834#[repr(C)]
26835#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26836pub struct RenderPassCreationFeedbackCreateInfoEXT {
26837    pub s_type: StructureType,
26838    pub next: *const c_void,
26839    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
26840}
26841
26842impl Default for RenderPassCreationFeedbackCreateInfoEXT {
26843    #[inline]
26844    fn default() -> Self {
26845        Self {
26846            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
26847            next: ptr::null(),
26848            render_pass_feedback: ptr::null_mut(),
26849        }
26850    }
26851}
26852
26853unsafe impl Send for RenderPassCreationFeedbackCreateInfoEXT {}
26854unsafe impl Sync for RenderPassCreationFeedbackCreateInfoEXT {}
26855
26856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
26857#[repr(C)]
26858#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26859pub struct RenderPassCreationFeedbackInfoEXT {
26860    pub post_merge_subpass_count: u32,
26861}
26862
26863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
26864#[repr(C)]
26865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26866pub struct RenderPassFragmentDensityMapCreateInfoEXT {
26867    pub s_type: StructureType,
26868    pub next: *const c_void,
26869    pub fragment_density_map_attachment: AttachmentReference,
26870}
26871
26872impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
26873    #[inline]
26874    fn default() -> Self {
26875        Self {
26876            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
26877            next: ptr::null(),
26878            fragment_density_map_attachment: AttachmentReference::default(),
26879        }
26880    }
26881}
26882
26883unsafe impl Send for RenderPassFragmentDensityMapCreateInfoEXT {}
26884unsafe impl Sync for RenderPassFragmentDensityMapCreateInfoEXT {}
26885
26886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html>
26887#[repr(C)]
26888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26889pub struct RenderPassFragmentDensityMapOffsetEndInfoEXT {
26890    pub s_type: StructureType,
26891    pub next: *const c_void,
26892    pub fragment_density_offset_count: u32,
26893    pub fragment_density_offsets: *const Offset2D,
26894}
26895
26896impl Default for RenderPassFragmentDensityMapOffsetEndInfoEXT {
26897    #[inline]
26898    fn default() -> Self {
26899        Self {
26900            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
26901            next: ptr::null(),
26902            fragment_density_offset_count: u32::default(),
26903            fragment_density_offsets: ptr::null(),
26904        }
26905    }
26906}
26907
26908unsafe impl Send for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
26909unsafe impl Sync for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
26910
26911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
26912#[repr(C)]
26913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26914pub struct RenderPassInputAttachmentAspectCreateInfo {
26915    pub s_type: StructureType,
26916    pub next: *const c_void,
26917    pub aspect_reference_count: u32,
26918    pub aspect_references: *const InputAttachmentAspectReference,
26919}
26920
26921impl Default for RenderPassInputAttachmentAspectCreateInfo {
26922    #[inline]
26923    fn default() -> Self {
26924        Self {
26925            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
26926            next: ptr::null(),
26927            aspect_reference_count: u32::default(),
26928            aspect_references: ptr::null(),
26929        }
26930    }
26931}
26932
26933unsafe impl Send for RenderPassInputAttachmentAspectCreateInfo {}
26934unsafe impl Sync for RenderPassInputAttachmentAspectCreateInfo {}
26935
26936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
26937#[repr(C)]
26938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26939pub struct RenderPassMultiviewCreateInfo {
26940    pub s_type: StructureType,
26941    pub next: *const c_void,
26942    pub subpass_count: u32,
26943    pub view_masks: *const u32,
26944    pub dependency_count: u32,
26945    pub view_offsets: *const i32,
26946    pub correlation_mask_count: u32,
26947    pub correlation_masks: *const u32,
26948}
26949
26950impl Default for RenderPassMultiviewCreateInfo {
26951    #[inline]
26952    fn default() -> Self {
26953        Self {
26954            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
26955            next: ptr::null(),
26956            subpass_count: u32::default(),
26957            view_masks: ptr::null(),
26958            dependency_count: u32::default(),
26959            view_offsets: ptr::null(),
26960            correlation_mask_count: u32::default(),
26961            correlation_masks: ptr::null(),
26962        }
26963    }
26964}
26965
26966unsafe impl Send for RenderPassMultiviewCreateInfo {}
26967unsafe impl Sync for RenderPassMultiviewCreateInfo {}
26968
26969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassPerformanceCountersByRegionBeginInfoARM.html>
26970#[repr(C)]
26971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26972pub struct RenderPassPerformanceCountersByRegionBeginInfoARM {
26973    pub s_type: StructureType,
26974    pub next: *mut c_void,
26975    pub counter_address_count: u32,
26976    pub counter_addresses: *const DeviceAddress,
26977    pub serialize_regions: Bool32,
26978    pub counter_index_count: u32,
26979    pub counter_indices: *mut u32,
26980}
26981
26982impl Default for RenderPassPerformanceCountersByRegionBeginInfoARM {
26983    #[inline]
26984    fn default() -> Self {
26985        Self {
26986            s_type: StructureType::RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM,
26987            next: ptr::null_mut(),
26988            counter_address_count: u32::default(),
26989            counter_addresses: ptr::null(),
26990            serialize_regions: Bool32::default(),
26991            counter_index_count: u32::default(),
26992            counter_indices: ptr::null_mut(),
26993        }
26994    }
26995}
26996
26997unsafe impl Send for RenderPassPerformanceCountersByRegionBeginInfoARM {}
26998unsafe impl Sync for RenderPassPerformanceCountersByRegionBeginInfoARM {}
26999
27000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
27001#[repr(C)]
27002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27003pub struct RenderPassSampleLocationsBeginInfoEXT {
27004    pub s_type: StructureType,
27005    pub next: *const c_void,
27006    pub attachment_initial_sample_locations_count: u32,
27007    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
27008    pub post_subpass_sample_locations_count: u32,
27009    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
27010}
27011
27012impl Default for RenderPassSampleLocationsBeginInfoEXT {
27013    #[inline]
27014    fn default() -> Self {
27015        Self {
27016            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
27017            next: ptr::null(),
27018            attachment_initial_sample_locations_count: u32::default(),
27019            attachment_initial_sample_locations: ptr::null(),
27020            post_subpass_sample_locations_count: u32::default(),
27021            post_subpass_sample_locations: ptr::null(),
27022        }
27023    }
27024}
27025
27026unsafe impl Send for RenderPassSampleLocationsBeginInfoEXT {}
27027unsafe impl Sync for RenderPassSampleLocationsBeginInfoEXT {}
27028
27029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
27030#[repr(C)]
27031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27032pub struct RenderPassStripeBeginInfoARM {
27033    pub s_type: StructureType,
27034    pub next: *const c_void,
27035    pub stripe_info_count: u32,
27036    pub stripe_infos: *const RenderPassStripeInfoARM,
27037}
27038
27039impl Default for RenderPassStripeBeginInfoARM {
27040    #[inline]
27041    fn default() -> Self {
27042        Self {
27043            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
27044            next: ptr::null(),
27045            stripe_info_count: u32::default(),
27046            stripe_infos: ptr::null(),
27047        }
27048    }
27049}
27050
27051unsafe impl Send for RenderPassStripeBeginInfoARM {}
27052unsafe impl Sync for RenderPassStripeBeginInfoARM {}
27053
27054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
27055#[repr(C)]
27056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27057pub struct RenderPassStripeInfoARM {
27058    pub s_type: StructureType,
27059    pub next: *const c_void,
27060    pub stripe_area: Rect2D,
27061}
27062
27063impl Default for RenderPassStripeInfoARM {
27064    #[inline]
27065    fn default() -> Self {
27066        Self {
27067            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
27068            next: ptr::null(),
27069            stripe_area: Rect2D::default(),
27070        }
27071    }
27072}
27073
27074unsafe impl Send for RenderPassStripeInfoARM {}
27075unsafe impl Sync for RenderPassStripeInfoARM {}
27076
27077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
27078#[repr(C)]
27079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27080pub struct RenderPassStripeSubmitInfoARM {
27081    pub s_type: StructureType,
27082    pub next: *const c_void,
27083    pub stripe_semaphore_info_count: u32,
27084    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
27085}
27086
27087impl Default for RenderPassStripeSubmitInfoARM {
27088    #[inline]
27089    fn default() -> Self {
27090        Self {
27091            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
27092            next: ptr::null(),
27093            stripe_semaphore_info_count: u32::default(),
27094            stripe_semaphore_infos: ptr::null(),
27095        }
27096    }
27097}
27098
27099unsafe impl Send for RenderPassStripeSubmitInfoARM {}
27100unsafe impl Sync for RenderPassStripeSubmitInfoARM {}
27101
27102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
27103#[repr(C)]
27104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27105pub struct RenderPassSubpassFeedbackCreateInfoEXT {
27106    pub s_type: StructureType,
27107    pub next: *const c_void,
27108    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
27109}
27110
27111impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
27112    #[inline]
27113    fn default() -> Self {
27114        Self {
27115            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
27116            next: ptr::null(),
27117            subpass_feedback: ptr::null_mut(),
27118        }
27119    }
27120}
27121
27122unsafe impl Send for RenderPassSubpassFeedbackCreateInfoEXT {}
27123unsafe impl Sync for RenderPassSubpassFeedbackCreateInfoEXT {}
27124
27125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
27126#[repr(C)]
27127#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27128pub struct RenderPassSubpassFeedbackInfoEXT {
27129    pub subpass_merge_status: SubpassMergeStatusEXT,
27130    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
27131    pub post_merge_index: u32,
27132}
27133
27134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html>
27135#[repr(C)]
27136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27137pub struct RenderPassTileShadingCreateInfoQCOM {
27138    pub s_type: StructureType,
27139    pub next: *const c_void,
27140    pub flags: TileShadingRenderPassFlagsQCOM,
27141    pub tile_apron_size: Extent2D,
27142}
27143
27144impl Default for RenderPassTileShadingCreateInfoQCOM {
27145    #[inline]
27146    fn default() -> Self {
27147        Self {
27148            s_type: StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM,
27149            next: ptr::null(),
27150            flags: TileShadingRenderPassFlagsQCOM::default(),
27151            tile_apron_size: Extent2D::default(),
27152        }
27153    }
27154}
27155
27156unsafe impl Send for RenderPassTileShadingCreateInfoQCOM {}
27157unsafe impl Sync for RenderPassTileShadingCreateInfoQCOM {}
27158
27159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
27160#[repr(C)]
27161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27162pub struct RenderPassTransformBeginInfoQCOM {
27163    pub s_type: StructureType,
27164    pub next: *const c_void,
27165    pub transform: SurfaceTransformFlagsKHR,
27166}
27167
27168impl Default for RenderPassTransformBeginInfoQCOM {
27169    #[inline]
27170    fn default() -> Self {
27171        Self {
27172            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
27173            next: ptr::null(),
27174            transform: SurfaceTransformFlagsKHR::default(),
27175        }
27176    }
27177}
27178
27179unsafe impl Send for RenderPassTransformBeginInfoQCOM {}
27180unsafe impl Sync for RenderPassTransformBeginInfoQCOM {}
27181
27182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
27183#[repr(C)]
27184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27185pub struct RenderingAreaInfo {
27186    pub s_type: StructureType,
27187    pub next: *const c_void,
27188    pub view_mask: u32,
27189    pub color_attachment_count: u32,
27190    pub color_attachment_formats: *const Format,
27191    pub depth_attachment_format: Format,
27192    pub stencil_attachment_format: Format,
27193}
27194
27195impl Default for RenderingAreaInfo {
27196    #[inline]
27197    fn default() -> Self {
27198        Self {
27199            s_type: StructureType::RENDERING_AREA_INFO,
27200            next: ptr::null(),
27201            view_mask: u32::default(),
27202            color_attachment_count: u32::default(),
27203            color_attachment_formats: ptr::null(),
27204            depth_attachment_format: Format::default(),
27205            stencil_attachment_format: Format::default(),
27206        }
27207    }
27208}
27209
27210unsafe impl Send for RenderingAreaInfo {}
27211unsafe impl Sync for RenderingAreaInfo {}
27212
27213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsInfoKHR.html>
27214#[repr(C)]
27215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27216pub struct RenderingAttachmentFlagsInfoKHR {
27217    pub s_type: StructureType,
27218    pub next: *const c_void,
27219    pub flags: RenderingAttachmentFlagsKHR,
27220}
27221
27222impl Default for RenderingAttachmentFlagsInfoKHR {
27223    #[inline]
27224    fn default() -> Self {
27225        Self {
27226            s_type: StructureType::RENDERING_ATTACHMENT_FLAGS_INFO_KHR,
27227            next: ptr::null(),
27228            flags: RenderingAttachmentFlagsKHR::default(),
27229        }
27230    }
27231}
27232
27233unsafe impl Send for RenderingAttachmentFlagsInfoKHR {}
27234unsafe impl Sync for RenderingAttachmentFlagsInfoKHR {}
27235
27236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
27237#[repr(C)]
27238#[derive(Copy, Clone, Debug)]
27239pub struct RenderingAttachmentInfo {
27240    pub s_type: StructureType,
27241    pub next: *const c_void,
27242    pub image_view: ImageView,
27243    pub image_layout: ImageLayout,
27244    pub resolve_mode: ResolveModeFlags,
27245    pub resolve_image_view: ImageView,
27246    pub resolve_image_layout: ImageLayout,
27247    pub load_op: AttachmentLoadOp,
27248    pub store_op: AttachmentStoreOp,
27249    pub clear_value: ClearValue,
27250}
27251
27252impl Default for RenderingAttachmentInfo {
27253    #[inline]
27254    fn default() -> Self {
27255        Self {
27256            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
27257            next: ptr::null(),
27258            image_view: ImageView::default(),
27259            image_layout: ImageLayout::default(),
27260            resolve_mode: ResolveModeFlags::default(),
27261            resolve_image_view: ImageView::default(),
27262            resolve_image_layout: ImageLayout::default(),
27263            load_op: AttachmentLoadOp::default(),
27264            store_op: AttachmentStoreOp::default(),
27265            clear_value: ClearValue::default(),
27266        }
27267    }
27268}
27269
27270unsafe impl Send for RenderingAttachmentInfo {}
27271unsafe impl Sync for RenderingAttachmentInfo {}
27272
27273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
27274#[repr(C)]
27275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27276pub struct RenderingAttachmentLocationInfo {
27277    pub s_type: StructureType,
27278    pub next: *const c_void,
27279    pub color_attachment_count: u32,
27280    pub color_attachment_locations: *const u32,
27281}
27282
27283impl Default for RenderingAttachmentLocationInfo {
27284    #[inline]
27285    fn default() -> Self {
27286        Self {
27287            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
27288            next: ptr::null(),
27289            color_attachment_count: u32::default(),
27290            color_attachment_locations: ptr::null(),
27291        }
27292    }
27293}
27294
27295unsafe impl Send for RenderingAttachmentLocationInfo {}
27296unsafe impl Sync for RenderingAttachmentLocationInfo {}
27297
27298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoKHR.html>
27299#[repr(C)]
27300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27301pub struct RenderingEndInfoKHR {
27302    pub s_type: StructureType,
27303    pub next: *const c_void,
27304}
27305
27306impl Default for RenderingEndInfoKHR {
27307    #[inline]
27308    fn default() -> Self {
27309        Self {
27310            s_type: StructureType::RENDERING_END_INFO_KHR,
27311            next: ptr::null(),
27312        }
27313    }
27314}
27315
27316unsafe impl Send for RenderingEndInfoKHR {}
27317unsafe impl Sync for RenderingEndInfoKHR {}
27318
27319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
27320#[repr(C)]
27321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27322pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
27323    pub s_type: StructureType,
27324    pub next: *const c_void,
27325    pub image_view: ImageView,
27326    pub image_layout: ImageLayout,
27327}
27328
27329impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
27330    #[inline]
27331    fn default() -> Self {
27332        Self {
27333            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
27334            next: ptr::null(),
27335            image_view: ImageView::default(),
27336            image_layout: ImageLayout::default(),
27337        }
27338    }
27339}
27340
27341unsafe impl Send for RenderingFragmentDensityMapAttachmentInfoEXT {}
27342unsafe impl Sync for RenderingFragmentDensityMapAttachmentInfoEXT {}
27343
27344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
27345#[repr(C)]
27346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27347pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
27348    pub s_type: StructureType,
27349    pub next: *const c_void,
27350    pub image_view: ImageView,
27351    pub image_layout: ImageLayout,
27352    pub shading_rate_attachment_texel_size: Extent2D,
27353}
27354
27355impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
27356    #[inline]
27357    fn default() -> Self {
27358        Self {
27359            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
27360            next: ptr::null(),
27361            image_view: ImageView::default(),
27362            image_layout: ImageLayout::default(),
27363            shading_rate_attachment_texel_size: Extent2D::default(),
27364        }
27365    }
27366}
27367
27368unsafe impl Send for RenderingFragmentShadingRateAttachmentInfoKHR {}
27369unsafe impl Sync for RenderingFragmentShadingRateAttachmentInfoKHR {}
27370
27371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
27372#[repr(C)]
27373#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27374pub struct RenderingInfo {
27375    pub s_type: StructureType,
27376    pub next: *const c_void,
27377    pub flags: RenderingFlags,
27378    pub render_area: Rect2D,
27379    pub layer_count: u32,
27380    pub view_mask: u32,
27381    pub color_attachment_count: u32,
27382    pub color_attachments: *const RenderingAttachmentInfo,
27383    pub depth_attachment: *const RenderingAttachmentInfo,
27384    pub stencil_attachment: *const RenderingAttachmentInfo,
27385}
27386
27387impl Default for RenderingInfo {
27388    #[inline]
27389    fn default() -> Self {
27390        Self {
27391            s_type: StructureType::RENDERING_INFO,
27392            next: ptr::null(),
27393            flags: RenderingFlags::default(),
27394            render_area: Rect2D::default(),
27395            layer_count: u32::default(),
27396            view_mask: u32::default(),
27397            color_attachment_count: u32::default(),
27398            color_attachments: ptr::null(),
27399            depth_attachment: ptr::null(),
27400            stencil_attachment: ptr::null(),
27401        }
27402    }
27403}
27404
27405unsafe impl Send for RenderingInfo {}
27406unsafe impl Sync for RenderingInfo {}
27407
27408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
27409#[repr(C)]
27410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27411pub struct RenderingInputAttachmentIndexInfo {
27412    pub s_type: StructureType,
27413    pub next: *const c_void,
27414    pub color_attachment_count: u32,
27415    pub color_attachment_input_indices: *const u32,
27416    pub depth_input_attachment_index: *const u32,
27417    pub stencil_input_attachment_index: *const u32,
27418}
27419
27420impl Default for RenderingInputAttachmentIndexInfo {
27421    #[inline]
27422    fn default() -> Self {
27423        Self {
27424            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
27425            next: ptr::null(),
27426            color_attachment_count: u32::default(),
27427            color_attachment_input_indices: ptr::null(),
27428            depth_input_attachment_index: ptr::null(),
27429            stencil_input_attachment_index: ptr::null(),
27430        }
27431    }
27432}
27433
27434unsafe impl Send for RenderingInputAttachmentIndexInfo {}
27435unsafe impl Sync for RenderingInputAttachmentIndexInfo {}
27436
27437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
27438#[repr(C)]
27439#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27440pub struct ResolveImageInfo2 {
27441    pub s_type: StructureType,
27442    pub next: *const c_void,
27443    pub src_image: Image,
27444    pub src_image_layout: ImageLayout,
27445    pub dst_image: Image,
27446    pub dst_image_layout: ImageLayout,
27447    pub region_count: u32,
27448    pub regions: *const ImageResolve2,
27449}
27450
27451impl Default for ResolveImageInfo2 {
27452    #[inline]
27453    fn default() -> Self {
27454        Self {
27455            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
27456            next: ptr::null(),
27457            src_image: Image::default(),
27458            src_image_layout: ImageLayout::default(),
27459            dst_image: Image::default(),
27460            dst_image_layout: ImageLayout::default(),
27461            region_count: u32::default(),
27462            regions: ptr::null(),
27463        }
27464    }
27465}
27466
27467unsafe impl Send for ResolveImageInfo2 {}
27468unsafe impl Sync for ResolveImageInfo2 {}
27469
27470/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageModeInfoKHR.html>
27471#[repr(C)]
27472#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27473pub struct ResolveImageModeInfoKHR {
27474    pub s_type: StructureType,
27475    pub next: *const c_void,
27476    pub flags: ResolveImageFlagsKHR,
27477    pub resolve_mode: ResolveModeFlags,
27478    pub stencil_resolve_mode: ResolveModeFlags,
27479}
27480
27481impl Default for ResolveImageModeInfoKHR {
27482    #[inline]
27483    fn default() -> Self {
27484        Self {
27485            s_type: StructureType::RESOLVE_IMAGE_MODE_INFO_KHR,
27486            next: ptr::null(),
27487            flags: ResolveImageFlagsKHR::default(),
27488            resolve_mode: ResolveModeFlags::default(),
27489            stencil_resolve_mode: ResolveModeFlags::default(),
27490        }
27491    }
27492}
27493
27494unsafe impl Send for ResolveImageModeInfoKHR {}
27495unsafe impl Sync for ResolveImageModeInfoKHR {}
27496
27497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
27498#[repr(C)]
27499#[derive(Copy, Clone, Default, Debug, PartialEq)]
27500pub struct SRTDataNV {
27501    pub sx: f32,
27502    pub a: f32,
27503    pub b: f32,
27504    pub pvx: f32,
27505    pub sy: f32,
27506    pub c: f32,
27507    pub pvy: f32,
27508    pub sz: f32,
27509    pub pvz: f32,
27510    pub qx: f32,
27511    pub qy: f32,
27512    pub qz: f32,
27513    pub qw: f32,
27514    pub tx: f32,
27515    pub ty: f32,
27516    pub tz: f32,
27517}
27518
27519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
27520#[repr(C)]
27521#[derive(Copy, Clone, Default, Debug, PartialEq)]
27522pub struct SampleLocationEXT {
27523    pub x: f32,
27524    pub y: f32,
27525}
27526
27527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
27528#[repr(C)]
27529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27530pub struct SampleLocationsInfoEXT {
27531    pub s_type: StructureType,
27532    pub next: *const c_void,
27533    pub sample_locations_per_pixel: SampleCountFlags,
27534    pub sample_location_grid_size: Extent2D,
27535    pub sample_locations_count: u32,
27536    pub sample_locations: *const SampleLocationEXT,
27537}
27538
27539impl Default for SampleLocationsInfoEXT {
27540    #[inline]
27541    fn default() -> Self {
27542        Self {
27543            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
27544            next: ptr::null(),
27545            sample_locations_per_pixel: SampleCountFlags::default(),
27546            sample_location_grid_size: Extent2D::default(),
27547            sample_locations_count: u32::default(),
27548            sample_locations: ptr::null(),
27549        }
27550    }
27551}
27552
27553unsafe impl Send for SampleLocationsInfoEXT {}
27554unsafe impl Sync for SampleLocationsInfoEXT {}
27555
27556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
27557#[repr(C)]
27558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27559pub struct SamplerBlockMatchWindowCreateInfoQCOM {
27560    pub s_type: StructureType,
27561    pub next: *const c_void,
27562    pub window_extent: Extent2D,
27563    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
27564}
27565
27566impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
27567    #[inline]
27568    fn default() -> Self {
27569        Self {
27570            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
27571            next: ptr::null(),
27572            window_extent: Extent2D::default(),
27573            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
27574        }
27575    }
27576}
27577
27578unsafe impl Send for SamplerBlockMatchWindowCreateInfoQCOM {}
27579unsafe impl Sync for SamplerBlockMatchWindowCreateInfoQCOM {}
27580
27581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
27582#[repr(C)]
27583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27584pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
27585    pub s_type: StructureType,
27586    pub next: *const c_void,
27587    pub components: ComponentMapping,
27588    pub srgb: Bool32,
27589}
27590
27591impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
27592    #[inline]
27593    fn default() -> Self {
27594        Self {
27595            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
27596            next: ptr::null(),
27597            components: ComponentMapping::default(),
27598            srgb: Bool32::default(),
27599        }
27600    }
27601}
27602
27603unsafe impl Send for SamplerBorderColorComponentMappingCreateInfoEXT {}
27604unsafe impl Sync for SamplerBorderColorComponentMappingCreateInfoEXT {}
27605
27606/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
27607#[repr(C)]
27608#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27609pub struct SamplerCaptureDescriptorDataInfoEXT {
27610    pub s_type: StructureType,
27611    pub next: *const c_void,
27612    pub sampler: Sampler,
27613}
27614
27615impl Default for SamplerCaptureDescriptorDataInfoEXT {
27616    #[inline]
27617    fn default() -> Self {
27618        Self {
27619            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
27620            next: ptr::null(),
27621            sampler: Sampler::default(),
27622        }
27623    }
27624}
27625
27626unsafe impl Send for SamplerCaptureDescriptorDataInfoEXT {}
27627unsafe impl Sync for SamplerCaptureDescriptorDataInfoEXT {}
27628
27629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
27630#[repr(C)]
27631#[derive(Copy, Clone, Debug, PartialEq)]
27632pub struct SamplerCreateInfo {
27633    pub s_type: StructureType,
27634    pub next: *const c_void,
27635    pub flags: SamplerCreateFlags,
27636    pub mag_filter: Filter,
27637    pub min_filter: Filter,
27638    pub mipmap_mode: SamplerMipmapMode,
27639    pub address_mode_u: SamplerAddressMode,
27640    pub address_mode_v: SamplerAddressMode,
27641    pub address_mode_w: SamplerAddressMode,
27642    pub mip_lod_bias: f32,
27643    pub anisotropy_enable: Bool32,
27644    pub max_anisotropy: f32,
27645    pub compare_enable: Bool32,
27646    pub compare_op: CompareOp,
27647    pub min_lod: f32,
27648    pub max_lod: f32,
27649    pub border_color: BorderColor,
27650    pub unnormalized_coordinates: Bool32,
27651}
27652
27653impl Default for SamplerCreateInfo {
27654    #[inline]
27655    fn default() -> Self {
27656        Self {
27657            s_type: StructureType::SAMPLER_CREATE_INFO,
27658            next: ptr::null(),
27659            flags: SamplerCreateFlags::default(),
27660            mag_filter: Filter::default(),
27661            min_filter: Filter::default(),
27662            mipmap_mode: SamplerMipmapMode::default(),
27663            address_mode_u: SamplerAddressMode::default(),
27664            address_mode_v: SamplerAddressMode::default(),
27665            address_mode_w: SamplerAddressMode::default(),
27666            mip_lod_bias: f32::default(),
27667            anisotropy_enable: Bool32::default(),
27668            max_anisotropy: f32::default(),
27669            compare_enable: Bool32::default(),
27670            compare_op: CompareOp::default(),
27671            min_lod: f32::default(),
27672            max_lod: f32::default(),
27673            border_color: BorderColor::default(),
27674            unnormalized_coordinates: Bool32::default(),
27675        }
27676    }
27677}
27678
27679unsafe impl Send for SamplerCreateInfo {}
27680unsafe impl Sync for SamplerCreateInfo {}
27681
27682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
27683#[repr(C)]
27684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27685pub struct SamplerCubicWeightsCreateInfoQCOM {
27686    pub s_type: StructureType,
27687    pub next: *const c_void,
27688    pub cubic_weights: CubicFilterWeightsQCOM,
27689}
27690
27691impl Default for SamplerCubicWeightsCreateInfoQCOM {
27692    #[inline]
27693    fn default() -> Self {
27694        Self {
27695            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
27696            next: ptr::null(),
27697            cubic_weights: CubicFilterWeightsQCOM::default(),
27698        }
27699    }
27700}
27701
27702unsafe impl Send for SamplerCubicWeightsCreateInfoQCOM {}
27703unsafe impl Sync for SamplerCubicWeightsCreateInfoQCOM {}
27704
27705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
27706#[repr(C)]
27707#[derive(Copy, Clone, Debug)]
27708pub struct SamplerCustomBorderColorCreateInfoEXT {
27709    pub s_type: StructureType,
27710    pub next: *const c_void,
27711    pub custom_border_color: ClearColorValue,
27712    pub format: Format,
27713}
27714
27715impl Default for SamplerCustomBorderColorCreateInfoEXT {
27716    #[inline]
27717    fn default() -> Self {
27718        Self {
27719            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
27720            next: ptr::null(),
27721            custom_border_color: ClearColorValue::default(),
27722            format: Format::default(),
27723        }
27724    }
27725}
27726
27727unsafe impl Send for SamplerCustomBorderColorCreateInfoEXT {}
27728unsafe impl Sync for SamplerCustomBorderColorCreateInfoEXT {}
27729
27730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
27731#[repr(C)]
27732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27733pub struct SamplerReductionModeCreateInfo {
27734    pub s_type: StructureType,
27735    pub next: *const c_void,
27736    pub reduction_mode: SamplerReductionMode,
27737}
27738
27739impl Default for SamplerReductionModeCreateInfo {
27740    #[inline]
27741    fn default() -> Self {
27742        Self {
27743            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
27744            next: ptr::null(),
27745            reduction_mode: SamplerReductionMode::default(),
27746        }
27747    }
27748}
27749
27750unsafe impl Send for SamplerReductionModeCreateInfo {}
27751unsafe impl Sync for SamplerReductionModeCreateInfo {}
27752
27753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
27754#[repr(C)]
27755#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27756pub struct SamplerYcbcrConversionCreateInfo {
27757    pub s_type: StructureType,
27758    pub next: *const c_void,
27759    pub format: Format,
27760    pub ycbcr_model: SamplerYcbcrModelConversion,
27761    pub ycbcr_range: SamplerYcbcrRange,
27762    pub components: ComponentMapping,
27763    pub x_chroma_offset: ChromaLocation,
27764    pub y_chroma_offset: ChromaLocation,
27765    pub chroma_filter: Filter,
27766    pub force_explicit_reconstruction: Bool32,
27767}
27768
27769impl Default for SamplerYcbcrConversionCreateInfo {
27770    #[inline]
27771    fn default() -> Self {
27772        Self {
27773            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
27774            next: ptr::null(),
27775            format: Format::default(),
27776            ycbcr_model: SamplerYcbcrModelConversion::default(),
27777            ycbcr_range: SamplerYcbcrRange::default(),
27778            components: ComponentMapping::default(),
27779            x_chroma_offset: ChromaLocation::default(),
27780            y_chroma_offset: ChromaLocation::default(),
27781            chroma_filter: Filter::default(),
27782            force_explicit_reconstruction: Bool32::default(),
27783        }
27784    }
27785}
27786
27787unsafe impl Send for SamplerYcbcrConversionCreateInfo {}
27788unsafe impl Sync for SamplerYcbcrConversionCreateInfo {}
27789
27790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
27791#[repr(C)]
27792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27793pub struct SamplerYcbcrConversionImageFormatProperties {
27794    pub s_type: StructureType,
27795    pub next: *mut c_void,
27796    pub combined_image_sampler_descriptor_count: u32,
27797}
27798
27799impl Default for SamplerYcbcrConversionImageFormatProperties {
27800    #[inline]
27801    fn default() -> Self {
27802        Self {
27803            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
27804            next: ptr::null_mut(),
27805            combined_image_sampler_descriptor_count: u32::default(),
27806        }
27807    }
27808}
27809
27810unsafe impl Send for SamplerYcbcrConversionImageFormatProperties {}
27811unsafe impl Sync for SamplerYcbcrConversionImageFormatProperties {}
27812
27813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
27814#[repr(C)]
27815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27816pub struct SamplerYcbcrConversionInfo {
27817    pub s_type: StructureType,
27818    pub next: *const c_void,
27819    pub conversion: SamplerYcbcrConversion,
27820}
27821
27822impl Default for SamplerYcbcrConversionInfo {
27823    #[inline]
27824    fn default() -> Self {
27825        Self {
27826            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
27827            next: ptr::null(),
27828            conversion: SamplerYcbcrConversion::default(),
27829        }
27830    }
27831}
27832
27833unsafe impl Send for SamplerYcbcrConversionInfo {}
27834unsafe impl Sync for SamplerYcbcrConversionInfo {}
27835
27836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
27837#[repr(C)]
27838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27839pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
27840    pub s_type: StructureType,
27841    pub next: *mut c_void,
27842    pub enable_y_degamma: Bool32,
27843    pub enable_cb_cr_degamma: Bool32,
27844}
27845
27846impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
27847    #[inline]
27848    fn default() -> Self {
27849        Self {
27850            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
27851            next: ptr::null_mut(),
27852            enable_y_degamma: Bool32::default(),
27853            enable_cb_cr_degamma: Bool32::default(),
27854        }
27855    }
27856}
27857
27858unsafe impl Send for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
27859unsafe impl Sync for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
27860
27861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
27862#[repr(C)]
27863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27864pub struct SciSyncAttributesInfoNV {
27865    pub s_type: StructureType,
27866    pub next: *const c_void,
27867    pub client_type: SciSyncClientTypeNV,
27868    pub primitive_type: SciSyncPrimitiveTypeNV,
27869}
27870
27871impl Default for SciSyncAttributesInfoNV {
27872    #[inline]
27873    fn default() -> Self {
27874        Self {
27875            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
27876            next: ptr::null(),
27877            client_type: SciSyncClientTypeNV::default(),
27878            primitive_type: SciSyncPrimitiveTypeNV::default(),
27879        }
27880    }
27881}
27882
27883unsafe impl Send for SciSyncAttributesInfoNV {}
27884unsafe impl Sync for SciSyncAttributesInfoNV {}
27885
27886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
27887#[repr(C)]
27888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27889pub struct ScreenBufferFormatPropertiesQNX {
27890    pub s_type: StructureType,
27891    pub next: *mut c_void,
27892    pub format: Format,
27893    pub external_format: u64,
27894    pub screen_usage: u64,
27895    pub format_features: FormatFeatureFlags,
27896    pub sampler_ycbcr_conversion_components: ComponentMapping,
27897    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
27898    pub suggested_ycbcr_range: SamplerYcbcrRange,
27899    pub suggested_x_chroma_offset: ChromaLocation,
27900    pub suggested_y_chroma_offset: ChromaLocation,
27901}
27902
27903impl Default for ScreenBufferFormatPropertiesQNX {
27904    #[inline]
27905    fn default() -> Self {
27906        Self {
27907            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
27908            next: ptr::null_mut(),
27909            format: Format::default(),
27910            external_format: u64::default(),
27911            screen_usage: u64::default(),
27912            format_features: FormatFeatureFlags::default(),
27913            sampler_ycbcr_conversion_components: ComponentMapping::default(),
27914            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
27915            suggested_ycbcr_range: SamplerYcbcrRange::default(),
27916            suggested_x_chroma_offset: ChromaLocation::default(),
27917            suggested_y_chroma_offset: ChromaLocation::default(),
27918        }
27919    }
27920}
27921
27922unsafe impl Send for ScreenBufferFormatPropertiesQNX {}
27923unsafe impl Sync for ScreenBufferFormatPropertiesQNX {}
27924
27925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
27926#[repr(C)]
27927#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27928pub struct ScreenBufferPropertiesQNX {
27929    pub s_type: StructureType,
27930    pub next: *mut c_void,
27931    pub allocation_size: DeviceSize,
27932    pub memory_type_bits: u32,
27933}
27934
27935impl Default for ScreenBufferPropertiesQNX {
27936    #[inline]
27937    fn default() -> Self {
27938        Self {
27939            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
27940            next: ptr::null_mut(),
27941            allocation_size: DeviceSize::default(),
27942            memory_type_bits: u32::default(),
27943        }
27944    }
27945}
27946
27947unsafe impl Send for ScreenBufferPropertiesQNX {}
27948unsafe impl Sync for ScreenBufferPropertiesQNX {}
27949
27950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
27951#[repr(C)]
27952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27953pub struct ScreenSurfaceCreateInfoQNX {
27954    pub s_type: StructureType,
27955    pub next: *const c_void,
27956    pub flags: ScreenSurfaceCreateFlagsQNX,
27957    pub context: *mut _screen_context,
27958    pub window: *mut _screen_window,
27959}
27960
27961impl Default for ScreenSurfaceCreateInfoQNX {
27962    #[inline]
27963    fn default() -> Self {
27964        Self {
27965            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
27966            next: ptr::null(),
27967            flags: ScreenSurfaceCreateFlagsQNX::default(),
27968            context: ptr::null_mut(),
27969            window: ptr::null_mut(),
27970        }
27971    }
27972}
27973
27974unsafe impl Send for ScreenSurfaceCreateInfoQNX {}
27975unsafe impl Sync for ScreenSurfaceCreateInfoQNX {}
27976
27977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
27978#[repr(C)]
27979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27980pub struct SemaphoreCreateInfo {
27981    pub s_type: StructureType,
27982    pub next: *const c_void,
27983    pub flags: SemaphoreCreateFlags,
27984}
27985
27986impl Default for SemaphoreCreateInfo {
27987    #[inline]
27988    fn default() -> Self {
27989        Self {
27990            s_type: StructureType::SEMAPHORE_CREATE_INFO,
27991            next: ptr::null(),
27992            flags: SemaphoreCreateFlags::default(),
27993        }
27994    }
27995}
27996
27997unsafe impl Send for SemaphoreCreateInfo {}
27998unsafe impl Sync for SemaphoreCreateInfo {}
27999
28000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
28001#[repr(C)]
28002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28003pub struct SemaphoreGetFdInfoKHR {
28004    pub s_type: StructureType,
28005    pub next: *const c_void,
28006    pub semaphore: Semaphore,
28007    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28008}
28009
28010impl Default for SemaphoreGetFdInfoKHR {
28011    #[inline]
28012    fn default() -> Self {
28013        Self {
28014            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
28015            next: ptr::null(),
28016            semaphore: Semaphore::default(),
28017            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28018        }
28019    }
28020}
28021
28022unsafe impl Send for SemaphoreGetFdInfoKHR {}
28023unsafe impl Sync for SemaphoreGetFdInfoKHR {}
28024
28025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
28026#[repr(C)]
28027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28028pub struct SemaphoreGetSciSyncInfoNV {
28029    pub s_type: StructureType,
28030    pub next: *const c_void,
28031    pub semaphore: Semaphore,
28032    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28033}
28034
28035impl Default for SemaphoreGetSciSyncInfoNV {
28036    #[inline]
28037    fn default() -> Self {
28038        Self {
28039            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
28040            next: ptr::null(),
28041            semaphore: Semaphore::default(),
28042            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28043        }
28044    }
28045}
28046
28047unsafe impl Send for SemaphoreGetSciSyncInfoNV {}
28048unsafe impl Sync for SemaphoreGetSciSyncInfoNV {}
28049
28050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
28051#[repr(C)]
28052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28053pub struct SemaphoreGetWin32HandleInfoKHR {
28054    pub s_type: StructureType,
28055    pub next: *const c_void,
28056    pub semaphore: Semaphore,
28057    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28058}
28059
28060impl Default for SemaphoreGetWin32HandleInfoKHR {
28061    #[inline]
28062    fn default() -> Self {
28063        Self {
28064            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
28065            next: ptr::null(),
28066            semaphore: Semaphore::default(),
28067            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28068        }
28069    }
28070}
28071
28072unsafe impl Send for SemaphoreGetWin32HandleInfoKHR {}
28073unsafe impl Sync for SemaphoreGetWin32HandleInfoKHR {}
28074
28075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
28076#[repr(C)]
28077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28078pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
28079    pub s_type: StructureType,
28080    pub next: *const c_void,
28081    pub semaphore: Semaphore,
28082    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28083}
28084
28085impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
28086    #[inline]
28087    fn default() -> Self {
28088        Self {
28089            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
28090            next: ptr::null(),
28091            semaphore: Semaphore::default(),
28092            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28093        }
28094    }
28095}
28096
28097unsafe impl Send for SemaphoreGetZirconHandleInfoFUCHSIA {}
28098unsafe impl Sync for SemaphoreGetZirconHandleInfoFUCHSIA {}
28099
28100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
28101#[repr(C)]
28102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28103pub struct SemaphoreSciSyncCreateInfoNV {
28104    pub s_type: StructureType,
28105    pub next: *const c_void,
28106    pub semaphore_pool: SemaphoreSciSyncPoolNV,
28107    pub fence: *const NvSciSyncFence,
28108}
28109
28110impl Default for SemaphoreSciSyncCreateInfoNV {
28111    #[inline]
28112    fn default() -> Self {
28113        Self {
28114            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
28115            next: ptr::null(),
28116            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
28117            fence: ptr::null(),
28118        }
28119    }
28120}
28121
28122unsafe impl Send for SemaphoreSciSyncCreateInfoNV {}
28123unsafe impl Sync for SemaphoreSciSyncCreateInfoNV {}
28124
28125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
28126#[repr(C)]
28127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28128pub struct SemaphoreSciSyncPoolCreateInfoNV {
28129    pub s_type: StructureType,
28130    pub next: *const c_void,
28131    pub handle: NvSciSyncObj,
28132}
28133
28134impl Default for SemaphoreSciSyncPoolCreateInfoNV {
28135    #[inline]
28136    fn default() -> Self {
28137        Self {
28138            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
28139            next: ptr::null(),
28140            handle: ptr::null_mut(),
28141        }
28142    }
28143}
28144
28145unsafe impl Send for SemaphoreSciSyncPoolCreateInfoNV {}
28146unsafe impl Sync for SemaphoreSciSyncPoolCreateInfoNV {}
28147
28148/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
28149#[repr(C)]
28150#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28151pub struct SemaphoreSignalInfo {
28152    pub s_type: StructureType,
28153    pub next: *const c_void,
28154    pub semaphore: Semaphore,
28155    pub value: u64,
28156}
28157
28158impl Default for SemaphoreSignalInfo {
28159    #[inline]
28160    fn default() -> Self {
28161        Self {
28162            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
28163            next: ptr::null(),
28164            semaphore: Semaphore::default(),
28165            value: u64::default(),
28166        }
28167    }
28168}
28169
28170unsafe impl Send for SemaphoreSignalInfo {}
28171unsafe impl Sync for SemaphoreSignalInfo {}
28172
28173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
28174#[repr(C)]
28175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28176pub struct SemaphoreSubmitInfo {
28177    pub s_type: StructureType,
28178    pub next: *const c_void,
28179    pub semaphore: Semaphore,
28180    pub value: u64,
28181    pub stage_mask: PipelineStageFlags2,
28182    pub device_index: u32,
28183}
28184
28185impl Default for SemaphoreSubmitInfo {
28186    #[inline]
28187    fn default() -> Self {
28188        Self {
28189            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
28190            next: ptr::null(),
28191            semaphore: Semaphore::default(),
28192            value: u64::default(),
28193            stage_mask: PipelineStageFlags2::default(),
28194            device_index: u32::default(),
28195        }
28196    }
28197}
28198
28199unsafe impl Send for SemaphoreSubmitInfo {}
28200unsafe impl Sync for SemaphoreSubmitInfo {}
28201
28202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
28203#[repr(C)]
28204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28205pub struct SemaphoreTypeCreateInfo {
28206    pub s_type: StructureType,
28207    pub next: *const c_void,
28208    pub semaphore_type: SemaphoreType,
28209    pub initial_value: u64,
28210}
28211
28212impl Default for SemaphoreTypeCreateInfo {
28213    #[inline]
28214    fn default() -> Self {
28215        Self {
28216            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
28217            next: ptr::null(),
28218            semaphore_type: SemaphoreType::default(),
28219            initial_value: u64::default(),
28220        }
28221    }
28222}
28223
28224unsafe impl Send for SemaphoreTypeCreateInfo {}
28225unsafe impl Sync for SemaphoreTypeCreateInfo {}
28226
28227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
28228#[repr(C)]
28229#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28230pub struct SemaphoreWaitInfo {
28231    pub s_type: StructureType,
28232    pub next: *const c_void,
28233    pub flags: SemaphoreWaitFlags,
28234    pub semaphore_count: u32,
28235    pub semaphores: *const Semaphore,
28236    pub values: *const u64,
28237}
28238
28239impl Default for SemaphoreWaitInfo {
28240    #[inline]
28241    fn default() -> Self {
28242        Self {
28243            s_type: StructureType::SEMAPHORE_WAIT_INFO,
28244            next: ptr::null(),
28245            flags: SemaphoreWaitFlags::default(),
28246            semaphore_count: u32::default(),
28247            semaphores: ptr::null(),
28248            values: ptr::null(),
28249        }
28250    }
28251}
28252
28253unsafe impl Send for SemaphoreWaitInfo {}
28254unsafe impl Sync for SemaphoreWaitInfo {}
28255
28256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
28257#[repr(C)]
28258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28259pub struct SetDescriptorBufferOffsetsInfoEXT {
28260    pub s_type: StructureType,
28261    pub next: *const c_void,
28262    pub stage_flags: ShaderStageFlags,
28263    pub layout: PipelineLayout,
28264    pub first_set: u32,
28265    pub set_count: u32,
28266    pub buffer_indices: *const u32,
28267    pub offsets: *const DeviceSize,
28268}
28269
28270impl Default for SetDescriptorBufferOffsetsInfoEXT {
28271    #[inline]
28272    fn default() -> Self {
28273        Self {
28274            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
28275            next: ptr::null(),
28276            stage_flags: ShaderStageFlags::default(),
28277            layout: PipelineLayout::default(),
28278            first_set: u32::default(),
28279            set_count: u32::default(),
28280            buffer_indices: ptr::null(),
28281            offsets: ptr::null(),
28282        }
28283    }
28284}
28285
28286unsafe impl Send for SetDescriptorBufferOffsetsInfoEXT {}
28287unsafe impl Sync for SetDescriptorBufferOffsetsInfoEXT {}
28288
28289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
28290#[repr(C)]
28291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28292pub struct SetLatencyMarkerInfoNV {
28293    pub s_type: StructureType,
28294    pub next: *const c_void,
28295    pub present_id: u64,
28296    pub marker: LatencyMarkerNV,
28297}
28298
28299impl Default for SetLatencyMarkerInfoNV {
28300    #[inline]
28301    fn default() -> Self {
28302        Self {
28303            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
28304            next: ptr::null(),
28305            present_id: u64::default(),
28306            marker: LatencyMarkerNV::default(),
28307        }
28308    }
28309}
28310
28311unsafe impl Send for SetLatencyMarkerInfoNV {}
28312unsafe impl Sync for SetLatencyMarkerInfoNV {}
28313
28314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
28315#[repr(C)]
28316#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28317pub struct SetPresentConfigNV {
28318    pub s_type: StructureType,
28319    pub next: *const c_void,
28320    pub num_frames_per_batch: u32,
28321    pub present_config_feedback: u32,
28322}
28323
28324impl Default for SetPresentConfigNV {
28325    #[inline]
28326    fn default() -> Self {
28327        Self {
28328            s_type: StructureType::SET_PRESENT_CONFIG_NV,
28329            next: ptr::null(),
28330            num_frames_per_batch: u32::default(),
28331            present_config_feedback: u32::default(),
28332        }
28333    }
28334}
28335
28336unsafe impl Send for SetPresentConfigNV {}
28337unsafe impl Sync for SetPresentConfigNV {}
28338
28339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
28340#[repr(C)]
28341#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28342pub struct SetStateFlagsIndirectCommandNV {
28343    pub data: u32,
28344}
28345
28346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
28347#[repr(C)]
28348#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28349pub struct ShaderCreateInfoEXT {
28350    pub s_type: StructureType,
28351    pub next: *const c_void,
28352    pub flags: ShaderCreateFlagsEXT,
28353    pub stage: ShaderStageFlags,
28354    pub next_stage: ShaderStageFlags,
28355    pub code_type: ShaderCodeTypeEXT,
28356    pub code_size: usize,
28357    pub code: *const c_void,
28358    pub name: *const c_char,
28359    pub set_layout_count: u32,
28360    pub set_layouts: *const DescriptorSetLayout,
28361    pub push_constant_range_count: u32,
28362    pub push_constant_ranges: *const PushConstantRange,
28363    pub specialization_info: *const SpecializationInfo,
28364}
28365
28366impl Default for ShaderCreateInfoEXT {
28367    #[inline]
28368    fn default() -> Self {
28369        Self {
28370            s_type: StructureType::SHADER_CREATE_INFO_EXT,
28371            next: ptr::null(),
28372            flags: ShaderCreateFlagsEXT::default(),
28373            stage: ShaderStageFlags::default(),
28374            next_stage: ShaderStageFlags::default(),
28375            code_type: ShaderCodeTypeEXT::default(),
28376            code_size: usize::default(),
28377            code: ptr::null(),
28378            name: ptr::null(),
28379            set_layout_count: u32::default(),
28380            set_layouts: ptr::null(),
28381            push_constant_range_count: u32::default(),
28382            push_constant_ranges: ptr::null(),
28383            specialization_info: ptr::null(),
28384        }
28385    }
28386}
28387
28388unsafe impl Send for ShaderCreateInfoEXT {}
28389unsafe impl Sync for ShaderCreateInfoEXT {}
28390
28391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
28392#[repr(C)]
28393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28394pub struct ShaderModuleCreateInfo {
28395    pub s_type: StructureType,
28396    pub next: *const c_void,
28397    pub flags: ShaderModuleCreateFlags,
28398    pub code_size: usize,
28399    pub code: *const u32,
28400}
28401
28402impl Default for ShaderModuleCreateInfo {
28403    #[inline]
28404    fn default() -> Self {
28405        Self {
28406            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
28407            next: ptr::null(),
28408            flags: ShaderModuleCreateFlags::default(),
28409            code_size: usize::default(),
28410            code: ptr::null(),
28411        }
28412    }
28413}
28414
28415unsafe impl Send for ShaderModuleCreateInfo {}
28416unsafe impl Sync for ShaderModuleCreateInfo {}
28417
28418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
28419#[repr(C)]
28420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28421pub struct ShaderModuleIdentifierEXT {
28422    pub s_type: StructureType,
28423    pub next: *mut c_void,
28424    pub identifier_size: u32,
28425    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
28426}
28427
28428impl Default for ShaderModuleIdentifierEXT {
28429    #[inline]
28430    fn default() -> Self {
28431        Self {
28432            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
28433            next: ptr::null_mut(),
28434            identifier_size: u32::default(),
28435            identifier: ByteArray::default(),
28436        }
28437    }
28438}
28439
28440unsafe impl Send for ShaderModuleIdentifierEXT {}
28441unsafe impl Sync for ShaderModuleIdentifierEXT {}
28442
28443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
28444#[repr(C)]
28445#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28446pub struct ShaderModuleValidationCacheCreateInfoEXT {
28447    pub s_type: StructureType,
28448    pub next: *const c_void,
28449    pub validation_cache: ValidationCacheEXT,
28450}
28451
28452impl Default for ShaderModuleValidationCacheCreateInfoEXT {
28453    #[inline]
28454    fn default() -> Self {
28455        Self {
28456            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
28457            next: ptr::null(),
28458            validation_cache: ValidationCacheEXT::default(),
28459        }
28460    }
28461}
28462
28463unsafe impl Send for ShaderModuleValidationCacheCreateInfoEXT {}
28464unsafe impl Sync for ShaderModuleValidationCacheCreateInfoEXT {}
28465
28466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
28467#[repr(C)]
28468#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28469pub struct ShaderResourceUsageAMD {
28470    pub num_used_vgprs: u32,
28471    pub num_used_sgprs: u32,
28472    pub lds_size_per_local_work_group: u32,
28473    pub lds_usage_size_in_bytes: usize,
28474    pub scratch_mem_usage_in_bytes: usize,
28475}
28476
28477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
28478#[repr(C)]
28479#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28480pub struct ShaderStatisticsInfoAMD {
28481    pub shader_stage_mask: ShaderStageFlags,
28482    pub resource_usage: ShaderResourceUsageAMD,
28483    pub num_physical_vgprs: u32,
28484    pub num_physical_sgprs: u32,
28485    pub num_available_vgprs: u32,
28486    pub num_available_sgprs: u32,
28487    pub compute_work_group_size: [u32; 3],
28488}
28489
28490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
28491#[repr(C)]
28492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28493pub struct ShadingRatePaletteNV {
28494    pub shading_rate_palette_entry_count: u32,
28495    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
28496}
28497
28498impl Default for ShadingRatePaletteNV {
28499    #[inline]
28500    fn default() -> Self {
28501        Self {
28502            shading_rate_palette_entry_count: u32::default(),
28503            shading_rate_palette_entries: ptr::null(),
28504        }
28505    }
28506}
28507
28508unsafe impl Send for ShadingRatePaletteNV {}
28509unsafe impl Sync for ShadingRatePaletteNV {}
28510
28511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
28512#[repr(C)]
28513#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28514pub struct SharedPresentSurfaceCapabilitiesKHR {
28515    pub s_type: StructureType,
28516    pub next: *mut c_void,
28517    pub shared_present_supported_usage_flags: ImageUsageFlags,
28518}
28519
28520impl Default for SharedPresentSurfaceCapabilitiesKHR {
28521    #[inline]
28522    fn default() -> Self {
28523        Self {
28524            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
28525            next: ptr::null_mut(),
28526            shared_present_supported_usage_flags: ImageUsageFlags::default(),
28527        }
28528    }
28529}
28530
28531unsafe impl Send for SharedPresentSurfaceCapabilitiesKHR {}
28532unsafe impl Sync for SharedPresentSurfaceCapabilitiesKHR {}
28533
28534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
28535#[repr(C)]
28536#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28537pub struct SparseBufferMemoryBindInfo {
28538    pub buffer: Buffer,
28539    pub bind_count: u32,
28540    pub binds: *const SparseMemoryBind,
28541}
28542
28543impl Default for SparseBufferMemoryBindInfo {
28544    #[inline]
28545    fn default() -> Self {
28546        Self {
28547            buffer: Buffer::default(),
28548            bind_count: u32::default(),
28549            binds: ptr::null(),
28550        }
28551    }
28552}
28553
28554unsafe impl Send for SparseBufferMemoryBindInfo {}
28555unsafe impl Sync for SparseBufferMemoryBindInfo {}
28556
28557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
28558#[repr(C)]
28559#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28560pub struct SparseImageFormatProperties {
28561    pub aspect_mask: ImageAspectFlags,
28562    pub image_granularity: Extent3D,
28563    pub flags: SparseImageFormatFlags,
28564}
28565
28566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
28567#[repr(C)]
28568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28569pub struct SparseImageFormatProperties2 {
28570    pub s_type: StructureType,
28571    pub next: *mut c_void,
28572    pub properties: SparseImageFormatProperties,
28573}
28574
28575impl Default for SparseImageFormatProperties2 {
28576    #[inline]
28577    fn default() -> Self {
28578        Self {
28579            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
28580            next: ptr::null_mut(),
28581            properties: SparseImageFormatProperties::default(),
28582        }
28583    }
28584}
28585
28586unsafe impl Send for SparseImageFormatProperties2 {}
28587unsafe impl Sync for SparseImageFormatProperties2 {}
28588
28589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
28590#[repr(C)]
28591#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28592pub struct SparseImageMemoryBind {
28593    pub subresource: ImageSubresource,
28594    pub offset: Offset3D,
28595    pub extent: Extent3D,
28596    pub memory: DeviceMemory,
28597    pub memory_offset: DeviceSize,
28598    pub flags: SparseMemoryBindFlags,
28599}
28600
28601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
28602#[repr(C)]
28603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28604pub struct SparseImageMemoryBindInfo {
28605    pub image: Image,
28606    pub bind_count: u32,
28607    pub binds: *const SparseImageMemoryBind,
28608}
28609
28610impl Default for SparseImageMemoryBindInfo {
28611    #[inline]
28612    fn default() -> Self {
28613        Self {
28614            image: Image::default(),
28615            bind_count: u32::default(),
28616            binds: ptr::null(),
28617        }
28618    }
28619}
28620
28621unsafe impl Send for SparseImageMemoryBindInfo {}
28622unsafe impl Sync for SparseImageMemoryBindInfo {}
28623
28624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
28625#[repr(C)]
28626#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28627pub struct SparseImageMemoryRequirements {
28628    pub format_properties: SparseImageFormatProperties,
28629    pub image_mip_tail_first_lod: u32,
28630    pub image_mip_tail_size: DeviceSize,
28631    pub image_mip_tail_offset: DeviceSize,
28632    pub image_mip_tail_stride: DeviceSize,
28633}
28634
28635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
28636#[repr(C)]
28637#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28638pub struct SparseImageMemoryRequirements2 {
28639    pub s_type: StructureType,
28640    pub next: *mut c_void,
28641    pub memory_requirements: SparseImageMemoryRequirements,
28642}
28643
28644impl Default for SparseImageMemoryRequirements2 {
28645    #[inline]
28646    fn default() -> Self {
28647        Self {
28648            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
28649            next: ptr::null_mut(),
28650            memory_requirements: SparseImageMemoryRequirements::default(),
28651        }
28652    }
28653}
28654
28655unsafe impl Send for SparseImageMemoryRequirements2 {}
28656unsafe impl Sync for SparseImageMemoryRequirements2 {}
28657
28658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
28659#[repr(C)]
28660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28661pub struct SparseImageOpaqueMemoryBindInfo {
28662    pub image: Image,
28663    pub bind_count: u32,
28664    pub binds: *const SparseMemoryBind,
28665}
28666
28667impl Default for SparseImageOpaqueMemoryBindInfo {
28668    #[inline]
28669    fn default() -> Self {
28670        Self {
28671            image: Image::default(),
28672            bind_count: u32::default(),
28673            binds: ptr::null(),
28674        }
28675    }
28676}
28677
28678unsafe impl Send for SparseImageOpaqueMemoryBindInfo {}
28679unsafe impl Sync for SparseImageOpaqueMemoryBindInfo {}
28680
28681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
28682#[repr(C)]
28683#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28684pub struct SparseMemoryBind {
28685    pub resource_offset: DeviceSize,
28686    pub size: DeviceSize,
28687    pub memory: DeviceMemory,
28688    pub memory_offset: DeviceSize,
28689    pub flags: SparseMemoryBindFlags,
28690}
28691
28692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
28693#[repr(C)]
28694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28695pub struct SpecializationInfo {
28696    pub map_entry_count: u32,
28697    pub map_entries: *const SpecializationMapEntry,
28698    pub data_size: usize,
28699    pub data: *const c_void,
28700}
28701
28702impl Default for SpecializationInfo {
28703    #[inline]
28704    fn default() -> Self {
28705        Self {
28706            map_entry_count: u32::default(),
28707            map_entries: ptr::null(),
28708            data_size: usize::default(),
28709            data: ptr::null(),
28710        }
28711    }
28712}
28713
28714unsafe impl Send for SpecializationInfo {}
28715unsafe impl Sync for SpecializationInfo {}
28716
28717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
28718#[repr(C)]
28719#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28720pub struct SpecializationMapEntry {
28721    pub constant_id: u32,
28722    pub offset: u32,
28723    pub size: usize,
28724}
28725
28726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
28727#[repr(C)]
28728#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28729pub struct StencilOpState {
28730    pub fail_op: StencilOp,
28731    pub pass_op: StencilOp,
28732    pub depth_fail_op: StencilOp,
28733    pub compare_op: CompareOp,
28734    pub compare_mask: u32,
28735    pub write_mask: u32,
28736    pub reference: u32,
28737}
28738
28739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
28740#[repr(C)]
28741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28742pub struct StreamDescriptorSurfaceCreateInfoGGP {
28743    pub s_type: StructureType,
28744    pub next: *const c_void,
28745    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
28746    pub stream_descriptor: GgpStreamDescriptor,
28747}
28748
28749impl Default for StreamDescriptorSurfaceCreateInfoGGP {
28750    #[inline]
28751    fn default() -> Self {
28752        Self {
28753            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
28754            next: ptr::null(),
28755            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
28756            stream_descriptor: GgpStreamDescriptor::default(),
28757        }
28758    }
28759}
28760
28761unsafe impl Send for StreamDescriptorSurfaceCreateInfoGGP {}
28762unsafe impl Sync for StreamDescriptorSurfaceCreateInfoGGP {}
28763
28764/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
28765#[repr(C)]
28766#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28767pub struct StridedDeviceAddressNV {
28768    pub start_address: DeviceAddress,
28769    pub stride_in_bytes: DeviceSize,
28770}
28771
28772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRangeKHR.html>
28773#[repr(C)]
28774#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28775pub struct StridedDeviceAddressRangeKHR {
28776    pub address: DeviceAddress,
28777    pub size: DeviceSize,
28778    pub stride: DeviceSize,
28779}
28780
28781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
28782#[repr(C)]
28783#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28784pub struct StridedDeviceAddressRegionKHR {
28785    pub device_address: DeviceAddress,
28786    pub stride: DeviceSize,
28787    pub size: DeviceSize,
28788}
28789
28790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
28791#[repr(C)]
28792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28793pub struct SubmitInfo {
28794    pub s_type: StructureType,
28795    pub next: *const c_void,
28796    pub wait_semaphore_count: u32,
28797    pub wait_semaphores: *const Semaphore,
28798    pub wait_dst_stage_mask: *const PipelineStageFlags,
28799    pub command_buffer_count: u32,
28800    pub command_buffers: *const CommandBuffer,
28801    pub signal_semaphore_count: u32,
28802    pub signal_semaphores: *const Semaphore,
28803}
28804
28805impl Default for SubmitInfo {
28806    #[inline]
28807    fn default() -> Self {
28808        Self {
28809            s_type: StructureType::SUBMIT_INFO,
28810            next: ptr::null(),
28811            wait_semaphore_count: u32::default(),
28812            wait_semaphores: ptr::null(),
28813            wait_dst_stage_mask: ptr::null(),
28814            command_buffer_count: u32::default(),
28815            command_buffers: ptr::null(),
28816            signal_semaphore_count: u32::default(),
28817            signal_semaphores: ptr::null(),
28818        }
28819    }
28820}
28821
28822unsafe impl Send for SubmitInfo {}
28823unsafe impl Sync for SubmitInfo {}
28824
28825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
28826#[repr(C)]
28827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28828pub struct SubmitInfo2 {
28829    pub s_type: StructureType,
28830    pub next: *const c_void,
28831    pub flags: SubmitFlags,
28832    pub wait_semaphore_info_count: u32,
28833    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
28834    pub command_buffer_info_count: u32,
28835    pub command_buffer_infos: *const CommandBufferSubmitInfo,
28836    pub signal_semaphore_info_count: u32,
28837    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
28838}
28839
28840impl Default for SubmitInfo2 {
28841    #[inline]
28842    fn default() -> Self {
28843        Self {
28844            s_type: StructureType::SUBMIT_INFO_2,
28845            next: ptr::null(),
28846            flags: SubmitFlags::default(),
28847            wait_semaphore_info_count: u32::default(),
28848            wait_semaphore_infos: ptr::null(),
28849            command_buffer_info_count: u32::default(),
28850            command_buffer_infos: ptr::null(),
28851            signal_semaphore_info_count: u32::default(),
28852            signal_semaphore_infos: ptr::null(),
28853        }
28854    }
28855}
28856
28857unsafe impl Send for SubmitInfo2 {}
28858unsafe impl Sync for SubmitInfo2 {}
28859
28860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
28861#[repr(C)]
28862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28863pub struct SubpassBeginInfo {
28864    pub s_type: StructureType,
28865    pub next: *const c_void,
28866    pub contents: SubpassContents,
28867}
28868
28869impl Default for SubpassBeginInfo {
28870    #[inline]
28871    fn default() -> Self {
28872        Self {
28873            s_type: StructureType::SUBPASS_BEGIN_INFO,
28874            next: ptr::null(),
28875            contents: SubpassContents::default(),
28876        }
28877    }
28878}
28879
28880unsafe impl Send for SubpassBeginInfo {}
28881unsafe impl Sync for SubpassBeginInfo {}
28882
28883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
28884#[repr(C)]
28885#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28886pub struct SubpassDependency {
28887    pub src_subpass: u32,
28888    pub dst_subpass: u32,
28889    pub src_stage_mask: PipelineStageFlags,
28890    pub dst_stage_mask: PipelineStageFlags,
28891    pub src_access_mask: AccessFlags,
28892    pub dst_access_mask: AccessFlags,
28893    pub dependency_flags: DependencyFlags,
28894}
28895
28896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
28897#[repr(C)]
28898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28899pub struct SubpassDependency2 {
28900    pub s_type: StructureType,
28901    pub next: *const c_void,
28902    pub src_subpass: u32,
28903    pub dst_subpass: u32,
28904    pub src_stage_mask: PipelineStageFlags,
28905    pub dst_stage_mask: PipelineStageFlags,
28906    pub src_access_mask: AccessFlags,
28907    pub dst_access_mask: AccessFlags,
28908    pub dependency_flags: DependencyFlags,
28909    pub view_offset: i32,
28910}
28911
28912impl Default for SubpassDependency2 {
28913    #[inline]
28914    fn default() -> Self {
28915        Self {
28916            s_type: StructureType::SUBPASS_DEPENDENCY_2,
28917            next: ptr::null(),
28918            src_subpass: u32::default(),
28919            dst_subpass: u32::default(),
28920            src_stage_mask: PipelineStageFlags::default(),
28921            dst_stage_mask: PipelineStageFlags::default(),
28922            src_access_mask: AccessFlags::default(),
28923            dst_access_mask: AccessFlags::default(),
28924            dependency_flags: DependencyFlags::default(),
28925            view_offset: i32::default(),
28926        }
28927    }
28928}
28929
28930unsafe impl Send for SubpassDependency2 {}
28931unsafe impl Sync for SubpassDependency2 {}
28932
28933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
28934#[repr(C)]
28935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28936pub struct SubpassDescription {
28937    pub flags: SubpassDescriptionFlags,
28938    pub pipeline_bind_point: PipelineBindPoint,
28939    pub input_attachment_count: u32,
28940    pub input_attachments: *const AttachmentReference,
28941    pub color_attachment_count: u32,
28942    pub color_attachments: *const AttachmentReference,
28943    pub resolve_attachments: *const AttachmentReference,
28944    pub depth_stencil_attachment: *const AttachmentReference,
28945    pub preserve_attachment_count: u32,
28946    pub preserve_attachments: *const u32,
28947}
28948
28949impl Default for SubpassDescription {
28950    #[inline]
28951    fn default() -> Self {
28952        Self {
28953            flags: SubpassDescriptionFlags::default(),
28954            pipeline_bind_point: PipelineBindPoint::default(),
28955            input_attachment_count: u32::default(),
28956            input_attachments: ptr::null(),
28957            color_attachment_count: u32::default(),
28958            color_attachments: ptr::null(),
28959            resolve_attachments: ptr::null(),
28960            depth_stencil_attachment: ptr::null(),
28961            preserve_attachment_count: u32::default(),
28962            preserve_attachments: ptr::null(),
28963        }
28964    }
28965}
28966
28967unsafe impl Send for SubpassDescription {}
28968unsafe impl Sync for SubpassDescription {}
28969
28970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
28971#[repr(C)]
28972#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28973pub struct SubpassDescription2 {
28974    pub s_type: StructureType,
28975    pub next: *const c_void,
28976    pub flags: SubpassDescriptionFlags,
28977    pub pipeline_bind_point: PipelineBindPoint,
28978    pub view_mask: u32,
28979    pub input_attachment_count: u32,
28980    pub input_attachments: *const AttachmentReference2,
28981    pub color_attachment_count: u32,
28982    pub color_attachments: *const AttachmentReference2,
28983    pub resolve_attachments: *const AttachmentReference2,
28984    pub depth_stencil_attachment: *const AttachmentReference2,
28985    pub preserve_attachment_count: u32,
28986    pub preserve_attachments: *const u32,
28987}
28988
28989impl Default for SubpassDescription2 {
28990    #[inline]
28991    fn default() -> Self {
28992        Self {
28993            s_type: StructureType::SUBPASS_DESCRIPTION_2,
28994            next: ptr::null(),
28995            flags: SubpassDescriptionFlags::default(),
28996            pipeline_bind_point: PipelineBindPoint::default(),
28997            view_mask: u32::default(),
28998            input_attachment_count: u32::default(),
28999            input_attachments: ptr::null(),
29000            color_attachment_count: u32::default(),
29001            color_attachments: ptr::null(),
29002            resolve_attachments: ptr::null(),
29003            depth_stencil_attachment: ptr::null(),
29004            preserve_attachment_count: u32::default(),
29005            preserve_attachments: ptr::null(),
29006        }
29007    }
29008}
29009
29010unsafe impl Send for SubpassDescription2 {}
29011unsafe impl Sync for SubpassDescription2 {}
29012
29013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
29014#[repr(C)]
29015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29016pub struct SubpassDescriptionDepthStencilResolve {
29017    pub s_type: StructureType,
29018    pub next: *const c_void,
29019    pub depth_resolve_mode: ResolveModeFlags,
29020    pub stencil_resolve_mode: ResolveModeFlags,
29021    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
29022}
29023
29024impl Default for SubpassDescriptionDepthStencilResolve {
29025    #[inline]
29026    fn default() -> Self {
29027        Self {
29028            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
29029            next: ptr::null(),
29030            depth_resolve_mode: ResolveModeFlags::default(),
29031            stencil_resolve_mode: ResolveModeFlags::default(),
29032            depth_stencil_resolve_attachment: ptr::null(),
29033        }
29034    }
29035}
29036
29037unsafe impl Send for SubpassDescriptionDepthStencilResolve {}
29038unsafe impl Sync for SubpassDescriptionDepthStencilResolve {}
29039
29040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
29041#[repr(C)]
29042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29043pub struct SubpassEndInfo {
29044    pub s_type: StructureType,
29045    pub next: *const c_void,
29046}
29047
29048impl Default for SubpassEndInfo {
29049    #[inline]
29050    fn default() -> Self {
29051        Self {
29052            s_type: StructureType::SUBPASS_END_INFO,
29053            next: ptr::null(),
29054        }
29055    }
29056}
29057
29058unsafe impl Send for SubpassEndInfo {}
29059unsafe impl Sync for SubpassEndInfo {}
29060
29061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
29062#[repr(C)]
29063#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29064pub struct SubpassResolvePerformanceQueryEXT {
29065    pub s_type: StructureType,
29066    pub next: *mut c_void,
29067    pub optimal: Bool32,
29068}
29069
29070impl Default for SubpassResolvePerformanceQueryEXT {
29071    #[inline]
29072    fn default() -> Self {
29073        Self {
29074            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
29075            next: ptr::null_mut(),
29076            optimal: Bool32::default(),
29077        }
29078    }
29079}
29080
29081unsafe impl Send for SubpassResolvePerformanceQueryEXT {}
29082unsafe impl Sync for SubpassResolvePerformanceQueryEXT {}
29083
29084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
29085#[repr(C)]
29086#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29087pub struct SubpassSampleLocationsEXT {
29088    pub subpass_index: u32,
29089    pub sample_locations_info: SampleLocationsInfoEXT,
29090}
29091
29092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
29093#[repr(C)]
29094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29095pub struct SubpassShadingPipelineCreateInfoHUAWEI {
29096    pub s_type: StructureType,
29097    pub next: *mut c_void,
29098    pub render_pass: RenderPass,
29099    pub subpass: u32,
29100}
29101
29102impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
29103    #[inline]
29104    fn default() -> Self {
29105        Self {
29106            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
29107            next: ptr::null_mut(),
29108            render_pass: RenderPass::default(),
29109            subpass: u32::default(),
29110        }
29111    }
29112}
29113
29114unsafe impl Send for SubpassShadingPipelineCreateInfoHUAWEI {}
29115unsafe impl Sync for SubpassShadingPipelineCreateInfoHUAWEI {}
29116
29117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
29118#[repr(C)]
29119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29120pub struct SubresourceHostMemcpySize {
29121    pub s_type: StructureType,
29122    pub next: *mut c_void,
29123    pub size: DeviceSize,
29124}
29125
29126impl Default for SubresourceHostMemcpySize {
29127    #[inline]
29128    fn default() -> Self {
29129        Self {
29130            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
29131            next: ptr::null_mut(),
29132            size: DeviceSize::default(),
29133        }
29134    }
29135}
29136
29137unsafe impl Send for SubresourceHostMemcpySize {}
29138unsafe impl Sync for SubresourceHostMemcpySize {}
29139
29140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
29141#[repr(C)]
29142#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29143pub struct SubresourceLayout {
29144    pub offset: DeviceSize,
29145    pub size: DeviceSize,
29146    pub row_pitch: DeviceSize,
29147    pub array_pitch: DeviceSize,
29148    pub depth_pitch: DeviceSize,
29149}
29150
29151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
29152#[repr(C)]
29153#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29154pub struct SubresourceLayout2 {
29155    pub s_type: StructureType,
29156    pub next: *mut c_void,
29157    pub subresource_layout: SubresourceLayout,
29158}
29159
29160impl Default for SubresourceLayout2 {
29161    #[inline]
29162    fn default() -> Self {
29163        Self {
29164            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
29165            next: ptr::null_mut(),
29166            subresource_layout: SubresourceLayout::default(),
29167        }
29168    }
29169}
29170
29171unsafe impl Send for SubresourceLayout2 {}
29172unsafe impl Sync for SubresourceLayout2 {}
29173
29174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
29175#[repr(C)]
29176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29177pub struct SurfaceCapabilities2EXT {
29178    pub s_type: StructureType,
29179    pub next: *mut c_void,
29180    pub min_image_count: u32,
29181    pub max_image_count: u32,
29182    pub current_extent: Extent2D,
29183    pub min_image_extent: Extent2D,
29184    pub max_image_extent: Extent2D,
29185    pub max_image_array_layers: u32,
29186    pub supported_transforms: SurfaceTransformFlagsKHR,
29187    pub current_transform: SurfaceTransformFlagsKHR,
29188    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
29189    pub supported_usage_flags: ImageUsageFlags,
29190    pub supported_surface_counters: SurfaceCounterFlagsEXT,
29191}
29192
29193impl Default for SurfaceCapabilities2EXT {
29194    #[inline]
29195    fn default() -> Self {
29196        Self {
29197            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
29198            next: ptr::null_mut(),
29199            min_image_count: u32::default(),
29200            max_image_count: u32::default(),
29201            current_extent: Extent2D::default(),
29202            min_image_extent: Extent2D::default(),
29203            max_image_extent: Extent2D::default(),
29204            max_image_array_layers: u32::default(),
29205            supported_transforms: SurfaceTransformFlagsKHR::default(),
29206            current_transform: SurfaceTransformFlagsKHR::default(),
29207            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
29208            supported_usage_flags: ImageUsageFlags::default(),
29209            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
29210        }
29211    }
29212}
29213
29214unsafe impl Send for SurfaceCapabilities2EXT {}
29215unsafe impl Sync for SurfaceCapabilities2EXT {}
29216
29217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
29218#[repr(C)]
29219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29220pub struct SurfaceCapabilities2KHR {
29221    pub s_type: StructureType,
29222    pub next: *mut c_void,
29223    pub surface_capabilities: SurfaceCapabilitiesKHR,
29224}
29225
29226impl Default for SurfaceCapabilities2KHR {
29227    #[inline]
29228    fn default() -> Self {
29229        Self {
29230            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
29231            next: ptr::null_mut(),
29232            surface_capabilities: SurfaceCapabilitiesKHR::default(),
29233        }
29234    }
29235}
29236
29237unsafe impl Send for SurfaceCapabilities2KHR {}
29238unsafe impl Sync for SurfaceCapabilities2KHR {}
29239
29240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
29241#[repr(C)]
29242#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29243pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
29244    pub s_type: StructureType,
29245    pub next: *mut c_void,
29246    pub full_screen_exclusive_supported: Bool32,
29247}
29248
29249impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
29250    #[inline]
29251    fn default() -> Self {
29252        Self {
29253            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
29254            next: ptr::null_mut(),
29255            full_screen_exclusive_supported: Bool32::default(),
29256        }
29257    }
29258}
29259
29260unsafe impl Send for SurfaceCapabilitiesFullScreenExclusiveEXT {}
29261unsafe impl Sync for SurfaceCapabilitiesFullScreenExclusiveEXT {}
29262
29263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
29264#[repr(C)]
29265#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29266pub struct SurfaceCapabilitiesKHR {
29267    pub min_image_count: u32,
29268    pub max_image_count: u32,
29269    pub current_extent: Extent2D,
29270    pub min_image_extent: Extent2D,
29271    pub max_image_extent: Extent2D,
29272    pub max_image_array_layers: u32,
29273    pub supported_transforms: SurfaceTransformFlagsKHR,
29274    pub current_transform: SurfaceTransformFlagsKHR,
29275    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
29276    pub supported_usage_flags: ImageUsageFlags,
29277}
29278
29279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
29280#[repr(C)]
29281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29282pub struct SurfaceCapabilitiesPresentBarrierNV {
29283    pub s_type: StructureType,
29284    pub next: *mut c_void,
29285    pub present_barrier_supported: Bool32,
29286}
29287
29288impl Default for SurfaceCapabilitiesPresentBarrierNV {
29289    #[inline]
29290    fn default() -> Self {
29291        Self {
29292            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
29293            next: ptr::null_mut(),
29294            present_barrier_supported: Bool32::default(),
29295        }
29296    }
29297}
29298
29299unsafe impl Send for SurfaceCapabilitiesPresentBarrierNV {}
29300unsafe impl Sync for SurfaceCapabilitiesPresentBarrierNV {}
29301
29302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html>
29303#[repr(C)]
29304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29305pub struct SurfaceCapabilitiesPresentId2KHR {
29306    pub s_type: StructureType,
29307    pub next: *mut c_void,
29308    pub present_id2_supported: Bool32,
29309}
29310
29311impl Default for SurfaceCapabilitiesPresentId2KHR {
29312    #[inline]
29313    fn default() -> Self {
29314        Self {
29315            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR,
29316            next: ptr::null_mut(),
29317            present_id2_supported: Bool32::default(),
29318        }
29319    }
29320}
29321
29322unsafe impl Send for SurfaceCapabilitiesPresentId2KHR {}
29323unsafe impl Sync for SurfaceCapabilitiesPresentId2KHR {}
29324
29325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html>
29326#[repr(C)]
29327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29328pub struct SurfaceCapabilitiesPresentWait2KHR {
29329    pub s_type: StructureType,
29330    pub next: *mut c_void,
29331    pub present_wait2_supported: Bool32,
29332}
29333
29334impl Default for SurfaceCapabilitiesPresentWait2KHR {
29335    #[inline]
29336    fn default() -> Self {
29337        Self {
29338            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR,
29339            next: ptr::null_mut(),
29340            present_wait2_supported: Bool32::default(),
29341        }
29342    }
29343}
29344
29345unsafe impl Send for SurfaceCapabilitiesPresentWait2KHR {}
29346unsafe impl Sync for SurfaceCapabilitiesPresentWait2KHR {}
29347
29348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html>
29349#[repr(C)]
29350#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29351pub struct SurfaceCreateInfoOHOS {
29352    pub s_type: StructureType,
29353    pub next: *const c_void,
29354    pub flags: SurfaceCreateFlagsOHOS,
29355    pub window: *mut OHNativeWindow,
29356}
29357
29358impl Default for SurfaceCreateInfoOHOS {
29359    #[inline]
29360    fn default() -> Self {
29361        Self {
29362            s_type: StructureType::SURFACE_CREATE_INFO_OHOS,
29363            next: ptr::null(),
29364            flags: SurfaceCreateFlagsOHOS::default(),
29365            window: ptr::null_mut(),
29366        }
29367    }
29368}
29369
29370unsafe impl Send for SurfaceCreateInfoOHOS {}
29371unsafe impl Sync for SurfaceCreateInfoOHOS {}
29372
29373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
29374#[repr(C)]
29375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29376pub struct SurfaceFormat2KHR {
29377    pub s_type: StructureType,
29378    pub next: *mut c_void,
29379    pub surface_format: SurfaceFormatKHR,
29380}
29381
29382impl Default for SurfaceFormat2KHR {
29383    #[inline]
29384    fn default() -> Self {
29385        Self {
29386            s_type: StructureType::SURFACE_FORMAT_2_KHR,
29387            next: ptr::null_mut(),
29388            surface_format: SurfaceFormatKHR::default(),
29389        }
29390    }
29391}
29392
29393unsafe impl Send for SurfaceFormat2KHR {}
29394unsafe impl Sync for SurfaceFormat2KHR {}
29395
29396/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
29397#[repr(C)]
29398#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29399pub struct SurfaceFormatKHR {
29400    pub format: Format,
29401    pub color_space: ColorSpaceKHR,
29402}
29403
29404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
29405#[repr(C)]
29406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29407pub struct SurfaceFullScreenExclusiveInfoEXT {
29408    pub s_type: StructureType,
29409    pub next: *mut c_void,
29410    pub full_screen_exclusive: FullScreenExclusiveEXT,
29411}
29412
29413impl Default for SurfaceFullScreenExclusiveInfoEXT {
29414    #[inline]
29415    fn default() -> Self {
29416        Self {
29417            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
29418            next: ptr::null_mut(),
29419            full_screen_exclusive: FullScreenExclusiveEXT::default(),
29420        }
29421    }
29422}
29423
29424unsafe impl Send for SurfaceFullScreenExclusiveInfoEXT {}
29425unsafe impl Sync for SurfaceFullScreenExclusiveInfoEXT {}
29426
29427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
29428#[repr(C)]
29429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29430pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
29431    pub s_type: StructureType,
29432    pub next: *const c_void,
29433    pub hmonitor: HMONITOR,
29434}
29435
29436impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
29437    #[inline]
29438    fn default() -> Self {
29439        Self {
29440            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
29441            next: ptr::null(),
29442            hmonitor: ptr::null_mut(),
29443        }
29444    }
29445}
29446
29447unsafe impl Send for SurfaceFullScreenExclusiveWin32InfoEXT {}
29448unsafe impl Sync for SurfaceFullScreenExclusiveWin32InfoEXT {}
29449
29450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html>
29451#[repr(C)]
29452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29453pub struct SurfacePresentModeCompatibilityKHR {
29454    pub s_type: StructureType,
29455    pub next: *mut c_void,
29456    pub present_mode_count: u32,
29457    pub present_modes: *mut PresentModeKHR,
29458}
29459
29460impl Default for SurfacePresentModeCompatibilityKHR {
29461    #[inline]
29462    fn default() -> Self {
29463        Self {
29464            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,
29465            next: ptr::null_mut(),
29466            present_mode_count: u32::default(),
29467            present_modes: ptr::null_mut(),
29468        }
29469    }
29470}
29471
29472unsafe impl Send for SurfacePresentModeCompatibilityKHR {}
29473unsafe impl Sync for SurfacePresentModeCompatibilityKHR {}
29474
29475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html>
29476#[repr(C)]
29477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29478pub struct SurfacePresentModeKHR {
29479    pub s_type: StructureType,
29480    pub next: *mut c_void,
29481    pub present_mode: PresentModeKHR,
29482}
29483
29484impl Default for SurfacePresentModeKHR {
29485    #[inline]
29486    fn default() -> Self {
29487        Self {
29488            s_type: StructureType::SURFACE_PRESENT_MODE_KHR,
29489            next: ptr::null_mut(),
29490            present_mode: PresentModeKHR::default(),
29491        }
29492    }
29493}
29494
29495unsafe impl Send for SurfacePresentModeKHR {}
29496unsafe impl Sync for SurfacePresentModeKHR {}
29497
29498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html>
29499#[repr(C)]
29500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29501pub struct SurfacePresentScalingCapabilitiesKHR {
29502    pub s_type: StructureType,
29503    pub next: *mut c_void,
29504    pub supported_present_scaling: PresentScalingFlagsKHR,
29505    pub supported_present_gravity_x: PresentGravityFlagsKHR,
29506    pub supported_present_gravity_y: PresentGravityFlagsKHR,
29507    pub min_scaled_image_extent: Extent2D,
29508    pub max_scaled_image_extent: Extent2D,
29509}
29510
29511impl Default for SurfacePresentScalingCapabilitiesKHR {
29512    #[inline]
29513    fn default() -> Self {
29514        Self {
29515            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,
29516            next: ptr::null_mut(),
29517            supported_present_scaling: PresentScalingFlagsKHR::default(),
29518            supported_present_gravity_x: PresentGravityFlagsKHR::default(),
29519            supported_present_gravity_y: PresentGravityFlagsKHR::default(),
29520            min_scaled_image_extent: Extent2D::default(),
29521            max_scaled_image_extent: Extent2D::default(),
29522        }
29523    }
29524}
29525
29526unsafe impl Send for SurfacePresentScalingCapabilitiesKHR {}
29527unsafe impl Sync for SurfacePresentScalingCapabilitiesKHR {}
29528
29529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
29530#[repr(C)]
29531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29532pub struct SurfaceProtectedCapabilitiesKHR {
29533    pub s_type: StructureType,
29534    pub next: *mut c_void,
29535    pub supports_protected: Bool32,
29536}
29537
29538impl Default for SurfaceProtectedCapabilitiesKHR {
29539    #[inline]
29540    fn default() -> Self {
29541        Self {
29542            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
29543            next: ptr::null_mut(),
29544            supports_protected: Bool32::default(),
29545        }
29546    }
29547}
29548
29549unsafe impl Send for SurfaceProtectedCapabilitiesKHR {}
29550unsafe impl Sync for SurfaceProtectedCapabilitiesKHR {}
29551
29552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCalibratedTimestampInfoEXT.html>
29553#[repr(C)]
29554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29555pub struct SwapchainCalibratedTimestampInfoEXT {
29556    pub s_type: StructureType,
29557    pub next: *const c_void,
29558    pub swapchain: SwapchainKHR,
29559    pub present_stage: PresentStageFlagsEXT,
29560    pub time_domain_id: u64,
29561}
29562
29563impl Default for SwapchainCalibratedTimestampInfoEXT {
29564    #[inline]
29565    fn default() -> Self {
29566        Self {
29567            s_type: StructureType::SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT,
29568            next: ptr::null(),
29569            swapchain: SwapchainKHR::default(),
29570            present_stage: PresentStageFlagsEXT::default(),
29571            time_domain_id: u64::default(),
29572        }
29573    }
29574}
29575
29576unsafe impl Send for SwapchainCalibratedTimestampInfoEXT {}
29577unsafe impl Sync for SwapchainCalibratedTimestampInfoEXT {}
29578
29579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
29580#[repr(C)]
29581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29582pub struct SwapchainCounterCreateInfoEXT {
29583    pub s_type: StructureType,
29584    pub next: *const c_void,
29585    pub surface_counters: SurfaceCounterFlagsEXT,
29586}
29587
29588impl Default for SwapchainCounterCreateInfoEXT {
29589    #[inline]
29590    fn default() -> Self {
29591        Self {
29592            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
29593            next: ptr::null(),
29594            surface_counters: SurfaceCounterFlagsEXT::default(),
29595        }
29596    }
29597}
29598
29599unsafe impl Send for SwapchainCounterCreateInfoEXT {}
29600unsafe impl Sync for SwapchainCounterCreateInfoEXT {}
29601
29602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
29603#[repr(C)]
29604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29605pub struct SwapchainCreateInfoKHR {
29606    pub s_type: StructureType,
29607    pub next: *const c_void,
29608    pub flags: SwapchainCreateFlagsKHR,
29609    pub surface: SurfaceKHR,
29610    pub min_image_count: u32,
29611    pub image_format: Format,
29612    pub image_color_space: ColorSpaceKHR,
29613    pub image_extent: Extent2D,
29614    pub image_array_layers: u32,
29615    pub image_usage: ImageUsageFlags,
29616    pub image_sharing_mode: SharingMode,
29617    pub queue_family_index_count: u32,
29618    pub queue_family_indices: *const u32,
29619    pub pre_transform: SurfaceTransformFlagsKHR,
29620    pub composite_alpha: CompositeAlphaFlagsKHR,
29621    pub present_mode: PresentModeKHR,
29622    pub clipped: Bool32,
29623    pub old_swapchain: SwapchainKHR,
29624}
29625
29626impl Default for SwapchainCreateInfoKHR {
29627    #[inline]
29628    fn default() -> Self {
29629        Self {
29630            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
29631            next: ptr::null(),
29632            flags: SwapchainCreateFlagsKHR::default(),
29633            surface: SurfaceKHR::default(),
29634            min_image_count: u32::default(),
29635            image_format: Format::default(),
29636            image_color_space: ColorSpaceKHR::default(),
29637            image_extent: Extent2D::default(),
29638            image_array_layers: u32::default(),
29639            image_usage: ImageUsageFlags::default(),
29640            image_sharing_mode: SharingMode::default(),
29641            queue_family_index_count: u32::default(),
29642            queue_family_indices: ptr::null(),
29643            pre_transform: SurfaceTransformFlagsKHR::default(),
29644            composite_alpha: CompositeAlphaFlagsKHR::default(),
29645            present_mode: PresentModeKHR::default(),
29646            clipped: Bool32::default(),
29647            old_swapchain: SwapchainKHR::default(),
29648        }
29649    }
29650}
29651
29652unsafe impl Send for SwapchainCreateInfoKHR {}
29653unsafe impl Sync for SwapchainCreateInfoKHR {}
29654
29655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
29656#[repr(C)]
29657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29658pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
29659    pub s_type: StructureType,
29660    pub next: *const c_void,
29661    pub local_dimming_enable: Bool32,
29662}
29663
29664impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
29665    #[inline]
29666    fn default() -> Self {
29667        Self {
29668            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
29669            next: ptr::null(),
29670            local_dimming_enable: Bool32::default(),
29671        }
29672    }
29673}
29674
29675unsafe impl Send for SwapchainDisplayNativeHdrCreateInfoAMD {}
29676unsafe impl Sync for SwapchainDisplayNativeHdrCreateInfoAMD {}
29677
29678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
29679#[repr(C)]
29680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29681pub struct SwapchainLatencyCreateInfoNV {
29682    pub s_type: StructureType,
29683    pub next: *const c_void,
29684    pub latency_mode_enable: Bool32,
29685}
29686
29687impl Default for SwapchainLatencyCreateInfoNV {
29688    #[inline]
29689    fn default() -> Self {
29690        Self {
29691            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
29692            next: ptr::null(),
29693            latency_mode_enable: Bool32::default(),
29694        }
29695    }
29696}
29697
29698unsafe impl Send for SwapchainLatencyCreateInfoNV {}
29699unsafe impl Sync for SwapchainLatencyCreateInfoNV {}
29700
29701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
29702#[repr(C)]
29703#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29704pub struct SwapchainPresentBarrierCreateInfoNV {
29705    pub s_type: StructureType,
29706    pub next: *mut c_void,
29707    pub present_barrier_enable: Bool32,
29708}
29709
29710impl Default for SwapchainPresentBarrierCreateInfoNV {
29711    #[inline]
29712    fn default() -> Self {
29713        Self {
29714            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
29715            next: ptr::null_mut(),
29716            present_barrier_enable: Bool32::default(),
29717        }
29718    }
29719}
29720
29721unsafe impl Send for SwapchainPresentBarrierCreateInfoNV {}
29722unsafe impl Sync for SwapchainPresentBarrierCreateInfoNV {}
29723
29724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html>
29725#[repr(C)]
29726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29727pub struct SwapchainPresentFenceInfoKHR {
29728    pub s_type: StructureType,
29729    pub next: *const c_void,
29730    pub swapchain_count: u32,
29731    pub fences: *const Fence,
29732}
29733
29734impl Default for SwapchainPresentFenceInfoKHR {
29735    #[inline]
29736    fn default() -> Self {
29737        Self {
29738            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR,
29739            next: ptr::null(),
29740            swapchain_count: u32::default(),
29741            fences: ptr::null(),
29742        }
29743    }
29744}
29745
29746unsafe impl Send for SwapchainPresentFenceInfoKHR {}
29747unsafe impl Sync for SwapchainPresentFenceInfoKHR {}
29748
29749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html>
29750#[repr(C)]
29751#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29752pub struct SwapchainPresentModeInfoKHR {
29753    pub s_type: StructureType,
29754    pub next: *const c_void,
29755    pub swapchain_count: u32,
29756    pub present_modes: *const PresentModeKHR,
29757}
29758
29759impl Default for SwapchainPresentModeInfoKHR {
29760    #[inline]
29761    fn default() -> Self {
29762        Self {
29763            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR,
29764            next: ptr::null(),
29765            swapchain_count: u32::default(),
29766            present_modes: ptr::null(),
29767        }
29768    }
29769}
29770
29771unsafe impl Send for SwapchainPresentModeInfoKHR {}
29772unsafe impl Sync for SwapchainPresentModeInfoKHR {}
29773
29774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html>
29775#[repr(C)]
29776#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29777pub struct SwapchainPresentModesCreateInfoKHR {
29778    pub s_type: StructureType,
29779    pub next: *const c_void,
29780    pub present_mode_count: u32,
29781    pub present_modes: *const PresentModeKHR,
29782}
29783
29784impl Default for SwapchainPresentModesCreateInfoKHR {
29785    #[inline]
29786    fn default() -> Self {
29787        Self {
29788            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,
29789            next: ptr::null(),
29790            present_mode_count: u32::default(),
29791            present_modes: ptr::null(),
29792        }
29793    }
29794}
29795
29796unsafe impl Send for SwapchainPresentModesCreateInfoKHR {}
29797unsafe impl Sync for SwapchainPresentModesCreateInfoKHR {}
29798
29799/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html>
29800#[repr(C)]
29801#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29802pub struct SwapchainPresentScalingCreateInfoKHR {
29803    pub s_type: StructureType,
29804    pub next: *const c_void,
29805    pub scaling_behavior: PresentScalingFlagsKHR,
29806    pub present_gravity_x: PresentGravityFlagsKHR,
29807    pub present_gravity_y: PresentGravityFlagsKHR,
29808}
29809
29810impl Default for SwapchainPresentScalingCreateInfoKHR {
29811    #[inline]
29812    fn default() -> Self {
29813        Self {
29814            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,
29815            next: ptr::null(),
29816            scaling_behavior: PresentScalingFlagsKHR::default(),
29817            present_gravity_x: PresentGravityFlagsKHR::default(),
29818            present_gravity_y: PresentGravityFlagsKHR::default(),
29819        }
29820    }
29821}
29822
29823unsafe impl Send for SwapchainPresentScalingCreateInfoKHR {}
29824unsafe impl Sync for SwapchainPresentScalingCreateInfoKHR {}
29825
29826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainTimeDomainPropertiesEXT.html>
29827#[repr(C)]
29828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29829pub struct SwapchainTimeDomainPropertiesEXT {
29830    pub s_type: StructureType,
29831    pub next: *mut c_void,
29832    pub time_domain_count: u32,
29833    pub time_domains: *mut TimeDomainKHR,
29834    pub time_domain_ids: *mut u64,
29835}
29836
29837impl Default for SwapchainTimeDomainPropertiesEXT {
29838    #[inline]
29839    fn default() -> Self {
29840        Self {
29841            s_type: StructureType::SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT,
29842            next: ptr::null_mut(),
29843            time_domain_count: u32::default(),
29844            time_domains: ptr::null_mut(),
29845            time_domain_ids: ptr::null_mut(),
29846        }
29847    }
29848}
29849
29850unsafe impl Send for SwapchainTimeDomainPropertiesEXT {}
29851unsafe impl Sync for SwapchainTimeDomainPropertiesEXT {}
29852
29853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainTimingPropertiesEXT.html>
29854#[repr(C)]
29855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29856pub struct SwapchainTimingPropertiesEXT {
29857    pub s_type: StructureType,
29858    pub next: *mut c_void,
29859    pub refresh_duration: u64,
29860    pub refresh_interval: u64,
29861}
29862
29863impl Default for SwapchainTimingPropertiesEXT {
29864    #[inline]
29865    fn default() -> Self {
29866        Self {
29867            s_type: StructureType::SWAPCHAIN_TIMING_PROPERTIES_EXT,
29868            next: ptr::null_mut(),
29869            refresh_duration: u64::default(),
29870            refresh_interval: u64::default(),
29871        }
29872    }
29873}
29874
29875unsafe impl Send for SwapchainTimingPropertiesEXT {}
29876unsafe impl Sync for SwapchainTimingPropertiesEXT {}
29877
29878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
29879#[repr(C)]
29880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29881pub struct SysmemColorSpaceFUCHSIA {
29882    pub s_type: StructureType,
29883    pub next: *const c_void,
29884    pub color_space: u32,
29885}
29886
29887impl Default for SysmemColorSpaceFUCHSIA {
29888    #[inline]
29889    fn default() -> Self {
29890        Self {
29891            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
29892            next: ptr::null(),
29893            color_space: u32::default(),
29894        }
29895    }
29896}
29897
29898unsafe impl Send for SysmemColorSpaceFUCHSIA {}
29899unsafe impl Sync for SysmemColorSpaceFUCHSIA {}
29900
29901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html>
29902#[repr(C)]
29903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29904pub struct TensorCaptureDescriptorDataInfoARM {
29905    pub s_type: StructureType,
29906    pub next: *const c_void,
29907    pub tensor: TensorARM,
29908}
29909
29910impl Default for TensorCaptureDescriptorDataInfoARM {
29911    #[inline]
29912    fn default() -> Self {
29913        Self {
29914            s_type: StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
29915            next: ptr::null(),
29916            tensor: TensorARM::default(),
29917        }
29918    }
29919}
29920
29921unsafe impl Send for TensorCaptureDescriptorDataInfoARM {}
29922unsafe impl Sync for TensorCaptureDescriptorDataInfoARM {}
29923
29924/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCopyARM.html>
29925#[repr(C)]
29926#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29927pub struct TensorCopyARM {
29928    pub s_type: StructureType,
29929    pub next: *const c_void,
29930    pub dimension_count: u32,
29931    pub src_offset: *const u64,
29932    pub dst_offset: *const u64,
29933    pub extent: *const u64,
29934}
29935
29936impl Default for TensorCopyARM {
29937    #[inline]
29938    fn default() -> Self {
29939        Self {
29940            s_type: StructureType::TENSOR_COPY_ARM,
29941            next: ptr::null(),
29942            dimension_count: u32::default(),
29943            src_offset: ptr::null(),
29944            dst_offset: ptr::null(),
29945            extent: ptr::null(),
29946        }
29947    }
29948}
29949
29950unsafe impl Send for TensorCopyARM {}
29951unsafe impl Sync for TensorCopyARM {}
29952
29953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html>
29954#[repr(C)]
29955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29956pub struct TensorCreateInfoARM {
29957    pub s_type: StructureType,
29958    pub next: *const c_void,
29959    pub flags: TensorCreateFlagsARM,
29960    pub description: *const TensorDescriptionARM,
29961    pub sharing_mode: SharingMode,
29962    pub queue_family_index_count: u32,
29963    pub queue_family_indices: *const u32,
29964}
29965
29966impl Default for TensorCreateInfoARM {
29967    #[inline]
29968    fn default() -> Self {
29969        Self {
29970            s_type: StructureType::TENSOR_CREATE_INFO_ARM,
29971            next: ptr::null(),
29972            flags: TensorCreateFlagsARM::default(),
29973            description: ptr::null(),
29974            sharing_mode: SharingMode::default(),
29975            queue_family_index_count: u32::default(),
29976            queue_family_indices: ptr::null(),
29977        }
29978    }
29979}
29980
29981unsafe impl Send for TensorCreateInfoARM {}
29982unsafe impl Sync for TensorCreateInfoARM {}
29983
29984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html>
29985#[repr(C)]
29986#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29987pub struct TensorDependencyInfoARM {
29988    pub s_type: StructureType,
29989    pub next: *const c_void,
29990    pub tensor_memory_barrier_count: u32,
29991    pub tensor_memory_barriers: *const TensorMemoryBarrierARM,
29992}
29993
29994impl Default for TensorDependencyInfoARM {
29995    #[inline]
29996    fn default() -> Self {
29997        Self {
29998            s_type: StructureType::TENSOR_DEPENDENCY_INFO_ARM,
29999            next: ptr::null(),
30000            tensor_memory_barrier_count: u32::default(),
30001            tensor_memory_barriers: ptr::null(),
30002        }
30003    }
30004}
30005
30006unsafe impl Send for TensorDependencyInfoARM {}
30007unsafe impl Sync for TensorDependencyInfoARM {}
30008
30009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html>
30010#[repr(C)]
30011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30012pub struct TensorDescriptionARM {
30013    pub s_type: StructureType,
30014    pub next: *const c_void,
30015    pub tiling: TensorTilingARM,
30016    pub format: Format,
30017    pub dimension_count: u32,
30018    pub dimensions: *const i64,
30019    pub strides: *const i64,
30020    pub usage: TensorUsageFlagsARM,
30021}
30022
30023impl Default for TensorDescriptionARM {
30024    #[inline]
30025    fn default() -> Self {
30026        Self {
30027            s_type: StructureType::TENSOR_DESCRIPTION_ARM,
30028            next: ptr::null(),
30029            tiling: TensorTilingARM::default(),
30030            format: Format::default(),
30031            dimension_count: u32::default(),
30032            dimensions: ptr::null(),
30033            strides: ptr::null(),
30034            usage: TensorUsageFlagsARM::default(),
30035        }
30036    }
30037}
30038
30039unsafe impl Send for TensorDescriptionARM {}
30040unsafe impl Sync for TensorDescriptionARM {}
30041
30042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html>
30043#[repr(C)]
30044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30045pub struct TensorFormatPropertiesARM {
30046    pub s_type: StructureType,
30047    pub next: *mut c_void,
30048    pub optimal_tiling_tensor_features: FormatFeatureFlags2,
30049    pub linear_tiling_tensor_features: FormatFeatureFlags2,
30050}
30051
30052impl Default for TensorFormatPropertiesARM {
30053    #[inline]
30054    fn default() -> Self {
30055        Self {
30056            s_type: StructureType::TENSOR_FORMAT_PROPERTIES_ARM,
30057            next: ptr::null_mut(),
30058            optimal_tiling_tensor_features: FormatFeatureFlags2::default(),
30059            linear_tiling_tensor_features: FormatFeatureFlags2::default(),
30060        }
30061    }
30062}
30063
30064unsafe impl Send for TensorFormatPropertiesARM {}
30065unsafe impl Sync for TensorFormatPropertiesARM {}
30066
30067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html>
30068#[repr(C)]
30069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30070pub struct TensorMemoryBarrierARM {
30071    pub s_type: StructureType,
30072    pub next: *const c_void,
30073    pub src_stage_mask: PipelineStageFlags2,
30074    pub src_access_mask: AccessFlags2,
30075    pub dst_stage_mask: PipelineStageFlags2,
30076    pub dst_access_mask: AccessFlags2,
30077    pub src_queue_family_index: u32,
30078    pub dst_queue_family_index: u32,
30079    pub tensor: TensorARM,
30080}
30081
30082impl Default for TensorMemoryBarrierARM {
30083    #[inline]
30084    fn default() -> Self {
30085        Self {
30086            s_type: StructureType::TENSOR_MEMORY_BARRIER_ARM,
30087            next: ptr::null(),
30088            src_stage_mask: PipelineStageFlags2::default(),
30089            src_access_mask: AccessFlags2::default(),
30090            dst_stage_mask: PipelineStageFlags2::default(),
30091            dst_access_mask: AccessFlags2::default(),
30092            src_queue_family_index: u32::default(),
30093            dst_queue_family_index: u32::default(),
30094            tensor: TensorARM::default(),
30095        }
30096    }
30097}
30098
30099unsafe impl Send for TensorMemoryBarrierARM {}
30100unsafe impl Sync for TensorMemoryBarrierARM {}
30101
30102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html>
30103#[repr(C)]
30104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30105pub struct TensorMemoryRequirementsInfoARM {
30106    pub s_type: StructureType,
30107    pub next: *const c_void,
30108    pub tensor: TensorARM,
30109}
30110
30111impl Default for TensorMemoryRequirementsInfoARM {
30112    #[inline]
30113    fn default() -> Self {
30114        Self {
30115            s_type: StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM,
30116            next: ptr::null(),
30117            tensor: TensorARM::default(),
30118        }
30119    }
30120}
30121
30122unsafe impl Send for TensorMemoryRequirementsInfoARM {}
30123unsafe impl Sync for TensorMemoryRequirementsInfoARM {}
30124
30125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html>
30126#[repr(C)]
30127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30128pub struct TensorViewCaptureDescriptorDataInfoARM {
30129    pub s_type: StructureType,
30130    pub next: *const c_void,
30131    pub tensor_view: TensorViewARM,
30132}
30133
30134impl Default for TensorViewCaptureDescriptorDataInfoARM {
30135    #[inline]
30136    fn default() -> Self {
30137        Self {
30138            s_type: StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
30139            next: ptr::null(),
30140            tensor_view: TensorViewARM::default(),
30141        }
30142    }
30143}
30144
30145unsafe impl Send for TensorViewCaptureDescriptorDataInfoARM {}
30146unsafe impl Sync for TensorViewCaptureDescriptorDataInfoARM {}
30147
30148/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html>
30149#[repr(C)]
30150#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30151pub struct TensorViewCreateInfoARM {
30152    pub s_type: StructureType,
30153    pub next: *const c_void,
30154    pub flags: TensorViewCreateFlagsARM,
30155    pub tensor: TensorARM,
30156    pub format: Format,
30157}
30158
30159impl Default for TensorViewCreateInfoARM {
30160    #[inline]
30161    fn default() -> Self {
30162        Self {
30163            s_type: StructureType::TENSOR_VIEW_CREATE_INFO_ARM,
30164            next: ptr::null(),
30165            flags: TensorViewCreateFlagsARM::default(),
30166            tensor: TensorARM::default(),
30167            format: Format::default(),
30168        }
30169    }
30170}
30171
30172unsafe impl Send for TensorViewCreateInfoARM {}
30173unsafe impl Sync for TensorViewCreateInfoARM {}
30174
30175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
30176#[repr(C)]
30177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30178pub struct TextureLODGatherFormatPropertiesAMD {
30179    pub s_type: StructureType,
30180    pub next: *mut c_void,
30181    pub supports_texture_gather_lod_bias_amd: Bool32,
30182}
30183
30184impl Default for TextureLODGatherFormatPropertiesAMD {
30185    #[inline]
30186    fn default() -> Self {
30187        Self {
30188            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
30189            next: ptr::null_mut(),
30190            supports_texture_gather_lod_bias_amd: Bool32::default(),
30191        }
30192    }
30193}
30194
30195unsafe impl Send for TextureLODGatherFormatPropertiesAMD {}
30196unsafe impl Sync for TextureLODGatherFormatPropertiesAMD {}
30197
30198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html>
30199#[repr(C)]
30200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30201pub struct TileMemoryBindInfoQCOM {
30202    pub s_type: StructureType,
30203    pub next: *const c_void,
30204    pub memory: DeviceMemory,
30205}
30206
30207impl Default for TileMemoryBindInfoQCOM {
30208    #[inline]
30209    fn default() -> Self {
30210        Self {
30211            s_type: StructureType::TILE_MEMORY_BIND_INFO_QCOM,
30212            next: ptr::null(),
30213            memory: DeviceMemory::default(),
30214        }
30215    }
30216}
30217
30218unsafe impl Send for TileMemoryBindInfoQCOM {}
30219unsafe impl Sync for TileMemoryBindInfoQCOM {}
30220
30221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html>
30222#[repr(C)]
30223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30224pub struct TileMemoryRequirementsQCOM {
30225    pub s_type: StructureType,
30226    pub next: *mut c_void,
30227    pub size: DeviceSize,
30228    pub alignment: DeviceSize,
30229}
30230
30231impl Default for TileMemoryRequirementsQCOM {
30232    #[inline]
30233    fn default() -> Self {
30234        Self {
30235            s_type: StructureType::TILE_MEMORY_REQUIREMENTS_QCOM,
30236            next: ptr::null_mut(),
30237            size: DeviceSize::default(),
30238            alignment: DeviceSize::default(),
30239        }
30240    }
30241}
30242
30243unsafe impl Send for TileMemoryRequirementsQCOM {}
30244unsafe impl Sync for TileMemoryRequirementsQCOM {}
30245
30246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html>
30247#[repr(C)]
30248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30249pub struct TileMemorySizeInfoQCOM {
30250    pub s_type: StructureType,
30251    pub next: *const c_void,
30252    pub size: DeviceSize,
30253}
30254
30255impl Default for TileMemorySizeInfoQCOM {
30256    #[inline]
30257    fn default() -> Self {
30258        Self {
30259            s_type: StructureType::TILE_MEMORY_SIZE_INFO_QCOM,
30260            next: ptr::null(),
30261            size: DeviceSize::default(),
30262        }
30263    }
30264}
30265
30266unsafe impl Send for TileMemorySizeInfoQCOM {}
30267unsafe impl Sync for TileMemorySizeInfoQCOM {}
30268
30269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
30270#[repr(C)]
30271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30272pub struct TilePropertiesQCOM {
30273    pub s_type: StructureType,
30274    pub next: *mut c_void,
30275    pub tile_size: Extent3D,
30276    pub apron_size: Extent2D,
30277    pub origin: Offset2D,
30278}
30279
30280impl Default for TilePropertiesQCOM {
30281    #[inline]
30282    fn default() -> Self {
30283        Self {
30284            s_type: StructureType::TILE_PROPERTIES_QCOM,
30285            next: ptr::null_mut(),
30286            tile_size: Extent3D::default(),
30287            apron_size: Extent2D::default(),
30288            origin: Offset2D::default(),
30289        }
30290    }
30291}
30292
30293unsafe impl Send for TilePropertiesQCOM {}
30294unsafe impl Sync for TilePropertiesQCOM {}
30295
30296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
30297#[repr(C)]
30298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30299pub struct TimelineSemaphoreSubmitInfo {
30300    pub s_type: StructureType,
30301    pub next: *const c_void,
30302    pub wait_semaphore_value_count: u32,
30303    pub wait_semaphore_values: *const u64,
30304    pub signal_semaphore_value_count: u32,
30305    pub signal_semaphore_values: *const u64,
30306}
30307
30308impl Default for TimelineSemaphoreSubmitInfo {
30309    #[inline]
30310    fn default() -> Self {
30311        Self {
30312            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
30313            next: ptr::null(),
30314            wait_semaphore_value_count: u32::default(),
30315            wait_semaphore_values: ptr::null(),
30316            signal_semaphore_value_count: u32::default(),
30317            signal_semaphore_values: ptr::null(),
30318        }
30319    }
30320}
30321
30322unsafe impl Send for TimelineSemaphoreSubmitInfo {}
30323unsafe impl Sync for TimelineSemaphoreSubmitInfo {}
30324
30325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
30326#[repr(C)]
30327#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30328pub struct TraceRaysIndirectCommand2KHR {
30329    pub raygen_shader_record_address: DeviceAddress,
30330    pub raygen_shader_record_size: DeviceSize,
30331    pub miss_shader_binding_table_address: DeviceAddress,
30332    pub miss_shader_binding_table_size: DeviceSize,
30333    pub miss_shader_binding_table_stride: DeviceSize,
30334    pub hit_shader_binding_table_address: DeviceAddress,
30335    pub hit_shader_binding_table_size: DeviceSize,
30336    pub hit_shader_binding_table_stride: DeviceSize,
30337    pub callable_shader_binding_table_address: DeviceAddress,
30338    pub callable_shader_binding_table_size: DeviceSize,
30339    pub callable_shader_binding_table_stride: DeviceSize,
30340    pub width: u32,
30341    pub height: u32,
30342    pub depth: u32,
30343}
30344
30345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
30346#[repr(C)]
30347#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30348pub struct TraceRaysIndirectCommandKHR {
30349    pub width: u32,
30350    pub height: u32,
30351    pub depth: u32,
30352}
30353
30354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
30355#[repr(C)]
30356#[derive(Copy, Clone, Default, Debug, PartialEq)]
30357pub struct TransformMatrixKHR {
30358    pub matrix: [[f32; 4]; 3],
30359}
30360
30361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
30362#[repr(C)]
30363#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30364pub struct ValidationCacheCreateInfoEXT {
30365    pub s_type: StructureType,
30366    pub next: *const c_void,
30367    pub flags: ValidationCacheCreateFlagsEXT,
30368    pub initial_data_size: usize,
30369    pub initial_data: *const c_void,
30370}
30371
30372impl Default for ValidationCacheCreateInfoEXT {
30373    #[inline]
30374    fn default() -> Self {
30375        Self {
30376            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
30377            next: ptr::null(),
30378            flags: ValidationCacheCreateFlagsEXT::default(),
30379            initial_data_size: usize::default(),
30380            initial_data: ptr::null(),
30381        }
30382    }
30383}
30384
30385unsafe impl Send for ValidationCacheCreateInfoEXT {}
30386unsafe impl Sync for ValidationCacheCreateInfoEXT {}
30387
30388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
30389#[repr(C)]
30390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30391pub struct ValidationFeaturesEXT {
30392    pub s_type: StructureType,
30393    pub next: *const c_void,
30394    pub enabled_validation_feature_count: u32,
30395    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
30396    pub disabled_validation_feature_count: u32,
30397    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
30398}
30399
30400impl Default for ValidationFeaturesEXT {
30401    #[inline]
30402    fn default() -> Self {
30403        Self {
30404            s_type: StructureType::VALIDATION_FEATURES_EXT,
30405            next: ptr::null(),
30406            enabled_validation_feature_count: u32::default(),
30407            enabled_validation_features: ptr::null(),
30408            disabled_validation_feature_count: u32::default(),
30409            disabled_validation_features: ptr::null(),
30410        }
30411    }
30412}
30413
30414unsafe impl Send for ValidationFeaturesEXT {}
30415unsafe impl Sync for ValidationFeaturesEXT {}
30416
30417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
30418#[repr(C)]
30419#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30420pub struct ValidationFlagsEXT {
30421    pub s_type: StructureType,
30422    pub next: *const c_void,
30423    pub disabled_validation_check_count: u32,
30424    pub disabled_validation_checks: *const ValidationCheckEXT,
30425}
30426
30427impl Default for ValidationFlagsEXT {
30428    #[inline]
30429    fn default() -> Self {
30430        Self {
30431            s_type: StructureType::VALIDATION_FLAGS_EXT,
30432            next: ptr::null(),
30433            disabled_validation_check_count: u32::default(),
30434            disabled_validation_checks: ptr::null(),
30435        }
30436    }
30437}
30438
30439unsafe impl Send for ValidationFlagsEXT {}
30440unsafe impl Sync for ValidationFlagsEXT {}
30441
30442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
30443#[repr(C)]
30444#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30445pub struct VertexInputAttributeDescription {
30446    pub location: u32,
30447    pub binding: u32,
30448    pub format: Format,
30449    pub offset: u32,
30450}
30451
30452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
30453#[repr(C)]
30454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30455pub struct VertexInputAttributeDescription2EXT {
30456    pub s_type: StructureType,
30457    pub next: *mut c_void,
30458    pub location: u32,
30459    pub binding: u32,
30460    pub format: Format,
30461    pub offset: u32,
30462}
30463
30464impl Default for VertexInputAttributeDescription2EXT {
30465    #[inline]
30466    fn default() -> Self {
30467        Self {
30468            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
30469            next: ptr::null_mut(),
30470            location: u32::default(),
30471            binding: u32::default(),
30472            format: Format::default(),
30473            offset: u32::default(),
30474        }
30475    }
30476}
30477
30478unsafe impl Send for VertexInputAttributeDescription2EXT {}
30479unsafe impl Sync for VertexInputAttributeDescription2EXT {}
30480
30481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
30482#[repr(C)]
30483#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30484pub struct VertexInputBindingDescription {
30485    pub binding: u32,
30486    pub stride: u32,
30487    pub input_rate: VertexInputRate,
30488}
30489
30490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
30491#[repr(C)]
30492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30493pub struct VertexInputBindingDescription2EXT {
30494    pub s_type: StructureType,
30495    pub next: *mut c_void,
30496    pub binding: u32,
30497    pub stride: u32,
30498    pub input_rate: VertexInputRate,
30499    pub divisor: u32,
30500}
30501
30502impl Default for VertexInputBindingDescription2EXT {
30503    #[inline]
30504    fn default() -> Self {
30505        Self {
30506            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
30507            next: ptr::null_mut(),
30508            binding: u32::default(),
30509            stride: u32::default(),
30510            input_rate: VertexInputRate::default(),
30511            divisor: u32::default(),
30512        }
30513    }
30514}
30515
30516unsafe impl Send for VertexInputBindingDescription2EXT {}
30517unsafe impl Sync for VertexInputBindingDescription2EXT {}
30518
30519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
30520#[repr(C)]
30521#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30522pub struct VertexInputBindingDivisorDescription {
30523    pub binding: u32,
30524    pub divisor: u32,
30525}
30526
30527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
30528#[repr(C)]
30529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30530pub struct ViSurfaceCreateInfoNN {
30531    pub s_type: StructureType,
30532    pub next: *const c_void,
30533    pub flags: ViSurfaceCreateFlagsNN,
30534    pub window: *mut c_void,
30535}
30536
30537impl Default for ViSurfaceCreateInfoNN {
30538    #[inline]
30539    fn default() -> Self {
30540        Self {
30541            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
30542            next: ptr::null(),
30543            flags: ViSurfaceCreateFlagsNN::default(),
30544            window: ptr::null_mut(),
30545        }
30546    }
30547}
30548
30549unsafe impl Send for ViSurfaceCreateInfoNN {}
30550unsafe impl Sync for ViSurfaceCreateInfoNN {}
30551
30552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
30553#[repr(C)]
30554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30555pub struct VideoBeginCodingInfoKHR {
30556    pub s_type: StructureType,
30557    pub next: *const c_void,
30558    pub flags: VideoBeginCodingFlagsKHR,
30559    pub video_session: VideoSessionKHR,
30560    pub video_session_parameters: VideoSessionParametersKHR,
30561    pub reference_slot_count: u32,
30562    pub reference_slots: *const VideoReferenceSlotInfoKHR,
30563}
30564
30565impl Default for VideoBeginCodingInfoKHR {
30566    #[inline]
30567    fn default() -> Self {
30568        Self {
30569            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
30570            next: ptr::null(),
30571            flags: VideoBeginCodingFlagsKHR::default(),
30572            video_session: VideoSessionKHR::default(),
30573            video_session_parameters: VideoSessionParametersKHR::default(),
30574            reference_slot_count: u32::default(),
30575            reference_slots: ptr::null(),
30576        }
30577    }
30578}
30579
30580unsafe impl Send for VideoBeginCodingInfoKHR {}
30581unsafe impl Sync for VideoBeginCodingInfoKHR {}
30582
30583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
30584#[repr(C)]
30585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30586pub struct VideoCapabilitiesKHR {
30587    pub s_type: StructureType,
30588    pub next: *mut c_void,
30589    pub flags: VideoCapabilityFlagsKHR,
30590    pub min_bitstream_buffer_offset_alignment: DeviceSize,
30591    pub min_bitstream_buffer_size_alignment: DeviceSize,
30592    pub picture_access_granularity: Extent2D,
30593    pub min_coded_extent: Extent2D,
30594    pub max_coded_extent: Extent2D,
30595    pub max_dpb_slots: u32,
30596    pub max_active_reference_pictures: u32,
30597    pub std_header_version: ExtensionProperties,
30598}
30599
30600impl Default for VideoCapabilitiesKHR {
30601    #[inline]
30602    fn default() -> Self {
30603        Self {
30604            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
30605            next: ptr::null_mut(),
30606            flags: VideoCapabilityFlagsKHR::default(),
30607            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
30608            min_bitstream_buffer_size_alignment: DeviceSize::default(),
30609            picture_access_granularity: Extent2D::default(),
30610            min_coded_extent: Extent2D::default(),
30611            max_coded_extent: Extent2D::default(),
30612            max_dpb_slots: u32::default(),
30613            max_active_reference_pictures: u32::default(),
30614            std_header_version: ExtensionProperties::default(),
30615        }
30616    }
30617}
30618
30619unsafe impl Send for VideoCapabilitiesKHR {}
30620unsafe impl Sync for VideoCapabilitiesKHR {}
30621
30622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
30623#[repr(C)]
30624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30625pub struct VideoCodingControlInfoKHR {
30626    pub s_type: StructureType,
30627    pub next: *const c_void,
30628    pub flags: VideoCodingControlFlagsKHR,
30629}
30630
30631impl Default for VideoCodingControlInfoKHR {
30632    #[inline]
30633    fn default() -> Self {
30634        Self {
30635            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
30636            next: ptr::null(),
30637            flags: VideoCodingControlFlagsKHR::default(),
30638        }
30639    }
30640}
30641
30642unsafe impl Send for VideoCodingControlInfoKHR {}
30643unsafe impl Sync for VideoCodingControlInfoKHR {}
30644
30645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
30646#[repr(C)]
30647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30648pub struct VideoDecodeAV1CapabilitiesKHR {
30649    pub s_type: StructureType,
30650    pub next: *mut c_void,
30651    pub max_level: video::StdVideoAV1Level,
30652}
30653
30654impl Default for VideoDecodeAV1CapabilitiesKHR {
30655    #[inline]
30656    fn default() -> Self {
30657        Self {
30658            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
30659            next: ptr::null_mut(),
30660            max_level: video::StdVideoAV1Level::default(),
30661        }
30662    }
30663}
30664
30665unsafe impl Send for VideoDecodeAV1CapabilitiesKHR {}
30666unsafe impl Sync for VideoDecodeAV1CapabilitiesKHR {}
30667
30668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
30669#[repr(C)]
30670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30671pub struct VideoDecodeAV1DpbSlotInfoKHR {
30672    pub s_type: StructureType,
30673    pub next: *const c_void,
30674    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
30675}
30676
30677impl Default for VideoDecodeAV1DpbSlotInfoKHR {
30678    #[inline]
30679    fn default() -> Self {
30680        Self {
30681            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
30682            next: ptr::null(),
30683            std_reference_info: ptr::null(),
30684        }
30685    }
30686}
30687
30688unsafe impl Send for VideoDecodeAV1DpbSlotInfoKHR {}
30689unsafe impl Sync for VideoDecodeAV1DpbSlotInfoKHR {}
30690
30691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
30692#[repr(C)]
30693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30694pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
30695    pub s_type: StructureType,
30696    pub next: *const c_void,
30697    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30698}
30699
30700impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
30701    #[inline]
30702    fn default() -> Self {
30703        Self {
30704            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
30705            next: ptr::null(),
30706            std_sequence_header: ptr::null(),
30707        }
30708    }
30709}
30710
30711unsafe impl Send for VideoDecodeAV1InlineSessionParametersInfoKHR {}
30712unsafe impl Sync for VideoDecodeAV1InlineSessionParametersInfoKHR {}
30713
30714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
30715#[repr(C)]
30716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30717pub struct VideoDecodeAV1PictureInfoKHR {
30718    pub s_type: StructureType,
30719    pub next: *const c_void,
30720    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
30721    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
30722    pub frame_header_offset: u32,
30723    pub tile_count: u32,
30724    pub tile_offsets: *const u32,
30725    pub tile_sizes: *const u32,
30726}
30727
30728impl Default for VideoDecodeAV1PictureInfoKHR {
30729    #[inline]
30730    fn default() -> Self {
30731        Self {
30732            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
30733            next: ptr::null(),
30734            std_picture_info: ptr::null(),
30735            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30736            frame_header_offset: u32::default(),
30737            tile_count: u32::default(),
30738            tile_offsets: ptr::null(),
30739            tile_sizes: ptr::null(),
30740        }
30741    }
30742}
30743
30744unsafe impl Send for VideoDecodeAV1PictureInfoKHR {}
30745unsafe impl Sync for VideoDecodeAV1PictureInfoKHR {}
30746
30747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
30748#[repr(C)]
30749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30750pub struct VideoDecodeAV1ProfileInfoKHR {
30751    pub s_type: StructureType,
30752    pub next: *const c_void,
30753    pub std_profile: video::StdVideoAV1Profile,
30754    pub film_grain_support: Bool32,
30755}
30756
30757impl Default for VideoDecodeAV1ProfileInfoKHR {
30758    #[inline]
30759    fn default() -> Self {
30760        Self {
30761            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
30762            next: ptr::null(),
30763            std_profile: video::StdVideoAV1Profile::default(),
30764            film_grain_support: Bool32::default(),
30765        }
30766    }
30767}
30768
30769unsafe impl Send for VideoDecodeAV1ProfileInfoKHR {}
30770unsafe impl Sync for VideoDecodeAV1ProfileInfoKHR {}
30771
30772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
30773#[repr(C)]
30774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30775pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
30776    pub s_type: StructureType,
30777    pub next: *const c_void,
30778    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30779}
30780
30781impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
30782    #[inline]
30783    fn default() -> Self {
30784        Self {
30785            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
30786            next: ptr::null(),
30787            std_sequence_header: ptr::null(),
30788        }
30789    }
30790}
30791
30792unsafe impl Send for VideoDecodeAV1SessionParametersCreateInfoKHR {}
30793unsafe impl Sync for VideoDecodeAV1SessionParametersCreateInfoKHR {}
30794
30795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
30796#[repr(C)]
30797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30798pub struct VideoDecodeCapabilitiesKHR {
30799    pub s_type: StructureType,
30800    pub next: *mut c_void,
30801    pub flags: VideoDecodeCapabilityFlagsKHR,
30802}
30803
30804impl Default for VideoDecodeCapabilitiesKHR {
30805    #[inline]
30806    fn default() -> Self {
30807        Self {
30808            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
30809            next: ptr::null_mut(),
30810            flags: VideoDecodeCapabilityFlagsKHR::default(),
30811        }
30812    }
30813}
30814
30815unsafe impl Send for VideoDecodeCapabilitiesKHR {}
30816unsafe impl Sync for VideoDecodeCapabilitiesKHR {}
30817
30818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
30819#[repr(C)]
30820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30821pub struct VideoDecodeH264CapabilitiesKHR {
30822    pub s_type: StructureType,
30823    pub next: *mut c_void,
30824    pub max_level_idc: video::StdVideoH264LevelIdc,
30825    pub field_offset_granularity: Offset2D,
30826}
30827
30828impl Default for VideoDecodeH264CapabilitiesKHR {
30829    #[inline]
30830    fn default() -> Self {
30831        Self {
30832            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
30833            next: ptr::null_mut(),
30834            max_level_idc: video::StdVideoH264LevelIdc::default(),
30835            field_offset_granularity: Offset2D::default(),
30836        }
30837    }
30838}
30839
30840unsafe impl Send for VideoDecodeH264CapabilitiesKHR {}
30841unsafe impl Sync for VideoDecodeH264CapabilitiesKHR {}
30842
30843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
30844#[repr(C)]
30845#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30846pub struct VideoDecodeH264DpbSlotInfoKHR {
30847    pub s_type: StructureType,
30848    pub next: *const c_void,
30849    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
30850}
30851
30852impl Default for VideoDecodeH264DpbSlotInfoKHR {
30853    #[inline]
30854    fn default() -> Self {
30855        Self {
30856            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
30857            next: ptr::null(),
30858            std_reference_info: ptr::null(),
30859        }
30860    }
30861}
30862
30863unsafe impl Send for VideoDecodeH264DpbSlotInfoKHR {}
30864unsafe impl Sync for VideoDecodeH264DpbSlotInfoKHR {}
30865
30866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
30867#[repr(C)]
30868#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30869pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
30870    pub s_type: StructureType,
30871    pub next: *const c_void,
30872    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
30873    pub std_pps: *const video::StdVideoH264PictureParameterSet,
30874}
30875
30876impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
30877    #[inline]
30878    fn default() -> Self {
30879        Self {
30880            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
30881            next: ptr::null(),
30882            std_sps: ptr::null(),
30883            std_pps: ptr::null(),
30884        }
30885    }
30886}
30887
30888unsafe impl Send for VideoDecodeH264InlineSessionParametersInfoKHR {}
30889unsafe impl Sync for VideoDecodeH264InlineSessionParametersInfoKHR {}
30890
30891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
30892#[repr(C)]
30893#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30894pub struct VideoDecodeH264PictureInfoKHR {
30895    pub s_type: StructureType,
30896    pub next: *const c_void,
30897    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
30898    pub slice_count: u32,
30899    pub slice_offsets: *const u32,
30900}
30901
30902impl Default for VideoDecodeH264PictureInfoKHR {
30903    #[inline]
30904    fn default() -> Self {
30905        Self {
30906            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
30907            next: ptr::null(),
30908            std_picture_info: ptr::null(),
30909            slice_count: u32::default(),
30910            slice_offsets: ptr::null(),
30911        }
30912    }
30913}
30914
30915unsafe impl Send for VideoDecodeH264PictureInfoKHR {}
30916unsafe impl Sync for VideoDecodeH264PictureInfoKHR {}
30917
30918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
30919#[repr(C)]
30920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30921pub struct VideoDecodeH264ProfileInfoKHR {
30922    pub s_type: StructureType,
30923    pub next: *const c_void,
30924    pub std_profile_idc: video::StdVideoH264ProfileIdc,
30925    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
30926}
30927
30928impl Default for VideoDecodeH264ProfileInfoKHR {
30929    #[inline]
30930    fn default() -> Self {
30931        Self {
30932            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
30933            next: ptr::null(),
30934            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
30935            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
30936        }
30937    }
30938}
30939
30940unsafe impl Send for VideoDecodeH264ProfileInfoKHR {}
30941unsafe impl Sync for VideoDecodeH264ProfileInfoKHR {}
30942
30943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
30944#[repr(C)]
30945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30946pub struct VideoDecodeH264SessionParametersAddInfoKHR {
30947    pub s_type: StructureType,
30948    pub next: *const c_void,
30949    pub std_sps_count: u32,
30950    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
30951    pub std_pps_count: u32,
30952    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
30953}
30954
30955impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
30956    #[inline]
30957    fn default() -> Self {
30958        Self {
30959            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
30960            next: ptr::null(),
30961            std_sps_count: u32::default(),
30962            std_sp_ss: ptr::null(),
30963            std_pps_count: u32::default(),
30964            std_pp_ss: ptr::null(),
30965        }
30966    }
30967}
30968
30969unsafe impl Send for VideoDecodeH264SessionParametersAddInfoKHR {}
30970unsafe impl Sync for VideoDecodeH264SessionParametersAddInfoKHR {}
30971
30972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
30973#[repr(C)]
30974#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30975pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
30976    pub s_type: StructureType,
30977    pub next: *const c_void,
30978    pub max_std_sps_count: u32,
30979    pub max_std_pps_count: u32,
30980    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
30981}
30982
30983impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
30984    #[inline]
30985    fn default() -> Self {
30986        Self {
30987            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
30988            next: ptr::null(),
30989            max_std_sps_count: u32::default(),
30990            max_std_pps_count: u32::default(),
30991            parameters_add_info: ptr::null(),
30992        }
30993    }
30994}
30995
30996unsafe impl Send for VideoDecodeH264SessionParametersCreateInfoKHR {}
30997unsafe impl Sync for VideoDecodeH264SessionParametersCreateInfoKHR {}
30998
30999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
31000#[repr(C)]
31001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31002pub struct VideoDecodeH265CapabilitiesKHR {
31003    pub s_type: StructureType,
31004    pub next: *mut c_void,
31005    pub max_level_idc: video::StdVideoH265LevelIdc,
31006}
31007
31008impl Default for VideoDecodeH265CapabilitiesKHR {
31009    #[inline]
31010    fn default() -> Self {
31011        Self {
31012            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
31013            next: ptr::null_mut(),
31014            max_level_idc: video::StdVideoH265LevelIdc::default(),
31015        }
31016    }
31017}
31018
31019unsafe impl Send for VideoDecodeH265CapabilitiesKHR {}
31020unsafe impl Sync for VideoDecodeH265CapabilitiesKHR {}
31021
31022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
31023#[repr(C)]
31024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31025pub struct VideoDecodeH265DpbSlotInfoKHR {
31026    pub s_type: StructureType,
31027    pub next: *const c_void,
31028    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
31029}
31030
31031impl Default for VideoDecodeH265DpbSlotInfoKHR {
31032    #[inline]
31033    fn default() -> Self {
31034        Self {
31035            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
31036            next: ptr::null(),
31037            std_reference_info: ptr::null(),
31038        }
31039    }
31040}
31041
31042unsafe impl Send for VideoDecodeH265DpbSlotInfoKHR {}
31043unsafe impl Sync for VideoDecodeH265DpbSlotInfoKHR {}
31044
31045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
31046#[repr(C)]
31047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31048pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
31049    pub s_type: StructureType,
31050    pub next: *const c_void,
31051    pub std_vps: *const video::StdVideoH265VideoParameterSet,
31052    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
31053    pub std_pps: *const video::StdVideoH265PictureParameterSet,
31054}
31055
31056impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
31057    #[inline]
31058    fn default() -> Self {
31059        Self {
31060            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
31061            next: ptr::null(),
31062            std_vps: ptr::null(),
31063            std_sps: ptr::null(),
31064            std_pps: ptr::null(),
31065        }
31066    }
31067}
31068
31069unsafe impl Send for VideoDecodeH265InlineSessionParametersInfoKHR {}
31070unsafe impl Sync for VideoDecodeH265InlineSessionParametersInfoKHR {}
31071
31072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
31073#[repr(C)]
31074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31075pub struct VideoDecodeH265PictureInfoKHR {
31076    pub s_type: StructureType,
31077    pub next: *const c_void,
31078    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
31079    pub slice_segment_count: u32,
31080    pub slice_segment_offsets: *const u32,
31081}
31082
31083impl Default for VideoDecodeH265PictureInfoKHR {
31084    #[inline]
31085    fn default() -> Self {
31086        Self {
31087            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
31088            next: ptr::null(),
31089            std_picture_info: ptr::null(),
31090            slice_segment_count: u32::default(),
31091            slice_segment_offsets: ptr::null(),
31092        }
31093    }
31094}
31095
31096unsafe impl Send for VideoDecodeH265PictureInfoKHR {}
31097unsafe impl Sync for VideoDecodeH265PictureInfoKHR {}
31098
31099/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
31100#[repr(C)]
31101#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31102pub struct VideoDecodeH265ProfileInfoKHR {
31103    pub s_type: StructureType,
31104    pub next: *const c_void,
31105    pub std_profile_idc: video::StdVideoH265ProfileIdc,
31106}
31107
31108impl Default for VideoDecodeH265ProfileInfoKHR {
31109    #[inline]
31110    fn default() -> Self {
31111        Self {
31112            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
31113            next: ptr::null(),
31114            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
31115        }
31116    }
31117}
31118
31119unsafe impl Send for VideoDecodeH265ProfileInfoKHR {}
31120unsafe impl Sync for VideoDecodeH265ProfileInfoKHR {}
31121
31122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
31123#[repr(C)]
31124#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31125pub struct VideoDecodeH265SessionParametersAddInfoKHR {
31126    pub s_type: StructureType,
31127    pub next: *const c_void,
31128    pub std_vps_count: u32,
31129    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
31130    pub std_sps_count: u32,
31131    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
31132    pub std_pps_count: u32,
31133    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
31134}
31135
31136impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
31137    #[inline]
31138    fn default() -> Self {
31139        Self {
31140            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
31141            next: ptr::null(),
31142            std_vps_count: u32::default(),
31143            std_vp_ss: ptr::null(),
31144            std_sps_count: u32::default(),
31145            std_sp_ss: ptr::null(),
31146            std_pps_count: u32::default(),
31147            std_pp_ss: ptr::null(),
31148        }
31149    }
31150}
31151
31152unsafe impl Send for VideoDecodeH265SessionParametersAddInfoKHR {}
31153unsafe impl Sync for VideoDecodeH265SessionParametersAddInfoKHR {}
31154
31155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
31156#[repr(C)]
31157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31158pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
31159    pub s_type: StructureType,
31160    pub next: *const c_void,
31161    pub max_std_vps_count: u32,
31162    pub max_std_sps_count: u32,
31163    pub max_std_pps_count: u32,
31164    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
31165}
31166
31167impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
31168    #[inline]
31169    fn default() -> Self {
31170        Self {
31171            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
31172            next: ptr::null(),
31173            max_std_vps_count: u32::default(),
31174            max_std_sps_count: u32::default(),
31175            max_std_pps_count: u32::default(),
31176            parameters_add_info: ptr::null(),
31177        }
31178    }
31179}
31180
31181unsafe impl Send for VideoDecodeH265SessionParametersCreateInfoKHR {}
31182unsafe impl Sync for VideoDecodeH265SessionParametersCreateInfoKHR {}
31183
31184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
31185#[repr(C)]
31186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31187pub struct VideoDecodeInfoKHR {
31188    pub s_type: StructureType,
31189    pub next: *const c_void,
31190    pub flags: VideoDecodeFlagsKHR,
31191    pub src_buffer: Buffer,
31192    pub src_buffer_offset: DeviceSize,
31193    pub src_buffer_range: DeviceSize,
31194    pub dst_picture_resource: VideoPictureResourceInfoKHR,
31195    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
31196    pub reference_slot_count: u32,
31197    pub reference_slots: *const VideoReferenceSlotInfoKHR,
31198}
31199
31200impl Default for VideoDecodeInfoKHR {
31201    #[inline]
31202    fn default() -> Self {
31203        Self {
31204            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
31205            next: ptr::null(),
31206            flags: VideoDecodeFlagsKHR::default(),
31207            src_buffer: Buffer::default(),
31208            src_buffer_offset: DeviceSize::default(),
31209            src_buffer_range: DeviceSize::default(),
31210            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
31211            setup_reference_slot: ptr::null(),
31212            reference_slot_count: u32::default(),
31213            reference_slots: ptr::null(),
31214        }
31215    }
31216}
31217
31218unsafe impl Send for VideoDecodeInfoKHR {}
31219unsafe impl Sync for VideoDecodeInfoKHR {}
31220
31221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
31222#[repr(C)]
31223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31224pub struct VideoDecodeUsageInfoKHR {
31225    pub s_type: StructureType,
31226    pub next: *const c_void,
31227    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
31228}
31229
31230impl Default for VideoDecodeUsageInfoKHR {
31231    #[inline]
31232    fn default() -> Self {
31233        Self {
31234            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
31235            next: ptr::null(),
31236            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
31237        }
31238    }
31239}
31240
31241unsafe impl Send for VideoDecodeUsageInfoKHR {}
31242unsafe impl Sync for VideoDecodeUsageInfoKHR {}
31243
31244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html>
31245#[repr(C)]
31246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31247pub struct VideoDecodeVP9CapabilitiesKHR {
31248    pub s_type: StructureType,
31249    pub next: *mut c_void,
31250    pub max_level: video::StdVideoVP9Level,
31251}
31252
31253impl Default for VideoDecodeVP9CapabilitiesKHR {
31254    #[inline]
31255    fn default() -> Self {
31256        Self {
31257            s_type: StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR,
31258            next: ptr::null_mut(),
31259            max_level: video::StdVideoVP9Level::default(),
31260        }
31261    }
31262}
31263
31264unsafe impl Send for VideoDecodeVP9CapabilitiesKHR {}
31265unsafe impl Sync for VideoDecodeVP9CapabilitiesKHR {}
31266
31267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html>
31268#[repr(C)]
31269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31270pub struct VideoDecodeVP9PictureInfoKHR {
31271    pub s_type: StructureType,
31272    pub next: *const c_void,
31273    pub std_picture_info: *const video::StdVideoDecodeVP9PictureInfo,
31274    pub reference_name_slot_indices: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR as usize],
31275    pub uncompressed_header_offset: u32,
31276    pub compressed_header_offset: u32,
31277    pub tiles_offset: u32,
31278}
31279
31280impl Default for VideoDecodeVP9PictureInfoKHR {
31281    #[inline]
31282    fn default() -> Self {
31283        Self {
31284            s_type: StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR,
31285            next: ptr::null(),
31286            std_picture_info: ptr::null(),
31287            reference_name_slot_indices: [i32::default(); MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
31288            uncompressed_header_offset: u32::default(),
31289            compressed_header_offset: u32::default(),
31290            tiles_offset: u32::default(),
31291        }
31292    }
31293}
31294
31295unsafe impl Send for VideoDecodeVP9PictureInfoKHR {}
31296unsafe impl Sync for VideoDecodeVP9PictureInfoKHR {}
31297
31298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html>
31299#[repr(C)]
31300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31301pub struct VideoDecodeVP9ProfileInfoKHR {
31302    pub s_type: StructureType,
31303    pub next: *const c_void,
31304    pub std_profile: video::StdVideoVP9Profile,
31305}
31306
31307impl Default for VideoDecodeVP9ProfileInfoKHR {
31308    #[inline]
31309    fn default() -> Self {
31310        Self {
31311            s_type: StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR,
31312            next: ptr::null(),
31313            std_profile: video::StdVideoVP9Profile::default(),
31314        }
31315    }
31316}
31317
31318unsafe impl Send for VideoDecodeVP9ProfileInfoKHR {}
31319unsafe impl Sync for VideoDecodeVP9ProfileInfoKHR {}
31320
31321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
31322#[repr(C)]
31323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31324pub struct VideoEncodeAV1CapabilitiesKHR {
31325    pub s_type: StructureType,
31326    pub next: *mut c_void,
31327    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
31328    pub max_level: video::StdVideoAV1Level,
31329    pub coded_picture_alignment: Extent2D,
31330    pub max_tiles: Extent2D,
31331    pub min_tile_size: Extent2D,
31332    pub max_tile_size: Extent2D,
31333    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
31334    pub max_single_reference_count: u32,
31335    pub single_reference_name_mask: u32,
31336    pub max_unidirectional_compound_reference_count: u32,
31337    pub max_unidirectional_compound_group1_reference_count: u32,
31338    pub unidirectional_compound_reference_name_mask: u32,
31339    pub max_bidirectional_compound_reference_count: u32,
31340    pub max_bidirectional_compound_group1_reference_count: u32,
31341    pub max_bidirectional_compound_group2_reference_count: u32,
31342    pub bidirectional_compound_reference_name_mask: u32,
31343    pub max_temporal_layer_count: u32,
31344    pub max_spatial_layer_count: u32,
31345    pub max_operating_points: u32,
31346    pub min_q_index: u32,
31347    pub max_q_index: u32,
31348    pub prefers_gop_remaining_frames: Bool32,
31349    pub requires_gop_remaining_frames: Bool32,
31350    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
31351}
31352
31353impl Default for VideoEncodeAV1CapabilitiesKHR {
31354    #[inline]
31355    fn default() -> Self {
31356        Self {
31357            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
31358            next: ptr::null_mut(),
31359            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
31360            max_level: video::StdVideoAV1Level::default(),
31361            coded_picture_alignment: Extent2D::default(),
31362            max_tiles: Extent2D::default(),
31363            min_tile_size: Extent2D::default(),
31364            max_tile_size: Extent2D::default(),
31365            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
31366            max_single_reference_count: u32::default(),
31367            single_reference_name_mask: u32::default(),
31368            max_unidirectional_compound_reference_count: u32::default(),
31369            max_unidirectional_compound_group1_reference_count: u32::default(),
31370            unidirectional_compound_reference_name_mask: u32::default(),
31371            max_bidirectional_compound_reference_count: u32::default(),
31372            max_bidirectional_compound_group1_reference_count: u32::default(),
31373            max_bidirectional_compound_group2_reference_count: u32::default(),
31374            bidirectional_compound_reference_name_mask: u32::default(),
31375            max_temporal_layer_count: u32::default(),
31376            max_spatial_layer_count: u32::default(),
31377            max_operating_points: u32::default(),
31378            min_q_index: u32::default(),
31379            max_q_index: u32::default(),
31380            prefers_gop_remaining_frames: Bool32::default(),
31381            requires_gop_remaining_frames: Bool32::default(),
31382            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
31383        }
31384    }
31385}
31386
31387unsafe impl Send for VideoEncodeAV1CapabilitiesKHR {}
31388unsafe impl Sync for VideoEncodeAV1CapabilitiesKHR {}
31389
31390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
31391#[repr(C)]
31392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31393pub struct VideoEncodeAV1DpbSlotInfoKHR {
31394    pub s_type: StructureType,
31395    pub next: *const c_void,
31396    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
31397}
31398
31399impl Default for VideoEncodeAV1DpbSlotInfoKHR {
31400    #[inline]
31401    fn default() -> Self {
31402        Self {
31403            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
31404            next: ptr::null(),
31405            std_reference_info: ptr::null(),
31406        }
31407    }
31408}
31409
31410unsafe impl Send for VideoEncodeAV1DpbSlotInfoKHR {}
31411unsafe impl Sync for VideoEncodeAV1DpbSlotInfoKHR {}
31412
31413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
31414#[repr(C)]
31415#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31416pub struct VideoEncodeAV1FrameSizeKHR {
31417    pub intra_frame_size: u32,
31418    pub predictive_frame_size: u32,
31419    pub bipredictive_frame_size: u32,
31420}
31421
31422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
31423#[repr(C)]
31424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31425pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
31426    pub s_type: StructureType,
31427    pub next: *const c_void,
31428    pub use_gop_remaining_frames: Bool32,
31429    pub gop_remaining_intra: u32,
31430    pub gop_remaining_predictive: u32,
31431    pub gop_remaining_bipredictive: u32,
31432}
31433
31434impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
31435    #[inline]
31436    fn default() -> Self {
31437        Self {
31438            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
31439            next: ptr::null(),
31440            use_gop_remaining_frames: Bool32::default(),
31441            gop_remaining_intra: u32::default(),
31442            gop_remaining_predictive: u32::default(),
31443            gop_remaining_bipredictive: u32::default(),
31444        }
31445    }
31446}
31447
31448unsafe impl Send for VideoEncodeAV1GopRemainingFrameInfoKHR {}
31449unsafe impl Sync for VideoEncodeAV1GopRemainingFrameInfoKHR {}
31450
31451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
31452#[repr(C)]
31453#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31454pub struct VideoEncodeAV1PictureInfoKHR {
31455    pub s_type: StructureType,
31456    pub next: *const c_void,
31457    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
31458    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
31459    pub constant_q_index: u32,
31460    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
31461    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
31462    pub primary_reference_cdf_only: Bool32,
31463    pub generate_obu_extension_header: Bool32,
31464}
31465
31466impl Default for VideoEncodeAV1PictureInfoKHR {
31467    #[inline]
31468    fn default() -> Self {
31469        Self {
31470            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
31471            next: ptr::null(),
31472            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
31473            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
31474            constant_q_index: u32::default(),
31475            std_picture_info: ptr::null(),
31476            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
31477            primary_reference_cdf_only: Bool32::default(),
31478            generate_obu_extension_header: Bool32::default(),
31479        }
31480    }
31481}
31482
31483unsafe impl Send for VideoEncodeAV1PictureInfoKHR {}
31484unsafe impl Sync for VideoEncodeAV1PictureInfoKHR {}
31485
31486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
31487#[repr(C)]
31488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31489pub struct VideoEncodeAV1ProfileInfoKHR {
31490    pub s_type: StructureType,
31491    pub next: *const c_void,
31492    pub std_profile: video::StdVideoAV1Profile,
31493}
31494
31495impl Default for VideoEncodeAV1ProfileInfoKHR {
31496    #[inline]
31497    fn default() -> Self {
31498        Self {
31499            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
31500            next: ptr::null(),
31501            std_profile: video::StdVideoAV1Profile::default(),
31502        }
31503    }
31504}
31505
31506unsafe impl Send for VideoEncodeAV1ProfileInfoKHR {}
31507unsafe impl Sync for VideoEncodeAV1ProfileInfoKHR {}
31508
31509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
31510#[repr(C)]
31511#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31512pub struct VideoEncodeAV1QIndexKHR {
31513    pub intra_q_index: u32,
31514    pub predictive_q_index: u32,
31515    pub bipredictive_q_index: u32,
31516}
31517
31518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
31519#[repr(C)]
31520#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31521pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
31522    pub s_type: StructureType,
31523    pub next: *mut c_void,
31524    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
31525    pub preferred_gop_frame_count: u32,
31526    pub preferred_key_frame_period: u32,
31527    pub preferred_consecutive_bipredictive_frame_count: u32,
31528    pub preferred_temporal_layer_count: u32,
31529    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
31530    pub preferred_max_single_reference_count: u32,
31531    pub preferred_single_reference_name_mask: u32,
31532    pub preferred_max_unidirectional_compound_reference_count: u32,
31533    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
31534    pub preferred_unidirectional_compound_reference_name_mask: u32,
31535    pub preferred_max_bidirectional_compound_reference_count: u32,
31536    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
31537    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
31538    pub preferred_bidirectional_compound_reference_name_mask: u32,
31539}
31540
31541impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
31542    #[inline]
31543    fn default() -> Self {
31544        Self {
31545            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
31546            next: ptr::null_mut(),
31547            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
31548            preferred_gop_frame_count: u32::default(),
31549            preferred_key_frame_period: u32::default(),
31550            preferred_consecutive_bipredictive_frame_count: u32::default(),
31551            preferred_temporal_layer_count: u32::default(),
31552            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
31553            preferred_max_single_reference_count: u32::default(),
31554            preferred_single_reference_name_mask: u32::default(),
31555            preferred_max_unidirectional_compound_reference_count: u32::default(),
31556            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
31557            preferred_unidirectional_compound_reference_name_mask: u32::default(),
31558            preferred_max_bidirectional_compound_reference_count: u32::default(),
31559            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
31560            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
31561            preferred_bidirectional_compound_reference_name_mask: u32::default(),
31562        }
31563    }
31564}
31565
31566unsafe impl Send for VideoEncodeAV1QualityLevelPropertiesKHR {}
31567unsafe impl Sync for VideoEncodeAV1QualityLevelPropertiesKHR {}
31568
31569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
31570#[repr(C)]
31571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31572pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
31573    pub s_type: StructureType,
31574    pub next: *mut c_void,
31575    pub min_q_index_delta: i32,
31576    pub max_q_index_delta: i32,
31577}
31578
31579impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
31580    #[inline]
31581    fn default() -> Self {
31582        Self {
31583            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
31584            next: ptr::null_mut(),
31585            min_q_index_delta: i32::default(),
31586            max_q_index_delta: i32::default(),
31587        }
31588    }
31589}
31590
31591unsafe impl Send for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
31592unsafe impl Sync for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
31593
31594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
31595#[repr(C)]
31596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31597pub struct VideoEncodeAV1RateControlInfoKHR {
31598    pub s_type: StructureType,
31599    pub next: *const c_void,
31600    pub flags: VideoEncodeAV1RateControlFlagsKHR,
31601    pub gop_frame_count: u32,
31602    pub key_frame_period: u32,
31603    pub consecutive_bipredictive_frame_count: u32,
31604    pub temporal_layer_count: u32,
31605}
31606
31607impl Default for VideoEncodeAV1RateControlInfoKHR {
31608    #[inline]
31609    fn default() -> Self {
31610        Self {
31611            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
31612            next: ptr::null(),
31613            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
31614            gop_frame_count: u32::default(),
31615            key_frame_period: u32::default(),
31616            consecutive_bipredictive_frame_count: u32::default(),
31617            temporal_layer_count: u32::default(),
31618        }
31619    }
31620}
31621
31622unsafe impl Send for VideoEncodeAV1RateControlInfoKHR {}
31623unsafe impl Sync for VideoEncodeAV1RateControlInfoKHR {}
31624
31625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
31626#[repr(C)]
31627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31628pub struct VideoEncodeAV1RateControlLayerInfoKHR {
31629    pub s_type: StructureType,
31630    pub next: *const c_void,
31631    pub use_min_q_index: Bool32,
31632    pub min_q_index: VideoEncodeAV1QIndexKHR,
31633    pub use_max_q_index: Bool32,
31634    pub max_q_index: VideoEncodeAV1QIndexKHR,
31635    pub use_max_frame_size: Bool32,
31636    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
31637}
31638
31639impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
31640    #[inline]
31641    fn default() -> Self {
31642        Self {
31643            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
31644            next: ptr::null(),
31645            use_min_q_index: Bool32::default(),
31646            min_q_index: VideoEncodeAV1QIndexKHR::default(),
31647            use_max_q_index: Bool32::default(),
31648            max_q_index: VideoEncodeAV1QIndexKHR::default(),
31649            use_max_frame_size: Bool32::default(),
31650            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
31651        }
31652    }
31653}
31654
31655unsafe impl Send for VideoEncodeAV1RateControlLayerInfoKHR {}
31656unsafe impl Sync for VideoEncodeAV1RateControlLayerInfoKHR {}
31657
31658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
31659#[repr(C)]
31660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31661pub struct VideoEncodeAV1SessionCreateInfoKHR {
31662    pub s_type: StructureType,
31663    pub next: *const c_void,
31664    pub use_max_level: Bool32,
31665    pub max_level: video::StdVideoAV1Level,
31666}
31667
31668impl Default for VideoEncodeAV1SessionCreateInfoKHR {
31669    #[inline]
31670    fn default() -> Self {
31671        Self {
31672            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
31673            next: ptr::null(),
31674            use_max_level: Bool32::default(),
31675            max_level: video::StdVideoAV1Level::default(),
31676        }
31677    }
31678}
31679
31680unsafe impl Send for VideoEncodeAV1SessionCreateInfoKHR {}
31681unsafe impl Sync for VideoEncodeAV1SessionCreateInfoKHR {}
31682
31683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
31684#[repr(C)]
31685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31686pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
31687    pub s_type: StructureType,
31688    pub next: *const c_void,
31689    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
31690    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
31691    pub std_operating_point_count: u32,
31692    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
31693}
31694
31695impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
31696    #[inline]
31697    fn default() -> Self {
31698        Self {
31699            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
31700            next: ptr::null(),
31701            std_sequence_header: ptr::null(),
31702            std_decoder_model_info: ptr::null(),
31703            std_operating_point_count: u32::default(),
31704            std_operating_points: ptr::null(),
31705        }
31706    }
31707}
31708
31709unsafe impl Send for VideoEncodeAV1SessionParametersCreateInfoKHR {}
31710unsafe impl Sync for VideoEncodeAV1SessionParametersCreateInfoKHR {}
31711
31712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
31713#[repr(C)]
31714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31715pub struct VideoEncodeCapabilitiesKHR {
31716    pub s_type: StructureType,
31717    pub next: *mut c_void,
31718    pub flags: VideoEncodeCapabilityFlagsKHR,
31719    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
31720    pub max_rate_control_layers: u32,
31721    pub max_bitrate: u64,
31722    pub max_quality_levels: u32,
31723    pub encode_input_picture_granularity: Extent2D,
31724    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
31725}
31726
31727impl Default for VideoEncodeCapabilitiesKHR {
31728    #[inline]
31729    fn default() -> Self {
31730        Self {
31731            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
31732            next: ptr::null_mut(),
31733            flags: VideoEncodeCapabilityFlagsKHR::default(),
31734            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
31735            max_rate_control_layers: u32::default(),
31736            max_bitrate: u64::default(),
31737            max_quality_levels: u32::default(),
31738            encode_input_picture_granularity: Extent2D::default(),
31739            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
31740        }
31741    }
31742}
31743
31744unsafe impl Send for VideoEncodeCapabilitiesKHR {}
31745unsafe impl Sync for VideoEncodeCapabilitiesKHR {}
31746
31747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
31748#[repr(C)]
31749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31750pub struct VideoEncodeH264CapabilitiesKHR {
31751    pub s_type: StructureType,
31752    pub next: *mut c_void,
31753    pub flags: VideoEncodeH264CapabilityFlagsKHR,
31754    pub max_level_idc: video::StdVideoH264LevelIdc,
31755    pub max_slice_count: u32,
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_temporal_layer_count: u32,
31760    pub expect_dyadic_temporal_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: VideoEncodeH264StdFlagsKHR,
31766}
31767
31768impl Default for VideoEncodeH264CapabilitiesKHR {
31769    #[inline]
31770    fn default() -> Self {
31771        Self {
31772            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
31773            next: ptr::null_mut(),
31774            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
31775            max_level_idc: video::StdVideoH264LevelIdc::default(),
31776            max_slice_count: u32::default(),
31777            max_p_picture_l0_reference_count: u32::default(),
31778            max_b_picture_l0_reference_count: u32::default(),
31779            max_l1_reference_count: u32::default(),
31780            max_temporal_layer_count: u32::default(),
31781            expect_dyadic_temporal_layer_pattern: Bool32::default(),
31782            min_qp: i32::default(),
31783            max_qp: i32::default(),
31784            prefers_gop_remaining_frames: Bool32::default(),
31785            requires_gop_remaining_frames: Bool32::default(),
31786            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
31787        }
31788    }
31789}
31790
31791unsafe impl Send for VideoEncodeH264CapabilitiesKHR {}
31792unsafe impl Sync for VideoEncodeH264CapabilitiesKHR {}
31793
31794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
31795#[repr(C)]
31796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31797pub struct VideoEncodeH264DpbSlotInfoKHR {
31798    pub s_type: StructureType,
31799    pub next: *const c_void,
31800    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
31801}
31802
31803impl Default for VideoEncodeH264DpbSlotInfoKHR {
31804    #[inline]
31805    fn default() -> Self {
31806        Self {
31807            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
31808            next: ptr::null(),
31809            std_reference_info: ptr::null(),
31810        }
31811    }
31812}
31813
31814unsafe impl Send for VideoEncodeH264DpbSlotInfoKHR {}
31815unsafe impl Sync for VideoEncodeH264DpbSlotInfoKHR {}
31816
31817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
31818#[repr(C)]
31819#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31820pub struct VideoEncodeH264FrameSizeKHR {
31821    pub frame_i_size: u32,
31822    pub frame_p_size: u32,
31823    pub frame_b_size: u32,
31824}
31825
31826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
31827#[repr(C)]
31828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31829pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
31830    pub s_type: StructureType,
31831    pub next: *const c_void,
31832    pub use_gop_remaining_frames: Bool32,
31833    pub gop_remaining_i: u32,
31834    pub gop_remaining_p: u32,
31835    pub gop_remaining_b: u32,
31836}
31837
31838impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
31839    #[inline]
31840    fn default() -> Self {
31841        Self {
31842            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
31843            next: ptr::null(),
31844            use_gop_remaining_frames: Bool32::default(),
31845            gop_remaining_i: u32::default(),
31846            gop_remaining_p: u32::default(),
31847            gop_remaining_b: u32::default(),
31848        }
31849    }
31850}
31851
31852unsafe impl Send for VideoEncodeH264GopRemainingFrameInfoKHR {}
31853unsafe impl Sync for VideoEncodeH264GopRemainingFrameInfoKHR {}
31854
31855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
31856#[repr(C)]
31857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31858pub struct VideoEncodeH264NaluSliceInfoKHR {
31859    pub s_type: StructureType,
31860    pub next: *const c_void,
31861    pub constant_qp: i32,
31862    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
31863}
31864
31865impl Default for VideoEncodeH264NaluSliceInfoKHR {
31866    #[inline]
31867    fn default() -> Self {
31868        Self {
31869            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
31870            next: ptr::null(),
31871            constant_qp: i32::default(),
31872            std_slice_header: ptr::null(),
31873        }
31874    }
31875}
31876
31877unsafe impl Send for VideoEncodeH264NaluSliceInfoKHR {}
31878unsafe impl Sync for VideoEncodeH264NaluSliceInfoKHR {}
31879
31880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
31881#[repr(C)]
31882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31883pub struct VideoEncodeH264PictureInfoKHR {
31884    pub s_type: StructureType,
31885    pub next: *const c_void,
31886    pub nalu_slice_entry_count: u32,
31887    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
31888    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
31889    pub generate_prefix_nalu: Bool32,
31890}
31891
31892impl Default for VideoEncodeH264PictureInfoKHR {
31893    #[inline]
31894    fn default() -> Self {
31895        Self {
31896            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
31897            next: ptr::null(),
31898            nalu_slice_entry_count: u32::default(),
31899            nalu_slice_entries: ptr::null(),
31900            std_picture_info: ptr::null(),
31901            generate_prefix_nalu: Bool32::default(),
31902        }
31903    }
31904}
31905
31906unsafe impl Send for VideoEncodeH264PictureInfoKHR {}
31907unsafe impl Sync for VideoEncodeH264PictureInfoKHR {}
31908
31909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
31910#[repr(C)]
31911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31912pub struct VideoEncodeH264ProfileInfoKHR {
31913    pub s_type: StructureType,
31914    pub next: *const c_void,
31915    pub std_profile_idc: video::StdVideoH264ProfileIdc,
31916}
31917
31918impl Default for VideoEncodeH264ProfileInfoKHR {
31919    #[inline]
31920    fn default() -> Self {
31921        Self {
31922            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
31923            next: ptr::null(),
31924            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
31925        }
31926    }
31927}
31928
31929unsafe impl Send for VideoEncodeH264ProfileInfoKHR {}
31930unsafe impl Sync for VideoEncodeH264ProfileInfoKHR {}
31931
31932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
31933#[repr(C)]
31934#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31935pub struct VideoEncodeH264QpKHR {
31936    pub qp_i: i32,
31937    pub qp_p: i32,
31938    pub qp_b: i32,
31939}
31940
31941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
31942#[repr(C)]
31943#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31944pub struct VideoEncodeH264QualityLevelPropertiesKHR {
31945    pub s_type: StructureType,
31946    pub next: *mut c_void,
31947    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
31948    pub preferred_gop_frame_count: u32,
31949    pub preferred_idr_period: u32,
31950    pub preferred_consecutive_b_frame_count: u32,
31951    pub preferred_temporal_layer_count: u32,
31952    pub preferred_constant_qp: VideoEncodeH264QpKHR,
31953    pub preferred_max_l0_reference_count: u32,
31954    pub preferred_max_l1_reference_count: u32,
31955    pub preferred_std_entropy_coding_mode_flag: Bool32,
31956}
31957
31958impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
31959    #[inline]
31960    fn default() -> Self {
31961        Self {
31962            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
31963            next: ptr::null_mut(),
31964            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
31965            preferred_gop_frame_count: u32::default(),
31966            preferred_idr_period: u32::default(),
31967            preferred_consecutive_b_frame_count: u32::default(),
31968            preferred_temporal_layer_count: u32::default(),
31969            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
31970            preferred_max_l0_reference_count: u32::default(),
31971            preferred_max_l1_reference_count: u32::default(),
31972            preferred_std_entropy_coding_mode_flag: Bool32::default(),
31973        }
31974    }
31975}
31976
31977unsafe impl Send for VideoEncodeH264QualityLevelPropertiesKHR {}
31978unsafe impl Sync for VideoEncodeH264QualityLevelPropertiesKHR {}
31979
31980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
31981#[repr(C)]
31982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31983pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
31984    pub s_type: StructureType,
31985    pub next: *mut c_void,
31986    pub min_qp_delta: i32,
31987    pub max_qp_delta: i32,
31988}
31989
31990impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
31991    #[inline]
31992    fn default() -> Self {
31993        Self {
31994            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
31995            next: ptr::null_mut(),
31996            min_qp_delta: i32::default(),
31997            max_qp_delta: i32::default(),
31998        }
31999    }
32000}
32001
32002unsafe impl Send for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
32003unsafe impl Sync for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
32004
32005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
32006#[repr(C)]
32007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32008pub struct VideoEncodeH264RateControlInfoKHR {
32009    pub s_type: StructureType,
32010    pub next: *const c_void,
32011    pub flags: VideoEncodeH264RateControlFlagsKHR,
32012    pub gop_frame_count: u32,
32013    pub idr_period: u32,
32014    pub consecutive_b_frame_count: u32,
32015    pub temporal_layer_count: u32,
32016}
32017
32018impl Default for VideoEncodeH264RateControlInfoKHR {
32019    #[inline]
32020    fn default() -> Self {
32021        Self {
32022            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
32023            next: ptr::null(),
32024            flags: VideoEncodeH264RateControlFlagsKHR::default(),
32025            gop_frame_count: u32::default(),
32026            idr_period: u32::default(),
32027            consecutive_b_frame_count: u32::default(),
32028            temporal_layer_count: u32::default(),
32029        }
32030    }
32031}
32032
32033unsafe impl Send for VideoEncodeH264RateControlInfoKHR {}
32034unsafe impl Sync for VideoEncodeH264RateControlInfoKHR {}
32035
32036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
32037#[repr(C)]
32038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32039pub struct VideoEncodeH264RateControlLayerInfoKHR {
32040    pub s_type: StructureType,
32041    pub next: *const c_void,
32042    pub use_min_qp: Bool32,
32043    pub min_qp: VideoEncodeH264QpKHR,
32044    pub use_max_qp: Bool32,
32045    pub max_qp: VideoEncodeH264QpKHR,
32046    pub use_max_frame_size: Bool32,
32047    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
32048}
32049
32050impl Default for VideoEncodeH264RateControlLayerInfoKHR {
32051    #[inline]
32052    fn default() -> Self {
32053        Self {
32054            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
32055            next: ptr::null(),
32056            use_min_qp: Bool32::default(),
32057            min_qp: VideoEncodeH264QpKHR::default(),
32058            use_max_qp: Bool32::default(),
32059            max_qp: VideoEncodeH264QpKHR::default(),
32060            use_max_frame_size: Bool32::default(),
32061            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
32062        }
32063    }
32064}
32065
32066unsafe impl Send for VideoEncodeH264RateControlLayerInfoKHR {}
32067unsafe impl Sync for VideoEncodeH264RateControlLayerInfoKHR {}
32068
32069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
32070#[repr(C)]
32071#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32072pub struct VideoEncodeH264SessionCreateInfoKHR {
32073    pub s_type: StructureType,
32074    pub next: *const c_void,
32075    pub use_max_level_idc: Bool32,
32076    pub max_level_idc: video::StdVideoH264LevelIdc,
32077}
32078
32079impl Default for VideoEncodeH264SessionCreateInfoKHR {
32080    #[inline]
32081    fn default() -> Self {
32082        Self {
32083            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
32084            next: ptr::null(),
32085            use_max_level_idc: Bool32::default(),
32086            max_level_idc: video::StdVideoH264LevelIdc::default(),
32087        }
32088    }
32089}
32090
32091unsafe impl Send for VideoEncodeH264SessionCreateInfoKHR {}
32092unsafe impl Sync for VideoEncodeH264SessionCreateInfoKHR {}
32093
32094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
32095#[repr(C)]
32096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32097pub struct VideoEncodeH264SessionParametersAddInfoKHR {
32098    pub s_type: StructureType,
32099    pub next: *const c_void,
32100    pub std_sps_count: u32,
32101    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
32102    pub std_pps_count: u32,
32103    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
32104}
32105
32106impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
32107    #[inline]
32108    fn default() -> Self {
32109        Self {
32110            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
32111            next: ptr::null(),
32112            std_sps_count: u32::default(),
32113            std_sp_ss: ptr::null(),
32114            std_pps_count: u32::default(),
32115            std_pp_ss: ptr::null(),
32116        }
32117    }
32118}
32119
32120unsafe impl Send for VideoEncodeH264SessionParametersAddInfoKHR {}
32121unsafe impl Sync for VideoEncodeH264SessionParametersAddInfoKHR {}
32122
32123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
32124#[repr(C)]
32125#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32126pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
32127    pub s_type: StructureType,
32128    pub next: *const c_void,
32129    pub max_std_sps_count: u32,
32130    pub max_std_pps_count: u32,
32131    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
32132}
32133
32134impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
32135    #[inline]
32136    fn default() -> Self {
32137        Self {
32138            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
32139            next: ptr::null(),
32140            max_std_sps_count: u32::default(),
32141            max_std_pps_count: u32::default(),
32142            parameters_add_info: ptr::null(),
32143        }
32144    }
32145}
32146
32147unsafe impl Send for VideoEncodeH264SessionParametersCreateInfoKHR {}
32148unsafe impl Sync for VideoEncodeH264SessionParametersCreateInfoKHR {}
32149
32150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
32151#[repr(C)]
32152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32153pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
32154    pub s_type: StructureType,
32155    pub next: *mut c_void,
32156    pub has_std_sps_overrides: Bool32,
32157    pub has_std_pps_overrides: Bool32,
32158}
32159
32160impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
32161    #[inline]
32162    fn default() -> Self {
32163        Self {
32164            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32165            next: ptr::null_mut(),
32166            has_std_sps_overrides: Bool32::default(),
32167            has_std_pps_overrides: Bool32::default(),
32168        }
32169    }
32170}
32171
32172unsafe impl Send for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
32173unsafe impl Sync for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
32174
32175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
32176#[repr(C)]
32177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32178pub struct VideoEncodeH264SessionParametersGetInfoKHR {
32179    pub s_type: StructureType,
32180    pub next: *const c_void,
32181    pub write_std_sps: Bool32,
32182    pub write_std_pps: Bool32,
32183    pub std_sps_id: u32,
32184    pub std_pps_id: u32,
32185}
32186
32187impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
32188    #[inline]
32189    fn default() -> Self {
32190        Self {
32191            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
32192            next: ptr::null(),
32193            write_std_sps: Bool32::default(),
32194            write_std_pps: Bool32::default(),
32195            std_sps_id: u32::default(),
32196            std_pps_id: u32::default(),
32197        }
32198    }
32199}
32200
32201unsafe impl Send for VideoEncodeH264SessionParametersGetInfoKHR {}
32202unsafe impl Sync for VideoEncodeH264SessionParametersGetInfoKHR {}
32203
32204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
32205#[repr(C)]
32206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32207pub struct VideoEncodeH265CapabilitiesKHR {
32208    pub s_type: StructureType,
32209    pub next: *mut c_void,
32210    pub flags: VideoEncodeH265CapabilityFlagsKHR,
32211    pub max_level_idc: video::StdVideoH265LevelIdc,
32212    pub max_slice_segment_count: u32,
32213    pub max_tiles: Extent2D,
32214    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
32215    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
32216    pub max_p_picture_l0_reference_count: u32,
32217    pub max_b_picture_l0_reference_count: u32,
32218    pub max_l1_reference_count: u32,
32219    pub max_sub_layer_count: u32,
32220    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
32221    pub min_qp: i32,
32222    pub max_qp: i32,
32223    pub prefers_gop_remaining_frames: Bool32,
32224    pub requires_gop_remaining_frames: Bool32,
32225    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
32226}
32227
32228impl Default for VideoEncodeH265CapabilitiesKHR {
32229    #[inline]
32230    fn default() -> Self {
32231        Self {
32232            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
32233            next: ptr::null_mut(),
32234            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
32235            max_level_idc: video::StdVideoH265LevelIdc::default(),
32236            max_slice_segment_count: u32::default(),
32237            max_tiles: Extent2D::default(),
32238            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
32239            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
32240            max_p_picture_l0_reference_count: u32::default(),
32241            max_b_picture_l0_reference_count: u32::default(),
32242            max_l1_reference_count: u32::default(),
32243            max_sub_layer_count: u32::default(),
32244            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
32245            min_qp: i32::default(),
32246            max_qp: i32::default(),
32247            prefers_gop_remaining_frames: Bool32::default(),
32248            requires_gop_remaining_frames: Bool32::default(),
32249            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
32250        }
32251    }
32252}
32253
32254unsafe impl Send for VideoEncodeH265CapabilitiesKHR {}
32255unsafe impl Sync for VideoEncodeH265CapabilitiesKHR {}
32256
32257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
32258#[repr(C)]
32259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32260pub struct VideoEncodeH265DpbSlotInfoKHR {
32261    pub s_type: StructureType,
32262    pub next: *const c_void,
32263    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
32264}
32265
32266impl Default for VideoEncodeH265DpbSlotInfoKHR {
32267    #[inline]
32268    fn default() -> Self {
32269        Self {
32270            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
32271            next: ptr::null(),
32272            std_reference_info: ptr::null(),
32273        }
32274    }
32275}
32276
32277unsafe impl Send for VideoEncodeH265DpbSlotInfoKHR {}
32278unsafe impl Sync for VideoEncodeH265DpbSlotInfoKHR {}
32279
32280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
32281#[repr(C)]
32282#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32283pub struct VideoEncodeH265FrameSizeKHR {
32284    pub frame_i_size: u32,
32285    pub frame_p_size: u32,
32286    pub frame_b_size: u32,
32287}
32288
32289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
32290#[repr(C)]
32291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32292pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
32293    pub s_type: StructureType,
32294    pub next: *const c_void,
32295    pub use_gop_remaining_frames: Bool32,
32296    pub gop_remaining_i: u32,
32297    pub gop_remaining_p: u32,
32298    pub gop_remaining_b: u32,
32299}
32300
32301impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
32302    #[inline]
32303    fn default() -> Self {
32304        Self {
32305            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
32306            next: ptr::null(),
32307            use_gop_remaining_frames: Bool32::default(),
32308            gop_remaining_i: u32::default(),
32309            gop_remaining_p: u32::default(),
32310            gop_remaining_b: u32::default(),
32311        }
32312    }
32313}
32314
32315unsafe impl Send for VideoEncodeH265GopRemainingFrameInfoKHR {}
32316unsafe impl Sync for VideoEncodeH265GopRemainingFrameInfoKHR {}
32317
32318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
32319#[repr(C)]
32320#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32321pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
32322    pub s_type: StructureType,
32323    pub next: *const c_void,
32324    pub constant_qp: i32,
32325    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
32326}
32327
32328impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
32329    #[inline]
32330    fn default() -> Self {
32331        Self {
32332            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
32333            next: ptr::null(),
32334            constant_qp: i32::default(),
32335            std_slice_segment_header: ptr::null(),
32336        }
32337    }
32338}
32339
32340unsafe impl Send for VideoEncodeH265NaluSliceSegmentInfoKHR {}
32341unsafe impl Sync for VideoEncodeH265NaluSliceSegmentInfoKHR {}
32342
32343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
32344#[repr(C)]
32345#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32346pub struct VideoEncodeH265PictureInfoKHR {
32347    pub s_type: StructureType,
32348    pub next: *const c_void,
32349    pub nalu_slice_segment_entry_count: u32,
32350    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
32351    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
32352}
32353
32354impl Default for VideoEncodeH265PictureInfoKHR {
32355    #[inline]
32356    fn default() -> Self {
32357        Self {
32358            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
32359            next: ptr::null(),
32360            nalu_slice_segment_entry_count: u32::default(),
32361            nalu_slice_segment_entries: ptr::null(),
32362            std_picture_info: ptr::null(),
32363        }
32364    }
32365}
32366
32367unsafe impl Send for VideoEncodeH265PictureInfoKHR {}
32368unsafe impl Sync for VideoEncodeH265PictureInfoKHR {}
32369
32370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
32371#[repr(C)]
32372#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32373pub struct VideoEncodeH265ProfileInfoKHR {
32374    pub s_type: StructureType,
32375    pub next: *const c_void,
32376    pub std_profile_idc: video::StdVideoH265ProfileIdc,
32377}
32378
32379impl Default for VideoEncodeH265ProfileInfoKHR {
32380    #[inline]
32381    fn default() -> Self {
32382        Self {
32383            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
32384            next: ptr::null(),
32385            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
32386        }
32387    }
32388}
32389
32390unsafe impl Send for VideoEncodeH265ProfileInfoKHR {}
32391unsafe impl Sync for VideoEncodeH265ProfileInfoKHR {}
32392
32393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
32394#[repr(C)]
32395#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32396pub struct VideoEncodeH265QpKHR {
32397    pub qp_i: i32,
32398    pub qp_p: i32,
32399    pub qp_b: i32,
32400}
32401
32402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
32403#[repr(C)]
32404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32405pub struct VideoEncodeH265QualityLevelPropertiesKHR {
32406    pub s_type: StructureType,
32407    pub next: *mut c_void,
32408    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
32409    pub preferred_gop_frame_count: u32,
32410    pub preferred_idr_period: u32,
32411    pub preferred_consecutive_b_frame_count: u32,
32412    pub preferred_sub_layer_count: u32,
32413    pub preferred_constant_qp: VideoEncodeH265QpKHR,
32414    pub preferred_max_l0_reference_count: u32,
32415    pub preferred_max_l1_reference_count: u32,
32416}
32417
32418impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
32419    #[inline]
32420    fn default() -> Self {
32421        Self {
32422            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
32423            next: ptr::null_mut(),
32424            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
32425            preferred_gop_frame_count: u32::default(),
32426            preferred_idr_period: u32::default(),
32427            preferred_consecutive_b_frame_count: u32::default(),
32428            preferred_sub_layer_count: u32::default(),
32429            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
32430            preferred_max_l0_reference_count: u32::default(),
32431            preferred_max_l1_reference_count: u32::default(),
32432        }
32433    }
32434}
32435
32436unsafe impl Send for VideoEncodeH265QualityLevelPropertiesKHR {}
32437unsafe impl Sync for VideoEncodeH265QualityLevelPropertiesKHR {}
32438
32439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
32440#[repr(C)]
32441#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32442pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
32443    pub s_type: StructureType,
32444    pub next: *mut c_void,
32445    pub min_qp_delta: i32,
32446    pub max_qp_delta: i32,
32447}
32448
32449impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
32450    #[inline]
32451    fn default() -> Self {
32452        Self {
32453            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
32454            next: ptr::null_mut(),
32455            min_qp_delta: i32::default(),
32456            max_qp_delta: i32::default(),
32457        }
32458    }
32459}
32460
32461unsafe impl Send for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
32462unsafe impl Sync for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
32463
32464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
32465#[repr(C)]
32466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32467pub struct VideoEncodeH265RateControlInfoKHR {
32468    pub s_type: StructureType,
32469    pub next: *const c_void,
32470    pub flags: VideoEncodeH265RateControlFlagsKHR,
32471    pub gop_frame_count: u32,
32472    pub idr_period: u32,
32473    pub consecutive_b_frame_count: u32,
32474    pub sub_layer_count: u32,
32475}
32476
32477impl Default for VideoEncodeH265RateControlInfoKHR {
32478    #[inline]
32479    fn default() -> Self {
32480        Self {
32481            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
32482            next: ptr::null(),
32483            flags: VideoEncodeH265RateControlFlagsKHR::default(),
32484            gop_frame_count: u32::default(),
32485            idr_period: u32::default(),
32486            consecutive_b_frame_count: u32::default(),
32487            sub_layer_count: u32::default(),
32488        }
32489    }
32490}
32491
32492unsafe impl Send for VideoEncodeH265RateControlInfoKHR {}
32493unsafe impl Sync for VideoEncodeH265RateControlInfoKHR {}
32494
32495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
32496#[repr(C)]
32497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32498pub struct VideoEncodeH265RateControlLayerInfoKHR {
32499    pub s_type: StructureType,
32500    pub next: *const c_void,
32501    pub use_min_qp: Bool32,
32502    pub min_qp: VideoEncodeH265QpKHR,
32503    pub use_max_qp: Bool32,
32504    pub max_qp: VideoEncodeH265QpKHR,
32505    pub use_max_frame_size: Bool32,
32506    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
32507}
32508
32509impl Default for VideoEncodeH265RateControlLayerInfoKHR {
32510    #[inline]
32511    fn default() -> Self {
32512        Self {
32513            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
32514            next: ptr::null(),
32515            use_min_qp: Bool32::default(),
32516            min_qp: VideoEncodeH265QpKHR::default(),
32517            use_max_qp: Bool32::default(),
32518            max_qp: VideoEncodeH265QpKHR::default(),
32519            use_max_frame_size: Bool32::default(),
32520            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
32521        }
32522    }
32523}
32524
32525unsafe impl Send for VideoEncodeH265RateControlLayerInfoKHR {}
32526unsafe impl Sync for VideoEncodeH265RateControlLayerInfoKHR {}
32527
32528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
32529#[repr(C)]
32530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32531pub struct VideoEncodeH265SessionCreateInfoKHR {
32532    pub s_type: StructureType,
32533    pub next: *const c_void,
32534    pub use_max_level_idc: Bool32,
32535    pub max_level_idc: video::StdVideoH265LevelIdc,
32536}
32537
32538impl Default for VideoEncodeH265SessionCreateInfoKHR {
32539    #[inline]
32540    fn default() -> Self {
32541        Self {
32542            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
32543            next: ptr::null(),
32544            use_max_level_idc: Bool32::default(),
32545            max_level_idc: video::StdVideoH265LevelIdc::default(),
32546        }
32547    }
32548}
32549
32550unsafe impl Send for VideoEncodeH265SessionCreateInfoKHR {}
32551unsafe impl Sync for VideoEncodeH265SessionCreateInfoKHR {}
32552
32553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
32554#[repr(C)]
32555#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32556pub struct VideoEncodeH265SessionParametersAddInfoKHR {
32557    pub s_type: StructureType,
32558    pub next: *const c_void,
32559    pub std_vps_count: u32,
32560    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
32561    pub std_sps_count: u32,
32562    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
32563    pub std_pps_count: u32,
32564    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
32565}
32566
32567impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
32568    #[inline]
32569    fn default() -> Self {
32570        Self {
32571            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
32572            next: ptr::null(),
32573            std_vps_count: u32::default(),
32574            std_vp_ss: ptr::null(),
32575            std_sps_count: u32::default(),
32576            std_sp_ss: ptr::null(),
32577            std_pps_count: u32::default(),
32578            std_pp_ss: ptr::null(),
32579        }
32580    }
32581}
32582
32583unsafe impl Send for VideoEncodeH265SessionParametersAddInfoKHR {}
32584unsafe impl Sync for VideoEncodeH265SessionParametersAddInfoKHR {}
32585
32586/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
32587#[repr(C)]
32588#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32589pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
32590    pub s_type: StructureType,
32591    pub next: *const c_void,
32592    pub max_std_vps_count: u32,
32593    pub max_std_sps_count: u32,
32594    pub max_std_pps_count: u32,
32595    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
32596}
32597
32598impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
32599    #[inline]
32600    fn default() -> Self {
32601        Self {
32602            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
32603            next: ptr::null(),
32604            max_std_vps_count: u32::default(),
32605            max_std_sps_count: u32::default(),
32606            max_std_pps_count: u32::default(),
32607            parameters_add_info: ptr::null(),
32608        }
32609    }
32610}
32611
32612unsafe impl Send for VideoEncodeH265SessionParametersCreateInfoKHR {}
32613unsafe impl Sync for VideoEncodeH265SessionParametersCreateInfoKHR {}
32614
32615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
32616#[repr(C)]
32617#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32618pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
32619    pub s_type: StructureType,
32620    pub next: *mut c_void,
32621    pub has_std_vps_overrides: Bool32,
32622    pub has_std_sps_overrides: Bool32,
32623    pub has_std_pps_overrides: Bool32,
32624}
32625
32626impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
32627    #[inline]
32628    fn default() -> Self {
32629        Self {
32630            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32631            next: ptr::null_mut(),
32632            has_std_vps_overrides: Bool32::default(),
32633            has_std_sps_overrides: Bool32::default(),
32634            has_std_pps_overrides: Bool32::default(),
32635        }
32636    }
32637}
32638
32639unsafe impl Send for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
32640unsafe impl Sync for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
32641
32642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
32643#[repr(C)]
32644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32645pub struct VideoEncodeH265SessionParametersGetInfoKHR {
32646    pub s_type: StructureType,
32647    pub next: *const c_void,
32648    pub write_std_vps: Bool32,
32649    pub write_std_sps: Bool32,
32650    pub write_std_pps: Bool32,
32651    pub std_vps_id: u32,
32652    pub std_sps_id: u32,
32653    pub std_pps_id: u32,
32654}
32655
32656impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
32657    #[inline]
32658    fn default() -> Self {
32659        Self {
32660            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
32661            next: ptr::null(),
32662            write_std_vps: Bool32::default(),
32663            write_std_sps: Bool32::default(),
32664            write_std_pps: Bool32::default(),
32665            std_vps_id: u32::default(),
32666            std_sps_id: u32::default(),
32667            std_pps_id: u32::default(),
32668        }
32669    }
32670}
32671
32672unsafe impl Send for VideoEncodeH265SessionParametersGetInfoKHR {}
32673unsafe impl Sync for VideoEncodeH265SessionParametersGetInfoKHR {}
32674
32675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
32676#[repr(C)]
32677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32678pub struct VideoEncodeInfoKHR {
32679    pub s_type: StructureType,
32680    pub next: *const c_void,
32681    pub flags: VideoEncodeFlagsKHR,
32682    pub dst_buffer: Buffer,
32683    pub dst_buffer_offset: DeviceSize,
32684    pub dst_buffer_range: DeviceSize,
32685    pub src_picture_resource: VideoPictureResourceInfoKHR,
32686    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
32687    pub reference_slot_count: u32,
32688    pub reference_slots: *const VideoReferenceSlotInfoKHR,
32689    pub preceding_externally_encoded_bytes: u32,
32690}
32691
32692impl Default for VideoEncodeInfoKHR {
32693    #[inline]
32694    fn default() -> Self {
32695        Self {
32696            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
32697            next: ptr::null(),
32698            flags: VideoEncodeFlagsKHR::default(),
32699            dst_buffer: Buffer::default(),
32700            dst_buffer_offset: DeviceSize::default(),
32701            dst_buffer_range: DeviceSize::default(),
32702            src_picture_resource: VideoPictureResourceInfoKHR::default(),
32703            setup_reference_slot: ptr::null(),
32704            reference_slot_count: u32::default(),
32705            reference_slots: ptr::null(),
32706            preceding_externally_encoded_bytes: u32::default(),
32707        }
32708    }
32709}
32710
32711unsafe impl Send for VideoEncodeInfoKHR {}
32712unsafe impl Sync for VideoEncodeInfoKHR {}
32713
32714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html>
32715#[repr(C)]
32716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32717pub struct VideoEncodeIntraRefreshCapabilitiesKHR {
32718    pub s_type: StructureType,
32719    pub next: *mut c_void,
32720    pub intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR,
32721    pub max_intra_refresh_cycle_duration: u32,
32722    pub max_intra_refresh_active_reference_pictures: u32,
32723    pub partition_independent_intra_refresh_regions: Bool32,
32724    pub non_rectangular_intra_refresh_regions: Bool32,
32725}
32726
32727impl Default for VideoEncodeIntraRefreshCapabilitiesKHR {
32728    #[inline]
32729    fn default() -> Self {
32730        Self {
32731            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR,
32732            next: ptr::null_mut(),
32733            intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR::default(),
32734            max_intra_refresh_cycle_duration: u32::default(),
32735            max_intra_refresh_active_reference_pictures: u32::default(),
32736            partition_independent_intra_refresh_regions: Bool32::default(),
32737            non_rectangular_intra_refresh_regions: Bool32::default(),
32738        }
32739    }
32740}
32741
32742unsafe impl Send for VideoEncodeIntraRefreshCapabilitiesKHR {}
32743unsafe impl Sync for VideoEncodeIntraRefreshCapabilitiesKHR {}
32744
32745/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html>
32746#[repr(C)]
32747#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32748pub struct VideoEncodeIntraRefreshInfoKHR {
32749    pub s_type: StructureType,
32750    pub next: *const c_void,
32751    pub intra_refresh_cycle_duration: u32,
32752    pub intra_refresh_index: u32,
32753}
32754
32755impl Default for VideoEncodeIntraRefreshInfoKHR {
32756    #[inline]
32757    fn default() -> Self {
32758        Self {
32759            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR,
32760            next: ptr::null(),
32761            intra_refresh_cycle_duration: u32::default(),
32762            intra_refresh_index: u32::default(),
32763        }
32764    }
32765}
32766
32767unsafe impl Send for VideoEncodeIntraRefreshInfoKHR {}
32768unsafe impl Sync for VideoEncodeIntraRefreshInfoKHR {}
32769
32770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeProfileRgbConversionInfoVALVE.html>
32771#[repr(C)]
32772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32773pub struct VideoEncodeProfileRgbConversionInfoVALVE {
32774    pub s_type: StructureType,
32775    pub next: *const c_void,
32776    pub perform_encode_rgb_conversion: Bool32,
32777}
32778
32779impl Default for VideoEncodeProfileRgbConversionInfoVALVE {
32780    #[inline]
32781    fn default() -> Self {
32782        Self {
32783            s_type: StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE,
32784            next: ptr::null(),
32785            perform_encode_rgb_conversion: Bool32::default(),
32786        }
32787    }
32788}
32789
32790unsafe impl Send for VideoEncodeProfileRgbConversionInfoVALVE {}
32791unsafe impl Sync for VideoEncodeProfileRgbConversionInfoVALVE {}
32792
32793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
32794#[repr(C)]
32795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32796pub struct VideoEncodeQualityLevelInfoKHR {
32797    pub s_type: StructureType,
32798    pub next: *const c_void,
32799    pub quality_level: u32,
32800}
32801
32802impl Default for VideoEncodeQualityLevelInfoKHR {
32803    #[inline]
32804    fn default() -> Self {
32805        Self {
32806            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
32807            next: ptr::null(),
32808            quality_level: u32::default(),
32809        }
32810    }
32811}
32812
32813unsafe impl Send for VideoEncodeQualityLevelInfoKHR {}
32814unsafe impl Sync for VideoEncodeQualityLevelInfoKHR {}
32815
32816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
32817#[repr(C)]
32818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32819pub struct VideoEncodeQualityLevelPropertiesKHR {
32820    pub s_type: StructureType,
32821    pub next: *mut c_void,
32822    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
32823    pub preferred_rate_control_layer_count: u32,
32824}
32825
32826impl Default for VideoEncodeQualityLevelPropertiesKHR {
32827    #[inline]
32828    fn default() -> Self {
32829        Self {
32830            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
32831            next: ptr::null_mut(),
32832            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
32833            preferred_rate_control_layer_count: u32::default(),
32834        }
32835    }
32836}
32837
32838unsafe impl Send for VideoEncodeQualityLevelPropertiesKHR {}
32839unsafe impl Sync for VideoEncodeQualityLevelPropertiesKHR {}
32840
32841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
32842#[repr(C)]
32843#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32844pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
32845    pub s_type: StructureType,
32846    pub next: *mut c_void,
32847    pub max_quantization_map_extent: Extent2D,
32848}
32849
32850impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
32851    #[inline]
32852    fn default() -> Self {
32853        Self {
32854            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
32855            next: ptr::null_mut(),
32856            max_quantization_map_extent: Extent2D::default(),
32857        }
32858    }
32859}
32860
32861unsafe impl Send for VideoEncodeQuantizationMapCapabilitiesKHR {}
32862unsafe impl Sync for VideoEncodeQuantizationMapCapabilitiesKHR {}
32863
32864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
32865#[repr(C)]
32866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32867pub struct VideoEncodeQuantizationMapInfoKHR {
32868    pub s_type: StructureType,
32869    pub next: *const c_void,
32870    pub quantization_map: ImageView,
32871    pub quantization_map_extent: Extent2D,
32872}
32873
32874impl Default for VideoEncodeQuantizationMapInfoKHR {
32875    #[inline]
32876    fn default() -> Self {
32877        Self {
32878            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
32879            next: ptr::null(),
32880            quantization_map: ImageView::default(),
32881            quantization_map_extent: Extent2D::default(),
32882        }
32883    }
32884}
32885
32886unsafe impl Send for VideoEncodeQuantizationMapInfoKHR {}
32887unsafe impl Sync for VideoEncodeQuantizationMapInfoKHR {}
32888
32889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
32890#[repr(C)]
32891#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32892pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
32893    pub s_type: StructureType,
32894    pub next: *const c_void,
32895    pub quantization_map_texel_size: Extent2D,
32896}
32897
32898impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
32899    #[inline]
32900    fn default() -> Self {
32901        Self {
32902            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
32903            next: ptr::null(),
32904            quantization_map_texel_size: Extent2D::default(),
32905        }
32906    }
32907}
32908
32909unsafe impl Send for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
32910unsafe impl Sync for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
32911
32912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
32913#[repr(C)]
32914#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32915pub struct VideoEncodeRateControlInfoKHR {
32916    pub s_type: StructureType,
32917    pub next: *const c_void,
32918    pub flags: VideoEncodeRateControlFlagsKHR,
32919    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
32920    pub layer_count: u32,
32921    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
32922    pub virtual_buffer_size_in_ms: u32,
32923    pub initial_virtual_buffer_size_in_ms: u32,
32924}
32925
32926impl Default for VideoEncodeRateControlInfoKHR {
32927    #[inline]
32928    fn default() -> Self {
32929        Self {
32930            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
32931            next: ptr::null(),
32932            flags: VideoEncodeRateControlFlagsKHR::default(),
32933            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
32934            layer_count: u32::default(),
32935            layers: ptr::null(),
32936            virtual_buffer_size_in_ms: u32::default(),
32937            initial_virtual_buffer_size_in_ms: u32::default(),
32938        }
32939    }
32940}
32941
32942unsafe impl Send for VideoEncodeRateControlInfoKHR {}
32943unsafe impl Sync for VideoEncodeRateControlInfoKHR {}
32944
32945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
32946#[repr(C)]
32947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32948pub struct VideoEncodeRateControlLayerInfoKHR {
32949    pub s_type: StructureType,
32950    pub next: *const c_void,
32951    pub average_bitrate: u64,
32952    pub max_bitrate: u64,
32953    pub frame_rate_numerator: u32,
32954    pub frame_rate_denominator: u32,
32955}
32956
32957impl Default for VideoEncodeRateControlLayerInfoKHR {
32958    #[inline]
32959    fn default() -> Self {
32960        Self {
32961            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
32962            next: ptr::null(),
32963            average_bitrate: u64::default(),
32964            max_bitrate: u64::default(),
32965            frame_rate_numerator: u32::default(),
32966            frame_rate_denominator: u32::default(),
32967        }
32968    }
32969}
32970
32971unsafe impl Send for VideoEncodeRateControlLayerInfoKHR {}
32972unsafe impl Sync for VideoEncodeRateControlLayerInfoKHR {}
32973
32974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbConversionCapabilitiesVALVE.html>
32975#[repr(C)]
32976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32977pub struct VideoEncodeRgbConversionCapabilitiesVALVE {
32978    pub s_type: StructureType,
32979    pub next: *mut c_void,
32980    pub rgb_models: VideoEncodeRgbModelConversionFlagsVALVE,
32981    pub rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE,
32982    pub x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
32983    pub y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
32984}
32985
32986impl Default for VideoEncodeRgbConversionCapabilitiesVALVE {
32987    #[inline]
32988    fn default() -> Self {
32989        Self {
32990            s_type: StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE,
32991            next: ptr::null_mut(),
32992            rgb_models: VideoEncodeRgbModelConversionFlagsVALVE::default(),
32993            rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
32994            x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32995            y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32996        }
32997    }
32998}
32999
33000unsafe impl Send for VideoEncodeRgbConversionCapabilitiesVALVE {}
33001unsafe impl Sync for VideoEncodeRgbConversionCapabilitiesVALVE {}
33002
33003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html>
33004#[repr(C)]
33005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33006pub struct VideoEncodeSessionIntraRefreshCreateInfoKHR {
33007    pub s_type: StructureType,
33008    pub next: *const c_void,
33009    pub intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR,
33010}
33011
33012impl Default for VideoEncodeSessionIntraRefreshCreateInfoKHR {
33013    #[inline]
33014    fn default() -> Self {
33015        Self {
33016            s_type: StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR,
33017            next: ptr::null(),
33018            intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR::default(),
33019        }
33020    }
33021}
33022
33023unsafe impl Send for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
33024unsafe impl Sync for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
33025
33026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
33027#[repr(C)]
33028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33029pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
33030    pub s_type: StructureType,
33031    pub next: *mut c_void,
33032    pub has_overrides: Bool32,
33033}
33034
33035impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
33036    #[inline]
33037    fn default() -> Self {
33038        Self {
33039            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
33040            next: ptr::null_mut(),
33041            has_overrides: Bool32::default(),
33042        }
33043    }
33044}
33045
33046unsafe impl Send for VideoEncodeSessionParametersFeedbackInfoKHR {}
33047unsafe impl Sync for VideoEncodeSessionParametersFeedbackInfoKHR {}
33048
33049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
33050#[repr(C)]
33051#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33052pub struct VideoEncodeSessionParametersGetInfoKHR {
33053    pub s_type: StructureType,
33054    pub next: *const c_void,
33055    pub video_session_parameters: VideoSessionParametersKHR,
33056}
33057
33058impl Default for VideoEncodeSessionParametersGetInfoKHR {
33059    #[inline]
33060    fn default() -> Self {
33061        Self {
33062            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
33063            next: ptr::null(),
33064            video_session_parameters: VideoSessionParametersKHR::default(),
33065        }
33066    }
33067}
33068
33069unsafe impl Send for VideoEncodeSessionParametersGetInfoKHR {}
33070unsafe impl Sync for VideoEncodeSessionParametersGetInfoKHR {}
33071
33072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionRgbConversionCreateInfoVALVE.html>
33073#[repr(C)]
33074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33075pub struct VideoEncodeSessionRgbConversionCreateInfoVALVE {
33076    pub s_type: StructureType,
33077    pub next: *const c_void,
33078    pub rgb_model: VideoEncodeRgbModelConversionFlagsVALVE,
33079    pub rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE,
33080    pub x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
33081    pub y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
33082}
33083
33084impl Default for VideoEncodeSessionRgbConversionCreateInfoVALVE {
33085    #[inline]
33086    fn default() -> Self {
33087        Self {
33088            s_type: StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE,
33089            next: ptr::null(),
33090            rgb_model: VideoEncodeRgbModelConversionFlagsVALVE::default(),
33091            rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
33092            x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
33093            y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
33094        }
33095    }
33096}
33097
33098unsafe impl Send for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
33099unsafe impl Sync for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
33100
33101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
33102#[repr(C)]
33103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33104pub struct VideoEncodeUsageInfoKHR {
33105    pub s_type: StructureType,
33106    pub next: *const c_void,
33107    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
33108    pub video_content_hints: VideoEncodeContentFlagsKHR,
33109    pub tuning_mode: VideoEncodeTuningModeKHR,
33110}
33111
33112impl Default for VideoEncodeUsageInfoKHR {
33113    #[inline]
33114    fn default() -> Self {
33115        Self {
33116            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
33117            next: ptr::null(),
33118            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
33119            video_content_hints: VideoEncodeContentFlagsKHR::default(),
33120            tuning_mode: VideoEncodeTuningModeKHR::default(),
33121        }
33122    }
33123}
33124
33125unsafe impl Send for VideoEncodeUsageInfoKHR {}
33126unsafe impl Sync for VideoEncodeUsageInfoKHR {}
33127
33128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
33129#[repr(C)]
33130#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33131pub struct VideoEndCodingInfoKHR {
33132    pub s_type: StructureType,
33133    pub next: *const c_void,
33134    pub flags: VideoEndCodingFlagsKHR,
33135}
33136
33137impl Default for VideoEndCodingInfoKHR {
33138    #[inline]
33139    fn default() -> Self {
33140        Self {
33141            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
33142            next: ptr::null(),
33143            flags: VideoEndCodingFlagsKHR::default(),
33144        }
33145    }
33146}
33147
33148unsafe impl Send for VideoEndCodingInfoKHR {}
33149unsafe impl Sync for VideoEndCodingInfoKHR {}
33150
33151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
33152#[repr(C)]
33153#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33154pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
33155    pub s_type: StructureType,
33156    pub next: *mut c_void,
33157    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
33158}
33159
33160impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
33161    #[inline]
33162    fn default() -> Self {
33163        Self {
33164            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
33165            next: ptr::null_mut(),
33166            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
33167        }
33168    }
33169}
33170
33171unsafe impl Send for VideoFormatAV1QuantizationMapPropertiesKHR {}
33172unsafe impl Sync for VideoFormatAV1QuantizationMapPropertiesKHR {}
33173
33174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
33175#[repr(C)]
33176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33177pub struct VideoFormatH265QuantizationMapPropertiesKHR {
33178    pub s_type: StructureType,
33179    pub next: *mut c_void,
33180    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
33181}
33182
33183impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
33184    #[inline]
33185    fn default() -> Self {
33186        Self {
33187            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
33188            next: ptr::null_mut(),
33189            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
33190        }
33191    }
33192}
33193
33194unsafe impl Send for VideoFormatH265QuantizationMapPropertiesKHR {}
33195unsafe impl Sync for VideoFormatH265QuantizationMapPropertiesKHR {}
33196
33197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
33198#[repr(C)]
33199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33200pub struct VideoFormatPropertiesKHR {
33201    pub s_type: StructureType,
33202    pub next: *mut c_void,
33203    pub format: Format,
33204    pub component_mapping: ComponentMapping,
33205    pub image_create_flags: ImageCreateFlags,
33206    pub image_type: ImageType,
33207    pub image_tiling: ImageTiling,
33208    pub image_usage_flags: ImageUsageFlags,
33209}
33210
33211impl Default for VideoFormatPropertiesKHR {
33212    #[inline]
33213    fn default() -> Self {
33214        Self {
33215            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
33216            next: ptr::null_mut(),
33217            format: Format::default(),
33218            component_mapping: ComponentMapping::default(),
33219            image_create_flags: ImageCreateFlags::default(),
33220            image_type: ImageType::default(),
33221            image_tiling: ImageTiling::default(),
33222            image_usage_flags: ImageUsageFlags::default(),
33223        }
33224    }
33225}
33226
33227unsafe impl Send for VideoFormatPropertiesKHR {}
33228unsafe impl Sync for VideoFormatPropertiesKHR {}
33229
33230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
33231#[repr(C)]
33232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33233pub struct VideoFormatQuantizationMapPropertiesKHR {
33234    pub s_type: StructureType,
33235    pub next: *mut c_void,
33236    pub quantization_map_texel_size: Extent2D,
33237}
33238
33239impl Default for VideoFormatQuantizationMapPropertiesKHR {
33240    #[inline]
33241    fn default() -> Self {
33242        Self {
33243            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
33244            next: ptr::null_mut(),
33245            quantization_map_texel_size: Extent2D::default(),
33246        }
33247    }
33248}
33249
33250unsafe impl Send for VideoFormatQuantizationMapPropertiesKHR {}
33251unsafe impl Sync for VideoFormatQuantizationMapPropertiesKHR {}
33252
33253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
33254#[repr(C)]
33255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33256pub struct VideoInlineQueryInfoKHR {
33257    pub s_type: StructureType,
33258    pub next: *const c_void,
33259    pub query_pool: QueryPool,
33260    pub first_query: u32,
33261    pub query_count: u32,
33262}
33263
33264impl Default for VideoInlineQueryInfoKHR {
33265    #[inline]
33266    fn default() -> Self {
33267        Self {
33268            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
33269            next: ptr::null(),
33270            query_pool: QueryPool::default(),
33271            first_query: u32::default(),
33272            query_count: u32::default(),
33273        }
33274    }
33275}
33276
33277unsafe impl Send for VideoInlineQueryInfoKHR {}
33278unsafe impl Sync for VideoInlineQueryInfoKHR {}
33279
33280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
33281#[repr(C)]
33282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33283pub struct VideoPictureResourceInfoKHR {
33284    pub s_type: StructureType,
33285    pub next: *const c_void,
33286    pub coded_offset: Offset2D,
33287    pub coded_extent: Extent2D,
33288    pub base_array_layer: u32,
33289    pub image_view_binding: ImageView,
33290}
33291
33292impl Default for VideoPictureResourceInfoKHR {
33293    #[inline]
33294    fn default() -> Self {
33295        Self {
33296            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
33297            next: ptr::null(),
33298            coded_offset: Offset2D::default(),
33299            coded_extent: Extent2D::default(),
33300            base_array_layer: u32::default(),
33301            image_view_binding: ImageView::default(),
33302        }
33303    }
33304}
33305
33306unsafe impl Send for VideoPictureResourceInfoKHR {}
33307unsafe impl Sync for VideoPictureResourceInfoKHR {}
33308
33309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
33310#[repr(C)]
33311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33312pub struct VideoProfileInfoKHR {
33313    pub s_type: StructureType,
33314    pub next: *const c_void,
33315    pub video_codec_operation: VideoCodecOperationFlagsKHR,
33316    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
33317    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
33318    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
33319}
33320
33321impl Default for VideoProfileInfoKHR {
33322    #[inline]
33323    fn default() -> Self {
33324        Self {
33325            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
33326            next: ptr::null(),
33327            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
33328            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
33329            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
33330            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
33331        }
33332    }
33333}
33334
33335unsafe impl Send for VideoProfileInfoKHR {}
33336unsafe impl Sync for VideoProfileInfoKHR {}
33337
33338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
33339#[repr(C)]
33340#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33341pub struct VideoProfileListInfoKHR {
33342    pub s_type: StructureType,
33343    pub next: *const c_void,
33344    pub profile_count: u32,
33345    pub profiles: *const VideoProfileInfoKHR,
33346}
33347
33348impl Default for VideoProfileListInfoKHR {
33349    #[inline]
33350    fn default() -> Self {
33351        Self {
33352            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
33353            next: ptr::null(),
33354            profile_count: u32::default(),
33355            profiles: ptr::null(),
33356        }
33357    }
33358}
33359
33360unsafe impl Send for VideoProfileListInfoKHR {}
33361unsafe impl Sync for VideoProfileListInfoKHR {}
33362
33363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html>
33364#[repr(C)]
33365#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33366pub struct VideoReferenceIntraRefreshInfoKHR {
33367    pub s_type: StructureType,
33368    pub next: *const c_void,
33369    pub dirty_intra_refresh_regions: u32,
33370}
33371
33372impl Default for VideoReferenceIntraRefreshInfoKHR {
33373    #[inline]
33374    fn default() -> Self {
33375        Self {
33376            s_type: StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR,
33377            next: ptr::null(),
33378            dirty_intra_refresh_regions: u32::default(),
33379        }
33380    }
33381}
33382
33383unsafe impl Send for VideoReferenceIntraRefreshInfoKHR {}
33384unsafe impl Sync for VideoReferenceIntraRefreshInfoKHR {}
33385
33386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
33387#[repr(C)]
33388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33389pub struct VideoReferenceSlotInfoKHR {
33390    pub s_type: StructureType,
33391    pub next: *const c_void,
33392    pub slot_index: i32,
33393    pub picture_resource: *const VideoPictureResourceInfoKHR,
33394}
33395
33396impl Default for VideoReferenceSlotInfoKHR {
33397    #[inline]
33398    fn default() -> Self {
33399        Self {
33400            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
33401            next: ptr::null(),
33402            slot_index: i32::default(),
33403            picture_resource: ptr::null(),
33404        }
33405    }
33406}
33407
33408unsafe impl Send for VideoReferenceSlotInfoKHR {}
33409unsafe impl Sync for VideoReferenceSlotInfoKHR {}
33410
33411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
33412#[repr(C)]
33413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33414pub struct VideoSessionCreateInfoKHR {
33415    pub s_type: StructureType,
33416    pub next: *const c_void,
33417    pub queue_family_index: u32,
33418    pub flags: VideoSessionCreateFlagsKHR,
33419    pub video_profile: *const VideoProfileInfoKHR,
33420    pub picture_format: Format,
33421    pub max_coded_extent: Extent2D,
33422    pub reference_picture_format: Format,
33423    pub max_dpb_slots: u32,
33424    pub max_active_reference_pictures: u32,
33425    pub std_header_version: *const ExtensionProperties,
33426}
33427
33428impl Default for VideoSessionCreateInfoKHR {
33429    #[inline]
33430    fn default() -> Self {
33431        Self {
33432            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
33433            next: ptr::null(),
33434            queue_family_index: u32::default(),
33435            flags: VideoSessionCreateFlagsKHR::default(),
33436            video_profile: ptr::null(),
33437            picture_format: Format::default(),
33438            max_coded_extent: Extent2D::default(),
33439            reference_picture_format: Format::default(),
33440            max_dpb_slots: u32::default(),
33441            max_active_reference_pictures: u32::default(),
33442            std_header_version: ptr::null(),
33443        }
33444    }
33445}
33446
33447unsafe impl Send for VideoSessionCreateInfoKHR {}
33448unsafe impl Sync for VideoSessionCreateInfoKHR {}
33449
33450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
33451#[repr(C)]
33452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33453pub struct VideoSessionMemoryRequirementsKHR {
33454    pub s_type: StructureType,
33455    pub next: *mut c_void,
33456    pub memory_bind_index: u32,
33457    pub memory_requirements: MemoryRequirements,
33458}
33459
33460impl Default for VideoSessionMemoryRequirementsKHR {
33461    #[inline]
33462    fn default() -> Self {
33463        Self {
33464            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
33465            next: ptr::null_mut(),
33466            memory_bind_index: u32::default(),
33467            memory_requirements: MemoryRequirements::default(),
33468        }
33469    }
33470}
33471
33472unsafe impl Send for VideoSessionMemoryRequirementsKHR {}
33473unsafe impl Sync for VideoSessionMemoryRequirementsKHR {}
33474
33475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
33476#[repr(C)]
33477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33478pub struct VideoSessionParametersCreateInfoKHR {
33479    pub s_type: StructureType,
33480    pub next: *const c_void,
33481    pub flags: VideoSessionParametersCreateFlagsKHR,
33482    pub video_session_parameters_template: VideoSessionParametersKHR,
33483    pub video_session: VideoSessionKHR,
33484}
33485
33486impl Default for VideoSessionParametersCreateInfoKHR {
33487    #[inline]
33488    fn default() -> Self {
33489        Self {
33490            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
33491            next: ptr::null(),
33492            flags: VideoSessionParametersCreateFlagsKHR::default(),
33493            video_session_parameters_template: VideoSessionParametersKHR::default(),
33494            video_session: VideoSessionKHR::default(),
33495        }
33496    }
33497}
33498
33499unsafe impl Send for VideoSessionParametersCreateInfoKHR {}
33500unsafe impl Sync for VideoSessionParametersCreateInfoKHR {}
33501
33502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
33503#[repr(C)]
33504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33505pub struct VideoSessionParametersUpdateInfoKHR {
33506    pub s_type: StructureType,
33507    pub next: *const c_void,
33508    pub update_sequence_count: u32,
33509}
33510
33511impl Default for VideoSessionParametersUpdateInfoKHR {
33512    #[inline]
33513    fn default() -> Self {
33514        Self {
33515            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
33516            next: ptr::null(),
33517            update_sequence_count: u32::default(),
33518        }
33519    }
33520}
33521
33522unsafe impl Send for VideoSessionParametersUpdateInfoKHR {}
33523unsafe impl Sync for VideoSessionParametersUpdateInfoKHR {}
33524
33525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
33526#[repr(C)]
33527#[derive(Copy, Clone, Default, Debug, PartialEq)]
33528pub struct Viewport {
33529    pub x: f32,
33530    pub y: f32,
33531    pub width: f32,
33532    pub height: f32,
33533    pub min_depth: f32,
33534    pub max_depth: f32,
33535}
33536
33537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
33538#[repr(C)]
33539#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
33540pub struct ViewportSwizzleNV {
33541    pub x: ViewportCoordinateSwizzleNV,
33542    pub y: ViewportCoordinateSwizzleNV,
33543    pub z: ViewportCoordinateSwizzleNV,
33544    pub w: ViewportCoordinateSwizzleNV,
33545}
33546
33547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
33548#[repr(C)]
33549#[derive(Copy, Clone, Default, Debug, PartialEq)]
33550pub struct ViewportWScalingNV {
33551    pub xcoeff: f32,
33552    pub ycoeff: f32,
33553}
33554
33555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
33556#[repr(C)]
33557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33558pub struct WaylandSurfaceCreateInfoKHR {
33559    pub s_type: StructureType,
33560    pub next: *const c_void,
33561    pub flags: WaylandSurfaceCreateFlagsKHR,
33562    pub display: *mut wl_display,
33563    pub surface: *mut wl_surface,
33564}
33565
33566impl Default for WaylandSurfaceCreateInfoKHR {
33567    #[inline]
33568    fn default() -> Self {
33569        Self {
33570            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
33571            next: ptr::null(),
33572            flags: WaylandSurfaceCreateFlagsKHR::default(),
33573            display: ptr::null_mut(),
33574            surface: ptr::null_mut(),
33575        }
33576    }
33577}
33578
33579unsafe impl Send for WaylandSurfaceCreateInfoKHR {}
33580unsafe impl Sync for WaylandSurfaceCreateInfoKHR {}
33581
33582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
33583#[repr(C)]
33584#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33585pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
33586    pub s_type: StructureType,
33587    pub next: *const c_void,
33588    pub acquire_count: u32,
33589    pub acquire_syncs: *const DeviceMemory,
33590    pub acquire_keys: *const u64,
33591    pub acquire_timeouts: *const u32,
33592    pub release_count: u32,
33593    pub release_syncs: *const DeviceMemory,
33594    pub release_keys: *const u64,
33595}
33596
33597impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
33598    #[inline]
33599    fn default() -> Self {
33600        Self {
33601            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
33602            next: ptr::null(),
33603            acquire_count: u32::default(),
33604            acquire_syncs: ptr::null(),
33605            acquire_keys: ptr::null(),
33606            acquire_timeouts: ptr::null(),
33607            release_count: u32::default(),
33608            release_syncs: ptr::null(),
33609            release_keys: ptr::null(),
33610        }
33611    }
33612}
33613
33614unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoKHR {}
33615unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoKHR {}
33616
33617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
33618#[repr(C)]
33619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33620pub struct Win32KeyedMutexAcquireReleaseInfoNV {
33621    pub s_type: StructureType,
33622    pub next: *const c_void,
33623    pub acquire_count: u32,
33624    pub acquire_syncs: *const DeviceMemory,
33625    pub acquire_keys: *const u64,
33626    pub acquire_timeout_milliseconds: *const u32,
33627    pub release_count: u32,
33628    pub release_syncs: *const DeviceMemory,
33629    pub release_keys: *const u64,
33630}
33631
33632impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
33633    #[inline]
33634    fn default() -> Self {
33635        Self {
33636            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
33637            next: ptr::null(),
33638            acquire_count: u32::default(),
33639            acquire_syncs: ptr::null(),
33640            acquire_keys: ptr::null(),
33641            acquire_timeout_milliseconds: ptr::null(),
33642            release_count: u32::default(),
33643            release_syncs: ptr::null(),
33644            release_keys: ptr::null(),
33645        }
33646    }
33647}
33648
33649unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoNV {}
33650unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoNV {}
33651
33652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
33653#[repr(C)]
33654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33655pub struct Win32SurfaceCreateInfoKHR {
33656    pub s_type: StructureType,
33657    pub next: *const c_void,
33658    pub flags: Win32SurfaceCreateFlagsKHR,
33659    pub hinstance: HINSTANCE,
33660    pub hwnd: HWND,
33661}
33662
33663impl Default for Win32SurfaceCreateInfoKHR {
33664    #[inline]
33665    fn default() -> Self {
33666        Self {
33667            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
33668            next: ptr::null(),
33669            flags: Win32SurfaceCreateFlagsKHR::default(),
33670            hinstance: ptr::null_mut(),
33671            hwnd: ptr::null_mut(),
33672        }
33673    }
33674}
33675
33676unsafe impl Send for Win32SurfaceCreateInfoKHR {}
33677unsafe impl Sync for Win32SurfaceCreateInfoKHR {}
33678
33679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
33680#[repr(C)]
33681#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33682pub struct WriteDescriptorSet {
33683    pub s_type: StructureType,
33684    pub next: *const c_void,
33685    pub dst_set: DescriptorSet,
33686    pub dst_binding: u32,
33687    pub dst_array_element: u32,
33688    pub descriptor_count: u32,
33689    pub descriptor_type: DescriptorType,
33690    pub image_info: *const DescriptorImageInfo,
33691    pub buffer_info: *const DescriptorBufferInfo,
33692    pub texel_buffer_view: *const BufferView,
33693}
33694
33695impl Default for WriteDescriptorSet {
33696    #[inline]
33697    fn default() -> Self {
33698        Self {
33699            s_type: StructureType::WRITE_DESCRIPTOR_SET,
33700            next: ptr::null(),
33701            dst_set: DescriptorSet::default(),
33702            dst_binding: u32::default(),
33703            dst_array_element: u32::default(),
33704            descriptor_count: u32::default(),
33705            descriptor_type: DescriptorType::default(),
33706            image_info: ptr::null(),
33707            buffer_info: ptr::null(),
33708            texel_buffer_view: ptr::null(),
33709        }
33710    }
33711}
33712
33713unsafe impl Send for WriteDescriptorSet {}
33714unsafe impl Sync for WriteDescriptorSet {}
33715
33716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
33717#[repr(C)]
33718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33719pub struct WriteDescriptorSetAccelerationStructureKHR {
33720    pub s_type: StructureType,
33721    pub next: *const c_void,
33722    pub acceleration_structure_count: u32,
33723    pub acceleration_structures: *const AccelerationStructureKHR,
33724}
33725
33726impl Default for WriteDescriptorSetAccelerationStructureKHR {
33727    #[inline]
33728    fn default() -> Self {
33729        Self {
33730            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
33731            next: ptr::null(),
33732            acceleration_structure_count: u32::default(),
33733            acceleration_structures: ptr::null(),
33734        }
33735    }
33736}
33737
33738unsafe impl Send for WriteDescriptorSetAccelerationStructureKHR {}
33739unsafe impl Sync for WriteDescriptorSetAccelerationStructureKHR {}
33740
33741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
33742#[repr(C)]
33743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33744pub struct WriteDescriptorSetAccelerationStructureNV {
33745    pub s_type: StructureType,
33746    pub next: *const c_void,
33747    pub acceleration_structure_count: u32,
33748    pub acceleration_structures: *const AccelerationStructureNV,
33749}
33750
33751impl Default for WriteDescriptorSetAccelerationStructureNV {
33752    #[inline]
33753    fn default() -> Self {
33754        Self {
33755            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
33756            next: ptr::null(),
33757            acceleration_structure_count: u32::default(),
33758            acceleration_structures: ptr::null(),
33759        }
33760    }
33761}
33762
33763unsafe impl Send for WriteDescriptorSetAccelerationStructureNV {}
33764unsafe impl Sync for WriteDescriptorSetAccelerationStructureNV {}
33765
33766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
33767#[repr(C)]
33768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33769pub struct WriteDescriptorSetInlineUniformBlock {
33770    pub s_type: StructureType,
33771    pub next: *const c_void,
33772    pub data_size: u32,
33773    pub data: *const c_void,
33774}
33775
33776impl Default for WriteDescriptorSetInlineUniformBlock {
33777    #[inline]
33778    fn default() -> Self {
33779        Self {
33780            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
33781            next: ptr::null(),
33782            data_size: u32::default(),
33783            data: ptr::null(),
33784        }
33785    }
33786}
33787
33788unsafe impl Send for WriteDescriptorSetInlineUniformBlock {}
33789unsafe impl Sync for WriteDescriptorSetInlineUniformBlock {}
33790
33791/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
33792#[repr(C)]
33793#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33794pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
33795    pub s_type: StructureType,
33796    pub next: *mut c_void,
33797    pub acceleration_structure_count: u32,
33798    pub acceleration_structures: *const DeviceAddress,
33799}
33800
33801impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
33802    #[inline]
33803    fn default() -> Self {
33804        Self {
33805            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
33806            next: ptr::null_mut(),
33807            acceleration_structure_count: u32::default(),
33808            acceleration_structures: ptr::null(),
33809        }
33810    }
33811}
33812
33813unsafe impl Send for WriteDescriptorSetPartitionedAccelerationStructureNV {}
33814unsafe impl Sync for WriteDescriptorSetPartitionedAccelerationStructureNV {}
33815
33816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html>
33817#[repr(C)]
33818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33819pub struct WriteDescriptorSetTensorARM {
33820    pub s_type: StructureType,
33821    pub next: *const c_void,
33822    pub tensor_view_count: u32,
33823    pub tensor_views: *const TensorViewARM,
33824}
33825
33826impl Default for WriteDescriptorSetTensorARM {
33827    #[inline]
33828    fn default() -> Self {
33829        Self {
33830            s_type: StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM,
33831            next: ptr::null(),
33832            tensor_view_count: u32::default(),
33833            tensor_views: ptr::null(),
33834        }
33835    }
33836}
33837
33838unsafe impl Send for WriteDescriptorSetTensorARM {}
33839unsafe impl Sync for WriteDescriptorSetTensorARM {}
33840
33841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
33842#[repr(C)]
33843#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33844pub struct WriteIndirectExecutionSetPipelineEXT {
33845    pub s_type: StructureType,
33846    pub next: *const c_void,
33847    pub index: u32,
33848    pub pipeline: Pipeline,
33849}
33850
33851impl Default for WriteIndirectExecutionSetPipelineEXT {
33852    #[inline]
33853    fn default() -> Self {
33854        Self {
33855            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
33856            next: ptr::null(),
33857            index: u32::default(),
33858            pipeline: Pipeline::default(),
33859        }
33860    }
33861}
33862
33863unsafe impl Send for WriteIndirectExecutionSetPipelineEXT {}
33864unsafe impl Sync for WriteIndirectExecutionSetPipelineEXT {}
33865
33866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
33867#[repr(C)]
33868#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33869pub struct WriteIndirectExecutionSetShaderEXT {
33870    pub s_type: StructureType,
33871    pub next: *const c_void,
33872    pub index: u32,
33873    pub shader: ShaderEXT,
33874}
33875
33876impl Default for WriteIndirectExecutionSetShaderEXT {
33877    #[inline]
33878    fn default() -> Self {
33879        Self {
33880            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
33881            next: ptr::null(),
33882            index: u32::default(),
33883            shader: ShaderEXT::default(),
33884        }
33885    }
33886}
33887
33888unsafe impl Send for WriteIndirectExecutionSetShaderEXT {}
33889unsafe impl Sync for WriteIndirectExecutionSetShaderEXT {}
33890
33891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
33892#[repr(C)]
33893#[derive(Copy, Clone, Default, Debug, PartialEq)]
33894pub struct XYColorEXT {
33895    pub x: f32,
33896    pub y: f32,
33897}
33898
33899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
33900#[repr(C)]
33901#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33902pub struct XcbSurfaceCreateInfoKHR {
33903    pub s_type: StructureType,
33904    pub next: *const c_void,
33905    pub flags: XcbSurfaceCreateFlagsKHR,
33906    pub connection: *mut xcb_connection_t,
33907    pub window: xcb_window_t,
33908}
33909
33910impl Default for XcbSurfaceCreateInfoKHR {
33911    #[inline]
33912    fn default() -> Self {
33913        Self {
33914            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
33915            next: ptr::null(),
33916            flags: XcbSurfaceCreateFlagsKHR::default(),
33917            connection: ptr::null_mut(),
33918            window: xcb_window_t::default(),
33919        }
33920    }
33921}
33922
33923unsafe impl Send for XcbSurfaceCreateInfoKHR {}
33924unsafe impl Sync for XcbSurfaceCreateInfoKHR {}
33925
33926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
33927#[repr(C)]
33928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33929pub struct XlibSurfaceCreateInfoKHR {
33930    pub s_type: StructureType,
33931    pub next: *const c_void,
33932    pub flags: XlibSurfaceCreateFlagsKHR,
33933    pub dpy: *mut Display,
33934    pub window: Window,
33935}
33936
33937impl Default for XlibSurfaceCreateInfoKHR {
33938    #[inline]
33939    fn default() -> Self {
33940        Self {
33941            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
33942            next: ptr::null(),
33943            flags: XlibSurfaceCreateFlagsKHR::default(),
33944            dpy: ptr::null_mut(),
33945            window: Window::default(),
33946        }
33947    }
33948}
33949
33950unsafe impl Send for XlibSurfaceCreateInfoKHR {}
33951unsafe impl Sync for XlibSurfaceCreateInfoKHR {}
33952
33953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
33954pub type AabbPositionsNV = AabbPositionsKHR;
33955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
33956pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
33957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
33958pub type AttachmentDescription2KHR = AttachmentDescription2;
33959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
33960pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
33961/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
33962pub type AttachmentReference2KHR = AttachmentReference2;
33963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
33964pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
33965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
33966pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
33967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
33968pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
33969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
33970pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
33971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
33972pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
33973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
33974pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
33975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
33976pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
33977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
33978pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
33979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
33980pub type BindMemoryStatusKHR = BindMemoryStatus;
33981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
33982pub type BlitImageInfo2KHR = BlitImageInfo2;
33983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
33984pub type BufferCopy2KHR = BufferCopy2;
33985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
33986pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
33987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
33988pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
33989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
33990pub type BufferImageCopy2KHR = BufferImageCopy2;
33991/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
33992pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
33993/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
33994pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
33995/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
33996pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
33997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
33998pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
33999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
34000pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
34001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
34002pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
34003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
34004pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
34005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
34006pub type ConformanceVersionKHR = ConformanceVersion;
34007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
34008pub type CopyBufferInfo2KHR = CopyBufferInfo2;
34009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
34010pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
34011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
34012pub type CopyImageInfo2KHR = CopyImageInfo2;
34013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
34014pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
34015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
34016pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
34017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
34018pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
34019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
34020pub type CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR;
34021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
34022pub type CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR;
34023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
34024pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
34025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
34026pub type DependencyInfoKHR = DependencyInfo;
34027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
34028pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
34029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
34030pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
34031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
34032pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
34033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
34034pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
34035    DescriptorSetVariableDescriptorCountAllocateInfo;
34036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
34037pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
34038    DescriptorSetVariableDescriptorCountLayoutSupport;
34039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
34040pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
34041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
34042pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
34043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
34044pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
34045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
34046pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
34047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
34048pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
34049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
34050pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
34051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
34052pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
34053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
34054pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
34055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
34056pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
34057/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
34058pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
34059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
34060pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
34061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
34062pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
34063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
34064pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
34065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
34066pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
34067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
34068pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
34069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
34070pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
34071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
34072pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
34073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
34074pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
34075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
34076pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
34077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
34078pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
34079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
34080pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
34081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
34082pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
34083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
34084pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
34085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
34086pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
34087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
34088pub type FormatProperties2KHR = FormatProperties2;
34089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
34090pub type FormatProperties3KHR = FormatProperties3;
34091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
34092pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
34093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
34094pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
34095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
34096pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
34097/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
34098pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
34099/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
34100pub type ImageBlit2KHR = ImageBlit2;
34101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
34102pub type ImageCopy2KHR = ImageCopy2;
34103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
34104pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
34105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
34106pub type ImageFormatProperties2KHR = ImageFormatProperties2;
34107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
34108pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
34109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
34110pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
34111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
34112pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
34113/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
34114pub type ImageResolve2KHR = ImageResolve2;
34115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
34116pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
34117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
34118pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
34119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
34120pub type ImageSubresource2EXT = ImageSubresource2;
34121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
34122pub type ImageSubresource2KHR = ImageSubresource2;
34123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
34124pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
34125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
34126pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
34127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
34128pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
34129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
34130pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
34131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
34132pub type MemoryBarrier2KHR = MemoryBarrier2;
34133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
34134pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
34135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
34136pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
34137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
34138pub type MemoryMapInfoKHR = MemoryMapInfo;
34139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
34140pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
34141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
34142pub type MemoryRequirements2KHR = MemoryRequirements2;
34143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
34144pub type MemoryToImageCopyEXT = MemoryToImageCopy;
34145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
34146pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
34147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
34148pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
34149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
34150pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
34151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
34152pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
34153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
34154pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
34155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
34156pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
34157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
34158pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
34159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
34160pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
34161    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
34162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
34163pub type PhysicalDeviceCopyMemoryIndirectPropertiesNV =
34164    PhysicalDeviceCopyMemoryIndirectPropertiesKHR;
34165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
34166pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
34167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
34168pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
34169    PhysicalDeviceDepthStencilResolveProperties;
34170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
34171pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
34172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
34173pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
34174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
34175pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
34176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
34177pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
34178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
34179pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
34180    PhysicalDeviceDynamicRenderingLocalReadFeatures;
34181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
34182pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
34183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
34184pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
34185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
34186pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
34187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
34188pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
34189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
34190pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
34191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
34192pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
34193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
34194pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
34195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
34196pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
34197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
34198pub type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM =
34199    PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
34200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
34201pub type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM =
34202    PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
34203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
34204pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
34205    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
34206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
34207pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
34208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
34209pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
34210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
34211pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
34212/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
34213pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
34214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
34215pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
34216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
34217pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
34218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
34219pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
34220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
34221pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
34222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
34223pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
34224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
34225pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
34226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
34227pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
34228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
34229pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
34230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
34231pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
34232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
34233pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
34234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
34235pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
34236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
34237pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
34238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
34239pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
34240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
34241pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
34242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
34243pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
34244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
34245pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
34246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
34247pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
34248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
34249pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
34250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
34251pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
34252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
34253pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
34254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
34255pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
34256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
34257pub type PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT;
34258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
34259pub type PhysicalDeviceMemoryDecompressionPropertiesNV =
34260    PhysicalDeviceMemoryDecompressionPropertiesEXT;
34261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
34262pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
34263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
34264pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
34265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
34266pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
34267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
34268pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
34269    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
34270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
34271pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
34272    PhysicalDevicePipelineCreationCacheControlFeatures;
34273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
34274pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
34275    PhysicalDevicePipelineProtectedAccessFeatures;
34276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
34277pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
34278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
34279pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
34280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
34281pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
34282/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
34283pub type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT =
34284    PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
34285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
34286pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
34287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
34288pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
34289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
34290pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
34291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
34292pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
34293    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
34294/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
34295pub type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR;
34296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
34297pub type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR;
34298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
34299pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
34300    PhysicalDeviceSamplerFilterMinmaxProperties;
34301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
34302pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
34303    PhysicalDeviceSamplerYcbcrConversionFeatures;
34304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
34305pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
34306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
34307pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
34308    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
34309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
34310pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
34311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
34312pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
34313    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
34314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
34315pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
34316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
34317pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
34318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
34319pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
34320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
34321pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
34322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
34323pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
34324    PhysicalDeviceShaderIntegerDotProductFeatures;
34325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
34326pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
34327    PhysicalDeviceShaderIntegerDotProductProperties;
34328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
34329pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
34330    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
34331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
34332pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
34333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
34334pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
34335    PhysicalDeviceShaderTerminateInvocationFeatures;
34336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
34337pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
34338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
34339pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
34340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
34341pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
34342    PhysicalDeviceSubgroupSizeControlProperties;
34343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
34344pub type PhysicalDeviceSwapchainMaintenance1FeaturesEXT =
34345    PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
34346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
34347pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
34348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
34349pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
34350    PhysicalDeviceTexelBufferAlignmentProperties;
34351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
34352pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
34353    PhysicalDeviceTextureCompressionASTCHDRFeatures;
34354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
34355pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
34356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
34357pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
34358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
34359pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
34360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
34361pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
34362    PhysicalDeviceUniformBufferStandardLayoutFeatures;
34363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
34364pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
34365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
34366pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
34367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
34368pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
34369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
34370pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
34371    PhysicalDeviceVertexAttributeDivisorFeatures;
34372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
34373pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
34374    PhysicalDeviceVertexAttributeDivisorFeatures;
34375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
34376pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
34377    PhysicalDeviceVertexAttributeDivisorProperties;
34378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
34379pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
34380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
34381pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
34382    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
34383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
34384pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
34385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
34386pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
34387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
34388pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
34389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
34390pub type PipelineInfoEXT = PipelineInfoKHR;
34391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
34392pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
34393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
34394pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
34395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
34396pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
34397/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
34398pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
34399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
34400pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
34401    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
34402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
34403pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
34404    PipelineTessellationDomainOriginStateCreateInfo;
34405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
34406pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
34407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
34408pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
34409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
34410pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
34411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
34412pub type PushConstantsInfoKHR = PushConstantsInfo;
34413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
34414pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
34415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
34416pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
34417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
34418pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
34419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
34420pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
34421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
34422pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
34423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
34424pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
34425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
34426pub type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR;
34427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
34428pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
34429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
34430pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
34431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
34432pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
34433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
34434pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
34435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
34436pub type RenderingAreaInfoKHR = RenderingAreaInfo;
34437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
34438pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
34439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
34440pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
34441/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoEXT.html>
34442pub type RenderingEndInfoEXT = RenderingEndInfoKHR;
34443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
34444pub type RenderingInfoKHR = RenderingInfo;
34445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
34446pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
34447/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
34448pub type ResolveImageInfo2KHR = ResolveImageInfo2;
34449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
34450pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
34451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
34452pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
34453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
34454pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
34455    SamplerYcbcrConversionImageFormatProperties;
34456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
34457pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
34458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
34459pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
34460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
34461pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
34462/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
34463pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
34464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
34465pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
34466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
34467pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
34468    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
34469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
34470pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
34471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
34472pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
34473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
34474pub type SubmitInfo2KHR = SubmitInfo2;
34475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
34476pub type SubpassBeginInfoKHR = SubpassBeginInfo;
34477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
34478pub type SubpassDependency2KHR = SubpassDependency2;
34479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
34480pub type SubpassDescription2KHR = SubpassDescription2;
34481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
34482pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
34483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
34484pub type SubpassEndInfoKHR = SubpassEndInfo;
34485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
34486pub type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT;
34487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
34488pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
34489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
34490pub type SubresourceLayout2EXT = SubresourceLayout2;
34491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
34492pub type SubresourceLayout2KHR = SubresourceLayout2;
34493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
34494pub type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR;
34495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
34496pub type SurfacePresentModeEXT = SurfacePresentModeKHR;
34497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
34498pub type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR;
34499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
34500pub type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR;
34501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
34502pub type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR;
34503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
34504pub type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR;
34505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
34506pub type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR;
34507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
34508pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
34509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
34510pub type TransformMatrixNV = TransformMatrixKHR;
34511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
34512pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
34513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
34514pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
34515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
34516pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;