vulk/
vk.rs

1//
2// Imports
3//
4
5use std::ffi::{c_char, c_void};
6
7//
8// Defines
9//
10
11#[must_use]
12pub const fn make_api_version(variant: u32, major: u32, minor: u32, patch: u32) -> u32 {
13    (variant << 29) | (major << 22) | (minor << 12) | patch
14}
15
16//
17// API Constants
18//
19
20#[doc = "**Description**: Length of a physical device name string"]
21#[doc = "<br>"]
22#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
23#[doc = "<br>"]
24#[doc = "**Reference**: [`VK_MAX_PHYSICAL_DEVICE_NAME_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_PHYSICAL_DEVICE_NAME_SIZE.html)"]
25pub const MAX_PHYSICAL_DEVICE_NAME_SIZE: u32 = 256;
26
27#[doc = "**Description**: Length of a universally unique device or driver build identifier"]
28#[doc = "<br>"]
29#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
30#[doc = "<br>"]
31#[doc = "**Reference**: [`VK_UUID_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_UUID_SIZE.html)"]
32pub const UUID_SIZE: u32 = 16;
33
34#[doc = "**Description**: Length of a locally unique device identifier"]
35#[doc = "<br>"]
36#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
37#[doc = "<br>"]
38#[doc = "**Reference**: [`VK_LUID_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_LUID_SIZE.html)"]
39pub const LUID_SIZE: u32 = 8;
40
41#[doc = "**Description**: Maximum length of a layer of extension name string"]
42#[doc = "<br>"]
43#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
44#[doc = "<br>"]
45#[doc = "**Reference**: [`VK_MAX_EXTENSION_NAME_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_EXTENSION_NAME_SIZE.html)"]
46pub const MAX_EXTENSION_NAME_SIZE: u32 = 256;
47
48#[doc = "**Description**: Length of a driver name string"]
49#[doc = "<br>"]
50#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
51#[doc = "<br>"]
52#[doc = "**Reference**: [`VK_MAX_DESCRIPTION_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_DESCRIPTION_SIZE.html)"]
53pub const MAX_DESCRIPTION_SIZE: u32 = 256;
54
55#[doc = "**Description**: Length of an array of memory types"]
56#[doc = "<br>"]
57#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
58#[doc = "<br>"]
59#[doc = "**Reference**: [`VK_MAX_MEMORY_TYPES`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_MEMORY_TYPES.html)"]
60pub const MAX_MEMORY_TYPES: u32 = 32;
61
62#[doc = "**Description**: Length of an array of memory heaps"]
63#[doc = "<br>"]
64#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
65#[doc = "<br>"]
66#[doc = "**Reference**: [`VK_MAX_MEMORY_HEAPS`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_MEMORY_HEAPS.html)"]
67pub const MAX_MEMORY_HEAPS: u32 = 16;
68
69#[doc = "**Description**: Maximum level of detail unclamped access sentinel"]
70#[doc = "<br>"]
71#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
72#[doc = "<br>"]
73#[doc = "**Reference**: [`VK_LOD_CLAMP_NONE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_LOD_CLAMP_NONE.html)"]
74pub const LOD_CLAMP_NONE: f32 = 1000.0;
75
76#[doc = "**Description**: Sentinel for all remaining mipmap levels"]
77#[doc = "<br>"]
78#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
79#[doc = "<br>"]
80#[doc = "**Reference**: [`VK_REMAINING_MIP_LEVELS`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_REMAINING_MIP_LEVELS.html)"]
81pub const REMAINING_MIP_LEVELS: u32 = !0;
82
83#[doc = "**Description**: Sentinel for all remaining array layers"]
84#[doc = "<br>"]
85#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
86#[doc = "<br>"]
87#[doc = "**Reference**: [`VK_REMAINING_ARRAY_LAYERS`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_REMAINING_ARRAY_LAYERS.html)"]
88pub const REMAINING_ARRAY_LAYERS: u32 = !0;
89
90#[doc = "**Description**: Sentinel value to use entire remaining array length"]
91#[doc = "<br>"]
92#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
93#[doc = "<br>"]
94#[doc = "**Reference**: [`VK_WHOLE_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_WHOLE_SIZE.html)"]
95pub const WHOLE_SIZE: u64 = !0;
96
97#[doc = "**Description**: Unused attachment sentinel"]
98#[doc = "<br>"]
99#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
100#[doc = "<br>"]
101#[doc = "**Reference**: [`VK_ATTACHMENT_UNUSED`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_ATTACHMENT_UNUSED.html)"]
102pub const ATTACHMENT_UNUSED: u32 = !0;
103
104#[doc = "**Description**: Boolean true value"]
105#[doc = "<br>"]
106#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
107#[doc = "<br>"]
108#[doc = "**Reference**: [`VK_TRUE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_TRUE.html)"]
109pub const TRUE: u32 = 1;
110
111#[doc = "**Description**: Boolean false value"]
112#[doc = "<br>"]
113#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
114#[doc = "<br>"]
115#[doc = "**Reference**: [`VK_FALSE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_FALSE.html)"]
116pub const FALSE: u32 = 0;
117
118#[doc = "**Description**: Ignored queue family index sentinel"]
119#[doc = "<br>"]
120#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
121#[doc = "<br>"]
122#[doc = "**Reference**: [`VK_QUEUE_FAMILY_IGNORED`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_QUEUE_FAMILY_IGNORED.html)"]
123pub const QUEUE_FAMILY_IGNORED: u32 = !0;
124
125#[doc = "**Description**: External queue family index sentinel"]
126#[doc = "<br>"]
127#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
128#[doc = "<br>"]
129#[doc = "**Reference**: [`VK_QUEUE_FAMILY_EXTERNAL`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_QUEUE_FAMILY_EXTERNAL.html)"]
130pub const QUEUE_FAMILY_EXTERNAL: u32 = !1;
131
132#[doc = "**Description**: Subpass index sentinel expanding synchronization scope outside a subpass"]
133#[doc = "<br>"]
134#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
135#[doc = "<br>"]
136#[doc = "**Reference**: [`VK_SUBPASS_EXTERNAL`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_SUBPASS_EXTERNAL.html)"]
137pub const SUBPASS_EXTERNAL: u32 = !0;
138
139#[doc = "**Description**: Length of a physical device handle array"]
140#[doc = "<br>"]
141#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
142#[doc = "<br>"]
143#[doc = "**Reference**: [`VK_MAX_DEVICE_GROUP_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_DEVICE_GROUP_SIZE.html)"]
144pub const MAX_DEVICE_GROUP_SIZE: u32 = 32;
145
146#[doc = "**Description**: Maximum length of a physical device driver name string"]
147#[doc = "<br>"]
148#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
149#[doc = "<br>"]
150#[doc = "**Reference**: [`VK_MAX_DRIVER_NAME_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_DRIVER_NAME_SIZE.html)"]
151pub const MAX_DRIVER_NAME_SIZE: u32 = 256;
152
153#[doc = "**Description**: Length of a physical device driver information string"]
154#[doc = "<br>"]
155#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
156#[doc = "<br>"]
157#[doc = "**Reference**: [`VK_MAX_DRIVER_INFO_SIZE`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_MAX_DRIVER_INFO_SIZE.html)"]
158pub const MAX_DRIVER_INFO_SIZE: u32 = 256;
159
160#[doc = "**Description**: Sentinel for an unused shader index"]
161#[doc = "<br>"]
162#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
163#[doc = "<br>"]
164#[doc = "**Reference**: [`VK_SHADER_UNUSED_KHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_SHADER_UNUSED_KHR.html)"]
165pub const SHADER_UNUSED_KHR: u32 = !0;
166
167//
168// Base types
169//
170
171#[doc = "**Chapter**: Fundamentals"]
172#[doc = "<br>"]
173#[doc = "**Description**: Vulkan boolean type"]
174#[doc = "<br>"]
175#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
176#[doc = "<br>"]
177#[doc = "**Reference**: [`VkBool32`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBool32.html)"]
178pub type Bool32 = u32;
179
180#[doc = "**Chapter**: Fundamentals"]
181#[doc = "<br>"]
182#[doc = "**Description**: Vulkan device memory size and offsets"]
183#[doc = "<br>"]
184#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
185#[doc = "<br>"]
186#[doc = "**Reference**: [`VkDeviceSize`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceSize.html)"]
187pub type DeviceSize = u64;
188
189#[doc = "**Chapter**: Fundamentals"]
190#[doc = "<br>"]
191#[doc = "**Description**: Vulkan device address type"]
192#[doc = "<br>"]
193#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
194#[doc = "<br>"]
195#[doc = "**Reference**: [`VkDeviceAddress`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceAddress.html)"]
196pub type DeviceAddress = u64;
197
198//
199// Function pointers
200//
201
202#[doc = "**Chapter**: Initialization"]
203#[doc = "<br>"]
204#[doc = "**Description**: Placeholder function pointer type returned by queries"]
205#[doc = "<br>"]
206#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
207#[doc = "<br>"]
208#[doc = "**Reference**: [`PFN_vkVoidFunction`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkVoidFunction.html)"]
209pub type PfnVoidFunction = *const c_void;
210
211#[doc = "**Chapter**: Memory Allocation"]
212#[doc = "<br>"]
213#[doc = "**Description**: Application-defined memory allocation function"]
214#[doc = "<br>"]
215#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
216#[doc = "<br>"]
217#[doc = "**Reference**: [`PFN_vkAllocationFunction`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkAllocationFunction.html)"]
218pub type PfnAllocationFunction = *const c_void;
219
220#[doc = "**Chapter**: Memory Allocation"]
221#[doc = "<br>"]
222#[doc = "**Description**: Application-defined memory reallocation function"]
223#[doc = "<br>"]
224#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
225#[doc = "<br>"]
226#[doc = "**Reference**: [`PFN_vkReallocationFunction`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkReallocationFunction.html)"]
227pub type PfnReallocationFunction = *const c_void;
228
229#[doc = "**Chapter**: Memory Allocation"]
230#[doc = "<br>"]
231#[doc = "**Description**: Application-defined memory free function"]
232#[doc = "<br>"]
233#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
234#[doc = "<br>"]
235#[doc = "**Reference**: [`PFN_vkFreeFunction`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkFreeFunction.html)"]
236pub type PfnFreeFunction = *const c_void;
237
238#[doc = "**Chapter**: Memory Allocation"]
239#[doc = "<br>"]
240#[doc = "**Description**: Application-defined memory allocation notification function"]
241#[doc = "<br>"]
242#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
243#[doc = "<br>"]
244#[doc = "**Reference**: [`PFN_vkInternalAllocationNotification`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkInternalAllocationNotification.html)"]
245pub type PfnInternalAllocationNotification = *const c_void;
246
247#[doc = "**Chapter**: Memory Allocation"]
248#[doc = "<br>"]
249#[doc = "**Description**: Application-defined memory free notification function"]
250#[doc = "<br>"]
251#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
252#[doc = "<br>"]
253#[doc = "**Reference**: [`PFN_vkInternalFreeNotification`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkInternalFreeNotification.html)"]
254pub type PfnInternalFreeNotification = *const c_void;
255
256#[doc = "**Chapter**: Debugging"]
257#[doc = "<br>"]
258#[doc = "**Description**: Application-defined debug messenger callback function"]
259#[doc = "<br>"]
260#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
261#[doc = "<br>"]
262#[doc = "**Reference**: [`PFN_vkDebugUtilsMessengerCallbackEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/PFN_vkDebugUtilsMessengerCallbackEXT.html)"]
263pub type PfnDebugUtilsMessengerCallbackEXT = *const c_void;
264
265//
266// Handles
267//
268
269#[repr(transparent)]
270#[derive(Clone, Copy)]
271#[doc = "**Chapter**: Initialization"]
272#[doc = "<br>"]
273#[doc = "**Description**: Opaque handle to an instance object"]
274#[doc = "<br>"]
275#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
276#[doc = "<br>"]
277#[doc = "**Reference**: [`VkInstance`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInstance.html)"]
278pub struct Instance(u64);
279
280impl Instance {
281    #[must_use]
282    pub const fn null() -> Self {
283        Self(0)
284    }
285}
286
287impl std::fmt::Display for Instance {
288    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
289        write!(f, "0x{:016x}", self.0)
290    }
291}
292
293impl std::fmt::Debug for Instance {
294    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
295        f.debug_tuple("Instance").field(&format_args!("{self}")).finish()
296    }
297}
298
299#[repr(transparent)]
300#[derive(Clone, Copy)]
301#[doc = "**Chapter**: Devices and Queues"]
302#[doc = "<br>"]
303#[doc = "**Description**: Opaque handle to a physical device object"]
304#[doc = "<br>"]
305#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
306#[doc = "<br>"]
307#[doc = "**Reference**: [`VkPhysicalDevice`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice.html)"]
308pub struct PhysicalDevice(u64);
309
310impl PhysicalDevice {
311    #[must_use]
312    pub const fn null() -> Self {
313        Self(0)
314    }
315}
316
317impl std::fmt::Display for PhysicalDevice {
318    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
319        write!(f, "0x{:016x}", self.0)
320    }
321}
322
323impl std::fmt::Debug for PhysicalDevice {
324    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
325        f.debug_tuple("PhysicalDevice").field(&format_args!("{self}")).finish()
326    }
327}
328
329#[repr(transparent)]
330#[derive(Clone, Copy)]
331#[doc = "**Chapter**: Devices and Queues"]
332#[doc = "<br>"]
333#[doc = "**Description**: Opaque handle to a device object"]
334#[doc = "<br>"]
335#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
336#[doc = "<br>"]
337#[doc = "**Reference**: [`VkDevice`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDevice.html)"]
338pub struct Device(u64);
339
340impl Device {
341    #[must_use]
342    pub const fn null() -> Self {
343        Self(0)
344    }
345}
346
347impl std::fmt::Display for Device {
348    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
349        write!(f, "0x{:016x}", self.0)
350    }
351}
352
353impl std::fmt::Debug for Device {
354    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
355        f.debug_tuple("Device").field(&format_args!("{self}")).finish()
356    }
357}
358
359#[repr(transparent)]
360#[derive(Clone, Copy)]
361#[doc = "**Chapter**: Devices and Queues"]
362#[doc = "<br>"]
363#[doc = "**Description**: Opaque handle to a queue object"]
364#[doc = "<br>"]
365#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
366#[doc = "<br>"]
367#[doc = "**Reference**: [`VkQueue`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueue.html)"]
368pub struct Queue(u64);
369
370impl Queue {
371    #[must_use]
372    pub const fn null() -> Self {
373        Self(0)
374    }
375}
376
377impl std::fmt::Display for Queue {
378    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
379        write!(f, "0x{:016x}", self.0)
380    }
381}
382
383impl std::fmt::Debug for Queue {
384    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
385        f.debug_tuple("Queue").field(&format_args!("{self}")).finish()
386    }
387}
388
389#[repr(transparent)]
390#[derive(Clone, Copy)]
391#[doc = "**Chapter**: Command Buffers"]
392#[doc = "<br>"]
393#[doc = "**Description**: Opaque handle to a command buffer object"]
394#[doc = "<br>"]
395#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
396#[doc = "<br>"]
397#[doc = "**Reference**: [`VkCommandBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBuffer.html)"]
398pub struct CommandBuffer(u64);
399
400impl CommandBuffer {
401    #[must_use]
402    pub const fn null() -> Self {
403        Self(0)
404    }
405}
406
407impl std::fmt::Display for CommandBuffer {
408    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
409        write!(f, "0x{:016x}", self.0)
410    }
411}
412
413impl std::fmt::Debug for CommandBuffer {
414    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
415        f.debug_tuple("CommandBuffer").field(&format_args!("{self}")).finish()
416    }
417}
418
419#[repr(transparent)]
420#[derive(Clone, Copy)]
421#[doc = "**Chapter**: Command Buffers"]
422#[doc = "<br>"]
423#[doc = "**Description**: Opaque handle to a command pool object"]
424#[doc = "<br>"]
425#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
426#[doc = "<br>"]
427#[doc = "**Reference**: [`VkCommandPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPool.html)"]
428pub struct CommandPool(u64);
429
430impl CommandPool {
431    #[must_use]
432    pub const fn null() -> Self {
433        Self(0)
434    }
435}
436
437impl std::fmt::Display for CommandPool {
438    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
439        write!(f, "0x{:016x}", self.0)
440    }
441}
442
443impl std::fmt::Debug for CommandPool {
444    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
445        f.debug_tuple("CommandPool").field(&format_args!("{self}")).finish()
446    }
447}
448
449#[repr(transparent)]
450#[derive(Clone, Copy)]
451#[doc = "**Chapter**: Synchronization and Cache Control"]
452#[doc = "<br>"]
453#[doc = "**Description**: Opaque handle to a fence object"]
454#[doc = "<br>"]
455#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
456#[doc = "<br>"]
457#[doc = "**Reference**: [`VkFence`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFence.html)"]
458pub struct Fence(u64);
459
460impl Fence {
461    #[must_use]
462    pub const fn null() -> Self {
463        Self(0)
464    }
465}
466
467impl std::fmt::Display for Fence {
468    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
469        write!(f, "0x{:016x}", self.0)
470    }
471}
472
473impl std::fmt::Debug for Fence {
474    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
475        f.debug_tuple("Fence").field(&format_args!("{self}")).finish()
476    }
477}
478
479#[repr(transparent)]
480#[derive(Clone, Copy)]
481#[doc = "**Chapter**: Synchronization and Cache Control"]
482#[doc = "<br>"]
483#[doc = "**Description**: Opaque handle to a semaphore object"]
484#[doc = "<br>"]
485#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
486#[doc = "<br>"]
487#[doc = "**Reference**: [`VkSemaphore`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphore.html)"]
488pub struct Semaphore(u64);
489
490impl Semaphore {
491    #[must_use]
492    pub const fn null() -> Self {
493        Self(0)
494    }
495}
496
497impl std::fmt::Display for Semaphore {
498    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
499        write!(f, "0x{:016x}", self.0)
500    }
501}
502
503impl std::fmt::Debug for Semaphore {
504    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
505        f.debug_tuple("Semaphore").field(&format_args!("{self}")).finish()
506    }
507}
508
509#[repr(transparent)]
510#[derive(Clone, Copy)]
511#[doc = "**Chapter**: Render Pass"]
512#[doc = "<br>"]
513#[doc = "**Description**: Opaque handle to a render pass object"]
514#[doc = "<br>"]
515#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
516#[doc = "<br>"]
517#[doc = "**Reference**: [`VkRenderPass`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderPass.html)"]
518pub struct RenderPass(u64);
519
520impl RenderPass {
521    #[must_use]
522    pub const fn null() -> Self {
523        Self(0)
524    }
525}
526
527impl std::fmt::Display for RenderPass {
528    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
529        write!(f, "0x{:016x}", self.0)
530    }
531}
532
533impl std::fmt::Debug for RenderPass {
534    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
535        f.debug_tuple("RenderPass").field(&format_args!("{self}")).finish()
536    }
537}
538
539#[repr(transparent)]
540#[derive(Clone, Copy)]
541#[doc = "**Chapter**: Render Pass"]
542#[doc = "<br>"]
543#[doc = "**Description**: Opaque handle to a framebuffer object"]
544#[doc = "<br>"]
545#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
546#[doc = "<br>"]
547#[doc = "**Reference**: [`VkFramebuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFramebuffer.html)"]
548pub struct Framebuffer(u64);
549
550impl Framebuffer {
551    #[must_use]
552    pub const fn null() -> Self {
553        Self(0)
554    }
555}
556
557impl std::fmt::Display for Framebuffer {
558    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
559        write!(f, "0x{:016x}", self.0)
560    }
561}
562
563impl std::fmt::Debug for Framebuffer {
564    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
565        f.debug_tuple("Framebuffer").field(&format_args!("{self}")).finish()
566    }
567}
568
569#[repr(transparent)]
570#[derive(Clone, Copy)]
571#[doc = "**Chapter**: Shaders"]
572#[doc = "<br>"]
573#[doc = "**Description**: Opaque handle to a shader object"]
574#[doc = "<br>"]
575#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
576#[doc = "<br>"]
577#[doc = "**Reference**: [`VkShaderEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderEXT.html)"]
578pub struct ShaderEXT(u64);
579
580impl ShaderEXT {
581    #[must_use]
582    pub const fn null() -> Self {
583        Self(0)
584    }
585}
586
587impl std::fmt::Display for ShaderEXT {
588    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
589        write!(f, "0x{:016x}", self.0)
590    }
591}
592
593impl std::fmt::Debug for ShaderEXT {
594    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
595        f.debug_tuple("ShaderEXT").field(&format_args!("{self}")).finish()
596    }
597}
598
599#[repr(transparent)]
600#[derive(Clone, Copy)]
601#[doc = "**Chapter**: Shaders"]
602#[doc = "<br>"]
603#[doc = "**Description**: Opaque handle to a shader module object"]
604#[doc = "<br>"]
605#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
606#[doc = "<br>"]
607#[doc = "**Reference**: [`VkShaderModule`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderModule.html)"]
608pub struct ShaderModule(u64);
609
610impl ShaderModule {
611    #[must_use]
612    pub const fn null() -> Self {
613        Self(0)
614    }
615}
616
617impl std::fmt::Display for ShaderModule {
618    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
619        write!(f, "0x{:016x}", self.0)
620    }
621}
622
623impl std::fmt::Debug for ShaderModule {
624    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
625        f.debug_tuple("ShaderModule").field(&format_args!("{self}")).finish()
626    }
627}
628
629#[repr(transparent)]
630#[derive(Clone, Copy)]
631#[doc = "**Chapter**: Pipelines"]
632#[doc = "<br>"]
633#[doc = "**Description**: Opaque handle to a pipeline object"]
634#[doc = "<br>"]
635#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
636#[doc = "<br>"]
637#[doc = "**Reference**: [`VkPipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipeline.html)"]
638pub struct Pipeline(u64);
639
640impl Pipeline {
641    #[must_use]
642    pub const fn null() -> Self {
643        Self(0)
644    }
645}
646
647impl std::fmt::Display for Pipeline {
648    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
649        write!(f, "0x{:016x}", self.0)
650    }
651}
652
653impl std::fmt::Debug for Pipeline {
654    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
655        f.debug_tuple("Pipeline").field(&format_args!("{self}")).finish()
656    }
657}
658
659#[repr(transparent)]
660#[derive(Clone, Copy)]
661#[doc = "**Chapter**: Pipelines"]
662#[doc = "<br>"]
663#[doc = "**Description**: Opaque handle to a pipeline cache object"]
664#[doc = "<br>"]
665#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
666#[doc = "<br>"]
667#[doc = "**Reference**: [`VkPipelineCache`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCache.html)"]
668pub struct PipelineCache(u64);
669
670impl PipelineCache {
671    #[must_use]
672    pub const fn null() -> Self {
673        Self(0)
674    }
675}
676
677impl std::fmt::Display for PipelineCache {
678    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
679        write!(f, "0x{:016x}", self.0)
680    }
681}
682
683impl std::fmt::Debug for PipelineCache {
684    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
685        f.debug_tuple("PipelineCache").field(&format_args!("{self}")).finish()
686    }
687}
688
689#[repr(transparent)]
690#[derive(Clone, Copy)]
691#[doc = "**Chapter**: Memory Allocation"]
692#[doc = "<br>"]
693#[doc = "**Description**: Opaque handle to a device memory object"]
694#[doc = "<br>"]
695#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
696#[doc = "<br>"]
697#[doc = "**Reference**: [`VkDeviceMemory`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceMemory.html)"]
698pub struct DeviceMemory(u64);
699
700impl DeviceMemory {
701    #[must_use]
702    pub const fn null() -> Self {
703        Self(0)
704    }
705}
706
707impl std::fmt::Display for DeviceMemory {
708    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
709        write!(f, "0x{:016x}", self.0)
710    }
711}
712
713impl std::fmt::Debug for DeviceMemory {
714    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
715        f.debug_tuple("DeviceMemory").field(&format_args!("{self}")).finish()
716    }
717}
718
719#[repr(transparent)]
720#[derive(Clone, Copy)]
721#[doc = "**Chapter**: Resource Creation"]
722#[doc = "<br>"]
723#[doc = "**Description**: Opaque handle to a buffer object"]
724#[doc = "<br>"]
725#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
726#[doc = "<br>"]
727#[doc = "**Reference**: [`VkBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuffer.html)"]
728pub struct Buffer(u64);
729
730impl Buffer {
731    #[must_use]
732    pub const fn null() -> Self {
733        Self(0)
734    }
735}
736
737impl std::fmt::Display for Buffer {
738    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
739        write!(f, "0x{:016x}", self.0)
740    }
741}
742
743impl std::fmt::Debug for Buffer {
744    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
745        f.debug_tuple("Buffer").field(&format_args!("{self}")).finish()
746    }
747}
748
749#[repr(transparent)]
750#[derive(Clone, Copy)]
751#[doc = "**Chapter**: Resource Creation"]
752#[doc = "<br>"]
753#[doc = "**Description**: Opaque handle to an image object"]
754#[doc = "<br>"]
755#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
756#[doc = "<br>"]
757#[doc = "**Reference**: [`VkImage`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImage.html)"]
758pub struct Image(u64);
759
760impl Image {
761    #[must_use]
762    pub const fn null() -> Self {
763        Self(0)
764    }
765}
766
767impl std::fmt::Display for Image {
768    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
769        write!(f, "0x{:016x}", self.0)
770    }
771}
772
773impl std::fmt::Debug for Image {
774    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
775        f.debug_tuple("Image").field(&format_args!("{self}")).finish()
776    }
777}
778
779#[repr(transparent)]
780#[derive(Clone, Copy)]
781#[doc = "**Chapter**: Resource Creation"]
782#[doc = "<br>"]
783#[doc = "**Description**: Opaque handle to an image view object"]
784#[doc = "<br>"]
785#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
786#[doc = "<br>"]
787#[doc = "**Reference**: [`VkImageView`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageView.html)"]
788pub struct ImageView(u64);
789
790impl ImageView {
791    #[must_use]
792    pub const fn null() -> Self {
793        Self(0)
794    }
795}
796
797impl std::fmt::Display for ImageView {
798    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
799        write!(f, "0x{:016x}", self.0)
800    }
801}
802
803impl std::fmt::Debug for ImageView {
804    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
805        f.debug_tuple("ImageView").field(&format_args!("{self}")).finish()
806    }
807}
808
809#[repr(transparent)]
810#[derive(Clone, Copy)]
811#[doc = "**Chapter**: Resource Creation"]
812#[doc = "<br>"]
813#[doc = "**Description**: Opaque handle to an acceleration structure object"]
814#[doc = "<br>"]
815#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
816#[doc = "<br>"]
817#[doc = "**Reference**: [`VkAccelerationStructureKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureKHR.html)"]
818pub struct AccelerationStructureKHR(u64);
819
820impl AccelerationStructureKHR {
821    #[must_use]
822    pub const fn null() -> Self {
823        Self(0)
824    }
825}
826
827impl std::fmt::Display for AccelerationStructureKHR {
828    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
829        write!(f, "0x{:016x}", self.0)
830    }
831}
832
833impl std::fmt::Debug for AccelerationStructureKHR {
834    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
835        f.debug_tuple("AccelerationStructureKHR").field(&format_args!("{self}")).finish()
836    }
837}
838
839#[repr(transparent)]
840#[derive(Clone, Copy)]
841#[doc = "**Chapter**: Samplers"]
842#[doc = "<br>"]
843#[doc = "**Description**: Opaque handle to a sampler object"]
844#[doc = "<br>"]
845#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
846#[doc = "<br>"]
847#[doc = "**Reference**: [`VkSampler`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSampler.html)"]
848pub struct Sampler(u64);
849
850impl Sampler {
851    #[must_use]
852    pub const fn null() -> Self {
853        Self(0)
854    }
855}
856
857impl std::fmt::Display for Sampler {
858    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
859        write!(f, "0x{:016x}", self.0)
860    }
861}
862
863impl std::fmt::Debug for Sampler {
864    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
865        f.debug_tuple("Sampler").field(&format_args!("{self}")).finish()
866    }
867}
868
869#[repr(transparent)]
870#[derive(Clone, Copy)]
871#[doc = "**Chapter**: Resource Descriptors"]
872#[doc = "<br>"]
873#[doc = "**Description**: Opaque handle to a descriptor set layout object"]
874#[doc = "<br>"]
875#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
876#[doc = "<br>"]
877#[doc = "**Reference**: [`VkDescriptorSetLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayout.html)"]
878pub struct DescriptorSetLayout(u64);
879
880impl DescriptorSetLayout {
881    #[must_use]
882    pub const fn null() -> Self {
883        Self(0)
884    }
885}
886
887impl std::fmt::Display for DescriptorSetLayout {
888    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
889        write!(f, "0x{:016x}", self.0)
890    }
891}
892
893impl std::fmt::Debug for DescriptorSetLayout {
894    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
895        f.debug_tuple("DescriptorSetLayout").field(&format_args!("{self}")).finish()
896    }
897}
898
899#[repr(transparent)]
900#[derive(Clone, Copy)]
901#[doc = "**Chapter**: Resource Descriptors"]
902#[doc = "<br>"]
903#[doc = "**Description**: Opaque handle to a pipeline layout object"]
904#[doc = "<br>"]
905#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
906#[doc = "<br>"]
907#[doc = "**Reference**: [`VkPipelineLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLayout.html)"]
908pub struct PipelineLayout(u64);
909
910impl PipelineLayout {
911    #[must_use]
912    pub const fn null() -> Self {
913        Self(0)
914    }
915}
916
917impl std::fmt::Display for PipelineLayout {
918    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
919        write!(f, "0x{:016x}", self.0)
920    }
921}
922
923impl std::fmt::Debug for PipelineLayout {
924    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
925        f.debug_tuple("PipelineLayout").field(&format_args!("{self}")).finish()
926    }
927}
928
929#[repr(transparent)]
930#[derive(Clone, Copy)]
931#[doc = "**Chapter**: Queries"]
932#[doc = "<br>"]
933#[doc = "**Description**: Opaque handle to a query pool object"]
934#[doc = "<br>"]
935#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
936#[doc = "<br>"]
937#[doc = "**Reference**: [`VkQueryPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPool.html)"]
938pub struct QueryPool(u64);
939
940impl QueryPool {
941    #[must_use]
942    pub const fn null() -> Self {
943        Self(0)
944    }
945}
946
947impl std::fmt::Display for QueryPool {
948    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
949        write!(f, "0x{:016x}", self.0)
950    }
951}
952
953impl std::fmt::Debug for QueryPool {
954    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
955        f.debug_tuple("QueryPool").field(&format_args!("{self}")).finish()
956    }
957}
958
959#[repr(transparent)]
960#[derive(Clone, Copy)]
961#[doc = "**Chapter**: Window System Integration (WSI)"]
962#[doc = "<br>"]
963#[doc = "**Description**: Opaque handle to a surface object"]
964#[doc = "<br>"]
965#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
966#[doc = "<br>"]
967#[doc = "**Reference**: [`VkSurfaceKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSurfaceKHR.html)"]
968pub struct SurfaceKHR(u64);
969
970impl SurfaceKHR {
971    #[must_use]
972    pub const fn null() -> Self {
973        Self(0)
974    }
975}
976
977impl std::fmt::Display for SurfaceKHR {
978    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
979        write!(f, "0x{:016x}", self.0)
980    }
981}
982
983impl std::fmt::Debug for SurfaceKHR {
984    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
985        f.debug_tuple("SurfaceKHR").field(&format_args!("{self}")).finish()
986    }
987}
988
989#[repr(transparent)]
990#[derive(Clone, Copy)]
991#[doc = "**Chapter**: Window System Integration (WSI)"]
992#[doc = "<br>"]
993#[doc = "**Description**: Opaque handle to a swapchain object"]
994#[doc = "<br>"]
995#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
996#[doc = "<br>"]
997#[doc = "**Reference**: [`VkSwapchainKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSwapchainKHR.html)"]
998pub struct SwapchainKHR(u64);
999
1000impl SwapchainKHR {
1001    #[must_use]
1002    pub const fn null() -> Self {
1003        Self(0)
1004    }
1005}
1006
1007impl std::fmt::Display for SwapchainKHR {
1008    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1009        write!(f, "0x{:016x}", self.0)
1010    }
1011}
1012
1013impl std::fmt::Debug for SwapchainKHR {
1014    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1015        f.debug_tuple("SwapchainKHR").field(&format_args!("{self}")).finish()
1016    }
1017}
1018
1019#[repr(transparent)]
1020#[derive(Clone, Copy)]
1021#[doc = "**Chapter**: Deferred Host Operations"]
1022#[doc = "<br>"]
1023#[doc = "**Description**: A deferred operation"]
1024#[doc = "<br>"]
1025#[doc = "**Provided by**: [`VK_KHR_deferred_host_operations`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_deferred_host_operations.html)"]
1026#[doc = "<br>"]
1027#[doc = "**Reference**: [`VkDeferredOperationKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeferredOperationKHR.html)"]
1028pub struct DeferredOperationKHR(u64);
1029
1030impl DeferredOperationKHR {
1031    #[must_use]
1032    pub const fn null() -> Self {
1033        Self(0)
1034    }
1035}
1036
1037impl std::fmt::Display for DeferredOperationKHR {
1038    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1039        write!(f, "0x{:016x}", self.0)
1040    }
1041}
1042
1043impl std::fmt::Debug for DeferredOperationKHR {
1044    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1045        f.debug_tuple("DeferredOperationKHR").field(&format_args!("{self}")).finish()
1046    }
1047}
1048
1049#[repr(transparent)]
1050#[derive(Clone, Copy)]
1051#[doc = "**Chapter**: Debugging"]
1052#[doc = "<br>"]
1053#[doc = "**Description**: Opaque handle to a debug messenger object"]
1054#[doc = "<br>"]
1055#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
1056#[doc = "<br>"]
1057#[doc = "**Reference**: [`VkDebugUtilsMessengerEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessengerEXT.html)"]
1058pub struct DebugUtilsMessengerEXT(u64);
1059
1060impl DebugUtilsMessengerEXT {
1061    #[must_use]
1062    pub const fn null() -> Self {
1063        Self(0)
1064    }
1065}
1066
1067impl std::fmt::Display for DebugUtilsMessengerEXT {
1068    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1069        write!(f, "0x{:016x}", self.0)
1070    }
1071}
1072
1073impl std::fmt::Debug for DebugUtilsMessengerEXT {
1074    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1075        f.debug_tuple("DebugUtilsMessengerEXT").field(&format_args!("{self}")).finish()
1076    }
1077}
1078
1079//
1080// Enumerations
1081//
1082
1083#[repr(i32)]
1084#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1085#[doc = "**Chapter**: Fundamentals"]
1086#[doc = "<br>"]
1087#[doc = "**Description**: Vulkan command return codes"]
1088#[doc = "<br>"]
1089#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1090#[doc = "<br>"]
1091#[doc = "**Reference**: [`VkResult`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkResult.html)"]
1092pub enum Result {
1093    #[doc = "**Translated from**: `VK_SUCCESS`"]
1094    Success = 0,
1095    #[doc = "**Translated from**: `VK_NOT_READY`"]
1096    NotReady = 1,
1097    #[doc = "**Translated from**: `VK_TIMEOUT`"]
1098    Timeout = 2,
1099    #[doc = "**Translated from**: `VK_EVENT_SET`"]
1100    EventSet = 3,
1101    #[doc = "**Translated from**: `VK_EVENT_RESET`"]
1102    EventReset = 4,
1103    #[doc = "**Translated from**: `VK_INCOMPLETE`"]
1104    Incomplete = 5,
1105    #[doc = "**Translated from**: `VK_ERROR_OUT_OF_HOST_MEMORY`"]
1106    ErrorOutOfHostMemory = -1,
1107    #[doc = "**Translated from**: `VK_ERROR_OUT_OF_DEVICE_MEMORY`"]
1108    ErrorOutOfDeviceMemory = -2,
1109    #[doc = "**Translated from**: `VK_ERROR_INITIALIZATION_FAILED`"]
1110    ErrorInitializationFailed = -3,
1111    #[doc = "**Translated from**: `VK_ERROR_DEVICE_LOST`"]
1112    ErrorDeviceLost = -4,
1113    #[doc = "**Translated from**: `VK_ERROR_MEMORY_MAP_FAILED`"]
1114    ErrorMemoryMapFailed = -5,
1115    #[doc = "**Translated from**: `VK_ERROR_LAYER_NOT_PRESENT`"]
1116    ErrorLayerNotPresent = -6,
1117    #[doc = "**Translated from**: `VK_ERROR_EXTENSION_NOT_PRESENT`"]
1118    ErrorExtensionNotPresent = -7,
1119    #[doc = "**Translated from**: `VK_ERROR_FEATURE_NOT_PRESENT`"]
1120    ErrorFeatureNotPresent = -8,
1121    #[doc = "**Translated from**: `VK_ERROR_INCOMPATIBLE_DRIVER`"]
1122    ErrorIncompatibleDriver = -9,
1123    #[doc = "**Translated from**: `VK_ERROR_TOO_MANY_OBJECTS`"]
1124    ErrorTooManyObjects = -10,
1125    #[doc = "**Translated from**: `VK_ERROR_FORMAT_NOT_SUPPORTED`"]
1126    ErrorFormatNotSupported = -11,
1127    #[doc = "**Translated from**: `VK_ERROR_FRAGMENTED_POOL`"]
1128    ErrorFragmentedPool = -12,
1129    #[doc = "**Translated from**: `VK_ERROR_UNKNOWN`"]
1130    ErrorUnknown = -13,
1131    #[doc = "**Translated from**: `VK_ERROR_OUT_OF_POOL_MEMORY`"]
1132    ErrorOutOfPoolMemory = -1000069000,
1133    #[doc = "**Translated from**: `VK_ERROR_INVALID_EXTERNAL_HANDLE`"]
1134    ErrorInvalidExternalHandle = -1000072003,
1135    #[doc = "**Translated from**: `VK_ERROR_FRAGMENTATION`"]
1136    ErrorFragmentation = -1000161000,
1137    #[doc = "**Translated from**: `VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS`"]
1138    ErrorInvalidOpaqueCaptureAddress = -1000257000,
1139    #[doc = "**Translated from**: `VK_PIPELINE_COMPILE_REQUIRED`"]
1140    PipelineCompileRequired = 1000297000,
1141    #[doc = "**Translated from**: `VK_ERROR_SURFACE_LOST_KHR`"]
1142    ErrorSurfaceLostKHR = -1000000000,
1143    #[doc = "**Translated from**: `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`"]
1144    ErrorNativeWindowInUseKHR = -1000000001,
1145    #[doc = "**Translated from**: `VK_SUBOPTIMAL_KHR`"]
1146    SuboptimalKHR = 1000001003,
1147    #[doc = "**Translated from**: `VK_ERROR_OUT_OF_DATE_KHR`"]
1148    ErrorOutOfDateKHR = -1000001004,
1149    #[doc = "**Translated from**: `VK_THREAD_IDLE_KHR`"]
1150    ThreadIdleKHR = 1000268000,
1151    #[doc = "**Translated from**: `VK_THREAD_DONE_KHR`"]
1152    ThreadDoneKHR = 1000268001,
1153    #[doc = "**Translated from**: `VK_OPERATION_DEFERRED_KHR`"]
1154    OperationDeferredKHR = 1000268002,
1155    #[doc = "**Translated from**: `VK_OPERATION_NOT_DEFERRED_KHR`"]
1156    OperationNotDeferredKHR = 1000268003,
1157    #[doc = "**Translated from**: `VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT`"]
1158    ErrorIncompatibleShaderBinaryEXT = 1000482000,
1159}
1160
1161impl std::fmt::Display for Result {
1162    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1163        write!(f, "{self:?}")
1164    }
1165}
1166
1167#[repr(i32)]
1168#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1169#[doc = "**Chapter**: Fundamentals"]
1170#[doc = "<br>"]
1171#[doc = "**Description**: Vulkan structure types (pname:sType)"]
1172#[doc = "<br>"]
1173#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1174#[doc = "<br>"]
1175#[doc = "**Reference**: [`VkStructureType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkStructureType.html)"]
1176pub enum StructureType {
1177    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_APPLICATION_INFO`"]
1178    ApplicationInfo = 0,
1179    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO`"]
1180    InstanceCreateInfo = 1,
1181    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO`"]
1182    DeviceQueueCreateInfo = 2,
1183    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO`"]
1184    DeviceCreateInfo = 3,
1185    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBMIT_INFO`"]
1186    SubmitInfo = 4,
1187    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO`"]
1188    MemoryAllocateInfo = 5,
1189    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE`"]
1190    MappedMemoryRange = 6,
1191    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_SPARSE_INFO`"]
1192    BindSparseInfo = 7,
1193    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_FENCE_CREATE_INFO`"]
1194    FenceCreateInfo = 8,
1195    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO`"]
1196    SemaphoreCreateInfo = 9,
1197    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EVENT_CREATE_INFO`"]
1198    EventCreateInfo = 10,
1199    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO`"]
1200    QueryPoolCreateInfo = 11,
1201    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO`"]
1202    BufferCreateInfo = 12,
1203    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO`"]
1204    BufferViewCreateInfo = 13,
1205    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO`"]
1206    ImageCreateInfo = 14,
1207    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO`"]
1208    ImageViewCreateInfo = 15,
1209    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO`"]
1210    ShaderModuleCreateInfo = 16,
1211    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO`"]
1212    PipelineCacheCreateInfo = 17,
1213    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO`"]
1214    PipelineShaderStageCreateInfo = 18,
1215    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO`"]
1216    PipelineVertexInputStateCreateInfo = 19,
1217    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO`"]
1218    PipelineInputAssemblyStateCreateInfo = 20,
1219    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO`"]
1220    PipelineTessellationStateCreateInfo = 21,
1221    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO`"]
1222    PipelineViewportStateCreateInfo = 22,
1223    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO`"]
1224    PipelineRasterizationStateCreateInfo = 23,
1225    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO`"]
1226    PipelineMultisampleStateCreateInfo = 24,
1227    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO`"]
1228    PipelineDepthStencilStateCreateInfo = 25,
1229    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO`"]
1230    PipelineColorBlendStateCreateInfo = 26,
1231    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO`"]
1232    PipelineDynamicStateCreateInfo = 27,
1233    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO`"]
1234    GraphicsPipelineCreateInfo = 28,
1235    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO`"]
1236    ComputePipelineCreateInfo = 29,
1237    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO`"]
1238    PipelineLayoutCreateInfo = 30,
1239    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO`"]
1240    SamplerCreateInfo = 31,
1241    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO`"]
1242    DescriptorSetLayoutCreateInfo = 32,
1243    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO`"]
1244    DescriptorPoolCreateInfo = 33,
1245    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO`"]
1246    DescriptorSetAllocateInfo = 34,
1247    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET`"]
1248    WriteDescriptorSet = 35,
1249    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET`"]
1250    CopyDescriptorSet = 36,
1251    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO`"]
1252    FramebufferCreateInfo = 37,
1253    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO`"]
1254    RenderPassCreateInfo = 38,
1255    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO`"]
1256    CommandPoolCreateInfo = 39,
1257    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO`"]
1258    CommandBufferAllocateInfo = 40,
1259    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO`"]
1260    CommandBufferInheritanceInfo = 41,
1261    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO`"]
1262    CommandBufferBeginInfo = 42,
1263    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO`"]
1264    RenderPassBeginInfo = 43,
1265    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER`"]
1266    BufferMemoryBarrier = 44,
1267    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER`"]
1268    ImageMemoryBarrier = 45,
1269    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_BARRIER`"]
1270    MemoryBarrier = 46,
1271    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO`"]
1272    LoaderInstanceCreateInfo = 47,
1273    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO`"]
1274    LoaderDeviceCreateInfo = 48,
1275    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES`"]
1276    PhysicalDeviceSubgroupProperties = 1000094000,
1277    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO`"]
1278    BindBufferMemoryInfo = 1000157000,
1279    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO`"]
1280    BindImageMemoryInfo = 1000157001,
1281    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES`"]
1282    PhysicalDevice16bitStorageFeatures = 1000083000,
1283    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS`"]
1284    MemoryDedicatedRequirements = 1000127000,
1285    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO`"]
1286    MemoryDedicatedAllocateInfo = 1000127001,
1287    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO`"]
1288    MemoryAllocateFlagsInfo = 1000060000,
1289    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO`"]
1290    DeviceGroupRenderPassBeginInfo = 1000060003,
1291    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO`"]
1292    DeviceGroupCommandBufferBeginInfo = 1000060004,
1293    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO`"]
1294    DeviceGroupSubmitInfo = 1000060005,
1295    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO`"]
1296    DeviceGroupBindSparseInfo = 1000060006,
1297    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO`"]
1298    BindBufferMemoryDeviceGroupInfo = 1000060013,
1299    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO`"]
1300    BindImageMemoryDeviceGroupInfo = 1000060014,
1301    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES`"]
1302    PhysicalDeviceGroupProperties = 1000070000,
1303    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO`"]
1304    DeviceGroupDeviceCreateInfo = 1000070001,
1305    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2`"]
1306    BufferMemoryRequirementsInfo2 = 1000146000,
1307    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2`"]
1308    ImageMemoryRequirementsInfo2 = 1000146001,
1309    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2`"]
1310    ImageSparseMemoryRequirementsInfo2 = 1000146002,
1311    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2`"]
1312    MemoryRequirements2 = 1000146003,
1313    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2`"]
1314    SparseImageMemoryRequirements2 = 1000146004,
1315    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2`"]
1316    PhysicalDeviceFeatures2 = 1000059000,
1317    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2`"]
1318    PhysicalDeviceProperties2 = 1000059001,
1319    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2`"]
1320    FormatProperties2 = 1000059002,
1321    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2`"]
1322    ImageFormatProperties2 = 1000059003,
1323    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2`"]
1324    PhysicalDeviceImageFormatInfo2 = 1000059004,
1325    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2`"]
1326    QueueFamilyProperties2 = 1000059005,
1327    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2`"]
1328    PhysicalDeviceMemoryProperties2 = 1000059006,
1329    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2`"]
1330    SparseImageFormatProperties2 = 1000059007,
1331    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2`"]
1332    PhysicalDeviceSparseImageFormatInfo2 = 1000059008,
1333    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES`"]
1334    PhysicalDevicePointClippingProperties = 1000117000,
1335    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO`"]
1336    RenderPassInputAttachmentAspectCreateInfo = 1000117001,
1337    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO`"]
1338    ImageViewUsageCreateInfo = 1000117002,
1339    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO`"]
1340    PipelineTessellationDomainOriginStateCreateInfo = 1000117003,
1341    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO`"]
1342    RenderPassMultiviewCreateInfo = 1000053000,
1343    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES`"]
1344    PhysicalDeviceMultiviewFeatures = 1000053001,
1345    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES`"]
1346    PhysicalDeviceMultiviewProperties = 1000053002,
1347    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES`"]
1348    PhysicalDeviceVariablePointersFeatures = 1000120000,
1349    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO`"]
1350    ProtectedSubmitInfo = 1000145000,
1351    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES`"]
1352    PhysicalDeviceProtectedMemoryFeatures = 1000145001,
1353    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES`"]
1354    PhysicalDeviceProtectedMemoryProperties = 1000145002,
1355    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2`"]
1356    DeviceQueueInfo2 = 1000145003,
1357    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO`"]
1358    SamplerYcbcrConversionCreateInfo = 1000156000,
1359    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO`"]
1360    SamplerYcbcrConversionInfo = 1000156001,
1361    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO`"]
1362    BindImagePlaneMemoryInfo = 1000156002,
1363    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO`"]
1364    ImagePlaneMemoryRequirementsInfo = 1000156003,
1365    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES`"]
1366    PhysicalDeviceSamplerYcbcrConversionFeatures = 1000156004,
1367    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES`"]
1368    SamplerYcbcrConversionImageFormatProperties = 1000156005,
1369    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO`"]
1370    DescriptorUpdateTemplateCreateInfo = 1000085000,
1371    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO`"]
1372    PhysicalDeviceExternalImageFormatInfo = 1000071000,
1373    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES`"]
1374    ExternalImageFormatProperties = 1000071001,
1375    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO`"]
1376    PhysicalDeviceExternalBufferInfo = 1000071002,
1377    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES`"]
1378    ExternalBufferProperties = 1000071003,
1379    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES`"]
1380    PhysicalDeviceIdProperties = 1000071004,
1381    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO`"]
1382    ExternalMemoryBufferCreateInfo = 1000072000,
1383    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO`"]
1384    ExternalMemoryImageCreateInfo = 1000072001,
1385    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO`"]
1386    ExportMemoryAllocateInfo = 1000072002,
1387    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO`"]
1388    PhysicalDeviceExternalFenceInfo = 1000112000,
1389    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES`"]
1390    ExternalFenceProperties = 1000112001,
1391    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO`"]
1392    ExportFenceCreateInfo = 1000113000,
1393    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO`"]
1394    ExportSemaphoreCreateInfo = 1000077000,
1395    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO`"]
1396    PhysicalDeviceExternalSemaphoreInfo = 1000076000,
1397    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES`"]
1398    ExternalSemaphoreProperties = 1000076001,
1399    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES`"]
1400    PhysicalDeviceMaintenance3Properties = 1000168000,
1401    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT`"]
1402    DescriptorSetLayoutSupport = 1000168001,
1403    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES`"]
1404    PhysicalDeviceShaderDrawParametersFeatures = 1000063000,
1405    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES`"]
1406    PhysicalDeviceVulkan11Features = 49,
1407    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES`"]
1408    PhysicalDeviceVulkan11Properties = 50,
1409    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES`"]
1410    PhysicalDeviceVulkan12Features = 51,
1411    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES`"]
1412    PhysicalDeviceVulkan12Properties = 52,
1413    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO`"]
1414    ImageFormatListCreateInfo = 1000147000,
1415    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2`"]
1416    AttachmentDescription2 = 1000109000,
1417    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2`"]
1418    AttachmentReference2 = 1000109001,
1419    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2`"]
1420    SubpassDescription2 = 1000109002,
1421    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2`"]
1422    SubpassDependency2 = 1000109003,
1423    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2`"]
1424    RenderPassCreateInfo2 = 1000109004,
1425    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO`"]
1426    SubpassBeginInfo = 1000109005,
1427    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBPASS_END_INFO`"]
1428    SubpassEndInfo = 1000109006,
1429    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES`"]
1430    PhysicalDevice8bitStorageFeatures = 1000177000,
1431    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES`"]
1432    PhysicalDeviceDriverProperties = 1000196000,
1433    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES`"]
1434    PhysicalDeviceShaderAtomicInt64Features = 1000180000,
1435    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES`"]
1436    PhysicalDeviceShaderFloat16Int8Features = 1000082000,
1437    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES`"]
1438    PhysicalDeviceFloatControlsProperties = 1000197000,
1439    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO`"]
1440    DescriptorSetLayoutBindingFlagsCreateInfo = 1000161000,
1441    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES`"]
1442    PhysicalDeviceDescriptorIndexingFeatures = 1000161001,
1443    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES`"]
1444    PhysicalDeviceDescriptorIndexingProperties = 1000161002,
1445    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO`"]
1446    DescriptorSetVariableDescriptorCountAllocateInfo = 1000161003,
1447    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT`"]
1448    DescriptorSetVariableDescriptorCountLayoutSupport = 1000161004,
1449    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES`"]
1450    PhysicalDeviceDepthStencilResolveProperties = 1000199000,
1451    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE`"]
1452    SubpassDescriptionDepthStencilResolve = 1000199001,
1453    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES`"]
1454    PhysicalDeviceScalarBlockLayoutFeatures = 1000221000,
1455    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO`"]
1456    ImageStencilUsageCreateInfo = 1000246000,
1457    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES`"]
1458    PhysicalDeviceSamplerFilterMinmaxProperties = 1000130000,
1459    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO`"]
1460    SamplerReductionModeCreateInfo = 1000130001,
1461    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES`"]
1462    PhysicalDeviceVulkanMemoryModelFeatures = 1000211000,
1463    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES`"]
1464    PhysicalDeviceImagelessFramebufferFeatures = 1000108000,
1465    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO`"]
1466    FramebufferAttachmentsCreateInfo = 1000108001,
1467    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO`"]
1468    FramebufferAttachmentImageInfo = 1000108002,
1469    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO`"]
1470    RenderPassAttachmentBeginInfo = 1000108003,
1471    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES`"]
1472    PhysicalDeviceUniformBufferStandardLayoutFeatures = 1000253000,
1473    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES`"]
1474    PhysicalDeviceShaderSubgroupExtendedTypesFeatures = 1000175000,
1475    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES`"]
1476    PhysicalDeviceSeparateDepthStencilLayoutsFeatures = 1000241000,
1477    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT`"]
1478    AttachmentReferenceStencilLayout = 1000241001,
1479    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT`"]
1480    AttachmentDescriptionStencilLayout = 1000241002,
1481    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES`"]
1482    PhysicalDeviceHostQueryResetFeatures = 1000261000,
1483    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES`"]
1484    PhysicalDeviceTimelineSemaphoreFeatures = 1000207000,
1485    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES`"]
1486    PhysicalDeviceTimelineSemaphoreProperties = 1000207001,
1487    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO`"]
1488    SemaphoreTypeCreateInfo = 1000207002,
1489    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO`"]
1490    TimelineSemaphoreSubmitInfo = 1000207003,
1491    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO`"]
1492    SemaphoreWaitInfo = 1000207004,
1493    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO`"]
1494    SemaphoreSignalInfo = 1000207005,
1495    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES`"]
1496    PhysicalDeviceBufferDeviceAddressFeatures = 1000257000,
1497    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO`"]
1498    BufferDeviceAddressInfo = 1000244001,
1499    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO`"]
1500    BufferOpaqueCaptureAddressCreateInfo = 1000257002,
1501    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO`"]
1502    MemoryOpaqueCaptureAddressAllocateInfo = 1000257003,
1503    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO`"]
1504    DeviceMemoryOpaqueCaptureAddressInfo = 1000257004,
1505    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES`"]
1506    PhysicalDeviceVulkan13Features = 53,
1507    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES`"]
1508    PhysicalDeviceVulkan13Properties = 54,
1509    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO`"]
1510    PipelineCreationFeedbackCreateInfo = 1000192000,
1511    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES`"]
1512    PhysicalDeviceShaderTerminateInvocationFeatures = 1000215000,
1513    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES`"]
1514    PhysicalDeviceToolProperties = 1000245000,
1515    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES`"]
1516    PhysicalDeviceShaderDemoteToHelperInvocationFeatures = 1000276000,
1517    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES`"]
1518    PhysicalDevicePrivateDataFeatures = 1000295000,
1519    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO`"]
1520    DevicePrivateDataCreateInfo = 1000295001,
1521    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO`"]
1522    PrivateDataSlotCreateInfo = 1000295002,
1523    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES`"]
1524    PhysicalDevicePipelineCreationCacheControlFeatures = 1000297000,
1525    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_BARRIER_2`"]
1526    MemoryBarrier2 = 1000314000,
1527    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2`"]
1528    BufferMemoryBarrier2 = 1000314001,
1529    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2`"]
1530    ImageMemoryBarrier2 = 1000314002,
1531    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEPENDENCY_INFO`"]
1532    DependencyInfo = 1000314003,
1533    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SUBMIT_INFO_2`"]
1534    SubmitInfo2 = 1000314004,
1535    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO`"]
1536    SemaphoreSubmitInfo = 1000314005,
1537    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO`"]
1538    CommandBufferSubmitInfo = 1000314006,
1539    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES`"]
1540    PhysicalDeviceSynchronization2Features = 1000314007,
1541    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES`"]
1542    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = 1000325000,
1543    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES`"]
1544    PhysicalDeviceImageRobustnessFeatures = 1000335000,
1545    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2`"]
1546    CopyBufferInfo2 = 1000337000,
1547    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2`"]
1548    CopyImageInfo2 = 1000337001,
1549    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2`"]
1550    CopyBufferToImageInfo2 = 1000337002,
1551    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2`"]
1552    CopyImageToBufferInfo2 = 1000337003,
1553    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2`"]
1554    BlitImageInfo2 = 1000337004,
1555    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2`"]
1556    ResolveImageInfo2 = 1000337005,
1557    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_COPY_2`"]
1558    BufferCopy2 = 1000337006,
1559    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_COPY_2`"]
1560    ImageCopy2 = 1000337007,
1561    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_BLIT_2`"]
1562    ImageBlit2 = 1000337008,
1563    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2`"]
1564    BufferImageCopy2 = 1000337009,
1565    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2`"]
1566    ImageResolve2 = 1000337010,
1567    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES`"]
1568    PhysicalDeviceSubgroupSizeControlProperties = 1000225000,
1569    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO`"]
1570    PipelineShaderStageRequiredSubgroupSizeCreateInfo = 1000225001,
1571    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES`"]
1572    PhysicalDeviceSubgroupSizeControlFeatures = 1000225002,
1573    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES`"]
1574    PhysicalDeviceInlineUniformBlockFeatures = 1000138000,
1575    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES`"]
1576    PhysicalDeviceInlineUniformBlockProperties = 1000138001,
1577    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK`"]
1578    WriteDescriptorSetInlineUniformBlock = 1000138002,
1579    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO`"]
1580    DescriptorPoolInlineUniformBlockCreateInfo = 1000138003,
1581    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES`"]
1582    PhysicalDeviceTextureCompressionAstcHdrFeatures = 1000066000,
1583    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDERING_INFO`"]
1584    RenderingInfo = 1000044000,
1585    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO`"]
1586    RenderingAttachmentInfo = 1000044001,
1587    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO`"]
1588    PipelineRenderingCreateInfo = 1000044002,
1589    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES`"]
1590    PhysicalDeviceDynamicRenderingFeatures = 1000044003,
1591    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO`"]
1592    CommandBufferInheritanceRenderingInfo = 1000044004,
1593    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES`"]
1594    PhysicalDeviceShaderIntegerDotProductFeatures = 1000280000,
1595    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES`"]
1596    PhysicalDeviceShaderIntegerDotProductProperties = 1000280001,
1597    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES`"]
1598    PhysicalDeviceTexelBufferAlignmentProperties = 1000281001,
1599    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3`"]
1600    FormatProperties3 = 1000360000,
1601    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES`"]
1602    PhysicalDeviceMaintenance4Features = 1000413000,
1603    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES`"]
1604    PhysicalDeviceMaintenance4Properties = 1000413001,
1605    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS`"]
1606    DeviceBufferMemoryRequirements = 1000413002,
1607    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS`"]
1608    DeviceImageMemoryRequirements = 1000413003,
1609    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR`"]
1610    SwapchainCreateInfoKHR = 1000001000,
1611    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PRESENT_INFO_KHR`"]
1612    PresentInfoKHR = 1000001001,
1613    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR`"]
1614    DeviceGroupPresentCapabilitiesKHR = 1000060007,
1615    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR`"]
1616    ImageSwapchainCreateInfoKHR = 1000060008,
1617    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR`"]
1618    BindImageMemorySwapchainInfoKHR = 1000060009,
1619    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR`"]
1620    AcquireNextImageInfoKHR = 1000060010,
1621    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR`"]
1622    DeviceGroupPresentInfoKHR = 1000060011,
1623    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR`"]
1624    DeviceGroupSwapchainCreateInfoKHR = 1000060012,
1625    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR`"]
1626    Win32SurfaceCreateInfoKHR = 1000009000,
1627    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT`"]
1628    DebugUtilsObjectNameInfoEXT = 1000128000,
1629    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT`"]
1630    DebugUtilsObjectTagInfoEXT = 1000128001,
1631    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT`"]
1632    DebugUtilsLabelEXT = 1000128002,
1633    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT`"]
1634    DebugUtilsMessengerCallbackDataEXT = 1000128003,
1635    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT`"]
1636    DebugUtilsMessengerCreateInfoEXT = 1000128004,
1637    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR`"]
1638    WriteDescriptorSetAccelerationStructureKHR = 1000150007,
1639    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR`"]
1640    AccelerationStructureBuildGeometryInfoKHR = 1000150000,
1641    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR`"]
1642    AccelerationStructureDeviceAddressInfoKHR = 1000150002,
1643    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR`"]
1644    AccelerationStructureGeometryAabbsDataKHR = 1000150003,
1645    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR`"]
1646    AccelerationStructureGeometryInstancesDataKHR = 1000150004,
1647    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR`"]
1648    AccelerationStructureGeometryTrianglesDataKHR = 1000150005,
1649    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR`"]
1650    AccelerationStructureGeometryKHR = 1000150006,
1651    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR`"]
1652    AccelerationStructureVersionInfoKHR = 1000150009,
1653    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR`"]
1654    CopyAccelerationStructureInfoKHR = 1000150010,
1655    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR`"]
1656    CopyAccelerationStructureToMemoryInfoKHR = 1000150011,
1657    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR`"]
1658    CopyMemoryToAccelerationStructureInfoKHR = 1000150012,
1659    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR`"]
1660    PhysicalDeviceAccelerationStructureFeaturesKHR = 1000150013,
1661    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR`"]
1662    PhysicalDeviceAccelerationStructurePropertiesKHR = 1000150014,
1663    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR`"]
1664    AccelerationStructureCreateInfoKHR = 1000150017,
1665    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR`"]
1666    AccelerationStructureBuildSizesInfoKHR = 1000150020,
1667    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR`"]
1668    PhysicalDeviceRayTracingPipelineFeaturesKHR = 1000347000,
1669    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR`"]
1670    PhysicalDeviceRayTracingPipelinePropertiesKHR = 1000347001,
1671    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR`"]
1672    RayTracingPipelineCreateInfoKHR = 1000150015,
1673    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR`"]
1674    RayTracingShaderGroupCreateInfoKHR = 1000150016,
1675    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR`"]
1676    RayTracingPipelineInterfaceCreateInfoKHR = 1000150018,
1677    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR`"]
1678    PhysicalDeviceRayQueryFeaturesKHR = 1000348013,
1679    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT`"]
1680    CalibratedTimestampInfoEXT = 1000184000,
1681    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT`"]
1682    ValidationFeaturesEXT = 1000247000,
1683    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR`"]
1684    MemoryMapInfoKHR = 1000271000,
1685    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR`"]
1686    MemoryUnmapInfoKHR = 1000271001,
1687    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR`"]
1688    PipelineLibraryCreateInfoKHR = 1000290000,
1689    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV`"]
1690    QueueFamilyCheckpointProperties2Nv = 1000314008,
1691    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV`"]
1692    CheckpointData2Nv = 1000314009,
1693    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT`"]
1694    PhysicalDeviceDescriptorBufferPropertiesEXT = 1000316000,
1695    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT`"]
1696    PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = 1000316001,
1697    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT`"]
1698    PhysicalDeviceDescriptorBufferFeaturesEXT = 1000316002,
1699    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT`"]
1700    DescriptorAddressInfoEXT = 1000316003,
1701    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT`"]
1702    DescriptorGetInfoEXT = 1000316004,
1703    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT`"]
1704    BufferCaptureDescriptorDataInfoEXT = 1000316005,
1705    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT`"]
1706    ImageCaptureDescriptorDataInfoEXT = 1000316006,
1707    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT`"]
1708    ImageViewCaptureDescriptorDataInfoEXT = 1000316007,
1709    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT`"]
1710    SamplerCaptureDescriptorDataInfoEXT = 1000316008,
1711    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT`"]
1712    OpaqueCaptureDescriptorDataCreateInfoEXT = 1000316010,
1713    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT`"]
1714    DescriptorBufferBindingInfoEXT = 1000316011,
1715    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT`"]
1716    DescriptorBufferBindingPushDescriptorBufferHandleEXT = 1000316012,
1717    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT`"]
1718    AccelerationStructureCaptureDescriptorDataInfoEXT = 1000316009,
1719    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT`"]
1720    PhysicalDeviceMeshShaderFeaturesEXT = 1000328000,
1721    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT`"]
1722    PhysicalDeviceMeshShaderPropertiesEXT = 1000328001,
1723    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR`"]
1724    PhysicalDeviceRayTracingMaintenance1FeaturesKHR = 1000386000,
1725    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT`"]
1726    PhysicalDeviceShaderObjectFeaturesEXT = 1000482000,
1727    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT`"]
1728    PhysicalDeviceShaderObjectPropertiesEXT = 1000482001,
1729    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT`"]
1730    ShaderCreateInfoEXT = 1000482002,
1731    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT`"]
1732    VertexInputBindingDescription2EXT = 1000352001,
1733    #[doc = "**Translated from**: `VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT`"]
1734    VertexInputAttributeDescription2EXT = 1000352002,
1735}
1736
1737impl std::fmt::Display for StructureType {
1738    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1739        write!(f, "{self:?}")
1740    }
1741}
1742
1743#[repr(i32)]
1744#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1745#[doc = "**Chapter**: Initialization"]
1746#[doc = "<br>"]
1747#[doc = "**Description**: Specify validation features to enable"]
1748#[doc = "<br>"]
1749#[doc = "**Provided by**: [`VK_EXT_validation_features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_validation_features.html)"]
1750#[doc = "<br>"]
1751#[doc = "**Reference**: [`VkValidationFeatureEnableEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationFeatureEnableEXT.html)"]
1752pub enum ValidationFeatureEnableEXT {
1753    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT`"]
1754    GpuAssistedEXT = 0,
1755    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT`"]
1756    GpuAssistedReserveBindingSlotEXT = 1,
1757    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT`"]
1758    BestPracticesEXT = 2,
1759    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT`"]
1760    DebugPrintfEXT = 3,
1761    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT`"]
1762    SynchronizationValidationEXT = 4,
1763}
1764
1765impl std::fmt::Display for ValidationFeatureEnableEXT {
1766    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1767        write!(f, "{self:?}")
1768    }
1769}
1770
1771#[repr(i32)]
1772#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1773#[doc = "**Chapter**: Initialization"]
1774#[doc = "<br>"]
1775#[doc = "**Description**: Specify validation features to disable"]
1776#[doc = "<br>"]
1777#[doc = "**Provided by**: [`VK_EXT_validation_features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_validation_features.html)"]
1778#[doc = "<br>"]
1779#[doc = "**Reference**: [`VkValidationFeatureDisableEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationFeatureDisableEXT.html)"]
1780pub enum ValidationFeatureDisableEXT {
1781    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_ALL_EXT`"]
1782    AllEXT = 0,
1783    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT`"]
1784    ShadersEXT = 1,
1785    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT`"]
1786    ThreadSafetyEXT = 2,
1787    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT`"]
1788    ApiParametersEXT = 3,
1789    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT`"]
1790    ObjectLifetimesEXT = 4,
1791    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT`"]
1792    CoreChecksEXT = 5,
1793    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT`"]
1794    UniqueHandlesEXT = 6,
1795    #[doc = "**Translated from**: `VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT`"]
1796    ShaderValidationCacheEXT = 7,
1797}
1798
1799impl std::fmt::Display for ValidationFeatureDisableEXT {
1800    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1801        write!(f, "{self:?}")
1802    }
1803}
1804
1805#[repr(i32)]
1806#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1807#[doc = "**Chapter**: Devices and Queues"]
1808#[doc = "<br>"]
1809#[doc = "**Description**: Supported physical device types"]
1810#[doc = "<br>"]
1811#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1812#[doc = "<br>"]
1813#[doc = "**Reference**: [`VkPhysicalDeviceType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html)"]
1814pub enum PhysicalDeviceType {
1815    #[doc = "**Translated from**: `VK_PHYSICAL_DEVICE_TYPE_OTHER`"]
1816    Other = 0,
1817    #[doc = "**Translated from**: `VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU`"]
1818    IntegratedGpu = 1,
1819    #[doc = "**Translated from**: `VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU`"]
1820    DiscreteGpu = 2,
1821    #[doc = "**Translated from**: `VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU`"]
1822    VirtualGpu = 3,
1823    #[doc = "**Translated from**: `VK_PHYSICAL_DEVICE_TYPE_CPU`"]
1824    Cpu = 4,
1825}
1826
1827impl std::fmt::Display for PhysicalDeviceType {
1828    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1829        write!(f, "{self:?}")
1830    }
1831}
1832
1833#[repr(i32)]
1834#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1835#[doc = "**Chapter**: Command Buffers"]
1836#[doc = "<br>"]
1837#[doc = "**Description**: Enumerant specifying a command buffer level"]
1838#[doc = "<br>"]
1839#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1840#[doc = "<br>"]
1841#[doc = "**Reference**: [`VkCommandBufferLevel`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferLevel.html)"]
1842pub enum CommandBufferLevel {
1843    #[doc = "**Translated from**: `VK_COMMAND_BUFFER_LEVEL_PRIMARY`"]
1844    Primary = 0,
1845    #[doc = "**Translated from**: `VK_COMMAND_BUFFER_LEVEL_SECONDARY`"]
1846    Secondary = 1,
1847}
1848
1849impl std::fmt::Display for CommandBufferLevel {
1850    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1851        write!(f, "{self:?}")
1852    }
1853}
1854
1855#[repr(i32)]
1856#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1857#[doc = "**Chapter**: Synchronization and Cache Control"]
1858#[doc = "<br>"]
1859#[doc = "**Description**: Specifies the type of a semaphore object"]
1860#[doc = "<br>"]
1861#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
1862#[doc = "<br>"]
1863#[doc = "**Reference**: [`VkSemaphoreType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreType.html)"]
1864pub enum SemaphoreType {
1865    #[doc = "**Translated from**: `VK_SEMAPHORE_TYPE_BINARY`"]
1866    Binary = 0,
1867    #[doc = "**Translated from**: `VK_SEMAPHORE_TYPE_TIMELINE`"]
1868    Timeline = 1,
1869}
1870
1871impl std::fmt::Display for SemaphoreType {
1872    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1873        write!(f, "{self:?}")
1874    }
1875}
1876
1877#[repr(i32)]
1878#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1879#[doc = "**Chapter**: Synchronization and Cache Control"]
1880#[doc = "<br>"]
1881#[doc = "**Description**: Supported time domains"]
1882#[doc = "<br>"]
1883#[doc = "**Provided by**: [`VK_EXT_calibrated_timestamps`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_calibrated_timestamps.html)"]
1884#[doc = "<br>"]
1885#[doc = "**Reference**: [`VkTimeDomainEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkTimeDomainEXT.html)"]
1886pub enum TimeDomainEXT {
1887    #[doc = "**Translated from**: `VK_TIME_DOMAIN_DEVICE_EXT`"]
1888    DeviceEXT = 0,
1889    #[doc = "**Translated from**: `VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT`"]
1890    ClockMonotonicEXT = 1,
1891    #[doc = "**Translated from**: `VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT`"]
1892    ClockMonotonicRawEXT = 2,
1893    #[doc = "**Translated from**: `VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT`"]
1894    QueryPerformanceCounterEXT = 3,
1895}
1896
1897impl std::fmt::Display for TimeDomainEXT {
1898    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1899        write!(f, "{self:?}")
1900    }
1901}
1902
1903#[repr(i32)]
1904#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1905#[doc = "**Chapter**: Render Pass"]
1906#[doc = "<br>"]
1907#[doc = "**Description**: Specify how contents of an attachment are treated at the beginning of a subpass"]
1908#[doc = "<br>"]
1909#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1910#[doc = "<br>"]
1911#[doc = "**Reference**: [`VkAttachmentLoadOp`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html)"]
1912pub enum AttachmentLoadOp {
1913    #[doc = "**Translated from**: `VK_ATTACHMENT_LOAD_OP_LOAD`"]
1914    Load = 0,
1915    #[doc = "**Translated from**: `VK_ATTACHMENT_LOAD_OP_CLEAR`"]
1916    Clear = 1,
1917    #[doc = "**Translated from**: `VK_ATTACHMENT_LOAD_OP_DONT_CARE`"]
1918    DontCare = 2,
1919}
1920
1921impl std::fmt::Display for AttachmentLoadOp {
1922    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1923        write!(f, "{self:?}")
1924    }
1925}
1926
1927#[repr(i32)]
1928#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1929#[doc = "**Chapter**: Render Pass"]
1930#[doc = "<br>"]
1931#[doc = "**Description**: Specify how contents of an attachment are treated at the end of a subpass"]
1932#[doc = "<br>"]
1933#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1934#[doc = "<br>"]
1935#[doc = "**Reference**: [`VkAttachmentStoreOp`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentStoreOp.html)"]
1936pub enum AttachmentStoreOp {
1937    #[doc = "**Translated from**: `VK_ATTACHMENT_STORE_OP_STORE`"]
1938    Store = 0,
1939    #[doc = "**Translated from**: `VK_ATTACHMENT_STORE_OP_DONT_CARE`"]
1940    DontCare = 1,
1941    #[doc = "**Translated from**: `VK_ATTACHMENT_STORE_OP_NONE`"]
1942    None = 1000301000,
1943}
1944
1945impl std::fmt::Display for AttachmentStoreOp {
1946    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1947        write!(f, "{self:?}")
1948    }
1949}
1950
1951#[repr(i32)]
1952#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1953#[doc = "**Chapter**: Shaders"]
1954#[doc = "<br>"]
1955#[doc = "**Description**: Indicate a shader code type"]
1956#[doc = "<br>"]
1957#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
1958#[doc = "<br>"]
1959#[doc = "**Reference**: [`VkShaderCodeTypeEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderCodeTypeEXT.html)"]
1960pub enum ShaderCodeTypeEXT {
1961    #[doc = "**Translated from**: `VK_SHADER_CODE_TYPE_BINARY_EXT`"]
1962    BinaryEXT = 0,
1963    #[doc = "**Translated from**: `VK_SHADER_CODE_TYPE_SPIRV_EXT`"]
1964    SpirvEXT = 1,
1965}
1966
1967impl std::fmt::Display for ShaderCodeTypeEXT {
1968    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1969        write!(f, "{self:?}")
1970    }
1971}
1972
1973#[repr(i32)]
1974#[derive(Clone, Copy, PartialEq, Eq, Debug)]
1975#[doc = "**Chapter**: Pipelines"]
1976#[doc = "<br>"]
1977#[doc = "**Description**: Indicate which dynamic state is taken from dynamic state commands"]
1978#[doc = "<br>"]
1979#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
1980#[doc = "<br>"]
1981#[doc = "**Reference**: [`VkDynamicState`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html)"]
1982pub enum DynamicState {
1983    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_VIEWPORT`"]
1984    Viewport = 0,
1985    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_SCISSOR`"]
1986    Scissor = 1,
1987    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_LINE_WIDTH`"]
1988    LineWidth = 2,
1989    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_BIAS`"]
1990    DepthBias = 3,
1991    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_BLEND_CONSTANTS`"]
1992    BlendConstants = 4,
1993    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_BOUNDS`"]
1994    DepthBounds = 5,
1995    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK`"]
1996    StencilCompareMask = 6,
1997    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_STENCIL_WRITE_MASK`"]
1998    StencilWriteMask = 7,
1999    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_STENCIL_REFERENCE`"]
2000    StencilReference = 8,
2001    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_CULL_MODE`"]
2002    CullMode = 1000267000,
2003    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_FRONT_FACE`"]
2004    FrontFace = 1000267001,
2005    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY`"]
2006    PrimitiveTopology = 1000267002,
2007    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT`"]
2008    ViewportWithCount = 1000267003,
2009    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT`"]
2010    ScissorWithCount = 1000267004,
2011    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE`"]
2012    VertexInputBindingStride = 1000267005,
2013    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE`"]
2014    DepthTestEnable = 1000267006,
2015    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE`"]
2016    DepthWriteEnable = 1000267007,
2017    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_COMPARE_OP`"]
2018    DepthCompareOp = 1000267008,
2019    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE`"]
2020    DepthBoundsTestEnable = 1000267009,
2021    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE`"]
2022    StencilTestEnable = 1000267010,
2023    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_STENCIL_OP`"]
2024    StencilOp = 1000267011,
2025    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE`"]
2026    RasterizerDiscardEnable = 1000377001,
2027    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE`"]
2028    DepthBiasEnable = 1000377002,
2029    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE`"]
2030    PrimitiveRestartEnable = 1000377004,
2031    #[doc = "**Translated from**: `VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR`"]
2032    RayTracingPipelineStackSizeKHR = 1000347000,
2033}
2034
2035impl std::fmt::Display for DynamicState {
2036    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2037        write!(f, "{self:?}")
2038    }
2039}
2040
2041#[repr(i32)]
2042#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2043#[doc = "**Chapter**: Pipelines"]
2044#[doc = "<br>"]
2045#[doc = "**Description**: Shader group types"]
2046#[doc = "<br>"]
2047#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
2048#[doc = "<br>"]
2049#[doc = "**Reference**: [`VkRayTracingShaderGroupTypeKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRayTracingShaderGroupTypeKHR.html)"]
2050pub enum RayTracingShaderGroupTypeKHR {
2051    #[doc = "**Translated from**: `VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR`"]
2052    GeneralKHR = 0,
2053    #[doc = "**Translated from**: `VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR`"]
2054    TrianglesHitGroupKHR = 1,
2055    #[doc = "**Translated from**: `VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR`"]
2056    ProceduralHitGroupKHR = 2,
2057}
2058
2059impl std::fmt::Display for RayTracingShaderGroupTypeKHR {
2060    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2061        write!(f, "{self:?}")
2062    }
2063}
2064
2065#[repr(i32)]
2066#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2067#[doc = "**Chapter**: Pipelines"]
2068#[doc = "<br>"]
2069#[doc = "**Description**: Specify the bind point of a pipeline object to a command buffer"]
2070#[doc = "<br>"]
2071#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2072#[doc = "<br>"]
2073#[doc = "**Reference**: [`VkPipelineBindPoint`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineBindPoint.html)"]
2074pub enum PipelineBindPoint {
2075    #[doc = "**Translated from**: `VK_PIPELINE_BIND_POINT_GRAPHICS`"]
2076    Graphics = 0,
2077    #[doc = "**Translated from**: `VK_PIPELINE_BIND_POINT_COMPUTE`"]
2078    Compute = 1,
2079    #[doc = "**Translated from**: `VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR`"]
2080    RayTracingKHR = 1000165000,
2081}
2082
2083impl std::fmt::Display for PipelineBindPoint {
2084    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2085        write!(f, "{self:?}")
2086    }
2087}
2088
2089#[repr(i32)]
2090#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2091#[doc = "**Chapter**: Memory Allocation"]
2092#[doc = "<br>"]
2093#[doc = "**Description**: Allocation scope"]
2094#[doc = "<br>"]
2095#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2096#[doc = "<br>"]
2097#[doc = "**Reference**: [`VkSystemAllocationScope`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSystemAllocationScope.html)"]
2098pub enum SystemAllocationScope {
2099    #[doc = "**Translated from**: `VK_SYSTEM_ALLOCATION_SCOPE_COMMAND`"]
2100    Command = 0,
2101    #[doc = "**Translated from**: `VK_SYSTEM_ALLOCATION_SCOPE_OBJECT`"]
2102    Object = 1,
2103    #[doc = "**Translated from**: `VK_SYSTEM_ALLOCATION_SCOPE_CACHE`"]
2104    Cache = 2,
2105    #[doc = "**Translated from**: `VK_SYSTEM_ALLOCATION_SCOPE_DEVICE`"]
2106    Device = 3,
2107    #[doc = "**Translated from**: `VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE`"]
2108    Instance = 4,
2109}
2110
2111impl std::fmt::Display for SystemAllocationScope {
2112    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2113        write!(f, "{self:?}")
2114    }
2115}
2116
2117#[repr(i32)]
2118#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2119#[doc = "**Chapter**: Memory Allocation"]
2120#[doc = "<br>"]
2121#[doc = "**Description**: Allocation type"]
2122#[doc = "<br>"]
2123#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2124#[doc = "<br>"]
2125#[doc = "**Reference**: [`VkInternalAllocationType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInternalAllocationType.html)"]
2126pub enum InternalAllocationType {
2127    #[doc = "**Translated from**: `VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE`"]
2128    Executable = 0,
2129}
2130
2131impl std::fmt::Display for InternalAllocationType {
2132    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2133        write!(f, "{self:?}")
2134    }
2135}
2136
2137#[repr(i32)]
2138#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2139#[doc = "**Chapter**: Resource Creation"]
2140#[doc = "<br>"]
2141#[doc = "**Description**: Specifies the type of an image object"]
2142#[doc = "<br>"]
2143#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2144#[doc = "<br>"]
2145#[doc = "**Reference**: [`VkImageType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageType.html)"]
2146pub enum ImageType {
2147    #[doc = "**Translated from**: `VK_IMAGE_TYPE_1D`"]
2148    Type1d = 0,
2149    #[doc = "**Translated from**: `VK_IMAGE_TYPE_2D`"]
2150    Type2d = 1,
2151    #[doc = "**Translated from**: `VK_IMAGE_TYPE_3D`"]
2152    Type3d = 2,
2153}
2154
2155impl std::fmt::Display for ImageType {
2156    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2157        write!(f, "{self:?}")
2158    }
2159}
2160
2161#[repr(i32)]
2162#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2163#[doc = "**Chapter**: Resource Creation"]
2164#[doc = "<br>"]
2165#[doc = "**Description**: Specifies the tiling arrangement of data in an image"]
2166#[doc = "<br>"]
2167#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2168#[doc = "<br>"]
2169#[doc = "**Reference**: [`VkImageTiling`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageTiling.html)"]
2170pub enum ImageTiling {
2171    #[doc = "**Translated from**: `VK_IMAGE_TILING_OPTIMAL`"]
2172    Optimal = 0,
2173    #[doc = "**Translated from**: `VK_IMAGE_TILING_LINEAR`"]
2174    Linear = 1,
2175}
2176
2177impl std::fmt::Display for ImageTiling {
2178    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2179        write!(f, "{self:?}")
2180    }
2181}
2182
2183#[repr(i32)]
2184#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2185#[doc = "**Chapter**: Resource Creation"]
2186#[doc = "<br>"]
2187#[doc = "**Description**: Layout of image and image subresources"]
2188#[doc = "<br>"]
2189#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2190#[doc = "<br>"]
2191#[doc = "**Reference**: [`VkImageLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html)"]
2192pub enum ImageLayout {
2193    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_UNDEFINED`"]
2194    Undefined = 0,
2195    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_GENERAL`"]
2196    General = 1,
2197    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL`"]
2198    #[deprecated(note = "Replace with: `vk::ImageLayout::AttachmentOptimal`")]
2199    ColorAttachmentOptimal = 2,
2200    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL`"]
2201    #[deprecated(note = "Replace with: `vk::ImageLayout::AttachmentOptimal`")]
2202    DepthStencilAttachmentOptimal = 3,
2203    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL`"]
2204    #[deprecated(note = "Replace with: `vk::ImageLayout::ReadOnlyOptimal`")]
2205    DepthStencilReadOnlyOptimal = 4,
2206    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL`"]
2207    #[deprecated(note = "Replace with: `vk::ImageLayout::ReadOnlyOptimal`")]
2208    ShaderReadOnlyOptimal = 5,
2209    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL`"]
2210    TransferSrcOptimal = 6,
2211    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL`"]
2212    TransferDstOptimal = 7,
2213    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_PREINITIALIZED`"]
2214    Preinitialized = 8,
2215    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL`"]
2216    #[deprecated(note = "Replace with: `vk::ImageLayout::AttachmentOptimal`")]
2217    DepthReadOnlyStencilAttachmentOptimal = 1000117000,
2218    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL`"]
2219    #[deprecated(note = "Replace with: `vk::ImageLayout::ReadOnlyOptimal`")]
2220    DepthAttachmentStencilReadOnlyOptimal = 1000117001,
2221    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL`"]
2222    #[deprecated(note = "Replace with: `vk::ImageLayout::AttachmentOptimal`")]
2223    DepthAttachmentOptimal = 1000241000,
2224    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL`"]
2225    #[deprecated(note = "Replace with: `vk::ImageLayout::ReadOnlyOptimal`")]
2226    DepthReadOnlyOptimal = 1000241001,
2227    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL`"]
2228    #[deprecated(note = "Replace with: `vk::ImageLayout::AttachmentOptimal`")]
2229    StencilAttachmentOptimal = 1000241002,
2230    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL`"]
2231    #[deprecated(note = "Replace with: `vk::ImageLayout::ReadOnlyOptimal`")]
2232    StencilReadOnlyOptimal = 1000241003,
2233    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL`"]
2234    ReadOnlyOptimal = 1000314000,
2235    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL`"]
2236    AttachmentOptimal = 1000314001,
2237    #[doc = "**Translated from**: `VK_IMAGE_LAYOUT_PRESENT_SRC_KHR`"]
2238    PresentSrcKHR = 1000001002,
2239}
2240
2241impl std::fmt::Display for ImageLayout {
2242    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2243        write!(f, "{self:?}")
2244    }
2245}
2246
2247#[repr(i32)]
2248#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2249#[doc = "**Chapter**: Resource Creation"]
2250#[doc = "<br>"]
2251#[doc = "**Description**: Image view types"]
2252#[doc = "<br>"]
2253#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2254#[doc = "<br>"]
2255#[doc = "**Reference**: [`VkImageViewType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html)"]
2256pub enum ImageViewType {
2257    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_1D`"]
2258    Type1d = 0,
2259    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_2D`"]
2260    Type2d = 1,
2261    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_3D`"]
2262    Type3d = 2,
2263    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_CUBE`"]
2264    TypeCube = 3,
2265    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_1D_ARRAY`"]
2266    Type1dArray = 4,
2267    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_2D_ARRAY`"]
2268    Type2dArray = 5,
2269    #[doc = "**Translated from**: `VK_IMAGE_VIEW_TYPE_CUBE_ARRAY`"]
2270    TypeCubeArray = 6,
2271}
2272
2273impl std::fmt::Display for ImageViewType {
2274    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2275        write!(f, "{self:?}")
2276    }
2277}
2278
2279#[repr(i32)]
2280#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2281#[doc = "**Chapter**: Resource Creation"]
2282#[doc = "<br>"]
2283#[doc = "**Description**: Specify how a component is swizzled"]
2284#[doc = "<br>"]
2285#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2286#[doc = "<br>"]
2287#[doc = "**Reference**: [`VkComponentSwizzle`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html)"]
2288pub enum ComponentSwizzle {
2289    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_IDENTITY`"]
2290    Identity = 0,
2291    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_ZERO`"]
2292    Zero = 1,
2293    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_ONE`"]
2294    One = 2,
2295    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_R`"]
2296    R = 3,
2297    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_G`"]
2298    G = 4,
2299    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_B`"]
2300    B = 5,
2301    #[doc = "**Translated from**: `VK_COMPONENT_SWIZZLE_A`"]
2302    A = 6,
2303}
2304
2305impl std::fmt::Display for ComponentSwizzle {
2306    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2307        write!(f, "{self:?}")
2308    }
2309}
2310
2311#[repr(i32)]
2312#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2313#[doc = "**Chapter**: Resource Creation"]
2314#[doc = "<br>"]
2315#[doc = "**Description**: Type of acceleration structure"]
2316#[doc = "<br>"]
2317#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
2318#[doc = "<br>"]
2319#[doc = "**Reference**: [`VkAccelerationStructureTypeKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureTypeKHR.html)"]
2320pub enum AccelerationStructureTypeKHR {
2321    #[doc = "**Translated from**: `VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR`"]
2322    TopLevelKHR = 0,
2323    #[doc = "**Translated from**: `VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR`"]
2324    BottomLevelKHR = 1,
2325    #[doc = "**Translated from**: `VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR`"]
2326    GenericKHR = 2,
2327}
2328
2329impl std::fmt::Display for AccelerationStructureTypeKHR {
2330    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2331        write!(f, "{self:?}")
2332    }
2333}
2334
2335#[repr(i32)]
2336#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2337#[doc = "**Chapter**: Resource Creation"]
2338#[doc = "<br>"]
2339#[doc = "**Description**: Enum specifying which type of geometry is provided"]
2340#[doc = "<br>"]
2341#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
2342#[doc = "<br>"]
2343#[doc = "**Reference**: [`VkGeometryTypeKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryTypeKHR.html)"]
2344pub enum GeometryTypeKHR {
2345    #[doc = "**Translated from**: `VK_GEOMETRY_TYPE_TRIANGLES_KHR`"]
2346    TrianglesKHR = 0,
2347    #[doc = "**Translated from**: `VK_GEOMETRY_TYPE_AABBS_KHR`"]
2348    AabbsKHR = 1,
2349    #[doc = "**Translated from**: `VK_GEOMETRY_TYPE_INSTANCES_KHR`"]
2350    InstancesKHR = 2,
2351}
2352
2353impl std::fmt::Display for GeometryTypeKHR {
2354    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2355        write!(f, "{self:?}")
2356    }
2357}
2358
2359#[repr(i32)]
2360#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2361#[doc = "**Chapter**: Resource Creation"]
2362#[doc = "<br>"]
2363#[doc = "**Description**: Acceleration structure build type"]
2364#[doc = "<br>"]
2365#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
2366#[doc = "<br>"]
2367#[doc = "**Reference**: [`VkAccelerationStructureBuildTypeKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureBuildTypeKHR.html)"]
2368pub enum AccelerationStructureBuildTypeKHR {
2369    #[doc = "**Translated from**: `VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR`"]
2370    HostKHR = 0,
2371    #[doc = "**Translated from**: `VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR`"]
2372    DeviceKHR = 1,
2373    #[doc = "**Translated from**: `VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR`"]
2374    HostOrDeviceKHR = 2,
2375}
2376
2377impl std::fmt::Display for AccelerationStructureBuildTypeKHR {
2378    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2379        write!(f, "{self:?}")
2380    }
2381}
2382
2383#[repr(i32)]
2384#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2385#[doc = "**Chapter**: Resource Creation"]
2386#[doc = "<br>"]
2387#[doc = "**Description**: Buffer and image sharing modes"]
2388#[doc = "<br>"]
2389#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2390#[doc = "<br>"]
2391#[doc = "**Reference**: [`VkSharingMode`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSharingMode.html)"]
2392pub enum SharingMode {
2393    #[doc = "**Translated from**: `VK_SHARING_MODE_EXCLUSIVE`"]
2394    Exclusive = 0,
2395    #[doc = "**Translated from**: `VK_SHARING_MODE_CONCURRENT`"]
2396    Concurrent = 1,
2397}
2398
2399impl std::fmt::Display for SharingMode {
2400    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2401        write!(f, "{self:?}")
2402    }
2403}
2404
2405#[repr(i32)]
2406#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2407#[doc = "**Chapter**: Samplers"]
2408#[doc = "<br>"]
2409#[doc = "**Description**: Specify filters used for texture lookups"]
2410#[doc = "<br>"]
2411#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2412#[doc = "<br>"]
2413#[doc = "**Reference**: [`VkFilter`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFilter.html)"]
2414pub enum Filter {
2415    #[doc = "**Translated from**: `VK_FILTER_NEAREST`"]
2416    Nearest = 0,
2417    #[doc = "**Translated from**: `VK_FILTER_LINEAR`"]
2418    Linear = 1,
2419}
2420
2421impl std::fmt::Display for Filter {
2422    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2423        write!(f, "{self:?}")
2424    }
2425}
2426
2427#[repr(i32)]
2428#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2429#[doc = "**Chapter**: Samplers"]
2430#[doc = "<br>"]
2431#[doc = "**Description**: Specify mipmap mode used for texture lookups"]
2432#[doc = "<br>"]
2433#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2434#[doc = "<br>"]
2435#[doc = "**Reference**: [`VkSamplerMipmapMode`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerMipmapMode.html)"]
2436pub enum SamplerMipmapMode {
2437    #[doc = "**Translated from**: `VK_SAMPLER_MIPMAP_MODE_NEAREST`"]
2438    Nearest = 0,
2439    #[doc = "**Translated from**: `VK_SAMPLER_MIPMAP_MODE_LINEAR`"]
2440    Linear = 1,
2441}
2442
2443impl std::fmt::Display for SamplerMipmapMode {
2444    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2445        write!(f, "{self:?}")
2446    }
2447}
2448
2449#[repr(i32)]
2450#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2451#[doc = "**Chapter**: Samplers"]
2452#[doc = "<br>"]
2453#[doc = "**Description**: Specify behavior of sampling with texture coordinates outside an image"]
2454#[doc = "<br>"]
2455#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2456#[doc = "<br>"]
2457#[doc = "**Reference**: [`VkSamplerAddressMode`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html)"]
2458pub enum SamplerAddressMode {
2459    #[doc = "**Translated from**: `VK_SAMPLER_ADDRESS_MODE_REPEAT`"]
2460    Repeat = 0,
2461    #[doc = "**Translated from**: `VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT`"]
2462    MirroredRepeat = 1,
2463    #[doc = "**Translated from**: `VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE`"]
2464    ClampToEdge = 2,
2465    #[doc = "**Translated from**: `VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER`"]
2466    ClampToBorder = 3,
2467    #[doc = "**Translated from**: `VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE`"]
2468    MirrorClampToEdge = 4,
2469}
2470
2471impl std::fmt::Display for SamplerAddressMode {
2472    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2473        write!(f, "{self:?}")
2474    }
2475}
2476
2477#[repr(i32)]
2478#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2479#[doc = "**Chapter**: Samplers"]
2480#[doc = "<br>"]
2481#[doc = "**Description**: Comparison operator for depth"]
2482#[doc = "<br>"]
2483#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2484#[doc = "<br>"]
2485#[doc = "**Reference**: [`VkCompareOp`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html)"]
2486pub enum CompareOp {
2487    #[doc = "**Translated from**: `VK_COMPARE_OP_NEVER`"]
2488    Never = 0,
2489    #[doc = "**Translated from**: `VK_COMPARE_OP_LESS`"]
2490    Less = 1,
2491    #[doc = "**Translated from**: `VK_COMPARE_OP_EQUAL`"]
2492    Equal = 2,
2493    #[doc = "**Translated from**: `VK_COMPARE_OP_LESS_OR_EQUAL`"]
2494    LessOrEqual = 3,
2495    #[doc = "**Translated from**: `VK_COMPARE_OP_GREATER`"]
2496    Greater = 4,
2497    #[doc = "**Translated from**: `VK_COMPARE_OP_NOT_EQUAL`"]
2498    NotEqual = 5,
2499    #[doc = "**Translated from**: `VK_COMPARE_OP_GREATER_OR_EQUAL`"]
2500    GreaterOrEqual = 6,
2501    #[doc = "**Translated from**: `VK_COMPARE_OP_ALWAYS`"]
2502    Always = 7,
2503}
2504
2505impl std::fmt::Display for CompareOp {
2506    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2507        write!(f, "{self:?}")
2508    }
2509}
2510
2511#[repr(i32)]
2512#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2513#[doc = "**Chapter**: Samplers"]
2514#[doc = "<br>"]
2515#[doc = "**Description**: Specify border color used for texture lookups"]
2516#[doc = "<br>"]
2517#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2518#[doc = "<br>"]
2519#[doc = "**Reference**: [`VkBorderColor`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html)"]
2520pub enum BorderColor {
2521    #[doc = "**Translated from**: `VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK`"]
2522    FloatTransparentBlack = 0,
2523    #[doc = "**Translated from**: `VK_BORDER_COLOR_INT_TRANSPARENT_BLACK`"]
2524    IntTransparentBlack = 1,
2525    #[doc = "**Translated from**: `VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK`"]
2526    FloatOpaqueBlack = 2,
2527    #[doc = "**Translated from**: `VK_BORDER_COLOR_INT_OPAQUE_BLACK`"]
2528    IntOpaqueBlack = 3,
2529    #[doc = "**Translated from**: `VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE`"]
2530    FloatOpaqueWhite = 4,
2531    #[doc = "**Translated from**: `VK_BORDER_COLOR_INT_OPAQUE_WHITE`"]
2532    IntOpaqueWhite = 5,
2533}
2534
2535impl std::fmt::Display for BorderColor {
2536    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2537        write!(f, "{self:?}")
2538    }
2539}
2540
2541#[repr(i32)]
2542#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2543#[doc = "**Chapter**: Resource Descriptors"]
2544#[doc = "<br>"]
2545#[doc = "**Description**: Specifies the type of a descriptor in a descriptor set"]
2546#[doc = "<br>"]
2547#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2548#[doc = "<br>"]
2549#[doc = "**Reference**: [`VkDescriptorType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html)"]
2550pub enum DescriptorType {
2551    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_SAMPLER`"]
2552    Sampler = 0,
2553    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER`"]
2554    CombinedImageSampler = 1,
2555    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE`"]
2556    SampledImage = 2,
2557    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_STORAGE_IMAGE`"]
2558    StorageImage = 3,
2559    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER`"]
2560    UniformTexelBuffer = 4,
2561    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER`"]
2562    StorageTexelBuffer = 5,
2563    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER`"]
2564    UniformBuffer = 6,
2565    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_STORAGE_BUFFER`"]
2566    StorageBuffer = 7,
2567    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC`"]
2568    UniformBufferDynamic = 8,
2569    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC`"]
2570    StorageBufferDynamic = 9,
2571    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT`"]
2572    InputAttachment = 10,
2573    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK`"]
2574    InlineUniformBlock = 1000138000,
2575    #[doc = "**Translated from**: `VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR`"]
2576    AccelerationStructureKHR = 1000150000,
2577}
2578
2579impl std::fmt::Display for DescriptorType {
2580    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2581        write!(f, "{self:?}")
2582    }
2583}
2584
2585#[repr(i32)]
2586#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2587#[doc = "**Chapter**: Queries"]
2588#[doc = "<br>"]
2589#[doc = "**Description**: Specify the type of queries managed by a query pool"]
2590#[doc = "<br>"]
2591#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2592#[doc = "<br>"]
2593#[doc = "**Reference**: [`VkQueryType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryType.html)"]
2594pub enum QueryType {
2595    #[doc = "**Translated from**: `VK_QUERY_TYPE_OCCLUSION`"]
2596    Occlusion = 0,
2597    #[doc = "**Translated from**: `VK_QUERY_TYPE_PIPELINE_STATISTICS`"]
2598    PipelineStatistics = 1,
2599    #[doc = "**Translated from**: `VK_QUERY_TYPE_TIMESTAMP`"]
2600    Timestamp = 2,
2601    #[doc = "**Translated from**: `VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR`"]
2602    AccelerationStructureCompactedSizeKHR = 1000150000,
2603    #[doc = "**Translated from**: `VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR`"]
2604    AccelerationStructureSerializationSizeKHR = 1000150001,
2605    #[doc = "**Translated from**: `VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT`"]
2606    MeshPrimitivesGeneratedEXT = 1000328000,
2607    #[doc = "**Translated from**: `VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR`"]
2608    AccelerationStructureSerializationBottomLevelPointersKHR = 1000386000,
2609    #[doc = "**Translated from**: `VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR`"]
2610    AccelerationStructureSizeKHR = 1000386001,
2611}
2612
2613impl std::fmt::Display for QueryType {
2614    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2615        write!(f, "{self:?}")
2616    }
2617}
2618
2619#[repr(i32)]
2620#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2621#[doc = "**Chapter**: Drawing Commands"]
2622#[doc = "<br>"]
2623#[doc = "**Description**: Type of index buffer indices"]
2624#[doc = "<br>"]
2625#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2626#[doc = "<br>"]
2627#[doc = "**Reference**: [`VkIndexType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndexType.html)"]
2628pub enum IndexType {
2629    #[doc = "**Translated from**: `VK_INDEX_TYPE_UINT16`"]
2630    Uint16 = 0,
2631    #[doc = "**Translated from**: `VK_INDEX_TYPE_UINT32`"]
2632    Uint32 = 1,
2633    #[doc = "**Translated from**: `VK_INDEX_TYPE_NONE_KHR`"]
2634    NoneKHR = 1000165000,
2635}
2636
2637impl std::fmt::Display for IndexType {
2638    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2639        write!(f, "{self:?}")
2640    }
2641}
2642
2643#[repr(i32)]
2644#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2645#[doc = "**Chapter**: Rasterization"]
2646#[doc = "<br>"]
2647#[doc = "**Description**: Interpret polygon front-facing orientation"]
2648#[doc = "<br>"]
2649#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2650#[doc = "<br>"]
2651#[doc = "**Reference**: [`VkFrontFace`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFrontFace.html)"]
2652pub enum FrontFace {
2653    #[doc = "**Translated from**: `VK_FRONT_FACE_COUNTER_CLOCKWISE`"]
2654    CounterClockwise = 0,
2655    #[doc = "**Translated from**: `VK_FRONT_FACE_CLOCKWISE`"]
2656    Clockwise = 1,
2657}
2658
2659impl std::fmt::Display for FrontFace {
2660    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2661        write!(f, "{self:?}")
2662    }
2663}
2664
2665#[repr(i32)]
2666#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2667#[doc = "**Chapter**: The Framebuffer"]
2668#[doc = "<br>"]
2669#[doc = "**Description**: Framebuffer blending factors"]
2670#[doc = "<br>"]
2671#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2672#[doc = "<br>"]
2673#[doc = "**Reference**: [`VkBlendFactor`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html)"]
2674pub enum BlendFactor {
2675    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ZERO`"]
2676    Zero = 0,
2677    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE`"]
2678    One = 1,
2679    #[doc = "**Translated from**: `VK_BLEND_FACTOR_SRC_COLOR`"]
2680    SrcColor = 2,
2681    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR`"]
2682    OneMinusSrcColor = 3,
2683    #[doc = "**Translated from**: `VK_BLEND_FACTOR_DST_COLOR`"]
2684    DstColor = 4,
2685    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR`"]
2686    OneMinusDstColor = 5,
2687    #[doc = "**Translated from**: `VK_BLEND_FACTOR_SRC_ALPHA`"]
2688    SrcAlpha = 6,
2689    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA`"]
2690    OneMinusSrcAlpha = 7,
2691    #[doc = "**Translated from**: `VK_BLEND_FACTOR_DST_ALPHA`"]
2692    DstAlpha = 8,
2693    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA`"]
2694    OneMinusDstAlpha = 9,
2695    #[doc = "**Translated from**: `VK_BLEND_FACTOR_CONSTANT_COLOR`"]
2696    ConstantColor = 10,
2697    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR`"]
2698    OneMinusConstantColor = 11,
2699    #[doc = "**Translated from**: `VK_BLEND_FACTOR_CONSTANT_ALPHA`"]
2700    ConstantAlpha = 12,
2701    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA`"]
2702    OneMinusConstantAlpha = 13,
2703    #[doc = "**Translated from**: `VK_BLEND_FACTOR_SRC_ALPHA_SATURATE`"]
2704    SrcAlphaSaturate = 14,
2705    #[doc = "**Translated from**: `VK_BLEND_FACTOR_SRC1_COLOR`"]
2706    Src1Color = 15,
2707    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR`"]
2708    OneMinusSrc1Color = 16,
2709    #[doc = "**Translated from**: `VK_BLEND_FACTOR_SRC1_ALPHA`"]
2710    Src1Alpha = 17,
2711    #[doc = "**Translated from**: `VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA`"]
2712    OneMinusSrc1Alpha = 18,
2713}
2714
2715impl std::fmt::Display for BlendFactor {
2716    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2717        write!(f, "{self:?}")
2718    }
2719}
2720
2721#[repr(i32)]
2722#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2723#[doc = "**Chapter**: The Framebuffer"]
2724#[doc = "<br>"]
2725#[doc = "**Description**: Framebuffer blending operations"]
2726#[doc = "<br>"]
2727#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2728#[doc = "<br>"]
2729#[doc = "**Reference**: [`VkBlendOp`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html)"]
2730pub enum BlendOp {
2731    #[doc = "**Translated from**: `VK_BLEND_OP_ADD`"]
2732    Add = 0,
2733    #[doc = "**Translated from**: `VK_BLEND_OP_SUBTRACT`"]
2734    Subtract = 1,
2735    #[doc = "**Translated from**: `VK_BLEND_OP_REVERSE_SUBTRACT`"]
2736    ReverseSubtract = 2,
2737    #[doc = "**Translated from**: `VK_BLEND_OP_MIN`"]
2738    Min = 3,
2739    #[doc = "**Translated from**: `VK_BLEND_OP_MAX`"]
2740    Max = 4,
2741}
2742
2743impl std::fmt::Display for BlendOp {
2744    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2745        write!(f, "{self:?}")
2746    }
2747}
2748
2749#[repr(i32)]
2750#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2751#[doc = "**Chapter**: Window System Integration (WSI)"]
2752#[doc = "<br>"]
2753#[doc = "**Description**: Supported color space of the presentation engine"]
2754#[doc = "<br>"]
2755#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
2756#[doc = "<br>"]
2757#[doc = "**Reference**: [`VkColorSpaceKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkColorSpaceKHR.html)"]
2758pub enum ColorSpaceKHR {
2759    #[doc = "**Translated from**: `VK_COLOR_SPACE_SRGB_NONLINEAR_KHR`"]
2760    ColorSpaceSrgbNonlinearKHR = 0,
2761}
2762
2763impl std::fmt::Display for ColorSpaceKHR {
2764    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2765        write!(f, "{self:?}")
2766    }
2767}
2768
2769#[repr(i32)]
2770#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2771#[doc = "**Chapter**: Window System Integration (WSI)"]
2772#[doc = "<br>"]
2773#[doc = "**Description**: Presentation mode supported for a surface"]
2774#[doc = "<br>"]
2775#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
2776#[doc = "<br>"]
2777#[doc = "**Reference**: [`VkPresentModeKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPresentModeKHR.html)"]
2778pub enum PresentModeKHR {
2779    #[doc = "**Translated from**: `VK_PRESENT_MODE_IMMEDIATE_KHR`"]
2780    ImmediateKHR = 0,
2781    #[doc = "**Translated from**: `VK_PRESENT_MODE_MAILBOX_KHR`"]
2782    MailboxKHR = 1,
2783    #[doc = "**Translated from**: `VK_PRESENT_MODE_FIFO_KHR`"]
2784    FifoKHR = 2,
2785    #[doc = "**Translated from**: `VK_PRESENT_MODE_FIFO_RELAXED_KHR`"]
2786    FifoRelaxedKHR = 3,
2787}
2788
2789impl std::fmt::Display for PresentModeKHR {
2790    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2791        write!(f, "{self:?}")
2792    }
2793}
2794
2795#[repr(i32)]
2796#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2797#[doc = "**Chapter**: Acceleration Structures"]
2798#[doc = "<br>"]
2799#[doc = "**Description**: Enum specifying the type of build operation to perform"]
2800#[doc = "<br>"]
2801#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
2802#[doc = "<br>"]
2803#[doc = "**Reference**: [`VkBuildAccelerationStructureModeKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureModeKHR.html)"]
2804pub enum BuildAccelerationStructureModeKHR {
2805    #[doc = "**Translated from**: `VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR`"]
2806    BuildKHR = 0,
2807    #[doc = "**Translated from**: `VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR`"]
2808    UpdateKHR = 1,
2809}
2810
2811impl std::fmt::Display for BuildAccelerationStructureModeKHR {
2812    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2813        write!(f, "{self:?}")
2814    }
2815}
2816
2817#[repr(i32)]
2818#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2819#[doc = "**Chapter**: Formats"]
2820#[doc = "<br>"]
2821#[doc = "**Description**: Available image formats"]
2822#[doc = "<br>"]
2823#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
2824#[doc = "<br>"]
2825#[doc = "**Reference**: [`VkFormat`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFormat.html)"]
2826pub enum Format {
2827    #[doc = "**Translated from**: `VK_FORMAT_UNDEFINED`"]
2828    Undefined = 0,
2829    #[doc = "**Translated from**: `VK_FORMAT_R4G4_UNORM_PACK8`"]
2830    R4g4UnormPack8 = 1,
2831    #[doc = "**Translated from**: `VK_FORMAT_R4G4B4A4_UNORM_PACK16`"]
2832    R4g4b4a4UnormPack16 = 2,
2833    #[doc = "**Translated from**: `VK_FORMAT_B4G4R4A4_UNORM_PACK16`"]
2834    B4g4r4a4UnormPack16 = 3,
2835    #[doc = "**Translated from**: `VK_FORMAT_R5G6B5_UNORM_PACK16`"]
2836    R5g6b5UnormPack16 = 4,
2837    #[doc = "**Translated from**: `VK_FORMAT_B5G6R5_UNORM_PACK16`"]
2838    B5g6r5UnormPack16 = 5,
2839    #[doc = "**Translated from**: `VK_FORMAT_R5G5B5A1_UNORM_PACK16`"]
2840    R5g5b5a1UnormPack16 = 6,
2841    #[doc = "**Translated from**: `VK_FORMAT_B5G5R5A1_UNORM_PACK16`"]
2842    B5g5r5a1UnormPack16 = 7,
2843    #[doc = "**Translated from**: `VK_FORMAT_A1R5G5B5_UNORM_PACK16`"]
2844    A1r5g5b5UnormPack16 = 8,
2845    #[doc = "**Translated from**: `VK_FORMAT_R8_UNORM`"]
2846    R8Unorm = 9,
2847    #[doc = "**Translated from**: `VK_FORMAT_R8_SNORM`"]
2848    R8Snorm = 10,
2849    #[doc = "**Translated from**: `VK_FORMAT_R8_USCALED`"]
2850    R8Uscaled = 11,
2851    #[doc = "**Translated from**: `VK_FORMAT_R8_SSCALED`"]
2852    R8Sscaled = 12,
2853    #[doc = "**Translated from**: `VK_FORMAT_R8_UINT`"]
2854    R8Uint = 13,
2855    #[doc = "**Translated from**: `VK_FORMAT_R8_SINT`"]
2856    R8Sint = 14,
2857    #[doc = "**Translated from**: `VK_FORMAT_R8_SRGB`"]
2858    R8Srgb = 15,
2859    #[doc = "**Translated from**: `VK_FORMAT_R8G8_UNORM`"]
2860    R8g8Unorm = 16,
2861    #[doc = "**Translated from**: `VK_FORMAT_R8G8_SNORM`"]
2862    R8g8Snorm = 17,
2863    #[doc = "**Translated from**: `VK_FORMAT_R8G8_USCALED`"]
2864    R8g8Uscaled = 18,
2865    #[doc = "**Translated from**: `VK_FORMAT_R8G8_SSCALED`"]
2866    R8g8Sscaled = 19,
2867    #[doc = "**Translated from**: `VK_FORMAT_R8G8_UINT`"]
2868    R8g8Uint = 20,
2869    #[doc = "**Translated from**: `VK_FORMAT_R8G8_SINT`"]
2870    R8g8Sint = 21,
2871    #[doc = "**Translated from**: `VK_FORMAT_R8G8_SRGB`"]
2872    R8g8Srgb = 22,
2873    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_UNORM`"]
2874    R8g8b8Unorm = 23,
2875    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_SNORM`"]
2876    R8g8b8Snorm = 24,
2877    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_USCALED`"]
2878    R8g8b8Uscaled = 25,
2879    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_SSCALED`"]
2880    R8g8b8Sscaled = 26,
2881    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_UINT`"]
2882    R8g8b8Uint = 27,
2883    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_SINT`"]
2884    R8g8b8Sint = 28,
2885    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8_SRGB`"]
2886    R8g8b8Srgb = 29,
2887    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_UNORM`"]
2888    B8g8r8Unorm = 30,
2889    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_SNORM`"]
2890    B8g8r8Snorm = 31,
2891    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_USCALED`"]
2892    B8g8r8Uscaled = 32,
2893    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_SSCALED`"]
2894    B8g8r8Sscaled = 33,
2895    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_UINT`"]
2896    B8g8r8Uint = 34,
2897    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_SINT`"]
2898    B8g8r8Sint = 35,
2899    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8_SRGB`"]
2900    B8g8r8Srgb = 36,
2901    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_UNORM`"]
2902    R8g8b8a8Unorm = 37,
2903    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_SNORM`"]
2904    R8g8b8a8Snorm = 38,
2905    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_USCALED`"]
2906    R8g8b8a8Uscaled = 39,
2907    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_SSCALED`"]
2908    R8g8b8a8Sscaled = 40,
2909    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_UINT`"]
2910    R8g8b8a8Uint = 41,
2911    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_SINT`"]
2912    R8g8b8a8Sint = 42,
2913    #[doc = "**Translated from**: `VK_FORMAT_R8G8B8A8_SRGB`"]
2914    R8g8b8a8Srgb = 43,
2915    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_UNORM`"]
2916    B8g8r8a8Unorm = 44,
2917    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_SNORM`"]
2918    B8g8r8a8Snorm = 45,
2919    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_USCALED`"]
2920    B8g8r8a8Uscaled = 46,
2921    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_SSCALED`"]
2922    B8g8r8a8Sscaled = 47,
2923    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_UINT`"]
2924    B8g8r8a8Uint = 48,
2925    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_SINT`"]
2926    B8g8r8a8Sint = 49,
2927    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8A8_SRGB`"]
2928    B8g8r8a8Srgb = 50,
2929    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_UNORM_PACK32`"]
2930    A8b8g8r8UnormPack32 = 51,
2931    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_SNORM_PACK32`"]
2932    A8b8g8r8SnormPack32 = 52,
2933    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_USCALED_PACK32`"]
2934    A8b8g8r8UscaledPack32 = 53,
2935    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_SSCALED_PACK32`"]
2936    A8b8g8r8SscaledPack32 = 54,
2937    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_UINT_PACK32`"]
2938    A8b8g8r8UintPack32 = 55,
2939    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_SINT_PACK32`"]
2940    A8b8g8r8SintPack32 = 56,
2941    #[doc = "**Translated from**: `VK_FORMAT_A8B8G8R8_SRGB_PACK32`"]
2942    A8b8g8r8SrgbPack32 = 57,
2943    #[doc = "**Translated from**: `VK_FORMAT_A2R10G10B10_UNORM_PACK32`"]
2944    A2r10g10b10UnormPack32 = 58,
2945    #[doc = "**Translated from**: `VK_FORMAT_A2R10G10B10_SNORM_PACK32`"]
2946    A2r10g10b10SnormPack32 = 59,
2947    #[doc = "**Translated from**: `VK_FORMAT_A2R10G10B10_USCALED_PACK32`"]
2948    A2r10g10b10UscaledPack32 = 60,
2949    #[doc = "**Translated from**: `VK_FORMAT_A2R10G10B10_SSCALED_PACK32`"]
2950    A2r10g10b10SscaledPack32 = 61,
2951    #[doc = "**Translated from**: `VK_FORMAT_A2R10G10B10_UINT_PACK32`"]
2952    A2r10g10b10UintPack32 = 62,
2953    #[doc = "**Translated from**: `VK_FORMAT_A2R10G10B10_SINT_PACK32`"]
2954    A2r10g10b10SintPack32 = 63,
2955    #[doc = "**Translated from**: `VK_FORMAT_A2B10G10R10_UNORM_PACK32`"]
2956    A2b10g10r10UnormPack32 = 64,
2957    #[doc = "**Translated from**: `VK_FORMAT_A2B10G10R10_SNORM_PACK32`"]
2958    A2b10g10r10SnormPack32 = 65,
2959    #[doc = "**Translated from**: `VK_FORMAT_A2B10G10R10_USCALED_PACK32`"]
2960    A2b10g10r10UscaledPack32 = 66,
2961    #[doc = "**Translated from**: `VK_FORMAT_A2B10G10R10_SSCALED_PACK32`"]
2962    A2b10g10r10SscaledPack32 = 67,
2963    #[doc = "**Translated from**: `VK_FORMAT_A2B10G10R10_UINT_PACK32`"]
2964    A2b10g10r10UintPack32 = 68,
2965    #[doc = "**Translated from**: `VK_FORMAT_A2B10G10R10_SINT_PACK32`"]
2966    A2b10g10r10SintPack32 = 69,
2967    #[doc = "**Translated from**: `VK_FORMAT_R16_UNORM`"]
2968    R16Unorm = 70,
2969    #[doc = "**Translated from**: `VK_FORMAT_R16_SNORM`"]
2970    R16Snorm = 71,
2971    #[doc = "**Translated from**: `VK_FORMAT_R16_USCALED`"]
2972    R16Uscaled = 72,
2973    #[doc = "**Translated from**: `VK_FORMAT_R16_SSCALED`"]
2974    R16Sscaled = 73,
2975    #[doc = "**Translated from**: `VK_FORMAT_R16_UINT`"]
2976    R16Uint = 74,
2977    #[doc = "**Translated from**: `VK_FORMAT_R16_SINT`"]
2978    R16Sint = 75,
2979    #[doc = "**Translated from**: `VK_FORMAT_R16_SFLOAT`"]
2980    R16Sfloat = 76,
2981    #[doc = "**Translated from**: `VK_FORMAT_R16G16_UNORM`"]
2982    R16g16Unorm = 77,
2983    #[doc = "**Translated from**: `VK_FORMAT_R16G16_SNORM`"]
2984    R16g16Snorm = 78,
2985    #[doc = "**Translated from**: `VK_FORMAT_R16G16_USCALED`"]
2986    R16g16Uscaled = 79,
2987    #[doc = "**Translated from**: `VK_FORMAT_R16G16_SSCALED`"]
2988    R16g16Sscaled = 80,
2989    #[doc = "**Translated from**: `VK_FORMAT_R16G16_UINT`"]
2990    R16g16Uint = 81,
2991    #[doc = "**Translated from**: `VK_FORMAT_R16G16_SINT`"]
2992    R16g16Sint = 82,
2993    #[doc = "**Translated from**: `VK_FORMAT_R16G16_SFLOAT`"]
2994    R16g16Sfloat = 83,
2995    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_UNORM`"]
2996    R16g16b16Unorm = 84,
2997    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_SNORM`"]
2998    R16g16b16Snorm = 85,
2999    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_USCALED`"]
3000    R16g16b16Uscaled = 86,
3001    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_SSCALED`"]
3002    R16g16b16Sscaled = 87,
3003    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_UINT`"]
3004    R16g16b16Uint = 88,
3005    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_SINT`"]
3006    R16g16b16Sint = 89,
3007    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16_SFLOAT`"]
3008    R16g16b16Sfloat = 90,
3009    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_UNORM`"]
3010    R16g16b16a16Unorm = 91,
3011    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_SNORM`"]
3012    R16g16b16a16Snorm = 92,
3013    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_USCALED`"]
3014    R16g16b16a16Uscaled = 93,
3015    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_SSCALED`"]
3016    R16g16b16a16Sscaled = 94,
3017    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_UINT`"]
3018    R16g16b16a16Uint = 95,
3019    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_SINT`"]
3020    R16g16b16a16Sint = 96,
3021    #[doc = "**Translated from**: `VK_FORMAT_R16G16B16A16_SFLOAT`"]
3022    R16g16b16a16Sfloat = 97,
3023    #[doc = "**Translated from**: `VK_FORMAT_R32_UINT`"]
3024    R32Uint = 98,
3025    #[doc = "**Translated from**: `VK_FORMAT_R32_SINT`"]
3026    R32Sint = 99,
3027    #[doc = "**Translated from**: `VK_FORMAT_R32_SFLOAT`"]
3028    R32Sfloat = 100,
3029    #[doc = "**Translated from**: `VK_FORMAT_R32G32_UINT`"]
3030    R32g32Uint = 101,
3031    #[doc = "**Translated from**: `VK_FORMAT_R32G32_SINT`"]
3032    R32g32Sint = 102,
3033    #[doc = "**Translated from**: `VK_FORMAT_R32G32_SFLOAT`"]
3034    R32g32Sfloat = 103,
3035    #[doc = "**Translated from**: `VK_FORMAT_R32G32B32_UINT`"]
3036    R32g32b32Uint = 104,
3037    #[doc = "**Translated from**: `VK_FORMAT_R32G32B32_SINT`"]
3038    R32g32b32Sint = 105,
3039    #[doc = "**Translated from**: `VK_FORMAT_R32G32B32_SFLOAT`"]
3040    R32g32b32Sfloat = 106,
3041    #[doc = "**Translated from**: `VK_FORMAT_R32G32B32A32_UINT`"]
3042    R32g32b32a32Uint = 107,
3043    #[doc = "**Translated from**: `VK_FORMAT_R32G32B32A32_SINT`"]
3044    R32g32b32a32Sint = 108,
3045    #[doc = "**Translated from**: `VK_FORMAT_R32G32B32A32_SFLOAT`"]
3046    R32g32b32a32Sfloat = 109,
3047    #[doc = "**Translated from**: `VK_FORMAT_R64_UINT`"]
3048    R64Uint = 110,
3049    #[doc = "**Translated from**: `VK_FORMAT_R64_SINT`"]
3050    R64Sint = 111,
3051    #[doc = "**Translated from**: `VK_FORMAT_R64_SFLOAT`"]
3052    R64Sfloat = 112,
3053    #[doc = "**Translated from**: `VK_FORMAT_R64G64_UINT`"]
3054    R64g64Uint = 113,
3055    #[doc = "**Translated from**: `VK_FORMAT_R64G64_SINT`"]
3056    R64g64Sint = 114,
3057    #[doc = "**Translated from**: `VK_FORMAT_R64G64_SFLOAT`"]
3058    R64g64Sfloat = 115,
3059    #[doc = "**Translated from**: `VK_FORMAT_R64G64B64_UINT`"]
3060    R64g64b64Uint = 116,
3061    #[doc = "**Translated from**: `VK_FORMAT_R64G64B64_SINT`"]
3062    R64g64b64Sint = 117,
3063    #[doc = "**Translated from**: `VK_FORMAT_R64G64B64_SFLOAT`"]
3064    R64g64b64Sfloat = 118,
3065    #[doc = "**Translated from**: `VK_FORMAT_R64G64B64A64_UINT`"]
3066    R64g64b64a64Uint = 119,
3067    #[doc = "**Translated from**: `VK_FORMAT_R64G64B64A64_SINT`"]
3068    R64g64b64a64Sint = 120,
3069    #[doc = "**Translated from**: `VK_FORMAT_R64G64B64A64_SFLOAT`"]
3070    R64g64b64a64Sfloat = 121,
3071    #[doc = "**Translated from**: `VK_FORMAT_B10G11R11_UFLOAT_PACK32`"]
3072    B10g11r11UfloatPack32 = 122,
3073    #[doc = "**Translated from**: `VK_FORMAT_E5B9G9R9_UFLOAT_PACK32`"]
3074    E5b9g9r9UfloatPack32 = 123,
3075    #[doc = "**Translated from**: `VK_FORMAT_D16_UNORM`"]
3076    D16Unorm = 124,
3077    #[doc = "**Translated from**: `VK_FORMAT_X8_D24_UNORM_PACK32`"]
3078    X8D24UnormPack32 = 125,
3079    #[doc = "**Translated from**: `VK_FORMAT_D32_SFLOAT`"]
3080    D32Sfloat = 126,
3081    #[doc = "**Translated from**: `VK_FORMAT_S8_UINT`"]
3082    S8Uint = 127,
3083    #[doc = "**Translated from**: `VK_FORMAT_D16_UNORM_S8_UINT`"]
3084    D16UnormS8Uint = 128,
3085    #[doc = "**Translated from**: `VK_FORMAT_D24_UNORM_S8_UINT`"]
3086    D24UnormS8Uint = 129,
3087    #[doc = "**Translated from**: `VK_FORMAT_D32_SFLOAT_S8_UINT`"]
3088    D32SfloatS8Uint = 130,
3089    #[doc = "**Translated from**: `VK_FORMAT_BC1_RGB_UNORM_BLOCK`"]
3090    Bc1RgbUnormBlock = 131,
3091    #[doc = "**Translated from**: `VK_FORMAT_BC1_RGB_SRGB_BLOCK`"]
3092    Bc1RgbSrgbBlock = 132,
3093    #[doc = "**Translated from**: `VK_FORMAT_BC1_RGBA_UNORM_BLOCK`"]
3094    Bc1RgbaUnormBlock = 133,
3095    #[doc = "**Translated from**: `VK_FORMAT_BC1_RGBA_SRGB_BLOCK`"]
3096    Bc1RgbaSrgbBlock = 134,
3097    #[doc = "**Translated from**: `VK_FORMAT_BC2_UNORM_BLOCK`"]
3098    Bc2UnormBlock = 135,
3099    #[doc = "**Translated from**: `VK_FORMAT_BC2_SRGB_BLOCK`"]
3100    Bc2SrgbBlock = 136,
3101    #[doc = "**Translated from**: `VK_FORMAT_BC3_UNORM_BLOCK`"]
3102    Bc3UnormBlock = 137,
3103    #[doc = "**Translated from**: `VK_FORMAT_BC3_SRGB_BLOCK`"]
3104    Bc3SrgbBlock = 138,
3105    #[doc = "**Translated from**: `VK_FORMAT_BC4_UNORM_BLOCK`"]
3106    Bc4UnormBlock = 139,
3107    #[doc = "**Translated from**: `VK_FORMAT_BC4_SNORM_BLOCK`"]
3108    Bc4SnormBlock = 140,
3109    #[doc = "**Translated from**: `VK_FORMAT_BC5_UNORM_BLOCK`"]
3110    Bc5UnormBlock = 141,
3111    #[doc = "**Translated from**: `VK_FORMAT_BC5_SNORM_BLOCK`"]
3112    Bc5SnormBlock = 142,
3113    #[doc = "**Translated from**: `VK_FORMAT_BC6H_UFLOAT_BLOCK`"]
3114    Bc6hUfloatBlock = 143,
3115    #[doc = "**Translated from**: `VK_FORMAT_BC6H_SFLOAT_BLOCK`"]
3116    Bc6hSfloatBlock = 144,
3117    #[doc = "**Translated from**: `VK_FORMAT_BC7_UNORM_BLOCK`"]
3118    Bc7UnormBlock = 145,
3119    #[doc = "**Translated from**: `VK_FORMAT_BC7_SRGB_BLOCK`"]
3120    Bc7SrgbBlock = 146,
3121    #[doc = "**Translated from**: `VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK`"]
3122    Etc2R8g8b8UnormBlock = 147,
3123    #[doc = "**Translated from**: `VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK`"]
3124    Etc2R8g8b8SrgbBlock = 148,
3125    #[doc = "**Translated from**: `VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK`"]
3126    Etc2R8g8b8a1UnormBlock = 149,
3127    #[doc = "**Translated from**: `VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK`"]
3128    Etc2R8g8b8a1SrgbBlock = 150,
3129    #[doc = "**Translated from**: `VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK`"]
3130    Etc2R8g8b8a8UnormBlock = 151,
3131    #[doc = "**Translated from**: `VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK`"]
3132    Etc2R8g8b8a8SrgbBlock = 152,
3133    #[doc = "**Translated from**: `VK_FORMAT_EAC_R11_UNORM_BLOCK`"]
3134    EacR11UnormBlock = 153,
3135    #[doc = "**Translated from**: `VK_FORMAT_EAC_R11_SNORM_BLOCK`"]
3136    EacR11SnormBlock = 154,
3137    #[doc = "**Translated from**: `VK_FORMAT_EAC_R11G11_UNORM_BLOCK`"]
3138    EacR11g11UnormBlock = 155,
3139    #[doc = "**Translated from**: `VK_FORMAT_EAC_R11G11_SNORM_BLOCK`"]
3140    EacR11g11SnormBlock = 156,
3141    #[doc = "**Translated from**: `VK_FORMAT_ASTC_4x4_UNORM_BLOCK`"]
3142    Astc4x4UnormBlock = 157,
3143    #[doc = "**Translated from**: `VK_FORMAT_ASTC_4x4_SRGB_BLOCK`"]
3144    Astc4x4SrgbBlock = 158,
3145    #[doc = "**Translated from**: `VK_FORMAT_ASTC_5x4_UNORM_BLOCK`"]
3146    Astc5x4UnormBlock = 159,
3147    #[doc = "**Translated from**: `VK_FORMAT_ASTC_5x4_SRGB_BLOCK`"]
3148    Astc5x4SrgbBlock = 160,
3149    #[doc = "**Translated from**: `VK_FORMAT_ASTC_5x5_UNORM_BLOCK`"]
3150    Astc5x5UnormBlock = 161,
3151    #[doc = "**Translated from**: `VK_FORMAT_ASTC_5x5_SRGB_BLOCK`"]
3152    Astc5x5SrgbBlock = 162,
3153    #[doc = "**Translated from**: `VK_FORMAT_ASTC_6x5_UNORM_BLOCK`"]
3154    Astc6x5UnormBlock = 163,
3155    #[doc = "**Translated from**: `VK_FORMAT_ASTC_6x5_SRGB_BLOCK`"]
3156    Astc6x5SrgbBlock = 164,
3157    #[doc = "**Translated from**: `VK_FORMAT_ASTC_6x6_UNORM_BLOCK`"]
3158    Astc6x6UnormBlock = 165,
3159    #[doc = "**Translated from**: `VK_FORMAT_ASTC_6x6_SRGB_BLOCK`"]
3160    Astc6x6SrgbBlock = 166,
3161    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x5_UNORM_BLOCK`"]
3162    Astc8x5UnormBlock = 167,
3163    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x5_SRGB_BLOCK`"]
3164    Astc8x5SrgbBlock = 168,
3165    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x6_UNORM_BLOCK`"]
3166    Astc8x6UnormBlock = 169,
3167    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x6_SRGB_BLOCK`"]
3168    Astc8x6SrgbBlock = 170,
3169    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x8_UNORM_BLOCK`"]
3170    Astc8x8UnormBlock = 171,
3171    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x8_SRGB_BLOCK`"]
3172    Astc8x8SrgbBlock = 172,
3173    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x5_UNORM_BLOCK`"]
3174    Astc10x5UnormBlock = 173,
3175    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x5_SRGB_BLOCK`"]
3176    Astc10x5SrgbBlock = 174,
3177    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x6_UNORM_BLOCK`"]
3178    Astc10x6UnormBlock = 175,
3179    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x6_SRGB_BLOCK`"]
3180    Astc10x6SrgbBlock = 176,
3181    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x8_UNORM_BLOCK`"]
3182    Astc10x8UnormBlock = 177,
3183    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x8_SRGB_BLOCK`"]
3184    Astc10x8SrgbBlock = 178,
3185    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x10_UNORM_BLOCK`"]
3186    Astc10x10UnormBlock = 179,
3187    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x10_SRGB_BLOCK`"]
3188    Astc10x10SrgbBlock = 180,
3189    #[doc = "**Translated from**: `VK_FORMAT_ASTC_12x10_UNORM_BLOCK`"]
3190    Astc12x10UnormBlock = 181,
3191    #[doc = "**Translated from**: `VK_FORMAT_ASTC_12x10_SRGB_BLOCK`"]
3192    Astc12x10SrgbBlock = 182,
3193    #[doc = "**Translated from**: `VK_FORMAT_ASTC_12x12_UNORM_BLOCK`"]
3194    Astc12x12UnormBlock = 183,
3195    #[doc = "**Translated from**: `VK_FORMAT_ASTC_12x12_SRGB_BLOCK`"]
3196    Astc12x12SrgbBlock = 184,
3197    #[doc = "**Translated from**: `VK_FORMAT_G8B8G8R8_422_UNORM`"]
3198    G8b8g8r8422Unorm = 1000156000,
3199    #[doc = "**Translated from**: `VK_FORMAT_B8G8R8G8_422_UNORM`"]
3200    B8g8r8g8422Unorm = 1000156001,
3201    #[doc = "**Translated from**: `VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM`"]
3202    G8B8R83plane420Unorm = 1000156002,
3203    #[doc = "**Translated from**: `VK_FORMAT_G8_B8R8_2PLANE_420_UNORM`"]
3204    G8B8r82plane420Unorm = 1000156003,
3205    #[doc = "**Translated from**: `VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM`"]
3206    G8B8R83plane422Unorm = 1000156004,
3207    #[doc = "**Translated from**: `VK_FORMAT_G8_B8R8_2PLANE_422_UNORM`"]
3208    G8B8r82plane422Unorm = 1000156005,
3209    #[doc = "**Translated from**: `VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM`"]
3210    G8B8R83plane444Unorm = 1000156006,
3211    #[doc = "**Translated from**: `VK_FORMAT_R10X6_UNORM_PACK16`"]
3212    R10x6UnormPack16 = 1000156007,
3213    #[doc = "**Translated from**: `VK_FORMAT_R10X6G10X6_UNORM_2PACK16`"]
3214    R10x6g10x6Unorm2pack16 = 1000156008,
3215    #[doc = "**Translated from**: `VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16`"]
3216    R10x6g10x6b10x6a10x6Unorm4pack16 = 1000156009,
3217    #[doc = "**Translated from**: `VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16`"]
3218    G10x6b10x6g10x6r10x6422Unorm4pack16 = 1000156010,
3219    #[doc = "**Translated from**: `VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16`"]
3220    B10x6g10x6r10x6g10x6422Unorm4pack16 = 1000156011,
3221    #[doc = "**Translated from**: `VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16`"]
3222    G10x6B10x6R10x63plane420Unorm3pack16 = 1000156012,
3223    #[doc = "**Translated from**: `VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16`"]
3224    G10x6B10x6r10x62plane420Unorm3pack16 = 1000156013,
3225    #[doc = "**Translated from**: `VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16`"]
3226    G10x6B10x6R10x63plane422Unorm3pack16 = 1000156014,
3227    #[doc = "**Translated from**: `VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16`"]
3228    G10x6B10x6r10x62plane422Unorm3pack16 = 1000156015,
3229    #[doc = "**Translated from**: `VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16`"]
3230    G10x6B10x6R10x63plane444Unorm3pack16 = 1000156016,
3231    #[doc = "**Translated from**: `VK_FORMAT_R12X4_UNORM_PACK16`"]
3232    R12x4UnormPack16 = 1000156017,
3233    #[doc = "**Translated from**: `VK_FORMAT_R12X4G12X4_UNORM_2PACK16`"]
3234    R12x4g12x4Unorm2pack16 = 1000156018,
3235    #[doc = "**Translated from**: `VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16`"]
3236    R12x4g12x4b12x4a12x4Unorm4pack16 = 1000156019,
3237    #[doc = "**Translated from**: `VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16`"]
3238    G12x4b12x4g12x4r12x4422Unorm4pack16 = 1000156020,
3239    #[doc = "**Translated from**: `VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16`"]
3240    B12x4g12x4r12x4g12x4422Unorm4pack16 = 1000156021,
3241    #[doc = "**Translated from**: `VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16`"]
3242    G12x4B12x4R12x43plane420Unorm3pack16 = 1000156022,
3243    #[doc = "**Translated from**: `VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16`"]
3244    G12x4B12x4r12x42plane420Unorm3pack16 = 1000156023,
3245    #[doc = "**Translated from**: `VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16`"]
3246    G12x4B12x4R12x43plane422Unorm3pack16 = 1000156024,
3247    #[doc = "**Translated from**: `VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16`"]
3248    G12x4B12x4r12x42plane422Unorm3pack16 = 1000156025,
3249    #[doc = "**Translated from**: `VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16`"]
3250    G12x4B12x4R12x43plane444Unorm3pack16 = 1000156026,
3251    #[doc = "**Translated from**: `VK_FORMAT_G16B16G16R16_422_UNORM`"]
3252    G16b16g16r16422Unorm = 1000156027,
3253    #[doc = "**Translated from**: `VK_FORMAT_B16G16R16G16_422_UNORM`"]
3254    B16g16r16g16422Unorm = 1000156028,
3255    #[doc = "**Translated from**: `VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM`"]
3256    G16B16R163plane420Unorm = 1000156029,
3257    #[doc = "**Translated from**: `VK_FORMAT_G16_B16R16_2PLANE_420_UNORM`"]
3258    G16B16r162plane420Unorm = 1000156030,
3259    #[doc = "**Translated from**: `VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM`"]
3260    G16B16R163plane422Unorm = 1000156031,
3261    #[doc = "**Translated from**: `VK_FORMAT_G16_B16R16_2PLANE_422_UNORM`"]
3262    G16B16r162plane422Unorm = 1000156032,
3263    #[doc = "**Translated from**: `VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM`"]
3264    G16B16R163plane444Unorm = 1000156033,
3265    #[doc = "**Translated from**: `VK_FORMAT_G8_B8R8_2PLANE_444_UNORM`"]
3266    G8B8r82plane444Unorm = 1000330000,
3267    #[doc = "**Translated from**: `VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16`"]
3268    G10x6B10x6r10x62plane444Unorm3pack16 = 1000330001,
3269    #[doc = "**Translated from**: `VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16`"]
3270    G12x4B12x4r12x42plane444Unorm3pack16 = 1000330002,
3271    #[doc = "**Translated from**: `VK_FORMAT_G16_B16R16_2PLANE_444_UNORM`"]
3272    G16B16r162plane444Unorm = 1000330003,
3273    #[doc = "**Translated from**: `VK_FORMAT_A4R4G4B4_UNORM_PACK16`"]
3274    A4r4g4b4UnormPack16 = 1000340000,
3275    #[doc = "**Translated from**: `VK_FORMAT_A4B4G4R4_UNORM_PACK16`"]
3276    A4b4g4r4UnormPack16 = 1000340001,
3277    #[doc = "**Translated from**: `VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK`"]
3278    Astc4x4SfloatBlock = 1000066000,
3279    #[doc = "**Translated from**: `VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK`"]
3280    Astc5x4SfloatBlock = 1000066001,
3281    #[doc = "**Translated from**: `VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK`"]
3282    Astc5x5SfloatBlock = 1000066002,
3283    #[doc = "**Translated from**: `VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK`"]
3284    Astc6x5SfloatBlock = 1000066003,
3285    #[doc = "**Translated from**: `VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK`"]
3286    Astc6x6SfloatBlock = 1000066004,
3287    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK`"]
3288    Astc8x5SfloatBlock = 1000066005,
3289    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK`"]
3290    Astc8x6SfloatBlock = 1000066006,
3291    #[doc = "**Translated from**: `VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK`"]
3292    Astc8x8SfloatBlock = 1000066007,
3293    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK`"]
3294    Astc10x5SfloatBlock = 1000066008,
3295    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK`"]
3296    Astc10x6SfloatBlock = 1000066009,
3297    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK`"]
3298    Astc10x8SfloatBlock = 1000066010,
3299    #[doc = "**Translated from**: `VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK`"]
3300    Astc10x10SfloatBlock = 1000066011,
3301    #[doc = "**Translated from**: `VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK`"]
3302    Astc12x10SfloatBlock = 1000066012,
3303    #[doc = "**Translated from**: `VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK`"]
3304    Astc12x12SfloatBlock = 1000066013,
3305}
3306
3307impl std::fmt::Display for Format {
3308    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3309        write!(f, "{self:?}")
3310    }
3311}
3312
3313impl Format {
3314    #[must_use]
3315    pub fn aspect_mask(self) -> ImageAspectFlags {
3316        #[allow(clippy::match_same_arms)]
3317        match self {
3318            Format::Undefined => ImageAspectFlags::empty(),
3319            Format::R4g4UnormPack8 => ImageAspectFlagBits::Color.into(),
3320            Format::R4g4b4a4UnormPack16 => ImageAspectFlagBits::Color.into(),
3321            Format::B4g4r4a4UnormPack16 => ImageAspectFlagBits::Color.into(),
3322            Format::R5g6b5UnormPack16 => ImageAspectFlagBits::Color.into(),
3323            Format::B5g6r5UnormPack16 => ImageAspectFlagBits::Color.into(),
3324            Format::R5g5b5a1UnormPack16 => ImageAspectFlagBits::Color.into(),
3325            Format::B5g5r5a1UnormPack16 => ImageAspectFlagBits::Color.into(),
3326            Format::A1r5g5b5UnormPack16 => ImageAspectFlagBits::Color.into(),
3327            Format::R8Unorm => ImageAspectFlagBits::Color.into(),
3328            Format::R8Snorm => ImageAspectFlagBits::Color.into(),
3329            Format::R8Uscaled => ImageAspectFlagBits::Color.into(),
3330            Format::R8Sscaled => ImageAspectFlagBits::Color.into(),
3331            Format::R8Uint => ImageAspectFlagBits::Color.into(),
3332            Format::R8Sint => ImageAspectFlagBits::Color.into(),
3333            Format::R8Srgb => ImageAspectFlagBits::Color.into(),
3334            Format::R8g8Unorm => ImageAspectFlagBits::Color.into(),
3335            Format::R8g8Snorm => ImageAspectFlagBits::Color.into(),
3336            Format::R8g8Uscaled => ImageAspectFlagBits::Color.into(),
3337            Format::R8g8Sscaled => ImageAspectFlagBits::Color.into(),
3338            Format::R8g8Uint => ImageAspectFlagBits::Color.into(),
3339            Format::R8g8Sint => ImageAspectFlagBits::Color.into(),
3340            Format::R8g8Srgb => ImageAspectFlagBits::Color.into(),
3341            Format::R8g8b8Unorm => ImageAspectFlagBits::Color.into(),
3342            Format::R8g8b8Snorm => ImageAspectFlagBits::Color.into(),
3343            Format::R8g8b8Uscaled => ImageAspectFlagBits::Color.into(),
3344            Format::R8g8b8Sscaled => ImageAspectFlagBits::Color.into(),
3345            Format::R8g8b8Uint => ImageAspectFlagBits::Color.into(),
3346            Format::R8g8b8Sint => ImageAspectFlagBits::Color.into(),
3347            Format::R8g8b8Srgb => ImageAspectFlagBits::Color.into(),
3348            Format::B8g8r8Unorm => ImageAspectFlagBits::Color.into(),
3349            Format::B8g8r8Snorm => ImageAspectFlagBits::Color.into(),
3350            Format::B8g8r8Uscaled => ImageAspectFlagBits::Color.into(),
3351            Format::B8g8r8Sscaled => ImageAspectFlagBits::Color.into(),
3352            Format::B8g8r8Uint => ImageAspectFlagBits::Color.into(),
3353            Format::B8g8r8Sint => ImageAspectFlagBits::Color.into(),
3354            Format::B8g8r8Srgb => ImageAspectFlagBits::Color.into(),
3355            Format::R8g8b8a8Unorm => ImageAspectFlagBits::Color.into(),
3356            Format::R8g8b8a8Snorm => ImageAspectFlagBits::Color.into(),
3357            Format::R8g8b8a8Uscaled => ImageAspectFlagBits::Color.into(),
3358            Format::R8g8b8a8Sscaled => ImageAspectFlagBits::Color.into(),
3359            Format::R8g8b8a8Uint => ImageAspectFlagBits::Color.into(),
3360            Format::R8g8b8a8Sint => ImageAspectFlagBits::Color.into(),
3361            Format::R8g8b8a8Srgb => ImageAspectFlagBits::Color.into(),
3362            Format::B8g8r8a8Unorm => ImageAspectFlagBits::Color.into(),
3363            Format::B8g8r8a8Snorm => ImageAspectFlagBits::Color.into(),
3364            Format::B8g8r8a8Uscaled => ImageAspectFlagBits::Color.into(),
3365            Format::B8g8r8a8Sscaled => ImageAspectFlagBits::Color.into(),
3366            Format::B8g8r8a8Uint => ImageAspectFlagBits::Color.into(),
3367            Format::B8g8r8a8Sint => ImageAspectFlagBits::Color.into(),
3368            Format::B8g8r8a8Srgb => ImageAspectFlagBits::Color.into(),
3369            Format::A8b8g8r8UnormPack32 => ImageAspectFlagBits::Color.into(),
3370            Format::A8b8g8r8SnormPack32 => ImageAspectFlagBits::Color.into(),
3371            Format::A8b8g8r8UscaledPack32 => ImageAspectFlagBits::Color.into(),
3372            Format::A8b8g8r8SscaledPack32 => ImageAspectFlagBits::Color.into(),
3373            Format::A8b8g8r8UintPack32 => ImageAspectFlagBits::Color.into(),
3374            Format::A8b8g8r8SintPack32 => ImageAspectFlagBits::Color.into(),
3375            Format::A8b8g8r8SrgbPack32 => ImageAspectFlagBits::Color.into(),
3376            Format::A2r10g10b10UnormPack32 => ImageAspectFlagBits::Color.into(),
3377            Format::A2r10g10b10SnormPack32 => ImageAspectFlagBits::Color.into(),
3378            Format::A2r10g10b10UscaledPack32 => ImageAspectFlagBits::Color.into(),
3379            Format::A2r10g10b10SscaledPack32 => ImageAspectFlagBits::Color.into(),
3380            Format::A2r10g10b10UintPack32 => ImageAspectFlagBits::Color.into(),
3381            Format::A2r10g10b10SintPack32 => ImageAspectFlagBits::Color.into(),
3382            Format::A2b10g10r10UnormPack32 => ImageAspectFlagBits::Color.into(),
3383            Format::A2b10g10r10SnormPack32 => ImageAspectFlagBits::Color.into(),
3384            Format::A2b10g10r10UscaledPack32 => ImageAspectFlagBits::Color.into(),
3385            Format::A2b10g10r10SscaledPack32 => ImageAspectFlagBits::Color.into(),
3386            Format::A2b10g10r10UintPack32 => ImageAspectFlagBits::Color.into(),
3387            Format::A2b10g10r10SintPack32 => ImageAspectFlagBits::Color.into(),
3388            Format::R16Unorm => ImageAspectFlagBits::Color.into(),
3389            Format::R16Snorm => ImageAspectFlagBits::Color.into(),
3390            Format::R16Uscaled => ImageAspectFlagBits::Color.into(),
3391            Format::R16Sscaled => ImageAspectFlagBits::Color.into(),
3392            Format::R16Uint => ImageAspectFlagBits::Color.into(),
3393            Format::R16Sint => ImageAspectFlagBits::Color.into(),
3394            Format::R16Sfloat => ImageAspectFlagBits::Color.into(),
3395            Format::R16g16Unorm => ImageAspectFlagBits::Color.into(),
3396            Format::R16g16Snorm => ImageAspectFlagBits::Color.into(),
3397            Format::R16g16Uscaled => ImageAspectFlagBits::Color.into(),
3398            Format::R16g16Sscaled => ImageAspectFlagBits::Color.into(),
3399            Format::R16g16Uint => ImageAspectFlagBits::Color.into(),
3400            Format::R16g16Sint => ImageAspectFlagBits::Color.into(),
3401            Format::R16g16Sfloat => ImageAspectFlagBits::Color.into(),
3402            Format::R16g16b16Unorm => ImageAspectFlagBits::Color.into(),
3403            Format::R16g16b16Snorm => ImageAspectFlagBits::Color.into(),
3404            Format::R16g16b16Uscaled => ImageAspectFlagBits::Color.into(),
3405            Format::R16g16b16Sscaled => ImageAspectFlagBits::Color.into(),
3406            Format::R16g16b16Uint => ImageAspectFlagBits::Color.into(),
3407            Format::R16g16b16Sint => ImageAspectFlagBits::Color.into(),
3408            Format::R16g16b16Sfloat => ImageAspectFlagBits::Color.into(),
3409            Format::R16g16b16a16Unorm => ImageAspectFlagBits::Color.into(),
3410            Format::R16g16b16a16Snorm => ImageAspectFlagBits::Color.into(),
3411            Format::R16g16b16a16Uscaled => ImageAspectFlagBits::Color.into(),
3412            Format::R16g16b16a16Sscaled => ImageAspectFlagBits::Color.into(),
3413            Format::R16g16b16a16Uint => ImageAspectFlagBits::Color.into(),
3414            Format::R16g16b16a16Sint => ImageAspectFlagBits::Color.into(),
3415            Format::R16g16b16a16Sfloat => ImageAspectFlagBits::Color.into(),
3416            Format::R32Uint => ImageAspectFlagBits::Color.into(),
3417            Format::R32Sint => ImageAspectFlagBits::Color.into(),
3418            Format::R32Sfloat => ImageAspectFlagBits::Color.into(),
3419            Format::R32g32Uint => ImageAspectFlagBits::Color.into(),
3420            Format::R32g32Sint => ImageAspectFlagBits::Color.into(),
3421            Format::R32g32Sfloat => ImageAspectFlagBits::Color.into(),
3422            Format::R32g32b32Uint => ImageAspectFlagBits::Color.into(),
3423            Format::R32g32b32Sint => ImageAspectFlagBits::Color.into(),
3424            Format::R32g32b32Sfloat => ImageAspectFlagBits::Color.into(),
3425            Format::R32g32b32a32Uint => ImageAspectFlagBits::Color.into(),
3426            Format::R32g32b32a32Sint => ImageAspectFlagBits::Color.into(),
3427            Format::R32g32b32a32Sfloat => ImageAspectFlagBits::Color.into(),
3428            Format::R64Uint => ImageAspectFlagBits::Color.into(),
3429            Format::R64Sint => ImageAspectFlagBits::Color.into(),
3430            Format::R64Sfloat => ImageAspectFlagBits::Color.into(),
3431            Format::R64g64Uint => ImageAspectFlagBits::Color.into(),
3432            Format::R64g64Sint => ImageAspectFlagBits::Color.into(),
3433            Format::R64g64Sfloat => ImageAspectFlagBits::Color.into(),
3434            Format::R64g64b64Uint => ImageAspectFlagBits::Color.into(),
3435            Format::R64g64b64Sint => ImageAspectFlagBits::Color.into(),
3436            Format::R64g64b64Sfloat => ImageAspectFlagBits::Color.into(),
3437            Format::R64g64b64a64Uint => ImageAspectFlagBits::Color.into(),
3438            Format::R64g64b64a64Sint => ImageAspectFlagBits::Color.into(),
3439            Format::R64g64b64a64Sfloat => ImageAspectFlagBits::Color.into(),
3440            Format::B10g11r11UfloatPack32 => ImageAspectFlagBits::Color.into(),
3441            Format::E5b9g9r9UfloatPack32 => ImageAspectFlagBits::Color.into(),
3442            Format::D16Unorm => ImageAspectFlagBits::Depth.into(),
3443            Format::X8D24UnormPack32 => ImageAspectFlagBits::Depth.into(),
3444            Format::D32Sfloat => ImageAspectFlagBits::Depth.into(),
3445            Format::S8Uint => ImageAspectFlagBits::Stencil.into(),
3446            Format::D16UnormS8Uint => ImageAspectFlagBits::Depth | ImageAspectFlagBits::Stencil,
3447            Format::D24UnormS8Uint => ImageAspectFlagBits::Depth | ImageAspectFlagBits::Stencil,
3448            Format::D32SfloatS8Uint => ImageAspectFlagBits::Depth | ImageAspectFlagBits::Stencil,
3449            Format::Bc1RgbUnormBlock => ImageAspectFlagBits::Color.into(),
3450            Format::Bc1RgbSrgbBlock => ImageAspectFlagBits::Color.into(),
3451            Format::Bc1RgbaUnormBlock => ImageAspectFlagBits::Color.into(),
3452            Format::Bc1RgbaSrgbBlock => ImageAspectFlagBits::Color.into(),
3453            Format::Bc2UnormBlock => ImageAspectFlagBits::Color.into(),
3454            Format::Bc2SrgbBlock => ImageAspectFlagBits::Color.into(),
3455            Format::Bc3UnormBlock => ImageAspectFlagBits::Color.into(),
3456            Format::Bc3SrgbBlock => ImageAspectFlagBits::Color.into(),
3457            Format::Bc4UnormBlock => ImageAspectFlagBits::Color.into(),
3458            Format::Bc4SnormBlock => ImageAspectFlagBits::Color.into(),
3459            Format::Bc5UnormBlock => ImageAspectFlagBits::Color.into(),
3460            Format::Bc5SnormBlock => ImageAspectFlagBits::Color.into(),
3461            Format::Bc6hUfloatBlock => ImageAspectFlagBits::Color.into(),
3462            Format::Bc6hSfloatBlock => ImageAspectFlagBits::Color.into(),
3463            Format::Bc7UnormBlock => ImageAspectFlagBits::Color.into(),
3464            Format::Bc7SrgbBlock => ImageAspectFlagBits::Color.into(),
3465            Format::Etc2R8g8b8UnormBlock => ImageAspectFlagBits::Color.into(),
3466            Format::Etc2R8g8b8SrgbBlock => ImageAspectFlagBits::Color.into(),
3467            Format::Etc2R8g8b8a1UnormBlock => ImageAspectFlagBits::Color.into(),
3468            Format::Etc2R8g8b8a1SrgbBlock => ImageAspectFlagBits::Color.into(),
3469            Format::Etc2R8g8b8a8UnormBlock => ImageAspectFlagBits::Color.into(),
3470            Format::Etc2R8g8b8a8SrgbBlock => ImageAspectFlagBits::Color.into(),
3471            Format::EacR11UnormBlock => ImageAspectFlagBits::Color.into(),
3472            Format::EacR11SnormBlock => ImageAspectFlagBits::Color.into(),
3473            Format::EacR11g11UnormBlock => ImageAspectFlagBits::Color.into(),
3474            Format::EacR11g11SnormBlock => ImageAspectFlagBits::Color.into(),
3475            Format::Astc4x4UnormBlock => ImageAspectFlagBits::Color.into(),
3476            Format::Astc4x4SrgbBlock => ImageAspectFlagBits::Color.into(),
3477            Format::Astc5x4UnormBlock => ImageAspectFlagBits::Color.into(),
3478            Format::Astc5x4SrgbBlock => ImageAspectFlagBits::Color.into(),
3479            Format::Astc5x5UnormBlock => ImageAspectFlagBits::Color.into(),
3480            Format::Astc5x5SrgbBlock => ImageAspectFlagBits::Color.into(),
3481            Format::Astc6x5UnormBlock => ImageAspectFlagBits::Color.into(),
3482            Format::Astc6x5SrgbBlock => ImageAspectFlagBits::Color.into(),
3483            Format::Astc6x6UnormBlock => ImageAspectFlagBits::Color.into(),
3484            Format::Astc6x6SrgbBlock => ImageAspectFlagBits::Color.into(),
3485            Format::Astc8x5UnormBlock => ImageAspectFlagBits::Color.into(),
3486            Format::Astc8x5SrgbBlock => ImageAspectFlagBits::Color.into(),
3487            Format::Astc8x6UnormBlock => ImageAspectFlagBits::Color.into(),
3488            Format::Astc8x6SrgbBlock => ImageAspectFlagBits::Color.into(),
3489            Format::Astc8x8UnormBlock => ImageAspectFlagBits::Color.into(),
3490            Format::Astc8x8SrgbBlock => ImageAspectFlagBits::Color.into(),
3491            Format::Astc10x5UnormBlock => ImageAspectFlagBits::Color.into(),
3492            Format::Astc10x5SrgbBlock => ImageAspectFlagBits::Color.into(),
3493            Format::Astc10x6UnormBlock => ImageAspectFlagBits::Color.into(),
3494            Format::Astc10x6SrgbBlock => ImageAspectFlagBits::Color.into(),
3495            Format::Astc10x8UnormBlock => ImageAspectFlagBits::Color.into(),
3496            Format::Astc10x8SrgbBlock => ImageAspectFlagBits::Color.into(),
3497            Format::Astc10x10UnormBlock => ImageAspectFlagBits::Color.into(),
3498            Format::Astc10x10SrgbBlock => ImageAspectFlagBits::Color.into(),
3499            Format::Astc12x10UnormBlock => ImageAspectFlagBits::Color.into(),
3500            Format::Astc12x10SrgbBlock => ImageAspectFlagBits::Color.into(),
3501            Format::Astc12x12UnormBlock => ImageAspectFlagBits::Color.into(),
3502            Format::Astc12x12SrgbBlock => ImageAspectFlagBits::Color.into(),
3503            Format::G8b8g8r8422Unorm => ImageAspectFlagBits::Color.into(),
3504            Format::B8g8r8g8422Unorm => ImageAspectFlagBits::Color.into(),
3505            Format::G8B8R83plane420Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3506            Format::G8B8r82plane420Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3507            Format::G8B8R83plane422Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3508            Format::G8B8r82plane422Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3509            Format::G8B8R83plane444Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3510            Format::R10x6UnormPack16 => ImageAspectFlagBits::Color.into(),
3511            Format::R10x6g10x6Unorm2pack16 => ImageAspectFlagBits::Color.into(),
3512            Format::R10x6g10x6b10x6a10x6Unorm4pack16 => ImageAspectFlagBits::Color.into(),
3513            Format::G10x6b10x6g10x6r10x6422Unorm4pack16 => ImageAspectFlagBits::Color.into(),
3514            Format::B10x6g10x6r10x6g10x6422Unorm4pack16 => ImageAspectFlagBits::Color.into(),
3515            Format::G10x6B10x6R10x63plane420Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3516            Format::G10x6B10x6r10x62plane420Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3517            Format::G10x6B10x6R10x63plane422Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3518            Format::G10x6B10x6r10x62plane422Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3519            Format::G10x6B10x6R10x63plane444Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3520            Format::R12x4UnormPack16 => ImageAspectFlagBits::Color.into(),
3521            Format::R12x4g12x4Unorm2pack16 => ImageAspectFlagBits::Color.into(),
3522            Format::R12x4g12x4b12x4a12x4Unorm4pack16 => ImageAspectFlagBits::Color.into(),
3523            Format::G12x4b12x4g12x4r12x4422Unorm4pack16 => ImageAspectFlagBits::Color.into(),
3524            Format::B12x4g12x4r12x4g12x4422Unorm4pack16 => ImageAspectFlagBits::Color.into(),
3525            Format::G12x4B12x4R12x43plane420Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3526            Format::G12x4B12x4r12x42plane420Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3527            Format::G12x4B12x4R12x43plane422Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3528            Format::G12x4B12x4r12x42plane422Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3529            Format::G12x4B12x4R12x43plane444Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3530            Format::G16b16g16r16422Unorm => ImageAspectFlagBits::Color.into(),
3531            Format::B16g16r16g16422Unorm => ImageAspectFlagBits::Color.into(),
3532            Format::G16B16R163plane420Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3533            Format::G16B16r162plane420Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3534            Format::G16B16R163plane422Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3535            Format::G16B16r162plane422Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3536            Format::G16B16R163plane444Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1 | ImageAspectFlagBits::Plane2,
3537            Format::G8B8r82plane444Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3538            Format::G10x6B10x6r10x62plane444Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3539            Format::G12x4B12x4r12x42plane444Unorm3pack16 => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3540            Format::G16B16r162plane444Unorm => ImageAspectFlagBits::Color | ImageAspectFlagBits::Plane0 | ImageAspectFlagBits::Plane1,
3541            Format::A4r4g4b4UnormPack16 => ImageAspectFlagBits::Color.into(),
3542            Format::A4b4g4r4UnormPack16 => ImageAspectFlagBits::Color.into(),
3543            Format::Astc4x4SfloatBlock => ImageAspectFlagBits::Color.into(),
3544            Format::Astc5x4SfloatBlock => ImageAspectFlagBits::Color.into(),
3545            Format::Astc5x5SfloatBlock => ImageAspectFlagBits::Color.into(),
3546            Format::Astc6x5SfloatBlock => ImageAspectFlagBits::Color.into(),
3547            Format::Astc6x6SfloatBlock => ImageAspectFlagBits::Color.into(),
3548            Format::Astc8x5SfloatBlock => ImageAspectFlagBits::Color.into(),
3549            Format::Astc8x6SfloatBlock => ImageAspectFlagBits::Color.into(),
3550            Format::Astc8x8SfloatBlock => ImageAspectFlagBits::Color.into(),
3551            Format::Astc10x5SfloatBlock => ImageAspectFlagBits::Color.into(),
3552            Format::Astc10x6SfloatBlock => ImageAspectFlagBits::Color.into(),
3553            Format::Astc10x8SfloatBlock => ImageAspectFlagBits::Color.into(),
3554            Format::Astc10x10SfloatBlock => ImageAspectFlagBits::Color.into(),
3555            Format::Astc12x10SfloatBlock => ImageAspectFlagBits::Color.into(),
3556            Format::Astc12x12SfloatBlock => ImageAspectFlagBits::Color.into(),
3557        }
3558    }
3559
3560    #[must_use]
3561    pub const fn block_size(self) -> u32 {
3562        #[allow(clippy::match_same_arms)]
3563        match self {
3564            Format::Undefined => 0,
3565            Format::R4g4UnormPack8 => 1,
3566            Format::R4g4b4a4UnormPack16 => 2,
3567            Format::B4g4r4a4UnormPack16 => 2,
3568            Format::R5g6b5UnormPack16 => 2,
3569            Format::B5g6r5UnormPack16 => 2,
3570            Format::R5g5b5a1UnormPack16 => 2,
3571            Format::B5g5r5a1UnormPack16 => 2,
3572            Format::A1r5g5b5UnormPack16 => 2,
3573            Format::R8Unorm => 1,
3574            Format::R8Snorm => 1,
3575            Format::R8Uscaled => 1,
3576            Format::R8Sscaled => 1,
3577            Format::R8Uint => 1,
3578            Format::R8Sint => 1,
3579            Format::R8Srgb => 1,
3580            Format::R8g8Unorm => 2,
3581            Format::R8g8Snorm => 2,
3582            Format::R8g8Uscaled => 2,
3583            Format::R8g8Sscaled => 2,
3584            Format::R8g8Uint => 2,
3585            Format::R8g8Sint => 2,
3586            Format::R8g8Srgb => 2,
3587            Format::R8g8b8Unorm => 3,
3588            Format::R8g8b8Snorm => 3,
3589            Format::R8g8b8Uscaled => 3,
3590            Format::R8g8b8Sscaled => 3,
3591            Format::R8g8b8Uint => 3,
3592            Format::R8g8b8Sint => 3,
3593            Format::R8g8b8Srgb => 3,
3594            Format::B8g8r8Unorm => 3,
3595            Format::B8g8r8Snorm => 3,
3596            Format::B8g8r8Uscaled => 3,
3597            Format::B8g8r8Sscaled => 3,
3598            Format::B8g8r8Uint => 3,
3599            Format::B8g8r8Sint => 3,
3600            Format::B8g8r8Srgb => 3,
3601            Format::R8g8b8a8Unorm => 4,
3602            Format::R8g8b8a8Snorm => 4,
3603            Format::R8g8b8a8Uscaled => 4,
3604            Format::R8g8b8a8Sscaled => 4,
3605            Format::R8g8b8a8Uint => 4,
3606            Format::R8g8b8a8Sint => 4,
3607            Format::R8g8b8a8Srgb => 4,
3608            Format::B8g8r8a8Unorm => 4,
3609            Format::B8g8r8a8Snorm => 4,
3610            Format::B8g8r8a8Uscaled => 4,
3611            Format::B8g8r8a8Sscaled => 4,
3612            Format::B8g8r8a8Uint => 4,
3613            Format::B8g8r8a8Sint => 4,
3614            Format::B8g8r8a8Srgb => 4,
3615            Format::A8b8g8r8UnormPack32 => 4,
3616            Format::A8b8g8r8SnormPack32 => 4,
3617            Format::A8b8g8r8UscaledPack32 => 4,
3618            Format::A8b8g8r8SscaledPack32 => 4,
3619            Format::A8b8g8r8UintPack32 => 4,
3620            Format::A8b8g8r8SintPack32 => 4,
3621            Format::A8b8g8r8SrgbPack32 => 4,
3622            Format::A2r10g10b10UnormPack32 => 4,
3623            Format::A2r10g10b10SnormPack32 => 4,
3624            Format::A2r10g10b10UscaledPack32 => 4,
3625            Format::A2r10g10b10SscaledPack32 => 4,
3626            Format::A2r10g10b10UintPack32 => 4,
3627            Format::A2r10g10b10SintPack32 => 4,
3628            Format::A2b10g10r10UnormPack32 => 4,
3629            Format::A2b10g10r10SnormPack32 => 4,
3630            Format::A2b10g10r10UscaledPack32 => 4,
3631            Format::A2b10g10r10SscaledPack32 => 4,
3632            Format::A2b10g10r10UintPack32 => 4,
3633            Format::A2b10g10r10SintPack32 => 4,
3634            Format::R16Unorm => 2,
3635            Format::R16Snorm => 2,
3636            Format::R16Uscaled => 2,
3637            Format::R16Sscaled => 2,
3638            Format::R16Uint => 2,
3639            Format::R16Sint => 2,
3640            Format::R16Sfloat => 2,
3641            Format::R16g16Unorm => 4,
3642            Format::R16g16Snorm => 4,
3643            Format::R16g16Uscaled => 4,
3644            Format::R16g16Sscaled => 4,
3645            Format::R16g16Uint => 4,
3646            Format::R16g16Sint => 4,
3647            Format::R16g16Sfloat => 4,
3648            Format::R16g16b16Unorm => 6,
3649            Format::R16g16b16Snorm => 6,
3650            Format::R16g16b16Uscaled => 6,
3651            Format::R16g16b16Sscaled => 6,
3652            Format::R16g16b16Uint => 6,
3653            Format::R16g16b16Sint => 6,
3654            Format::R16g16b16Sfloat => 6,
3655            Format::R16g16b16a16Unorm => 8,
3656            Format::R16g16b16a16Snorm => 8,
3657            Format::R16g16b16a16Uscaled => 8,
3658            Format::R16g16b16a16Sscaled => 8,
3659            Format::R16g16b16a16Uint => 8,
3660            Format::R16g16b16a16Sint => 8,
3661            Format::R16g16b16a16Sfloat => 8,
3662            Format::R32Uint => 4,
3663            Format::R32Sint => 4,
3664            Format::R32Sfloat => 4,
3665            Format::R32g32Uint => 8,
3666            Format::R32g32Sint => 8,
3667            Format::R32g32Sfloat => 8,
3668            Format::R32g32b32Uint => 12,
3669            Format::R32g32b32Sint => 12,
3670            Format::R32g32b32Sfloat => 12,
3671            Format::R32g32b32a32Uint => 16,
3672            Format::R32g32b32a32Sint => 16,
3673            Format::R32g32b32a32Sfloat => 16,
3674            Format::R64Uint => 8,
3675            Format::R64Sint => 8,
3676            Format::R64Sfloat => 8,
3677            Format::R64g64Uint => 16,
3678            Format::R64g64Sint => 16,
3679            Format::R64g64Sfloat => 16,
3680            Format::R64g64b64Uint => 24,
3681            Format::R64g64b64Sint => 24,
3682            Format::R64g64b64Sfloat => 24,
3683            Format::R64g64b64a64Uint => 32,
3684            Format::R64g64b64a64Sint => 32,
3685            Format::R64g64b64a64Sfloat => 32,
3686            Format::B10g11r11UfloatPack32 => 4,
3687            Format::E5b9g9r9UfloatPack32 => 4,
3688            Format::D16Unorm => 2,
3689            Format::X8D24UnormPack32 => 4,
3690            Format::D32Sfloat => 4,
3691            Format::S8Uint => 1,
3692            Format::D16UnormS8Uint => 3,
3693            Format::D24UnormS8Uint => 4,
3694            Format::D32SfloatS8Uint => 5,
3695            Format::Bc1RgbUnormBlock => 8,
3696            Format::Bc1RgbSrgbBlock => 8,
3697            Format::Bc1RgbaUnormBlock => 8,
3698            Format::Bc1RgbaSrgbBlock => 8,
3699            Format::Bc2UnormBlock => 16,
3700            Format::Bc2SrgbBlock => 16,
3701            Format::Bc3UnormBlock => 16,
3702            Format::Bc3SrgbBlock => 16,
3703            Format::Bc4UnormBlock => 8,
3704            Format::Bc4SnormBlock => 8,
3705            Format::Bc5UnormBlock => 16,
3706            Format::Bc5SnormBlock => 16,
3707            Format::Bc6hUfloatBlock => 16,
3708            Format::Bc6hSfloatBlock => 16,
3709            Format::Bc7UnormBlock => 16,
3710            Format::Bc7SrgbBlock => 16,
3711            Format::Etc2R8g8b8UnormBlock => 8,
3712            Format::Etc2R8g8b8SrgbBlock => 8,
3713            Format::Etc2R8g8b8a1UnormBlock => 8,
3714            Format::Etc2R8g8b8a1SrgbBlock => 8,
3715            Format::Etc2R8g8b8a8UnormBlock => 16,
3716            Format::Etc2R8g8b8a8SrgbBlock => 16,
3717            Format::EacR11UnormBlock => 8,
3718            Format::EacR11SnormBlock => 8,
3719            Format::EacR11g11UnormBlock => 16,
3720            Format::EacR11g11SnormBlock => 16,
3721            Format::Astc4x4UnormBlock => 16,
3722            Format::Astc4x4SrgbBlock => 16,
3723            Format::Astc5x4UnormBlock => 16,
3724            Format::Astc5x4SrgbBlock => 16,
3725            Format::Astc5x5UnormBlock => 16,
3726            Format::Astc5x5SrgbBlock => 16,
3727            Format::Astc6x5UnormBlock => 16,
3728            Format::Astc6x5SrgbBlock => 16,
3729            Format::Astc6x6UnormBlock => 16,
3730            Format::Astc6x6SrgbBlock => 16,
3731            Format::Astc8x5UnormBlock => 16,
3732            Format::Astc8x5SrgbBlock => 16,
3733            Format::Astc8x6UnormBlock => 16,
3734            Format::Astc8x6SrgbBlock => 16,
3735            Format::Astc8x8UnormBlock => 16,
3736            Format::Astc8x8SrgbBlock => 16,
3737            Format::Astc10x5UnormBlock => 16,
3738            Format::Astc10x5SrgbBlock => 16,
3739            Format::Astc10x6UnormBlock => 16,
3740            Format::Astc10x6SrgbBlock => 16,
3741            Format::Astc10x8UnormBlock => 16,
3742            Format::Astc10x8SrgbBlock => 16,
3743            Format::Astc10x10UnormBlock => 16,
3744            Format::Astc10x10SrgbBlock => 16,
3745            Format::Astc12x10UnormBlock => 16,
3746            Format::Astc12x10SrgbBlock => 16,
3747            Format::Astc12x12UnormBlock => 16,
3748            Format::Astc12x12SrgbBlock => 16,
3749            Format::G8b8g8r8422Unorm => 4,
3750            Format::B8g8r8g8422Unorm => 4,
3751            Format::G8B8R83plane420Unorm => 3,
3752            Format::G8B8r82plane420Unorm => 3,
3753            Format::G8B8R83plane422Unorm => 3,
3754            Format::G8B8r82plane422Unorm => 3,
3755            Format::G8B8R83plane444Unorm => 3,
3756            Format::R10x6UnormPack16 => 2,
3757            Format::R10x6g10x6Unorm2pack16 => 4,
3758            Format::R10x6g10x6b10x6a10x6Unorm4pack16 => 8,
3759            Format::G10x6b10x6g10x6r10x6422Unorm4pack16 => 8,
3760            Format::B10x6g10x6r10x6g10x6422Unorm4pack16 => 8,
3761            Format::G10x6B10x6R10x63plane420Unorm3pack16 => 6,
3762            Format::G10x6B10x6r10x62plane420Unorm3pack16 => 6,
3763            Format::G10x6B10x6R10x63plane422Unorm3pack16 => 6,
3764            Format::G10x6B10x6r10x62plane422Unorm3pack16 => 6,
3765            Format::G10x6B10x6R10x63plane444Unorm3pack16 => 6,
3766            Format::R12x4UnormPack16 => 2,
3767            Format::R12x4g12x4Unorm2pack16 => 4,
3768            Format::R12x4g12x4b12x4a12x4Unorm4pack16 => 8,
3769            Format::G12x4b12x4g12x4r12x4422Unorm4pack16 => 8,
3770            Format::B12x4g12x4r12x4g12x4422Unorm4pack16 => 8,
3771            Format::G12x4B12x4R12x43plane420Unorm3pack16 => 6,
3772            Format::G12x4B12x4r12x42plane420Unorm3pack16 => 6,
3773            Format::G12x4B12x4R12x43plane422Unorm3pack16 => 6,
3774            Format::G12x4B12x4r12x42plane422Unorm3pack16 => 6,
3775            Format::G12x4B12x4R12x43plane444Unorm3pack16 => 6,
3776            Format::G16b16g16r16422Unorm => 8,
3777            Format::B16g16r16g16422Unorm => 8,
3778            Format::G16B16R163plane420Unorm => 6,
3779            Format::G16B16r162plane420Unorm => 6,
3780            Format::G16B16R163plane422Unorm => 6,
3781            Format::G16B16r162plane422Unorm => 6,
3782            Format::G16B16R163plane444Unorm => 6,
3783            Format::G8B8r82plane444Unorm => 3,
3784            Format::G10x6B10x6r10x62plane444Unorm3pack16 => 6,
3785            Format::G12x4B12x4r12x42plane444Unorm3pack16 => 6,
3786            Format::G16B16r162plane444Unorm => 6,
3787            Format::A4r4g4b4UnormPack16 => 2,
3788            Format::A4b4g4r4UnormPack16 => 2,
3789            Format::Astc4x4SfloatBlock => 16,
3790            Format::Astc5x4SfloatBlock => 16,
3791            Format::Astc5x5SfloatBlock => 16,
3792            Format::Astc6x5SfloatBlock => 16,
3793            Format::Astc6x6SfloatBlock => 16,
3794            Format::Astc8x5SfloatBlock => 16,
3795            Format::Astc8x6SfloatBlock => 16,
3796            Format::Astc8x8SfloatBlock => 16,
3797            Format::Astc10x5SfloatBlock => 16,
3798            Format::Astc10x6SfloatBlock => 16,
3799            Format::Astc10x8SfloatBlock => 16,
3800            Format::Astc10x10SfloatBlock => 16,
3801            Format::Astc12x10SfloatBlock => 16,
3802            Format::Astc12x12SfloatBlock => 16,
3803        }
3804    }
3805}
3806
3807#[repr(i32)]
3808#[derive(Clone, Copy, PartialEq, Eq, Debug)]
3809#[doc = "**Chapter**: Debugging"]
3810#[doc = "<br>"]
3811#[doc = "**Description**: Specify an enumeration to track object handle types"]
3812#[doc = "<br>"]
3813#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
3814#[doc = "<br>"]
3815#[doc = "**Reference**: [`VkObjectType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkObjectType.html)"]
3816pub enum ObjectType {
3817    #[doc = "**Translated from**: `VK_OBJECT_TYPE_UNKNOWN`"]
3818    Unknown = 0,
3819    #[doc = "**Translated from**: `VK_OBJECT_TYPE_INSTANCE`"]
3820    Instance = 1,
3821    #[doc = "**Translated from**: `VK_OBJECT_TYPE_PHYSICAL_DEVICE`"]
3822    PhysicalDevice = 2,
3823    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DEVICE`"]
3824    Device = 3,
3825    #[doc = "**Translated from**: `VK_OBJECT_TYPE_QUEUE`"]
3826    Queue = 4,
3827    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SEMAPHORE`"]
3828    Semaphore = 5,
3829    #[doc = "**Translated from**: `VK_OBJECT_TYPE_COMMAND_BUFFER`"]
3830    CommandBuffer = 6,
3831    #[doc = "**Translated from**: `VK_OBJECT_TYPE_FENCE`"]
3832    Fence = 7,
3833    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DEVICE_MEMORY`"]
3834    DeviceMemory = 8,
3835    #[doc = "**Translated from**: `VK_OBJECT_TYPE_BUFFER`"]
3836    Buffer = 9,
3837    #[doc = "**Translated from**: `VK_OBJECT_TYPE_IMAGE`"]
3838    Image = 10,
3839    #[doc = "**Translated from**: `VK_OBJECT_TYPE_EVENT`"]
3840    Event = 11,
3841    #[doc = "**Translated from**: `VK_OBJECT_TYPE_QUERY_POOL`"]
3842    QueryPool = 12,
3843    #[doc = "**Translated from**: `VK_OBJECT_TYPE_BUFFER_VIEW`"]
3844    BufferView = 13,
3845    #[doc = "**Translated from**: `VK_OBJECT_TYPE_IMAGE_VIEW`"]
3846    ImageView = 14,
3847    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SHADER_MODULE`"]
3848    ShaderModule = 15,
3849    #[doc = "**Translated from**: `VK_OBJECT_TYPE_PIPELINE_CACHE`"]
3850    PipelineCache = 16,
3851    #[doc = "**Translated from**: `VK_OBJECT_TYPE_PIPELINE_LAYOUT`"]
3852    PipelineLayout = 17,
3853    #[doc = "**Translated from**: `VK_OBJECT_TYPE_RENDER_PASS`"]
3854    RenderPass = 18,
3855    #[doc = "**Translated from**: `VK_OBJECT_TYPE_PIPELINE`"]
3856    Pipeline = 19,
3857    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT`"]
3858    DescriptorSetLayout = 20,
3859    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SAMPLER`"]
3860    Sampler = 21,
3861    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DESCRIPTOR_POOL`"]
3862    DescriptorPool = 22,
3863    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DESCRIPTOR_SET`"]
3864    DescriptorSet = 23,
3865    #[doc = "**Translated from**: `VK_OBJECT_TYPE_FRAMEBUFFER`"]
3866    Framebuffer = 24,
3867    #[doc = "**Translated from**: `VK_OBJECT_TYPE_COMMAND_POOL`"]
3868    CommandPool = 25,
3869    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION`"]
3870    SamplerYcbcrConversion = 1000156000,
3871    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE`"]
3872    DescriptorUpdateTemplate = 1000085000,
3873    #[doc = "**Translated from**: `VK_OBJECT_TYPE_PRIVATE_DATA_SLOT`"]
3874    PrivateDataSlot = 1000295000,
3875    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SURFACE_KHR`"]
3876    SurfaceKHR = 1000000000,
3877    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SWAPCHAIN_KHR`"]
3878    SwapchainKHR = 1000001000,
3879    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT`"]
3880    DebugUtilsMessengerEXT = 1000128000,
3881    #[doc = "**Translated from**: `VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR`"]
3882    AccelerationStructureKHR = 1000150000,
3883    #[doc = "**Translated from**: `VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR`"]
3884    DeferredOperationKHR = 1000268000,
3885    #[doc = "**Translated from**: `VK_OBJECT_TYPE_SHADER_EXT`"]
3886    ShaderEXT = 1000482000,
3887}
3888
3889impl std::fmt::Display for ObjectType {
3890    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3891        write!(f, "{self:?}")
3892    }
3893}
3894
3895//
3896// Bitmasks
3897//
3898
3899#[repr(C)]
3900#[derive(Clone, Copy, PartialEq, Eq)]
3901#[doc = "**Chapter**: Initialization"]
3902#[doc = "<br>"]
3903#[doc = "**Description**: Bitmask of VkInstanceCreateFlagBits"]
3904#[doc = "<br>"]
3905#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
3906#[doc = "<br>"]
3907#[doc = "**Reference**: [`VkInstanceCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateFlags.html)"]
3908#[doc = "<br>"]
3909#[doc = "**Reference**: [`VkInstanceCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateFlagBits.html)"]
3910pub struct InstanceCreateFlags(u32);
3911
3912impl InstanceCreateFlags {
3913    #[must_use]
3914    pub const fn empty() -> Self {
3915        Self(0)
3916    }
3917
3918    #[must_use]
3919    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
3920        let rhs = rhs.into();
3921        self.0 & rhs.0 == rhs.0
3922    }
3923}
3924
3925impl std::ops::BitAnd for InstanceCreateFlags {
3926    type Output = Self;
3927    fn bitand(self, rhs: Self) -> Self::Output {
3928        Self(self.0 & rhs.0)
3929    }
3930}
3931
3932impl From<InstanceCreateFlagBits> for InstanceCreateFlags {
3933    fn from(flag_bits: InstanceCreateFlagBits) -> Self {
3934        Self(flag_bits as u32)
3935    }
3936}
3937
3938impl std::ops::BitOr<InstanceCreateFlagBits> for InstanceCreateFlags {
3939    type Output = InstanceCreateFlags;
3940    fn bitor(self, rhs: InstanceCreateFlagBits) -> Self::Output {
3941        Self(self.0 | rhs as u32)
3942    }
3943}
3944
3945impl std::fmt::Display for InstanceCreateFlags {
3946    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3947        #[allow(deprecated)]
3948        display_flag_bits_u32(f, self.0, &[InstanceCreateFlagBits::Placeholder])
3949    }
3950}
3951
3952impl std::fmt::Debug for InstanceCreateFlags {
3953    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3954        f.debug_tuple("InstanceCreateFlags").field(&format!("{self}")).finish()
3955    }
3956}
3957
3958#[repr(u32)]
3959#[derive(Clone, Copy, PartialEq, Eq, Debug)]
3960#[doc = "**Chapter**: Initialization"]
3961#[doc = "<br>"]
3962#[doc = "**Description**: Bitmask specifying behavior of the instance"]
3963#[doc = "<br>"]
3964#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
3965#[doc = "<br>"]
3966#[doc = "**Reference**: [`VkInstanceCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateFlagBits.html)"]
3967pub enum InstanceCreateFlagBits {
3968    Placeholder = 0b0,
3969}
3970
3971impl From<InstanceCreateFlagBits> for u32 {
3972    fn from(flag_bits: InstanceCreateFlagBits) -> Self {
3973        flag_bits as u32
3974    }
3975}
3976
3977impl std::ops::BitOr for InstanceCreateFlagBits {
3978    type Output = InstanceCreateFlags;
3979    fn bitor(self, rhs: Self) -> Self::Output {
3980        InstanceCreateFlags(self as u32 | rhs as u32)
3981    }
3982}
3983
3984impl std::ops::BitOr<InstanceCreateFlags> for InstanceCreateFlagBits {
3985    type Output = InstanceCreateFlags;
3986    fn bitor(self, rhs: InstanceCreateFlags) -> Self::Output {
3987        InstanceCreateFlags(self as u32 | rhs.0)
3988    }
3989}
3990
3991impl std::fmt::Display for InstanceCreateFlagBits {
3992    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3993        write!(f, "{self:?}")
3994    }
3995}
3996
3997#[repr(C)]
3998#[derive(Clone, Copy, PartialEq, Eq)]
3999#[doc = "**Chapter**: Devices and Queues"]
4000#[doc = "<br>"]
4001#[doc = "**Description**: Bitmask of VkQueueFlagBits"]
4002#[doc = "<br>"]
4003#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4004#[doc = "<br>"]
4005#[doc = "**Reference**: [`VkQueueFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueueFlags.html)"]
4006#[doc = "<br>"]
4007#[doc = "**Reference**: [`VkQueueFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html)"]
4008pub struct QueueFlags(u32);
4009
4010impl QueueFlags {
4011    #[must_use]
4012    pub const fn empty() -> Self {
4013        Self(0)
4014    }
4015
4016    #[must_use]
4017    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4018        let rhs = rhs.into();
4019        self.0 & rhs.0 == rhs.0
4020    }
4021}
4022
4023impl std::ops::BitAnd for QueueFlags {
4024    type Output = Self;
4025    fn bitand(self, rhs: Self) -> Self::Output {
4026        Self(self.0 & rhs.0)
4027    }
4028}
4029
4030impl From<QueueFlagBits> for QueueFlags {
4031    fn from(flag_bits: QueueFlagBits) -> Self {
4032        Self(flag_bits as u32)
4033    }
4034}
4035
4036impl std::ops::BitOr<QueueFlagBits> for QueueFlags {
4037    type Output = QueueFlags;
4038    fn bitor(self, rhs: QueueFlagBits) -> Self::Output {
4039        Self(self.0 | rhs as u32)
4040    }
4041}
4042
4043impl std::fmt::Display for QueueFlags {
4044    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4045        #[allow(deprecated)]
4046        display_flag_bits_u32(
4047            f,
4048            self.0,
4049            &[
4050                QueueFlagBits::Graphics,
4051                QueueFlagBits::Compute,
4052                QueueFlagBits::Transfer,
4053                QueueFlagBits::SparseBinding,
4054                QueueFlagBits::Protected,
4055            ],
4056        )
4057    }
4058}
4059
4060impl std::fmt::Debug for QueueFlags {
4061    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4062        f.debug_tuple("QueueFlags").field(&format!("{self}")).finish()
4063    }
4064}
4065
4066#[repr(u32)]
4067#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4068#[doc = "**Chapter**: Devices and Queues"]
4069#[doc = "<br>"]
4070#[doc = "**Description**: Bitmask specifying capabilities of queues in a queue family"]
4071#[doc = "<br>"]
4072#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4073#[doc = "<br>"]
4074#[doc = "**Reference**: [`VkQueueFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html)"]
4075pub enum QueueFlagBits {
4076    #[doc = "Translated from: `VK_QUEUE_GRAPHICS_BIT`"]
4077    Graphics = 0b1,
4078    #[doc = "Translated from: `VK_QUEUE_COMPUTE_BIT`"]
4079    Compute = 0b10,
4080    #[doc = "Translated from: `VK_QUEUE_TRANSFER_BIT`"]
4081    Transfer = 0b100,
4082    #[doc = "Translated from: `VK_QUEUE_SPARSE_BINDING_BIT`"]
4083    SparseBinding = 0b1000,
4084    #[doc = "Translated from: `VK_QUEUE_PROTECTED_BIT`"]
4085    Protected = 0b10000,
4086}
4087
4088impl From<QueueFlagBits> for u32 {
4089    fn from(flag_bits: QueueFlagBits) -> Self {
4090        flag_bits as u32
4091    }
4092}
4093
4094impl std::ops::BitOr for QueueFlagBits {
4095    type Output = QueueFlags;
4096    fn bitor(self, rhs: Self) -> Self::Output {
4097        QueueFlags(self as u32 | rhs as u32)
4098    }
4099}
4100
4101impl std::ops::BitOr<QueueFlags> for QueueFlagBits {
4102    type Output = QueueFlags;
4103    fn bitor(self, rhs: QueueFlags) -> Self::Output {
4104        QueueFlags(self as u32 | rhs.0)
4105    }
4106}
4107
4108impl std::fmt::Display for QueueFlagBits {
4109    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4110        write!(f, "{self:?}")
4111    }
4112}
4113
4114#[repr(C)]
4115#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4116#[doc = "**Chapter**: Devices and Queues"]
4117#[doc = "<br>"]
4118#[doc = "**Description**: Reserved for future use"]
4119#[doc = "<br>"]
4120#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4121#[doc = "<br>"]
4122#[doc = "**Reference**: [`VkDeviceCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceCreateFlags.html)"]
4123pub struct DeviceCreateFlags(u32);
4124
4125impl DeviceCreateFlags {
4126    #[must_use]
4127    pub const fn empty() -> Self {
4128        Self(0)
4129    }
4130}
4131
4132#[repr(C)]
4133#[derive(Clone, Copy, PartialEq, Eq)]
4134#[doc = "**Chapter**: Devices and Queues"]
4135#[doc = "<br>"]
4136#[doc = "**Description**: Bitmask of VkDeviceQueueCreateFlagBits"]
4137#[doc = "<br>"]
4138#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4139#[doc = "<br>"]
4140#[doc = "**Reference**: [`VkDeviceQueueCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateFlags.html)"]
4141#[doc = "<br>"]
4142#[doc = "**Reference**: [`VkDeviceQueueCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateFlagBits.html)"]
4143pub struct DeviceQueueCreateFlags(u32);
4144
4145impl DeviceQueueCreateFlags {
4146    #[must_use]
4147    pub const fn empty() -> Self {
4148        Self(0)
4149    }
4150
4151    #[must_use]
4152    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4153        let rhs = rhs.into();
4154        self.0 & rhs.0 == rhs.0
4155    }
4156}
4157
4158impl std::ops::BitAnd for DeviceQueueCreateFlags {
4159    type Output = Self;
4160    fn bitand(self, rhs: Self) -> Self::Output {
4161        Self(self.0 & rhs.0)
4162    }
4163}
4164
4165impl From<DeviceQueueCreateFlagBits> for DeviceQueueCreateFlags {
4166    fn from(flag_bits: DeviceQueueCreateFlagBits) -> Self {
4167        Self(flag_bits as u32)
4168    }
4169}
4170
4171impl std::ops::BitOr<DeviceQueueCreateFlagBits> for DeviceQueueCreateFlags {
4172    type Output = DeviceQueueCreateFlags;
4173    fn bitor(self, rhs: DeviceQueueCreateFlagBits) -> Self::Output {
4174        Self(self.0 | rhs as u32)
4175    }
4176}
4177
4178impl std::fmt::Display for DeviceQueueCreateFlags {
4179    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4180        #[allow(deprecated)]
4181        display_flag_bits_u32(f, self.0, &[DeviceQueueCreateFlagBits::Protected])
4182    }
4183}
4184
4185impl std::fmt::Debug for DeviceQueueCreateFlags {
4186    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4187        f.debug_tuple("DeviceQueueCreateFlags").field(&format!("{self}")).finish()
4188    }
4189}
4190
4191#[repr(u32)]
4192#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4193#[doc = "**Chapter**: Devices and Queues"]
4194#[doc = "<br>"]
4195#[doc = "**Description**: Bitmask specifying behavior of the queue"]
4196#[doc = "<br>"]
4197#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
4198#[doc = "<br>"]
4199#[doc = "**Reference**: [`VkDeviceQueueCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateFlagBits.html)"]
4200pub enum DeviceQueueCreateFlagBits {
4201    #[doc = "Translated from: `VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT`"]
4202    Protected = 0b1,
4203}
4204
4205impl From<DeviceQueueCreateFlagBits> for u32 {
4206    fn from(flag_bits: DeviceQueueCreateFlagBits) -> Self {
4207        flag_bits as u32
4208    }
4209}
4210
4211impl std::ops::BitOr for DeviceQueueCreateFlagBits {
4212    type Output = DeviceQueueCreateFlags;
4213    fn bitor(self, rhs: Self) -> Self::Output {
4214        DeviceQueueCreateFlags(self as u32 | rhs as u32)
4215    }
4216}
4217
4218impl std::ops::BitOr<DeviceQueueCreateFlags> for DeviceQueueCreateFlagBits {
4219    type Output = DeviceQueueCreateFlags;
4220    fn bitor(self, rhs: DeviceQueueCreateFlags) -> Self::Output {
4221        DeviceQueueCreateFlags(self as u32 | rhs.0)
4222    }
4223}
4224
4225impl std::fmt::Display for DeviceQueueCreateFlagBits {
4226    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4227        write!(f, "{self:?}")
4228    }
4229}
4230
4231#[repr(C)]
4232#[derive(Clone, Copy, PartialEq, Eq)]
4233#[doc = "**Chapter**: Command Buffers"]
4234#[doc = "<br>"]
4235#[doc = "**Description**: Bitmask of VkCommandPoolCreateFlagBits"]
4236#[doc = "<br>"]
4237#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4238#[doc = "<br>"]
4239#[doc = "**Reference**: [`VkCommandPoolCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlags.html)"]
4240#[doc = "<br>"]
4241#[doc = "**Reference**: [`VkCommandPoolCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html)"]
4242pub struct CommandPoolCreateFlags(u32);
4243
4244impl CommandPoolCreateFlags {
4245    #[must_use]
4246    pub const fn empty() -> Self {
4247        Self(0)
4248    }
4249
4250    #[must_use]
4251    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4252        let rhs = rhs.into();
4253        self.0 & rhs.0 == rhs.0
4254    }
4255}
4256
4257impl std::ops::BitAnd for CommandPoolCreateFlags {
4258    type Output = Self;
4259    fn bitand(self, rhs: Self) -> Self::Output {
4260        Self(self.0 & rhs.0)
4261    }
4262}
4263
4264impl From<CommandPoolCreateFlagBits> for CommandPoolCreateFlags {
4265    fn from(flag_bits: CommandPoolCreateFlagBits) -> Self {
4266        Self(flag_bits as u32)
4267    }
4268}
4269
4270impl std::ops::BitOr<CommandPoolCreateFlagBits> for CommandPoolCreateFlags {
4271    type Output = CommandPoolCreateFlags;
4272    fn bitor(self, rhs: CommandPoolCreateFlagBits) -> Self::Output {
4273        Self(self.0 | rhs as u32)
4274    }
4275}
4276
4277impl std::fmt::Display for CommandPoolCreateFlags {
4278    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4279        #[allow(deprecated)]
4280        display_flag_bits_u32(
4281            f,
4282            self.0,
4283            &[
4284                CommandPoolCreateFlagBits::Transient,
4285                CommandPoolCreateFlagBits::ResetCommandBuffer,
4286                CommandPoolCreateFlagBits::Protected,
4287            ],
4288        )
4289    }
4290}
4291
4292impl std::fmt::Debug for CommandPoolCreateFlags {
4293    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4294        f.debug_tuple("CommandPoolCreateFlags").field(&format!("{self}")).finish()
4295    }
4296}
4297
4298#[repr(u32)]
4299#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4300#[doc = "**Chapter**: Command Buffers"]
4301#[doc = "<br>"]
4302#[doc = "**Description**: Bitmask specifying usage behavior for a command pool"]
4303#[doc = "<br>"]
4304#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4305#[doc = "<br>"]
4306#[doc = "**Reference**: [`VkCommandPoolCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html)"]
4307pub enum CommandPoolCreateFlagBits {
4308    #[doc = "Translated from: `VK_COMMAND_POOL_CREATE_TRANSIENT_BIT`"]
4309    Transient = 0b1,
4310    #[doc = "Translated from: `VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT`"]
4311    ResetCommandBuffer = 0b10,
4312    #[doc = "Translated from: `VK_COMMAND_POOL_CREATE_PROTECTED_BIT`"]
4313    Protected = 0b100,
4314}
4315
4316impl From<CommandPoolCreateFlagBits> for u32 {
4317    fn from(flag_bits: CommandPoolCreateFlagBits) -> Self {
4318        flag_bits as u32
4319    }
4320}
4321
4322impl std::ops::BitOr for CommandPoolCreateFlagBits {
4323    type Output = CommandPoolCreateFlags;
4324    fn bitor(self, rhs: Self) -> Self::Output {
4325        CommandPoolCreateFlags(self as u32 | rhs as u32)
4326    }
4327}
4328
4329impl std::ops::BitOr<CommandPoolCreateFlags> for CommandPoolCreateFlagBits {
4330    type Output = CommandPoolCreateFlags;
4331    fn bitor(self, rhs: CommandPoolCreateFlags) -> Self::Output {
4332        CommandPoolCreateFlags(self as u32 | rhs.0)
4333    }
4334}
4335
4336impl std::fmt::Display for CommandPoolCreateFlagBits {
4337    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4338        write!(f, "{self:?}")
4339    }
4340}
4341
4342#[repr(C)]
4343#[derive(Clone, Copy, PartialEq, Eq)]
4344#[doc = "**Chapter**: Command Buffers"]
4345#[doc = "<br>"]
4346#[doc = "**Description**: Bitmask of VkCommandPoolResetFlagBits"]
4347#[doc = "<br>"]
4348#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4349#[doc = "<br>"]
4350#[doc = "**Reference**: [`VkCommandPoolResetFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlags.html)"]
4351#[doc = "<br>"]
4352#[doc = "**Reference**: [`VkCommandPoolResetFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlagBits.html)"]
4353pub struct CommandPoolResetFlags(u32);
4354
4355impl CommandPoolResetFlags {
4356    #[must_use]
4357    pub const fn empty() -> Self {
4358        Self(0)
4359    }
4360
4361    #[must_use]
4362    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4363        let rhs = rhs.into();
4364        self.0 & rhs.0 == rhs.0
4365    }
4366}
4367
4368impl std::ops::BitAnd for CommandPoolResetFlags {
4369    type Output = Self;
4370    fn bitand(self, rhs: Self) -> Self::Output {
4371        Self(self.0 & rhs.0)
4372    }
4373}
4374
4375impl From<CommandPoolResetFlagBits> for CommandPoolResetFlags {
4376    fn from(flag_bits: CommandPoolResetFlagBits) -> Self {
4377        Self(flag_bits as u32)
4378    }
4379}
4380
4381impl std::ops::BitOr<CommandPoolResetFlagBits> for CommandPoolResetFlags {
4382    type Output = CommandPoolResetFlags;
4383    fn bitor(self, rhs: CommandPoolResetFlagBits) -> Self::Output {
4384        Self(self.0 | rhs as u32)
4385    }
4386}
4387
4388impl std::fmt::Display for CommandPoolResetFlags {
4389    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4390        #[allow(deprecated)]
4391        display_flag_bits_u32(f, self.0, &[CommandPoolResetFlagBits::ReleaseResources])
4392    }
4393}
4394
4395impl std::fmt::Debug for CommandPoolResetFlags {
4396    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4397        f.debug_tuple("CommandPoolResetFlags").field(&format!("{self}")).finish()
4398    }
4399}
4400
4401#[repr(u32)]
4402#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4403#[doc = "**Chapter**: Command Buffers"]
4404#[doc = "<br>"]
4405#[doc = "**Description**: Bitmask controlling behavior of a command pool reset"]
4406#[doc = "<br>"]
4407#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4408#[doc = "<br>"]
4409#[doc = "**Reference**: [`VkCommandPoolResetFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlagBits.html)"]
4410pub enum CommandPoolResetFlagBits {
4411    #[doc = "Translated from: `VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT`"]
4412    ReleaseResources = 0b1,
4413}
4414
4415impl From<CommandPoolResetFlagBits> for u32 {
4416    fn from(flag_bits: CommandPoolResetFlagBits) -> Self {
4417        flag_bits as u32
4418    }
4419}
4420
4421impl std::ops::BitOr for CommandPoolResetFlagBits {
4422    type Output = CommandPoolResetFlags;
4423    fn bitor(self, rhs: Self) -> Self::Output {
4424        CommandPoolResetFlags(self as u32 | rhs as u32)
4425    }
4426}
4427
4428impl std::ops::BitOr<CommandPoolResetFlags> for CommandPoolResetFlagBits {
4429    type Output = CommandPoolResetFlags;
4430    fn bitor(self, rhs: CommandPoolResetFlags) -> Self::Output {
4431        CommandPoolResetFlags(self as u32 | rhs.0)
4432    }
4433}
4434
4435impl std::fmt::Display for CommandPoolResetFlagBits {
4436    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4437        write!(f, "{self:?}")
4438    }
4439}
4440
4441#[repr(C)]
4442#[derive(Clone, Copy, PartialEq, Eq)]
4443#[doc = "**Chapter**: Command Buffers"]
4444#[doc = "<br>"]
4445#[doc = "**Description**: Bitmask of VkCommandBufferResetFlagBits"]
4446#[doc = "<br>"]
4447#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4448#[doc = "<br>"]
4449#[doc = "**Reference**: [`VkCommandBufferResetFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlags.html)"]
4450#[doc = "<br>"]
4451#[doc = "**Reference**: [`VkCommandBufferResetFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlagBits.html)"]
4452pub struct CommandBufferResetFlags(u32);
4453
4454impl CommandBufferResetFlags {
4455    #[must_use]
4456    pub const fn empty() -> Self {
4457        Self(0)
4458    }
4459
4460    #[must_use]
4461    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4462        let rhs = rhs.into();
4463        self.0 & rhs.0 == rhs.0
4464    }
4465}
4466
4467impl std::ops::BitAnd for CommandBufferResetFlags {
4468    type Output = Self;
4469    fn bitand(self, rhs: Self) -> Self::Output {
4470        Self(self.0 & rhs.0)
4471    }
4472}
4473
4474impl From<CommandBufferResetFlagBits> for CommandBufferResetFlags {
4475    fn from(flag_bits: CommandBufferResetFlagBits) -> Self {
4476        Self(flag_bits as u32)
4477    }
4478}
4479
4480impl std::ops::BitOr<CommandBufferResetFlagBits> for CommandBufferResetFlags {
4481    type Output = CommandBufferResetFlags;
4482    fn bitor(self, rhs: CommandBufferResetFlagBits) -> Self::Output {
4483        Self(self.0 | rhs as u32)
4484    }
4485}
4486
4487impl std::fmt::Display for CommandBufferResetFlags {
4488    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4489        #[allow(deprecated)]
4490        display_flag_bits_u32(f, self.0, &[CommandBufferResetFlagBits::ReleaseResources])
4491    }
4492}
4493
4494impl std::fmt::Debug for CommandBufferResetFlags {
4495    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4496        f.debug_tuple("CommandBufferResetFlags").field(&format!("{self}")).finish()
4497    }
4498}
4499
4500#[repr(u32)]
4501#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4502#[doc = "**Chapter**: Command Buffers"]
4503#[doc = "<br>"]
4504#[doc = "**Description**: Bitmask controlling behavior of a command buffer reset"]
4505#[doc = "<br>"]
4506#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4507#[doc = "<br>"]
4508#[doc = "**Reference**: [`VkCommandBufferResetFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlagBits.html)"]
4509pub enum CommandBufferResetFlagBits {
4510    #[doc = "Translated from: `VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT`"]
4511    ReleaseResources = 0b1,
4512}
4513
4514impl From<CommandBufferResetFlagBits> for u32 {
4515    fn from(flag_bits: CommandBufferResetFlagBits) -> Self {
4516        flag_bits as u32
4517    }
4518}
4519
4520impl std::ops::BitOr for CommandBufferResetFlagBits {
4521    type Output = CommandBufferResetFlags;
4522    fn bitor(self, rhs: Self) -> Self::Output {
4523        CommandBufferResetFlags(self as u32 | rhs as u32)
4524    }
4525}
4526
4527impl std::ops::BitOr<CommandBufferResetFlags> for CommandBufferResetFlagBits {
4528    type Output = CommandBufferResetFlags;
4529    fn bitor(self, rhs: CommandBufferResetFlags) -> Self::Output {
4530        CommandBufferResetFlags(self as u32 | rhs.0)
4531    }
4532}
4533
4534impl std::fmt::Display for CommandBufferResetFlagBits {
4535    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4536        write!(f, "{self:?}")
4537    }
4538}
4539
4540#[repr(C)]
4541#[derive(Clone, Copy, PartialEq, Eq)]
4542#[doc = "**Chapter**: Command Buffers"]
4543#[doc = "<br>"]
4544#[doc = "**Description**: Bitmask of VkCommandBufferUsageFlagBits"]
4545#[doc = "<br>"]
4546#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4547#[doc = "<br>"]
4548#[doc = "**Reference**: [`VkCommandBufferUsageFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlags.html)"]
4549#[doc = "<br>"]
4550#[doc = "**Reference**: [`VkCommandBufferUsageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html)"]
4551pub struct CommandBufferUsageFlags(u32);
4552
4553impl CommandBufferUsageFlags {
4554    #[must_use]
4555    pub const fn empty() -> Self {
4556        Self(0)
4557    }
4558
4559    #[must_use]
4560    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4561        let rhs = rhs.into();
4562        self.0 & rhs.0 == rhs.0
4563    }
4564}
4565
4566impl std::ops::BitAnd for CommandBufferUsageFlags {
4567    type Output = Self;
4568    fn bitand(self, rhs: Self) -> Self::Output {
4569        Self(self.0 & rhs.0)
4570    }
4571}
4572
4573impl From<CommandBufferUsageFlagBits> for CommandBufferUsageFlags {
4574    fn from(flag_bits: CommandBufferUsageFlagBits) -> Self {
4575        Self(flag_bits as u32)
4576    }
4577}
4578
4579impl std::ops::BitOr<CommandBufferUsageFlagBits> for CommandBufferUsageFlags {
4580    type Output = CommandBufferUsageFlags;
4581    fn bitor(self, rhs: CommandBufferUsageFlagBits) -> Self::Output {
4582        Self(self.0 | rhs as u32)
4583    }
4584}
4585
4586impl std::fmt::Display for CommandBufferUsageFlags {
4587    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4588        #[allow(deprecated)]
4589        display_flag_bits_u32(
4590            f,
4591            self.0,
4592            &[
4593                CommandBufferUsageFlagBits::OneTimeSubmit,
4594                CommandBufferUsageFlagBits::RenderPassContinue,
4595                CommandBufferUsageFlagBits::SimultaneousUse,
4596            ],
4597        )
4598    }
4599}
4600
4601impl std::fmt::Debug for CommandBufferUsageFlags {
4602    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4603        f.debug_tuple("CommandBufferUsageFlags").field(&format!("{self}")).finish()
4604    }
4605}
4606
4607#[repr(u32)]
4608#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4609#[doc = "**Chapter**: Command Buffers"]
4610#[doc = "<br>"]
4611#[doc = "**Description**: Bitmask specifying usage behavior for command buffer"]
4612#[doc = "<br>"]
4613#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
4614#[doc = "<br>"]
4615#[doc = "**Reference**: [`VkCommandBufferUsageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html)"]
4616pub enum CommandBufferUsageFlagBits {
4617    #[doc = "Translated from: `VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT`"]
4618    OneTimeSubmit = 0b1,
4619    #[doc = "Translated from: `VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT`"]
4620    RenderPassContinue = 0b10,
4621    #[doc = "Translated from: `VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT`"]
4622    SimultaneousUse = 0b100,
4623}
4624
4625impl From<CommandBufferUsageFlagBits> for u32 {
4626    fn from(flag_bits: CommandBufferUsageFlagBits) -> Self {
4627        flag_bits as u32
4628    }
4629}
4630
4631impl std::ops::BitOr for CommandBufferUsageFlagBits {
4632    type Output = CommandBufferUsageFlags;
4633    fn bitor(self, rhs: Self) -> Self::Output {
4634        CommandBufferUsageFlags(self as u32 | rhs as u32)
4635    }
4636}
4637
4638impl std::ops::BitOr<CommandBufferUsageFlags> for CommandBufferUsageFlagBits {
4639    type Output = CommandBufferUsageFlags;
4640    fn bitor(self, rhs: CommandBufferUsageFlags) -> Self::Output {
4641        CommandBufferUsageFlags(self as u32 | rhs.0)
4642    }
4643}
4644
4645impl std::fmt::Display for CommandBufferUsageFlagBits {
4646    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4647        write!(f, "{self:?}")
4648    }
4649}
4650
4651#[repr(C)]
4652#[derive(Clone, Copy, PartialEq, Eq)]
4653#[doc = "**Chapter**: Command Buffers"]
4654#[doc = "<br>"]
4655#[doc = "**Description**: Bitmask of VkSubmitFlagBits"]
4656#[doc = "<br>"]
4657#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
4658#[doc = "<br>"]
4659#[doc = "**Reference**: [`VkSubmitFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubmitFlags.html)"]
4660#[doc = "<br>"]
4661#[doc = "**Reference**: [`VkSubmitFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubmitFlagBits.html)"]
4662pub struct SubmitFlags(u32);
4663
4664impl SubmitFlags {
4665    #[must_use]
4666    pub const fn empty() -> Self {
4667        Self(0)
4668    }
4669
4670    #[must_use]
4671    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4672        let rhs = rhs.into();
4673        self.0 & rhs.0 == rhs.0
4674    }
4675}
4676
4677impl std::ops::BitAnd for SubmitFlags {
4678    type Output = Self;
4679    fn bitand(self, rhs: Self) -> Self::Output {
4680        Self(self.0 & rhs.0)
4681    }
4682}
4683
4684impl From<SubmitFlagBits> for SubmitFlags {
4685    fn from(flag_bits: SubmitFlagBits) -> Self {
4686        Self(flag_bits as u32)
4687    }
4688}
4689
4690impl std::ops::BitOr<SubmitFlagBits> for SubmitFlags {
4691    type Output = SubmitFlags;
4692    fn bitor(self, rhs: SubmitFlagBits) -> Self::Output {
4693        Self(self.0 | rhs as u32)
4694    }
4695}
4696
4697impl std::fmt::Display for SubmitFlags {
4698    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4699        #[allow(deprecated)]
4700        display_flag_bits_u32(f, self.0, &[SubmitFlagBits::Protected])
4701    }
4702}
4703
4704impl std::fmt::Debug for SubmitFlags {
4705    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4706        f.debug_tuple("SubmitFlags").field(&format!("{self}")).finish()
4707    }
4708}
4709
4710#[repr(u32)]
4711#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4712#[doc = "**Chapter**: Command Buffers"]
4713#[doc = "<br>"]
4714#[doc = "**Description**: Bitmask specifying behavior of a submission"]
4715#[doc = "<br>"]
4716#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
4717#[doc = "<br>"]
4718#[doc = "**Reference**: [`VkSubmitFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubmitFlagBits.html)"]
4719pub enum SubmitFlagBits {
4720    #[doc = "Translated from: `VK_SUBMIT_PROTECTED_BIT`"]
4721    Protected = 0b1,
4722}
4723
4724impl From<SubmitFlagBits> for u32 {
4725    fn from(flag_bits: SubmitFlagBits) -> Self {
4726        flag_bits as u32
4727    }
4728}
4729
4730impl std::ops::BitOr for SubmitFlagBits {
4731    type Output = SubmitFlags;
4732    fn bitor(self, rhs: Self) -> Self::Output {
4733        SubmitFlags(self as u32 | rhs as u32)
4734    }
4735}
4736
4737impl std::ops::BitOr<SubmitFlags> for SubmitFlagBits {
4738    type Output = SubmitFlags;
4739    fn bitor(self, rhs: SubmitFlags) -> Self::Output {
4740        SubmitFlags(self as u32 | rhs.0)
4741    }
4742}
4743
4744impl std::fmt::Display for SubmitFlagBits {
4745    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4746        write!(f, "{self:?}")
4747    }
4748}
4749
4750#[repr(C)]
4751#[derive(Clone, Copy, PartialEq, Eq)]
4752#[doc = "**Chapter**: Synchronization and Cache Control"]
4753#[doc = "<br>"]
4754#[doc = "**Description**: 64-bit mask of pipeline stage flags"]
4755#[doc = "<br>"]
4756#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
4757#[doc = "<br>"]
4758#[doc = "**Reference**: [`VkPipelineStageFlags2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlags2.html)"]
4759#[doc = "<br>"]
4760#[doc = "**Reference**: [`VkPipelineStageFlagBits2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits2.html)"]
4761pub struct PipelineStageFlags2(u64);
4762
4763impl PipelineStageFlags2 {
4764    #[must_use]
4765    pub const fn empty() -> Self {
4766        Self(0)
4767    }
4768
4769    #[must_use]
4770    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4771        let rhs = rhs.into();
4772        self.0 & rhs.0 == rhs.0
4773    }
4774}
4775
4776impl std::ops::BitAnd for PipelineStageFlags2 {
4777    type Output = Self;
4778    fn bitand(self, rhs: Self) -> Self::Output {
4779        Self(self.0 & rhs.0)
4780    }
4781}
4782
4783impl From<PipelineStageFlagBits2> for PipelineStageFlags2 {
4784    fn from(flag_bits: PipelineStageFlagBits2) -> Self {
4785        Self(flag_bits as u64)
4786    }
4787}
4788
4789impl std::ops::BitOr<PipelineStageFlagBits2> for PipelineStageFlags2 {
4790    type Output = PipelineStageFlags2;
4791    fn bitor(self, rhs: PipelineStageFlagBits2) -> Self::Output {
4792        Self(self.0 | rhs as u64)
4793    }
4794}
4795
4796impl std::fmt::Display for PipelineStageFlags2 {
4797    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4798        #[allow(deprecated)]
4799        display_flag_bits_u64(
4800            f,
4801            self.0,
4802            &[
4803                PipelineStageFlagBits2::None,
4804                PipelineStageFlagBits2::TopOfPipe,
4805                PipelineStageFlagBits2::DrawIndirect,
4806                PipelineStageFlagBits2::VertexInput,
4807                PipelineStageFlagBits2::VertexShader,
4808                PipelineStageFlagBits2::TessellationControlShader,
4809                PipelineStageFlagBits2::TessellationEvaluationShader,
4810                PipelineStageFlagBits2::GeometryShader,
4811                PipelineStageFlagBits2::FragmentShader,
4812                PipelineStageFlagBits2::EarlyFragmentTests,
4813                PipelineStageFlagBits2::LateFragmentTests,
4814                PipelineStageFlagBits2::ColorAttachmentOutput,
4815                PipelineStageFlagBits2::ComputeShader,
4816                PipelineStageFlagBits2::AllTransfer,
4817                PipelineStageFlagBits2::BottomOfPipe,
4818                PipelineStageFlagBits2::Host,
4819                PipelineStageFlagBits2::AllGraphics,
4820                PipelineStageFlagBits2::AllCommands,
4821                PipelineStageFlagBits2::Copy,
4822                PipelineStageFlagBits2::Resolve,
4823                PipelineStageFlagBits2::Blit,
4824                PipelineStageFlagBits2::Clear,
4825                PipelineStageFlagBits2::IndexInput,
4826                PipelineStageFlagBits2::VertexAttributeInput,
4827                PipelineStageFlagBits2::PreRasterizationShaders,
4828                PipelineStageFlagBits2::TransformFeedbackEXT,
4829                PipelineStageFlagBits2::ConditionalRenderingEXT,
4830                PipelineStageFlagBits2::CommandPreprocessNv,
4831                PipelineStageFlagBits2::FragmentShadingRateAttachmentKHR,
4832                PipelineStageFlagBits2::AccelerationStructureBuildKHR,
4833                PipelineStageFlagBits2::RayTracingShaderKHR,
4834                PipelineStageFlagBits2::FragmentDensityProcessEXT,
4835                PipelineStageFlagBits2::TaskShaderEXT,
4836                PipelineStageFlagBits2::MeshShaderEXT,
4837                PipelineStageFlagBits2::AccelerationStructureCopyKHR,
4838            ],
4839        )
4840    }
4841}
4842
4843impl std::fmt::Debug for PipelineStageFlags2 {
4844    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4845        f.debug_tuple("PipelineStageFlags2").field(&format!("{self}")).finish()
4846    }
4847}
4848
4849#[repr(u64)]
4850#[derive(Clone, Copy, PartialEq, Eq, Debug)]
4851#[doc = "**Chapter**: Synchronization and Cache Control"]
4852#[doc = "<br>"]
4853#[doc = "**Description**: Pipeline stage flags for VkPipelineStageFlags2"]
4854#[doc = "<br>"]
4855#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
4856#[doc = "<br>"]
4857#[doc = "**Reference**: [`VkPipelineStageFlagBits2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits2.html)"]
4858pub enum PipelineStageFlagBits2 {
4859    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_NONE`"]
4860    None = 0,
4861    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT`"]
4862    #[deprecated(note = "Replace with: `vk::PipelineStageFlagBits2::None`")]
4863    TopOfPipe = 0b1,
4864    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT`"]
4865    DrawIndirect = 0b10,
4866    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT`"]
4867    VertexInput = 0b100,
4868    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT`"]
4869    VertexShader = 0b1000,
4870    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT`"]
4871    TessellationControlShader = 0b10000,
4872    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT`"]
4873    TessellationEvaluationShader = 0b100000,
4874    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT`"]
4875    GeometryShader = 0b1000000,
4876    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT`"]
4877    FragmentShader = 0b10000000,
4878    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT`"]
4879    EarlyFragmentTests = 0b100000000,
4880    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT`"]
4881    LateFragmentTests = 0b1000000000,
4882    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT`"]
4883    ColorAttachmentOutput = 0b10000000000,
4884    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT`"]
4885    ComputeShader = 0b100000000000,
4886    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT`"]
4887    AllTransfer = 0b1000000000000,
4888    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT`"]
4889    #[deprecated(note = "Replace with: `vk::PipelineStageFlagBits2::AllCommands`")]
4890    BottomOfPipe = 0b10000000000000,
4891    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_HOST_BIT`"]
4892    Host = 0b100000000000000,
4893    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT`"]
4894    AllGraphics = 0b1000000000000000,
4895    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT`"]
4896    AllCommands = 0b10000000000000000,
4897    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_COPY_BIT`"]
4898    Copy = 0b100000000000000000000000000000000,
4899    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_RESOLVE_BIT`"]
4900    Resolve = 0b1000000000000000000000000000000000,
4901    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_BLIT_BIT`"]
4902    Blit = 0b10000000000000000000000000000000000,
4903    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_CLEAR_BIT`"]
4904    Clear = 0b100000000000000000000000000000000000,
4905    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT`"]
4906    IndexInput = 0b1000000000000000000000000000000000000,
4907    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT`"]
4908    VertexAttributeInput = 0b10000000000000000000000000000000000000,
4909    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT`"]
4910    PreRasterizationShaders = 0b100000000000000000000000000000000000000,
4911    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT`"]
4912    TransformFeedbackEXT = 0b1000000000000000000000000,
4913    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT`"]
4914    ConditionalRenderingEXT = 0b1000000000000000000,
4915    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV`"]
4916    CommandPreprocessNv = 0b100000000000000000,
4917    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR`"]
4918    FragmentShadingRateAttachmentKHR = 0b10000000000000000000000,
4919    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR`"]
4920    AccelerationStructureBuildKHR = 0b10000000000000000000000000,
4921    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR`"]
4922    RayTracingShaderKHR = 0b1000000000000000000000,
4923    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT`"]
4924    FragmentDensityProcessEXT = 0b100000000000000000000000,
4925    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT`"]
4926    TaskShaderEXT = 0b10000000000000000000,
4927    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT`"]
4928    MeshShaderEXT = 0b100000000000000000000,
4929    #[doc = "Translated from: `VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR`"]
4930    AccelerationStructureCopyKHR = 0b10000000000000000000000000000,
4931}
4932
4933impl From<PipelineStageFlagBits2> for u64 {
4934    fn from(flag_bits: PipelineStageFlagBits2) -> Self {
4935        flag_bits as u64
4936    }
4937}
4938
4939impl std::ops::BitOr for PipelineStageFlagBits2 {
4940    type Output = PipelineStageFlags2;
4941    fn bitor(self, rhs: Self) -> Self::Output {
4942        PipelineStageFlags2(self as u64 | rhs as u64)
4943    }
4944}
4945
4946impl std::ops::BitOr<PipelineStageFlags2> for PipelineStageFlagBits2 {
4947    type Output = PipelineStageFlags2;
4948    fn bitor(self, rhs: PipelineStageFlags2) -> Self::Output {
4949        PipelineStageFlags2(self as u64 | rhs.0)
4950    }
4951}
4952
4953impl std::fmt::Display for PipelineStageFlagBits2 {
4954    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4955        write!(f, "{self:?}")
4956    }
4957}
4958
4959#[repr(C)]
4960#[derive(Clone, Copy, PartialEq, Eq)]
4961#[doc = "**Chapter**: Synchronization and Cache Control"]
4962#[doc = "<br>"]
4963#[doc = "**Description**: 64-bit mask of access flags"]
4964#[doc = "<br>"]
4965#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
4966#[doc = "<br>"]
4967#[doc = "**Reference**: [`VkAccessFlags2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags2.html)"]
4968#[doc = "<br>"]
4969#[doc = "**Reference**: [`VkAccessFlagBits2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlagBits2.html)"]
4970pub struct AccessFlags2(u64);
4971
4972impl AccessFlags2 {
4973    #[must_use]
4974    pub const fn empty() -> Self {
4975        Self(0)
4976    }
4977
4978    #[must_use]
4979    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
4980        let rhs = rhs.into();
4981        self.0 & rhs.0 == rhs.0
4982    }
4983}
4984
4985impl std::ops::BitAnd for AccessFlags2 {
4986    type Output = Self;
4987    fn bitand(self, rhs: Self) -> Self::Output {
4988        Self(self.0 & rhs.0)
4989    }
4990}
4991
4992impl From<AccessFlagBits2> for AccessFlags2 {
4993    fn from(flag_bits: AccessFlagBits2) -> Self {
4994        Self(flag_bits as u64)
4995    }
4996}
4997
4998impl std::ops::BitOr<AccessFlagBits2> for AccessFlags2 {
4999    type Output = AccessFlags2;
5000    fn bitor(self, rhs: AccessFlagBits2) -> Self::Output {
5001        Self(self.0 | rhs as u64)
5002    }
5003}
5004
5005impl std::fmt::Display for AccessFlags2 {
5006    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5007        #[allow(deprecated)]
5008        display_flag_bits_u64(
5009            f,
5010            self.0,
5011            &[
5012                AccessFlagBits2::None,
5013                AccessFlagBits2::IndirectCommandRead,
5014                AccessFlagBits2::IndexRead,
5015                AccessFlagBits2::VertexAttributeRead,
5016                AccessFlagBits2::UniformRead,
5017                AccessFlagBits2::InputAttachmentRead,
5018                AccessFlagBits2::ShaderRead,
5019                AccessFlagBits2::ShaderWrite,
5020                AccessFlagBits2::ColorAttachmentRead,
5021                AccessFlagBits2::ColorAttachmentWrite,
5022                AccessFlagBits2::DepthStencilAttachmentRead,
5023                AccessFlagBits2::DepthStencilAttachmentWrite,
5024                AccessFlagBits2::TransferRead,
5025                AccessFlagBits2::TransferWrite,
5026                AccessFlagBits2::HostRead,
5027                AccessFlagBits2::HostWrite,
5028                AccessFlagBits2::MemoryRead,
5029                AccessFlagBits2::MemoryWrite,
5030                AccessFlagBits2::ShaderSampledRead,
5031                AccessFlagBits2::ShaderStorageRead,
5032                AccessFlagBits2::ShaderStorageWrite,
5033                AccessFlagBits2::TransformFeedbackWriteEXT,
5034                AccessFlagBits2::TransformFeedbackCounterReadEXT,
5035                AccessFlagBits2::TransformFeedbackCounterWriteEXT,
5036                AccessFlagBits2::ConditionalRenderingReadEXT,
5037                AccessFlagBits2::CommandPreprocessReadNv,
5038                AccessFlagBits2::CommandPreprocessWriteNv,
5039                AccessFlagBits2::FragmentShadingRateAttachmentReadKHR,
5040                AccessFlagBits2::AccelerationStructureReadKHR,
5041                AccessFlagBits2::AccelerationStructureWriteKHR,
5042                AccessFlagBits2::FragmentDensityMapReadEXT,
5043                AccessFlagBits2::ColorAttachmentReadNoncoherentEXT,
5044                AccessFlagBits2::DescriptorBufferReadEXT,
5045                AccessFlagBits2::ShaderBindingTableReadKHR,
5046            ],
5047        )
5048    }
5049}
5050
5051impl std::fmt::Debug for AccessFlags2 {
5052    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5053        f.debug_tuple("AccessFlags2").field(&format!("{self}")).finish()
5054    }
5055}
5056
5057#[repr(u64)]
5058#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5059#[doc = "**Chapter**: Synchronization and Cache Control"]
5060#[doc = "<br>"]
5061#[doc = "**Description**: Access flags for VkAccessFlags2"]
5062#[doc = "<br>"]
5063#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
5064#[doc = "<br>"]
5065#[doc = "**Reference**: [`VkAccessFlagBits2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlagBits2.html)"]
5066pub enum AccessFlagBits2 {
5067    #[doc = "Translated from: `VK_ACCESS_2_NONE`"]
5068    None = 0,
5069    #[doc = "Translated from: `VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT`"]
5070    IndirectCommandRead = 0b1,
5071    #[doc = "Translated from: `VK_ACCESS_2_INDEX_READ_BIT`"]
5072    IndexRead = 0b10,
5073    #[doc = "Translated from: `VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT`"]
5074    VertexAttributeRead = 0b100,
5075    #[doc = "Translated from: `VK_ACCESS_2_UNIFORM_READ_BIT`"]
5076    UniformRead = 0b1000,
5077    #[doc = "Translated from: `VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT`"]
5078    InputAttachmentRead = 0b10000,
5079    #[doc = "Translated from: `VK_ACCESS_2_SHADER_READ_BIT`"]
5080    ShaderRead = 0b100000,
5081    #[doc = "Translated from: `VK_ACCESS_2_SHADER_WRITE_BIT`"]
5082    ShaderWrite = 0b1000000,
5083    #[doc = "Translated from: `VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT`"]
5084    ColorAttachmentRead = 0b10000000,
5085    #[doc = "Translated from: `VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT`"]
5086    ColorAttachmentWrite = 0b100000000,
5087    #[doc = "Translated from: `VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT`"]
5088    DepthStencilAttachmentRead = 0b1000000000,
5089    #[doc = "Translated from: `VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT`"]
5090    DepthStencilAttachmentWrite = 0b10000000000,
5091    #[doc = "Translated from: `VK_ACCESS_2_TRANSFER_READ_BIT`"]
5092    TransferRead = 0b100000000000,
5093    #[doc = "Translated from: `VK_ACCESS_2_TRANSFER_WRITE_BIT`"]
5094    TransferWrite = 0b1000000000000,
5095    #[doc = "Translated from: `VK_ACCESS_2_HOST_READ_BIT`"]
5096    HostRead = 0b10000000000000,
5097    #[doc = "Translated from: `VK_ACCESS_2_HOST_WRITE_BIT`"]
5098    HostWrite = 0b100000000000000,
5099    #[doc = "Translated from: `VK_ACCESS_2_MEMORY_READ_BIT`"]
5100    MemoryRead = 0b1000000000000000,
5101    #[doc = "Translated from: `VK_ACCESS_2_MEMORY_WRITE_BIT`"]
5102    MemoryWrite = 0b10000000000000000,
5103    #[doc = "Translated from: `VK_ACCESS_2_SHADER_SAMPLED_READ_BIT`"]
5104    ShaderSampledRead = 0b100000000000000000000000000000000,
5105    #[doc = "Translated from: `VK_ACCESS_2_SHADER_STORAGE_READ_BIT`"]
5106    ShaderStorageRead = 0b1000000000000000000000000000000000,
5107    #[doc = "Translated from: `VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT`"]
5108    ShaderStorageWrite = 0b10000000000000000000000000000000000,
5109    #[doc = "Translated from: `VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT`"]
5110    TransformFeedbackWriteEXT = 0b10000000000000000000000000,
5111    #[doc = "Translated from: `VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT`"]
5112    TransformFeedbackCounterReadEXT = 0b100000000000000000000000000,
5113    #[doc = "Translated from: `VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT`"]
5114    TransformFeedbackCounterWriteEXT = 0b1000000000000000000000000000,
5115    #[doc = "Translated from: `VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT`"]
5116    ConditionalRenderingReadEXT = 0b100000000000000000000,
5117    #[doc = "Translated from: `VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV`"]
5118    CommandPreprocessReadNv = 0b100000000000000000,
5119    #[doc = "Translated from: `VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV`"]
5120    CommandPreprocessWriteNv = 0b1000000000000000000,
5121    #[doc = "Translated from: `VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR`"]
5122    FragmentShadingRateAttachmentReadKHR = 0b100000000000000000000000,
5123    #[doc = "Translated from: `VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR`"]
5124    AccelerationStructureReadKHR = 0b1000000000000000000000,
5125    #[doc = "Translated from: `VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR`"]
5126    AccelerationStructureWriteKHR = 0b10000000000000000000000,
5127    #[doc = "Translated from: `VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT`"]
5128    FragmentDensityMapReadEXT = 0b1000000000000000000000000,
5129    #[doc = "Translated from: `VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT`"]
5130    ColorAttachmentReadNoncoherentEXT = 0b10000000000000000000,
5131    #[doc = "Translated from: `VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT`"]
5132    DescriptorBufferReadEXT = 0b100000000000000000000000000000000000000000,
5133    #[doc = "Translated from: `VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR`"]
5134    ShaderBindingTableReadKHR = 0b10000000000000000000000000000000000000000,
5135}
5136
5137impl From<AccessFlagBits2> for u64 {
5138    fn from(flag_bits: AccessFlagBits2) -> Self {
5139        flag_bits as u64
5140    }
5141}
5142
5143impl std::ops::BitOr for AccessFlagBits2 {
5144    type Output = AccessFlags2;
5145    fn bitor(self, rhs: Self) -> Self::Output {
5146        AccessFlags2(self as u64 | rhs as u64)
5147    }
5148}
5149
5150impl std::ops::BitOr<AccessFlags2> for AccessFlagBits2 {
5151    type Output = AccessFlags2;
5152    fn bitor(self, rhs: AccessFlags2) -> Self::Output {
5153        AccessFlags2(self as u64 | rhs.0)
5154    }
5155}
5156
5157impl std::fmt::Display for AccessFlagBits2 {
5158    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5159        write!(f, "{self:?}")
5160    }
5161}
5162
5163#[repr(C)]
5164#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5165#[doc = "**Chapter**: Synchronization and Cache Control"]
5166#[doc = "<br>"]
5167#[doc = "**Description**: Reserved for future use"]
5168#[doc = "<br>"]
5169#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5170#[doc = "<br>"]
5171#[doc = "**Reference**: [`VkSemaphoreCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreCreateFlags.html)"]
5172pub struct SemaphoreCreateFlags(u32);
5173
5174impl SemaphoreCreateFlags {
5175    #[must_use]
5176    pub const fn empty() -> Self {
5177        Self(0)
5178    }
5179}
5180
5181#[repr(C)]
5182#[derive(Clone, Copy, PartialEq, Eq)]
5183#[doc = "**Chapter**: Synchronization and Cache Control"]
5184#[doc = "<br>"]
5185#[doc = "**Description**: Bitmask of VkSemaphoreWaitFlagBits"]
5186#[doc = "<br>"]
5187#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
5188#[doc = "<br>"]
5189#[doc = "**Reference**: [`VkSemaphoreWaitFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreWaitFlags.html)"]
5190#[doc = "<br>"]
5191#[doc = "**Reference**: [`VkSemaphoreWaitFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreWaitFlagBits.html)"]
5192pub struct SemaphoreWaitFlags(u32);
5193
5194impl SemaphoreWaitFlags {
5195    #[must_use]
5196    pub const fn empty() -> Self {
5197        Self(0)
5198    }
5199
5200    #[must_use]
5201    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5202        let rhs = rhs.into();
5203        self.0 & rhs.0 == rhs.0
5204    }
5205}
5206
5207impl std::ops::BitAnd for SemaphoreWaitFlags {
5208    type Output = Self;
5209    fn bitand(self, rhs: Self) -> Self::Output {
5210        Self(self.0 & rhs.0)
5211    }
5212}
5213
5214impl From<SemaphoreWaitFlagBits> for SemaphoreWaitFlags {
5215    fn from(flag_bits: SemaphoreWaitFlagBits) -> Self {
5216        Self(flag_bits as u32)
5217    }
5218}
5219
5220impl std::ops::BitOr<SemaphoreWaitFlagBits> for SemaphoreWaitFlags {
5221    type Output = SemaphoreWaitFlags;
5222    fn bitor(self, rhs: SemaphoreWaitFlagBits) -> Self::Output {
5223        Self(self.0 | rhs as u32)
5224    }
5225}
5226
5227impl std::fmt::Display for SemaphoreWaitFlags {
5228    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5229        #[allow(deprecated)]
5230        display_flag_bits_u32(f, self.0, &[SemaphoreWaitFlagBits::Any])
5231    }
5232}
5233
5234impl std::fmt::Debug for SemaphoreWaitFlags {
5235    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5236        f.debug_tuple("SemaphoreWaitFlags").field(&format!("{self}")).finish()
5237    }
5238}
5239
5240#[repr(u32)]
5241#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5242#[doc = "**Chapter**: Synchronization and Cache Control"]
5243#[doc = "<br>"]
5244#[doc = "**Description**: Bitmask specifying additional parameters of a semaphore wait operation"]
5245#[doc = "<br>"]
5246#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
5247#[doc = "<br>"]
5248#[doc = "**Reference**: [`VkSemaphoreWaitFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreWaitFlagBits.html)"]
5249pub enum SemaphoreWaitFlagBits {
5250    #[doc = "Translated from: `VK_SEMAPHORE_WAIT_ANY_BIT`"]
5251    Any = 0b1,
5252}
5253
5254impl From<SemaphoreWaitFlagBits> for u32 {
5255    fn from(flag_bits: SemaphoreWaitFlagBits) -> Self {
5256        flag_bits as u32
5257    }
5258}
5259
5260impl std::ops::BitOr for SemaphoreWaitFlagBits {
5261    type Output = SemaphoreWaitFlags;
5262    fn bitor(self, rhs: Self) -> Self::Output {
5263        SemaphoreWaitFlags(self as u32 | rhs as u32)
5264    }
5265}
5266
5267impl std::ops::BitOr<SemaphoreWaitFlags> for SemaphoreWaitFlagBits {
5268    type Output = SemaphoreWaitFlags;
5269    fn bitor(self, rhs: SemaphoreWaitFlags) -> Self::Output {
5270        SemaphoreWaitFlags(self as u32 | rhs.0)
5271    }
5272}
5273
5274impl std::fmt::Display for SemaphoreWaitFlagBits {
5275    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5276        write!(f, "{self:?}")
5277    }
5278}
5279
5280#[repr(C)]
5281#[derive(Clone, Copy, PartialEq, Eq)]
5282#[doc = "**Chapter**: Synchronization and Cache Control"]
5283#[doc = "<br>"]
5284#[doc = "**Description**: Bitmask of VkDependencyFlagBits"]
5285#[doc = "<br>"]
5286#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5287#[doc = "<br>"]
5288#[doc = "**Reference**: [`VkDependencyFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDependencyFlags.html)"]
5289#[doc = "<br>"]
5290#[doc = "**Reference**: [`VkDependencyFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDependencyFlagBits.html)"]
5291pub struct DependencyFlags(u32);
5292
5293impl DependencyFlags {
5294    #[must_use]
5295    pub const fn empty() -> Self {
5296        Self(0)
5297    }
5298
5299    #[must_use]
5300    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5301        let rhs = rhs.into();
5302        self.0 & rhs.0 == rhs.0
5303    }
5304}
5305
5306impl std::ops::BitAnd for DependencyFlags {
5307    type Output = Self;
5308    fn bitand(self, rhs: Self) -> Self::Output {
5309        Self(self.0 & rhs.0)
5310    }
5311}
5312
5313impl From<DependencyFlagBits> for DependencyFlags {
5314    fn from(flag_bits: DependencyFlagBits) -> Self {
5315        Self(flag_bits as u32)
5316    }
5317}
5318
5319impl std::ops::BitOr<DependencyFlagBits> for DependencyFlags {
5320    type Output = DependencyFlags;
5321    fn bitor(self, rhs: DependencyFlagBits) -> Self::Output {
5322        Self(self.0 | rhs as u32)
5323    }
5324}
5325
5326impl std::fmt::Display for DependencyFlags {
5327    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5328        #[allow(deprecated)]
5329        display_flag_bits_u32(f, self.0, &[DependencyFlagBits::ByRegion, DependencyFlagBits::DeviceGroup, DependencyFlagBits::ViewLocal])
5330    }
5331}
5332
5333impl std::fmt::Debug for DependencyFlags {
5334    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5335        f.debug_tuple("DependencyFlags").field(&format!("{self}")).finish()
5336    }
5337}
5338
5339#[repr(u32)]
5340#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5341#[doc = "**Chapter**: Synchronization and Cache Control"]
5342#[doc = "<br>"]
5343#[doc = "**Description**: Bitmask specifying how execution and memory dependencies are formed"]
5344#[doc = "<br>"]
5345#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5346#[doc = "<br>"]
5347#[doc = "**Reference**: [`VkDependencyFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDependencyFlagBits.html)"]
5348pub enum DependencyFlagBits {
5349    #[doc = "Translated from: `VK_DEPENDENCY_BY_REGION_BIT`"]
5350    ByRegion = 0b1,
5351    #[doc = "Translated from: `VK_DEPENDENCY_DEVICE_GROUP_BIT`"]
5352    DeviceGroup = 0b100,
5353    #[doc = "Translated from: `VK_DEPENDENCY_VIEW_LOCAL_BIT`"]
5354    ViewLocal = 0b10,
5355}
5356
5357impl From<DependencyFlagBits> for u32 {
5358    fn from(flag_bits: DependencyFlagBits) -> Self {
5359        flag_bits as u32
5360    }
5361}
5362
5363impl std::ops::BitOr for DependencyFlagBits {
5364    type Output = DependencyFlags;
5365    fn bitor(self, rhs: Self) -> Self::Output {
5366        DependencyFlags(self as u32 | rhs as u32)
5367    }
5368}
5369
5370impl std::ops::BitOr<DependencyFlags> for DependencyFlagBits {
5371    type Output = DependencyFlags;
5372    fn bitor(self, rhs: DependencyFlags) -> Self::Output {
5373        DependencyFlags(self as u32 | rhs.0)
5374    }
5375}
5376
5377impl std::fmt::Display for DependencyFlagBits {
5378    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5379        write!(f, "{self:?}")
5380    }
5381}
5382
5383#[repr(C)]
5384#[derive(Clone, Copy, PartialEq, Eq)]
5385#[doc = "**Chapter**: Render Pass"]
5386#[doc = "<br>"]
5387#[doc = "**Description**: Bitmask of VkRenderingFlagBits"]
5388#[doc = "<br>"]
5389#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
5390#[doc = "<br>"]
5391#[doc = "**Reference**: [`VkRenderingFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderingFlags.html)"]
5392#[doc = "<br>"]
5393#[doc = "**Reference**: [`VkRenderingFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderingFlagBits.html)"]
5394pub struct RenderingFlags(u32);
5395
5396impl RenderingFlags {
5397    #[must_use]
5398    pub const fn empty() -> Self {
5399        Self(0)
5400    }
5401
5402    #[must_use]
5403    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5404        let rhs = rhs.into();
5405        self.0 & rhs.0 == rhs.0
5406    }
5407}
5408
5409impl std::ops::BitAnd for RenderingFlags {
5410    type Output = Self;
5411    fn bitand(self, rhs: Self) -> Self::Output {
5412        Self(self.0 & rhs.0)
5413    }
5414}
5415
5416impl From<RenderingFlagBits> for RenderingFlags {
5417    fn from(flag_bits: RenderingFlagBits) -> Self {
5418        Self(flag_bits as u32)
5419    }
5420}
5421
5422impl std::ops::BitOr<RenderingFlagBits> for RenderingFlags {
5423    type Output = RenderingFlags;
5424    fn bitor(self, rhs: RenderingFlagBits) -> Self::Output {
5425        Self(self.0 | rhs as u32)
5426    }
5427}
5428
5429impl std::fmt::Display for RenderingFlags {
5430    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5431        #[allow(deprecated)]
5432        display_flag_bits_u32(
5433            f,
5434            self.0,
5435            &[RenderingFlagBits::ContentsSecondaryCommandBuffers, RenderingFlagBits::Suspending, RenderingFlagBits::Resuming],
5436        )
5437    }
5438}
5439
5440impl std::fmt::Debug for RenderingFlags {
5441    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5442        f.debug_tuple("RenderingFlags").field(&format!("{self}")).finish()
5443    }
5444}
5445
5446#[repr(u32)]
5447#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5448#[doc = "**Chapter**: Render Pass"]
5449#[doc = "<br>"]
5450#[doc = "**Description**: Bitmask specifying additional properties of a dynamic render pass instance"]
5451#[doc = "<br>"]
5452#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
5453#[doc = "<br>"]
5454#[doc = "**Reference**: [`VkRenderingFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderingFlagBits.html)"]
5455pub enum RenderingFlagBits {
5456    #[doc = "Translated from: `VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT`"]
5457    ContentsSecondaryCommandBuffers = 0b1,
5458    #[doc = "Translated from: `VK_RENDERING_SUSPENDING_BIT`"]
5459    Suspending = 0b10,
5460    #[doc = "Translated from: `VK_RENDERING_RESUMING_BIT`"]
5461    Resuming = 0b100,
5462}
5463
5464impl From<RenderingFlagBits> for u32 {
5465    fn from(flag_bits: RenderingFlagBits) -> Self {
5466        flag_bits as u32
5467    }
5468}
5469
5470impl std::ops::BitOr for RenderingFlagBits {
5471    type Output = RenderingFlags;
5472    fn bitor(self, rhs: Self) -> Self::Output {
5473        RenderingFlags(self as u32 | rhs as u32)
5474    }
5475}
5476
5477impl std::ops::BitOr<RenderingFlags> for RenderingFlagBits {
5478    type Output = RenderingFlags;
5479    fn bitor(self, rhs: RenderingFlags) -> Self::Output {
5480        RenderingFlags(self as u32 | rhs.0)
5481    }
5482}
5483
5484impl std::fmt::Display for RenderingFlagBits {
5485    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5486        write!(f, "{self:?}")
5487    }
5488}
5489
5490#[repr(C)]
5491#[derive(Clone, Copy, PartialEq, Eq)]
5492#[doc = "**Chapter**: Render Pass"]
5493#[doc = "<br>"]
5494#[doc = "**Description**: Bitmask of VkResolveModeFlagBits"]
5495#[doc = "<br>"]
5496#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
5497#[doc = "<br>"]
5498#[doc = "**Reference**: [`VkResolveModeFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkResolveModeFlags.html)"]
5499#[doc = "<br>"]
5500#[doc = "**Reference**: [`VkResolveModeFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkResolveModeFlagBits.html)"]
5501pub struct ResolveModeFlags(u32);
5502
5503impl ResolveModeFlags {
5504    #[must_use]
5505    pub const fn empty() -> Self {
5506        Self(0)
5507    }
5508
5509    #[must_use]
5510    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5511        let rhs = rhs.into();
5512        self.0 & rhs.0 == rhs.0
5513    }
5514}
5515
5516impl std::ops::BitAnd for ResolveModeFlags {
5517    type Output = Self;
5518    fn bitand(self, rhs: Self) -> Self::Output {
5519        Self(self.0 & rhs.0)
5520    }
5521}
5522
5523impl From<ResolveModeFlagBits> for ResolveModeFlags {
5524    fn from(flag_bits: ResolveModeFlagBits) -> Self {
5525        Self(flag_bits as u32)
5526    }
5527}
5528
5529impl std::ops::BitOr<ResolveModeFlagBits> for ResolveModeFlags {
5530    type Output = ResolveModeFlags;
5531    fn bitor(self, rhs: ResolveModeFlagBits) -> Self::Output {
5532        Self(self.0 | rhs as u32)
5533    }
5534}
5535
5536impl std::fmt::Display for ResolveModeFlags {
5537    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5538        #[allow(deprecated)]
5539        display_flag_bits_u32(
5540            f,
5541            self.0,
5542            &[
5543                ResolveModeFlagBits::None,
5544                ResolveModeFlagBits::SampleZero,
5545                ResolveModeFlagBits::Average,
5546                ResolveModeFlagBits::Min,
5547                ResolveModeFlagBits::Max,
5548            ],
5549        )
5550    }
5551}
5552
5553impl std::fmt::Debug for ResolveModeFlags {
5554    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5555        f.debug_tuple("ResolveModeFlags").field(&format!("{self}")).finish()
5556    }
5557}
5558
5559#[repr(u32)]
5560#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5561#[doc = "**Chapter**: Render Pass"]
5562#[doc = "<br>"]
5563#[doc = "**Description**: Bitmask indicating supported depth and stencil resolve modes"]
5564#[doc = "<br>"]
5565#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
5566#[doc = "<br>"]
5567#[doc = "**Reference**: [`VkResolveModeFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkResolveModeFlagBits.html)"]
5568pub enum ResolveModeFlagBits {
5569    #[doc = "Translated from: `VK_RESOLVE_MODE_NONE`"]
5570    None = 0,
5571    #[doc = "Translated from: `VK_RESOLVE_MODE_SAMPLE_ZERO_BIT`"]
5572    SampleZero = 0b1,
5573    #[doc = "Translated from: `VK_RESOLVE_MODE_AVERAGE_BIT`"]
5574    Average = 0b10,
5575    #[doc = "Translated from: `VK_RESOLVE_MODE_MIN_BIT`"]
5576    Min = 0b100,
5577    #[doc = "Translated from: `VK_RESOLVE_MODE_MAX_BIT`"]
5578    Max = 0b1000,
5579}
5580
5581impl From<ResolveModeFlagBits> for u32 {
5582    fn from(flag_bits: ResolveModeFlagBits) -> Self {
5583        flag_bits as u32
5584    }
5585}
5586
5587impl std::ops::BitOr for ResolveModeFlagBits {
5588    type Output = ResolveModeFlags;
5589    fn bitor(self, rhs: Self) -> Self::Output {
5590        ResolveModeFlags(self as u32 | rhs as u32)
5591    }
5592}
5593
5594impl std::ops::BitOr<ResolveModeFlags> for ResolveModeFlagBits {
5595    type Output = ResolveModeFlags;
5596    fn bitor(self, rhs: ResolveModeFlags) -> Self::Output {
5597        ResolveModeFlags(self as u32 | rhs.0)
5598    }
5599}
5600
5601impl std::fmt::Display for ResolveModeFlagBits {
5602    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5603        write!(f, "{self:?}")
5604    }
5605}
5606
5607#[repr(C)]
5608#[derive(Clone, Copy, PartialEq, Eq)]
5609#[doc = "**Chapter**: Shaders"]
5610#[doc = "<br>"]
5611#[doc = "**Description**: Bitmask of VkShaderCreateFlagBitsEXT"]
5612#[doc = "<br>"]
5613#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
5614#[doc = "<br>"]
5615#[doc = "**Reference**: [`VkShaderCreateFlagsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderCreateFlagsEXT.html)"]
5616#[doc = "<br>"]
5617#[doc = "**Reference**: [`VkShaderCreateFlagBitsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderCreateFlagBitsEXT.html)"]
5618pub struct ShaderCreateFlagsEXT(u32);
5619
5620impl ShaderCreateFlagsEXT {
5621    #[must_use]
5622    pub const fn empty() -> Self {
5623        Self(0)
5624    }
5625
5626    #[must_use]
5627    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5628        let rhs = rhs.into();
5629        self.0 & rhs.0 == rhs.0
5630    }
5631}
5632
5633impl std::ops::BitAnd for ShaderCreateFlagsEXT {
5634    type Output = Self;
5635    fn bitand(self, rhs: Self) -> Self::Output {
5636        Self(self.0 & rhs.0)
5637    }
5638}
5639
5640impl From<ShaderCreateFlagBitsEXT> for ShaderCreateFlagsEXT {
5641    fn from(flag_bits: ShaderCreateFlagBitsEXT) -> Self {
5642        Self(flag_bits as u32)
5643    }
5644}
5645
5646impl std::ops::BitOr<ShaderCreateFlagBitsEXT> for ShaderCreateFlagsEXT {
5647    type Output = ShaderCreateFlagsEXT;
5648    fn bitor(self, rhs: ShaderCreateFlagBitsEXT) -> Self::Output {
5649        Self(self.0 | rhs as u32)
5650    }
5651}
5652
5653impl std::fmt::Display for ShaderCreateFlagsEXT {
5654    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5655        #[allow(deprecated)]
5656        display_flag_bits_u32(
5657            f,
5658            self.0,
5659            &[
5660                ShaderCreateFlagBitsEXT::LinkStageEXT,
5661                ShaderCreateFlagBitsEXT::AllowVaryingSubgroupSizeEXT,
5662                ShaderCreateFlagBitsEXT::RequireFullSubgroupsEXT,
5663                ShaderCreateFlagBitsEXT::NoTaskShaderEXT,
5664                ShaderCreateFlagBitsEXT::DispatchBaseEXT,
5665                ShaderCreateFlagBitsEXT::FragmentShadingRateAttachmentEXT,
5666                ShaderCreateFlagBitsEXT::FragmentDensityMapAttachmentEXT,
5667            ],
5668        )
5669    }
5670}
5671
5672impl std::fmt::Debug for ShaderCreateFlagsEXT {
5673    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5674        f.debug_tuple("ShaderCreateFlagsEXT").field(&format!("{self}")).finish()
5675    }
5676}
5677
5678#[repr(u32)]
5679#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5680#[doc = "**Chapter**: Shaders"]
5681#[doc = "<br>"]
5682#[doc = "**Description**: Bitmask controlling how a shader object is created"]
5683#[doc = "<br>"]
5684#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
5685#[doc = "<br>"]
5686#[doc = "**Reference**: [`VkShaderCreateFlagBitsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderCreateFlagBitsEXT.html)"]
5687pub enum ShaderCreateFlagBitsEXT {
5688    #[doc = "Translated from: `VK_SHADER_CREATE_LINK_STAGE_BIT_EXT`"]
5689    LinkStageEXT = 0b1,
5690    #[doc = "Translated from: `VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT`"]
5691    AllowVaryingSubgroupSizeEXT = 0b10,
5692    #[doc = "Translated from: `VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT`"]
5693    RequireFullSubgroupsEXT = 0b100,
5694    #[doc = "Translated from: `VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT`"]
5695    NoTaskShaderEXT = 0b1000,
5696    #[doc = "Translated from: `VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT`"]
5697    DispatchBaseEXT = 0b10000,
5698    #[doc = "Translated from: `VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT`"]
5699    FragmentShadingRateAttachmentEXT = 0b100000,
5700    #[doc = "Translated from: `VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT`"]
5701    FragmentDensityMapAttachmentEXT = 0b1000000,
5702}
5703
5704impl From<ShaderCreateFlagBitsEXT> for u32 {
5705    fn from(flag_bits: ShaderCreateFlagBitsEXT) -> Self {
5706        flag_bits as u32
5707    }
5708}
5709
5710impl std::ops::BitOr for ShaderCreateFlagBitsEXT {
5711    type Output = ShaderCreateFlagsEXT;
5712    fn bitor(self, rhs: Self) -> Self::Output {
5713        ShaderCreateFlagsEXT(self as u32 | rhs as u32)
5714    }
5715}
5716
5717impl std::ops::BitOr<ShaderCreateFlagsEXT> for ShaderCreateFlagBitsEXT {
5718    type Output = ShaderCreateFlagsEXT;
5719    fn bitor(self, rhs: ShaderCreateFlagsEXT) -> Self::Output {
5720        ShaderCreateFlagsEXT(self as u32 | rhs.0)
5721    }
5722}
5723
5724impl std::fmt::Display for ShaderCreateFlagBitsEXT {
5725    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5726        write!(f, "{self:?}")
5727    }
5728}
5729
5730#[repr(C)]
5731#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5732#[doc = "**Chapter**: Shaders"]
5733#[doc = "<br>"]
5734#[doc = "**Description**: Reserved for future use"]
5735#[doc = "<br>"]
5736#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5737#[doc = "<br>"]
5738#[doc = "**Reference**: [`VkShaderModuleCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderModuleCreateFlags.html)"]
5739pub struct ShaderModuleCreateFlags(u32);
5740
5741impl ShaderModuleCreateFlags {
5742    #[must_use]
5743    pub const fn empty() -> Self {
5744        Self(0)
5745    }
5746}
5747
5748#[repr(C)]
5749#[derive(Clone, Copy, PartialEq, Eq)]
5750#[doc = "**Chapter**: Pipelines"]
5751#[doc = "<br>"]
5752#[doc = "**Description**: Bitmask of VkPipelineShaderStageCreateFlagBits"]
5753#[doc = "<br>"]
5754#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5755#[doc = "<br>"]
5756#[doc = "**Reference**: [`VkPipelineShaderStageCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateFlags.html)"]
5757#[doc = "<br>"]
5758#[doc = "**Reference**: [`VkPipelineShaderStageCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateFlagBits.html)"]
5759pub struct PipelineShaderStageCreateFlags(u32);
5760
5761impl PipelineShaderStageCreateFlags {
5762    #[must_use]
5763    pub const fn empty() -> Self {
5764        Self(0)
5765    }
5766
5767    #[must_use]
5768    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5769        let rhs = rhs.into();
5770        self.0 & rhs.0 == rhs.0
5771    }
5772}
5773
5774impl std::ops::BitAnd for PipelineShaderStageCreateFlags {
5775    type Output = Self;
5776    fn bitand(self, rhs: Self) -> Self::Output {
5777        Self(self.0 & rhs.0)
5778    }
5779}
5780
5781impl From<PipelineShaderStageCreateFlagBits> for PipelineShaderStageCreateFlags {
5782    fn from(flag_bits: PipelineShaderStageCreateFlagBits) -> Self {
5783        Self(flag_bits as u32)
5784    }
5785}
5786
5787impl std::ops::BitOr<PipelineShaderStageCreateFlagBits> for PipelineShaderStageCreateFlags {
5788    type Output = PipelineShaderStageCreateFlags;
5789    fn bitor(self, rhs: PipelineShaderStageCreateFlagBits) -> Self::Output {
5790        Self(self.0 | rhs as u32)
5791    }
5792}
5793
5794impl std::fmt::Display for PipelineShaderStageCreateFlags {
5795    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5796        #[allow(deprecated)]
5797        display_flag_bits_u32(
5798            f,
5799            self.0,
5800            &[PipelineShaderStageCreateFlagBits::AllowVaryingSubgroupSize, PipelineShaderStageCreateFlagBits::RequireFullSubgroups],
5801        )
5802    }
5803}
5804
5805impl std::fmt::Debug for PipelineShaderStageCreateFlags {
5806    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5807        f.debug_tuple("PipelineShaderStageCreateFlags").field(&format!("{self}")).finish()
5808    }
5809}
5810
5811#[repr(u32)]
5812#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5813#[doc = "**Chapter**: Pipelines"]
5814#[doc = "<br>"]
5815#[doc = "**Description**: Bitmask controlling how a pipeline shader stage is created"]
5816#[doc = "<br>"]
5817#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5818#[doc = "<br>"]
5819#[doc = "**Reference**: [`VkPipelineShaderStageCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateFlagBits.html)"]
5820pub enum PipelineShaderStageCreateFlagBits {
5821    #[doc = "Translated from: `VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT`"]
5822    AllowVaryingSubgroupSize = 0b1,
5823    #[doc = "Translated from: `VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT`"]
5824    RequireFullSubgroups = 0b10,
5825}
5826
5827impl From<PipelineShaderStageCreateFlagBits> for u32 {
5828    fn from(flag_bits: PipelineShaderStageCreateFlagBits) -> Self {
5829        flag_bits as u32
5830    }
5831}
5832
5833impl std::ops::BitOr for PipelineShaderStageCreateFlagBits {
5834    type Output = PipelineShaderStageCreateFlags;
5835    fn bitor(self, rhs: Self) -> Self::Output {
5836        PipelineShaderStageCreateFlags(self as u32 | rhs as u32)
5837    }
5838}
5839
5840impl std::ops::BitOr<PipelineShaderStageCreateFlags> for PipelineShaderStageCreateFlagBits {
5841    type Output = PipelineShaderStageCreateFlags;
5842    fn bitor(self, rhs: PipelineShaderStageCreateFlags) -> Self::Output {
5843        PipelineShaderStageCreateFlags(self as u32 | rhs.0)
5844    }
5845}
5846
5847impl std::fmt::Display for PipelineShaderStageCreateFlagBits {
5848    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5849        write!(f, "{self:?}")
5850    }
5851}
5852
5853#[repr(C)]
5854#[derive(Clone, Copy, PartialEq, Eq)]
5855#[doc = "**Chapter**: Pipelines"]
5856#[doc = "<br>"]
5857#[doc = "**Description**: Bitmask of VkShaderStageFlagBits"]
5858#[doc = "<br>"]
5859#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5860#[doc = "<br>"]
5861#[doc = "**Reference**: [`VkShaderStageFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlags.html)"]
5862#[doc = "<br>"]
5863#[doc = "**Reference**: [`VkShaderStageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html)"]
5864pub struct ShaderStageFlags(u32);
5865
5866impl ShaderStageFlags {
5867    #[must_use]
5868    pub const fn empty() -> Self {
5869        Self(0)
5870    }
5871
5872    #[must_use]
5873    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
5874        let rhs = rhs.into();
5875        self.0 & rhs.0 == rhs.0
5876    }
5877}
5878
5879impl std::ops::BitAnd for ShaderStageFlags {
5880    type Output = Self;
5881    fn bitand(self, rhs: Self) -> Self::Output {
5882        Self(self.0 & rhs.0)
5883    }
5884}
5885
5886impl From<ShaderStageFlagBits> for ShaderStageFlags {
5887    fn from(flag_bits: ShaderStageFlagBits) -> Self {
5888        Self(flag_bits as u32)
5889    }
5890}
5891
5892impl std::ops::BitOr<ShaderStageFlagBits> for ShaderStageFlags {
5893    type Output = ShaderStageFlags;
5894    fn bitor(self, rhs: ShaderStageFlagBits) -> Self::Output {
5895        Self(self.0 | rhs as u32)
5896    }
5897}
5898
5899impl std::fmt::Display for ShaderStageFlags {
5900    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5901        #[allow(deprecated)]
5902        display_flag_bits_u32(
5903            f,
5904            self.0,
5905            &[
5906                ShaderStageFlagBits::Vertex,
5907                ShaderStageFlagBits::TessellationControl,
5908                ShaderStageFlagBits::TessellationEvaluation,
5909                ShaderStageFlagBits::Geometry,
5910                ShaderStageFlagBits::Fragment,
5911                ShaderStageFlagBits::Compute,
5912                ShaderStageFlagBits::AllGraphics,
5913                ShaderStageFlagBits::All,
5914                ShaderStageFlagBits::RaygenKHR,
5915                ShaderStageFlagBits::AnyHitKHR,
5916                ShaderStageFlagBits::ClosestHitKHR,
5917                ShaderStageFlagBits::MissKHR,
5918                ShaderStageFlagBits::IntersectionKHR,
5919                ShaderStageFlagBits::CallableKHR,
5920                ShaderStageFlagBits::TaskEXT,
5921                ShaderStageFlagBits::MeshEXT,
5922            ],
5923        )
5924    }
5925}
5926
5927impl std::fmt::Debug for ShaderStageFlags {
5928    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5929        f.debug_tuple("ShaderStageFlags").field(&format!("{self}")).finish()
5930    }
5931}
5932
5933#[repr(u32)]
5934#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5935#[doc = "**Chapter**: Pipelines"]
5936#[doc = "<br>"]
5937#[doc = "**Description**: Bitmask specifying a pipeline stage"]
5938#[doc = "<br>"]
5939#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
5940#[doc = "<br>"]
5941#[doc = "**Reference**: [`VkShaderStageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html)"]
5942pub enum ShaderStageFlagBits {
5943    #[doc = "Translated from: `VK_SHADER_STAGE_VERTEX_BIT`"]
5944    Vertex = 0b1,
5945    #[doc = "Translated from: `VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT`"]
5946    TessellationControl = 0b10,
5947    #[doc = "Translated from: `VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT`"]
5948    TessellationEvaluation = 0b100,
5949    #[doc = "Translated from: `VK_SHADER_STAGE_GEOMETRY_BIT`"]
5950    Geometry = 0b1000,
5951    #[doc = "Translated from: `VK_SHADER_STAGE_FRAGMENT_BIT`"]
5952    Fragment = 0b10000,
5953    #[doc = "Translated from: `VK_SHADER_STAGE_COMPUTE_BIT`"]
5954    Compute = 0b100000,
5955    #[doc = "Translated from: `VK_SHADER_STAGE_ALL_GRAPHICS`"]
5956    AllGraphics = 0x1f,
5957    #[doc = "Translated from: `VK_SHADER_STAGE_ALL`"]
5958    All = 0x7fffffff,
5959    #[doc = "Translated from: `VK_SHADER_STAGE_RAYGEN_BIT_KHR`"]
5960    RaygenKHR = 0b100000000,
5961    #[doc = "Translated from: `VK_SHADER_STAGE_ANY_HIT_BIT_KHR`"]
5962    AnyHitKHR = 0b1000000000,
5963    #[doc = "Translated from: `VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR`"]
5964    ClosestHitKHR = 0b10000000000,
5965    #[doc = "Translated from: `VK_SHADER_STAGE_MISS_BIT_KHR`"]
5966    MissKHR = 0b100000000000,
5967    #[doc = "Translated from: `VK_SHADER_STAGE_INTERSECTION_BIT_KHR`"]
5968    IntersectionKHR = 0b1000000000000,
5969    #[doc = "Translated from: `VK_SHADER_STAGE_CALLABLE_BIT_KHR`"]
5970    CallableKHR = 0b10000000000000,
5971    #[doc = "Translated from: `VK_SHADER_STAGE_TASK_BIT_EXT`"]
5972    TaskEXT = 0b1000000,
5973    #[doc = "Translated from: `VK_SHADER_STAGE_MESH_BIT_EXT`"]
5974    MeshEXT = 0b10000000,
5975}
5976
5977impl From<ShaderStageFlagBits> for u32 {
5978    fn from(flag_bits: ShaderStageFlagBits) -> Self {
5979        flag_bits as u32
5980    }
5981}
5982
5983impl std::ops::BitOr for ShaderStageFlagBits {
5984    type Output = ShaderStageFlags;
5985    fn bitor(self, rhs: Self) -> Self::Output {
5986        ShaderStageFlags(self as u32 | rhs as u32)
5987    }
5988}
5989
5990impl std::ops::BitOr<ShaderStageFlags> for ShaderStageFlagBits {
5991    type Output = ShaderStageFlags;
5992    fn bitor(self, rhs: ShaderStageFlags) -> Self::Output {
5993        ShaderStageFlags(self as u32 | rhs.0)
5994    }
5995}
5996
5997impl std::fmt::Display for ShaderStageFlagBits {
5998    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5999        write!(f, "{self:?}")
6000    }
6001}
6002
6003#[repr(C)]
6004#[derive(Clone, Copy, PartialEq, Eq)]
6005#[doc = "**Chapter**: Pipelines"]
6006#[doc = "<br>"]
6007#[doc = "**Description**: Bitmask of VkPipelineCreateFlagBits"]
6008#[doc = "<br>"]
6009#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6010#[doc = "<br>"]
6011#[doc = "**Reference**: [`VkPipelineCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlags.html)"]
6012#[doc = "<br>"]
6013#[doc = "**Reference**: [`VkPipelineCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlagBits.html)"]
6014pub struct PipelineCreateFlags(u32);
6015
6016impl PipelineCreateFlags {
6017    #[must_use]
6018    pub const fn empty() -> Self {
6019        Self(0)
6020    }
6021
6022    #[must_use]
6023    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6024        let rhs = rhs.into();
6025        self.0 & rhs.0 == rhs.0
6026    }
6027}
6028
6029impl std::ops::BitAnd for PipelineCreateFlags {
6030    type Output = Self;
6031    fn bitand(self, rhs: Self) -> Self::Output {
6032        Self(self.0 & rhs.0)
6033    }
6034}
6035
6036impl From<PipelineCreateFlagBits> for PipelineCreateFlags {
6037    fn from(flag_bits: PipelineCreateFlagBits) -> Self {
6038        Self(flag_bits as u32)
6039    }
6040}
6041
6042impl std::ops::BitOr<PipelineCreateFlagBits> for PipelineCreateFlags {
6043    type Output = PipelineCreateFlags;
6044    fn bitor(self, rhs: PipelineCreateFlagBits) -> Self::Output {
6045        Self(self.0 | rhs as u32)
6046    }
6047}
6048
6049impl std::fmt::Display for PipelineCreateFlags {
6050    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6051        #[allow(deprecated)]
6052        display_flag_bits_u32(
6053            f,
6054            self.0,
6055            &[
6056                PipelineCreateFlagBits::DisableOptimization,
6057                PipelineCreateFlagBits::AllowDerivatives,
6058                PipelineCreateFlagBits::Derivative,
6059                PipelineCreateFlagBits::ViewIndexFromDeviceIndex,
6060                PipelineCreateFlagBits::DispatchBase,
6061                PipelineCreateFlagBits::FailOnPipelineCompileRequired,
6062                PipelineCreateFlagBits::EarlyReturnOnFailure,
6063                PipelineCreateFlagBits::RayTracingNoNullAnyHitShadersKHR,
6064                PipelineCreateFlagBits::RayTracingNoNullClosestHitShadersKHR,
6065                PipelineCreateFlagBits::RayTracingNoNullMissShadersKHR,
6066                PipelineCreateFlagBits::RayTracingNoNullIntersectionShadersKHR,
6067                PipelineCreateFlagBits::RayTracingSkipTrianglesKHR,
6068                PipelineCreateFlagBits::RayTracingSkipAabbsKHR,
6069                PipelineCreateFlagBits::RayTracingShaderGroupHandleCaptureReplayKHR,
6070                PipelineCreateFlagBits::LibraryKHR,
6071                PipelineCreateFlagBits::DescriptorBufferEXT,
6072            ],
6073        )
6074    }
6075}
6076
6077impl std::fmt::Debug for PipelineCreateFlags {
6078    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6079        f.debug_tuple("PipelineCreateFlags").field(&format!("{self}")).finish()
6080    }
6081}
6082
6083#[repr(u32)]
6084#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6085#[doc = "**Chapter**: Pipelines"]
6086#[doc = "<br>"]
6087#[doc = "**Description**: Bitmask controlling how a pipeline is created"]
6088#[doc = "<br>"]
6089#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6090#[doc = "<br>"]
6091#[doc = "**Reference**: [`VkPipelineCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlagBits.html)"]
6092pub enum PipelineCreateFlagBits {
6093    #[doc = "Translated from: `VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT`"]
6094    DisableOptimization = 0b1,
6095    #[doc = "Translated from: `VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT`"]
6096    AllowDerivatives = 0b10,
6097    #[doc = "Translated from: `VK_PIPELINE_CREATE_DERIVATIVE_BIT`"]
6098    Derivative = 0b100,
6099    #[doc = "Translated from: `VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT`"]
6100    ViewIndexFromDeviceIndex = 0b1000,
6101    #[doc = "Translated from: `VK_PIPELINE_CREATE_DISPATCH_BASE_BIT`"]
6102    DispatchBase = 0b10000,
6103    #[doc = "Translated from: `VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT`"]
6104    FailOnPipelineCompileRequired = 0b100000000,
6105    #[doc = "Translated from: `VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT`"]
6106    EarlyReturnOnFailure = 0b1000000000,
6107    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR`"]
6108    RayTracingNoNullAnyHitShadersKHR = 0b100000000000000,
6109    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR`"]
6110    RayTracingNoNullClosestHitShadersKHR = 0b1000000000000000,
6111    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR`"]
6112    RayTracingNoNullMissShadersKHR = 0b10000000000000000,
6113    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR`"]
6114    RayTracingNoNullIntersectionShadersKHR = 0b100000000000000000,
6115    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR`"]
6116    RayTracingSkipTrianglesKHR = 0b1000000000000,
6117    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR`"]
6118    RayTracingSkipAabbsKHR = 0b10000000000000,
6119    #[doc = "Translated from: `VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR`"]
6120    RayTracingShaderGroupHandleCaptureReplayKHR = 0b10000000000000000000,
6121    #[doc = "Translated from: `VK_PIPELINE_CREATE_LIBRARY_BIT_KHR`"]
6122    LibraryKHR = 0b100000000000,
6123    #[doc = "Translated from: `VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT`"]
6124    DescriptorBufferEXT = 0b100000000000000000000000000000,
6125}
6126
6127impl From<PipelineCreateFlagBits> for u32 {
6128    fn from(flag_bits: PipelineCreateFlagBits) -> Self {
6129        flag_bits as u32
6130    }
6131}
6132
6133impl std::ops::BitOr for PipelineCreateFlagBits {
6134    type Output = PipelineCreateFlags;
6135    fn bitor(self, rhs: Self) -> Self::Output {
6136        PipelineCreateFlags(self as u32 | rhs as u32)
6137    }
6138}
6139
6140impl std::ops::BitOr<PipelineCreateFlags> for PipelineCreateFlagBits {
6141    type Output = PipelineCreateFlags;
6142    fn bitor(self, rhs: PipelineCreateFlags) -> Self::Output {
6143        PipelineCreateFlags(self as u32 | rhs.0)
6144    }
6145}
6146
6147impl std::fmt::Display for PipelineCreateFlagBits {
6148    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6149        write!(f, "{self:?}")
6150    }
6151}
6152
6153#[repr(C)]
6154#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6155#[doc = "**Chapter**: Pipelines"]
6156#[doc = "<br>"]
6157#[doc = "**Description**: Reserved for future use"]
6158#[doc = "<br>"]
6159#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6160#[doc = "<br>"]
6161#[doc = "**Reference**: [`VkPipelineDynamicStateCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineDynamicStateCreateFlags.html)"]
6162pub struct PipelineDynamicStateCreateFlags(u32);
6163
6164impl PipelineDynamicStateCreateFlags {
6165    #[must_use]
6166    pub const fn empty() -> Self {
6167        Self(0)
6168    }
6169}
6170
6171#[repr(C)]
6172#[derive(Clone, Copy, PartialEq, Eq)]
6173#[doc = "**Chapter**: Memory Allocation"]
6174#[doc = "<br>"]
6175#[doc = "**Description**: Bitmask of VkMemoryHeapFlagBits"]
6176#[doc = "<br>"]
6177#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6178#[doc = "<br>"]
6179#[doc = "**Reference**: [`VkMemoryHeapFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryHeapFlags.html)"]
6180#[doc = "<br>"]
6181#[doc = "**Reference**: [`VkMemoryHeapFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryHeapFlagBits.html)"]
6182pub struct MemoryHeapFlags(u32);
6183
6184impl MemoryHeapFlags {
6185    #[must_use]
6186    pub const fn empty() -> Self {
6187        Self(0)
6188    }
6189
6190    #[must_use]
6191    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6192        let rhs = rhs.into();
6193        self.0 & rhs.0 == rhs.0
6194    }
6195}
6196
6197impl std::ops::BitAnd for MemoryHeapFlags {
6198    type Output = Self;
6199    fn bitand(self, rhs: Self) -> Self::Output {
6200        Self(self.0 & rhs.0)
6201    }
6202}
6203
6204impl From<MemoryHeapFlagBits> for MemoryHeapFlags {
6205    fn from(flag_bits: MemoryHeapFlagBits) -> Self {
6206        Self(flag_bits as u32)
6207    }
6208}
6209
6210impl std::ops::BitOr<MemoryHeapFlagBits> for MemoryHeapFlags {
6211    type Output = MemoryHeapFlags;
6212    fn bitor(self, rhs: MemoryHeapFlagBits) -> Self::Output {
6213        Self(self.0 | rhs as u32)
6214    }
6215}
6216
6217impl std::fmt::Display for MemoryHeapFlags {
6218    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6219        #[allow(deprecated)]
6220        display_flag_bits_u32(f, self.0, &[MemoryHeapFlagBits::DeviceLocal, MemoryHeapFlagBits::MultiInstance])
6221    }
6222}
6223
6224impl std::fmt::Debug for MemoryHeapFlags {
6225    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6226        f.debug_tuple("MemoryHeapFlags").field(&format!("{self}")).finish()
6227    }
6228}
6229
6230#[repr(u32)]
6231#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6232#[doc = "**Chapter**: Memory Allocation"]
6233#[doc = "<br>"]
6234#[doc = "**Description**: Bitmask specifying attribute flags for a heap"]
6235#[doc = "<br>"]
6236#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6237#[doc = "<br>"]
6238#[doc = "**Reference**: [`VkMemoryHeapFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryHeapFlagBits.html)"]
6239pub enum MemoryHeapFlagBits {
6240    #[doc = "Translated from: `VK_MEMORY_HEAP_DEVICE_LOCAL_BIT`"]
6241    DeviceLocal = 0b1,
6242    #[doc = "Translated from: `VK_MEMORY_HEAP_MULTI_INSTANCE_BIT`"]
6243    MultiInstance = 0b10,
6244}
6245
6246impl From<MemoryHeapFlagBits> for u32 {
6247    fn from(flag_bits: MemoryHeapFlagBits) -> Self {
6248        flag_bits as u32
6249    }
6250}
6251
6252impl std::ops::BitOr for MemoryHeapFlagBits {
6253    type Output = MemoryHeapFlags;
6254    fn bitor(self, rhs: Self) -> Self::Output {
6255        MemoryHeapFlags(self as u32 | rhs as u32)
6256    }
6257}
6258
6259impl std::ops::BitOr<MemoryHeapFlags> for MemoryHeapFlagBits {
6260    type Output = MemoryHeapFlags;
6261    fn bitor(self, rhs: MemoryHeapFlags) -> Self::Output {
6262        MemoryHeapFlags(self as u32 | rhs.0)
6263    }
6264}
6265
6266impl std::fmt::Display for MemoryHeapFlagBits {
6267    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6268        write!(f, "{self:?}")
6269    }
6270}
6271
6272#[repr(C)]
6273#[derive(Clone, Copy, PartialEq, Eq)]
6274#[doc = "**Chapter**: Memory Allocation"]
6275#[doc = "<br>"]
6276#[doc = "**Description**: Bitmask of VkMemoryPropertyFlagBits"]
6277#[doc = "<br>"]
6278#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6279#[doc = "<br>"]
6280#[doc = "**Reference**: [`VkMemoryPropertyFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlags.html)"]
6281#[doc = "<br>"]
6282#[doc = "**Reference**: [`VkMemoryPropertyFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html)"]
6283pub struct MemoryPropertyFlags(u32);
6284
6285impl MemoryPropertyFlags {
6286    #[must_use]
6287    pub const fn empty() -> Self {
6288        Self(0)
6289    }
6290
6291    #[must_use]
6292    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6293        let rhs = rhs.into();
6294        self.0 & rhs.0 == rhs.0
6295    }
6296}
6297
6298impl std::ops::BitAnd for MemoryPropertyFlags {
6299    type Output = Self;
6300    fn bitand(self, rhs: Self) -> Self::Output {
6301        Self(self.0 & rhs.0)
6302    }
6303}
6304
6305impl From<MemoryPropertyFlagBits> for MemoryPropertyFlags {
6306    fn from(flag_bits: MemoryPropertyFlagBits) -> Self {
6307        Self(flag_bits as u32)
6308    }
6309}
6310
6311impl std::ops::BitOr<MemoryPropertyFlagBits> for MemoryPropertyFlags {
6312    type Output = MemoryPropertyFlags;
6313    fn bitor(self, rhs: MemoryPropertyFlagBits) -> Self::Output {
6314        Self(self.0 | rhs as u32)
6315    }
6316}
6317
6318impl std::fmt::Display for MemoryPropertyFlags {
6319    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6320        #[allow(deprecated)]
6321        display_flag_bits_u32(
6322            f,
6323            self.0,
6324            &[
6325                MemoryPropertyFlagBits::DeviceLocal,
6326                MemoryPropertyFlagBits::HostVisible,
6327                MemoryPropertyFlagBits::HostCoherent,
6328                MemoryPropertyFlagBits::HostCached,
6329                MemoryPropertyFlagBits::LazilyAllocated,
6330                MemoryPropertyFlagBits::Protected,
6331            ],
6332        )
6333    }
6334}
6335
6336impl std::fmt::Debug for MemoryPropertyFlags {
6337    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6338        f.debug_tuple("MemoryPropertyFlags").field(&format!("{self}")).finish()
6339    }
6340}
6341
6342#[repr(u32)]
6343#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6344#[doc = "**Chapter**: Memory Allocation"]
6345#[doc = "<br>"]
6346#[doc = "**Description**: Bitmask specifying properties for a memory type"]
6347#[doc = "<br>"]
6348#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6349#[doc = "<br>"]
6350#[doc = "**Reference**: [`VkMemoryPropertyFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html)"]
6351pub enum MemoryPropertyFlagBits {
6352    #[doc = "Translated from: `VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT`"]
6353    DeviceLocal = 0b1,
6354    #[doc = "Translated from: `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT`"]
6355    HostVisible = 0b10,
6356    #[doc = "Translated from: `VK_MEMORY_PROPERTY_HOST_COHERENT_BIT`"]
6357    HostCoherent = 0b100,
6358    #[doc = "Translated from: `VK_MEMORY_PROPERTY_HOST_CACHED_BIT`"]
6359    HostCached = 0b1000,
6360    #[doc = "Translated from: `VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT`"]
6361    LazilyAllocated = 0b10000,
6362    #[doc = "Translated from: `VK_MEMORY_PROPERTY_PROTECTED_BIT`"]
6363    Protected = 0b100000,
6364}
6365
6366impl From<MemoryPropertyFlagBits> for u32 {
6367    fn from(flag_bits: MemoryPropertyFlagBits) -> Self {
6368        flag_bits as u32
6369    }
6370}
6371
6372impl std::ops::BitOr for MemoryPropertyFlagBits {
6373    type Output = MemoryPropertyFlags;
6374    fn bitor(self, rhs: Self) -> Self::Output {
6375        MemoryPropertyFlags(self as u32 | rhs as u32)
6376    }
6377}
6378
6379impl std::ops::BitOr<MemoryPropertyFlags> for MemoryPropertyFlagBits {
6380    type Output = MemoryPropertyFlags;
6381    fn bitor(self, rhs: MemoryPropertyFlags) -> Self::Output {
6382        MemoryPropertyFlags(self as u32 | rhs.0)
6383    }
6384}
6385
6386impl std::fmt::Display for MemoryPropertyFlagBits {
6387    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6388        write!(f, "{self:?}")
6389    }
6390}
6391
6392#[repr(C)]
6393#[derive(Clone, Copy, PartialEq, Eq)]
6394#[doc = "**Chapter**: Memory Allocation"]
6395#[doc = "<br>"]
6396#[doc = "**Description**: Bitmask of VkMemoryAllocateFlagBits"]
6397#[doc = "<br>"]
6398#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
6399#[doc = "<br>"]
6400#[doc = "**Reference**: [`VkMemoryAllocateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlags.html)"]
6401#[doc = "<br>"]
6402#[doc = "**Reference**: [`VkMemoryAllocateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlagBits.html)"]
6403pub struct MemoryAllocateFlags(u32);
6404
6405impl MemoryAllocateFlags {
6406    #[must_use]
6407    pub const fn empty() -> Self {
6408        Self(0)
6409    }
6410
6411    #[must_use]
6412    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6413        let rhs = rhs.into();
6414        self.0 & rhs.0 == rhs.0
6415    }
6416}
6417
6418impl std::ops::BitAnd for MemoryAllocateFlags {
6419    type Output = Self;
6420    fn bitand(self, rhs: Self) -> Self::Output {
6421        Self(self.0 & rhs.0)
6422    }
6423}
6424
6425impl From<MemoryAllocateFlagBits> for MemoryAllocateFlags {
6426    fn from(flag_bits: MemoryAllocateFlagBits) -> Self {
6427        Self(flag_bits as u32)
6428    }
6429}
6430
6431impl std::ops::BitOr<MemoryAllocateFlagBits> for MemoryAllocateFlags {
6432    type Output = MemoryAllocateFlags;
6433    fn bitor(self, rhs: MemoryAllocateFlagBits) -> Self::Output {
6434        Self(self.0 | rhs as u32)
6435    }
6436}
6437
6438impl std::fmt::Display for MemoryAllocateFlags {
6439    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6440        #[allow(deprecated)]
6441        display_flag_bits_u32(
6442            f,
6443            self.0,
6444            &[
6445                MemoryAllocateFlagBits::DeviceMask,
6446                MemoryAllocateFlagBits::DeviceAddress,
6447                MemoryAllocateFlagBits::DeviceAddressCaptureReplay,
6448            ],
6449        )
6450    }
6451}
6452
6453impl std::fmt::Debug for MemoryAllocateFlags {
6454    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6455        f.debug_tuple("MemoryAllocateFlags").field(&format!("{self}")).finish()
6456    }
6457}
6458
6459#[repr(u32)]
6460#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6461#[doc = "**Chapter**: Memory Allocation"]
6462#[doc = "<br>"]
6463#[doc = "**Description**: Bitmask specifying flags for a device memory allocation"]
6464#[doc = "<br>"]
6465#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
6466#[doc = "<br>"]
6467#[doc = "**Reference**: [`VkMemoryAllocateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlagBits.html)"]
6468pub enum MemoryAllocateFlagBits {
6469    #[doc = "Translated from: `VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT`"]
6470    DeviceMask = 0b1,
6471    #[doc = "Translated from: `VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT`"]
6472    DeviceAddress = 0b10,
6473    #[doc = "Translated from: `VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT`"]
6474    DeviceAddressCaptureReplay = 0b100,
6475}
6476
6477impl From<MemoryAllocateFlagBits> for u32 {
6478    fn from(flag_bits: MemoryAllocateFlagBits) -> Self {
6479        flag_bits as u32
6480    }
6481}
6482
6483impl std::ops::BitOr for MemoryAllocateFlagBits {
6484    type Output = MemoryAllocateFlags;
6485    fn bitor(self, rhs: Self) -> Self::Output {
6486        MemoryAllocateFlags(self as u32 | rhs as u32)
6487    }
6488}
6489
6490impl std::ops::BitOr<MemoryAllocateFlags> for MemoryAllocateFlagBits {
6491    type Output = MemoryAllocateFlags;
6492    fn bitor(self, rhs: MemoryAllocateFlags) -> Self::Output {
6493        MemoryAllocateFlags(self as u32 | rhs.0)
6494    }
6495}
6496
6497impl std::fmt::Display for MemoryAllocateFlagBits {
6498    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6499        write!(f, "{self:?}")
6500    }
6501}
6502
6503#[repr(C)]
6504#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6505#[doc = "**Chapter**: Memory Allocation"]
6506#[doc = "<br>"]
6507#[doc = "**Description**: Reserved for future use"]
6508#[doc = "<br>"]
6509#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6510#[doc = "<br>"]
6511#[doc = "**Reference**: [`VkMemoryMapFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryMapFlags.html)"]
6512pub struct MemoryMapFlags(u32);
6513
6514impl MemoryMapFlags {
6515    #[must_use]
6516    pub const fn empty() -> Self {
6517        Self(0)
6518    }
6519}
6520
6521#[repr(C)]
6522#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6523#[doc = "**Chapter**: Memory Allocation"]
6524#[doc = "<br>"]
6525#[doc = "**Description**: Reserved for future use"]
6526#[doc = "<br>"]
6527#[doc = "**Provided by**: [`VK_KHR_map_memory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_map_memory2.html)"]
6528#[doc = "<br>"]
6529#[doc = "**Reference**: [`VkMemoryUnmapFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryUnmapFlagsKHR.html)"]
6530pub struct MemoryUnmapFlagsKHR(u32);
6531
6532impl MemoryUnmapFlagsKHR {
6533    #[must_use]
6534    pub const fn empty() -> Self {
6535        Self(0)
6536    }
6537}
6538
6539#[repr(C)]
6540#[derive(Clone, Copy, PartialEq, Eq)]
6541#[doc = "**Chapter**: Resource Creation"]
6542#[doc = "<br>"]
6543#[doc = "**Description**: Bitmask of VkBufferUsageFlagBits"]
6544#[doc = "<br>"]
6545#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6546#[doc = "<br>"]
6547#[doc = "**Reference**: [`VkBufferUsageFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlags.html)"]
6548#[doc = "<br>"]
6549#[doc = "**Reference**: [`VkBufferUsageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html)"]
6550pub struct BufferUsageFlags(u32);
6551
6552impl BufferUsageFlags {
6553    #[must_use]
6554    pub const fn empty() -> Self {
6555        Self(0)
6556    }
6557
6558    #[must_use]
6559    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6560        let rhs = rhs.into();
6561        self.0 & rhs.0 == rhs.0
6562    }
6563}
6564
6565impl std::ops::BitAnd for BufferUsageFlags {
6566    type Output = Self;
6567    fn bitand(self, rhs: Self) -> Self::Output {
6568        Self(self.0 & rhs.0)
6569    }
6570}
6571
6572impl From<BufferUsageFlagBits> for BufferUsageFlags {
6573    fn from(flag_bits: BufferUsageFlagBits) -> Self {
6574        Self(flag_bits as u32)
6575    }
6576}
6577
6578impl std::ops::BitOr<BufferUsageFlagBits> for BufferUsageFlags {
6579    type Output = BufferUsageFlags;
6580    fn bitor(self, rhs: BufferUsageFlagBits) -> Self::Output {
6581        Self(self.0 | rhs as u32)
6582    }
6583}
6584
6585impl std::fmt::Display for BufferUsageFlags {
6586    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6587        #[allow(deprecated)]
6588        display_flag_bits_u32(
6589            f,
6590            self.0,
6591            &[
6592                BufferUsageFlagBits::TransferSrc,
6593                BufferUsageFlagBits::TransferDst,
6594                BufferUsageFlagBits::UniformTexelBuffer,
6595                BufferUsageFlagBits::StorageTexelBuffer,
6596                BufferUsageFlagBits::UniformBuffer,
6597                BufferUsageFlagBits::StorageBuffer,
6598                BufferUsageFlagBits::IndexBuffer,
6599                BufferUsageFlagBits::VertexBuffer,
6600                BufferUsageFlagBits::IndirectBuffer,
6601                BufferUsageFlagBits::ShaderDeviceAddress,
6602                BufferUsageFlagBits::AccelerationStructureBuildInputReadOnlyKHR,
6603                BufferUsageFlagBits::AccelerationStructureStorageKHR,
6604                BufferUsageFlagBits::ShaderBindingTableKHR,
6605                BufferUsageFlagBits::SamplerDescriptorBufferEXT,
6606                BufferUsageFlagBits::ResourceDescriptorBufferEXT,
6607                BufferUsageFlagBits::PushDescriptorsDescriptorBufferEXT,
6608            ],
6609        )
6610    }
6611}
6612
6613impl std::fmt::Debug for BufferUsageFlags {
6614    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6615        f.debug_tuple("BufferUsageFlags").field(&format!("{self}")).finish()
6616    }
6617}
6618
6619#[repr(u32)]
6620#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6621#[doc = "**Chapter**: Resource Creation"]
6622#[doc = "<br>"]
6623#[doc = "**Description**: Bitmask specifying allowed usage of a buffer"]
6624#[doc = "<br>"]
6625#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6626#[doc = "<br>"]
6627#[doc = "**Reference**: [`VkBufferUsageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html)"]
6628pub enum BufferUsageFlagBits {
6629    #[doc = "Translated from: `VK_BUFFER_USAGE_TRANSFER_SRC_BIT`"]
6630    TransferSrc = 0b1,
6631    #[doc = "Translated from: `VK_BUFFER_USAGE_TRANSFER_DST_BIT`"]
6632    TransferDst = 0b10,
6633    #[doc = "Translated from: `VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT`"]
6634    UniformTexelBuffer = 0b100,
6635    #[doc = "Translated from: `VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT`"]
6636    StorageTexelBuffer = 0b1000,
6637    #[doc = "Translated from: `VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT`"]
6638    UniformBuffer = 0b10000,
6639    #[doc = "Translated from: `VK_BUFFER_USAGE_STORAGE_BUFFER_BIT`"]
6640    StorageBuffer = 0b100000,
6641    #[doc = "Translated from: `VK_BUFFER_USAGE_INDEX_BUFFER_BIT`"]
6642    IndexBuffer = 0b1000000,
6643    #[doc = "Translated from: `VK_BUFFER_USAGE_VERTEX_BUFFER_BIT`"]
6644    VertexBuffer = 0b10000000,
6645    #[doc = "Translated from: `VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT`"]
6646    IndirectBuffer = 0b100000000,
6647    #[doc = "Translated from: `VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT`"]
6648    ShaderDeviceAddress = 0b100000000000000000,
6649    #[doc = "Translated from: `VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR`"]
6650    AccelerationStructureBuildInputReadOnlyKHR = 0b10000000000000000000,
6651    #[doc = "Translated from: `VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR`"]
6652    AccelerationStructureStorageKHR = 0b100000000000000000000,
6653    #[doc = "Translated from: `VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR`"]
6654    ShaderBindingTableKHR = 0b10000000000,
6655    #[doc = "Translated from: `VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT`"]
6656    SamplerDescriptorBufferEXT = 0b1000000000000000000000,
6657    #[doc = "Translated from: `VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT`"]
6658    ResourceDescriptorBufferEXT = 0b10000000000000000000000,
6659    #[doc = "Translated from: `VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT`"]
6660    PushDescriptorsDescriptorBufferEXT = 0b100000000000000000000000000,
6661}
6662
6663impl From<BufferUsageFlagBits> for u32 {
6664    fn from(flag_bits: BufferUsageFlagBits) -> Self {
6665        flag_bits as u32
6666    }
6667}
6668
6669impl std::ops::BitOr for BufferUsageFlagBits {
6670    type Output = BufferUsageFlags;
6671    fn bitor(self, rhs: Self) -> Self::Output {
6672        BufferUsageFlags(self as u32 | rhs as u32)
6673    }
6674}
6675
6676impl std::ops::BitOr<BufferUsageFlags> for BufferUsageFlagBits {
6677    type Output = BufferUsageFlags;
6678    fn bitor(self, rhs: BufferUsageFlags) -> Self::Output {
6679        BufferUsageFlags(self as u32 | rhs.0)
6680    }
6681}
6682
6683impl std::fmt::Display for BufferUsageFlagBits {
6684    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6685        write!(f, "{self:?}")
6686    }
6687}
6688
6689#[repr(C)]
6690#[derive(Clone, Copy, PartialEq, Eq)]
6691#[doc = "**Chapter**: Resource Creation"]
6692#[doc = "<br>"]
6693#[doc = "**Description**: Bitmask of VkBufferCreateFlagBits"]
6694#[doc = "<br>"]
6695#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6696#[doc = "<br>"]
6697#[doc = "**Reference**: [`VkBufferCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlags.html)"]
6698#[doc = "<br>"]
6699#[doc = "**Reference**: [`VkBufferCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html)"]
6700pub struct BufferCreateFlags(u32);
6701
6702impl BufferCreateFlags {
6703    #[must_use]
6704    pub const fn empty() -> Self {
6705        Self(0)
6706    }
6707
6708    #[must_use]
6709    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6710        let rhs = rhs.into();
6711        self.0 & rhs.0 == rhs.0
6712    }
6713}
6714
6715impl std::ops::BitAnd for BufferCreateFlags {
6716    type Output = Self;
6717    fn bitand(self, rhs: Self) -> Self::Output {
6718        Self(self.0 & rhs.0)
6719    }
6720}
6721
6722impl From<BufferCreateFlagBits> for BufferCreateFlags {
6723    fn from(flag_bits: BufferCreateFlagBits) -> Self {
6724        Self(flag_bits as u32)
6725    }
6726}
6727
6728impl std::ops::BitOr<BufferCreateFlagBits> for BufferCreateFlags {
6729    type Output = BufferCreateFlags;
6730    fn bitor(self, rhs: BufferCreateFlagBits) -> Self::Output {
6731        Self(self.0 | rhs as u32)
6732    }
6733}
6734
6735impl std::fmt::Display for BufferCreateFlags {
6736    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6737        #[allow(deprecated)]
6738        display_flag_bits_u32(
6739            f,
6740            self.0,
6741            &[
6742                BufferCreateFlagBits::SparseBinding,
6743                BufferCreateFlagBits::SparseResidency,
6744                BufferCreateFlagBits::SparseAliased,
6745                BufferCreateFlagBits::Protected,
6746                BufferCreateFlagBits::DeviceAddressCaptureReplay,
6747                BufferCreateFlagBits::DescriptorBufferCaptureReplayEXT,
6748            ],
6749        )
6750    }
6751}
6752
6753impl std::fmt::Debug for BufferCreateFlags {
6754    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6755        f.debug_tuple("BufferCreateFlags").field(&format!("{self}")).finish()
6756    }
6757}
6758
6759#[repr(u32)]
6760#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6761#[doc = "**Chapter**: Resource Creation"]
6762#[doc = "<br>"]
6763#[doc = "**Description**: Bitmask specifying additional parameters of a buffer"]
6764#[doc = "<br>"]
6765#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6766#[doc = "<br>"]
6767#[doc = "**Reference**: [`VkBufferCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html)"]
6768pub enum BufferCreateFlagBits {
6769    #[doc = "Translated from: `VK_BUFFER_CREATE_SPARSE_BINDING_BIT`"]
6770    SparseBinding = 0b1,
6771    #[doc = "Translated from: `VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT`"]
6772    SparseResidency = 0b10,
6773    #[doc = "Translated from: `VK_BUFFER_CREATE_SPARSE_ALIASED_BIT`"]
6774    SparseAliased = 0b100,
6775    #[doc = "Translated from: `VK_BUFFER_CREATE_PROTECTED_BIT`"]
6776    Protected = 0b1000,
6777    #[doc = "Translated from: `VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT`"]
6778    DeviceAddressCaptureReplay = 0b10000,
6779    #[doc = "Translated from: `VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT`"]
6780    DescriptorBufferCaptureReplayEXT = 0b100000,
6781}
6782
6783impl From<BufferCreateFlagBits> for u32 {
6784    fn from(flag_bits: BufferCreateFlagBits) -> Self {
6785        flag_bits as u32
6786    }
6787}
6788
6789impl std::ops::BitOr for BufferCreateFlagBits {
6790    type Output = BufferCreateFlags;
6791    fn bitor(self, rhs: Self) -> Self::Output {
6792        BufferCreateFlags(self as u32 | rhs as u32)
6793    }
6794}
6795
6796impl std::ops::BitOr<BufferCreateFlags> for BufferCreateFlagBits {
6797    type Output = BufferCreateFlags;
6798    fn bitor(self, rhs: BufferCreateFlags) -> Self::Output {
6799        BufferCreateFlags(self as u32 | rhs.0)
6800    }
6801}
6802
6803impl std::fmt::Display for BufferCreateFlagBits {
6804    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6805        write!(f, "{self:?}")
6806    }
6807}
6808
6809#[repr(C)]
6810#[derive(Clone, Copy, PartialEq, Eq)]
6811#[doc = "**Chapter**: Resource Creation"]
6812#[doc = "<br>"]
6813#[doc = "**Description**: Bitmask of VkImageUsageFlagBits"]
6814#[doc = "<br>"]
6815#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6816#[doc = "<br>"]
6817#[doc = "**Reference**: [`VkImageUsageFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlags.html)"]
6818#[doc = "<br>"]
6819#[doc = "**Reference**: [`VkImageUsageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html)"]
6820pub struct ImageUsageFlags(u32);
6821
6822impl ImageUsageFlags {
6823    #[must_use]
6824    pub const fn empty() -> Self {
6825        Self(0)
6826    }
6827
6828    #[must_use]
6829    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6830        let rhs = rhs.into();
6831        self.0 & rhs.0 == rhs.0
6832    }
6833}
6834
6835impl std::ops::BitAnd for ImageUsageFlags {
6836    type Output = Self;
6837    fn bitand(self, rhs: Self) -> Self::Output {
6838        Self(self.0 & rhs.0)
6839    }
6840}
6841
6842impl From<ImageUsageFlagBits> for ImageUsageFlags {
6843    fn from(flag_bits: ImageUsageFlagBits) -> Self {
6844        Self(flag_bits as u32)
6845    }
6846}
6847
6848impl std::ops::BitOr<ImageUsageFlagBits> for ImageUsageFlags {
6849    type Output = ImageUsageFlags;
6850    fn bitor(self, rhs: ImageUsageFlagBits) -> Self::Output {
6851        Self(self.0 | rhs as u32)
6852    }
6853}
6854
6855impl std::fmt::Display for ImageUsageFlags {
6856    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6857        #[allow(deprecated)]
6858        display_flag_bits_u32(
6859            f,
6860            self.0,
6861            &[
6862                ImageUsageFlagBits::TransferSrc,
6863                ImageUsageFlagBits::TransferDst,
6864                ImageUsageFlagBits::Sampled,
6865                ImageUsageFlagBits::Storage,
6866                ImageUsageFlagBits::ColorAttachment,
6867                ImageUsageFlagBits::DepthStencilAttachment,
6868                ImageUsageFlagBits::TransientAttachment,
6869                ImageUsageFlagBits::InputAttachment,
6870            ],
6871        )
6872    }
6873}
6874
6875impl std::fmt::Debug for ImageUsageFlags {
6876    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6877        f.debug_tuple("ImageUsageFlags").field(&format!("{self}")).finish()
6878    }
6879}
6880
6881#[repr(u32)]
6882#[derive(Clone, Copy, PartialEq, Eq, Debug)]
6883#[doc = "**Chapter**: Resource Creation"]
6884#[doc = "<br>"]
6885#[doc = "**Description**: Bitmask specifying intended usage of an image"]
6886#[doc = "<br>"]
6887#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6888#[doc = "<br>"]
6889#[doc = "**Reference**: [`VkImageUsageFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html)"]
6890pub enum ImageUsageFlagBits {
6891    #[doc = "Translated from: `VK_IMAGE_USAGE_TRANSFER_SRC_BIT`"]
6892    TransferSrc = 0b1,
6893    #[doc = "Translated from: `VK_IMAGE_USAGE_TRANSFER_DST_BIT`"]
6894    TransferDst = 0b10,
6895    #[doc = "Translated from: `VK_IMAGE_USAGE_SAMPLED_BIT`"]
6896    Sampled = 0b100,
6897    #[doc = "Translated from: `VK_IMAGE_USAGE_STORAGE_BIT`"]
6898    Storage = 0b1000,
6899    #[doc = "Translated from: `VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT`"]
6900    ColorAttachment = 0b10000,
6901    #[doc = "Translated from: `VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT`"]
6902    DepthStencilAttachment = 0b100000,
6903    #[doc = "Translated from: `VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT`"]
6904    TransientAttachment = 0b1000000,
6905    #[doc = "Translated from: `VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT`"]
6906    InputAttachment = 0b10000000,
6907}
6908
6909impl From<ImageUsageFlagBits> for u32 {
6910    fn from(flag_bits: ImageUsageFlagBits) -> Self {
6911        flag_bits as u32
6912    }
6913}
6914
6915impl std::ops::BitOr for ImageUsageFlagBits {
6916    type Output = ImageUsageFlags;
6917    fn bitor(self, rhs: Self) -> Self::Output {
6918        ImageUsageFlags(self as u32 | rhs as u32)
6919    }
6920}
6921
6922impl std::ops::BitOr<ImageUsageFlags> for ImageUsageFlagBits {
6923    type Output = ImageUsageFlags;
6924    fn bitor(self, rhs: ImageUsageFlags) -> Self::Output {
6925        ImageUsageFlags(self as u32 | rhs.0)
6926    }
6927}
6928
6929impl std::fmt::Display for ImageUsageFlagBits {
6930    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6931        write!(f, "{self:?}")
6932    }
6933}
6934
6935#[repr(C)]
6936#[derive(Clone, Copy, PartialEq, Eq)]
6937#[doc = "**Chapter**: Resource Creation"]
6938#[doc = "<br>"]
6939#[doc = "**Description**: Bitmask of VkImageCreateFlagBits"]
6940#[doc = "<br>"]
6941#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
6942#[doc = "<br>"]
6943#[doc = "**Reference**: [`VkImageCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlags.html)"]
6944#[doc = "<br>"]
6945#[doc = "**Reference**: [`VkImageCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html)"]
6946pub struct ImageCreateFlags(u32);
6947
6948impl ImageCreateFlags {
6949    #[must_use]
6950    pub const fn empty() -> Self {
6951        Self(0)
6952    }
6953
6954    #[must_use]
6955    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
6956        let rhs = rhs.into();
6957        self.0 & rhs.0 == rhs.0
6958    }
6959}
6960
6961impl std::ops::BitAnd for ImageCreateFlags {
6962    type Output = Self;
6963    fn bitand(self, rhs: Self) -> Self::Output {
6964        Self(self.0 & rhs.0)
6965    }
6966}
6967
6968impl From<ImageCreateFlagBits> for ImageCreateFlags {
6969    fn from(flag_bits: ImageCreateFlagBits) -> Self {
6970        Self(flag_bits as u32)
6971    }
6972}
6973
6974impl std::ops::BitOr<ImageCreateFlagBits> for ImageCreateFlags {
6975    type Output = ImageCreateFlags;
6976    fn bitor(self, rhs: ImageCreateFlagBits) -> Self::Output {
6977        Self(self.0 | rhs as u32)
6978    }
6979}
6980
6981impl std::fmt::Display for ImageCreateFlags {
6982    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6983        #[allow(deprecated)]
6984        display_flag_bits_u32(
6985            f,
6986            self.0,
6987            &[
6988                ImageCreateFlagBits::CreateSparseBinding,
6989                ImageCreateFlagBits::CreateSparseResidency,
6990                ImageCreateFlagBits::CreateSparseAliased,
6991                ImageCreateFlagBits::CreateMutableFormat,
6992                ImageCreateFlagBits::CreateCubeCompatible,
6993                ImageCreateFlagBits::CreateAlias,
6994                ImageCreateFlagBits::CreateSplitInstanceBindRegions,
6995                ImageCreateFlagBits::Create2dArrayCompatible,
6996                ImageCreateFlagBits::CreateBlockTexelViewCompatible,
6997                ImageCreateFlagBits::CreateExtendedUsage,
6998                ImageCreateFlagBits::CreateProtected,
6999                ImageCreateFlagBits::CreateDisjoint,
7000                ImageCreateFlagBits::CreateDescriptorBufferCaptureReplayEXT,
7001            ],
7002        )
7003    }
7004}
7005
7006impl std::fmt::Debug for ImageCreateFlags {
7007    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7008        f.debug_tuple("ImageCreateFlags").field(&format!("{self}")).finish()
7009    }
7010}
7011
7012#[repr(u32)]
7013#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7014#[doc = "**Chapter**: Resource Creation"]
7015#[doc = "<br>"]
7016#[doc = "**Description**: Bitmask specifying additional parameters of an image"]
7017#[doc = "<br>"]
7018#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7019#[doc = "<br>"]
7020#[doc = "**Reference**: [`VkImageCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html)"]
7021pub enum ImageCreateFlagBits {
7022    #[doc = "Translated from: `VK_IMAGE_CREATE_SPARSE_BINDING_BIT`"]
7023    CreateSparseBinding = 0b1,
7024    #[doc = "Translated from: `VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT`"]
7025    CreateSparseResidency = 0b10,
7026    #[doc = "Translated from: `VK_IMAGE_CREATE_SPARSE_ALIASED_BIT`"]
7027    CreateSparseAliased = 0b100,
7028    #[doc = "Translated from: `VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT`"]
7029    CreateMutableFormat = 0b1000,
7030    #[doc = "Translated from: `VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT`"]
7031    CreateCubeCompatible = 0b10000,
7032    #[doc = "Translated from: `VK_IMAGE_CREATE_ALIAS_BIT`"]
7033    CreateAlias = 0b10000000000,
7034    #[doc = "Translated from: `VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT`"]
7035    CreateSplitInstanceBindRegions = 0b1000000,
7036    #[doc = "Translated from: `VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT`"]
7037    Create2dArrayCompatible = 0b100000,
7038    #[doc = "Translated from: `VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT`"]
7039    CreateBlockTexelViewCompatible = 0b10000000,
7040    #[doc = "Translated from: `VK_IMAGE_CREATE_EXTENDED_USAGE_BIT`"]
7041    CreateExtendedUsage = 0b100000000,
7042    #[doc = "Translated from: `VK_IMAGE_CREATE_PROTECTED_BIT`"]
7043    CreateProtected = 0b100000000000,
7044    #[doc = "Translated from: `VK_IMAGE_CREATE_DISJOINT_BIT`"]
7045    CreateDisjoint = 0b1000000000,
7046    #[doc = "Translated from: `VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT`"]
7047    CreateDescriptorBufferCaptureReplayEXT = 0b10000000000000000,
7048}
7049
7050impl From<ImageCreateFlagBits> for u32 {
7051    fn from(flag_bits: ImageCreateFlagBits) -> Self {
7052        flag_bits as u32
7053    }
7054}
7055
7056impl std::ops::BitOr for ImageCreateFlagBits {
7057    type Output = ImageCreateFlags;
7058    fn bitor(self, rhs: Self) -> Self::Output {
7059        ImageCreateFlags(self as u32 | rhs as u32)
7060    }
7061}
7062
7063impl std::ops::BitOr<ImageCreateFlags> for ImageCreateFlagBits {
7064    type Output = ImageCreateFlags;
7065    fn bitor(self, rhs: ImageCreateFlags) -> Self::Output {
7066        ImageCreateFlags(self as u32 | rhs.0)
7067    }
7068}
7069
7070impl std::fmt::Display for ImageCreateFlagBits {
7071    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7072        write!(f, "{self:?}")
7073    }
7074}
7075
7076#[repr(C)]
7077#[derive(Clone, Copy, PartialEq, Eq)]
7078#[doc = "**Chapter**: Resource Creation"]
7079#[doc = "<br>"]
7080#[doc = "**Description**: Reserved for future use"]
7081#[doc = "<br>"]
7082#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7083#[doc = "<br>"]
7084#[doc = "**Reference**: [`VkImageViewCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateFlags.html)"]
7085#[doc = "<br>"]
7086#[doc = "**Reference**: [`VkImageViewCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateFlagBits.html)"]
7087pub struct ImageViewCreateFlags(u32);
7088
7089impl ImageViewCreateFlags {
7090    #[must_use]
7091    pub const fn empty() -> Self {
7092        Self(0)
7093    }
7094
7095    #[must_use]
7096    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7097        let rhs = rhs.into();
7098        self.0 & rhs.0 == rhs.0
7099    }
7100}
7101
7102impl std::ops::BitAnd for ImageViewCreateFlags {
7103    type Output = Self;
7104    fn bitand(self, rhs: Self) -> Self::Output {
7105        Self(self.0 & rhs.0)
7106    }
7107}
7108
7109impl From<ImageViewCreateFlagBits> for ImageViewCreateFlags {
7110    fn from(flag_bits: ImageViewCreateFlagBits) -> Self {
7111        Self(flag_bits as u32)
7112    }
7113}
7114
7115impl std::ops::BitOr<ImageViewCreateFlagBits> for ImageViewCreateFlags {
7116    type Output = ImageViewCreateFlags;
7117    fn bitor(self, rhs: ImageViewCreateFlagBits) -> Self::Output {
7118        Self(self.0 | rhs as u32)
7119    }
7120}
7121
7122impl std::fmt::Display for ImageViewCreateFlags {
7123    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7124        #[allow(deprecated)]
7125        display_flag_bits_u32(f, self.0, &[ImageViewCreateFlagBits::DescriptorBufferCaptureReplayEXT])
7126    }
7127}
7128
7129impl std::fmt::Debug for ImageViewCreateFlags {
7130    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7131        f.debug_tuple("ImageViewCreateFlags").field(&format!("{self}")).finish()
7132    }
7133}
7134
7135#[repr(u32)]
7136#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7137#[doc = "**Chapter**: Resource Creation"]
7138#[doc = "<br>"]
7139#[doc = "**Description**: Bitmask specifying additional parameters of an image view"]
7140#[doc = "<br>"]
7141#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7142#[doc = "<br>"]
7143#[doc = "**Reference**: [`VkImageViewCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateFlagBits.html)"]
7144pub enum ImageViewCreateFlagBits {
7145    #[doc = "Translated from: `VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT`"]
7146    DescriptorBufferCaptureReplayEXT = 0b100,
7147}
7148
7149impl From<ImageViewCreateFlagBits> for u32 {
7150    fn from(flag_bits: ImageViewCreateFlagBits) -> Self {
7151        flag_bits as u32
7152    }
7153}
7154
7155impl std::ops::BitOr for ImageViewCreateFlagBits {
7156    type Output = ImageViewCreateFlags;
7157    fn bitor(self, rhs: Self) -> Self::Output {
7158        ImageViewCreateFlags(self as u32 | rhs as u32)
7159    }
7160}
7161
7162impl std::ops::BitOr<ImageViewCreateFlags> for ImageViewCreateFlagBits {
7163    type Output = ImageViewCreateFlags;
7164    fn bitor(self, rhs: ImageViewCreateFlags) -> Self::Output {
7165        ImageViewCreateFlags(self as u32 | rhs.0)
7166    }
7167}
7168
7169impl std::fmt::Display for ImageViewCreateFlagBits {
7170    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7171        write!(f, "{self:?}")
7172    }
7173}
7174
7175#[repr(C)]
7176#[derive(Clone, Copy, PartialEq, Eq)]
7177#[doc = "**Chapter**: Resource Creation"]
7178#[doc = "<br>"]
7179#[doc = "**Description**: Bitmask of VkImageAspectFlagBits"]
7180#[doc = "<br>"]
7181#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7182#[doc = "<br>"]
7183#[doc = "**Reference**: [`VkImageAspectFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlags.html)"]
7184#[doc = "<br>"]
7185#[doc = "**Reference**: [`VkImageAspectFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html)"]
7186pub struct ImageAspectFlags(u32);
7187
7188impl ImageAspectFlags {
7189    #[must_use]
7190    pub const fn empty() -> Self {
7191        Self(0)
7192    }
7193
7194    #[must_use]
7195    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7196        let rhs = rhs.into();
7197        self.0 & rhs.0 == rhs.0
7198    }
7199}
7200
7201impl std::ops::BitAnd for ImageAspectFlags {
7202    type Output = Self;
7203    fn bitand(self, rhs: Self) -> Self::Output {
7204        Self(self.0 & rhs.0)
7205    }
7206}
7207
7208impl From<ImageAspectFlagBits> for ImageAspectFlags {
7209    fn from(flag_bits: ImageAspectFlagBits) -> Self {
7210        Self(flag_bits as u32)
7211    }
7212}
7213
7214impl std::ops::BitOr<ImageAspectFlagBits> for ImageAspectFlags {
7215    type Output = ImageAspectFlags;
7216    fn bitor(self, rhs: ImageAspectFlagBits) -> Self::Output {
7217        Self(self.0 | rhs as u32)
7218    }
7219}
7220
7221impl std::fmt::Display for ImageAspectFlags {
7222    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7223        #[allow(deprecated)]
7224        display_flag_bits_u32(
7225            f,
7226            self.0,
7227            &[
7228                ImageAspectFlagBits::Color,
7229                ImageAspectFlagBits::Depth,
7230                ImageAspectFlagBits::Stencil,
7231                ImageAspectFlagBits::Metadata,
7232                ImageAspectFlagBits::Plane0,
7233                ImageAspectFlagBits::Plane1,
7234                ImageAspectFlagBits::Plane2,
7235                ImageAspectFlagBits::None,
7236            ],
7237        )
7238    }
7239}
7240
7241impl std::fmt::Debug for ImageAspectFlags {
7242    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7243        f.debug_tuple("ImageAspectFlags").field(&format!("{self}")).finish()
7244    }
7245}
7246
7247#[repr(u32)]
7248#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7249#[doc = "**Chapter**: Resource Creation"]
7250#[doc = "<br>"]
7251#[doc = "**Description**: Bitmask specifying which aspects of an image are included in a view"]
7252#[doc = "<br>"]
7253#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7254#[doc = "<br>"]
7255#[doc = "**Reference**: [`VkImageAspectFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html)"]
7256pub enum ImageAspectFlagBits {
7257    #[doc = "Translated from: `VK_IMAGE_ASPECT_COLOR_BIT`"]
7258    Color = 0b1,
7259    #[doc = "Translated from: `VK_IMAGE_ASPECT_DEPTH_BIT`"]
7260    Depth = 0b10,
7261    #[doc = "Translated from: `VK_IMAGE_ASPECT_STENCIL_BIT`"]
7262    Stencil = 0b100,
7263    #[doc = "Translated from: `VK_IMAGE_ASPECT_METADATA_BIT`"]
7264    Metadata = 0b1000,
7265    #[doc = "Translated from: `VK_IMAGE_ASPECT_PLANE_0_BIT`"]
7266    Plane0 = 0b10000,
7267    #[doc = "Translated from: `VK_IMAGE_ASPECT_PLANE_1_BIT`"]
7268    Plane1 = 0b100000,
7269    #[doc = "Translated from: `VK_IMAGE_ASPECT_PLANE_2_BIT`"]
7270    Plane2 = 0b1000000,
7271    #[doc = "Translated from: `VK_IMAGE_ASPECT_NONE`"]
7272    None = 0,
7273}
7274
7275impl From<ImageAspectFlagBits> for u32 {
7276    fn from(flag_bits: ImageAspectFlagBits) -> Self {
7277        flag_bits as u32
7278    }
7279}
7280
7281impl std::ops::BitOr for ImageAspectFlagBits {
7282    type Output = ImageAspectFlags;
7283    fn bitor(self, rhs: Self) -> Self::Output {
7284        ImageAspectFlags(self as u32 | rhs as u32)
7285    }
7286}
7287
7288impl std::ops::BitOr<ImageAspectFlags> for ImageAspectFlagBits {
7289    type Output = ImageAspectFlags;
7290    fn bitor(self, rhs: ImageAspectFlags) -> Self::Output {
7291        ImageAspectFlags(self as u32 | rhs.0)
7292    }
7293}
7294
7295impl std::fmt::Display for ImageAspectFlagBits {
7296    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7297        write!(f, "{self:?}")
7298    }
7299}
7300
7301#[repr(C)]
7302#[derive(Clone, Copy, PartialEq, Eq)]
7303#[doc = "**Chapter**: Resource Creation"]
7304#[doc = "<br>"]
7305#[doc = "**Description**: Bitmask of VkAccelerationStructureCreateFlagBitsKHR"]
7306#[doc = "<br>"]
7307#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
7308#[doc = "<br>"]
7309#[doc = "**Reference**: [`VkAccelerationStructureCreateFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCreateFlagsKHR.html)"]
7310#[doc = "<br>"]
7311#[doc = "**Reference**: [`VkAccelerationStructureCreateFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCreateFlagBitsKHR.html)"]
7312pub struct AccelerationStructureCreateFlagsKHR(u32);
7313
7314impl AccelerationStructureCreateFlagsKHR {
7315    #[must_use]
7316    pub const fn empty() -> Self {
7317        Self(0)
7318    }
7319
7320    #[must_use]
7321    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7322        let rhs = rhs.into();
7323        self.0 & rhs.0 == rhs.0
7324    }
7325}
7326
7327impl std::ops::BitAnd for AccelerationStructureCreateFlagsKHR {
7328    type Output = Self;
7329    fn bitand(self, rhs: Self) -> Self::Output {
7330        Self(self.0 & rhs.0)
7331    }
7332}
7333
7334impl From<AccelerationStructureCreateFlagBitsKHR> for AccelerationStructureCreateFlagsKHR {
7335    fn from(flag_bits: AccelerationStructureCreateFlagBitsKHR) -> Self {
7336        Self(flag_bits as u32)
7337    }
7338}
7339
7340impl std::ops::BitOr<AccelerationStructureCreateFlagBitsKHR> for AccelerationStructureCreateFlagsKHR {
7341    type Output = AccelerationStructureCreateFlagsKHR;
7342    fn bitor(self, rhs: AccelerationStructureCreateFlagBitsKHR) -> Self::Output {
7343        Self(self.0 | rhs as u32)
7344    }
7345}
7346
7347impl std::fmt::Display for AccelerationStructureCreateFlagsKHR {
7348    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7349        #[allow(deprecated)]
7350        display_flag_bits_u32(
7351            f,
7352            self.0,
7353            &[
7354                AccelerationStructureCreateFlagBitsKHR::DeviceAddressCaptureReplayKHR,
7355                AccelerationStructureCreateFlagBitsKHR::DescriptorBufferCaptureReplayEXT,
7356            ],
7357        )
7358    }
7359}
7360
7361impl std::fmt::Debug for AccelerationStructureCreateFlagsKHR {
7362    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7363        f.debug_tuple("AccelerationStructureCreateFlagsKHR").field(&format!("{self}")).finish()
7364    }
7365}
7366
7367#[repr(u32)]
7368#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7369#[doc = "**Chapter**: Resource Creation"]
7370#[doc = "<br>"]
7371#[doc = "**Description**: Bitmask specifying additional creation parameters for acceleration structure"]
7372#[doc = "<br>"]
7373#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
7374#[doc = "<br>"]
7375#[doc = "**Reference**: [`VkAccelerationStructureCreateFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCreateFlagBitsKHR.html)"]
7376pub enum AccelerationStructureCreateFlagBitsKHR {
7377    #[doc = "Translated from: `VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR`"]
7378    DeviceAddressCaptureReplayKHR = 0b1,
7379    #[doc = "Translated from: `VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT`"]
7380    DescriptorBufferCaptureReplayEXT = 0b1000,
7381}
7382
7383impl From<AccelerationStructureCreateFlagBitsKHR> for u32 {
7384    fn from(flag_bits: AccelerationStructureCreateFlagBitsKHR) -> Self {
7385        flag_bits as u32
7386    }
7387}
7388
7389impl std::ops::BitOr for AccelerationStructureCreateFlagBitsKHR {
7390    type Output = AccelerationStructureCreateFlagsKHR;
7391    fn bitor(self, rhs: Self) -> Self::Output {
7392        AccelerationStructureCreateFlagsKHR(self as u32 | rhs as u32)
7393    }
7394}
7395
7396impl std::ops::BitOr<AccelerationStructureCreateFlagsKHR> for AccelerationStructureCreateFlagBitsKHR {
7397    type Output = AccelerationStructureCreateFlagsKHR;
7398    fn bitor(self, rhs: AccelerationStructureCreateFlagsKHR) -> Self::Output {
7399        AccelerationStructureCreateFlagsKHR(self as u32 | rhs.0)
7400    }
7401}
7402
7403impl std::fmt::Display for AccelerationStructureCreateFlagBitsKHR {
7404    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7405        write!(f, "{self:?}")
7406    }
7407}
7408
7409#[repr(C)]
7410#[derive(Clone, Copy, PartialEq, Eq)]
7411#[doc = "**Chapter**: Resource Creation"]
7412#[doc = "<br>"]
7413#[doc = "**Description**: Bitmask of VkBuildAccelerationStructureFlagBitsKHR"]
7414#[doc = "<br>"]
7415#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
7416#[doc = "<br>"]
7417#[doc = "**Reference**: [`VkBuildAccelerationStructureFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureFlagsKHR.html)"]
7418#[doc = "<br>"]
7419#[doc = "**Reference**: [`VkBuildAccelerationStructureFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureFlagBitsKHR.html)"]
7420pub struct BuildAccelerationStructureFlagsKHR(u32);
7421
7422impl BuildAccelerationStructureFlagsKHR {
7423    #[must_use]
7424    pub const fn empty() -> Self {
7425        Self(0)
7426    }
7427
7428    #[must_use]
7429    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7430        let rhs = rhs.into();
7431        self.0 & rhs.0 == rhs.0
7432    }
7433}
7434
7435impl std::ops::BitAnd for BuildAccelerationStructureFlagsKHR {
7436    type Output = Self;
7437    fn bitand(self, rhs: Self) -> Self::Output {
7438        Self(self.0 & rhs.0)
7439    }
7440}
7441
7442impl From<BuildAccelerationStructureFlagBitsKHR> for BuildAccelerationStructureFlagsKHR {
7443    fn from(flag_bits: BuildAccelerationStructureFlagBitsKHR) -> Self {
7444        Self(flag_bits as u32)
7445    }
7446}
7447
7448impl std::ops::BitOr<BuildAccelerationStructureFlagBitsKHR> for BuildAccelerationStructureFlagsKHR {
7449    type Output = BuildAccelerationStructureFlagsKHR;
7450    fn bitor(self, rhs: BuildAccelerationStructureFlagBitsKHR) -> Self::Output {
7451        Self(self.0 | rhs as u32)
7452    }
7453}
7454
7455impl std::fmt::Display for BuildAccelerationStructureFlagsKHR {
7456    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7457        #[allow(deprecated)]
7458        display_flag_bits_u32(
7459            f,
7460            self.0,
7461            &[
7462                BuildAccelerationStructureFlagBitsKHR::AllowUpdateKHR,
7463                BuildAccelerationStructureFlagBitsKHR::AllowCompactionKHR,
7464                BuildAccelerationStructureFlagBitsKHR::PreferFastTraceKHR,
7465                BuildAccelerationStructureFlagBitsKHR::PreferFastBuildKHR,
7466                BuildAccelerationStructureFlagBitsKHR::LowMemoryKHR,
7467            ],
7468        )
7469    }
7470}
7471
7472impl std::fmt::Debug for BuildAccelerationStructureFlagsKHR {
7473    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7474        f.debug_tuple("BuildAccelerationStructureFlagsKHR").field(&format!("{self}")).finish()
7475    }
7476}
7477
7478#[repr(u32)]
7479#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7480#[doc = "**Chapter**: Resource Creation"]
7481#[doc = "<br>"]
7482#[doc = "**Description**: Bitmask specifying additional parameters for acceleration structure builds"]
7483#[doc = "<br>"]
7484#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
7485#[doc = "<br>"]
7486#[doc = "**Reference**: [`VkBuildAccelerationStructureFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureFlagBitsKHR.html)"]
7487pub enum BuildAccelerationStructureFlagBitsKHR {
7488    #[doc = "Translated from: `VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR`"]
7489    AllowUpdateKHR = 0b1,
7490    #[doc = "Translated from: `VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR`"]
7491    AllowCompactionKHR = 0b10,
7492    #[doc = "Translated from: `VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR`"]
7493    PreferFastTraceKHR = 0b100,
7494    #[doc = "Translated from: `VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR`"]
7495    PreferFastBuildKHR = 0b1000,
7496    #[doc = "Translated from: `VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR`"]
7497    LowMemoryKHR = 0b10000,
7498}
7499
7500impl From<BuildAccelerationStructureFlagBitsKHR> for u32 {
7501    fn from(flag_bits: BuildAccelerationStructureFlagBitsKHR) -> Self {
7502        flag_bits as u32
7503    }
7504}
7505
7506impl std::ops::BitOr for BuildAccelerationStructureFlagBitsKHR {
7507    type Output = BuildAccelerationStructureFlagsKHR;
7508    fn bitor(self, rhs: Self) -> Self::Output {
7509        BuildAccelerationStructureFlagsKHR(self as u32 | rhs as u32)
7510    }
7511}
7512
7513impl std::ops::BitOr<BuildAccelerationStructureFlagsKHR> for BuildAccelerationStructureFlagBitsKHR {
7514    type Output = BuildAccelerationStructureFlagsKHR;
7515    fn bitor(self, rhs: BuildAccelerationStructureFlagsKHR) -> Self::Output {
7516        BuildAccelerationStructureFlagsKHR(self as u32 | rhs.0)
7517    }
7518}
7519
7520impl std::fmt::Display for BuildAccelerationStructureFlagBitsKHR {
7521    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7522        write!(f, "{self:?}")
7523    }
7524}
7525
7526#[repr(C)]
7527#[derive(Clone, Copy, PartialEq, Eq)]
7528#[doc = "**Chapter**: Resource Creation"]
7529#[doc = "<br>"]
7530#[doc = "**Description**: Bitmask of VkGeometryFlagBitsKHR"]
7531#[doc = "<br>"]
7532#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
7533#[doc = "<br>"]
7534#[doc = "**Reference**: [`VkGeometryFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryFlagsKHR.html)"]
7535#[doc = "<br>"]
7536#[doc = "**Reference**: [`VkGeometryFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryFlagBitsKHR.html)"]
7537pub struct GeometryFlagsKHR(u32);
7538
7539impl GeometryFlagsKHR {
7540    #[must_use]
7541    pub const fn empty() -> Self {
7542        Self(0)
7543    }
7544
7545    #[must_use]
7546    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7547        let rhs = rhs.into();
7548        self.0 & rhs.0 == rhs.0
7549    }
7550}
7551
7552impl std::ops::BitAnd for GeometryFlagsKHR {
7553    type Output = Self;
7554    fn bitand(self, rhs: Self) -> Self::Output {
7555        Self(self.0 & rhs.0)
7556    }
7557}
7558
7559impl From<GeometryFlagBitsKHR> for GeometryFlagsKHR {
7560    fn from(flag_bits: GeometryFlagBitsKHR) -> Self {
7561        Self(flag_bits as u32)
7562    }
7563}
7564
7565impl std::ops::BitOr<GeometryFlagBitsKHR> for GeometryFlagsKHR {
7566    type Output = GeometryFlagsKHR;
7567    fn bitor(self, rhs: GeometryFlagBitsKHR) -> Self::Output {
7568        Self(self.0 | rhs as u32)
7569    }
7570}
7571
7572impl std::fmt::Display for GeometryFlagsKHR {
7573    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7574        #[allow(deprecated)]
7575        display_flag_bits_u32(f, self.0, &[GeometryFlagBitsKHR::OpaqueKHR, GeometryFlagBitsKHR::NoDuplicateAnyHitInvocationKHR])
7576    }
7577}
7578
7579impl std::fmt::Debug for GeometryFlagsKHR {
7580    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7581        f.debug_tuple("GeometryFlagsKHR").field(&format!("{self}")).finish()
7582    }
7583}
7584
7585#[repr(u32)]
7586#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7587#[doc = "**Chapter**: Resource Creation"]
7588#[doc = "<br>"]
7589#[doc = "**Description**: Bitmask specifying additional parameters for a geometry"]
7590#[doc = "<br>"]
7591#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
7592#[doc = "<br>"]
7593#[doc = "**Reference**: [`VkGeometryFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryFlagBitsKHR.html)"]
7594pub enum GeometryFlagBitsKHR {
7595    #[doc = "Translated from: `VK_GEOMETRY_OPAQUE_BIT_KHR`"]
7596    OpaqueKHR = 0b1,
7597    #[doc = "Translated from: `VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR`"]
7598    NoDuplicateAnyHitInvocationKHR = 0b10,
7599}
7600
7601impl From<GeometryFlagBitsKHR> for u32 {
7602    fn from(flag_bits: GeometryFlagBitsKHR) -> Self {
7603        flag_bits as u32
7604    }
7605}
7606
7607impl std::ops::BitOr for GeometryFlagBitsKHR {
7608    type Output = GeometryFlagsKHR;
7609    fn bitor(self, rhs: Self) -> Self::Output {
7610        GeometryFlagsKHR(self as u32 | rhs as u32)
7611    }
7612}
7613
7614impl std::ops::BitOr<GeometryFlagsKHR> for GeometryFlagBitsKHR {
7615    type Output = GeometryFlagsKHR;
7616    fn bitor(self, rhs: GeometryFlagsKHR) -> Self::Output {
7617        GeometryFlagsKHR(self as u32 | rhs.0)
7618    }
7619}
7620
7621impl std::fmt::Display for GeometryFlagBitsKHR {
7622    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7623        write!(f, "{self:?}")
7624    }
7625}
7626
7627#[repr(C)]
7628#[derive(Clone, Copy, PartialEq, Eq)]
7629#[doc = "**Chapter**: Samplers"]
7630#[doc = "<br>"]
7631#[doc = "**Description**: Reserved for future use"]
7632#[doc = "<br>"]
7633#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7634#[doc = "<br>"]
7635#[doc = "**Reference**: [`VkSamplerCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateFlags.html)"]
7636#[doc = "<br>"]
7637#[doc = "**Reference**: [`VkSamplerCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateFlagBits.html)"]
7638pub struct SamplerCreateFlags(u32);
7639
7640impl SamplerCreateFlags {
7641    #[must_use]
7642    pub const fn empty() -> Self {
7643        Self(0)
7644    }
7645
7646    #[must_use]
7647    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7648        let rhs = rhs.into();
7649        self.0 & rhs.0 == rhs.0
7650    }
7651}
7652
7653impl std::ops::BitAnd for SamplerCreateFlags {
7654    type Output = Self;
7655    fn bitand(self, rhs: Self) -> Self::Output {
7656        Self(self.0 & rhs.0)
7657    }
7658}
7659
7660impl From<SamplerCreateFlagBits> for SamplerCreateFlags {
7661    fn from(flag_bits: SamplerCreateFlagBits) -> Self {
7662        Self(flag_bits as u32)
7663    }
7664}
7665
7666impl std::ops::BitOr<SamplerCreateFlagBits> for SamplerCreateFlags {
7667    type Output = SamplerCreateFlags;
7668    fn bitor(self, rhs: SamplerCreateFlagBits) -> Self::Output {
7669        Self(self.0 | rhs as u32)
7670    }
7671}
7672
7673impl std::fmt::Display for SamplerCreateFlags {
7674    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7675        #[allow(deprecated)]
7676        display_flag_bits_u32(f, self.0, &[SamplerCreateFlagBits::DescriptorBufferCaptureReplayEXT])
7677    }
7678}
7679
7680impl std::fmt::Debug for SamplerCreateFlags {
7681    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7682        f.debug_tuple("SamplerCreateFlags").field(&format!("{self}")).finish()
7683    }
7684}
7685
7686#[repr(u32)]
7687#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7688#[doc = "**Chapter**: Samplers"]
7689#[doc = "<br>"]
7690#[doc = "**Description**: Bitmask specifying additional parameters of sampler"]
7691#[doc = "<br>"]
7692#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7693#[doc = "<br>"]
7694#[doc = "**Reference**: [`VkSamplerCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateFlagBits.html)"]
7695pub enum SamplerCreateFlagBits {
7696    #[doc = "Translated from: `VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT`"]
7697    DescriptorBufferCaptureReplayEXT = 0b1000,
7698}
7699
7700impl From<SamplerCreateFlagBits> for u32 {
7701    fn from(flag_bits: SamplerCreateFlagBits) -> Self {
7702        flag_bits as u32
7703    }
7704}
7705
7706impl std::ops::BitOr for SamplerCreateFlagBits {
7707    type Output = SamplerCreateFlags;
7708    fn bitor(self, rhs: Self) -> Self::Output {
7709        SamplerCreateFlags(self as u32 | rhs as u32)
7710    }
7711}
7712
7713impl std::ops::BitOr<SamplerCreateFlags> for SamplerCreateFlagBits {
7714    type Output = SamplerCreateFlags;
7715    fn bitor(self, rhs: SamplerCreateFlags) -> Self::Output {
7716        SamplerCreateFlags(self as u32 | rhs.0)
7717    }
7718}
7719
7720impl std::fmt::Display for SamplerCreateFlagBits {
7721    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7722        write!(f, "{self:?}")
7723    }
7724}
7725
7726#[repr(C)]
7727#[derive(Clone, Copy, PartialEq, Eq)]
7728#[doc = "**Chapter**: Resource Descriptors"]
7729#[doc = "<br>"]
7730#[doc = "**Description**: Bitmask of VkDescriptorSetLayoutCreateFlagBits"]
7731#[doc = "<br>"]
7732#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7733#[doc = "<br>"]
7734#[doc = "**Reference**: [`VkDescriptorSetLayoutCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateFlags.html)"]
7735#[doc = "<br>"]
7736#[doc = "**Reference**: [`VkDescriptorSetLayoutCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateFlagBits.html)"]
7737pub struct DescriptorSetLayoutCreateFlags(u32);
7738
7739impl DescriptorSetLayoutCreateFlags {
7740    #[must_use]
7741    pub const fn empty() -> Self {
7742        Self(0)
7743    }
7744
7745    #[must_use]
7746    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7747        let rhs = rhs.into();
7748        self.0 & rhs.0 == rhs.0
7749    }
7750}
7751
7752impl std::ops::BitAnd for DescriptorSetLayoutCreateFlags {
7753    type Output = Self;
7754    fn bitand(self, rhs: Self) -> Self::Output {
7755        Self(self.0 & rhs.0)
7756    }
7757}
7758
7759impl From<DescriptorSetLayoutCreateFlagBits> for DescriptorSetLayoutCreateFlags {
7760    fn from(flag_bits: DescriptorSetLayoutCreateFlagBits) -> Self {
7761        Self(flag_bits as u32)
7762    }
7763}
7764
7765impl std::ops::BitOr<DescriptorSetLayoutCreateFlagBits> for DescriptorSetLayoutCreateFlags {
7766    type Output = DescriptorSetLayoutCreateFlags;
7767    fn bitor(self, rhs: DescriptorSetLayoutCreateFlagBits) -> Self::Output {
7768        Self(self.0 | rhs as u32)
7769    }
7770}
7771
7772impl std::fmt::Display for DescriptorSetLayoutCreateFlags {
7773    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7774        #[allow(deprecated)]
7775        display_flag_bits_u32(
7776            f,
7777            self.0,
7778            &[
7779                DescriptorSetLayoutCreateFlagBits::UpdateAfterBindPool,
7780                DescriptorSetLayoutCreateFlagBits::DescriptorBufferEXT,
7781                DescriptorSetLayoutCreateFlagBits::EmbeddedImmutableSamplersEXT,
7782            ],
7783        )
7784    }
7785}
7786
7787impl std::fmt::Debug for DescriptorSetLayoutCreateFlags {
7788    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7789        f.debug_tuple("DescriptorSetLayoutCreateFlags").field(&format!("{self}")).finish()
7790    }
7791}
7792
7793#[repr(u32)]
7794#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7795#[doc = "**Chapter**: Resource Descriptors"]
7796#[doc = "<br>"]
7797#[doc = "**Description**: Bitmask specifying descriptor set layout properties"]
7798#[doc = "<br>"]
7799#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7800#[doc = "<br>"]
7801#[doc = "**Reference**: [`VkDescriptorSetLayoutCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateFlagBits.html)"]
7802pub enum DescriptorSetLayoutCreateFlagBits {
7803    #[doc = "Translated from: `VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT`"]
7804    UpdateAfterBindPool = 0b10,
7805    #[doc = "Translated from: `VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT`"]
7806    DescriptorBufferEXT = 0b10000,
7807    #[doc = "Translated from: `VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT`"]
7808    EmbeddedImmutableSamplersEXT = 0b100000,
7809}
7810
7811impl From<DescriptorSetLayoutCreateFlagBits> for u32 {
7812    fn from(flag_bits: DescriptorSetLayoutCreateFlagBits) -> Self {
7813        flag_bits as u32
7814    }
7815}
7816
7817impl std::ops::BitOr for DescriptorSetLayoutCreateFlagBits {
7818    type Output = DescriptorSetLayoutCreateFlags;
7819    fn bitor(self, rhs: Self) -> Self::Output {
7820        DescriptorSetLayoutCreateFlags(self as u32 | rhs as u32)
7821    }
7822}
7823
7824impl std::ops::BitOr<DescriptorSetLayoutCreateFlags> for DescriptorSetLayoutCreateFlagBits {
7825    type Output = DescriptorSetLayoutCreateFlags;
7826    fn bitor(self, rhs: DescriptorSetLayoutCreateFlags) -> Self::Output {
7827        DescriptorSetLayoutCreateFlags(self as u32 | rhs.0)
7828    }
7829}
7830
7831impl std::fmt::Display for DescriptorSetLayoutCreateFlagBits {
7832    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7833        write!(f, "{self:?}")
7834    }
7835}
7836
7837#[repr(C)]
7838#[derive(Clone, Copy, PartialEq, Eq)]
7839#[doc = "**Chapter**: Resource Descriptors"]
7840#[doc = "<br>"]
7841#[doc = "**Description**: Bitmask of pipeline layout creation flag bits"]
7842#[doc = "<br>"]
7843#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7844#[doc = "<br>"]
7845#[doc = "**Reference**: [`VkPipelineLayoutCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateFlags.html)"]
7846#[doc = "<br>"]
7847#[doc = "**Reference**: [`VkPipelineLayoutCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateFlagBits.html)"]
7848pub struct PipelineLayoutCreateFlags(u32);
7849
7850impl PipelineLayoutCreateFlags {
7851    #[must_use]
7852    pub const fn empty() -> Self {
7853        Self(0)
7854    }
7855
7856    #[must_use]
7857    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7858        let rhs = rhs.into();
7859        self.0 & rhs.0 == rhs.0
7860    }
7861}
7862
7863impl std::ops::BitAnd for PipelineLayoutCreateFlags {
7864    type Output = Self;
7865    fn bitand(self, rhs: Self) -> Self::Output {
7866        Self(self.0 & rhs.0)
7867    }
7868}
7869
7870impl From<PipelineLayoutCreateFlagBits> for PipelineLayoutCreateFlags {
7871    fn from(flag_bits: PipelineLayoutCreateFlagBits) -> Self {
7872        Self(flag_bits as u32)
7873    }
7874}
7875
7876impl std::ops::BitOr<PipelineLayoutCreateFlagBits> for PipelineLayoutCreateFlags {
7877    type Output = PipelineLayoutCreateFlags;
7878    fn bitor(self, rhs: PipelineLayoutCreateFlagBits) -> Self::Output {
7879        Self(self.0 | rhs as u32)
7880    }
7881}
7882
7883impl std::fmt::Display for PipelineLayoutCreateFlags {
7884    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7885        #[allow(deprecated)]
7886        display_flag_bits_u32(f, self.0, &[PipelineLayoutCreateFlagBits::Placeholder])
7887    }
7888}
7889
7890impl std::fmt::Debug for PipelineLayoutCreateFlags {
7891    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7892        f.debug_tuple("PipelineLayoutCreateFlags").field(&format!("{self}")).finish()
7893    }
7894}
7895
7896#[repr(u32)]
7897#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7898#[doc = "**Chapter**: Resource Descriptors"]
7899#[doc = "<br>"]
7900#[doc = "**Description**: Pipeline layout creation flag bits"]
7901#[doc = "<br>"]
7902#[doc = "**Provided by**: [`VK_EXT_graphics_pipeline_library`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_graphics_pipeline_library.html)"]
7903#[doc = "<br>"]
7904#[doc = "**Reference**: [`VkPipelineLayoutCreateFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateFlagBits.html)"]
7905pub enum PipelineLayoutCreateFlagBits {
7906    Placeholder = 0b0,
7907}
7908
7909impl From<PipelineLayoutCreateFlagBits> for u32 {
7910    fn from(flag_bits: PipelineLayoutCreateFlagBits) -> Self {
7911        flag_bits as u32
7912    }
7913}
7914
7915impl std::ops::BitOr for PipelineLayoutCreateFlagBits {
7916    type Output = PipelineLayoutCreateFlags;
7917    fn bitor(self, rhs: Self) -> Self::Output {
7918        PipelineLayoutCreateFlags(self as u32 | rhs as u32)
7919    }
7920}
7921
7922impl std::ops::BitOr<PipelineLayoutCreateFlags> for PipelineLayoutCreateFlagBits {
7923    type Output = PipelineLayoutCreateFlags;
7924    fn bitor(self, rhs: PipelineLayoutCreateFlags) -> Self::Output {
7925        PipelineLayoutCreateFlags(self as u32 | rhs.0)
7926    }
7927}
7928
7929impl std::fmt::Display for PipelineLayoutCreateFlagBits {
7930    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7931        write!(f, "{self:?}")
7932    }
7933}
7934
7935#[repr(C)]
7936#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7937#[doc = "**Chapter**: Queries"]
7938#[doc = "<br>"]
7939#[doc = "**Description**: Reserved for future use"]
7940#[doc = "<br>"]
7941#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7942#[doc = "<br>"]
7943#[doc = "**Reference**: [`VkQueryPoolCreateFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPoolCreateFlags.html)"]
7944pub struct QueryPoolCreateFlags(u32);
7945
7946impl QueryPoolCreateFlags {
7947    #[must_use]
7948    pub const fn empty() -> Self {
7949        Self(0)
7950    }
7951}
7952
7953#[repr(C)]
7954#[derive(Clone, Copy, PartialEq, Eq)]
7955#[doc = "**Chapter**: Queries"]
7956#[doc = "<br>"]
7957#[doc = "**Description**: Bitmask of VkQueryControlFlagBits"]
7958#[doc = "<br>"]
7959#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
7960#[doc = "<br>"]
7961#[doc = "**Reference**: [`VkQueryControlFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlags.html)"]
7962#[doc = "<br>"]
7963#[doc = "**Reference**: [`VkQueryControlFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlagBits.html)"]
7964pub struct QueryControlFlags(u32);
7965
7966impl QueryControlFlags {
7967    #[must_use]
7968    pub const fn empty() -> Self {
7969        Self(0)
7970    }
7971
7972    #[must_use]
7973    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
7974        let rhs = rhs.into();
7975        self.0 & rhs.0 == rhs.0
7976    }
7977}
7978
7979impl std::ops::BitAnd for QueryControlFlags {
7980    type Output = Self;
7981    fn bitand(self, rhs: Self) -> Self::Output {
7982        Self(self.0 & rhs.0)
7983    }
7984}
7985
7986impl From<QueryControlFlagBits> for QueryControlFlags {
7987    fn from(flag_bits: QueryControlFlagBits) -> Self {
7988        Self(flag_bits as u32)
7989    }
7990}
7991
7992impl std::ops::BitOr<QueryControlFlagBits> for QueryControlFlags {
7993    type Output = QueryControlFlags;
7994    fn bitor(self, rhs: QueryControlFlagBits) -> Self::Output {
7995        Self(self.0 | rhs as u32)
7996    }
7997}
7998
7999impl std::fmt::Display for QueryControlFlags {
8000    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8001        #[allow(deprecated)]
8002        display_flag_bits_u32(f, self.0, &[QueryControlFlagBits::Precise])
8003    }
8004}
8005
8006impl std::fmt::Debug for QueryControlFlags {
8007    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8008        f.debug_tuple("QueryControlFlags").field(&format!("{self}")).finish()
8009    }
8010}
8011
8012#[repr(u32)]
8013#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8014#[doc = "**Chapter**: Queries"]
8015#[doc = "<br>"]
8016#[doc = "**Description**: Bitmask specifying constraints on a query"]
8017#[doc = "<br>"]
8018#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8019#[doc = "<br>"]
8020#[doc = "**Reference**: [`VkQueryControlFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlagBits.html)"]
8021pub enum QueryControlFlagBits {
8022    #[doc = "Translated from: `VK_QUERY_CONTROL_PRECISE_BIT`"]
8023    Precise = 0b1,
8024}
8025
8026impl From<QueryControlFlagBits> for u32 {
8027    fn from(flag_bits: QueryControlFlagBits) -> Self {
8028        flag_bits as u32
8029    }
8030}
8031
8032impl std::ops::BitOr for QueryControlFlagBits {
8033    type Output = QueryControlFlags;
8034    fn bitor(self, rhs: Self) -> Self::Output {
8035        QueryControlFlags(self as u32 | rhs as u32)
8036    }
8037}
8038
8039impl std::ops::BitOr<QueryControlFlags> for QueryControlFlagBits {
8040    type Output = QueryControlFlags;
8041    fn bitor(self, rhs: QueryControlFlags) -> Self::Output {
8042        QueryControlFlags(self as u32 | rhs.0)
8043    }
8044}
8045
8046impl std::fmt::Display for QueryControlFlagBits {
8047    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8048        write!(f, "{self:?}")
8049    }
8050}
8051
8052#[repr(C)]
8053#[derive(Clone, Copy, PartialEq, Eq)]
8054#[doc = "**Chapter**: Queries"]
8055#[doc = "<br>"]
8056#[doc = "**Description**: Bitmask of VkQueryResultFlagBits"]
8057#[doc = "<br>"]
8058#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8059#[doc = "<br>"]
8060#[doc = "**Reference**: [`VkQueryResultFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlags.html)"]
8061#[doc = "<br>"]
8062#[doc = "**Reference**: [`VkQueryResultFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html)"]
8063pub struct QueryResultFlags(u32);
8064
8065impl QueryResultFlags {
8066    #[must_use]
8067    pub const fn empty() -> Self {
8068        Self(0)
8069    }
8070
8071    #[must_use]
8072    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8073        let rhs = rhs.into();
8074        self.0 & rhs.0 == rhs.0
8075    }
8076}
8077
8078impl std::ops::BitAnd for QueryResultFlags {
8079    type Output = Self;
8080    fn bitand(self, rhs: Self) -> Self::Output {
8081        Self(self.0 & rhs.0)
8082    }
8083}
8084
8085impl From<QueryResultFlagBits> for QueryResultFlags {
8086    fn from(flag_bits: QueryResultFlagBits) -> Self {
8087        Self(flag_bits as u32)
8088    }
8089}
8090
8091impl std::ops::BitOr<QueryResultFlagBits> for QueryResultFlags {
8092    type Output = QueryResultFlags;
8093    fn bitor(self, rhs: QueryResultFlagBits) -> Self::Output {
8094        Self(self.0 | rhs as u32)
8095    }
8096}
8097
8098impl std::fmt::Display for QueryResultFlags {
8099    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8100        #[allow(deprecated)]
8101        display_flag_bits_u32(
8102            f,
8103            self.0,
8104            &[
8105                QueryResultFlagBits::Result64,
8106                QueryResultFlagBits::ResultWait,
8107                QueryResultFlagBits::ResultWithAvailability,
8108                QueryResultFlagBits::ResultPartial,
8109            ],
8110        )
8111    }
8112}
8113
8114impl std::fmt::Debug for QueryResultFlags {
8115    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8116        f.debug_tuple("QueryResultFlags").field(&format!("{self}")).finish()
8117    }
8118}
8119
8120#[repr(u32)]
8121#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8122#[doc = "**Chapter**: Queries"]
8123#[doc = "<br>"]
8124#[doc = "**Description**: Bitmask specifying how and when query results are returned"]
8125#[doc = "<br>"]
8126#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8127#[doc = "<br>"]
8128#[doc = "**Reference**: [`VkQueryResultFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html)"]
8129pub enum QueryResultFlagBits {
8130    #[doc = "Translated from: `VK_QUERY_RESULT_64_BIT`"]
8131    Result64 = 0b1,
8132    #[doc = "Translated from: `VK_QUERY_RESULT_WAIT_BIT`"]
8133    ResultWait = 0b10,
8134    #[doc = "Translated from: `VK_QUERY_RESULT_WITH_AVAILABILITY_BIT`"]
8135    ResultWithAvailability = 0b100,
8136    #[doc = "Translated from: `VK_QUERY_RESULT_PARTIAL_BIT`"]
8137    ResultPartial = 0b1000,
8138}
8139
8140impl From<QueryResultFlagBits> for u32 {
8141    fn from(flag_bits: QueryResultFlagBits) -> Self {
8142        flag_bits as u32
8143    }
8144}
8145
8146impl std::ops::BitOr for QueryResultFlagBits {
8147    type Output = QueryResultFlags;
8148    fn bitor(self, rhs: Self) -> Self::Output {
8149        QueryResultFlags(self as u32 | rhs as u32)
8150    }
8151}
8152
8153impl std::ops::BitOr<QueryResultFlags> for QueryResultFlagBits {
8154    type Output = QueryResultFlags;
8155    fn bitor(self, rhs: QueryResultFlags) -> Self::Output {
8156        QueryResultFlags(self as u32 | rhs.0)
8157    }
8158}
8159
8160impl std::fmt::Display for QueryResultFlagBits {
8161    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8162        write!(f, "{self:?}")
8163    }
8164}
8165
8166#[repr(C)]
8167#[derive(Clone, Copy, PartialEq, Eq)]
8168#[doc = "**Chapter**: Queries"]
8169#[doc = "<br>"]
8170#[doc = "**Description**: Bitmask of VkQueryPipelineStatisticFlagBits"]
8171#[doc = "<br>"]
8172#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8173#[doc = "<br>"]
8174#[doc = "**Reference**: [`VkQueryPipelineStatisticFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlags.html)"]
8175#[doc = "<br>"]
8176#[doc = "**Reference**: [`VkQueryPipelineStatisticFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html)"]
8177pub struct QueryPipelineStatisticFlags(u32);
8178
8179impl QueryPipelineStatisticFlags {
8180    #[must_use]
8181    pub const fn empty() -> Self {
8182        Self(0)
8183    }
8184
8185    #[must_use]
8186    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8187        let rhs = rhs.into();
8188        self.0 & rhs.0 == rhs.0
8189    }
8190}
8191
8192impl std::ops::BitAnd for QueryPipelineStatisticFlags {
8193    type Output = Self;
8194    fn bitand(self, rhs: Self) -> Self::Output {
8195        Self(self.0 & rhs.0)
8196    }
8197}
8198
8199impl From<QueryPipelineStatisticFlagBits> for QueryPipelineStatisticFlags {
8200    fn from(flag_bits: QueryPipelineStatisticFlagBits) -> Self {
8201        Self(flag_bits as u32)
8202    }
8203}
8204
8205impl std::ops::BitOr<QueryPipelineStatisticFlagBits> for QueryPipelineStatisticFlags {
8206    type Output = QueryPipelineStatisticFlags;
8207    fn bitor(self, rhs: QueryPipelineStatisticFlagBits) -> Self::Output {
8208        Self(self.0 | rhs as u32)
8209    }
8210}
8211
8212impl std::fmt::Display for QueryPipelineStatisticFlags {
8213    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8214        #[allow(deprecated)]
8215        display_flag_bits_u32(
8216            f,
8217            self.0,
8218            &[
8219                QueryPipelineStatisticFlagBits::InputAssemblyVertices,
8220                QueryPipelineStatisticFlagBits::InputAssemblyPrimitives,
8221                QueryPipelineStatisticFlagBits::VertexShaderInvocations,
8222                QueryPipelineStatisticFlagBits::GeometryShaderInvocations,
8223                QueryPipelineStatisticFlagBits::GeometryShaderPrimitives,
8224                QueryPipelineStatisticFlagBits::ClippingInvocations,
8225                QueryPipelineStatisticFlagBits::ClippingPrimitives,
8226                QueryPipelineStatisticFlagBits::FragmentShaderInvocations,
8227                QueryPipelineStatisticFlagBits::TessellationControlShaderPatches,
8228                QueryPipelineStatisticFlagBits::TessellationEvaluationShaderInvocations,
8229                QueryPipelineStatisticFlagBits::ComputeShaderInvocations,
8230                QueryPipelineStatisticFlagBits::TaskShaderInvocationsEXT,
8231                QueryPipelineStatisticFlagBits::MeshShaderInvocationsEXT,
8232            ],
8233        )
8234    }
8235}
8236
8237impl std::fmt::Debug for QueryPipelineStatisticFlags {
8238    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8239        f.debug_tuple("QueryPipelineStatisticFlags").field(&format!("{self}")).finish()
8240    }
8241}
8242
8243#[repr(u32)]
8244#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8245#[doc = "**Chapter**: Queries"]
8246#[doc = "<br>"]
8247#[doc = "**Description**: Bitmask specifying queried pipeline statistics"]
8248#[doc = "<br>"]
8249#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8250#[doc = "<br>"]
8251#[doc = "**Reference**: [`VkQueryPipelineStatisticFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html)"]
8252pub enum QueryPipelineStatisticFlagBits {
8253    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT`"]
8254    InputAssemblyVertices = 0b1,
8255    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT`"]
8256    InputAssemblyPrimitives = 0b10,
8257    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT`"]
8258    VertexShaderInvocations = 0b100,
8259    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT`"]
8260    GeometryShaderInvocations = 0b1000,
8261    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT`"]
8262    GeometryShaderPrimitives = 0b10000,
8263    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT`"]
8264    ClippingInvocations = 0b100000,
8265    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT`"]
8266    ClippingPrimitives = 0b1000000,
8267    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT`"]
8268    FragmentShaderInvocations = 0b10000000,
8269    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT`"]
8270    TessellationControlShaderPatches = 0b100000000,
8271    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT`"]
8272    TessellationEvaluationShaderInvocations = 0b1000000000,
8273    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT`"]
8274    ComputeShaderInvocations = 0b10000000000,
8275    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT`"]
8276    TaskShaderInvocationsEXT = 0b100000000000,
8277    #[doc = "Translated from: `VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT`"]
8278    MeshShaderInvocationsEXT = 0b1000000000000,
8279}
8280
8281impl From<QueryPipelineStatisticFlagBits> for u32 {
8282    fn from(flag_bits: QueryPipelineStatisticFlagBits) -> Self {
8283        flag_bits as u32
8284    }
8285}
8286
8287impl std::ops::BitOr for QueryPipelineStatisticFlagBits {
8288    type Output = QueryPipelineStatisticFlags;
8289    fn bitor(self, rhs: Self) -> Self::Output {
8290        QueryPipelineStatisticFlags(self as u32 | rhs as u32)
8291    }
8292}
8293
8294impl std::ops::BitOr<QueryPipelineStatisticFlags> for QueryPipelineStatisticFlagBits {
8295    type Output = QueryPipelineStatisticFlags;
8296    fn bitor(self, rhs: QueryPipelineStatisticFlags) -> Self::Output {
8297        QueryPipelineStatisticFlags(self as u32 | rhs.0)
8298    }
8299}
8300
8301impl std::fmt::Display for QueryPipelineStatisticFlagBits {
8302    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8303        write!(f, "{self:?}")
8304    }
8305}
8306
8307#[repr(C)]
8308#[derive(Clone, Copy, PartialEq, Eq)]
8309#[doc = "**Chapter**: Rasterization"]
8310#[doc = "<br>"]
8311#[doc = "**Description**: Bitmask of VkCullModeFlagBits"]
8312#[doc = "<br>"]
8313#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8314#[doc = "<br>"]
8315#[doc = "**Reference**: [`VkCullModeFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCullModeFlags.html)"]
8316#[doc = "<br>"]
8317#[doc = "**Reference**: [`VkCullModeFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCullModeFlagBits.html)"]
8318pub struct CullModeFlags(u32);
8319
8320impl CullModeFlags {
8321    #[must_use]
8322    pub const fn empty() -> Self {
8323        Self(0)
8324    }
8325
8326    #[must_use]
8327    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8328        let rhs = rhs.into();
8329        self.0 & rhs.0 == rhs.0
8330    }
8331}
8332
8333impl std::ops::BitAnd for CullModeFlags {
8334    type Output = Self;
8335    fn bitand(self, rhs: Self) -> Self::Output {
8336        Self(self.0 & rhs.0)
8337    }
8338}
8339
8340impl From<CullModeFlagBits> for CullModeFlags {
8341    fn from(flag_bits: CullModeFlagBits) -> Self {
8342        Self(flag_bits as u32)
8343    }
8344}
8345
8346impl std::ops::BitOr<CullModeFlagBits> for CullModeFlags {
8347    type Output = CullModeFlags;
8348    fn bitor(self, rhs: CullModeFlagBits) -> Self::Output {
8349        Self(self.0 | rhs as u32)
8350    }
8351}
8352
8353impl std::fmt::Display for CullModeFlags {
8354    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8355        #[allow(deprecated)]
8356        display_flag_bits_u32(f, self.0, &[CullModeFlagBits::None, CullModeFlagBits::Front, CullModeFlagBits::Back, CullModeFlagBits::FrontAndBack])
8357    }
8358}
8359
8360impl std::fmt::Debug for CullModeFlags {
8361    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8362        f.debug_tuple("CullModeFlags").field(&format!("{self}")).finish()
8363    }
8364}
8365
8366#[repr(u32)]
8367#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8368#[doc = "**Chapter**: Rasterization"]
8369#[doc = "<br>"]
8370#[doc = "**Description**: Bitmask controlling triangle culling"]
8371#[doc = "<br>"]
8372#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8373#[doc = "<br>"]
8374#[doc = "**Reference**: [`VkCullModeFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCullModeFlagBits.html)"]
8375pub enum CullModeFlagBits {
8376    #[doc = "Translated from: `VK_CULL_MODE_NONE`"]
8377    None = 0,
8378    #[doc = "Translated from: `VK_CULL_MODE_FRONT_BIT`"]
8379    Front = 0b1,
8380    #[doc = "Translated from: `VK_CULL_MODE_BACK_BIT`"]
8381    Back = 0b10,
8382    #[doc = "Translated from: `VK_CULL_MODE_FRONT_AND_BACK`"]
8383    FrontAndBack = 0x3,
8384}
8385
8386impl From<CullModeFlagBits> for u32 {
8387    fn from(flag_bits: CullModeFlagBits) -> Self {
8388        flag_bits as u32
8389    }
8390}
8391
8392impl std::ops::BitOr for CullModeFlagBits {
8393    type Output = CullModeFlags;
8394    fn bitor(self, rhs: Self) -> Self::Output {
8395        CullModeFlags(self as u32 | rhs as u32)
8396    }
8397}
8398
8399impl std::ops::BitOr<CullModeFlags> for CullModeFlagBits {
8400    type Output = CullModeFlags;
8401    fn bitor(self, rhs: CullModeFlags) -> Self::Output {
8402        CullModeFlags(self as u32 | rhs.0)
8403    }
8404}
8405
8406impl std::fmt::Display for CullModeFlagBits {
8407    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8408        write!(f, "{self:?}")
8409    }
8410}
8411
8412#[repr(C)]
8413#[derive(Clone, Copy, PartialEq, Eq)]
8414#[doc = "**Chapter**: The Framebuffer"]
8415#[doc = "<br>"]
8416#[doc = "**Description**: Bitmask of VkColorComponentFlagBits"]
8417#[doc = "<br>"]
8418#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8419#[doc = "<br>"]
8420#[doc = "**Reference**: [`VkColorComponentFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlags.html)"]
8421#[doc = "<br>"]
8422#[doc = "**Reference**: [`VkColorComponentFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html)"]
8423pub struct ColorComponentFlags(u32);
8424
8425impl ColorComponentFlags {
8426    #[must_use]
8427    pub const fn empty() -> Self {
8428        Self(0)
8429    }
8430
8431    #[must_use]
8432    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8433        let rhs = rhs.into();
8434        self.0 & rhs.0 == rhs.0
8435    }
8436}
8437
8438impl std::ops::BitAnd for ColorComponentFlags {
8439    type Output = Self;
8440    fn bitand(self, rhs: Self) -> Self::Output {
8441        Self(self.0 & rhs.0)
8442    }
8443}
8444
8445impl From<ColorComponentFlagBits> for ColorComponentFlags {
8446    fn from(flag_bits: ColorComponentFlagBits) -> Self {
8447        Self(flag_bits as u32)
8448    }
8449}
8450
8451impl std::ops::BitOr<ColorComponentFlagBits> for ColorComponentFlags {
8452    type Output = ColorComponentFlags;
8453    fn bitor(self, rhs: ColorComponentFlagBits) -> Self::Output {
8454        Self(self.0 | rhs as u32)
8455    }
8456}
8457
8458impl std::fmt::Display for ColorComponentFlags {
8459    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8460        #[allow(deprecated)]
8461        display_flag_bits_u32(f, self.0, &[ColorComponentFlagBits::R, ColorComponentFlagBits::G, ColorComponentFlagBits::B, ColorComponentFlagBits::A])
8462    }
8463}
8464
8465impl std::fmt::Debug for ColorComponentFlags {
8466    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8467        f.debug_tuple("ColorComponentFlags").field(&format!("{self}")).finish()
8468    }
8469}
8470
8471#[repr(u32)]
8472#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8473#[doc = "**Chapter**: The Framebuffer"]
8474#[doc = "<br>"]
8475#[doc = "**Description**: Bitmask controlling which components are written to the framebuffer"]
8476#[doc = "<br>"]
8477#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
8478#[doc = "<br>"]
8479#[doc = "**Reference**: [`VkColorComponentFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html)"]
8480pub enum ColorComponentFlagBits {
8481    #[doc = "Translated from: `VK_COLOR_COMPONENT_R_BIT`"]
8482    R = 0b1,
8483    #[doc = "Translated from: `VK_COLOR_COMPONENT_G_BIT`"]
8484    G = 0b10,
8485    #[doc = "Translated from: `VK_COLOR_COMPONENT_B_BIT`"]
8486    B = 0b100,
8487    #[doc = "Translated from: `VK_COLOR_COMPONENT_A_BIT`"]
8488    A = 0b1000,
8489}
8490
8491impl From<ColorComponentFlagBits> for u32 {
8492    fn from(flag_bits: ColorComponentFlagBits) -> Self {
8493        flag_bits as u32
8494    }
8495}
8496
8497impl std::ops::BitOr for ColorComponentFlagBits {
8498    type Output = ColorComponentFlags;
8499    fn bitor(self, rhs: Self) -> Self::Output {
8500        ColorComponentFlags(self as u32 | rhs as u32)
8501    }
8502}
8503
8504impl std::ops::BitOr<ColorComponentFlags> for ColorComponentFlagBits {
8505    type Output = ColorComponentFlags;
8506    fn bitor(self, rhs: ColorComponentFlags) -> Self::Output {
8507        ColorComponentFlags(self as u32 | rhs.0)
8508    }
8509}
8510
8511impl std::fmt::Display for ColorComponentFlagBits {
8512    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8513        write!(f, "{self:?}")
8514    }
8515}
8516
8517#[repr(C)]
8518#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8519#[doc = "**Chapter**: Window System Integration (WSI)"]
8520#[doc = "<br>"]
8521#[doc = "**Description**: Reserved for future use"]
8522#[doc = "<br>"]
8523#[doc = "**Provided by**: [`VK_KHR_win32_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_win32_surface.html)"]
8524#[doc = "<br>"]
8525#[doc = "**Reference**: [`VkWin32SurfaceCreateFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkWin32SurfaceCreateFlagsKHR.html)"]
8526pub struct Win32SurfaceCreateFlagsKHR(u32);
8527
8528impl Win32SurfaceCreateFlagsKHR {
8529    #[must_use]
8530    pub const fn empty() -> Self {
8531        Self(0)
8532    }
8533}
8534
8535#[repr(C)]
8536#[derive(Clone, Copy, PartialEq, Eq)]
8537#[doc = "**Chapter**: Window System Integration (WSI)"]
8538#[doc = "<br>"]
8539#[doc = "**Description**: Bitmask of VkSurfaceTransformFlagBitsKHR"]
8540#[doc = "<br>"]
8541#[doc = "**Provided by**: [`VK_KHR_display`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_display.html)"]
8542#[doc = "<br>"]
8543#[doc = "**Reference**: [`VkSurfaceTransformFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSurfaceTransformFlagsKHR.html)"]
8544#[doc = "<br>"]
8545#[doc = "**Reference**: [`VkSurfaceTransformFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSurfaceTransformFlagBitsKHR.html)"]
8546pub struct SurfaceTransformFlagsKHR(u32);
8547
8548impl SurfaceTransformFlagsKHR {
8549    #[must_use]
8550    pub const fn empty() -> Self {
8551        Self(0)
8552    }
8553
8554    #[must_use]
8555    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8556        let rhs = rhs.into();
8557        self.0 & rhs.0 == rhs.0
8558    }
8559}
8560
8561impl std::ops::BitAnd for SurfaceTransformFlagsKHR {
8562    type Output = Self;
8563    fn bitand(self, rhs: Self) -> Self::Output {
8564        Self(self.0 & rhs.0)
8565    }
8566}
8567
8568impl From<SurfaceTransformFlagBitsKHR> for SurfaceTransformFlagsKHR {
8569    fn from(flag_bits: SurfaceTransformFlagBitsKHR) -> Self {
8570        Self(flag_bits as u32)
8571    }
8572}
8573
8574impl std::ops::BitOr<SurfaceTransformFlagBitsKHR> for SurfaceTransformFlagsKHR {
8575    type Output = SurfaceTransformFlagsKHR;
8576    fn bitor(self, rhs: SurfaceTransformFlagBitsKHR) -> Self::Output {
8577        Self(self.0 | rhs as u32)
8578    }
8579}
8580
8581impl std::fmt::Display for SurfaceTransformFlagsKHR {
8582    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8583        #[allow(deprecated)]
8584        display_flag_bits_u32(
8585            f,
8586            self.0,
8587            &[
8588                SurfaceTransformFlagBitsKHR::IdentityKHR,
8589                SurfaceTransformFlagBitsKHR::Rotate90KHR,
8590                SurfaceTransformFlagBitsKHR::Rotate180KHR,
8591                SurfaceTransformFlagBitsKHR::Rotate270KHR,
8592                SurfaceTransformFlagBitsKHR::HorizontalMirrorKHR,
8593                SurfaceTransformFlagBitsKHR::HorizontalMirrorRotate90KHR,
8594                SurfaceTransformFlagBitsKHR::HorizontalMirrorRotate180KHR,
8595                SurfaceTransformFlagBitsKHR::HorizontalMirrorRotate270KHR,
8596                SurfaceTransformFlagBitsKHR::InheritKHR,
8597            ],
8598        )
8599    }
8600}
8601
8602impl std::fmt::Debug for SurfaceTransformFlagsKHR {
8603    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8604        f.debug_tuple("SurfaceTransformFlagsKHR").field(&format!("{self}")).finish()
8605    }
8606}
8607
8608#[repr(u32)]
8609#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8610#[doc = "**Chapter**: Window System Integration (WSI)"]
8611#[doc = "<br>"]
8612#[doc = "**Description**: Presentation transforms supported on a device"]
8613#[doc = "<br>"]
8614#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
8615#[doc = "<br>"]
8616#[doc = "**Reference**: [`VkSurfaceTransformFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSurfaceTransformFlagBitsKHR.html)"]
8617pub enum SurfaceTransformFlagBitsKHR {
8618    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR`"]
8619    IdentityKHR = 0b1,
8620    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR`"]
8621    Rotate90KHR = 0b10,
8622    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR`"]
8623    Rotate180KHR = 0b100,
8624    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR`"]
8625    Rotate270KHR = 0b1000,
8626    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR`"]
8627    HorizontalMirrorKHR = 0b10000,
8628    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR`"]
8629    HorizontalMirrorRotate90KHR = 0b100000,
8630    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR`"]
8631    HorizontalMirrorRotate180KHR = 0b1000000,
8632    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR`"]
8633    HorizontalMirrorRotate270KHR = 0b10000000,
8634    #[doc = "Translated from: `VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR`"]
8635    InheritKHR = 0b100000000,
8636}
8637
8638impl From<SurfaceTransformFlagBitsKHR> for u32 {
8639    fn from(flag_bits: SurfaceTransformFlagBitsKHR) -> Self {
8640        flag_bits as u32
8641    }
8642}
8643
8644impl std::ops::BitOr for SurfaceTransformFlagBitsKHR {
8645    type Output = SurfaceTransformFlagsKHR;
8646    fn bitor(self, rhs: Self) -> Self::Output {
8647        SurfaceTransformFlagsKHR(self as u32 | rhs as u32)
8648    }
8649}
8650
8651impl std::ops::BitOr<SurfaceTransformFlagsKHR> for SurfaceTransformFlagBitsKHR {
8652    type Output = SurfaceTransformFlagsKHR;
8653    fn bitor(self, rhs: SurfaceTransformFlagsKHR) -> Self::Output {
8654        SurfaceTransformFlagsKHR(self as u32 | rhs.0)
8655    }
8656}
8657
8658impl std::fmt::Display for SurfaceTransformFlagBitsKHR {
8659    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8660        write!(f, "{self:?}")
8661    }
8662}
8663
8664#[repr(C)]
8665#[derive(Clone, Copy, PartialEq, Eq)]
8666#[doc = "**Chapter**: Window System Integration (WSI)"]
8667#[doc = "<br>"]
8668#[doc = "**Description**: Bitmask of VkCompositeAlphaFlagBitsKHR"]
8669#[doc = "<br>"]
8670#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
8671#[doc = "<br>"]
8672#[doc = "**Reference**: [`VkCompositeAlphaFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCompositeAlphaFlagsKHR.html)"]
8673#[doc = "<br>"]
8674#[doc = "**Reference**: [`VkCompositeAlphaFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCompositeAlphaFlagBitsKHR.html)"]
8675pub struct CompositeAlphaFlagsKHR(u32);
8676
8677impl CompositeAlphaFlagsKHR {
8678    #[must_use]
8679    pub const fn empty() -> Self {
8680        Self(0)
8681    }
8682
8683    #[must_use]
8684    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8685        let rhs = rhs.into();
8686        self.0 & rhs.0 == rhs.0
8687    }
8688}
8689
8690impl std::ops::BitAnd for CompositeAlphaFlagsKHR {
8691    type Output = Self;
8692    fn bitand(self, rhs: Self) -> Self::Output {
8693        Self(self.0 & rhs.0)
8694    }
8695}
8696
8697impl From<CompositeAlphaFlagBitsKHR> for CompositeAlphaFlagsKHR {
8698    fn from(flag_bits: CompositeAlphaFlagBitsKHR) -> Self {
8699        Self(flag_bits as u32)
8700    }
8701}
8702
8703impl std::ops::BitOr<CompositeAlphaFlagBitsKHR> for CompositeAlphaFlagsKHR {
8704    type Output = CompositeAlphaFlagsKHR;
8705    fn bitor(self, rhs: CompositeAlphaFlagBitsKHR) -> Self::Output {
8706        Self(self.0 | rhs as u32)
8707    }
8708}
8709
8710impl std::fmt::Display for CompositeAlphaFlagsKHR {
8711    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8712        #[allow(deprecated)]
8713        display_flag_bits_u32(
8714            f,
8715            self.0,
8716            &[
8717                CompositeAlphaFlagBitsKHR::OpaqueKHR,
8718                CompositeAlphaFlagBitsKHR::PreMultipliedKHR,
8719                CompositeAlphaFlagBitsKHR::PostMultipliedKHR,
8720                CompositeAlphaFlagBitsKHR::InheritKHR,
8721            ],
8722        )
8723    }
8724}
8725
8726impl std::fmt::Debug for CompositeAlphaFlagsKHR {
8727    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8728        f.debug_tuple("CompositeAlphaFlagsKHR").field(&format!("{self}")).finish()
8729    }
8730}
8731
8732#[repr(u32)]
8733#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8734#[doc = "**Chapter**: Window System Integration (WSI)"]
8735#[doc = "<br>"]
8736#[doc = "**Description**: Alpha compositing modes supported on a device"]
8737#[doc = "<br>"]
8738#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
8739#[doc = "<br>"]
8740#[doc = "**Reference**: [`VkCompositeAlphaFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCompositeAlphaFlagBitsKHR.html)"]
8741pub enum CompositeAlphaFlagBitsKHR {
8742    #[doc = "Translated from: `VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR`"]
8743    OpaqueKHR = 0b1,
8744    #[doc = "Translated from: `VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR`"]
8745    PreMultipliedKHR = 0b10,
8746    #[doc = "Translated from: `VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR`"]
8747    PostMultipliedKHR = 0b100,
8748    #[doc = "Translated from: `VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR`"]
8749    InheritKHR = 0b1000,
8750}
8751
8752impl From<CompositeAlphaFlagBitsKHR> for u32 {
8753    fn from(flag_bits: CompositeAlphaFlagBitsKHR) -> Self {
8754        flag_bits as u32
8755    }
8756}
8757
8758impl std::ops::BitOr for CompositeAlphaFlagBitsKHR {
8759    type Output = CompositeAlphaFlagsKHR;
8760    fn bitor(self, rhs: Self) -> Self::Output {
8761        CompositeAlphaFlagsKHR(self as u32 | rhs as u32)
8762    }
8763}
8764
8765impl std::ops::BitOr<CompositeAlphaFlagsKHR> for CompositeAlphaFlagBitsKHR {
8766    type Output = CompositeAlphaFlagsKHR;
8767    fn bitor(self, rhs: CompositeAlphaFlagsKHR) -> Self::Output {
8768        CompositeAlphaFlagsKHR(self as u32 | rhs.0)
8769    }
8770}
8771
8772impl std::fmt::Display for CompositeAlphaFlagBitsKHR {
8773    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8774        write!(f, "{self:?}")
8775    }
8776}
8777
8778#[repr(C)]
8779#[derive(Clone, Copy, PartialEq, Eq)]
8780#[doc = "**Chapter**: Window System Integration (WSI)"]
8781#[doc = "<br>"]
8782#[doc = "**Description**: Bitmask of VkSwapchainCreateFlagBitsKHR"]
8783#[doc = "<br>"]
8784#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
8785#[doc = "<br>"]
8786#[doc = "**Reference**: [`VkSwapchainCreateFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSwapchainCreateFlagsKHR.html)"]
8787#[doc = "<br>"]
8788#[doc = "**Reference**: [`VkSwapchainCreateFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSwapchainCreateFlagBitsKHR.html)"]
8789pub struct SwapchainCreateFlagsKHR(u32);
8790
8791impl SwapchainCreateFlagsKHR {
8792    #[must_use]
8793    pub const fn empty() -> Self {
8794        Self(0)
8795    }
8796
8797    #[must_use]
8798    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8799        let rhs = rhs.into();
8800        self.0 & rhs.0 == rhs.0
8801    }
8802}
8803
8804impl std::ops::BitAnd for SwapchainCreateFlagsKHR {
8805    type Output = Self;
8806    fn bitand(self, rhs: Self) -> Self::Output {
8807        Self(self.0 & rhs.0)
8808    }
8809}
8810
8811impl From<SwapchainCreateFlagBitsKHR> for SwapchainCreateFlagsKHR {
8812    fn from(flag_bits: SwapchainCreateFlagBitsKHR) -> Self {
8813        Self(flag_bits as u32)
8814    }
8815}
8816
8817impl std::ops::BitOr<SwapchainCreateFlagBitsKHR> for SwapchainCreateFlagsKHR {
8818    type Output = SwapchainCreateFlagsKHR;
8819    fn bitor(self, rhs: SwapchainCreateFlagBitsKHR) -> Self::Output {
8820        Self(self.0 | rhs as u32)
8821    }
8822}
8823
8824impl std::fmt::Display for SwapchainCreateFlagsKHR {
8825    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8826        #[allow(deprecated)]
8827        display_flag_bits_u32(f, self.0, &[SwapchainCreateFlagBitsKHR::SplitInstanceBindRegionsKHR, SwapchainCreateFlagBitsKHR::ProtectedKHR])
8828    }
8829}
8830
8831impl std::fmt::Debug for SwapchainCreateFlagsKHR {
8832    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8833        f.debug_tuple("SwapchainCreateFlagsKHR").field(&format!("{self}")).finish()
8834    }
8835}
8836
8837#[repr(u32)]
8838#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8839#[doc = "**Chapter**: Window System Integration (WSI)"]
8840#[doc = "<br>"]
8841#[doc = "**Description**: Bitmask controlling swapchain creation"]
8842#[doc = "<br>"]
8843#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
8844#[doc = "<br>"]
8845#[doc = "**Reference**: [`VkSwapchainCreateFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSwapchainCreateFlagBitsKHR.html)"]
8846pub enum SwapchainCreateFlagBitsKHR {
8847    #[doc = "Translated from: `VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR`"]
8848    SplitInstanceBindRegionsKHR = 0b1,
8849    #[doc = "Translated from: `VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR`"]
8850    ProtectedKHR = 0b10,
8851}
8852
8853impl From<SwapchainCreateFlagBitsKHR> for u32 {
8854    fn from(flag_bits: SwapchainCreateFlagBitsKHR) -> Self {
8855        flag_bits as u32
8856    }
8857}
8858
8859impl std::ops::BitOr for SwapchainCreateFlagBitsKHR {
8860    type Output = SwapchainCreateFlagsKHR;
8861    fn bitor(self, rhs: Self) -> Self::Output {
8862        SwapchainCreateFlagsKHR(self as u32 | rhs as u32)
8863    }
8864}
8865
8866impl std::ops::BitOr<SwapchainCreateFlagsKHR> for SwapchainCreateFlagBitsKHR {
8867    type Output = SwapchainCreateFlagsKHR;
8868    fn bitor(self, rhs: SwapchainCreateFlagsKHR) -> Self::Output {
8869        SwapchainCreateFlagsKHR(self as u32 | rhs.0)
8870    }
8871}
8872
8873impl std::fmt::Display for SwapchainCreateFlagBitsKHR {
8874    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8875        write!(f, "{self:?}")
8876    }
8877}
8878
8879#[repr(C)]
8880#[derive(Clone, Copy, PartialEq, Eq)]
8881#[doc = "**Chapter**: Acceleration Structures"]
8882#[doc = "<br>"]
8883#[doc = "**Description**: Bitmask of VkGeometryInstanceFlagBitsKHR"]
8884#[doc = "<br>"]
8885#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
8886#[doc = "<br>"]
8887#[doc = "**Reference**: [`VkGeometryInstanceFlagsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryInstanceFlagsKHR.html)"]
8888#[doc = "<br>"]
8889#[doc = "**Reference**: [`VkGeometryInstanceFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryInstanceFlagBitsKHR.html)"]
8890pub struct GeometryInstanceFlagsKHR(u32);
8891
8892impl GeometryInstanceFlagsKHR {
8893    #[must_use]
8894    pub const fn empty() -> Self {
8895        Self(0)
8896    }
8897
8898    #[must_use]
8899    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
8900        let rhs = rhs.into();
8901        self.0 & rhs.0 == rhs.0
8902    }
8903}
8904
8905impl std::ops::BitAnd for GeometryInstanceFlagsKHR {
8906    type Output = Self;
8907    fn bitand(self, rhs: Self) -> Self::Output {
8908        Self(self.0 & rhs.0)
8909    }
8910}
8911
8912impl From<GeometryInstanceFlagBitsKHR> for GeometryInstanceFlagsKHR {
8913    fn from(flag_bits: GeometryInstanceFlagBitsKHR) -> Self {
8914        Self(flag_bits as u32)
8915    }
8916}
8917
8918impl std::ops::BitOr<GeometryInstanceFlagBitsKHR> for GeometryInstanceFlagsKHR {
8919    type Output = GeometryInstanceFlagsKHR;
8920    fn bitor(self, rhs: GeometryInstanceFlagBitsKHR) -> Self::Output {
8921        Self(self.0 | rhs as u32)
8922    }
8923}
8924
8925impl std::fmt::Display for GeometryInstanceFlagsKHR {
8926    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8927        #[allow(deprecated)]
8928        display_flag_bits_u32(
8929            f,
8930            self.0,
8931            &[
8932                GeometryInstanceFlagBitsKHR::TriangleFacingCullDisableKHR,
8933                GeometryInstanceFlagBitsKHR::TriangleFlipFacingKHR,
8934                GeometryInstanceFlagBitsKHR::ForceOpaqueKHR,
8935                GeometryInstanceFlagBitsKHR::ForceNoOpaqueKHR,
8936            ],
8937        )
8938    }
8939}
8940
8941impl std::fmt::Debug for GeometryInstanceFlagsKHR {
8942    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8943        f.debug_tuple("GeometryInstanceFlagsKHR").field(&format!("{self}")).finish()
8944    }
8945}
8946
8947#[repr(u32)]
8948#[derive(Clone, Copy, PartialEq, Eq, Debug)]
8949#[doc = "**Chapter**: Acceleration Structures"]
8950#[doc = "<br>"]
8951#[doc = "**Description**: Instance flag bits"]
8952#[doc = "<br>"]
8953#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
8954#[doc = "<br>"]
8955#[doc = "**Reference**: [`VkGeometryInstanceFlagBitsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryInstanceFlagBitsKHR.html)"]
8956pub enum GeometryInstanceFlagBitsKHR {
8957    #[doc = "Translated from: `VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR`"]
8958    TriangleFacingCullDisableKHR = 0b1,
8959    #[doc = "Translated from: `VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR`"]
8960    TriangleFlipFacingKHR = 0b10,
8961    #[doc = "Translated from: `VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR`"]
8962    ForceOpaqueKHR = 0b100,
8963    #[doc = "Translated from: `VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR`"]
8964    ForceNoOpaqueKHR = 0b1000,
8965}
8966
8967impl From<GeometryInstanceFlagBitsKHR> for u32 {
8968    fn from(flag_bits: GeometryInstanceFlagBitsKHR) -> Self {
8969        flag_bits as u32
8970    }
8971}
8972
8973impl std::ops::BitOr for GeometryInstanceFlagBitsKHR {
8974    type Output = GeometryInstanceFlagsKHR;
8975    fn bitor(self, rhs: Self) -> Self::Output {
8976        GeometryInstanceFlagsKHR(self as u32 | rhs as u32)
8977    }
8978}
8979
8980impl std::ops::BitOr<GeometryInstanceFlagsKHR> for GeometryInstanceFlagBitsKHR {
8981    type Output = GeometryInstanceFlagsKHR;
8982    fn bitor(self, rhs: GeometryInstanceFlagsKHR) -> Self::Output {
8983        GeometryInstanceFlagsKHR(self as u32 | rhs.0)
8984    }
8985}
8986
8987impl std::fmt::Display for GeometryInstanceFlagBitsKHR {
8988    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8989        write!(f, "{self:?}")
8990    }
8991}
8992
8993#[repr(C)]
8994#[derive(Clone, Copy, PartialEq, Eq)]
8995#[doc = "**Chapter**: Limits"]
8996#[doc = "<br>"]
8997#[doc = "**Description**: Bitmask of VkSampleCountFlagBits"]
8998#[doc = "<br>"]
8999#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9000#[doc = "<br>"]
9001#[doc = "**Reference**: [`VkSampleCountFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlags.html)"]
9002#[doc = "<br>"]
9003#[doc = "**Reference**: [`VkSampleCountFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html)"]
9004pub struct SampleCountFlags(u32);
9005
9006impl SampleCountFlags {
9007    #[must_use]
9008    pub const fn empty() -> Self {
9009        Self(0)
9010    }
9011
9012    #[must_use]
9013    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
9014        let rhs = rhs.into();
9015        self.0 & rhs.0 == rhs.0
9016    }
9017}
9018
9019impl std::ops::BitAnd for SampleCountFlags {
9020    type Output = Self;
9021    fn bitand(self, rhs: Self) -> Self::Output {
9022        Self(self.0 & rhs.0)
9023    }
9024}
9025
9026impl From<SampleCountFlagBits> for SampleCountFlags {
9027    fn from(flag_bits: SampleCountFlagBits) -> Self {
9028        Self(flag_bits as u32)
9029    }
9030}
9031
9032impl std::ops::BitOr<SampleCountFlagBits> for SampleCountFlags {
9033    type Output = SampleCountFlags;
9034    fn bitor(self, rhs: SampleCountFlagBits) -> Self::Output {
9035        Self(self.0 | rhs as u32)
9036    }
9037}
9038
9039impl std::fmt::Display for SampleCountFlags {
9040    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9041        #[allow(deprecated)]
9042        display_flag_bits_u32(
9043            f,
9044            self.0,
9045            &[
9046                SampleCountFlagBits::Count1,
9047                SampleCountFlagBits::Count2,
9048                SampleCountFlagBits::Count4,
9049                SampleCountFlagBits::Count8,
9050                SampleCountFlagBits::Count16,
9051                SampleCountFlagBits::Count32,
9052                SampleCountFlagBits::Count64,
9053            ],
9054        )
9055    }
9056}
9057
9058impl std::fmt::Debug for SampleCountFlags {
9059    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9060        f.debug_tuple("SampleCountFlags").field(&format!("{self}")).finish()
9061    }
9062}
9063
9064#[repr(u32)]
9065#[derive(Clone, Copy, PartialEq, Eq, Debug)]
9066#[doc = "**Chapter**: Limits"]
9067#[doc = "<br>"]
9068#[doc = "**Description**: Bitmask specifying sample counts supported for an image used for storage operations"]
9069#[doc = "<br>"]
9070#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9071#[doc = "<br>"]
9072#[doc = "**Reference**: [`VkSampleCountFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html)"]
9073pub enum SampleCountFlagBits {
9074    #[doc = "Translated from: `VK_SAMPLE_COUNT_1_BIT`"]
9075    Count1 = 0b1,
9076    #[doc = "Translated from: `VK_SAMPLE_COUNT_2_BIT`"]
9077    Count2 = 0b10,
9078    #[doc = "Translated from: `VK_SAMPLE_COUNT_4_BIT`"]
9079    Count4 = 0b100,
9080    #[doc = "Translated from: `VK_SAMPLE_COUNT_8_BIT`"]
9081    Count8 = 0b1000,
9082    #[doc = "Translated from: `VK_SAMPLE_COUNT_16_BIT`"]
9083    Count16 = 0b10000,
9084    #[doc = "Translated from: `VK_SAMPLE_COUNT_32_BIT`"]
9085    Count32 = 0b100000,
9086    #[doc = "Translated from: `VK_SAMPLE_COUNT_64_BIT`"]
9087    Count64 = 0b1000000,
9088}
9089
9090impl From<SampleCountFlagBits> for u32 {
9091    fn from(flag_bits: SampleCountFlagBits) -> Self {
9092        flag_bits as u32
9093    }
9094}
9095
9096impl std::ops::BitOr for SampleCountFlagBits {
9097    type Output = SampleCountFlags;
9098    fn bitor(self, rhs: Self) -> Self::Output {
9099        SampleCountFlags(self as u32 | rhs as u32)
9100    }
9101}
9102
9103impl std::ops::BitOr<SampleCountFlags> for SampleCountFlagBits {
9104    type Output = SampleCountFlags;
9105    fn bitor(self, rhs: SampleCountFlags) -> Self::Output {
9106        SampleCountFlags(self as u32 | rhs.0)
9107    }
9108}
9109
9110impl std::fmt::Display for SampleCountFlagBits {
9111    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9112        write!(f, "{self:?}")
9113    }
9114}
9115
9116#[repr(C)]
9117#[derive(Clone, Copy, PartialEq, Eq)]
9118#[doc = "**Chapter**: Limits"]
9119#[doc = "<br>"]
9120#[doc = "**Description**: Bitmask of VkSubgroupFeatureFlagBits"]
9121#[doc = "<br>"]
9122#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
9123#[doc = "<br>"]
9124#[doc = "**Reference**: [`VkSubgroupFeatureFlags`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubgroupFeatureFlags.html)"]
9125#[doc = "<br>"]
9126#[doc = "**Reference**: [`VkSubgroupFeatureFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubgroupFeatureFlagBits.html)"]
9127pub struct SubgroupFeatureFlags(u32);
9128
9129impl SubgroupFeatureFlags {
9130    #[must_use]
9131    pub const fn empty() -> Self {
9132        Self(0)
9133    }
9134
9135    #[must_use]
9136    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
9137        let rhs = rhs.into();
9138        self.0 & rhs.0 == rhs.0
9139    }
9140}
9141
9142impl std::ops::BitAnd for SubgroupFeatureFlags {
9143    type Output = Self;
9144    fn bitand(self, rhs: Self) -> Self::Output {
9145        Self(self.0 & rhs.0)
9146    }
9147}
9148
9149impl From<SubgroupFeatureFlagBits> for SubgroupFeatureFlags {
9150    fn from(flag_bits: SubgroupFeatureFlagBits) -> Self {
9151        Self(flag_bits as u32)
9152    }
9153}
9154
9155impl std::ops::BitOr<SubgroupFeatureFlagBits> for SubgroupFeatureFlags {
9156    type Output = SubgroupFeatureFlags;
9157    fn bitor(self, rhs: SubgroupFeatureFlagBits) -> Self::Output {
9158        Self(self.0 | rhs as u32)
9159    }
9160}
9161
9162impl std::fmt::Display for SubgroupFeatureFlags {
9163    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9164        #[allow(deprecated)]
9165        display_flag_bits_u32(
9166            f,
9167            self.0,
9168            &[
9169                SubgroupFeatureFlagBits::Basic,
9170                SubgroupFeatureFlagBits::Vote,
9171                SubgroupFeatureFlagBits::Arithmetic,
9172                SubgroupFeatureFlagBits::Ballot,
9173                SubgroupFeatureFlagBits::Shuffle,
9174                SubgroupFeatureFlagBits::ShuffleRelative,
9175                SubgroupFeatureFlagBits::Clustered,
9176                SubgroupFeatureFlagBits::Quad,
9177            ],
9178        )
9179    }
9180}
9181
9182impl std::fmt::Debug for SubgroupFeatureFlags {
9183    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9184        f.debug_tuple("SubgroupFeatureFlags").field(&format!("{self}")).finish()
9185    }
9186}
9187
9188#[repr(u32)]
9189#[derive(Clone, Copy, PartialEq, Eq, Debug)]
9190#[doc = "**Chapter**: Limits"]
9191#[doc = "<br>"]
9192#[doc = "**Description**: Bitmask describing what group operations are supported with subgroup scope"]
9193#[doc = "<br>"]
9194#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
9195#[doc = "<br>"]
9196#[doc = "**Reference**: [`VkSubgroupFeatureFlagBits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubgroupFeatureFlagBits.html)"]
9197pub enum SubgroupFeatureFlagBits {
9198    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_BASIC_BIT`"]
9199    Basic = 0b1,
9200    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_VOTE_BIT`"]
9201    Vote = 0b10,
9202    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_ARITHMETIC_BIT`"]
9203    Arithmetic = 0b100,
9204    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_BALLOT_BIT`"]
9205    Ballot = 0b1000,
9206    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_SHUFFLE_BIT`"]
9207    Shuffle = 0b10000,
9208    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT`"]
9209    ShuffleRelative = 0b100000,
9210    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_CLUSTERED_BIT`"]
9211    Clustered = 0b1000000,
9212    #[doc = "Translated from: `VK_SUBGROUP_FEATURE_QUAD_BIT`"]
9213    Quad = 0b10000000,
9214}
9215
9216impl From<SubgroupFeatureFlagBits> for u32 {
9217    fn from(flag_bits: SubgroupFeatureFlagBits) -> Self {
9218        flag_bits as u32
9219    }
9220}
9221
9222impl std::ops::BitOr for SubgroupFeatureFlagBits {
9223    type Output = SubgroupFeatureFlags;
9224    fn bitor(self, rhs: Self) -> Self::Output {
9225        SubgroupFeatureFlags(self as u32 | rhs as u32)
9226    }
9227}
9228
9229impl std::ops::BitOr<SubgroupFeatureFlags> for SubgroupFeatureFlagBits {
9230    type Output = SubgroupFeatureFlags;
9231    fn bitor(self, rhs: SubgroupFeatureFlags) -> Self::Output {
9232        SubgroupFeatureFlags(self as u32 | rhs.0)
9233    }
9234}
9235
9236impl std::fmt::Display for SubgroupFeatureFlagBits {
9237    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9238        write!(f, "{self:?}")
9239    }
9240}
9241
9242#[repr(C)]
9243#[derive(Clone, Copy, PartialEq, Eq, Debug)]
9244#[doc = "**Chapter**: Debugging"]
9245#[doc = "<br>"]
9246#[doc = "**Description**: Reserved for future use"]
9247#[doc = "<br>"]
9248#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
9249#[doc = "<br>"]
9250#[doc = "**Reference**: [`VkDebugUtilsMessengerCreateFlagsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessengerCreateFlagsEXT.html)"]
9251pub struct DebugUtilsMessengerCreateFlagsEXT(u32);
9252
9253impl DebugUtilsMessengerCreateFlagsEXT {
9254    #[must_use]
9255    pub const fn empty() -> Self {
9256        Self(0)
9257    }
9258}
9259
9260#[repr(C)]
9261#[derive(Clone, Copy, PartialEq, Eq)]
9262#[doc = "**Chapter**: Debugging"]
9263#[doc = "<br>"]
9264#[doc = "**Description**: Bitmask of VkDebugUtilsMessageSeverityFlagBitsEXT"]
9265#[doc = "<br>"]
9266#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
9267#[doc = "<br>"]
9268#[doc = "**Reference**: [`VkDebugUtilsMessageSeverityFlagsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageSeverityFlagsEXT.html)"]
9269#[doc = "<br>"]
9270#[doc = "**Reference**: [`VkDebugUtilsMessageSeverityFlagBitsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageSeverityFlagBitsEXT.html)"]
9271pub struct DebugUtilsMessageSeverityFlagsEXT(u32);
9272
9273impl DebugUtilsMessageSeverityFlagsEXT {
9274    #[must_use]
9275    pub const fn empty() -> Self {
9276        Self(0)
9277    }
9278
9279    #[must_use]
9280    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
9281        let rhs = rhs.into();
9282        self.0 & rhs.0 == rhs.0
9283    }
9284}
9285
9286impl std::ops::BitAnd for DebugUtilsMessageSeverityFlagsEXT {
9287    type Output = Self;
9288    fn bitand(self, rhs: Self) -> Self::Output {
9289        Self(self.0 & rhs.0)
9290    }
9291}
9292
9293impl From<DebugUtilsMessageSeverityFlagBitsEXT> for DebugUtilsMessageSeverityFlagsEXT {
9294    fn from(flag_bits: DebugUtilsMessageSeverityFlagBitsEXT) -> Self {
9295        Self(flag_bits as u32)
9296    }
9297}
9298
9299impl std::ops::BitOr<DebugUtilsMessageSeverityFlagBitsEXT> for DebugUtilsMessageSeverityFlagsEXT {
9300    type Output = DebugUtilsMessageSeverityFlagsEXT;
9301    fn bitor(self, rhs: DebugUtilsMessageSeverityFlagBitsEXT) -> Self::Output {
9302        Self(self.0 | rhs as u32)
9303    }
9304}
9305
9306impl std::fmt::Display for DebugUtilsMessageSeverityFlagsEXT {
9307    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9308        #[allow(deprecated)]
9309        display_flag_bits_u32(
9310            f,
9311            self.0,
9312            &[
9313                DebugUtilsMessageSeverityFlagBitsEXT::VerboseEXT,
9314                DebugUtilsMessageSeverityFlagBitsEXT::InfoEXT,
9315                DebugUtilsMessageSeverityFlagBitsEXT::WarningEXT,
9316                DebugUtilsMessageSeverityFlagBitsEXT::ErrorEXT,
9317            ],
9318        )
9319    }
9320}
9321
9322impl std::fmt::Debug for DebugUtilsMessageSeverityFlagsEXT {
9323    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9324        f.debug_tuple("DebugUtilsMessageSeverityFlagsEXT").field(&format!("{self}")).finish()
9325    }
9326}
9327
9328#[repr(u32)]
9329#[derive(Clone, Copy, PartialEq, Eq, Debug)]
9330#[doc = "**Chapter**: Debugging"]
9331#[doc = "<br>"]
9332#[doc = "**Description**: Bitmask specifying which severities of events cause a debug messenger callback"]
9333#[doc = "<br>"]
9334#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
9335#[doc = "<br>"]
9336#[doc = "**Reference**: [`VkDebugUtilsMessageSeverityFlagBitsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageSeverityFlagBitsEXT.html)"]
9337pub enum DebugUtilsMessageSeverityFlagBitsEXT {
9338    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT`"]
9339    VerboseEXT = 0b1,
9340    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT`"]
9341    InfoEXT = 0b10000,
9342    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT`"]
9343    WarningEXT = 0b100000000,
9344    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT`"]
9345    ErrorEXT = 0b1000000000000,
9346}
9347
9348impl From<DebugUtilsMessageSeverityFlagBitsEXT> for u32 {
9349    fn from(flag_bits: DebugUtilsMessageSeverityFlagBitsEXT) -> Self {
9350        flag_bits as u32
9351    }
9352}
9353
9354impl std::ops::BitOr for DebugUtilsMessageSeverityFlagBitsEXT {
9355    type Output = DebugUtilsMessageSeverityFlagsEXT;
9356    fn bitor(self, rhs: Self) -> Self::Output {
9357        DebugUtilsMessageSeverityFlagsEXT(self as u32 | rhs as u32)
9358    }
9359}
9360
9361impl std::ops::BitOr<DebugUtilsMessageSeverityFlagsEXT> for DebugUtilsMessageSeverityFlagBitsEXT {
9362    type Output = DebugUtilsMessageSeverityFlagsEXT;
9363    fn bitor(self, rhs: DebugUtilsMessageSeverityFlagsEXT) -> Self::Output {
9364        DebugUtilsMessageSeverityFlagsEXT(self as u32 | rhs.0)
9365    }
9366}
9367
9368impl std::fmt::Display for DebugUtilsMessageSeverityFlagBitsEXT {
9369    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9370        write!(f, "{self:?}")
9371    }
9372}
9373
9374#[repr(C)]
9375#[derive(Clone, Copy, PartialEq, Eq)]
9376#[doc = "**Chapter**: Debugging"]
9377#[doc = "<br>"]
9378#[doc = "**Description**: Bitmask of VkDebugUtilsMessageTypeFlagBitsEXT"]
9379#[doc = "<br>"]
9380#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
9381#[doc = "<br>"]
9382#[doc = "**Reference**: [`VkDebugUtilsMessageTypeFlagsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageTypeFlagsEXT.html)"]
9383#[doc = "<br>"]
9384#[doc = "**Reference**: [`VkDebugUtilsMessageTypeFlagBitsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageTypeFlagBitsEXT.html)"]
9385pub struct DebugUtilsMessageTypeFlagsEXT(u32);
9386
9387impl DebugUtilsMessageTypeFlagsEXT {
9388    #[must_use]
9389    pub const fn empty() -> Self {
9390        Self(0)
9391    }
9392
9393    #[must_use]
9394    pub fn contains(self, rhs: impl Into<Self> + Copy) -> bool {
9395        let rhs = rhs.into();
9396        self.0 & rhs.0 == rhs.0
9397    }
9398}
9399
9400impl std::ops::BitAnd for DebugUtilsMessageTypeFlagsEXT {
9401    type Output = Self;
9402    fn bitand(self, rhs: Self) -> Self::Output {
9403        Self(self.0 & rhs.0)
9404    }
9405}
9406
9407impl From<DebugUtilsMessageTypeFlagBitsEXT> for DebugUtilsMessageTypeFlagsEXT {
9408    fn from(flag_bits: DebugUtilsMessageTypeFlagBitsEXT) -> Self {
9409        Self(flag_bits as u32)
9410    }
9411}
9412
9413impl std::ops::BitOr<DebugUtilsMessageTypeFlagBitsEXT> for DebugUtilsMessageTypeFlagsEXT {
9414    type Output = DebugUtilsMessageTypeFlagsEXT;
9415    fn bitor(self, rhs: DebugUtilsMessageTypeFlagBitsEXT) -> Self::Output {
9416        Self(self.0 | rhs as u32)
9417    }
9418}
9419
9420impl std::fmt::Display for DebugUtilsMessageTypeFlagsEXT {
9421    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9422        #[allow(deprecated)]
9423        display_flag_bits_u32(
9424            f,
9425            self.0,
9426            &[
9427                DebugUtilsMessageTypeFlagBitsEXT::GeneralEXT,
9428                DebugUtilsMessageTypeFlagBitsEXT::ValidationEXT,
9429                DebugUtilsMessageTypeFlagBitsEXT::PerformanceEXT,
9430            ],
9431        )
9432    }
9433}
9434
9435impl std::fmt::Debug for DebugUtilsMessageTypeFlagsEXT {
9436    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9437        f.debug_tuple("DebugUtilsMessageTypeFlagsEXT").field(&format!("{self}")).finish()
9438    }
9439}
9440
9441#[repr(u32)]
9442#[derive(Clone, Copy, PartialEq, Eq, Debug)]
9443#[doc = "**Chapter**: Debugging"]
9444#[doc = "<br>"]
9445#[doc = "**Description**: Bitmask specifying which types of events cause a debug messenger callback"]
9446#[doc = "<br>"]
9447#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
9448#[doc = "<br>"]
9449#[doc = "**Reference**: [`VkDebugUtilsMessageTypeFlagBitsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageTypeFlagBitsEXT.html)"]
9450pub enum DebugUtilsMessageTypeFlagBitsEXT {
9451    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT`"]
9452    GeneralEXT = 0b1,
9453    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT`"]
9454    ValidationEXT = 0b10,
9455    #[doc = "Translated from: `VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT`"]
9456    PerformanceEXT = 0b100,
9457}
9458
9459impl From<DebugUtilsMessageTypeFlagBitsEXT> for u32 {
9460    fn from(flag_bits: DebugUtilsMessageTypeFlagBitsEXT) -> Self {
9461        flag_bits as u32
9462    }
9463}
9464
9465impl std::ops::BitOr for DebugUtilsMessageTypeFlagBitsEXT {
9466    type Output = DebugUtilsMessageTypeFlagsEXT;
9467    fn bitor(self, rhs: Self) -> Self::Output {
9468        DebugUtilsMessageTypeFlagsEXT(self as u32 | rhs as u32)
9469    }
9470}
9471
9472impl std::ops::BitOr<DebugUtilsMessageTypeFlagsEXT> for DebugUtilsMessageTypeFlagBitsEXT {
9473    type Output = DebugUtilsMessageTypeFlagsEXT;
9474    fn bitor(self, rhs: DebugUtilsMessageTypeFlagsEXT) -> Self::Output {
9475        DebugUtilsMessageTypeFlagsEXT(self as u32 | rhs.0)
9476    }
9477}
9478
9479impl std::fmt::Display for DebugUtilsMessageTypeFlagBitsEXT {
9480    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9481        write!(f, "{self:?}")
9482    }
9483}
9484
9485#[repr(C)]
9486#[derive(Clone, Copy, PartialEq, Eq, Debug)]
9487#[doc = "**Chapter**: Debugging"]
9488#[doc = "<br>"]
9489#[doc = "**Description**: Reserved for future use"]
9490#[doc = "<br>"]
9491#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
9492#[doc = "<br>"]
9493#[doc = "**Reference**: [`VkDebugUtilsMessengerCallbackDataFlagsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessengerCallbackDataFlagsEXT.html)"]
9494pub struct DebugUtilsMessengerCallbackDataFlagsEXT(u32);
9495
9496impl DebugUtilsMessengerCallbackDataFlagsEXT {
9497    #[must_use]
9498    pub const fn empty() -> Self {
9499        Self(0)
9500    }
9501}
9502
9503//
9504// Structures
9505//
9506
9507#[repr(C)]
9508#[derive(Clone, Copy, Debug)]
9509#[doc = "**Chapter**: Fundamentals"]
9510#[doc = "<br>"]
9511#[doc = "**Description**: Structure specifying a two-dimensional offset"]
9512#[doc = "<br>"]
9513#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9514#[doc = "<br>"]
9515#[doc = "**Reference**: [`VkOffset2D`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkOffset2D.html)"]
9516#[doc = "<br>"]
9517#[doc = "**Initialization template**:"]
9518#[doc = r#"```no_run
9519# use vulk::vk as vk;
9520# use std::ptr::{null, null_mut};
9521let offset_2d = vk::Offset2D {
9522    x: todo!("i32"),
9523    y: todo!("i32"),
9524};
9525```"#]
9526pub struct Offset2D {
9527    pub x: i32,
9528    pub y: i32,
9529}
9530
9531#[repr(C)]
9532#[derive(Clone, Copy, Debug)]
9533#[doc = "**Chapter**: Fundamentals"]
9534#[doc = "<br>"]
9535#[doc = "**Description**: Structure specifying a three-dimensional offset"]
9536#[doc = "<br>"]
9537#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9538#[doc = "<br>"]
9539#[doc = "**Reference**: [`VkOffset3D`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkOffset3D.html)"]
9540#[doc = "<br>"]
9541#[doc = "**Initialization template**:"]
9542#[doc = r#"```no_run
9543# use vulk::vk as vk;
9544# use std::ptr::{null, null_mut};
9545let offset_3d = vk::Offset3D {
9546    x: todo!("i32"),
9547    y: todo!("i32"),
9548    z: todo!("i32"),
9549};
9550```"#]
9551pub struct Offset3D {
9552    pub x: i32,
9553    pub y: i32,
9554    pub z: i32,
9555}
9556
9557#[repr(C)]
9558#[derive(Clone, Copy, Debug)]
9559#[doc = "**Chapter**: Fundamentals"]
9560#[doc = "<br>"]
9561#[doc = "**Description**: Structure specifying a two-dimensional extent"]
9562#[doc = "<br>"]
9563#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9564#[doc = "<br>"]
9565#[doc = "**Reference**: [`VkExtent2D`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkExtent2D.html)"]
9566#[doc = "<br>"]
9567#[doc = "**Initialization template**:"]
9568#[doc = r#"```no_run
9569# use vulk::vk as vk;
9570# use std::ptr::{null, null_mut};
9571let extent_2d = vk::Extent2D {
9572    width: todo!("u32"),
9573    height: todo!("u32"),
9574};
9575```"#]
9576pub struct Extent2D {
9577    pub width: u32,
9578    pub height: u32,
9579}
9580
9581#[repr(C)]
9582#[derive(Clone, Copy, Debug)]
9583#[doc = "**Chapter**: Fundamentals"]
9584#[doc = "<br>"]
9585#[doc = "**Description**: Structure specifying a three-dimensional extent"]
9586#[doc = "<br>"]
9587#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9588#[doc = "<br>"]
9589#[doc = "**Reference**: [`VkExtent3D`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkExtent3D.html)"]
9590#[doc = "<br>"]
9591#[doc = "**Initialization template**:"]
9592#[doc = r#"```no_run
9593# use vulk::vk as vk;
9594# use std::ptr::{null, null_mut};
9595let extent_3d = vk::Extent3D {
9596    width: todo!("u32"),
9597    height: todo!("u32"),
9598    depth: todo!("u32"),
9599};
9600```"#]
9601pub struct Extent3D {
9602    pub width: u32,
9603    pub height: u32,
9604    pub depth: u32,
9605}
9606
9607#[repr(C)]
9608#[derive(Clone, Copy, Debug)]
9609#[doc = "**Chapter**: Fundamentals"]
9610#[doc = "<br>"]
9611#[doc = "**Description**: Structure specifying a two-dimensional subregion"]
9612#[doc = "<br>"]
9613#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9614#[doc = "<br>"]
9615#[doc = "**Reference**: [`VkRect2D`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRect2D.html)"]
9616#[doc = "<br>"]
9617#[doc = "**Initialization template**:"]
9618#[doc = r#"```no_run
9619# use vulk::vk as vk;
9620# use std::ptr::{null, null_mut};
9621let rect_2d = vk::Rect2D {
9622    offset: todo!("vk::Offset2D"),
9623    extent: todo!("vk::Extent2D"),
9624};
9625```"#]
9626pub struct Rect2D {
9627    pub offset: Offset2D,
9628    pub extent: Extent2D,
9629}
9630
9631#[repr(C)]
9632#[derive(Clone, Copy, Debug)]
9633#[doc = "**Chapter**: Initialization"]
9634#[doc = "<br>"]
9635#[doc = "**Description**: Structure specifying parameters of a newly created instance"]
9636#[doc = "<br>"]
9637#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9638#[doc = "<br>"]
9639#[doc = "**Reference**: [`VkInstanceCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateInfo.html)"]
9640#[doc = "<br>"]
9641#[doc = "**Extendable by**: [`VkValidationFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationFeaturesEXT.html)"]
9642#[doc = "<br>"]
9643#[doc = "**Extendable by**: [`VkDebugUtilsMessengerCreateInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessengerCreateInfoEXT.html)"]
9644#[doc = "<br>"]
9645#[doc = "**Initialization template**:"]
9646#[doc = r#"```no_run
9647# use vulk::vk as vk;
9648# use std::ptr::{null, null_mut};
9649let instance_create_info = vk::InstanceCreateInfo {
9650    s_type: vk::StructureType::InstanceCreateInfo,
9651    p_next: null(),
9652    flags: vk::InstanceCreateFlags::empty(),
9653    p_application_info: todo!("*const vk::ApplicationInfo"),
9654    enabled_layer_count: todo!("u32"),
9655    pp_enabled_layer_names: todo!("*const *const c_char"),
9656    enabled_extension_count: todo!("u32"),
9657    pp_enabled_extension_names: todo!("*const *const c_char"),
9658};
9659```"#]
9660pub struct InstanceCreateInfo {
9661    pub s_type: StructureType,
9662    pub p_next: *const c_void,
9663    pub flags: InstanceCreateFlags,
9664    pub p_application_info: *const ApplicationInfo,
9665    pub enabled_layer_count: u32,
9666    pub pp_enabled_layer_names: *const *const c_char,
9667    pub enabled_extension_count: u32,
9668    pub pp_enabled_extension_names: *const *const c_char,
9669}
9670
9671#[repr(C)]
9672#[derive(Clone, Copy, Debug)]
9673#[doc = "**Chapter**: Initialization"]
9674#[doc = "<br>"]
9675#[doc = "**Description**: Specify validation features to enable or disable for a Vulkan instance"]
9676#[doc = "<br>"]
9677#[doc = "**Provided by**: [`VK_EXT_validation_features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_validation_features.html)"]
9678#[doc = "<br>"]
9679#[doc = "**Reference**: [`VkValidationFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationFeaturesEXT.html)"]
9680#[doc = "<br>"]
9681#[doc = "**Initialization template**:"]
9682#[doc = r#"```no_run
9683# use vulk::vk as vk;
9684# use std::ptr::{null, null_mut};
9685let validation_features_ext = vk::ValidationFeaturesEXT {
9686    s_type: vk::StructureType::ValidationFeaturesEXT,
9687    p_next: null(),
9688    enabled_validation_feature_count: todo!("u32"),
9689    p_enabled_validation_features: todo!("*const vk::ValidationFeatureEnableEXT"),
9690    disabled_validation_feature_count: todo!("u32"),
9691    p_disabled_validation_features: todo!("*const vk::ValidationFeatureDisableEXT"),
9692};
9693```"#]
9694pub struct ValidationFeaturesEXT {
9695    pub s_type: StructureType,
9696    pub p_next: *const c_void,
9697    pub enabled_validation_feature_count: u32,
9698    pub p_enabled_validation_features: *const ValidationFeatureEnableEXT,
9699    pub disabled_validation_feature_count: u32,
9700    pub p_disabled_validation_features: *const ValidationFeatureDisableEXT,
9701}
9702
9703#[repr(C)]
9704#[derive(Clone, Copy, Debug)]
9705#[doc = "**Chapter**: Initialization"]
9706#[doc = "<br>"]
9707#[doc = "**Description**: Structure specifying application information"]
9708#[doc = "<br>"]
9709#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9710#[doc = "<br>"]
9711#[doc = "**Reference**: [`VkApplicationInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkApplicationInfo.html)"]
9712#[doc = "<br>"]
9713#[doc = "**Initialization template**:"]
9714#[doc = r#"```no_run
9715# use vulk::vk as vk;
9716# use std::ptr::{null, null_mut};
9717let application_info = vk::ApplicationInfo {
9718    s_type: vk::StructureType::ApplicationInfo,
9719    p_next: null(),
9720    p_application_name: todo!("*const c_char"),
9721    application_version: todo!("u32"),
9722    p_engine_name: todo!("*const c_char"),
9723    engine_version: todo!("u32"),
9724    api_version: todo!("u32"),
9725};
9726```"#]
9727pub struct ApplicationInfo {
9728    pub s_type: StructureType,
9729    pub p_next: *const c_void,
9730    pub p_application_name: *const c_char,
9731    pub application_version: u32,
9732    pub p_engine_name: *const c_char,
9733    pub engine_version: u32,
9734    pub api_version: u32,
9735}
9736
9737#[repr(C)]
9738#[derive(Clone, Copy, Debug)]
9739#[doc = "**Chapter**: Devices and Queues"]
9740#[doc = "<br>"]
9741#[doc = "**Description**: Structure specifying physical device properties"]
9742#[doc = "<br>"]
9743#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9744#[doc = "<br>"]
9745#[doc = "**Reference**: [`VkPhysicalDeviceProperties`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html)"]
9746#[doc = "<br>"]
9747#[doc = "**Initialization template**:"]
9748#[doc = r#"```no_run
9749# use vulk::vk as vk;
9750# use std::ptr::{null, null_mut};
9751let physical_device_properties = vk::PhysicalDeviceProperties {
9752    api_version: todo!("u32"),
9753    driver_version: todo!("u32"),
9754    vendor_id: todo!("u32"),
9755    device_id: todo!("u32"),
9756    device_type: todo!("vk::PhysicalDeviceType"),
9757    device_name: todo!("[c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE as _]"),
9758    pipeline_cache_uuid: todo!("[u8; UUID_SIZE as _]"),
9759    limits: todo!("vk::PhysicalDeviceLimits"),
9760    sparse_properties: todo!("vk::PhysicalDeviceSparseProperties"),
9761};
9762```"#]
9763pub struct PhysicalDeviceProperties {
9764    pub api_version: u32,
9765    pub driver_version: u32,
9766    pub vendor_id: u32,
9767    pub device_id: u32,
9768    pub device_type: PhysicalDeviceType,
9769    pub device_name: [c_char; MAX_PHYSICAL_DEVICE_NAME_SIZE as _],
9770    pub pipeline_cache_uuid: [u8; UUID_SIZE as _],
9771    pub limits: PhysicalDeviceLimits,
9772    pub sparse_properties: PhysicalDeviceSparseProperties,
9773}
9774
9775#[repr(C)]
9776#[derive(Clone, Copy, Debug)]
9777#[doc = "**Chapter**: Devices and Queues"]
9778#[doc = "<br>"]
9779#[doc = "**Description**: Structure specifying physical device properties"]
9780#[doc = "<br>"]
9781#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
9782#[doc = "<br>"]
9783#[doc = "**Reference**: [`VkPhysicalDeviceProperties2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties2.html)"]
9784#[doc = "<br>"]
9785#[doc = "**Extendable by**: [`VkPhysicalDeviceSubgroupProperties`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html)"]
9786#[doc = "<br>"]
9787#[doc = "**Extendable by**: [`VkPhysicalDeviceMeshShaderPropertiesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html)"]
9788#[doc = "<br>"]
9789#[doc = "**Extendable by**: [`VkPhysicalDeviceAccelerationStructurePropertiesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html)"]
9790#[doc = "<br>"]
9791#[doc = "**Extendable by**: [`VkPhysicalDeviceRayTracingPipelinePropertiesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html)"]
9792#[doc = "<br>"]
9793#[doc = "**Extendable by**: [`VkPhysicalDeviceDescriptorBufferPropertiesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html)"]
9794#[doc = "<br>"]
9795#[doc = "**Initialization template**:"]
9796#[doc = r#"```no_run
9797# use vulk::vk as vk;
9798# use std::ptr::{null, null_mut};
9799let physical_device_properties2 = vk::PhysicalDeviceProperties2 {
9800    s_type: vk::StructureType::PhysicalDeviceProperties2,
9801    p_next: null_mut(),
9802    properties: todo!("vk::PhysicalDeviceProperties"),
9803};
9804```"#]
9805pub struct PhysicalDeviceProperties2 {
9806    pub s_type: StructureType,
9807    pub p_next: *mut c_void,
9808    pub properties: PhysicalDeviceProperties,
9809}
9810
9811#[repr(C)]
9812#[derive(Clone, Copy, Debug)]
9813#[doc = "**Chapter**: Devices and Queues"]
9814#[doc = "<br>"]
9815#[doc = "**Description**: Structure providing information about a queue family"]
9816#[doc = "<br>"]
9817#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9818#[doc = "<br>"]
9819#[doc = "**Reference**: [`VkQueueFamilyProperties`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueueFamilyProperties.html)"]
9820#[doc = "<br>"]
9821#[doc = "**Initialization template**:"]
9822#[doc = r#"```no_run
9823# use vulk::vk as vk;
9824# use std::ptr::{null, null_mut};
9825let queue_family_properties = vk::QueueFamilyProperties {
9826    queue_flags: todo!("vk::QueueFlagBits"),
9827    queue_count: todo!("u32"),
9828    timestamp_valid_bits: todo!("u32"),
9829    min_image_transfer_granularity: todo!("vk::Extent3D"),
9830};
9831```"#]
9832pub struct QueueFamilyProperties {
9833    pub queue_flags: QueueFlags,
9834    pub queue_count: u32,
9835    pub timestamp_valid_bits: u32,
9836    pub min_image_transfer_granularity: Extent3D,
9837}
9838
9839#[repr(C)]
9840#[derive(Clone, Copy, Debug)]
9841#[doc = "**Chapter**: Devices and Queues"]
9842#[doc = "<br>"]
9843#[doc = "**Description**: Structure providing information about a queue family"]
9844#[doc = "<br>"]
9845#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
9846#[doc = "<br>"]
9847#[doc = "**Reference**: [`VkQueueFamilyProperties2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueueFamilyProperties2.html)"]
9848#[doc = "<br>"]
9849#[doc = "**Initialization template**:"]
9850#[doc = r#"```no_run
9851# use vulk::vk as vk;
9852# use std::ptr::{null, null_mut};
9853let queue_family_properties2 = vk::QueueFamilyProperties2 {
9854    s_type: vk::StructureType::QueueFamilyProperties2,
9855    p_next: null_mut(),
9856    queue_family_properties: todo!("vk::QueueFamilyProperties"),
9857};
9858```"#]
9859pub struct QueueFamilyProperties2 {
9860    pub s_type: StructureType,
9861    pub p_next: *mut c_void,
9862    pub queue_family_properties: QueueFamilyProperties,
9863}
9864
9865#[repr(C)]
9866#[derive(Clone, Copy, Debug)]
9867#[doc = "**Chapter**: Devices and Queues"]
9868#[doc = "<br>"]
9869#[doc = "**Description**: Structure specifying parameters of a newly created device"]
9870#[doc = "<br>"]
9871#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9872#[doc = "<br>"]
9873#[doc = "**Reference**: [`VkDeviceCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceCreateInfo.html)"]
9874#[doc = "<br>"]
9875#[doc = "**Extendable by**: [`VkPhysicalDeviceFeatures2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures2.html)"]
9876#[doc = "<br>"]
9877#[doc = "**Extendable by**: [`VkPhysicalDeviceVulkan11Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html)"]
9878#[doc = "<br>"]
9879#[doc = "**Extendable by**: [`VkPhysicalDeviceVulkan12Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html)"]
9880#[doc = "<br>"]
9881#[doc = "**Extendable by**: [`VkPhysicalDeviceVulkan13Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html)"]
9882#[doc = "<br>"]
9883#[doc = "**Extendable by**: [`VkPhysicalDeviceMeshShaderFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html)"]
9884#[doc = "<br>"]
9885#[doc = "**Extendable by**: [`VkPhysicalDeviceAccelerationStructureFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html)"]
9886#[doc = "<br>"]
9887#[doc = "**Extendable by**: [`VkPhysicalDeviceRayTracingPipelineFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html)"]
9888#[doc = "<br>"]
9889#[doc = "**Extendable by**: [`VkPhysicalDeviceRayQueryFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html)"]
9890#[doc = "<br>"]
9891#[doc = "**Extendable by**: [`VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html)"]
9892#[doc = "<br>"]
9893#[doc = "**Extendable by**: [`VkPhysicalDeviceDescriptorBufferFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html)"]
9894#[doc = "<br>"]
9895#[doc = "**Extendable by**: [`VkPhysicalDeviceShaderObjectFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html)"]
9896#[doc = "<br>"]
9897#[doc = "**Initialization template**:"]
9898#[doc = r#"```no_run
9899# use vulk::vk as vk;
9900# use std::ptr::{null, null_mut};
9901let device_create_info = vk::DeviceCreateInfo {
9902    s_type: vk::StructureType::DeviceCreateInfo,
9903    p_next: null(),
9904    flags: vk::DeviceCreateFlags::empty(),
9905    queue_create_info_count: todo!("u32"),
9906    p_queue_create_infos: todo!("*const vk::DeviceQueueCreateInfo"),
9907    enabled_layer_count: todo!("u32"),
9908    pp_enabled_layer_names: todo!("*const *const c_char"),
9909    enabled_extension_count: todo!("u32"),
9910    pp_enabled_extension_names: todo!("*const *const c_char"),
9911    p_enabled_features: todo!("*const vk::PhysicalDeviceFeatures"),
9912};
9913```"#]
9914pub struct DeviceCreateInfo {
9915    pub s_type: StructureType,
9916    pub p_next: *const c_void,
9917    pub flags: DeviceCreateFlags,
9918    pub queue_create_info_count: u32,
9919    pub p_queue_create_infos: *const DeviceQueueCreateInfo,
9920    pub enabled_layer_count: u32,
9921    pub pp_enabled_layer_names: *const *const c_char,
9922    pub enabled_extension_count: u32,
9923    pub pp_enabled_extension_names: *const *const c_char,
9924    pub p_enabled_features: *const PhysicalDeviceFeatures,
9925}
9926
9927#[repr(C)]
9928#[derive(Clone, Copy, Debug)]
9929#[doc = "**Chapter**: Devices and Queues"]
9930#[doc = "<br>"]
9931#[doc = "**Description**: Structure specifying parameters of a newly created device queue"]
9932#[doc = "<br>"]
9933#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9934#[doc = "<br>"]
9935#[doc = "**Reference**: [`VkDeviceQueueCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateInfo.html)"]
9936#[doc = "<br>"]
9937#[doc = "**Initialization template**:"]
9938#[doc = r#"```no_run
9939# use vulk::vk as vk;
9940# use std::ptr::{null, null_mut};
9941let device_queue_create_info = vk::DeviceQueueCreateInfo {
9942    s_type: vk::StructureType::DeviceQueueCreateInfo,
9943    p_next: null(),
9944    flags: todo!("vk::DeviceQueueCreateFlagBits"),
9945    queue_family_index: todo!("u32"),
9946    queue_count: todo!("u32"),
9947    p_queue_priorities: todo!("*const f32"),
9948};
9949```"#]
9950pub struct DeviceQueueCreateInfo {
9951    pub s_type: StructureType,
9952    pub p_next: *const c_void,
9953    pub flags: DeviceQueueCreateFlags,
9954    pub queue_family_index: u32,
9955    pub queue_count: u32,
9956    pub p_queue_priorities: *const f32,
9957}
9958
9959#[repr(C)]
9960#[derive(Clone, Copy, Debug)]
9961#[doc = "**Chapter**: Devices and Queues"]
9962#[doc = "<br>"]
9963#[doc = "**Description**: Structure specifying the parameters used for device queue creation"]
9964#[doc = "<br>"]
9965#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
9966#[doc = "<br>"]
9967#[doc = "**Reference**: [`VkDeviceQueueInfo2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueInfo2.html)"]
9968#[doc = "<br>"]
9969#[doc = "**Initialization template**:"]
9970#[doc = r#"```no_run
9971# use vulk::vk as vk;
9972# use std::ptr::{null, null_mut};
9973let device_queue_info2 = vk::DeviceQueueInfo2 {
9974    s_type: vk::StructureType::DeviceQueueInfo2,
9975    p_next: null(),
9976    flags: todo!("vk::DeviceQueueCreateFlagBits"),
9977    queue_family_index: todo!("u32"),
9978    queue_index: todo!("u32"),
9979};
9980```"#]
9981pub struct DeviceQueueInfo2 {
9982    pub s_type: StructureType,
9983    pub p_next: *const c_void,
9984    pub flags: DeviceQueueCreateFlags,
9985    pub queue_family_index: u32,
9986    pub queue_index: u32,
9987}
9988
9989#[repr(C)]
9990#[derive(Clone, Copy, Debug)]
9991#[doc = "**Chapter**: Command Buffers"]
9992#[doc = "<br>"]
9993#[doc = "**Description**: Structure specifying parameters of a newly created command pool"]
9994#[doc = "<br>"]
9995#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
9996#[doc = "<br>"]
9997#[doc = "**Reference**: [`VkCommandPoolCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateInfo.html)"]
9998#[doc = "<br>"]
9999#[doc = "**Initialization template**:"]
10000#[doc = r#"```no_run
10001# use vulk::vk as vk;
10002# use std::ptr::{null, null_mut};
10003let command_pool_create_info = vk::CommandPoolCreateInfo {
10004    s_type: vk::StructureType::CommandPoolCreateInfo,
10005    p_next: null(),
10006    flags: todo!("vk::CommandPoolCreateFlagBits"),
10007    queue_family_index: todo!("u32"),
10008};
10009```"#]
10010pub struct CommandPoolCreateInfo {
10011    pub s_type: StructureType,
10012    pub p_next: *const c_void,
10013    pub flags: CommandPoolCreateFlags,
10014    pub queue_family_index: u32,
10015}
10016
10017#[repr(C)]
10018#[derive(Clone, Copy, Debug)]
10019#[doc = "**Chapter**: Command Buffers"]
10020#[doc = "<br>"]
10021#[doc = "**Description**: Structure specifying the allocation parameters for command buffer object"]
10022#[doc = "<br>"]
10023#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10024#[doc = "<br>"]
10025#[doc = "**Reference**: [`VkCommandBufferAllocateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferAllocateInfo.html)"]
10026#[doc = "<br>"]
10027#[doc = "**Initialization template**:"]
10028#[doc = r#"```no_run
10029# use vulk::vk as vk;
10030# use std::ptr::{null, null_mut};
10031let command_buffer_allocate_info = vk::CommandBufferAllocateInfo {
10032    s_type: vk::StructureType::CommandBufferAllocateInfo,
10033    p_next: null(),
10034    command_pool: todo!("vk::CommandPool"),
10035    level: todo!("vk::CommandBufferLevel"),
10036    command_buffer_count: todo!("u32"),
10037};
10038```"#]
10039pub struct CommandBufferAllocateInfo {
10040    pub s_type: StructureType,
10041    pub p_next: *const c_void,
10042    pub command_pool: CommandPool,
10043    pub level: CommandBufferLevel,
10044    pub command_buffer_count: u32,
10045}
10046
10047#[repr(C)]
10048#[derive(Clone, Copy, Debug)]
10049#[doc = "**Chapter**: Command Buffers"]
10050#[doc = "<br>"]
10051#[doc = "**Description**: Structure specifying a command buffer begin operation"]
10052#[doc = "<br>"]
10053#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10054#[doc = "<br>"]
10055#[doc = "**Reference**: [`VkCommandBufferBeginInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferBeginInfo.html)"]
10056#[doc = "<br>"]
10057#[doc = "**Initialization template**:"]
10058#[doc = r#"```no_run
10059# use vulk::vk as vk;
10060# use std::ptr::{null, null_mut};
10061let command_buffer_begin_info = vk::CommandBufferBeginInfo {
10062    s_type: vk::StructureType::CommandBufferBeginInfo,
10063    p_next: null(),
10064    flags: todo!("vk::CommandBufferUsageFlagBits"),
10065    p_inheritance_info: todo!("*const vk::CommandBufferInheritanceInfo"),
10066};
10067```"#]
10068pub struct CommandBufferBeginInfo {
10069    pub s_type: StructureType,
10070    pub p_next: *const c_void,
10071    pub flags: CommandBufferUsageFlags,
10072    pub p_inheritance_info: *const CommandBufferInheritanceInfo,
10073}
10074
10075#[repr(C)]
10076#[derive(Clone, Copy, Debug)]
10077#[doc = "**Chapter**: Command Buffers"]
10078#[doc = "<br>"]
10079#[doc = "**Description**: Structure specifying command buffer inheritance information"]
10080#[doc = "<br>"]
10081#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10082#[doc = "<br>"]
10083#[doc = "**Reference**: [`VkCommandBufferInheritanceInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferInheritanceInfo.html)"]
10084#[doc = "<br>"]
10085#[doc = "**Initialization template**:"]
10086#[doc = r#"```no_run
10087# use vulk::vk as vk;
10088# use std::ptr::{null, null_mut};
10089let command_buffer_inheritance_info = vk::CommandBufferInheritanceInfo {
10090    s_type: vk::StructureType::CommandBufferInheritanceInfo,
10091    p_next: null(),
10092    render_pass: todo!("vk::RenderPass"),
10093    subpass: todo!("u32"),
10094    framebuffer: todo!("vk::Framebuffer"),
10095    occlusion_query_enable: todo!("vk::Bool32"),
10096    query_flags: todo!("vk::QueryControlFlagBits"),
10097    pipeline_statistics: todo!("vk::QueryPipelineStatisticFlagBits"),
10098};
10099```"#]
10100pub struct CommandBufferInheritanceInfo {
10101    pub s_type: StructureType,
10102    pub p_next: *const c_void,
10103    pub render_pass: RenderPass,
10104    pub subpass: u32,
10105    pub framebuffer: Framebuffer,
10106    pub occlusion_query_enable: Bool32,
10107    pub query_flags: QueryControlFlags,
10108    pub pipeline_statistics: QueryPipelineStatisticFlags,
10109}
10110
10111#[repr(C)]
10112#[derive(Clone, Copy, Debug)]
10113#[doc = "**Chapter**: Command Buffers"]
10114#[doc = "<br>"]
10115#[doc = "**Description**: Structure specifying a queue submit operation"]
10116#[doc = "<br>"]
10117#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10118#[doc = "<br>"]
10119#[doc = "**Reference**: [`VkSubmitInfo2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubmitInfo2.html)"]
10120#[doc = "<br>"]
10121#[doc = "**Initialization template**:"]
10122#[doc = r#"```no_run
10123# use vulk::vk as vk;
10124# use std::ptr::{null, null_mut};
10125let submit_info2 = vk::SubmitInfo2 {
10126    s_type: vk::StructureType::SubmitInfo2,
10127    p_next: null(),
10128    flags: todo!("vk::SubmitFlagBits"),
10129    wait_semaphore_info_count: todo!("u32"),
10130    p_wait_semaphore_infos: todo!("*const vk::SemaphoreSubmitInfo"),
10131    command_buffer_info_count: todo!("u32"),
10132    p_command_buffer_infos: todo!("*const vk::CommandBufferSubmitInfo"),
10133    signal_semaphore_info_count: todo!("u32"),
10134    p_signal_semaphore_infos: todo!("*const vk::SemaphoreSubmitInfo"),
10135};
10136```"#]
10137pub struct SubmitInfo2 {
10138    pub s_type: StructureType,
10139    pub p_next: *const c_void,
10140    pub flags: SubmitFlags,
10141    pub wait_semaphore_info_count: u32,
10142    pub p_wait_semaphore_infos: *const SemaphoreSubmitInfo,
10143    pub command_buffer_info_count: u32,
10144    pub p_command_buffer_infos: *const CommandBufferSubmitInfo,
10145    pub signal_semaphore_info_count: u32,
10146    pub p_signal_semaphore_infos: *const SemaphoreSubmitInfo,
10147}
10148
10149#[repr(C)]
10150#[derive(Clone, Copy, Debug)]
10151#[doc = "**Chapter**: Command Buffers"]
10152#[doc = "<br>"]
10153#[doc = "**Description**: Structure specifying a semaphore signal or wait operation"]
10154#[doc = "<br>"]
10155#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10156#[doc = "<br>"]
10157#[doc = "**Reference**: [`VkSemaphoreSubmitInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreSubmitInfo.html)"]
10158#[doc = "<br>"]
10159#[doc = "**Initialization template**:"]
10160#[doc = r#"```no_run
10161# use vulk::vk as vk;
10162# use std::ptr::{null, null_mut};
10163let semaphore_submit_info = vk::SemaphoreSubmitInfo {
10164    s_type: vk::StructureType::SemaphoreSubmitInfo,
10165    p_next: null(),
10166    semaphore: todo!("vk::Semaphore"),
10167    value: todo!("u64"),
10168    stage_mask: todo!("vk::PipelineStageFlagBits2"),
10169    device_index: todo!("u32"),
10170};
10171```"#]
10172pub struct SemaphoreSubmitInfo {
10173    pub s_type: StructureType,
10174    pub p_next: *const c_void,
10175    pub semaphore: Semaphore,
10176    pub value: u64,
10177    pub stage_mask: PipelineStageFlags2,
10178    pub device_index: u32,
10179}
10180
10181#[repr(C)]
10182#[derive(Clone, Copy, Debug)]
10183#[doc = "**Chapter**: Command Buffers"]
10184#[doc = "<br>"]
10185#[doc = "**Description**: Structure specifying a command buffer submission"]
10186#[doc = "<br>"]
10187#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10188#[doc = "<br>"]
10189#[doc = "**Reference**: [`VkCommandBufferSubmitInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferSubmitInfo.html)"]
10190#[doc = "<br>"]
10191#[doc = "**Initialization template**:"]
10192#[doc = r#"```no_run
10193# use vulk::vk as vk;
10194# use std::ptr::{null, null_mut};
10195let command_buffer_submit_info = vk::CommandBufferSubmitInfo {
10196    s_type: vk::StructureType::CommandBufferSubmitInfo,
10197    p_next: null(),
10198    command_buffer: todo!("vk::CommandBuffer"),
10199    device_mask: todo!("u32"),
10200};
10201```"#]
10202pub struct CommandBufferSubmitInfo {
10203    pub s_type: StructureType,
10204    pub p_next: *const c_void,
10205    pub command_buffer: CommandBuffer,
10206    pub device_mask: u32,
10207}
10208
10209#[repr(C)]
10210#[derive(Clone, Copy, Debug)]
10211#[doc = "**Chapter**: Synchronization and Cache Control"]
10212#[doc = "<br>"]
10213#[doc = "**Description**: Structure specifying parameters of a newly created semaphore"]
10214#[doc = "<br>"]
10215#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10216#[doc = "<br>"]
10217#[doc = "**Reference**: [`VkSemaphoreCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreCreateInfo.html)"]
10218#[doc = "<br>"]
10219#[doc = "**Extendable by**: [`VkSemaphoreTypeCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreTypeCreateInfo.html)"]
10220#[doc = "<br>"]
10221#[doc = "**Initialization template**:"]
10222#[doc = r#"```no_run
10223# use vulk::vk as vk;
10224# use std::ptr::{null, null_mut};
10225let semaphore_create_info = vk::SemaphoreCreateInfo {
10226    s_type: vk::StructureType::SemaphoreCreateInfo,
10227    p_next: null(),
10228    flags: vk::SemaphoreCreateFlags::empty(),
10229};
10230```"#]
10231pub struct SemaphoreCreateInfo {
10232    pub s_type: StructureType,
10233    pub p_next: *const c_void,
10234    pub flags: SemaphoreCreateFlags,
10235}
10236
10237#[repr(C)]
10238#[derive(Clone, Copy, Debug)]
10239#[doc = "**Chapter**: Synchronization and Cache Control"]
10240#[doc = "<br>"]
10241#[doc = "**Description**: Structure specifying the type of a newly created semaphore"]
10242#[doc = "<br>"]
10243#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
10244#[doc = "<br>"]
10245#[doc = "**Reference**: [`VkSemaphoreTypeCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreTypeCreateInfo.html)"]
10246#[doc = "<br>"]
10247#[doc = "**Initialization template**:"]
10248#[doc = r#"```no_run
10249# use vulk::vk as vk;
10250# use std::ptr::{null, null_mut};
10251let semaphore_type_create_info = vk::SemaphoreTypeCreateInfo {
10252    s_type: vk::StructureType::SemaphoreTypeCreateInfo,
10253    p_next: null(),
10254    semaphore_type: todo!("vk::SemaphoreType"),
10255    initial_value: todo!("u64"),
10256};
10257```"#]
10258pub struct SemaphoreTypeCreateInfo {
10259    pub s_type: StructureType,
10260    pub p_next: *const c_void,
10261    pub semaphore_type: SemaphoreType,
10262    pub initial_value: u64,
10263}
10264
10265#[repr(C)]
10266#[derive(Clone, Copy, Debug)]
10267#[doc = "**Chapter**: Synchronization and Cache Control"]
10268#[doc = "<br>"]
10269#[doc = "**Description**: Structure containing information about the semaphore wait condition"]
10270#[doc = "<br>"]
10271#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
10272#[doc = "<br>"]
10273#[doc = "**Reference**: [`VkSemaphoreWaitInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreWaitInfo.html)"]
10274#[doc = "<br>"]
10275#[doc = "**Initialization template**:"]
10276#[doc = r#"```no_run
10277# use vulk::vk as vk;
10278# use std::ptr::{null, null_mut};
10279let semaphore_wait_info = vk::SemaphoreWaitInfo {
10280    s_type: vk::StructureType::SemaphoreWaitInfo,
10281    p_next: null(),
10282    flags: todo!("vk::SemaphoreWaitFlagBits"),
10283    semaphore_count: todo!("u32"),
10284    p_semaphores: todo!("*const vk::Semaphore"),
10285    p_values: todo!("*const u64"),
10286};
10287```"#]
10288pub struct SemaphoreWaitInfo {
10289    pub s_type: StructureType,
10290    pub p_next: *const c_void,
10291    pub flags: SemaphoreWaitFlags,
10292    pub semaphore_count: u32,
10293    pub p_semaphores: *const Semaphore,
10294    pub p_values: *const u64,
10295}
10296
10297#[repr(C)]
10298#[derive(Clone, Copy, Debug)]
10299#[doc = "**Chapter**: Synchronization and Cache Control"]
10300#[doc = "<br>"]
10301#[doc = "**Description**: Structure containing information about a semaphore signal operation"]
10302#[doc = "<br>"]
10303#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
10304#[doc = "<br>"]
10305#[doc = "**Reference**: [`VkSemaphoreSignalInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreSignalInfo.html)"]
10306#[doc = "<br>"]
10307#[doc = "**Initialization template**:"]
10308#[doc = r#"```no_run
10309# use vulk::vk as vk;
10310# use std::ptr::{null, null_mut};
10311let semaphore_signal_info = vk::SemaphoreSignalInfo {
10312    s_type: vk::StructureType::SemaphoreSignalInfo,
10313    p_next: null(),
10314    semaphore: todo!("vk::Semaphore"),
10315    value: todo!("u64"),
10316};
10317```"#]
10318pub struct SemaphoreSignalInfo {
10319    pub s_type: StructureType,
10320    pub p_next: *const c_void,
10321    pub semaphore: Semaphore,
10322    pub value: u64,
10323}
10324
10325#[repr(C)]
10326#[derive(Clone, Copy, Debug)]
10327#[doc = "**Chapter**: Synchronization and Cache Control"]
10328#[doc = "<br>"]
10329#[doc = "**Description**: Structure specifying dependency information for a synchronization command"]
10330#[doc = "<br>"]
10331#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10332#[doc = "<br>"]
10333#[doc = "**Reference**: [`VkDependencyInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDependencyInfo.html)"]
10334#[doc = "<br>"]
10335#[doc = "**Initialization template**:"]
10336#[doc = r#"```no_run
10337# use vulk::vk as vk;
10338# use std::ptr::{null, null_mut};
10339let dependency_info = vk::DependencyInfo {
10340    s_type: vk::StructureType::DependencyInfo,
10341    p_next: null(),
10342    dependency_flags: todo!("vk::DependencyFlagBits"),
10343    memory_barrier_count: todo!("u32"),
10344    p_memory_barriers: todo!("*const vk::MemoryBarrier2"),
10345    buffer_memory_barrier_count: todo!("u32"),
10346    p_buffer_memory_barriers: todo!("*const vk::BufferMemoryBarrier2"),
10347    image_memory_barrier_count: todo!("u32"),
10348    p_image_memory_barriers: todo!("*const vk::ImageMemoryBarrier2"),
10349};
10350```"#]
10351pub struct DependencyInfo {
10352    pub s_type: StructureType,
10353    pub p_next: *const c_void,
10354    pub dependency_flags: DependencyFlags,
10355    pub memory_barrier_count: u32,
10356    pub p_memory_barriers: *const MemoryBarrier2,
10357    pub buffer_memory_barrier_count: u32,
10358    pub p_buffer_memory_barriers: *const BufferMemoryBarrier2,
10359    pub image_memory_barrier_count: u32,
10360    pub p_image_memory_barriers: *const ImageMemoryBarrier2,
10361}
10362
10363#[repr(C)]
10364#[derive(Clone, Copy, Debug)]
10365#[doc = "**Chapter**: Synchronization and Cache Control"]
10366#[doc = "<br>"]
10367#[doc = "**Description**: Structure specifying a global memory barrier"]
10368#[doc = "<br>"]
10369#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10370#[doc = "<br>"]
10371#[doc = "**Reference**: [`VkMemoryBarrier2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryBarrier2.html)"]
10372#[doc = "<br>"]
10373#[doc = "**Initialization template**:"]
10374#[doc = r#"```no_run
10375# use vulk::vk as vk;
10376# use std::ptr::{null, null_mut};
10377let memory_barrier2 = vk::MemoryBarrier2 {
10378    s_type: vk::StructureType::MemoryBarrier2,
10379    p_next: null(),
10380    src_stage_mask: todo!("vk::PipelineStageFlagBits2"),
10381    src_access_mask: todo!("vk::AccessFlagBits2"),
10382    dst_stage_mask: todo!("vk::PipelineStageFlagBits2"),
10383    dst_access_mask: todo!("vk::AccessFlagBits2"),
10384};
10385```"#]
10386pub struct MemoryBarrier2 {
10387    pub s_type: StructureType,
10388    pub p_next: *const c_void,
10389    pub src_stage_mask: PipelineStageFlags2,
10390    pub src_access_mask: AccessFlags2,
10391    pub dst_stage_mask: PipelineStageFlags2,
10392    pub dst_access_mask: AccessFlags2,
10393}
10394
10395#[repr(C)]
10396#[derive(Clone, Copy, Debug)]
10397#[doc = "**Chapter**: Synchronization and Cache Control"]
10398#[doc = "<br>"]
10399#[doc = "**Description**: Structure specifying a buffer memory barrier"]
10400#[doc = "<br>"]
10401#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10402#[doc = "<br>"]
10403#[doc = "**Reference**: [`VkBufferMemoryBarrier2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferMemoryBarrier2.html)"]
10404#[doc = "<br>"]
10405#[doc = "**Initialization template**:"]
10406#[doc = r#"```no_run
10407# use vulk::vk as vk;
10408# use std::ptr::{null, null_mut};
10409let buffer_memory_barrier2 = vk::BufferMemoryBarrier2 {
10410    s_type: vk::StructureType::BufferMemoryBarrier2,
10411    p_next: null(),
10412    src_stage_mask: todo!("vk::PipelineStageFlagBits2"),
10413    src_access_mask: todo!("vk::AccessFlagBits2"),
10414    dst_stage_mask: todo!("vk::PipelineStageFlagBits2"),
10415    dst_access_mask: todo!("vk::AccessFlagBits2"),
10416    src_queue_family_index: todo!("u32"),
10417    dst_queue_family_index: todo!("u32"),
10418    buffer: todo!("vk::Buffer"),
10419    offset: todo!("vk::DeviceSize"),
10420    size: todo!("vk::DeviceSize"),
10421};
10422```"#]
10423pub struct BufferMemoryBarrier2 {
10424    pub s_type: StructureType,
10425    pub p_next: *const c_void,
10426    pub src_stage_mask: PipelineStageFlags2,
10427    pub src_access_mask: AccessFlags2,
10428    pub dst_stage_mask: PipelineStageFlags2,
10429    pub dst_access_mask: AccessFlags2,
10430    pub src_queue_family_index: u32,
10431    pub dst_queue_family_index: u32,
10432    pub buffer: Buffer,
10433    pub offset: DeviceSize,
10434    pub size: DeviceSize,
10435}
10436
10437#[repr(C)]
10438#[derive(Clone, Copy, Debug)]
10439#[doc = "**Chapter**: Synchronization and Cache Control"]
10440#[doc = "<br>"]
10441#[doc = "**Description**: Structure specifying an image memory barrier"]
10442#[doc = "<br>"]
10443#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10444#[doc = "<br>"]
10445#[doc = "**Reference**: [`VkImageMemoryBarrier2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageMemoryBarrier2.html)"]
10446#[doc = "<br>"]
10447#[doc = "**Initialization template**:"]
10448#[doc = r#"```no_run
10449# use vulk::vk as vk;
10450# use std::ptr::{null, null_mut};
10451let image_memory_barrier2 = vk::ImageMemoryBarrier2 {
10452    s_type: vk::StructureType::ImageMemoryBarrier2,
10453    p_next: null(),
10454    src_stage_mask: todo!("vk::PipelineStageFlagBits2"),
10455    src_access_mask: todo!("vk::AccessFlagBits2"),
10456    dst_stage_mask: todo!("vk::PipelineStageFlagBits2"),
10457    dst_access_mask: todo!("vk::AccessFlagBits2"),
10458    old_layout: todo!("vk::ImageLayout"),
10459    new_layout: todo!("vk::ImageLayout"),
10460    src_queue_family_index: todo!("u32"),
10461    dst_queue_family_index: todo!("u32"),
10462    image: todo!("vk::Image"),
10463    subresource_range: todo!("vk::ImageSubresourceRange"),
10464};
10465```"#]
10466pub struct ImageMemoryBarrier2 {
10467    pub s_type: StructureType,
10468    pub p_next: *const c_void,
10469    pub src_stage_mask: PipelineStageFlags2,
10470    pub src_access_mask: AccessFlags2,
10471    pub dst_stage_mask: PipelineStageFlags2,
10472    pub dst_access_mask: AccessFlags2,
10473    pub old_layout: ImageLayout,
10474    pub new_layout: ImageLayout,
10475    pub src_queue_family_index: u32,
10476    pub dst_queue_family_index: u32,
10477    pub image: Image,
10478    pub subresource_range: ImageSubresourceRange,
10479}
10480
10481#[repr(C)]
10482#[derive(Clone, Copy, Debug)]
10483#[doc = "**Chapter**: Synchronization and Cache Control"]
10484#[doc = "<br>"]
10485#[doc = "**Description**: Structure specifying the input parameters of a calibrated timestamp query"]
10486#[doc = "<br>"]
10487#[doc = "**Provided by**: [`VK_EXT_calibrated_timestamps`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_calibrated_timestamps.html)"]
10488#[doc = "<br>"]
10489#[doc = "**Reference**: [`VkCalibratedTimestampInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCalibratedTimestampInfoEXT.html)"]
10490#[doc = "<br>"]
10491#[doc = "**Initialization template**:"]
10492#[doc = r#"```no_run
10493# use vulk::vk as vk;
10494# use std::ptr::{null, null_mut};
10495let calibrated_timestamp_info_ext = vk::CalibratedTimestampInfoEXT {
10496    s_type: vk::StructureType::CalibratedTimestampInfoEXT,
10497    p_next: null(),
10498    time_domain: todo!("vk::TimeDomainEXT"),
10499};
10500```"#]
10501pub struct CalibratedTimestampInfoEXT {
10502    pub s_type: StructureType,
10503    pub p_next: *const c_void,
10504    pub time_domain: TimeDomainEXT,
10505}
10506
10507#[repr(C)]
10508#[derive(Clone, Copy, Debug)]
10509#[doc = "**Chapter**: Render Pass"]
10510#[doc = "<br>"]
10511#[doc = "**Description**: Structure specifying render pass instance begin info"]
10512#[doc = "<br>"]
10513#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10514#[doc = "<br>"]
10515#[doc = "**Reference**: [`VkRenderingInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderingInfo.html)"]
10516#[doc = "<br>"]
10517#[doc = "**Initialization template**:"]
10518#[doc = r#"```no_run
10519# use vulk::vk as vk;
10520# use std::ptr::{null, null_mut};
10521let rendering_info = vk::RenderingInfo {
10522    s_type: vk::StructureType::RenderingInfo,
10523    p_next: null(),
10524    flags: todo!("vk::RenderingFlagBits"),
10525    render_area: todo!("vk::Rect2D"),
10526    layer_count: todo!("u32"),
10527    view_mask: todo!("u32"),
10528    color_attachment_count: todo!("u32"),
10529    p_color_attachments: todo!("*const vk::RenderingAttachmentInfo"),
10530    p_depth_attachment: todo!("*const vk::RenderingAttachmentInfo"),
10531    p_stencil_attachment: todo!("*const vk::RenderingAttachmentInfo"),
10532};
10533```"#]
10534pub struct RenderingInfo {
10535    pub s_type: StructureType,
10536    pub p_next: *const c_void,
10537    pub flags: RenderingFlags,
10538    pub render_area: Rect2D,
10539    pub layer_count: u32,
10540    pub view_mask: u32,
10541    pub color_attachment_count: u32,
10542    pub p_color_attachments: *const RenderingAttachmentInfo,
10543    pub p_depth_attachment: *const RenderingAttachmentInfo,
10544    pub p_stencil_attachment: *const RenderingAttachmentInfo,
10545}
10546
10547#[repr(C)]
10548#[derive(Clone, Copy, Debug)]
10549#[doc = "**Chapter**: Render Pass"]
10550#[doc = "<br>"]
10551#[doc = "**Description**: Structure specifying attachment information"]
10552#[doc = "<br>"]
10553#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
10554#[doc = "<br>"]
10555#[doc = "**Reference**: [`VkRenderingAttachmentInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderingAttachmentInfo.html)"]
10556#[doc = "<br>"]
10557#[doc = "**Initialization template**:"]
10558#[doc = r#"```no_run
10559# use vulk::vk as vk;
10560# use std::ptr::{null, null_mut};
10561let rendering_attachment_info = vk::RenderingAttachmentInfo {
10562    s_type: vk::StructureType::RenderingAttachmentInfo,
10563    p_next: null(),
10564    image_view: todo!("vk::ImageView"),
10565    image_layout: todo!("vk::ImageLayout"),
10566    resolve_mode: todo!("vk::ResolveModeFlagBits"),
10567    resolve_image_view: todo!("vk::ImageView"),
10568    resolve_image_layout: todo!("vk::ImageLayout"),
10569    load_op: todo!("vk::AttachmentLoadOp"),
10570    store_op: todo!("vk::AttachmentStoreOp"),
10571    clear_value: todo!("vk::ClearValue"),
10572};
10573```"#]
10574pub struct RenderingAttachmentInfo {
10575    pub s_type: StructureType,
10576    pub p_next: *const c_void,
10577    pub image_view: ImageView,
10578    pub image_layout: ImageLayout,
10579    pub resolve_mode: ResolveModeFlagBits,
10580    pub resolve_image_view: ImageView,
10581    pub resolve_image_layout: ImageLayout,
10582    pub load_op: AttachmentLoadOp,
10583    pub store_op: AttachmentStoreOp,
10584    pub clear_value: ClearValue,
10585}
10586
10587#[repr(C)]
10588#[derive(Clone, Copy, Debug)]
10589#[doc = "**Chapter**: Shaders"]
10590#[doc = "<br>"]
10591#[doc = "**Description**: Structure specifying parameters of a newly created shader"]
10592#[doc = "<br>"]
10593#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
10594#[doc = "<br>"]
10595#[doc = "**Reference**: [`VkShaderCreateInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderCreateInfoEXT.html)"]
10596#[doc = "<br>"]
10597#[doc = "**Initialization template**:"]
10598#[doc = r#"```no_run
10599# use vulk::vk as vk;
10600# use std::ptr::{null, null_mut};
10601let shader_create_info_ext = vk::ShaderCreateInfoEXT {
10602    s_type: vk::StructureType::ShaderCreateInfoEXT,
10603    p_next: null(),
10604    flags: todo!("vk::ShaderCreateFlagBitsEXT"),
10605    stage: todo!("vk::ShaderStageFlagBits"),
10606    next_stage: todo!("vk::ShaderStageFlagBits"),
10607    code_type: todo!("vk::ShaderCodeTypeEXT"),
10608    code_size: todo!("usize"),
10609    p_code: todo!("*const c_void"),
10610    p_name: todo!("*const c_char"),
10611    set_layout_count: todo!("u32"),
10612    p_set_layouts: todo!("*const vk::DescriptorSetLayout"),
10613    push_constant_range_count: todo!("u32"),
10614    p_push_constant_ranges: todo!("*const vk::PushConstantRange"),
10615    p_specialization_info: todo!("*const vk::SpecializationInfo"),
10616};
10617```"#]
10618pub struct ShaderCreateInfoEXT {
10619    pub s_type: StructureType,
10620    pub p_next: *const c_void,
10621    pub flags: ShaderCreateFlagsEXT,
10622    pub stage: ShaderStageFlagBits,
10623    pub next_stage: ShaderStageFlags,
10624    pub code_type: ShaderCodeTypeEXT,
10625    pub code_size: usize,
10626    pub p_code: *const c_void,
10627    pub p_name: *const c_char,
10628    pub set_layout_count: u32,
10629    pub p_set_layouts: *const DescriptorSetLayout,
10630    pub push_constant_range_count: u32,
10631    pub p_push_constant_ranges: *const PushConstantRange,
10632    pub p_specialization_info: *const SpecializationInfo,
10633}
10634
10635#[repr(C)]
10636#[derive(Clone, Copy, Debug)]
10637#[doc = "**Chapter**: Shaders"]
10638#[doc = "<br>"]
10639#[doc = "**Description**: Structure specifying parameters of a newly created shader module"]
10640#[doc = "<br>"]
10641#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10642#[doc = "<br>"]
10643#[doc = "**Reference**: [`VkShaderModuleCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderModuleCreateInfo.html)"]
10644#[doc = "<br>"]
10645#[doc = "**Initialization template**:"]
10646#[doc = r#"```no_run
10647# use vulk::vk as vk;
10648# use std::ptr::{null, null_mut};
10649let shader_module_create_info = vk::ShaderModuleCreateInfo {
10650    s_type: vk::StructureType::ShaderModuleCreateInfo,
10651    p_next: null(),
10652    flags: vk::ShaderModuleCreateFlags::empty(),
10653    code_size: todo!("usize"),
10654    p_code: todo!("*const u32"),
10655};
10656```"#]
10657pub struct ShaderModuleCreateInfo {
10658    pub s_type: StructureType,
10659    pub p_next: *const c_void,
10660    pub flags: ShaderModuleCreateFlags,
10661    pub code_size: usize,
10662    pub p_code: *const u32,
10663}
10664
10665#[repr(C)]
10666#[derive(Clone, Copy, Debug)]
10667#[doc = "**Chapter**: Pipelines"]
10668#[doc = "<br>"]
10669#[doc = "**Description**: Structure specifying parameters of a newly created pipeline shader stage"]
10670#[doc = "<br>"]
10671#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10672#[doc = "<br>"]
10673#[doc = "**Reference**: [`VkPipelineShaderStageCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateInfo.html)"]
10674#[doc = "<br>"]
10675#[doc = "**Extendable by**: [`VkShaderModuleCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderModuleCreateInfo.html)"]
10676#[doc = "<br>"]
10677#[doc = "**Extendable by**: [`VkDebugUtilsObjectNameInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsObjectNameInfoEXT.html)"]
10678#[doc = "<br>"]
10679#[doc = "**Initialization template**:"]
10680#[doc = r#"```no_run
10681# use vulk::vk as vk;
10682# use std::ptr::{null, null_mut};
10683let pipeline_shader_stage_create_info = vk::PipelineShaderStageCreateInfo {
10684    s_type: vk::StructureType::PipelineShaderStageCreateInfo,
10685    p_next: null(),
10686    flags: todo!("vk::PipelineShaderStageCreateFlagBits"),
10687    stage: todo!("vk::ShaderStageFlagBits"),
10688    module: todo!("vk::ShaderModule"),
10689    p_name: todo!("*const c_char"),
10690    p_specialization_info: todo!("*const vk::SpecializationInfo"),
10691};
10692```"#]
10693pub struct PipelineShaderStageCreateInfo {
10694    pub s_type: StructureType,
10695    pub p_next: *const c_void,
10696    pub flags: PipelineShaderStageCreateFlags,
10697    pub stage: ShaderStageFlagBits,
10698    pub module: ShaderModule,
10699    pub p_name: *const c_char,
10700    pub p_specialization_info: *const SpecializationInfo,
10701}
10702
10703#[repr(C)]
10704#[derive(Clone, Copy, Debug)]
10705#[doc = "**Chapter**: Pipelines"]
10706#[doc = "<br>"]
10707#[doc = "**Description**: Structure specifying parameters of a newly created pipeline dynamic state"]
10708#[doc = "<br>"]
10709#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10710#[doc = "<br>"]
10711#[doc = "**Reference**: [`VkPipelineDynamicStateCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineDynamicStateCreateInfo.html)"]
10712#[doc = "<br>"]
10713#[doc = "**Initialization template**:"]
10714#[doc = r#"```no_run
10715# use vulk::vk as vk;
10716# use std::ptr::{null, null_mut};
10717let pipeline_dynamic_state_create_info = vk::PipelineDynamicStateCreateInfo {
10718    s_type: vk::StructureType::PipelineDynamicStateCreateInfo,
10719    p_next: null(),
10720    flags: vk::PipelineDynamicStateCreateFlags::empty(),
10721    dynamic_state_count: todo!("u32"),
10722    p_dynamic_states: todo!("*const vk::DynamicState"),
10723};
10724```"#]
10725pub struct PipelineDynamicStateCreateInfo {
10726    pub s_type: StructureType,
10727    pub p_next: *const c_void,
10728    pub flags: PipelineDynamicStateCreateFlags,
10729    pub dynamic_state_count: u32,
10730    pub p_dynamic_states: *const DynamicState,
10731}
10732
10733#[repr(C)]
10734#[derive(Clone, Copy, Debug)]
10735#[doc = "**Chapter**: Pipelines"]
10736#[doc = "<br>"]
10737#[doc = "**Description**: Structure specifying parameters of a newly created ray tracing pipeline"]
10738#[doc = "<br>"]
10739#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
10740#[doc = "<br>"]
10741#[doc = "**Reference**: [`VkRayTracingPipelineCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRayTracingPipelineCreateInfoKHR.html)"]
10742#[doc = "<br>"]
10743#[doc = "**Initialization template**:"]
10744#[doc = r#"```no_run
10745# use vulk::vk as vk;
10746# use std::ptr::{null, null_mut};
10747let ray_tracing_pipeline_create_info_khr = vk::RayTracingPipelineCreateInfoKHR {
10748    s_type: vk::StructureType::RayTracingPipelineCreateInfoKHR,
10749    p_next: null(),
10750    flags: todo!("vk::PipelineCreateFlagBits"),
10751    stage_count: todo!("u32"),
10752    p_stages: todo!("*const vk::PipelineShaderStageCreateInfo"),
10753    group_count: todo!("u32"),
10754    p_groups: todo!("*const vk::RayTracingShaderGroupCreateInfoKHR"),
10755    max_pipeline_ray_recursion_depth: todo!("u32"),
10756    p_library_info: todo!("*const vk::PipelineLibraryCreateInfoKHR"),
10757    p_library_interface: todo!("*const vk::RayTracingPipelineInterfaceCreateInfoKHR"),
10758    p_dynamic_state: todo!("*const vk::PipelineDynamicStateCreateInfo"),
10759    layout: todo!("vk::PipelineLayout"),
10760    base_pipeline_handle: todo!("vk::Pipeline"),
10761    base_pipeline_index: todo!("i32"),
10762};
10763```"#]
10764pub struct RayTracingPipelineCreateInfoKHR {
10765    pub s_type: StructureType,
10766    pub p_next: *const c_void,
10767    pub flags: PipelineCreateFlags,
10768    pub stage_count: u32,
10769    pub p_stages: *const PipelineShaderStageCreateInfo,
10770    pub group_count: u32,
10771    pub p_groups: *const RayTracingShaderGroupCreateInfoKHR,
10772    pub max_pipeline_ray_recursion_depth: u32,
10773    pub p_library_info: *const PipelineLibraryCreateInfoKHR,
10774    pub p_library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
10775    pub p_dynamic_state: *const PipelineDynamicStateCreateInfo,
10776    pub layout: PipelineLayout,
10777    pub base_pipeline_handle: Pipeline,
10778    pub base_pipeline_index: i32,
10779}
10780
10781#[repr(C)]
10782#[derive(Clone, Copy, Debug)]
10783#[doc = "**Chapter**: Pipelines"]
10784#[doc = "<br>"]
10785#[doc = "**Description**: Structure specifying shaders in a shader group"]
10786#[doc = "<br>"]
10787#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
10788#[doc = "<br>"]
10789#[doc = "**Reference**: [`VkRayTracingShaderGroupCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRayTracingShaderGroupCreateInfoKHR.html)"]
10790#[doc = "<br>"]
10791#[doc = "**Initialization template**:"]
10792#[doc = r#"```no_run
10793# use vulk::vk as vk;
10794# use std::ptr::{null, null_mut};
10795let ray_tracing_shader_group_create_info_khr = vk::RayTracingShaderGroupCreateInfoKHR {
10796    s_type: vk::StructureType::RayTracingShaderGroupCreateInfoKHR,
10797    p_next: null(),
10798    ty: todo!("vk::RayTracingShaderGroupTypeKHR"),
10799    general_shader: todo!("u32"),
10800    closest_hit_shader: todo!("u32"),
10801    any_hit_shader: todo!("u32"),
10802    intersection_shader: todo!("u32"),
10803    p_shader_group_capture_replay_handle: todo!("*const c_void"),
10804};
10805```"#]
10806pub struct RayTracingShaderGroupCreateInfoKHR {
10807    pub s_type: StructureType,
10808    pub p_next: *const c_void,
10809    pub ty: RayTracingShaderGroupTypeKHR,
10810    pub general_shader: u32,
10811    pub closest_hit_shader: u32,
10812    pub any_hit_shader: u32,
10813    pub intersection_shader: u32,
10814    pub p_shader_group_capture_replay_handle: *const c_void,
10815}
10816
10817#[repr(C)]
10818#[derive(Clone, Copy, Debug)]
10819#[doc = "**Chapter**: Pipelines"]
10820#[doc = "<br>"]
10821#[doc = "**Description**: Structure specifying additional interface information when using libraries"]
10822#[doc = "<br>"]
10823#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
10824#[doc = "<br>"]
10825#[doc = "**Reference**: [`VkRayTracingPipelineInterfaceCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html)"]
10826#[doc = "<br>"]
10827#[doc = "**Initialization template**:"]
10828#[doc = r#"```no_run
10829# use vulk::vk as vk;
10830# use std::ptr::{null, null_mut};
10831let ray_tracing_pipeline_interface_create_info_khr = vk::RayTracingPipelineInterfaceCreateInfoKHR {
10832    s_type: vk::StructureType::RayTracingPipelineInterfaceCreateInfoKHR,
10833    p_next: null(),
10834    max_pipeline_ray_payload_size: todo!("u32"),
10835    max_pipeline_ray_hit_attribute_size: todo!("u32"),
10836};
10837```"#]
10838pub struct RayTracingPipelineInterfaceCreateInfoKHR {
10839    pub s_type: StructureType,
10840    pub p_next: *const c_void,
10841    pub max_pipeline_ray_payload_size: u32,
10842    pub max_pipeline_ray_hit_attribute_size: u32,
10843}
10844
10845#[repr(C)]
10846#[derive(Clone, Copy, Debug)]
10847#[doc = "**Chapter**: Pipelines"]
10848#[doc = "<br>"]
10849#[doc = "**Description**: Structure specifying specialization information"]
10850#[doc = "<br>"]
10851#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10852#[doc = "<br>"]
10853#[doc = "**Reference**: [`VkSpecializationInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSpecializationInfo.html)"]
10854#[doc = "<br>"]
10855#[doc = "**Initialization template**:"]
10856#[doc = r#"```no_run
10857# use vulk::vk as vk;
10858# use std::ptr::{null, null_mut};
10859let specialization_info = vk::SpecializationInfo {
10860    map_entry_count: todo!("u32"),
10861    p_map_entries: todo!("*const vk::SpecializationMapEntry"),
10862    data_size: todo!("usize"),
10863    p_data: todo!("*const c_void"),
10864};
10865```"#]
10866pub struct SpecializationInfo {
10867    pub map_entry_count: u32,
10868    pub p_map_entries: *const SpecializationMapEntry,
10869    pub data_size: usize,
10870    pub p_data: *const c_void,
10871}
10872
10873#[repr(C)]
10874#[derive(Clone, Copy, Debug)]
10875#[doc = "**Chapter**: Pipelines"]
10876#[doc = "<br>"]
10877#[doc = "**Description**: Structure specifying a specialization map entry"]
10878#[doc = "<br>"]
10879#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10880#[doc = "<br>"]
10881#[doc = "**Reference**: [`VkSpecializationMapEntry`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSpecializationMapEntry.html)"]
10882#[doc = "<br>"]
10883#[doc = "**Initialization template**:"]
10884#[doc = r#"```no_run
10885# use vulk::vk as vk;
10886# use std::ptr::{null, null_mut};
10887let specialization_map_entry = vk::SpecializationMapEntry {
10888    constant_id: todo!("u32"),
10889    offset: todo!("u32"),
10890    size: todo!("usize"),
10891};
10892```"#]
10893pub struct SpecializationMapEntry {
10894    pub constant_id: u32,
10895    pub offset: u32,
10896    pub size: usize,
10897}
10898
10899#[repr(C)]
10900#[derive(Clone, Copy, Debug)]
10901#[doc = "**Chapter**: Pipelines"]
10902#[doc = "<br>"]
10903#[doc = "**Description**: Structure specifying pipeline libraries to use when creating a pipeline"]
10904#[doc = "<br>"]
10905#[doc = "**Provided by**: [`VK_KHR_pipeline_library`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_pipeline_library.html)"]
10906#[doc = "<br>"]
10907#[doc = "**Reference**: [`VkPipelineLibraryCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLibraryCreateInfoKHR.html)"]
10908#[doc = "<br>"]
10909#[doc = "**Initialization template**:"]
10910#[doc = r#"```no_run
10911# use vulk::vk as vk;
10912# use std::ptr::{null, null_mut};
10913let pipeline_library_create_info_khr = vk::PipelineLibraryCreateInfoKHR {
10914    s_type: vk::StructureType::PipelineLibraryCreateInfoKHR,
10915    p_next: null(),
10916    library_count: todo!("u32"),
10917    p_libraries: todo!("*const vk::Pipeline"),
10918};
10919```"#]
10920pub struct PipelineLibraryCreateInfoKHR {
10921    pub s_type: StructureType,
10922    pub p_next: *const c_void,
10923    pub library_count: u32,
10924    pub p_libraries: *const Pipeline,
10925}
10926
10927#[repr(C)]
10928#[derive(Clone, Copy, Debug)]
10929#[doc = "**Chapter**: Memory Allocation"]
10930#[doc = "<br>"]
10931#[doc = "**Description**: Structure containing callback function pointers for memory allocation"]
10932#[doc = "<br>"]
10933#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10934#[doc = "<br>"]
10935#[doc = "**Reference**: [`VkAllocationCallbacks`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAllocationCallbacks.html)"]
10936#[doc = "<br>"]
10937#[doc = "**Initialization template**:"]
10938#[doc = r#"```no_run
10939# use vulk::vk as vk;
10940# use std::ptr::{null, null_mut};
10941let allocation_callbacks = vk::AllocationCallbacks {
10942    p_user_data: todo!("*mut c_void"),
10943    pfn_allocation: todo!("vk::PfnAllocationFunction"),
10944    pfn_reallocation: todo!("vk::PfnReallocationFunction"),
10945    pfn_free: todo!("vk::PfnFreeFunction"),
10946    pfn_internal_allocation: todo!("vk::PfnInternalAllocationNotification"),
10947    pfn_internal_free: todo!("vk::PfnInternalFreeNotification"),
10948};
10949```"#]
10950pub struct AllocationCallbacks {
10951    pub p_user_data: *mut c_void,
10952    pub pfn_allocation: PfnAllocationFunction,
10953    pub pfn_reallocation: PfnReallocationFunction,
10954    pub pfn_free: PfnFreeFunction,
10955    pub pfn_internal_allocation: PfnInternalAllocationNotification,
10956    pub pfn_internal_free: PfnInternalFreeNotification,
10957}
10958
10959#[repr(C)]
10960#[derive(Clone, Copy, Debug)]
10961#[doc = "**Chapter**: Memory Allocation"]
10962#[doc = "<br>"]
10963#[doc = "**Description**: Structure specifying physical device memory properties"]
10964#[doc = "<br>"]
10965#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
10966#[doc = "<br>"]
10967#[doc = "**Reference**: [`VkPhysicalDeviceMemoryProperties`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryProperties.html)"]
10968#[doc = "<br>"]
10969#[doc = "**Initialization template**:"]
10970#[doc = r#"```no_run
10971# use vulk::vk as vk;
10972# use std::ptr::{null, null_mut};
10973let physical_device_memory_properties = vk::PhysicalDeviceMemoryProperties {
10974    memory_type_count: todo!("u32"),
10975    memory_types: todo!("[vk::MemoryType; MAX_MEMORY_TYPES as _]"),
10976    memory_heap_count: todo!("u32"),
10977    memory_heaps: todo!("[vk::MemoryHeap; MAX_MEMORY_HEAPS as _]"),
10978};
10979```"#]
10980pub struct PhysicalDeviceMemoryProperties {
10981    pub memory_type_count: u32,
10982    pub memory_types: [MemoryType; MAX_MEMORY_TYPES as _],
10983    pub memory_heap_count: u32,
10984    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS as _],
10985}
10986
10987#[repr(C)]
10988#[derive(Clone, Copy, Debug)]
10989#[doc = "**Chapter**: Memory Allocation"]
10990#[doc = "<br>"]
10991#[doc = "**Description**: Structure specifying physical device memory properties"]
10992#[doc = "<br>"]
10993#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
10994#[doc = "<br>"]
10995#[doc = "**Reference**: [`VkPhysicalDeviceMemoryProperties2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryProperties2.html)"]
10996#[doc = "<br>"]
10997#[doc = "**Initialization template**:"]
10998#[doc = r#"```no_run
10999# use vulk::vk as vk;
11000# use std::ptr::{null, null_mut};
11001let physical_device_memory_properties2 = vk::PhysicalDeviceMemoryProperties2 {
11002    s_type: vk::StructureType::PhysicalDeviceMemoryProperties2,
11003    p_next: null_mut(),
11004    memory_properties: todo!("vk::PhysicalDeviceMemoryProperties"),
11005};
11006```"#]
11007pub struct PhysicalDeviceMemoryProperties2 {
11008    pub s_type: StructureType,
11009    pub p_next: *mut c_void,
11010    pub memory_properties: PhysicalDeviceMemoryProperties,
11011}
11012
11013#[repr(C)]
11014#[derive(Clone, Copy, Debug)]
11015#[doc = "**Chapter**: Memory Allocation"]
11016#[doc = "<br>"]
11017#[doc = "**Description**: Structure specifying a memory heap"]
11018#[doc = "<br>"]
11019#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11020#[doc = "<br>"]
11021#[doc = "**Reference**: [`VkMemoryHeap`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryHeap.html)"]
11022#[doc = "<br>"]
11023#[doc = "**Initialization template**:"]
11024#[doc = r#"```no_run
11025# use vulk::vk as vk;
11026# use std::ptr::{null, null_mut};
11027let memory_heap = vk::MemoryHeap {
11028    size: todo!("vk::DeviceSize"),
11029    flags: todo!("vk::MemoryHeapFlagBits"),
11030};
11031```"#]
11032pub struct MemoryHeap {
11033    pub size: DeviceSize,
11034    pub flags: MemoryHeapFlags,
11035}
11036
11037#[repr(C)]
11038#[derive(Clone, Copy, Debug)]
11039#[doc = "**Chapter**: Memory Allocation"]
11040#[doc = "<br>"]
11041#[doc = "**Description**: Structure specifying memory type"]
11042#[doc = "<br>"]
11043#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11044#[doc = "<br>"]
11045#[doc = "**Reference**: [`VkMemoryType`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryType.html)"]
11046#[doc = "<br>"]
11047#[doc = "**Initialization template**:"]
11048#[doc = r#"```no_run
11049# use vulk::vk as vk;
11050# use std::ptr::{null, null_mut};
11051let memory_type = vk::MemoryType {
11052    property_flags: todo!("vk::MemoryPropertyFlagBits"),
11053    heap_index: todo!("u32"),
11054};
11055```"#]
11056pub struct MemoryType {
11057    pub property_flags: MemoryPropertyFlags,
11058    pub heap_index: u32,
11059}
11060
11061#[repr(C)]
11062#[derive(Clone, Copy, Debug)]
11063#[doc = "**Chapter**: Memory Allocation"]
11064#[doc = "<br>"]
11065#[doc = "**Description**: Structure containing parameters of a memory allocation"]
11066#[doc = "<br>"]
11067#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11068#[doc = "<br>"]
11069#[doc = "**Reference**: [`VkMemoryAllocateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateInfo.html)"]
11070#[doc = "<br>"]
11071#[doc = "**Extendable by**: [`VkMemoryAllocateFlagsInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlagsInfo.html)"]
11072#[doc = "<br>"]
11073#[doc = "**Initialization template**:"]
11074#[doc = r#"```no_run
11075# use vulk::vk as vk;
11076# use std::ptr::{null, null_mut};
11077let memory_allocate_info = vk::MemoryAllocateInfo {
11078    s_type: vk::StructureType::MemoryAllocateInfo,
11079    p_next: null(),
11080    allocation_size: todo!("vk::DeviceSize"),
11081    memory_type_index: todo!("u32"),
11082};
11083```"#]
11084pub struct MemoryAllocateInfo {
11085    pub s_type: StructureType,
11086    pub p_next: *const c_void,
11087    pub allocation_size: DeviceSize,
11088    pub memory_type_index: u32,
11089}
11090
11091#[repr(C)]
11092#[derive(Clone, Copy, Debug)]
11093#[doc = "**Chapter**: Memory Allocation"]
11094#[doc = "<br>"]
11095#[doc = "**Description**: Structure controlling how many instances of memory will be allocated"]
11096#[doc = "<br>"]
11097#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
11098#[doc = "<br>"]
11099#[doc = "**Reference**: [`VkMemoryAllocateFlagsInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlagsInfo.html)"]
11100#[doc = "<br>"]
11101#[doc = "**Initialization template**:"]
11102#[doc = r#"```no_run
11103# use vulk::vk as vk;
11104# use std::ptr::{null, null_mut};
11105let memory_allocate_flags_info = vk::MemoryAllocateFlagsInfo {
11106    s_type: vk::StructureType::MemoryAllocateFlagsInfo,
11107    p_next: null(),
11108    flags: todo!("vk::MemoryAllocateFlagBits"),
11109    device_mask: todo!("u32"),
11110};
11111```"#]
11112pub struct MemoryAllocateFlagsInfo {
11113    pub s_type: StructureType,
11114    pub p_next: *const c_void,
11115    pub flags: MemoryAllocateFlags,
11116    pub device_mask: u32,
11117}
11118
11119#[repr(C)]
11120#[derive(Clone, Copy, Debug)]
11121#[doc = "**Chapter**: Memory Allocation"]
11122#[doc = "<br>"]
11123#[doc = "**Description**: Structure containing parameters of a memory map operation"]
11124#[doc = "<br>"]
11125#[doc = "**Provided by**: [`VK_KHR_map_memory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_map_memory2.html)"]
11126#[doc = "<br>"]
11127#[doc = "**Reference**: [`VkMemoryMapInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryMapInfoKHR.html)"]
11128#[doc = "<br>"]
11129#[doc = "**Initialization template**:"]
11130#[doc = r#"```no_run
11131# use vulk::vk as vk;
11132# use std::ptr::{null, null_mut};
11133let memory_map_info_khr = vk::MemoryMapInfoKHR {
11134    s_type: vk::StructureType::MemoryMapInfoKHR,
11135    p_next: null(),
11136    flags: vk::MemoryMapFlags::empty(),
11137    memory: todo!("vk::DeviceMemory"),
11138    offset: todo!("vk::DeviceSize"),
11139    size: todo!("vk::DeviceSize"),
11140};
11141```"#]
11142pub struct MemoryMapInfoKHR {
11143    pub s_type: StructureType,
11144    pub p_next: *const c_void,
11145    pub flags: MemoryMapFlags,
11146    pub memory: DeviceMemory,
11147    pub offset: DeviceSize,
11148    pub size: DeviceSize,
11149}
11150
11151#[repr(C)]
11152#[derive(Clone, Copy, Debug)]
11153#[doc = "**Chapter**: Memory Allocation"]
11154#[doc = "<br>"]
11155#[doc = "**Description**: Structure containing parameters of a memory unmap operation"]
11156#[doc = "<br>"]
11157#[doc = "**Provided by**: [`VK_KHR_map_memory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_map_memory2.html)"]
11158#[doc = "<br>"]
11159#[doc = "**Reference**: [`VkMemoryUnmapInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryUnmapInfoKHR.html)"]
11160#[doc = "<br>"]
11161#[doc = "**Initialization template**:"]
11162#[doc = r#"```no_run
11163# use vulk::vk as vk;
11164# use std::ptr::{null, null_mut};
11165let memory_unmap_info_khr = vk::MemoryUnmapInfoKHR {
11166    s_type: vk::StructureType::MemoryUnmapInfoKHR,
11167    p_next: null(),
11168    flags: vk::MemoryUnmapFlagsKHR::empty(),
11169    memory: todo!("vk::DeviceMemory"),
11170};
11171```"#]
11172pub struct MemoryUnmapInfoKHR {
11173    pub s_type: StructureType,
11174    pub p_next: *const c_void,
11175    pub flags: MemoryUnmapFlagsKHR,
11176    pub memory: DeviceMemory,
11177}
11178
11179#[repr(C)]
11180#[derive(Clone, Copy, Debug)]
11181#[doc = "**Chapter**: Resource Creation"]
11182#[doc = "<br>"]
11183#[doc = "**Description**: Structure specifying the parameters of a newly created buffer object"]
11184#[doc = "<br>"]
11185#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11186#[doc = "<br>"]
11187#[doc = "**Reference**: [`VkBufferCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateInfo.html)"]
11188#[doc = "<br>"]
11189#[doc = "**Initialization template**:"]
11190#[doc = r#"```no_run
11191# use vulk::vk as vk;
11192# use std::ptr::{null, null_mut};
11193let buffer_create_info = vk::BufferCreateInfo {
11194    s_type: vk::StructureType::BufferCreateInfo,
11195    p_next: null(),
11196    flags: todo!("vk::BufferCreateFlagBits"),
11197    size: todo!("vk::DeviceSize"),
11198    usage: todo!("vk::BufferUsageFlagBits"),
11199    sharing_mode: todo!("vk::SharingMode"),
11200    queue_family_index_count: todo!("u32"),
11201    p_queue_family_indices: todo!("*const u32"),
11202};
11203```"#]
11204pub struct BufferCreateInfo {
11205    pub s_type: StructureType,
11206    pub p_next: *const c_void,
11207    pub flags: BufferCreateFlags,
11208    pub size: DeviceSize,
11209    pub usage: BufferUsageFlags,
11210    pub sharing_mode: SharingMode,
11211    pub queue_family_index_count: u32,
11212    pub p_queue_family_indices: *const u32,
11213}
11214
11215#[repr(C)]
11216#[derive(Clone, Copy, Debug)]
11217#[doc = "**Chapter**: Resource Creation"]
11218#[doc = "<br>"]
11219#[doc = "**Description**: Structure specifying the parameters of a newly created image object"]
11220#[doc = "<br>"]
11221#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11222#[doc = "<br>"]
11223#[doc = "**Reference**: [`VkImageCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageCreateInfo.html)"]
11224#[doc = "<br>"]
11225#[doc = "**Initialization template**:"]
11226#[doc = r#"```no_run
11227# use vulk::vk as vk;
11228# use std::ptr::{null, null_mut};
11229let image_create_info = vk::ImageCreateInfo {
11230    s_type: vk::StructureType::ImageCreateInfo,
11231    p_next: null(),
11232    flags: todo!("vk::ImageCreateFlagBits"),
11233    image_type: todo!("vk::ImageType"),
11234    format: todo!("vk::Format"),
11235    extent: todo!("vk::Extent3D"),
11236    mip_levels: todo!("u32"),
11237    array_layers: todo!("u32"),
11238    samples: todo!("vk::SampleCountFlagBits"),
11239    tiling: todo!("vk::ImageTiling"),
11240    usage: todo!("vk::ImageUsageFlagBits"),
11241    sharing_mode: todo!("vk::SharingMode"),
11242    queue_family_index_count: todo!("u32"),
11243    p_queue_family_indices: todo!("*const u32"),
11244    initial_layout: todo!("vk::ImageLayout"),
11245};
11246```"#]
11247pub struct ImageCreateInfo {
11248    pub s_type: StructureType,
11249    pub p_next: *const c_void,
11250    pub flags: ImageCreateFlags,
11251    pub image_type: ImageType,
11252    pub format: Format,
11253    pub extent: Extent3D,
11254    pub mip_levels: u32,
11255    pub array_layers: u32,
11256    pub samples: SampleCountFlagBits,
11257    pub tiling: ImageTiling,
11258    pub usage: ImageUsageFlags,
11259    pub sharing_mode: SharingMode,
11260    pub queue_family_index_count: u32,
11261    pub p_queue_family_indices: *const u32,
11262    pub initial_layout: ImageLayout,
11263}
11264
11265#[repr(C)]
11266#[derive(Clone, Copy, Debug)]
11267#[doc = "**Chapter**: Resource Creation"]
11268#[doc = "<br>"]
11269#[doc = "**Description**: Structure specifying parameters of a newly created image view"]
11270#[doc = "<br>"]
11271#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11272#[doc = "<br>"]
11273#[doc = "**Reference**: [`VkImageViewCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateInfo.html)"]
11274#[doc = "<br>"]
11275#[doc = "**Initialization template**:"]
11276#[doc = r#"```no_run
11277# use vulk::vk as vk;
11278# use std::ptr::{null, null_mut};
11279let image_view_create_info = vk::ImageViewCreateInfo {
11280    s_type: vk::StructureType::ImageViewCreateInfo,
11281    p_next: null(),
11282    flags: todo!("vk::ImageViewCreateFlagBits"),
11283    image: todo!("vk::Image"),
11284    view_type: todo!("vk::ImageViewType"),
11285    format: todo!("vk::Format"),
11286    components: todo!("vk::ComponentMapping"),
11287    subresource_range: todo!("vk::ImageSubresourceRange"),
11288};
11289```"#]
11290pub struct ImageViewCreateInfo {
11291    pub s_type: StructureType,
11292    pub p_next: *const c_void,
11293    pub flags: ImageViewCreateFlags,
11294    pub image: Image,
11295    pub view_type: ImageViewType,
11296    pub format: Format,
11297    pub components: ComponentMapping,
11298    pub subresource_range: ImageSubresourceRange,
11299}
11300
11301#[repr(C)]
11302#[derive(Clone, Copy, Debug)]
11303#[doc = "**Chapter**: Resource Creation"]
11304#[doc = "<br>"]
11305#[doc = "**Description**: Structure specifying an image subresource range"]
11306#[doc = "<br>"]
11307#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11308#[doc = "<br>"]
11309#[doc = "**Reference**: [`VkImageSubresourceRange`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageSubresourceRange.html)"]
11310#[doc = "<br>"]
11311#[doc = "**Initialization template**:"]
11312#[doc = r#"```no_run
11313# use vulk::vk as vk;
11314# use std::ptr::{null, null_mut};
11315let image_subresource_range = vk::ImageSubresourceRange {
11316    aspect_mask: todo!("vk::ImageAspectFlagBits"),
11317    base_mip_level: todo!("u32"),
11318    level_count: todo!("u32"),
11319    base_array_layer: todo!("u32"),
11320    layer_count: todo!("u32"),
11321};
11322```"#]
11323pub struct ImageSubresourceRange {
11324    pub aspect_mask: ImageAspectFlags,
11325    pub base_mip_level: u32,
11326    pub level_count: u32,
11327    pub base_array_layer: u32,
11328    pub layer_count: u32,
11329}
11330
11331#[repr(C)]
11332#[derive(Clone, Copy, Debug)]
11333#[doc = "**Chapter**: Resource Creation"]
11334#[doc = "<br>"]
11335#[doc = "**Description**: Structure specifying a color component mapping"]
11336#[doc = "<br>"]
11337#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11338#[doc = "<br>"]
11339#[doc = "**Reference**: [`VkComponentMapping`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkComponentMapping.html)"]
11340#[doc = "<br>"]
11341#[doc = "**Initialization template**:"]
11342#[doc = r#"```no_run
11343# use vulk::vk as vk;
11344# use std::ptr::{null, null_mut};
11345let component_mapping = vk::ComponentMapping {
11346    r: todo!("vk::ComponentSwizzle"),
11347    g: todo!("vk::ComponentSwizzle"),
11348    b: todo!("vk::ComponentSwizzle"),
11349    a: todo!("vk::ComponentSwizzle"),
11350};
11351```"#]
11352pub struct ComponentMapping {
11353    pub r: ComponentSwizzle,
11354    pub g: ComponentSwizzle,
11355    pub b: ComponentSwizzle,
11356    pub a: ComponentSwizzle,
11357}
11358
11359#[repr(C)]
11360#[derive(Clone, Copy, Debug)]
11361#[doc = "**Chapter**: Resource Creation"]
11362#[doc = "<br>"]
11363#[doc = "**Description**: Structure specifying the parameters of a newly created acceleration structure object"]
11364#[doc = "<br>"]
11365#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
11366#[doc = "<br>"]
11367#[doc = "**Reference**: [`VkAccelerationStructureCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCreateInfoKHR.html)"]
11368#[doc = "<br>"]
11369#[doc = "**Initialization template**:"]
11370#[doc = r#"```no_run
11371# use vulk::vk as vk;
11372# use std::ptr::{null, null_mut};
11373let acceleration_structure_create_info_khr = vk::AccelerationStructureCreateInfoKHR {
11374    s_type: vk::StructureType::AccelerationStructureCreateInfoKHR,
11375    p_next: null(),
11376    create_flags: todo!("vk::AccelerationStructureCreateFlagBitsKHR"),
11377    buffer: todo!("vk::Buffer"),
11378    offset: todo!("vk::DeviceSize"),
11379    size: todo!("vk::DeviceSize"),
11380    ty: todo!("vk::AccelerationStructureTypeKHR"),
11381    device_address: todo!("vk::DeviceAddress"),
11382};
11383```"#]
11384pub struct AccelerationStructureCreateInfoKHR {
11385    pub s_type: StructureType,
11386    pub p_next: *const c_void,
11387    pub create_flags: AccelerationStructureCreateFlagsKHR,
11388    pub buffer: Buffer,
11389    pub offset: DeviceSize,
11390    pub size: DeviceSize,
11391    pub ty: AccelerationStructureTypeKHR,
11392    pub device_address: DeviceAddress,
11393}
11394
11395#[repr(C)]
11396#[derive(Clone, Copy, Debug)]
11397#[doc = "**Chapter**: Resource Creation"]
11398#[doc = "<br>"]
11399#[doc = "**Description**: Structure specifying build sizes for an acceleration structure"]
11400#[doc = "<br>"]
11401#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
11402#[doc = "<br>"]
11403#[doc = "**Reference**: [`VkAccelerationStructureBuildSizesInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureBuildSizesInfoKHR.html)"]
11404#[doc = "<br>"]
11405#[doc = "**Initialization template**:"]
11406#[doc = r#"```no_run
11407# use vulk::vk as vk;
11408# use std::ptr::{null, null_mut};
11409let acceleration_structure_build_sizes_info_khr = vk::AccelerationStructureBuildSizesInfoKHR {
11410    s_type: vk::StructureType::AccelerationStructureBuildSizesInfoKHR,
11411    p_next: null(),
11412    acceleration_structure_size: todo!("vk::DeviceSize"),
11413    update_scratch_size: todo!("vk::DeviceSize"),
11414    build_scratch_size: todo!("vk::DeviceSize"),
11415};
11416```"#]
11417pub struct AccelerationStructureBuildSizesInfoKHR {
11418    pub s_type: StructureType,
11419    pub p_next: *const c_void,
11420    pub acceleration_structure_size: DeviceSize,
11421    pub update_scratch_size: DeviceSize,
11422    pub build_scratch_size: DeviceSize,
11423}
11424
11425#[repr(C)]
11426#[derive(Clone, Copy, Debug)]
11427#[doc = "**Chapter**: Resource Creation"]
11428#[doc = "<br>"]
11429#[doc = "**Description**: Structure specifying the acceleration structure to query an address for"]
11430#[doc = "<br>"]
11431#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
11432#[doc = "<br>"]
11433#[doc = "**Reference**: [`VkAccelerationStructureDeviceAddressInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html)"]
11434#[doc = "<br>"]
11435#[doc = "**Initialization template**:"]
11436#[doc = r#"```no_run
11437# use vulk::vk as vk;
11438# use std::ptr::{null, null_mut};
11439let acceleration_structure_device_address_info_khr = vk::AccelerationStructureDeviceAddressInfoKHR {
11440    s_type: vk::StructureType::AccelerationStructureDeviceAddressInfoKHR,
11441    p_next: null(),
11442    acceleration_structure: todo!("vk::AccelerationStructureKHR"),
11443};
11444```"#]
11445pub struct AccelerationStructureDeviceAddressInfoKHR {
11446    pub s_type: StructureType,
11447    pub p_next: *const c_void,
11448    pub acceleration_structure: AccelerationStructureKHR,
11449}
11450
11451#[repr(C)]
11452#[derive(Clone, Copy, Debug)]
11453#[doc = "**Chapter**: Resource Creation"]
11454#[doc = "<br>"]
11455#[doc = "**Description**: Structure specifying memory requirements"]
11456#[doc = "<br>"]
11457#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11458#[doc = "<br>"]
11459#[doc = "**Reference**: [`VkMemoryRequirements`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryRequirements.html)"]
11460#[doc = "<br>"]
11461#[doc = "**Initialization template**:"]
11462#[doc = r#"```no_run
11463# use vulk::vk as vk;
11464# use std::ptr::{null, null_mut};
11465let memory_requirements = vk::MemoryRequirements {
11466    size: todo!("vk::DeviceSize"),
11467    alignment: todo!("vk::DeviceSize"),
11468    memory_type_bits: todo!("u32"),
11469};
11470```"#]
11471pub struct MemoryRequirements {
11472    pub size: DeviceSize,
11473    pub alignment: DeviceSize,
11474    pub memory_type_bits: u32,
11475}
11476
11477#[repr(C)]
11478#[derive(Clone, Copy, Debug)]
11479#[doc = "**Chapter**: Resource Creation"]
11480#[doc = "<br>"]
11481#[doc = "**Description**: (None)"]
11482#[doc = "<br>"]
11483#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
11484#[doc = "<br>"]
11485#[doc = "**Reference**: [`VkDeviceBufferMemoryRequirements`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceBufferMemoryRequirements.html)"]
11486#[doc = "<br>"]
11487#[doc = "**Initialization template**:"]
11488#[doc = r#"```no_run
11489# use vulk::vk as vk;
11490# use std::ptr::{null, null_mut};
11491let device_buffer_memory_requirements = vk::DeviceBufferMemoryRequirements {
11492    s_type: vk::StructureType::DeviceBufferMemoryRequirements,
11493    p_next: null(),
11494    p_create_info: todo!("*const vk::BufferCreateInfo"),
11495};
11496```"#]
11497pub struct DeviceBufferMemoryRequirements {
11498    pub s_type: StructureType,
11499    pub p_next: *const c_void,
11500    pub p_create_info: *const BufferCreateInfo,
11501}
11502
11503#[repr(C)]
11504#[derive(Clone, Copy, Debug)]
11505#[doc = "**Chapter**: Resource Creation"]
11506#[doc = "<br>"]
11507#[doc = "**Description**: (None)"]
11508#[doc = "<br>"]
11509#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
11510#[doc = "<br>"]
11511#[doc = "**Reference**: [`VkDeviceImageMemoryRequirements`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceImageMemoryRequirements.html)"]
11512#[doc = "<br>"]
11513#[doc = "**Initialization template**:"]
11514#[doc = r#"```no_run
11515# use vulk::vk as vk;
11516# use std::ptr::{null, null_mut};
11517let device_image_memory_requirements = vk::DeviceImageMemoryRequirements {
11518    s_type: vk::StructureType::DeviceImageMemoryRequirements,
11519    p_next: null(),
11520    p_create_info: todo!("*const vk::ImageCreateInfo"),
11521    plane_aspect: todo!("vk::ImageAspectFlagBits"),
11522};
11523```"#]
11524pub struct DeviceImageMemoryRequirements {
11525    pub s_type: StructureType,
11526    pub p_next: *const c_void,
11527    pub p_create_info: *const ImageCreateInfo,
11528    pub plane_aspect: ImageAspectFlagBits,
11529}
11530
11531#[repr(C)]
11532#[derive(Clone, Copy, Debug)]
11533#[doc = "**Chapter**: Resource Creation"]
11534#[doc = "<br>"]
11535#[doc = "**Description**: Structure specifying memory requirements"]
11536#[doc = "<br>"]
11537#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
11538#[doc = "<br>"]
11539#[doc = "**Reference**: [`VkMemoryRequirements2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryRequirements2.html)"]
11540#[doc = "<br>"]
11541#[doc = "**Initialization template**:"]
11542#[doc = r#"```no_run
11543# use vulk::vk as vk;
11544# use std::ptr::{null, null_mut};
11545let memory_requirements2 = vk::MemoryRequirements2 {
11546    s_type: vk::StructureType::MemoryRequirements2,
11547    p_next: null_mut(),
11548    memory_requirements: todo!("vk::MemoryRequirements"),
11549};
11550```"#]
11551pub struct MemoryRequirements2 {
11552    pub s_type: StructureType,
11553    pub p_next: *mut c_void,
11554    pub memory_requirements: MemoryRequirements,
11555}
11556
11557#[repr(C)]
11558#[derive(Clone, Copy, Debug)]
11559#[doc = "**Chapter**: Resource Creation"]
11560#[doc = "<br>"]
11561#[doc = "**Description**: Structure specifying how to bind a buffer to memory"]
11562#[doc = "<br>"]
11563#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
11564#[doc = "<br>"]
11565#[doc = "**Reference**: [`VkBindBufferMemoryInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBindBufferMemoryInfo.html)"]
11566#[doc = "<br>"]
11567#[doc = "**Initialization template**:"]
11568#[doc = r#"```no_run
11569# use vulk::vk as vk;
11570# use std::ptr::{null, null_mut};
11571let bind_buffer_memory_info = vk::BindBufferMemoryInfo {
11572    s_type: vk::StructureType::BindBufferMemoryInfo,
11573    p_next: null(),
11574    buffer: todo!("vk::Buffer"),
11575    memory: todo!("vk::DeviceMemory"),
11576    memory_offset: todo!("vk::DeviceSize"),
11577};
11578```"#]
11579pub struct BindBufferMemoryInfo {
11580    pub s_type: StructureType,
11581    pub p_next: *const c_void,
11582    pub buffer: Buffer,
11583    pub memory: DeviceMemory,
11584    pub memory_offset: DeviceSize,
11585}
11586
11587#[repr(C)]
11588#[derive(Clone, Copy, Debug)]
11589#[doc = "**Chapter**: Resource Creation"]
11590#[doc = "<br>"]
11591#[doc = "**Description**: Structure specifying how to bind an image to memory"]
11592#[doc = "<br>"]
11593#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
11594#[doc = "<br>"]
11595#[doc = "**Reference**: [`VkBindImageMemoryInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBindImageMemoryInfo.html)"]
11596#[doc = "<br>"]
11597#[doc = "**Initialization template**:"]
11598#[doc = r#"```no_run
11599# use vulk::vk as vk;
11600# use std::ptr::{null, null_mut};
11601let bind_image_memory_info = vk::BindImageMemoryInfo {
11602    s_type: vk::StructureType::BindImageMemoryInfo,
11603    p_next: null(),
11604    image: todo!("vk::Image"),
11605    memory: todo!("vk::DeviceMemory"),
11606    memory_offset: todo!("vk::DeviceSize"),
11607};
11608```"#]
11609pub struct BindImageMemoryInfo {
11610    pub s_type: StructureType,
11611    pub p_next: *const c_void,
11612    pub image: Image,
11613    pub memory: DeviceMemory,
11614    pub memory_offset: DeviceSize,
11615}
11616
11617#[repr(C)]
11618#[derive(Clone, Copy, Debug)]
11619#[doc = "**Chapter**: Samplers"]
11620#[doc = "<br>"]
11621#[doc = "**Description**: Structure specifying parameters of a newly created sampler"]
11622#[doc = "<br>"]
11623#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11624#[doc = "<br>"]
11625#[doc = "**Reference**: [`VkSamplerCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateInfo.html)"]
11626#[doc = "<br>"]
11627#[doc = "**Initialization template**:"]
11628#[doc = r#"```no_run
11629# use vulk::vk as vk;
11630# use std::ptr::{null, null_mut};
11631let sampler_create_info = vk::SamplerCreateInfo {
11632    s_type: vk::StructureType::SamplerCreateInfo,
11633    p_next: null(),
11634    flags: todo!("vk::SamplerCreateFlagBits"),
11635    mag_filter: todo!("vk::Filter"),
11636    min_filter: todo!("vk::Filter"),
11637    mipmap_mode: todo!("vk::SamplerMipmapMode"),
11638    address_mode_u: todo!("vk::SamplerAddressMode"),
11639    address_mode_v: todo!("vk::SamplerAddressMode"),
11640    address_mode_w: todo!("vk::SamplerAddressMode"),
11641    mip_lod_bias: todo!("f32"),
11642    anisotropy_enable: todo!("vk::Bool32"),
11643    max_anisotropy: todo!("f32"),
11644    compare_enable: todo!("vk::Bool32"),
11645    compare_op: todo!("vk::CompareOp"),
11646    min_lod: todo!("f32"),
11647    max_lod: todo!("f32"),
11648    border_color: todo!("vk::BorderColor"),
11649    unnormalized_coordinates: todo!("vk::Bool32"),
11650};
11651```"#]
11652pub struct SamplerCreateInfo {
11653    pub s_type: StructureType,
11654    pub p_next: *const c_void,
11655    pub flags: SamplerCreateFlags,
11656    pub mag_filter: Filter,
11657    pub min_filter: Filter,
11658    pub mipmap_mode: SamplerMipmapMode,
11659    pub address_mode_u: SamplerAddressMode,
11660    pub address_mode_v: SamplerAddressMode,
11661    pub address_mode_w: SamplerAddressMode,
11662    pub mip_lod_bias: f32,
11663    pub anisotropy_enable: Bool32,
11664    pub max_anisotropy: f32,
11665    pub compare_enable: Bool32,
11666    pub compare_op: CompareOp,
11667    pub min_lod: f32,
11668    pub max_lod: f32,
11669    pub border_color: BorderColor,
11670    pub unnormalized_coordinates: Bool32,
11671}
11672
11673#[repr(C)]
11674#[derive(Clone, Copy, Debug)]
11675#[doc = "**Chapter**: Resource Descriptors"]
11676#[doc = "<br>"]
11677#[doc = "**Description**: Structure specifying parameters of a newly created descriptor set layout"]
11678#[doc = "<br>"]
11679#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11680#[doc = "<br>"]
11681#[doc = "**Reference**: [`VkDescriptorSetLayoutCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html)"]
11682#[doc = "<br>"]
11683#[doc = "**Initialization template**:"]
11684#[doc = r#"```no_run
11685# use vulk::vk as vk;
11686# use std::ptr::{null, null_mut};
11687let descriptor_set_layout_create_info = vk::DescriptorSetLayoutCreateInfo {
11688    s_type: vk::StructureType::DescriptorSetLayoutCreateInfo,
11689    p_next: null(),
11690    flags: todo!("vk::DescriptorSetLayoutCreateFlagBits"),
11691    binding_count: todo!("u32"),
11692    p_bindings: todo!("*const vk::DescriptorSetLayoutBinding"),
11693};
11694```"#]
11695pub struct DescriptorSetLayoutCreateInfo {
11696    pub s_type: StructureType,
11697    pub p_next: *const c_void,
11698    pub flags: DescriptorSetLayoutCreateFlags,
11699    pub binding_count: u32,
11700    pub p_bindings: *const DescriptorSetLayoutBinding,
11701}
11702
11703#[repr(C)]
11704#[derive(Clone, Copy, Debug)]
11705#[doc = "**Chapter**: Resource Descriptors"]
11706#[doc = "<br>"]
11707#[doc = "**Description**: Structure specifying a descriptor set layout binding"]
11708#[doc = "<br>"]
11709#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11710#[doc = "<br>"]
11711#[doc = "**Reference**: [`VkDescriptorSetLayoutBinding`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutBinding.html)"]
11712#[doc = "<br>"]
11713#[doc = "**Initialization template**:"]
11714#[doc = r#"```no_run
11715# use vulk::vk as vk;
11716# use std::ptr::{null, null_mut};
11717let descriptor_set_layout_binding = vk::DescriptorSetLayoutBinding {
11718    binding: todo!("u32"),
11719    descriptor_type: todo!("vk::DescriptorType"),
11720    descriptor_count: todo!("u32"),
11721    stage_flags: todo!("vk::ShaderStageFlagBits"),
11722    p_immutable_samplers: todo!("*const vk::Sampler"),
11723};
11724```"#]
11725pub struct DescriptorSetLayoutBinding {
11726    pub binding: u32,
11727    pub descriptor_type: DescriptorType,
11728    pub descriptor_count: u32,
11729    pub stage_flags: ShaderStageFlags,
11730    pub p_immutable_samplers: *const Sampler,
11731}
11732
11733#[repr(C)]
11734#[derive(Clone, Copy, Debug)]
11735#[doc = "**Chapter**: Resource Descriptors"]
11736#[doc = "<br>"]
11737#[doc = "**Description**: Structure specifying the parameters of a newly created pipeline layout object"]
11738#[doc = "<br>"]
11739#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11740#[doc = "<br>"]
11741#[doc = "**Reference**: [`VkPipelineLayoutCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateInfo.html)"]
11742#[doc = "<br>"]
11743#[doc = "**Initialization template**:"]
11744#[doc = r#"```no_run
11745# use vulk::vk as vk;
11746# use std::ptr::{null, null_mut};
11747let pipeline_layout_create_info = vk::PipelineLayoutCreateInfo {
11748    s_type: vk::StructureType::PipelineLayoutCreateInfo,
11749    p_next: null(),
11750    flags: vk::PipelineLayoutCreateFlags::empty(),
11751    set_layout_count: todo!("u32"),
11752    p_set_layouts: todo!("*const vk::DescriptorSetLayout"),
11753    push_constant_range_count: todo!("u32"),
11754    p_push_constant_ranges: todo!("*const vk::PushConstantRange"),
11755};
11756```"#]
11757pub struct PipelineLayoutCreateInfo {
11758    pub s_type: StructureType,
11759    pub p_next: *const c_void,
11760    pub flags: PipelineLayoutCreateFlags,
11761    pub set_layout_count: u32,
11762    pub p_set_layouts: *const DescriptorSetLayout,
11763    pub push_constant_range_count: u32,
11764    pub p_push_constant_ranges: *const PushConstantRange,
11765}
11766
11767#[repr(C)]
11768#[derive(Clone, Copy, Debug)]
11769#[doc = "**Chapter**: Resource Descriptors"]
11770#[doc = "<br>"]
11771#[doc = "**Description**: Structure specifying a push constant range"]
11772#[doc = "<br>"]
11773#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11774#[doc = "<br>"]
11775#[doc = "**Reference**: [`VkPushConstantRange`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPushConstantRange.html)"]
11776#[doc = "<br>"]
11777#[doc = "**Initialization template**:"]
11778#[doc = r#"```no_run
11779# use vulk::vk as vk;
11780# use std::ptr::{null, null_mut};
11781let push_constant_range = vk::PushConstantRange {
11782    stage_flags: todo!("vk::ShaderStageFlagBits"),
11783    offset: todo!("u32"),
11784    size: todo!("u32"),
11785};
11786```"#]
11787pub struct PushConstantRange {
11788    pub stage_flags: ShaderStageFlags,
11789    pub offset: u32,
11790    pub size: u32,
11791}
11792
11793#[repr(C)]
11794#[derive(Clone, Copy, Debug)]
11795#[doc = "**Chapter**: Resource Descriptors"]
11796#[doc = "<br>"]
11797#[doc = "**Description**: Structure specifying descriptor image information"]
11798#[doc = "<br>"]
11799#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11800#[doc = "<br>"]
11801#[doc = "**Reference**: [`VkDescriptorImageInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorImageInfo.html)"]
11802#[doc = "<br>"]
11803#[doc = "**Initialization template**:"]
11804#[doc = r#"```no_run
11805# use vulk::vk as vk;
11806# use std::ptr::{null, null_mut};
11807let descriptor_image_info = vk::DescriptorImageInfo {
11808    sampler: todo!("vk::Sampler"),
11809    image_view: todo!("vk::ImageView"),
11810    image_layout: todo!("vk::ImageLayout"),
11811};
11812```"#]
11813pub struct DescriptorImageInfo {
11814    pub sampler: Sampler,
11815    pub image_view: ImageView,
11816    pub image_layout: ImageLayout,
11817}
11818
11819#[repr(C)]
11820#[derive(Clone, Copy, Debug)]
11821#[doc = "**Chapter**: Resource Descriptors"]
11822#[doc = "<br>"]
11823#[doc = "**Description**: Structure specifying the buffer to query an address for"]
11824#[doc = "<br>"]
11825#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
11826#[doc = "<br>"]
11827#[doc = "**Reference**: [`VkBufferDeviceAddressInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferDeviceAddressInfo.html)"]
11828#[doc = "<br>"]
11829#[doc = "**Initialization template**:"]
11830#[doc = r#"```no_run
11831# use vulk::vk as vk;
11832# use std::ptr::{null, null_mut};
11833let buffer_device_address_info = vk::BufferDeviceAddressInfo {
11834    s_type: vk::StructureType::BufferDeviceAddressInfo,
11835    p_next: null(),
11836    buffer: todo!("vk::Buffer"),
11837};
11838```"#]
11839pub struct BufferDeviceAddressInfo {
11840    pub s_type: StructureType,
11841    pub p_next: *const c_void,
11842    pub buffer: Buffer,
11843}
11844
11845#[repr(C)]
11846#[derive(Clone, Copy, Debug)]
11847#[doc = "**Chapter**: Resource Descriptors"]
11848#[doc = "<br>"]
11849#[doc = "**Description**: Structure specifying parameters of descriptor to get"]
11850#[doc = "<br>"]
11851#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
11852#[doc = "<br>"]
11853#[doc = "**Reference**: [`VkDescriptorGetInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorGetInfoEXT.html)"]
11854#[doc = "<br>"]
11855#[doc = "**Initialization template**:"]
11856#[doc = r#"```no_run
11857# use vulk::vk as vk;
11858# use std::ptr::{null, null_mut};
11859let descriptor_get_info_ext = vk::DescriptorGetInfoEXT {
11860    s_type: vk::StructureType::DescriptorGetInfoEXT,
11861    p_next: null(),
11862    ty: todo!("vk::DescriptorType"),
11863    data: todo!("vk::DescriptorDataEXT"),
11864};
11865```"#]
11866pub struct DescriptorGetInfoEXT {
11867    pub s_type: StructureType,
11868    pub p_next: *const c_void,
11869    pub ty: DescriptorType,
11870    pub data: DescriptorDataEXT,
11871}
11872
11873#[repr(C)]
11874#[derive(Clone, Copy, Debug)]
11875#[doc = "**Chapter**: Resource Descriptors"]
11876#[doc = "<br>"]
11877#[doc = "**Description**: Structure specifying descriptor buffer address info"]
11878#[doc = "<br>"]
11879#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
11880#[doc = "<br>"]
11881#[doc = "**Reference**: [`VkDescriptorAddressInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorAddressInfoEXT.html)"]
11882#[doc = "<br>"]
11883#[doc = "**Initialization template**:"]
11884#[doc = r#"```no_run
11885# use vulk::vk as vk;
11886# use std::ptr::{null, null_mut};
11887let descriptor_address_info_ext = vk::DescriptorAddressInfoEXT {
11888    s_type: vk::StructureType::DescriptorAddressInfoEXT,
11889    p_next: null_mut(),
11890    address: todo!("vk::DeviceAddress"),
11891    range: todo!("vk::DeviceSize"),
11892    format: todo!("vk::Format"),
11893};
11894```"#]
11895pub struct DescriptorAddressInfoEXT {
11896    pub s_type: StructureType,
11897    pub p_next: *mut c_void,
11898    pub address: DeviceAddress,
11899    pub range: DeviceSize,
11900    pub format: Format,
11901}
11902
11903#[repr(C)]
11904#[derive(Clone, Copy, Debug)]
11905#[doc = "**Chapter**: Resource Descriptors"]
11906#[doc = "<br>"]
11907#[doc = "**Description**: Structure specifying descriptor buffer binding information"]
11908#[doc = "<br>"]
11909#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
11910#[doc = "<br>"]
11911#[doc = "**Reference**: [`VkDescriptorBufferBindingInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorBufferBindingInfoEXT.html)"]
11912#[doc = "<br>"]
11913#[doc = "**Initialization template**:"]
11914#[doc = r#"```no_run
11915# use vulk::vk as vk;
11916# use std::ptr::{null, null_mut};
11917let descriptor_buffer_binding_info_ext = vk::DescriptorBufferBindingInfoEXT {
11918    s_type: vk::StructureType::DescriptorBufferBindingInfoEXT,
11919    p_next: null_mut(),
11920    address: todo!("vk::DeviceAddress"),
11921    usage: todo!("vk::BufferUsageFlagBits"),
11922};
11923```"#]
11924pub struct DescriptorBufferBindingInfoEXT {
11925    pub s_type: StructureType,
11926    pub p_next: *mut c_void,
11927    pub address: DeviceAddress,
11928    pub usage: BufferUsageFlags,
11929}
11930
11931#[repr(C)]
11932#[derive(Clone, Copy, Debug)]
11933#[doc = "**Chapter**: Queries"]
11934#[doc = "<br>"]
11935#[doc = "**Description**: Structure specifying parameters of a newly created query pool"]
11936#[doc = "<br>"]
11937#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11938#[doc = "<br>"]
11939#[doc = "**Reference**: [`VkQueryPoolCreateInfo`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPoolCreateInfo.html)"]
11940#[doc = "<br>"]
11941#[doc = "**Initialization template**:"]
11942#[doc = r#"```no_run
11943# use vulk::vk as vk;
11944# use std::ptr::{null, null_mut};
11945let query_pool_create_info = vk::QueryPoolCreateInfo {
11946    s_type: vk::StructureType::QueryPoolCreateInfo,
11947    p_next: null(),
11948    flags: vk::QueryPoolCreateFlags::empty(),
11949    query_type: todo!("vk::QueryType"),
11950    query_count: todo!("u32"),
11951    pipeline_statistics: todo!("vk::QueryPipelineStatisticFlagBits"),
11952};
11953```"#]
11954pub struct QueryPoolCreateInfo {
11955    pub s_type: StructureType,
11956    pub p_next: *const c_void,
11957    pub flags: QueryPoolCreateFlags,
11958    pub query_type: QueryType,
11959    pub query_count: u32,
11960    pub pipeline_statistics: QueryPipelineStatisticFlags,
11961}
11962
11963#[repr(C)]
11964#[derive(Clone, Copy, Debug)]
11965#[doc = "**Chapter**: Clear Commands"]
11966#[doc = "<br>"]
11967#[doc = "**Description**: Structure specifying a clear depth stencil value"]
11968#[doc = "<br>"]
11969#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
11970#[doc = "<br>"]
11971#[doc = "**Reference**: [`VkClearDepthStencilValue`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkClearDepthStencilValue.html)"]
11972#[doc = "<br>"]
11973#[doc = "**Initialization template**:"]
11974#[doc = r#"```no_run
11975# use vulk::vk as vk;
11976# use std::ptr::{null, null_mut};
11977let clear_depth_stencil_value = vk::ClearDepthStencilValue {
11978    depth: todo!("f32"),
11979    stencil: todo!("u32"),
11980};
11981```"#]
11982pub struct ClearDepthStencilValue {
11983    pub depth: f32,
11984    pub stencil: u32,
11985}
11986
11987#[repr(C)]
11988#[derive(Clone, Copy, Debug)]
11989#[doc = "**Chapter**: Copy Commands"]
11990#[doc = "<br>"]
11991#[doc = "**Description**: Structure specifying parameters of a buffer copy command"]
11992#[doc = "<br>"]
11993#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
11994#[doc = "<br>"]
11995#[doc = "**Reference**: [`VkCopyBufferInfo2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCopyBufferInfo2.html)"]
11996#[doc = "<br>"]
11997#[doc = "**Initialization template**:"]
11998#[doc = r#"```no_run
11999# use vulk::vk as vk;
12000# use std::ptr::{null, null_mut};
12001let copy_buffer_info2 = vk::CopyBufferInfo2 {
12002    s_type: vk::StructureType::CopyBufferInfo2,
12003    p_next: null(),
12004    src_buffer: todo!("vk::Buffer"),
12005    dst_buffer: todo!("vk::Buffer"),
12006    region_count: todo!("u32"),
12007    p_regions: todo!("*const vk::BufferCopy2"),
12008};
12009```"#]
12010pub struct CopyBufferInfo2 {
12011    pub s_type: StructureType,
12012    pub p_next: *const c_void,
12013    pub src_buffer: Buffer,
12014    pub dst_buffer: Buffer,
12015    pub region_count: u32,
12016    pub p_regions: *const BufferCopy2,
12017}
12018
12019#[repr(C)]
12020#[derive(Clone, Copy, Debug)]
12021#[doc = "**Chapter**: Copy Commands"]
12022#[doc = "<br>"]
12023#[doc = "**Description**: Structure specifying a buffer copy operation"]
12024#[doc = "<br>"]
12025#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
12026#[doc = "<br>"]
12027#[doc = "**Reference**: [`VkBufferCopy2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCopy2.html)"]
12028#[doc = "<br>"]
12029#[doc = "**Initialization template**:"]
12030#[doc = r#"```no_run
12031# use vulk::vk as vk;
12032# use std::ptr::{null, null_mut};
12033let buffer_copy2 = vk::BufferCopy2 {
12034    s_type: vk::StructureType::BufferCopy2,
12035    p_next: null(),
12036    src_offset: todo!("vk::DeviceSize"),
12037    dst_offset: todo!("vk::DeviceSize"),
12038    size: todo!("vk::DeviceSize"),
12039};
12040```"#]
12041pub struct BufferCopy2 {
12042    pub s_type: StructureType,
12043    pub p_next: *const c_void,
12044    pub src_offset: DeviceSize,
12045    pub dst_offset: DeviceSize,
12046    pub size: DeviceSize,
12047}
12048
12049#[repr(C)]
12050#[derive(Clone, Copy, Debug)]
12051#[doc = "**Chapter**: Copy Commands"]
12052#[doc = "<br>"]
12053#[doc = "**Description**: Structure specifying an image subresource layers"]
12054#[doc = "<br>"]
12055#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
12056#[doc = "<br>"]
12057#[doc = "**Reference**: [`VkImageSubresourceLayers`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageSubresourceLayers.html)"]
12058#[doc = "<br>"]
12059#[doc = "**Initialization template**:"]
12060#[doc = r#"```no_run
12061# use vulk::vk as vk;
12062# use std::ptr::{null, null_mut};
12063let image_subresource_layers = vk::ImageSubresourceLayers {
12064    aspect_mask: todo!("vk::ImageAspectFlagBits"),
12065    mip_level: todo!("u32"),
12066    base_array_layer: todo!("u32"),
12067    layer_count: todo!("u32"),
12068};
12069```"#]
12070pub struct ImageSubresourceLayers {
12071    pub aspect_mask: ImageAspectFlags,
12072    pub mip_level: u32,
12073    pub base_array_layer: u32,
12074    pub layer_count: u32,
12075}
12076
12077#[repr(C)]
12078#[derive(Clone, Copy, Debug)]
12079#[doc = "**Chapter**: Copy Commands"]
12080#[doc = "<br>"]
12081#[doc = "**Description**: Structure specifying parameters of an image copy command"]
12082#[doc = "<br>"]
12083#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
12084#[doc = "<br>"]
12085#[doc = "**Reference**: [`VkCopyImageInfo2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCopyImageInfo2.html)"]
12086#[doc = "<br>"]
12087#[doc = "**Initialization template**:"]
12088#[doc = r#"```no_run
12089# use vulk::vk as vk;
12090# use std::ptr::{null, null_mut};
12091let copy_image_info2 = vk::CopyImageInfo2 {
12092    s_type: vk::StructureType::CopyImageInfo2,
12093    p_next: null(),
12094    src_image: todo!("vk::Image"),
12095    src_image_layout: todo!("vk::ImageLayout"),
12096    dst_image: todo!("vk::Image"),
12097    dst_image_layout: todo!("vk::ImageLayout"),
12098    region_count: todo!("u32"),
12099    p_regions: todo!("*const vk::ImageCopy2"),
12100};
12101```"#]
12102pub struct CopyImageInfo2 {
12103    pub s_type: StructureType,
12104    pub p_next: *const c_void,
12105    pub src_image: Image,
12106    pub src_image_layout: ImageLayout,
12107    pub dst_image: Image,
12108    pub dst_image_layout: ImageLayout,
12109    pub region_count: u32,
12110    pub p_regions: *const ImageCopy2,
12111}
12112
12113#[repr(C)]
12114#[derive(Clone, Copy, Debug)]
12115#[doc = "**Chapter**: Copy Commands"]
12116#[doc = "<br>"]
12117#[doc = "**Description**: Structure specifying an image copy operation"]
12118#[doc = "<br>"]
12119#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
12120#[doc = "<br>"]
12121#[doc = "**Reference**: [`VkImageCopy2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageCopy2.html)"]
12122#[doc = "<br>"]
12123#[doc = "**Initialization template**:"]
12124#[doc = r#"```no_run
12125# use vulk::vk as vk;
12126# use std::ptr::{null, null_mut};
12127let image_copy2 = vk::ImageCopy2 {
12128    s_type: vk::StructureType::ImageCopy2,
12129    p_next: null(),
12130    src_subresource: todo!("vk::ImageSubresourceLayers"),
12131    src_offset: todo!("vk::Offset3D"),
12132    dst_subresource: todo!("vk::ImageSubresourceLayers"),
12133    dst_offset: todo!("vk::Offset3D"),
12134    extent: todo!("vk::Extent3D"),
12135};
12136```"#]
12137pub struct ImageCopy2 {
12138    pub s_type: StructureType,
12139    pub p_next: *const c_void,
12140    pub src_subresource: ImageSubresourceLayers,
12141    pub src_offset: Offset3D,
12142    pub dst_subresource: ImageSubresourceLayers,
12143    pub dst_offset: Offset3D,
12144    pub extent: Extent3D,
12145}
12146
12147#[repr(C)]
12148#[derive(Clone, Copy, Debug)]
12149#[doc = "**Chapter**: Copy Commands"]
12150#[doc = "<br>"]
12151#[doc = "**Description**: Structure specifying parameters of a buffer to image copy command"]
12152#[doc = "<br>"]
12153#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
12154#[doc = "<br>"]
12155#[doc = "**Reference**: [`VkCopyBufferToImageInfo2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCopyBufferToImageInfo2.html)"]
12156#[doc = "<br>"]
12157#[doc = "**Initialization template**:"]
12158#[doc = r#"```no_run
12159# use vulk::vk as vk;
12160# use std::ptr::{null, null_mut};
12161let copy_buffer_to_image_info2 = vk::CopyBufferToImageInfo2 {
12162    s_type: vk::StructureType::CopyBufferToImageInfo2,
12163    p_next: null(),
12164    src_buffer: todo!("vk::Buffer"),
12165    dst_image: todo!("vk::Image"),
12166    dst_image_layout: todo!("vk::ImageLayout"),
12167    region_count: todo!("u32"),
12168    p_regions: todo!("*const vk::BufferImageCopy2"),
12169};
12170```"#]
12171pub struct CopyBufferToImageInfo2 {
12172    pub s_type: StructureType,
12173    pub p_next: *const c_void,
12174    pub src_buffer: Buffer,
12175    pub dst_image: Image,
12176    pub dst_image_layout: ImageLayout,
12177    pub region_count: u32,
12178    pub p_regions: *const BufferImageCopy2,
12179}
12180
12181#[repr(C)]
12182#[derive(Clone, Copy, Debug)]
12183#[doc = "**Chapter**: Copy Commands"]
12184#[doc = "<br>"]
12185#[doc = "**Description**: Structure specifying parameters of an image to buffer copy command"]
12186#[doc = "<br>"]
12187#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
12188#[doc = "<br>"]
12189#[doc = "**Reference**: [`VkCopyImageToBufferInfo2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCopyImageToBufferInfo2.html)"]
12190#[doc = "<br>"]
12191#[doc = "**Initialization template**:"]
12192#[doc = r#"```no_run
12193# use vulk::vk as vk;
12194# use std::ptr::{null, null_mut};
12195let copy_image_to_buffer_info2 = vk::CopyImageToBufferInfo2 {
12196    s_type: vk::StructureType::CopyImageToBufferInfo2,
12197    p_next: null(),
12198    src_image: todo!("vk::Image"),
12199    src_image_layout: todo!("vk::ImageLayout"),
12200    dst_buffer: todo!("vk::Buffer"),
12201    region_count: todo!("u32"),
12202    p_regions: todo!("*const vk::BufferImageCopy2"),
12203};
12204```"#]
12205pub struct CopyImageToBufferInfo2 {
12206    pub s_type: StructureType,
12207    pub p_next: *const c_void,
12208    pub src_image: Image,
12209    pub src_image_layout: ImageLayout,
12210    pub dst_buffer: Buffer,
12211    pub region_count: u32,
12212    pub p_regions: *const BufferImageCopy2,
12213}
12214
12215#[repr(C)]
12216#[derive(Clone, Copy, Debug)]
12217#[doc = "**Chapter**: Copy Commands"]
12218#[doc = "<br>"]
12219#[doc = "**Description**: Structure specifying a buffer image copy operation"]
12220#[doc = "<br>"]
12221#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
12222#[doc = "<br>"]
12223#[doc = "**Reference**: [`VkBufferImageCopy2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferImageCopy2.html)"]
12224#[doc = "<br>"]
12225#[doc = "**Initialization template**:"]
12226#[doc = r#"```no_run
12227# use vulk::vk as vk;
12228# use std::ptr::{null, null_mut};
12229let buffer_image_copy2 = vk::BufferImageCopy2 {
12230    s_type: vk::StructureType::BufferImageCopy2,
12231    p_next: null(),
12232    buffer_offset: todo!("vk::DeviceSize"),
12233    buffer_row_length: todo!("u32"),
12234    buffer_image_height: todo!("u32"),
12235    image_subresource: todo!("vk::ImageSubresourceLayers"),
12236    image_offset: todo!("vk::Offset3D"),
12237    image_extent: todo!("vk::Extent3D"),
12238};
12239```"#]
12240pub struct BufferImageCopy2 {
12241    pub s_type: StructureType,
12242    pub p_next: *const c_void,
12243    pub buffer_offset: DeviceSize,
12244    pub buffer_row_length: u32,
12245    pub buffer_image_height: u32,
12246    pub image_subresource: ImageSubresourceLayers,
12247    pub image_offset: Offset3D,
12248    pub image_extent: Extent3D,
12249}
12250
12251#[repr(C)]
12252#[derive(Clone, Copy, Debug)]
12253#[doc = "**Chapter**: Drawing Commands"]
12254#[doc = "<br>"]
12255#[doc = "**Description**: Structure specifying a mesh tasks draw indirect command"]
12256#[doc = "<br>"]
12257#[doc = "**Provided by**: [`VK_EXT_mesh_shader`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)"]
12258#[doc = "<br>"]
12259#[doc = "**Reference**: [`VkDrawMeshTasksIndirectCommandEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDrawMeshTasksIndirectCommandEXT.html)"]
12260#[doc = "<br>"]
12261#[doc = "**Initialization template**:"]
12262#[doc = r#"```no_run
12263# use vulk::vk as vk;
12264# use std::ptr::{null, null_mut};
12265let draw_mesh_tasks_indirect_command_ext = vk::DrawMeshTasksIndirectCommandEXT {
12266    group_count_x: todo!("u32"),
12267    group_count_y: todo!("u32"),
12268    group_count_z: todo!("u32"),
12269};
12270```"#]
12271pub struct DrawMeshTasksIndirectCommandEXT {
12272    pub group_count_x: u32,
12273    pub group_count_y: u32,
12274    pub group_count_z: u32,
12275}
12276
12277#[repr(C)]
12278#[derive(Clone, Copy, Debug)]
12279#[doc = "**Chapter**: Fixed-Function Vertex Post-Processing"]
12280#[doc = "<br>"]
12281#[doc = "**Description**: Structure specifying a viewport"]
12282#[doc = "<br>"]
12283#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
12284#[doc = "<br>"]
12285#[doc = "**Reference**: [`VkViewport`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkViewport.html)"]
12286#[doc = "<br>"]
12287#[doc = "**Initialization template**:"]
12288#[doc = r#"```no_run
12289# use vulk::vk as vk;
12290# use std::ptr::{null, null_mut};
12291let viewport = vk::Viewport {
12292    x: todo!("f32"),
12293    y: todo!("f32"),
12294    width: todo!("f32"),
12295    height: todo!("f32"),
12296    min_depth: todo!("f32"),
12297    max_depth: todo!("f32"),
12298};
12299```"#]
12300pub struct Viewport {
12301    pub x: f32,
12302    pub y: f32,
12303    pub width: f32,
12304    pub height: f32,
12305    pub min_depth: f32,
12306    pub max_depth: f32,
12307}
12308
12309#[repr(C)]
12310#[derive(Clone, Copy, Debug)]
12311#[doc = "**Chapter**: The Framebuffer"]
12312#[doc = "<br>"]
12313#[doc = "**Description**: Structure specifying the color blend factors and operations for an attachment"]
12314#[doc = "<br>"]
12315#[doc = "**Provided by**: [`VK_EXT_extended_dynamic_state3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)"]
12316#[doc = "<br>"]
12317#[doc = "**Reference**: [`VkColorBlendEquationEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkColorBlendEquationEXT.html)"]
12318#[doc = "<br>"]
12319#[doc = "**Initialization template**:"]
12320#[doc = r#"```no_run
12321# use vulk::vk as vk;
12322# use std::ptr::{null, null_mut};
12323let color_blend_equation_ext = vk::ColorBlendEquationEXT {
12324    src_color_blend_factor: todo!("vk::BlendFactor"),
12325    dst_color_blend_factor: todo!("vk::BlendFactor"),
12326    color_blend_op: todo!("vk::BlendOp"),
12327    src_alpha_blend_factor: todo!("vk::BlendFactor"),
12328    dst_alpha_blend_factor: todo!("vk::BlendFactor"),
12329    alpha_blend_op: todo!("vk::BlendOp"),
12330};
12331```"#]
12332pub struct ColorBlendEquationEXT {
12333    pub src_color_blend_factor: BlendFactor,
12334    pub dst_color_blend_factor: BlendFactor,
12335    pub color_blend_op: BlendOp,
12336    pub src_alpha_blend_factor: BlendFactor,
12337    pub dst_alpha_blend_factor: BlendFactor,
12338    pub alpha_blend_op: BlendOp,
12339}
12340
12341#[repr(C)]
12342#[derive(Clone, Copy, Debug)]
12343#[doc = "**Chapter**: Dispatching Commands"]
12344#[doc = "<br>"]
12345#[doc = "**Description**: Structure specifying a indirect dispatching command"]
12346#[doc = "<br>"]
12347#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
12348#[doc = "<br>"]
12349#[doc = "**Reference**: [`VkDispatchIndirectCommand`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDispatchIndirectCommand.html)"]
12350#[doc = "<br>"]
12351#[doc = "**Initialization template**:"]
12352#[doc = r#"```no_run
12353# use vulk::vk as vk;
12354# use std::ptr::{null, null_mut};
12355let dispatch_indirect_command = vk::DispatchIndirectCommand {
12356    x: todo!("u32"),
12357    y: todo!("u32"),
12358    z: todo!("u32"),
12359};
12360```"#]
12361pub struct DispatchIndirectCommand {
12362    pub x: u32,
12363    pub y: u32,
12364    pub z: u32,
12365}
12366
12367#[repr(C)]
12368#[derive(Clone, Copy, Debug)]
12369#[doc = "**Chapter**: Sparse Resources"]
12370#[doc = "<br>"]
12371#[doc = "**Description**: Structure specifying physical device sparse memory properties"]
12372#[doc = "<br>"]
12373#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
12374#[doc = "<br>"]
12375#[doc = "**Reference**: [`VkPhysicalDeviceSparseProperties`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html)"]
12376#[doc = "<br>"]
12377#[doc = "**Initialization template**:"]
12378#[doc = r#"```no_run
12379# use vulk::vk as vk;
12380# use std::ptr::{null, null_mut};
12381let physical_device_sparse_properties = vk::PhysicalDeviceSparseProperties {
12382    residency_standard_2d_block_shape: todo!("vk::Bool32"),
12383    residency_standard_2d_multisample_block_shape: todo!("vk::Bool32"),
12384    residency_standard_3d_block_shape: todo!("vk::Bool32"),
12385    residency_aligned_mip_size: todo!("vk::Bool32"),
12386    residency_non_resident_strict: todo!("vk::Bool32"),
12387};
12388```"#]
12389pub struct PhysicalDeviceSparseProperties {
12390    pub residency_standard_2d_block_shape: Bool32,
12391    pub residency_standard_2d_multisample_block_shape: Bool32,
12392    pub residency_standard_3d_block_shape: Bool32,
12393    pub residency_aligned_mip_size: Bool32,
12394    pub residency_non_resident_strict: Bool32,
12395}
12396
12397#[repr(C)]
12398#[derive(Clone, Copy, Debug)]
12399#[doc = "**Chapter**: Window System Integration (WSI)"]
12400#[doc = "<br>"]
12401#[doc = "**Description**: Structure specifying parameters of a newly created Win32 surface object"]
12402#[doc = "<br>"]
12403#[doc = "**Provided by**: [`VK_KHR_win32_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_win32_surface.html)"]
12404#[doc = "<br>"]
12405#[doc = "**Reference**: [`VkWin32SurfaceCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkWin32SurfaceCreateInfoKHR.html)"]
12406#[doc = "<br>"]
12407#[doc = "**Initialization template**:"]
12408#[doc = r#"```no_run
12409# use vulk::vk as vk;
12410# use std::ptr::{null, null_mut};
12411let win32_surface_create_info_khr = vk::Win32SurfaceCreateInfoKHR {
12412    s_type: vk::StructureType::Win32SurfaceCreateInfoKHR,
12413    p_next: null(),
12414    flags: vk::Win32SurfaceCreateFlagsKHR::empty(),
12415    hinstance: todo!("*const c_void"),
12416    hwnd: todo!("*const c_void"),
12417};
12418```"#]
12419pub struct Win32SurfaceCreateInfoKHR {
12420    pub s_type: StructureType,
12421    pub p_next: *const c_void,
12422    pub flags: Win32SurfaceCreateFlagsKHR,
12423    pub hinstance: *const c_void,
12424    pub hwnd: *const c_void,
12425}
12426
12427#[repr(C)]
12428#[derive(Clone, Copy, Debug)]
12429#[doc = "**Chapter**: Window System Integration (WSI)"]
12430#[doc = "<br>"]
12431#[doc = "**Description**: Structure describing capabilities of a surface"]
12432#[doc = "<br>"]
12433#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
12434#[doc = "<br>"]
12435#[doc = "**Reference**: [`VkSurfaceCapabilitiesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSurfaceCapabilitiesKHR.html)"]
12436#[doc = "<br>"]
12437#[doc = "**Initialization template**:"]
12438#[doc = r#"```no_run
12439# use vulk::vk as vk;
12440# use std::ptr::{null, null_mut};
12441let surface_capabilities_khr = vk::SurfaceCapabilitiesKHR {
12442    min_image_count: todo!("u32"),
12443    max_image_count: todo!("u32"),
12444    current_extent: todo!("vk::Extent2D"),
12445    min_image_extent: todo!("vk::Extent2D"),
12446    max_image_extent: todo!("vk::Extent2D"),
12447    max_image_array_layers: todo!("u32"),
12448    supported_transforms: todo!("vk::SurfaceTransformFlagBitsKHR"),
12449    current_transform: todo!("vk::SurfaceTransformFlagBitsKHR"),
12450    supported_composite_alpha: todo!("vk::CompositeAlphaFlagBitsKHR"),
12451    supported_usage_flags: todo!("vk::ImageUsageFlagBits"),
12452};
12453```"#]
12454pub struct SurfaceCapabilitiesKHR {
12455    pub min_image_count: u32,
12456    pub max_image_count: u32,
12457    pub current_extent: Extent2D,
12458    pub min_image_extent: Extent2D,
12459    pub max_image_extent: Extent2D,
12460    pub max_image_array_layers: u32,
12461    pub supported_transforms: SurfaceTransformFlagsKHR,
12462    pub current_transform: SurfaceTransformFlagBitsKHR,
12463    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
12464    pub supported_usage_flags: ImageUsageFlags,
12465}
12466
12467#[repr(C)]
12468#[derive(Clone, Copy, Debug)]
12469#[doc = "**Chapter**: Window System Integration (WSI)"]
12470#[doc = "<br>"]
12471#[doc = "**Description**: Structure describing a supported swapchain format-color space pair"]
12472#[doc = "<br>"]
12473#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
12474#[doc = "<br>"]
12475#[doc = "**Reference**: [`VkSurfaceFormatKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSurfaceFormatKHR.html)"]
12476#[doc = "<br>"]
12477#[doc = "**Initialization template**:"]
12478#[doc = r#"```no_run
12479# use vulk::vk as vk;
12480# use std::ptr::{null, null_mut};
12481let surface_format_khr = vk::SurfaceFormatKHR {
12482    format: todo!("vk::Format"),
12483    color_space: todo!("vk::ColorSpaceKHR"),
12484};
12485```"#]
12486pub struct SurfaceFormatKHR {
12487    pub format: Format,
12488    pub color_space: ColorSpaceKHR,
12489}
12490
12491#[repr(C)]
12492#[derive(Clone, Copy, Debug)]
12493#[doc = "**Chapter**: Window System Integration (WSI)"]
12494#[doc = "<br>"]
12495#[doc = "**Description**: Structure specifying parameters of a newly created swapchain object"]
12496#[doc = "<br>"]
12497#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
12498#[doc = "<br>"]
12499#[doc = "**Reference**: [`VkSwapchainCreateInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSwapchainCreateInfoKHR.html)"]
12500#[doc = "<br>"]
12501#[doc = "**Initialization template**:"]
12502#[doc = r#"```no_run
12503# use vulk::vk as vk;
12504# use std::ptr::{null, null_mut};
12505let swapchain_create_info_khr = vk::SwapchainCreateInfoKHR {
12506    s_type: vk::StructureType::SwapchainCreateInfoKHR,
12507    p_next: null(),
12508    flags: todo!("vk::SwapchainCreateFlagBitsKHR"),
12509    surface: todo!("vk::SurfaceKHR"),
12510    min_image_count: todo!("u32"),
12511    image_format: todo!("vk::Format"),
12512    image_color_space: todo!("vk::ColorSpaceKHR"),
12513    image_extent: todo!("vk::Extent2D"),
12514    image_array_layers: todo!("u32"),
12515    image_usage: todo!("vk::ImageUsageFlagBits"),
12516    image_sharing_mode: todo!("vk::SharingMode"),
12517    queue_family_index_count: todo!("u32"),
12518    p_queue_family_indices: todo!("*const u32"),
12519    pre_transform: todo!("vk::SurfaceTransformFlagBitsKHR"),
12520    composite_alpha: todo!("vk::CompositeAlphaFlagBitsKHR"),
12521    present_mode: todo!("vk::PresentModeKHR"),
12522    clipped: todo!("vk::Bool32"),
12523    old_swapchain: todo!("vk::SwapchainKHR"),
12524};
12525```"#]
12526pub struct SwapchainCreateInfoKHR {
12527    pub s_type: StructureType,
12528    pub p_next: *const c_void,
12529    pub flags: SwapchainCreateFlagsKHR,
12530    pub surface: SurfaceKHR,
12531    pub min_image_count: u32,
12532    pub image_format: Format,
12533    pub image_color_space: ColorSpaceKHR,
12534    pub image_extent: Extent2D,
12535    pub image_array_layers: u32,
12536    pub image_usage: ImageUsageFlags,
12537    pub image_sharing_mode: SharingMode,
12538    pub queue_family_index_count: u32,
12539    pub p_queue_family_indices: *const u32,
12540    pub pre_transform: SurfaceTransformFlagBitsKHR,
12541    pub composite_alpha: CompositeAlphaFlagBitsKHR,
12542    pub present_mode: PresentModeKHR,
12543    pub clipped: Bool32,
12544    pub old_swapchain: SwapchainKHR,
12545}
12546
12547#[repr(C)]
12548#[derive(Clone, Copy, Debug)]
12549#[doc = "**Chapter**: Window System Integration (WSI)"]
12550#[doc = "<br>"]
12551#[doc = "**Description**: Structure specifying parameters of the acquire"]
12552#[doc = "<br>"]
12553#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
12554#[doc = "<br>"]
12555#[doc = "**Reference**: [`VkAcquireNextImageInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAcquireNextImageInfoKHR.html)"]
12556#[doc = "<br>"]
12557#[doc = "**Initialization template**:"]
12558#[doc = r#"```no_run
12559# use vulk::vk as vk;
12560# use std::ptr::{null, null_mut};
12561let acquire_next_image_info_khr = vk::AcquireNextImageInfoKHR {
12562    s_type: vk::StructureType::AcquireNextImageInfoKHR,
12563    p_next: null(),
12564    swapchain: todo!("vk::SwapchainKHR"),
12565    timeout: todo!("u64"),
12566    semaphore: todo!("vk::Semaphore"),
12567    fence: todo!("vk::Fence"),
12568    device_mask: todo!("u32"),
12569};
12570```"#]
12571pub struct AcquireNextImageInfoKHR {
12572    pub s_type: StructureType,
12573    pub p_next: *const c_void,
12574    pub swapchain: SwapchainKHR,
12575    pub timeout: u64,
12576    pub semaphore: Semaphore,
12577    pub fence: Fence,
12578    pub device_mask: u32,
12579}
12580
12581#[repr(C)]
12582#[derive(Clone, Copy, Debug)]
12583#[doc = "**Chapter**: Window System Integration (WSI)"]
12584#[doc = "<br>"]
12585#[doc = "**Description**: Structure describing parameters of a queue presentation"]
12586#[doc = "<br>"]
12587#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
12588#[doc = "<br>"]
12589#[doc = "**Reference**: [`VkPresentInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPresentInfoKHR.html)"]
12590#[doc = "<br>"]
12591#[doc = "**Initialization template**:"]
12592#[doc = r#"```no_run
12593# use vulk::vk as vk;
12594# use std::ptr::{null, null_mut};
12595let present_info_khr = vk::PresentInfoKHR {
12596    s_type: vk::StructureType::PresentInfoKHR,
12597    p_next: null(),
12598    wait_semaphore_count: todo!("u32"),
12599    p_wait_semaphores: todo!("*const vk::Semaphore"),
12600    swapchain_count: todo!("u32"),
12601    p_swapchains: todo!("*const vk::SwapchainKHR"),
12602    p_image_indices: todo!("*const u32"),
12603    p_results: todo!("*mut vk::Result"),
12604};
12605```"#]
12606pub struct PresentInfoKHR {
12607    pub s_type: StructureType,
12608    pub p_next: *const c_void,
12609    pub wait_semaphore_count: u32,
12610    pub p_wait_semaphores: *const Semaphore,
12611    pub swapchain_count: u32,
12612    pub p_swapchains: *const SwapchainKHR,
12613    pub p_image_indices: *const u32,
12614    pub p_results: *mut Result,
12615}
12616
12617#[repr(C)]
12618#[derive(Clone, Copy, Debug)]
12619#[doc = "**Chapter**: Acceleration Structures"]
12620#[doc = "<br>"]
12621#[doc = "**Description**: Structure specifying the geometry data used to build an acceleration structure"]
12622#[doc = "<br>"]
12623#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12624#[doc = "<br>"]
12625#[doc = "**Reference**: [`VkAccelerationStructureBuildGeometryInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html)"]
12626#[doc = "<br>"]
12627#[doc = "**Initialization template**:"]
12628#[doc = r#"```no_run
12629# use vulk::vk as vk;
12630# use std::ptr::{null, null_mut};
12631let acceleration_structure_build_geometry_info_khr = vk::AccelerationStructureBuildGeometryInfoKHR {
12632    s_type: vk::StructureType::AccelerationStructureBuildGeometryInfoKHR,
12633    p_next: null(),
12634    ty: todo!("vk::AccelerationStructureTypeKHR"),
12635    flags: todo!("vk::BuildAccelerationStructureFlagBitsKHR"),
12636    mode: todo!("vk::BuildAccelerationStructureModeKHR"),
12637    src_acceleration_structure: todo!("vk::AccelerationStructureKHR"),
12638    dst_acceleration_structure: todo!("vk::AccelerationStructureKHR"),
12639    geometry_count: todo!("u32"),
12640    p_geometries: todo!("*const vk::AccelerationStructureGeometryKHR"),
12641    pp_geometries: todo!("*const *const vk::AccelerationStructureGeometryKHR"),
12642    scratch_data: todo!("vk::DeviceOrHostAddressKHR"),
12643};
12644```"#]
12645pub struct AccelerationStructureBuildGeometryInfoKHR {
12646    pub s_type: StructureType,
12647    pub p_next: *const c_void,
12648    pub ty: AccelerationStructureTypeKHR,
12649    pub flags: BuildAccelerationStructureFlagsKHR,
12650    pub mode: BuildAccelerationStructureModeKHR,
12651    pub src_acceleration_structure: AccelerationStructureKHR,
12652    pub dst_acceleration_structure: AccelerationStructureKHR,
12653    pub geometry_count: u32,
12654    pub p_geometries: *const AccelerationStructureGeometryKHR,
12655    pub pp_geometries: *const *const AccelerationStructureGeometryKHR,
12656    pub scratch_data: DeviceOrHostAddressKHR,
12657}
12658
12659#[repr(C)]
12660#[derive(Clone, Copy, Debug)]
12661#[doc = "**Chapter**: Acceleration Structures"]
12662#[doc = "<br>"]
12663#[doc = "**Description**: Structure specifying geometries to be built into an acceleration structure"]
12664#[doc = "<br>"]
12665#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12666#[doc = "<br>"]
12667#[doc = "**Reference**: [`VkAccelerationStructureGeometryKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureGeometryKHR.html)"]
12668#[doc = "<br>"]
12669#[doc = "**Initialization template**:"]
12670#[doc = r#"```no_run
12671# use vulk::vk as vk;
12672# use std::ptr::{null, null_mut};
12673let acceleration_structure_geometry_khr = vk::AccelerationStructureGeometryKHR {
12674    s_type: vk::StructureType::AccelerationStructureGeometryKHR,
12675    p_next: null(),
12676    geometry_type: todo!("vk::GeometryTypeKHR"),
12677    geometry: todo!("vk::AccelerationStructureGeometryDataKHR"),
12678    flags: todo!("vk::GeometryFlagBitsKHR"),
12679};
12680```"#]
12681pub struct AccelerationStructureGeometryKHR {
12682    pub s_type: StructureType,
12683    pub p_next: *const c_void,
12684    pub geometry_type: GeometryTypeKHR,
12685    pub geometry: AccelerationStructureGeometryDataKHR,
12686    pub flags: GeometryFlagsKHR,
12687}
12688
12689#[repr(C)]
12690#[derive(Clone, Copy, Debug)]
12691#[doc = "**Chapter**: Acceleration Structures"]
12692#[doc = "<br>"]
12693#[doc = "**Description**: Structure specifying a triangle geometry in a bottom-level acceleration structure"]
12694#[doc = "<br>"]
12695#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12696#[doc = "<br>"]
12697#[doc = "**Reference**: [`VkAccelerationStructureGeometryTrianglesDataKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html)"]
12698#[doc = "<br>"]
12699#[doc = "**Initialization template**:"]
12700#[doc = r#"```no_run
12701# use vulk::vk as vk;
12702# use std::ptr::{null, null_mut};
12703let acceleration_structure_geometry_triangles_data_khr = vk::AccelerationStructureGeometryTrianglesDataKHR {
12704    s_type: vk::StructureType::AccelerationStructureGeometryTrianglesDataKHR,
12705    p_next: null(),
12706    vertex_format: todo!("vk::Format"),
12707    vertex_data: todo!("vk::DeviceOrHostAddressConstKHR"),
12708    vertex_stride: todo!("vk::DeviceSize"),
12709    max_vertex: todo!("u32"),
12710    index_type: todo!("vk::IndexType"),
12711    index_data: todo!("vk::DeviceOrHostAddressConstKHR"),
12712    transform_data: todo!("vk::DeviceOrHostAddressConstKHR"),
12713};
12714```"#]
12715pub struct AccelerationStructureGeometryTrianglesDataKHR {
12716    pub s_type: StructureType,
12717    pub p_next: *const c_void,
12718    pub vertex_format: Format,
12719    pub vertex_data: DeviceOrHostAddressConstKHR,
12720    pub vertex_stride: DeviceSize,
12721    pub max_vertex: u32,
12722    pub index_type: IndexType,
12723    pub index_data: DeviceOrHostAddressConstKHR,
12724    pub transform_data: DeviceOrHostAddressConstKHR,
12725}
12726
12727#[repr(C)]
12728#[derive(Clone, Copy, Debug)]
12729#[doc = "**Chapter**: Acceleration Structures"]
12730#[doc = "<br>"]
12731#[doc = "**Description**: Structure specifying a 3x4 affine transformation matrix"]
12732#[doc = "<br>"]
12733#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12734#[doc = "<br>"]
12735#[doc = "**Reference**: [`VkTransformMatrixKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkTransformMatrixKHR.html)"]
12736#[doc = "<br>"]
12737#[doc = "**Initialization template**:"]
12738#[doc = r#"```no_run
12739# use vulk::vk as vk;
12740# use std::ptr::{null, null_mut};
12741let transform_matrix_khr = vk::TransformMatrixKHR {
12742    matrix: todo!("[[f32; 4]; 3]"),
12743};
12744```"#]
12745pub struct TransformMatrixKHR {
12746    pub matrix: [[f32; 4]; 3],
12747}
12748
12749#[repr(C)]
12750#[derive(Clone, Copy, Debug)]
12751#[doc = "**Chapter**: Acceleration Structures"]
12752#[doc = "<br>"]
12753#[doc = "**Description**: Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structure"]
12754#[doc = "<br>"]
12755#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12756#[doc = "<br>"]
12757#[doc = "**Reference**: [`VkAccelerationStructureGeometryAabbsDataKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html)"]
12758#[doc = "<br>"]
12759#[doc = "**Initialization template**:"]
12760#[doc = r#"```no_run
12761# use vulk::vk as vk;
12762# use std::ptr::{null, null_mut};
12763let acceleration_structure_geometry_aabbs_data_khr = vk::AccelerationStructureGeometryAabbsDataKHR {
12764    s_type: vk::StructureType::AccelerationStructureGeometryAabbsDataKHR,
12765    p_next: null(),
12766    data: todo!("vk::DeviceOrHostAddressConstKHR"),
12767    stride: todo!("vk::DeviceSize"),
12768};
12769```"#]
12770pub struct AccelerationStructureGeometryAabbsDataKHR {
12771    pub s_type: StructureType,
12772    pub p_next: *const c_void,
12773    pub data: DeviceOrHostAddressConstKHR,
12774    pub stride: DeviceSize,
12775}
12776
12777#[repr(C)]
12778#[derive(Clone, Copy, Debug)]
12779#[doc = "**Chapter**: Acceleration Structures"]
12780#[doc = "<br>"]
12781#[doc = "**Description**: Structure specifying a geometry consisting of instances of other acceleration structures"]
12782#[doc = "<br>"]
12783#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12784#[doc = "<br>"]
12785#[doc = "**Reference**: [`VkAccelerationStructureGeometryInstancesDataKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html)"]
12786#[doc = "<br>"]
12787#[doc = "**Initialization template**:"]
12788#[doc = r#"```no_run
12789# use vulk::vk as vk;
12790# use std::ptr::{null, null_mut};
12791let acceleration_structure_geometry_instances_data_khr = vk::AccelerationStructureGeometryInstancesDataKHR {
12792    s_type: vk::StructureType::AccelerationStructureGeometryInstancesDataKHR,
12793    p_next: null(),
12794    array_of_pointers: todo!("vk::Bool32"),
12795    data: todo!("vk::DeviceOrHostAddressConstKHR"),
12796};
12797```"#]
12798pub struct AccelerationStructureGeometryInstancesDataKHR {
12799    pub s_type: StructureType,
12800    pub p_next: *const c_void,
12801    pub array_of_pointers: Bool32,
12802    pub data: DeviceOrHostAddressConstKHR,
12803}
12804
12805#[repr(C)]
12806#[derive(Clone, Copy, Debug)]
12807#[doc = "**Chapter**: Acceleration Structures"]
12808#[doc = "<br>"]
12809#[doc = "**Description**: Structure specifying a single acceleration structure instance for building into an acceleration structure geometry"]
12810#[doc = "<br>"]
12811#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12812#[doc = "<br>"]
12813#[doc = "**Reference**: [`VkAccelerationStructureInstanceKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureInstanceKHR.html)"]
12814#[doc = "<br>"]
12815#[doc = "**Note**: The original type contained **4** bitfields which were collapsed by the generator."]
12816#[doc = "<br>"]
12817#[doc = "**Initialization template**:"]
12818#[doc = r#"```no_run
12819# use vulk::vk as vk;
12820# use std::ptr::{null, null_mut};
12821let acceleration_structure_instance_khr = vk::AccelerationStructureInstanceKHR {
12822    transform: todo!("vk::TransformMatrixKHR"),
12823    instance_custom_index24_and_mask8: todo!("u32"),
12824    instance_shader_binding_table_record_offset24_and_flags8: todo!("u32"),
12825    acceleration_structure_reference: todo!("u64"),
12826};
12827```"#]
12828pub struct AccelerationStructureInstanceKHR {
12829    pub transform: TransformMatrixKHR,
12830    pub instance_custom_index24_and_mask8: u32,
12831    pub instance_shader_binding_table_record_offset24_and_flags8: u32,
12832    pub acceleration_structure_reference: u64,
12833}
12834
12835#[repr(C)]
12836#[derive(Clone, Copy, Debug)]
12837#[doc = "**Chapter**: Acceleration Structures"]
12838#[doc = "<br>"]
12839#[doc = "**Description**: Structure specifying build offsets and counts for acceleration structure builds"]
12840#[doc = "<br>"]
12841#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
12842#[doc = "<br>"]
12843#[doc = "**Reference**: [`VkAccelerationStructureBuildRangeInfoKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureBuildRangeInfoKHR.html)"]
12844#[doc = "<br>"]
12845#[doc = "**Initialization template**:"]
12846#[doc = r#"```no_run
12847# use vulk::vk as vk;
12848# use std::ptr::{null, null_mut};
12849let acceleration_structure_build_range_info_khr = vk::AccelerationStructureBuildRangeInfoKHR {
12850    primitive_count: todo!("u32"),
12851    primitive_offset: todo!("u32"),
12852    first_vertex: todo!("u32"),
12853    transform_offset: todo!("u32"),
12854};
12855```"#]
12856pub struct AccelerationStructureBuildRangeInfoKHR {
12857    pub primitive_count: u32,
12858    pub primitive_offset: u32,
12859    pub first_vertex: u32,
12860    pub transform_offset: u32,
12861}
12862
12863#[repr(C)]
12864#[derive(Clone, Copy, Debug)]
12865#[doc = "**Chapter**: Ray Tracing"]
12866#[doc = "<br>"]
12867#[doc = "**Description**: Structure specifying a region of device addresses with a stride"]
12868#[doc = "<br>"]
12869#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
12870#[doc = "<br>"]
12871#[doc = "**Reference**: [`VkStridedDeviceAddressRegionKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkStridedDeviceAddressRegionKHR.html)"]
12872#[doc = "<br>"]
12873#[doc = "**Initialization template**:"]
12874#[doc = r#"```no_run
12875# use vulk::vk as vk;
12876# use std::ptr::{null, null_mut};
12877let strided_device_address_region_khr = vk::StridedDeviceAddressRegionKHR {
12878    device_address: todo!("vk::DeviceAddress"),
12879    stride: todo!("vk::DeviceSize"),
12880    size: todo!("vk::DeviceSize"),
12881};
12882```"#]
12883pub struct StridedDeviceAddressRegionKHR {
12884    pub device_address: DeviceAddress,
12885    pub stride: DeviceSize,
12886    pub size: DeviceSize,
12887}
12888
12889#[repr(C)]
12890#[derive(Clone, Copy, Debug)]
12891#[doc = "**Chapter**: Ray Tracing"]
12892#[doc = "<br>"]
12893#[doc = "**Description**: Structure specifying the parameters of an indirect trace ray command with indirect shader binding tables"]
12894#[doc = "<br>"]
12895#[doc = "**Provided by**: [`VK_KHR_ray_tracing_maintenance1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_maintenance1.html)"]
12896#[doc = "<br>"]
12897#[doc = "**Reference**: [`VkTraceRaysIndirectCommand2KHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkTraceRaysIndirectCommand2KHR.html)"]
12898#[doc = "<br>"]
12899#[doc = "**Initialization template**:"]
12900#[doc = r#"```no_run
12901# use vulk::vk as vk;
12902# use std::ptr::{null, null_mut};
12903let trace_rays_indirect_command2_khr = vk::TraceRaysIndirectCommand2KHR {
12904    raygen_shader_record_address: todo!("vk::DeviceAddress"),
12905    raygen_shader_record_size: todo!("vk::DeviceSize"),
12906    miss_shader_binding_table_address: todo!("vk::DeviceAddress"),
12907    miss_shader_binding_table_size: todo!("vk::DeviceSize"),
12908    miss_shader_binding_table_stride: todo!("vk::DeviceSize"),
12909    hit_shader_binding_table_address: todo!("vk::DeviceAddress"),
12910    hit_shader_binding_table_size: todo!("vk::DeviceSize"),
12911    hit_shader_binding_table_stride: todo!("vk::DeviceSize"),
12912    callable_shader_binding_table_address: todo!("vk::DeviceAddress"),
12913    callable_shader_binding_table_size: todo!("vk::DeviceSize"),
12914    callable_shader_binding_table_stride: todo!("vk::DeviceSize"),
12915    width: todo!("u32"),
12916    height: todo!("u32"),
12917    depth: todo!("u32"),
12918};
12919```"#]
12920pub struct TraceRaysIndirectCommand2KHR {
12921    pub raygen_shader_record_address: DeviceAddress,
12922    pub raygen_shader_record_size: DeviceSize,
12923    pub miss_shader_binding_table_address: DeviceAddress,
12924    pub miss_shader_binding_table_size: DeviceSize,
12925    pub miss_shader_binding_table_stride: DeviceSize,
12926    pub hit_shader_binding_table_address: DeviceAddress,
12927    pub hit_shader_binding_table_size: DeviceSize,
12928    pub hit_shader_binding_table_stride: DeviceSize,
12929    pub callable_shader_binding_table_address: DeviceAddress,
12930    pub callable_shader_binding_table_size: DeviceSize,
12931    pub callable_shader_binding_table_stride: DeviceSize,
12932    pub width: u32,
12933    pub height: u32,
12934    pub depth: u32,
12935}
12936
12937#[repr(C)]
12938#[derive(Clone, Copy, Debug)]
12939#[doc = "**Chapter**: Features"]
12940#[doc = "<br>"]
12941#[doc = "**Description**: Structure describing the fine-grained features that can be supported by an implementation"]
12942#[doc = "<br>"]
12943#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
12944#[doc = "<br>"]
12945#[doc = "**Reference**: [`VkPhysicalDeviceFeatures2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures2.html)"]
12946#[doc = "<br>"]
12947#[doc = "**Extendable by**: [`VkPhysicalDeviceVulkan11Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html)"]
12948#[doc = "<br>"]
12949#[doc = "**Extendable by**: [`VkPhysicalDeviceVulkan12Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html)"]
12950#[doc = "<br>"]
12951#[doc = "**Extendable by**: [`VkPhysicalDeviceVulkan13Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html)"]
12952#[doc = "<br>"]
12953#[doc = "**Extendable by**: [`VkPhysicalDeviceMeshShaderFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html)"]
12954#[doc = "<br>"]
12955#[doc = "**Extendable by**: [`VkPhysicalDeviceAccelerationStructureFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html)"]
12956#[doc = "<br>"]
12957#[doc = "**Extendable by**: [`VkPhysicalDeviceRayTracingPipelineFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html)"]
12958#[doc = "<br>"]
12959#[doc = "**Extendable by**: [`VkPhysicalDeviceRayQueryFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html)"]
12960#[doc = "<br>"]
12961#[doc = "**Extendable by**: [`VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html)"]
12962#[doc = "<br>"]
12963#[doc = "**Extendable by**: [`VkPhysicalDeviceDescriptorBufferFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html)"]
12964#[doc = "<br>"]
12965#[doc = "**Extendable by**: [`VkPhysicalDeviceShaderObjectFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html)"]
12966#[doc = "<br>"]
12967#[doc = "**Initialization template**:"]
12968#[doc = r#"```no_run
12969# use vulk::vk as vk;
12970# use std::ptr::{null, null_mut};
12971let physical_device_features2 = vk::PhysicalDeviceFeatures2 {
12972    s_type: vk::StructureType::PhysicalDeviceFeatures2,
12973    p_next: null_mut(),
12974    features: todo!("vk::PhysicalDeviceFeatures"),
12975};
12976```"#]
12977pub struct PhysicalDeviceFeatures2 {
12978    pub s_type: StructureType,
12979    pub p_next: *mut c_void,
12980    pub features: PhysicalDeviceFeatures,
12981}
12982
12983#[repr(C)]
12984#[derive(Clone, Copy, Debug)]
12985#[doc = "**Chapter**: Features"]
12986#[doc = "<br>"]
12987#[doc = "**Description**: Structure describing the fine-grained features that can be supported by an implementation"]
12988#[doc = "<br>"]
12989#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
12990#[doc = "<br>"]
12991#[doc = "**Reference**: [`VkPhysicalDeviceFeatures`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html)"]
12992#[doc = "<br>"]
12993#[doc = "**Initialization template**:"]
12994#[doc = r#"```no_run
12995# use vulk::vk as vk;
12996# use std::ptr::{null, null_mut};
12997let physical_device_features = vk::PhysicalDeviceFeatures {
12998    robust_buffer_access: todo!("vk::Bool32"),
12999    full_draw_index_uint32: todo!("vk::Bool32"),
13000    image_cube_array: todo!("vk::Bool32"),
13001    independent_blend: todo!("vk::Bool32"),
13002    geometry_shader: todo!("vk::Bool32"),
13003    tessellation_shader: todo!("vk::Bool32"),
13004    sample_rate_shading: todo!("vk::Bool32"),
13005    dual_src_blend: todo!("vk::Bool32"),
13006    logic_op: todo!("vk::Bool32"),
13007    multi_draw_indirect: todo!("vk::Bool32"),
13008    draw_indirect_first_instance: todo!("vk::Bool32"),
13009    depth_clamp: todo!("vk::Bool32"),
13010    depth_bias_clamp: todo!("vk::Bool32"),
13011    fill_mode_non_solid: todo!("vk::Bool32"),
13012    depth_bounds: todo!("vk::Bool32"),
13013    wide_lines: todo!("vk::Bool32"),
13014    large_points: todo!("vk::Bool32"),
13015    alpha_to_one: todo!("vk::Bool32"),
13016    multi_viewport: todo!("vk::Bool32"),
13017    sampler_anisotropy: todo!("vk::Bool32"),
13018    texture_compression_etc2: todo!("vk::Bool32"),
13019    texture_compression_astc_ldr: todo!("vk::Bool32"),
13020    texture_compression_bc: todo!("vk::Bool32"),
13021    occlusion_query_precise: todo!("vk::Bool32"),
13022    pipeline_statistics_query: todo!("vk::Bool32"),
13023    vertex_pipeline_stores_and_atomics: todo!("vk::Bool32"),
13024    fragment_stores_and_atomics: todo!("vk::Bool32"),
13025    shader_tessellation_and_geometry_point_size: todo!("vk::Bool32"),
13026    shader_image_gather_extended: todo!("vk::Bool32"),
13027    shader_storage_image_extended_formats: todo!("vk::Bool32"),
13028    shader_storage_image_multisample: todo!("vk::Bool32"),
13029    shader_storage_image_read_without_format: todo!("vk::Bool32"),
13030    shader_storage_image_write_without_format: todo!("vk::Bool32"),
13031    shader_uniform_buffer_array_dynamic_indexing: todo!("vk::Bool32"),
13032    shader_sampled_image_array_dynamic_indexing: todo!("vk::Bool32"),
13033    shader_storage_buffer_array_dynamic_indexing: todo!("vk::Bool32"),
13034    shader_storage_image_array_dynamic_indexing: todo!("vk::Bool32"),
13035    shader_clip_distance: todo!("vk::Bool32"),
13036    shader_cull_distance: todo!("vk::Bool32"),
13037    shader_float64: todo!("vk::Bool32"),
13038    shader_int64: todo!("vk::Bool32"),
13039    shader_int16: todo!("vk::Bool32"),
13040    shader_resource_residency: todo!("vk::Bool32"),
13041    shader_resource_min_lod: todo!("vk::Bool32"),
13042    sparse_binding: todo!("vk::Bool32"),
13043    sparse_residency_buffer: todo!("vk::Bool32"),
13044    sparse_residency_image_2d: todo!("vk::Bool32"),
13045    sparse_residency_image_3d: todo!("vk::Bool32"),
13046    sparse_residency2_samples: todo!("vk::Bool32"),
13047    sparse_residency4_samples: todo!("vk::Bool32"),
13048    sparse_residency8_samples: todo!("vk::Bool32"),
13049    sparse_residency16_samples: todo!("vk::Bool32"),
13050    sparse_residency_aliased: todo!("vk::Bool32"),
13051    variable_multisample_rate: todo!("vk::Bool32"),
13052    inherited_queries: todo!("vk::Bool32"),
13053};
13054```"#]
13055pub struct PhysicalDeviceFeatures {
13056    pub robust_buffer_access: Bool32,
13057    pub full_draw_index_uint32: Bool32,
13058    pub image_cube_array: Bool32,
13059    pub independent_blend: Bool32,
13060    pub geometry_shader: Bool32,
13061    pub tessellation_shader: Bool32,
13062    pub sample_rate_shading: Bool32,
13063    pub dual_src_blend: Bool32,
13064    pub logic_op: Bool32,
13065    pub multi_draw_indirect: Bool32,
13066    pub draw_indirect_first_instance: Bool32,
13067    pub depth_clamp: Bool32,
13068    pub depth_bias_clamp: Bool32,
13069    pub fill_mode_non_solid: Bool32,
13070    pub depth_bounds: Bool32,
13071    pub wide_lines: Bool32,
13072    pub large_points: Bool32,
13073    pub alpha_to_one: Bool32,
13074    pub multi_viewport: Bool32,
13075    pub sampler_anisotropy: Bool32,
13076    pub texture_compression_etc2: Bool32,
13077    pub texture_compression_astc_ldr: Bool32,
13078    pub texture_compression_bc: Bool32,
13079    pub occlusion_query_precise: Bool32,
13080    pub pipeline_statistics_query: Bool32,
13081    pub vertex_pipeline_stores_and_atomics: Bool32,
13082    pub fragment_stores_and_atomics: Bool32,
13083    pub shader_tessellation_and_geometry_point_size: Bool32,
13084    pub shader_image_gather_extended: Bool32,
13085    pub shader_storage_image_extended_formats: Bool32,
13086    pub shader_storage_image_multisample: Bool32,
13087    pub shader_storage_image_read_without_format: Bool32,
13088    pub shader_storage_image_write_without_format: Bool32,
13089    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
13090    pub shader_sampled_image_array_dynamic_indexing: Bool32,
13091    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
13092    pub shader_storage_image_array_dynamic_indexing: Bool32,
13093    pub shader_clip_distance: Bool32,
13094    pub shader_cull_distance: Bool32,
13095    pub shader_float64: Bool32,
13096    pub shader_int64: Bool32,
13097    pub shader_int16: Bool32,
13098    pub shader_resource_residency: Bool32,
13099    pub shader_resource_min_lod: Bool32,
13100    pub sparse_binding: Bool32,
13101    pub sparse_residency_buffer: Bool32,
13102    pub sparse_residency_image_2d: Bool32,
13103    pub sparse_residency_image_3d: Bool32,
13104    pub sparse_residency2_samples: Bool32,
13105    pub sparse_residency4_samples: Bool32,
13106    pub sparse_residency8_samples: Bool32,
13107    pub sparse_residency16_samples: Bool32,
13108    pub sparse_residency_aliased: Bool32,
13109    pub variable_multisample_rate: Bool32,
13110    pub inherited_queries: Bool32,
13111}
13112
13113#[repr(C)]
13114#[derive(Clone, Copy, Debug)]
13115#[doc = "**Chapter**: Features"]
13116#[doc = "<br>"]
13117#[doc = "**Description**: Structure describing the Vulkan 1.1 features that can be supported by an implementation"]
13118#[doc = "<br>"]
13119#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
13120#[doc = "<br>"]
13121#[doc = "**Reference**: [`VkPhysicalDeviceVulkan11Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html)"]
13122#[doc = "<br>"]
13123#[doc = "**Initialization template**:"]
13124#[doc = r#"```no_run
13125# use vulk::vk as vk;
13126# use std::ptr::{null, null_mut};
13127let physical_device_vulkan11_features = vk::PhysicalDeviceVulkan11Features {
13128    s_type: vk::StructureType::PhysicalDeviceVulkan11Features,
13129    p_next: null_mut(),
13130    storage_buffer16_bit_access: todo!("vk::Bool32"),
13131    uniform_and_storage_buffer16_bit_access: todo!("vk::Bool32"),
13132    storage_push_constant16: todo!("vk::Bool32"),
13133    storage_input_output16: todo!("vk::Bool32"),
13134    multiview: todo!("vk::Bool32"),
13135    multiview_geometry_shader: todo!("vk::Bool32"),
13136    multiview_tessellation_shader: todo!("vk::Bool32"),
13137    variable_pointers_storage_buffer: todo!("vk::Bool32"),
13138    variable_pointers: todo!("vk::Bool32"),
13139    protected_memory: todo!("vk::Bool32"),
13140    sampler_ycbcr_conversion: todo!("vk::Bool32"),
13141    shader_draw_parameters: todo!("vk::Bool32"),
13142};
13143```"#]
13144pub struct PhysicalDeviceVulkan11Features {
13145    pub s_type: StructureType,
13146    pub p_next: *mut c_void,
13147    pub storage_buffer16_bit_access: Bool32,
13148    pub uniform_and_storage_buffer16_bit_access: Bool32,
13149    pub storage_push_constant16: Bool32,
13150    pub storage_input_output16: Bool32,
13151    pub multiview: Bool32,
13152    pub multiview_geometry_shader: Bool32,
13153    pub multiview_tessellation_shader: Bool32,
13154    pub variable_pointers_storage_buffer: Bool32,
13155    pub variable_pointers: Bool32,
13156    pub protected_memory: Bool32,
13157    pub sampler_ycbcr_conversion: Bool32,
13158    pub shader_draw_parameters: Bool32,
13159}
13160
13161#[repr(C)]
13162#[derive(Clone, Copy, Debug)]
13163#[doc = "**Chapter**: Features"]
13164#[doc = "<br>"]
13165#[doc = "**Description**: Structure describing the Vulkan 1.2 features that can be supported by an implementation"]
13166#[doc = "<br>"]
13167#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
13168#[doc = "<br>"]
13169#[doc = "**Reference**: [`VkPhysicalDeviceVulkan12Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html)"]
13170#[doc = "<br>"]
13171#[doc = "**Initialization template**:"]
13172#[doc = r#"```no_run
13173# use vulk::vk as vk;
13174# use std::ptr::{null, null_mut};
13175let physical_device_vulkan12_features = vk::PhysicalDeviceVulkan12Features {
13176    s_type: vk::StructureType::PhysicalDeviceVulkan12Features,
13177    p_next: null_mut(),
13178    sampler_mirror_clamp_to_edge: todo!("vk::Bool32"),
13179    draw_indirect_count: todo!("vk::Bool32"),
13180    storage_buffer8_bit_access: todo!("vk::Bool32"),
13181    uniform_and_storage_buffer8_bit_access: todo!("vk::Bool32"),
13182    storage_push_constant8: todo!("vk::Bool32"),
13183    shader_buffer_int64_atomics: todo!("vk::Bool32"),
13184    shader_shared_int64_atomics: todo!("vk::Bool32"),
13185    shader_float16: todo!("vk::Bool32"),
13186    shader_int8: todo!("vk::Bool32"),
13187    descriptor_indexing: todo!("vk::Bool32"),
13188    shader_input_attachment_array_dynamic_indexing: todo!("vk::Bool32"),
13189    shader_uniform_texel_buffer_array_dynamic_indexing: todo!("vk::Bool32"),
13190    shader_storage_texel_buffer_array_dynamic_indexing: todo!("vk::Bool32"),
13191    shader_uniform_buffer_array_non_uniform_indexing: todo!("vk::Bool32"),
13192    shader_sampled_image_array_non_uniform_indexing: todo!("vk::Bool32"),
13193    shader_storage_buffer_array_non_uniform_indexing: todo!("vk::Bool32"),
13194    shader_storage_image_array_non_uniform_indexing: todo!("vk::Bool32"),
13195    shader_input_attachment_array_non_uniform_indexing: todo!("vk::Bool32"),
13196    shader_uniform_texel_buffer_array_non_uniform_indexing: todo!("vk::Bool32"),
13197    shader_storage_texel_buffer_array_non_uniform_indexing: todo!("vk::Bool32"),
13198    descriptor_binding_uniform_buffer_update_after_bind: todo!("vk::Bool32"),
13199    descriptor_binding_sampled_image_update_after_bind: todo!("vk::Bool32"),
13200    descriptor_binding_storage_image_update_after_bind: todo!("vk::Bool32"),
13201    descriptor_binding_storage_buffer_update_after_bind: todo!("vk::Bool32"),
13202    descriptor_binding_uniform_texel_buffer_update_after_bind: todo!("vk::Bool32"),
13203    descriptor_binding_storage_texel_buffer_update_after_bind: todo!("vk::Bool32"),
13204    descriptor_binding_update_unused_while_pending: todo!("vk::Bool32"),
13205    descriptor_binding_partially_bound: todo!("vk::Bool32"),
13206    descriptor_binding_variable_descriptor_count: todo!("vk::Bool32"),
13207    runtime_descriptor_array: todo!("vk::Bool32"),
13208    sampler_filter_minmax: todo!("vk::Bool32"),
13209    scalar_block_layout: todo!("vk::Bool32"),
13210    imageless_framebuffer: todo!("vk::Bool32"),
13211    uniform_buffer_standard_layout: todo!("vk::Bool32"),
13212    shader_subgroup_extended_types: todo!("vk::Bool32"),
13213    separate_depth_stencil_layouts: todo!("vk::Bool32"),
13214    host_query_reset: todo!("vk::Bool32"),
13215    timeline_semaphore: todo!("vk::Bool32"),
13216    buffer_device_address: todo!("vk::Bool32"),
13217    buffer_device_address_capture_replay: todo!("vk::Bool32"),
13218    buffer_device_address_multi_device: todo!("vk::Bool32"),
13219    vulkan_memory_model: todo!("vk::Bool32"),
13220    vulkan_memory_model_device_scope: todo!("vk::Bool32"),
13221    vulkan_memory_model_availability_visibility_chains: todo!("vk::Bool32"),
13222    shader_output_viewport_index: todo!("vk::Bool32"),
13223    shader_output_layer: todo!("vk::Bool32"),
13224    subgroup_broadcast_dynamic_id: todo!("vk::Bool32"),
13225};
13226```"#]
13227pub struct PhysicalDeviceVulkan12Features {
13228    pub s_type: StructureType,
13229    pub p_next: *mut c_void,
13230    pub sampler_mirror_clamp_to_edge: Bool32,
13231    pub draw_indirect_count: Bool32,
13232    pub storage_buffer8_bit_access: Bool32,
13233    pub uniform_and_storage_buffer8_bit_access: Bool32,
13234    pub storage_push_constant8: Bool32,
13235    pub shader_buffer_int64_atomics: Bool32,
13236    pub shader_shared_int64_atomics: Bool32,
13237    pub shader_float16: Bool32,
13238    pub shader_int8: Bool32,
13239    pub descriptor_indexing: Bool32,
13240    pub shader_input_attachment_array_dynamic_indexing: Bool32,
13241    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
13242    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
13243    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
13244    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
13245    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
13246    pub shader_storage_image_array_non_uniform_indexing: Bool32,
13247    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
13248    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
13249    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
13250    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
13251    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
13252    pub descriptor_binding_storage_image_update_after_bind: Bool32,
13253    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
13254    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
13255    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
13256    pub descriptor_binding_update_unused_while_pending: Bool32,
13257    pub descriptor_binding_partially_bound: Bool32,
13258    pub descriptor_binding_variable_descriptor_count: Bool32,
13259    pub runtime_descriptor_array: Bool32,
13260    pub sampler_filter_minmax: Bool32,
13261    pub scalar_block_layout: Bool32,
13262    pub imageless_framebuffer: Bool32,
13263    pub uniform_buffer_standard_layout: Bool32,
13264    pub shader_subgroup_extended_types: Bool32,
13265    pub separate_depth_stencil_layouts: Bool32,
13266    pub host_query_reset: Bool32,
13267    pub timeline_semaphore: Bool32,
13268    pub buffer_device_address: Bool32,
13269    pub buffer_device_address_capture_replay: Bool32,
13270    pub buffer_device_address_multi_device: Bool32,
13271    pub vulkan_memory_model: Bool32,
13272    pub vulkan_memory_model_device_scope: Bool32,
13273    pub vulkan_memory_model_availability_visibility_chains: Bool32,
13274    pub shader_output_viewport_index: Bool32,
13275    pub shader_output_layer: Bool32,
13276    pub subgroup_broadcast_dynamic_id: Bool32,
13277}
13278
13279#[repr(C)]
13280#[derive(Clone, Copy, Debug)]
13281#[doc = "**Chapter**: Features"]
13282#[doc = "<br>"]
13283#[doc = "**Description**: Structure describing the Vulkan 1.3 features that can be supported by an implementation"]
13284#[doc = "<br>"]
13285#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
13286#[doc = "<br>"]
13287#[doc = "**Reference**: [`VkPhysicalDeviceVulkan13Features`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html)"]
13288#[doc = "<br>"]
13289#[doc = "**Initialization template**:"]
13290#[doc = r#"```no_run
13291# use vulk::vk as vk;
13292# use std::ptr::{null, null_mut};
13293let physical_device_vulkan13_features = vk::PhysicalDeviceVulkan13Features {
13294    s_type: vk::StructureType::PhysicalDeviceVulkan13Features,
13295    p_next: null_mut(),
13296    robust_image_access: todo!("vk::Bool32"),
13297    inline_uniform_block: todo!("vk::Bool32"),
13298    descriptor_binding_inline_uniform_block_update_after_bind: todo!("vk::Bool32"),
13299    pipeline_creation_cache_control: todo!("vk::Bool32"),
13300    private_data: todo!("vk::Bool32"),
13301    shader_demote_to_helper_invocation: todo!("vk::Bool32"),
13302    shader_terminate_invocation: todo!("vk::Bool32"),
13303    subgroup_size_control: todo!("vk::Bool32"),
13304    compute_full_subgroups: todo!("vk::Bool32"),
13305    synchronization2: todo!("vk::Bool32"),
13306    texture_compression_astc_hdr: todo!("vk::Bool32"),
13307    shader_zero_initialize_workgroup_memory: todo!("vk::Bool32"),
13308    dynamic_rendering: todo!("vk::Bool32"),
13309    shader_integer_dot_product: todo!("vk::Bool32"),
13310    maintenance4: todo!("vk::Bool32"),
13311};
13312```"#]
13313pub struct PhysicalDeviceVulkan13Features {
13314    pub s_type: StructureType,
13315    pub p_next: *mut c_void,
13316    pub robust_image_access: Bool32,
13317    pub inline_uniform_block: Bool32,
13318    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
13319    pub pipeline_creation_cache_control: Bool32,
13320    pub private_data: Bool32,
13321    pub shader_demote_to_helper_invocation: Bool32,
13322    pub shader_terminate_invocation: Bool32,
13323    pub subgroup_size_control: Bool32,
13324    pub compute_full_subgroups: Bool32,
13325    pub synchronization2: Bool32,
13326    pub texture_compression_astc_hdr: Bool32,
13327    pub shader_zero_initialize_workgroup_memory: Bool32,
13328    pub dynamic_rendering: Bool32,
13329    pub shader_integer_dot_product: Bool32,
13330    pub maintenance4: Bool32,
13331}
13332
13333#[repr(C)]
13334#[derive(Clone, Copy, Debug)]
13335#[doc = "**Chapter**: Features"]
13336#[doc = "<br>"]
13337#[doc = "**Description**: Structure describing mesh shading features that can be supported by an implementation"]
13338#[doc = "<br>"]
13339#[doc = "**Provided by**: [`VK_EXT_mesh_shader`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)"]
13340#[doc = "<br>"]
13341#[doc = "**Reference**: [`VkPhysicalDeviceMeshShaderFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html)"]
13342#[doc = "<br>"]
13343#[doc = "**Initialization template**:"]
13344#[doc = r#"```no_run
13345# use vulk::vk as vk;
13346# use std::ptr::{null, null_mut};
13347let physical_device_mesh_shader_features_ext = vk::PhysicalDeviceMeshShaderFeaturesEXT {
13348    s_type: vk::StructureType::PhysicalDeviceMeshShaderFeaturesEXT,
13349    p_next: null_mut(),
13350    task_shader: todo!("vk::Bool32"),
13351    mesh_shader: todo!("vk::Bool32"),
13352    multiview_mesh_shader: todo!("vk::Bool32"),
13353    primitive_fragment_shading_rate_mesh_shader: todo!("vk::Bool32"),
13354    mesh_shader_queries: todo!("vk::Bool32"),
13355};
13356```"#]
13357pub struct PhysicalDeviceMeshShaderFeaturesEXT {
13358    pub s_type: StructureType,
13359    pub p_next: *mut c_void,
13360    pub task_shader: Bool32,
13361    pub mesh_shader: Bool32,
13362    pub multiview_mesh_shader: Bool32,
13363    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
13364    pub mesh_shader_queries: Bool32,
13365}
13366
13367#[repr(C)]
13368#[derive(Clone, Copy, Debug)]
13369#[doc = "**Chapter**: Features"]
13370#[doc = "<br>"]
13371#[doc = "**Description**: Structure describing the acceleration structure features that can be supported by an implementation"]
13372#[doc = "<br>"]
13373#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
13374#[doc = "<br>"]
13375#[doc = "**Reference**: [`VkPhysicalDeviceAccelerationStructureFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html)"]
13376#[doc = "<br>"]
13377#[doc = "**Initialization template**:"]
13378#[doc = r#"```no_run
13379# use vulk::vk as vk;
13380# use std::ptr::{null, null_mut};
13381let physical_device_acceleration_structure_features_khr = vk::PhysicalDeviceAccelerationStructureFeaturesKHR {
13382    s_type: vk::StructureType::PhysicalDeviceAccelerationStructureFeaturesKHR,
13383    p_next: null_mut(),
13384    acceleration_structure: todo!("vk::Bool32"),
13385    acceleration_structure_capture_replay: todo!("vk::Bool32"),
13386    acceleration_structure_indirect_build: todo!("vk::Bool32"),
13387    acceleration_structure_host_commands: todo!("vk::Bool32"),
13388    descriptor_binding_acceleration_structure_update_after_bind: todo!("vk::Bool32"),
13389};
13390```"#]
13391pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
13392    pub s_type: StructureType,
13393    pub p_next: *mut c_void,
13394    pub acceleration_structure: Bool32,
13395    pub acceleration_structure_capture_replay: Bool32,
13396    pub acceleration_structure_indirect_build: Bool32,
13397    pub acceleration_structure_host_commands: Bool32,
13398    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
13399}
13400
13401#[repr(C)]
13402#[derive(Clone, Copy, Debug)]
13403#[doc = "**Chapter**: Features"]
13404#[doc = "<br>"]
13405#[doc = "**Description**: Structure describing the ray tracing features that can be supported by an implementation"]
13406#[doc = "<br>"]
13407#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
13408#[doc = "<br>"]
13409#[doc = "**Reference**: [`VkPhysicalDeviceRayTracingPipelineFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html)"]
13410#[doc = "<br>"]
13411#[doc = "**Initialization template**:"]
13412#[doc = r#"```no_run
13413# use vulk::vk as vk;
13414# use std::ptr::{null, null_mut};
13415let physical_device_ray_tracing_pipeline_features_khr = vk::PhysicalDeviceRayTracingPipelineFeaturesKHR {
13416    s_type: vk::StructureType::PhysicalDeviceRayTracingPipelineFeaturesKHR,
13417    p_next: null_mut(),
13418    ray_tracing_pipeline: todo!("vk::Bool32"),
13419    ray_tracing_pipeline_shader_group_handle_capture_replay: todo!("vk::Bool32"),
13420    ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: todo!("vk::Bool32"),
13421    ray_tracing_pipeline_trace_rays_indirect: todo!("vk::Bool32"),
13422    ray_traversal_primitive_culling: todo!("vk::Bool32"),
13423};
13424```"#]
13425pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
13426    pub s_type: StructureType,
13427    pub p_next: *mut c_void,
13428    pub ray_tracing_pipeline: Bool32,
13429    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
13430    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
13431    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
13432    pub ray_traversal_primitive_culling: Bool32,
13433}
13434
13435#[repr(C)]
13436#[derive(Clone, Copy, Debug)]
13437#[doc = "**Chapter**: Features"]
13438#[doc = "<br>"]
13439#[doc = "**Description**: Structure describing the ray query features that can be supported by an implementation"]
13440#[doc = "<br>"]
13441#[doc = "**Provided by**: [`VK_KHR_ray_query`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_query.html)"]
13442#[doc = "<br>"]
13443#[doc = "**Reference**: [`VkPhysicalDeviceRayQueryFeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html)"]
13444#[doc = "<br>"]
13445#[doc = "**Initialization template**:"]
13446#[doc = r#"```no_run
13447# use vulk::vk as vk;
13448# use std::ptr::{null, null_mut};
13449let physical_device_ray_query_features_khr = vk::PhysicalDeviceRayQueryFeaturesKHR {
13450    s_type: vk::StructureType::PhysicalDeviceRayQueryFeaturesKHR,
13451    p_next: null_mut(),
13452    ray_query: todo!("vk::Bool32"),
13453};
13454```"#]
13455pub struct PhysicalDeviceRayQueryFeaturesKHR {
13456    pub s_type: StructureType,
13457    pub p_next: *mut c_void,
13458    pub ray_query: Bool32,
13459}
13460
13461#[repr(C)]
13462#[derive(Clone, Copy, Debug)]
13463#[doc = "**Chapter**: Features"]
13464#[doc = "<br>"]
13465#[doc = "**Description**: Structure describing the ray tracing maintenance features that can be supported by an implementation"]
13466#[doc = "<br>"]
13467#[doc = "**Provided by**: [`VK_KHR_ray_tracing_maintenance1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_maintenance1.html)"]
13468#[doc = "<br>"]
13469#[doc = "**Reference**: [`VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html)"]
13470#[doc = "<br>"]
13471#[doc = "**Initialization template**:"]
13472#[doc = r#"```no_run
13473# use vulk::vk as vk;
13474# use std::ptr::{null, null_mut};
13475let physical_device_ray_tracing_maintenance1_features_khr = vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
13476    s_type: vk::StructureType::PhysicalDeviceRayTracingMaintenance1FeaturesKHR,
13477    p_next: null_mut(),
13478    ray_tracing_maintenance1: todo!("vk::Bool32"),
13479    ray_tracing_pipeline_trace_rays_indirect2: todo!("vk::Bool32"),
13480};
13481```"#]
13482pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
13483    pub s_type: StructureType,
13484    pub p_next: *mut c_void,
13485    pub ray_tracing_maintenance1: Bool32,
13486    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
13487}
13488
13489#[repr(C)]
13490#[derive(Clone, Copy, Debug)]
13491#[doc = "**Chapter**: Features"]
13492#[doc = "<br>"]
13493#[doc = "**Description**: Structure describing the descriptor buffer features that can be supported by an implementation"]
13494#[doc = "<br>"]
13495#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
13496#[doc = "<br>"]
13497#[doc = "**Reference**: [`VkPhysicalDeviceDescriptorBufferFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html)"]
13498#[doc = "<br>"]
13499#[doc = "**Initialization template**:"]
13500#[doc = r#"```no_run
13501# use vulk::vk as vk;
13502# use std::ptr::{null, null_mut};
13503let physical_device_descriptor_buffer_features_ext = vk::PhysicalDeviceDescriptorBufferFeaturesEXT {
13504    s_type: vk::StructureType::PhysicalDeviceDescriptorBufferFeaturesEXT,
13505    p_next: null_mut(),
13506    descriptor_buffer: todo!("vk::Bool32"),
13507    descriptor_buffer_capture_replay: todo!("vk::Bool32"),
13508    descriptor_buffer_image_layout_ignored: todo!("vk::Bool32"),
13509    descriptor_buffer_push_descriptors: todo!("vk::Bool32"),
13510};
13511```"#]
13512pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
13513    pub s_type: StructureType,
13514    pub p_next: *mut c_void,
13515    pub descriptor_buffer: Bool32,
13516    pub descriptor_buffer_capture_replay: Bool32,
13517    pub descriptor_buffer_image_layout_ignored: Bool32,
13518    pub descriptor_buffer_push_descriptors: Bool32,
13519}
13520
13521#[repr(C)]
13522#[derive(Clone, Copy, Debug)]
13523#[doc = "**Chapter**: Features"]
13524#[doc = "<br>"]
13525#[doc = "**Description**: Structure describing whether shader objects can be supported by an implementation"]
13526#[doc = "<br>"]
13527#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
13528#[doc = "<br>"]
13529#[doc = "**Reference**: [`VkPhysicalDeviceShaderObjectFeaturesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html)"]
13530#[doc = "<br>"]
13531#[doc = "**Initialization template**:"]
13532#[doc = r#"```no_run
13533# use vulk::vk as vk;
13534# use std::ptr::{null, null_mut};
13535let physical_device_shader_object_features_ext = vk::PhysicalDeviceShaderObjectFeaturesEXT {
13536    s_type: vk::StructureType::PhysicalDeviceShaderObjectFeaturesEXT,
13537    p_next: null_mut(),
13538    shader_object: todo!("vk::Bool32"),
13539};
13540```"#]
13541pub struct PhysicalDeviceShaderObjectFeaturesEXT {
13542    pub s_type: StructureType,
13543    pub p_next: *mut c_void,
13544    pub shader_object: Bool32,
13545}
13546
13547#[repr(C)]
13548#[derive(Clone, Copy, Debug)]
13549#[doc = "**Chapter**: Limits"]
13550#[doc = "<br>"]
13551#[doc = "**Description**: Structure reporting implementation-dependent physical device limits"]
13552#[doc = "<br>"]
13553#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
13554#[doc = "<br>"]
13555#[doc = "**Reference**: [`VkPhysicalDeviceLimits`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html)"]
13556#[doc = "<br>"]
13557#[doc = "**Initialization template**:"]
13558#[doc = r#"```no_run
13559# use vulk::vk as vk;
13560# use std::ptr::{null, null_mut};
13561let physical_device_limits = vk::PhysicalDeviceLimits {
13562    max_image_dimension_1d: todo!("u32"),
13563    max_image_dimension_2d: todo!("u32"),
13564    max_image_dimension_3d: todo!("u32"),
13565    max_image_dimension_cube: todo!("u32"),
13566    max_image_array_layers: todo!("u32"),
13567    max_texel_buffer_elements: todo!("u32"),
13568    max_uniform_buffer_range: todo!("u32"),
13569    max_storage_buffer_range: todo!("u32"),
13570    max_push_constants_size: todo!("u32"),
13571    max_memory_allocation_count: todo!("u32"),
13572    max_sampler_allocation_count: todo!("u32"),
13573    buffer_image_granularity: todo!("vk::DeviceSize"),
13574    sparse_address_space_size: todo!("vk::DeviceSize"),
13575    max_bound_descriptor_sets: todo!("u32"),
13576    max_per_stage_descriptor_samplers: todo!("u32"),
13577    max_per_stage_descriptor_uniform_buffers: todo!("u32"),
13578    max_per_stage_descriptor_storage_buffers: todo!("u32"),
13579    max_per_stage_descriptor_sampled_images: todo!("u32"),
13580    max_per_stage_descriptor_storage_images: todo!("u32"),
13581    max_per_stage_descriptor_input_attachments: todo!("u32"),
13582    max_per_stage_resources: todo!("u32"),
13583    max_descriptor_set_samplers: todo!("u32"),
13584    max_descriptor_set_uniform_buffers: todo!("u32"),
13585    max_descriptor_set_uniform_buffers_dynamic: todo!("u32"),
13586    max_descriptor_set_storage_buffers: todo!("u32"),
13587    max_descriptor_set_storage_buffers_dynamic: todo!("u32"),
13588    max_descriptor_set_sampled_images: todo!("u32"),
13589    max_descriptor_set_storage_images: todo!("u32"),
13590    max_descriptor_set_input_attachments: todo!("u32"),
13591    max_vertex_input_attributes: todo!("u32"),
13592    max_vertex_input_bindings: todo!("u32"),
13593    max_vertex_input_attribute_offset: todo!("u32"),
13594    max_vertex_input_binding_stride: todo!("u32"),
13595    max_vertex_output_components: todo!("u32"),
13596    max_tessellation_generation_level: todo!("u32"),
13597    max_tessellation_patch_size: todo!("u32"),
13598    max_tessellation_control_per_vertex_input_components: todo!("u32"),
13599    max_tessellation_control_per_vertex_output_components: todo!("u32"),
13600    max_tessellation_control_per_patch_output_components: todo!("u32"),
13601    max_tessellation_control_total_output_components: todo!("u32"),
13602    max_tessellation_evaluation_input_components: todo!("u32"),
13603    max_tessellation_evaluation_output_components: todo!("u32"),
13604    max_geometry_shader_invocations: todo!("u32"),
13605    max_geometry_input_components: todo!("u32"),
13606    max_geometry_output_components: todo!("u32"),
13607    max_geometry_output_vertices: todo!("u32"),
13608    max_geometry_total_output_components: todo!("u32"),
13609    max_fragment_input_components: todo!("u32"),
13610    max_fragment_output_attachments: todo!("u32"),
13611    max_fragment_dual_src_attachments: todo!("u32"),
13612    max_fragment_combined_output_resources: todo!("u32"),
13613    max_compute_shared_memory_size: todo!("u32"),
13614    max_compute_work_group_count: todo!("[u32; 3]"),
13615    max_compute_work_group_invocations: todo!("u32"),
13616    max_compute_work_group_size: todo!("[u32; 3]"),
13617    sub_pixel_precision_bits: todo!("u32"),
13618    sub_texel_precision_bits: todo!("u32"),
13619    mipmap_precision_bits: todo!("u32"),
13620    max_draw_indexed_index_value: todo!("u32"),
13621    max_draw_indirect_count: todo!("u32"),
13622    max_sampler_lod_bias: todo!("f32"),
13623    max_sampler_anisotropy: todo!("f32"),
13624    max_viewports: todo!("u32"),
13625    max_viewport_dimensions: todo!("[u32; 2]"),
13626    viewport_bounds_range: todo!("[f32; 2]"),
13627    viewport_sub_pixel_bits: todo!("u32"),
13628    min_memory_map_alignment: todo!("usize"),
13629    min_texel_buffer_offset_alignment: todo!("vk::DeviceSize"),
13630    min_uniform_buffer_offset_alignment: todo!("vk::DeviceSize"),
13631    min_storage_buffer_offset_alignment: todo!("vk::DeviceSize"),
13632    min_texel_offset: todo!("i32"),
13633    max_texel_offset: todo!("u32"),
13634    min_texel_gather_offset: todo!("i32"),
13635    max_texel_gather_offset: todo!("u32"),
13636    min_interpolation_offset: todo!("f32"),
13637    max_interpolation_offset: todo!("f32"),
13638    sub_pixel_interpolation_offset_bits: todo!("u32"),
13639    max_framebuffer_width: todo!("u32"),
13640    max_framebuffer_height: todo!("u32"),
13641    max_framebuffer_layers: todo!("u32"),
13642    framebuffer_color_sample_counts: todo!("vk::SampleCountFlagBits"),
13643    framebuffer_depth_sample_counts: todo!("vk::SampleCountFlagBits"),
13644    framebuffer_stencil_sample_counts: todo!("vk::SampleCountFlagBits"),
13645    framebuffer_no_attachments_sample_counts: todo!("vk::SampleCountFlagBits"),
13646    max_color_attachments: todo!("u32"),
13647    sampled_image_color_sample_counts: todo!("vk::SampleCountFlagBits"),
13648    sampled_image_integer_sample_counts: todo!("vk::SampleCountFlagBits"),
13649    sampled_image_depth_sample_counts: todo!("vk::SampleCountFlagBits"),
13650    sampled_image_stencil_sample_counts: todo!("vk::SampleCountFlagBits"),
13651    storage_image_sample_counts: todo!("vk::SampleCountFlagBits"),
13652    max_sample_mask_words: todo!("u32"),
13653    timestamp_compute_and_graphics: todo!("vk::Bool32"),
13654    timestamp_period: todo!("f32"),
13655    max_clip_distances: todo!("u32"),
13656    max_cull_distances: todo!("u32"),
13657    max_combined_clip_and_cull_distances: todo!("u32"),
13658    discrete_queue_priorities: todo!("u32"),
13659    point_size_range: todo!("[f32; 2]"),
13660    line_width_range: todo!("[f32; 2]"),
13661    point_size_granularity: todo!("f32"),
13662    line_width_granularity: todo!("f32"),
13663    strict_lines: todo!("vk::Bool32"),
13664    standard_sample_locations: todo!("vk::Bool32"),
13665    optimal_buffer_copy_offset_alignment: todo!("vk::DeviceSize"),
13666    optimal_buffer_copy_row_pitch_alignment: todo!("vk::DeviceSize"),
13667    non_coherent_atom_size: todo!("vk::DeviceSize"),
13668};
13669```"#]
13670pub struct PhysicalDeviceLimits {
13671    pub max_image_dimension_1d: u32,
13672    pub max_image_dimension_2d: u32,
13673    pub max_image_dimension_3d: u32,
13674    pub max_image_dimension_cube: u32,
13675    pub max_image_array_layers: u32,
13676    pub max_texel_buffer_elements: u32,
13677    pub max_uniform_buffer_range: u32,
13678    pub max_storage_buffer_range: u32,
13679    pub max_push_constants_size: u32,
13680    pub max_memory_allocation_count: u32,
13681    pub max_sampler_allocation_count: u32,
13682    pub buffer_image_granularity: DeviceSize,
13683    pub sparse_address_space_size: DeviceSize,
13684    pub max_bound_descriptor_sets: u32,
13685    pub max_per_stage_descriptor_samplers: u32,
13686    pub max_per_stage_descriptor_uniform_buffers: u32,
13687    pub max_per_stage_descriptor_storage_buffers: u32,
13688    pub max_per_stage_descriptor_sampled_images: u32,
13689    pub max_per_stage_descriptor_storage_images: u32,
13690    pub max_per_stage_descriptor_input_attachments: u32,
13691    pub max_per_stage_resources: u32,
13692    pub max_descriptor_set_samplers: u32,
13693    pub max_descriptor_set_uniform_buffers: u32,
13694    pub max_descriptor_set_uniform_buffers_dynamic: u32,
13695    pub max_descriptor_set_storage_buffers: u32,
13696    pub max_descriptor_set_storage_buffers_dynamic: u32,
13697    pub max_descriptor_set_sampled_images: u32,
13698    pub max_descriptor_set_storage_images: u32,
13699    pub max_descriptor_set_input_attachments: u32,
13700    pub max_vertex_input_attributes: u32,
13701    pub max_vertex_input_bindings: u32,
13702    pub max_vertex_input_attribute_offset: u32,
13703    pub max_vertex_input_binding_stride: u32,
13704    pub max_vertex_output_components: u32,
13705    pub max_tessellation_generation_level: u32,
13706    pub max_tessellation_patch_size: u32,
13707    pub max_tessellation_control_per_vertex_input_components: u32,
13708    pub max_tessellation_control_per_vertex_output_components: u32,
13709    pub max_tessellation_control_per_patch_output_components: u32,
13710    pub max_tessellation_control_total_output_components: u32,
13711    pub max_tessellation_evaluation_input_components: u32,
13712    pub max_tessellation_evaluation_output_components: u32,
13713    pub max_geometry_shader_invocations: u32,
13714    pub max_geometry_input_components: u32,
13715    pub max_geometry_output_components: u32,
13716    pub max_geometry_output_vertices: u32,
13717    pub max_geometry_total_output_components: u32,
13718    pub max_fragment_input_components: u32,
13719    pub max_fragment_output_attachments: u32,
13720    pub max_fragment_dual_src_attachments: u32,
13721    pub max_fragment_combined_output_resources: u32,
13722    pub max_compute_shared_memory_size: u32,
13723    pub max_compute_work_group_count: [u32; 3],
13724    pub max_compute_work_group_invocations: u32,
13725    pub max_compute_work_group_size: [u32; 3],
13726    pub sub_pixel_precision_bits: u32,
13727    pub sub_texel_precision_bits: u32,
13728    pub mipmap_precision_bits: u32,
13729    pub max_draw_indexed_index_value: u32,
13730    pub max_draw_indirect_count: u32,
13731    pub max_sampler_lod_bias: f32,
13732    pub max_sampler_anisotropy: f32,
13733    pub max_viewports: u32,
13734    pub max_viewport_dimensions: [u32; 2],
13735    pub viewport_bounds_range: [f32; 2],
13736    pub viewport_sub_pixel_bits: u32,
13737    pub min_memory_map_alignment: usize,
13738    pub min_texel_buffer_offset_alignment: DeviceSize,
13739    pub min_uniform_buffer_offset_alignment: DeviceSize,
13740    pub min_storage_buffer_offset_alignment: DeviceSize,
13741    pub min_texel_offset: i32,
13742    pub max_texel_offset: u32,
13743    pub min_texel_gather_offset: i32,
13744    pub max_texel_gather_offset: u32,
13745    pub min_interpolation_offset: f32,
13746    pub max_interpolation_offset: f32,
13747    pub sub_pixel_interpolation_offset_bits: u32,
13748    pub max_framebuffer_width: u32,
13749    pub max_framebuffer_height: u32,
13750    pub max_framebuffer_layers: u32,
13751    pub framebuffer_color_sample_counts: SampleCountFlags,
13752    pub framebuffer_depth_sample_counts: SampleCountFlags,
13753    pub framebuffer_stencil_sample_counts: SampleCountFlags,
13754    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
13755    pub max_color_attachments: u32,
13756    pub sampled_image_color_sample_counts: SampleCountFlags,
13757    pub sampled_image_integer_sample_counts: SampleCountFlags,
13758    pub sampled_image_depth_sample_counts: SampleCountFlags,
13759    pub sampled_image_stencil_sample_counts: SampleCountFlags,
13760    pub storage_image_sample_counts: SampleCountFlags,
13761    pub max_sample_mask_words: u32,
13762    pub timestamp_compute_and_graphics: Bool32,
13763    pub timestamp_period: f32,
13764    pub max_clip_distances: u32,
13765    pub max_cull_distances: u32,
13766    pub max_combined_clip_and_cull_distances: u32,
13767    pub discrete_queue_priorities: u32,
13768    pub point_size_range: [f32; 2],
13769    pub line_width_range: [f32; 2],
13770    pub point_size_granularity: f32,
13771    pub line_width_granularity: f32,
13772    pub strict_lines: Bool32,
13773    pub standard_sample_locations: Bool32,
13774    pub optimal_buffer_copy_offset_alignment: DeviceSize,
13775    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
13776    pub non_coherent_atom_size: DeviceSize,
13777}
13778
13779#[repr(C)]
13780#[derive(Clone, Copy, Debug)]
13781#[doc = "**Chapter**: Limits"]
13782#[doc = "<br>"]
13783#[doc = "**Description**: Structure describing subgroup support for an implementation"]
13784#[doc = "<br>"]
13785#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
13786#[doc = "<br>"]
13787#[doc = "**Reference**: [`VkPhysicalDeviceSubgroupProperties`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html)"]
13788#[doc = "<br>"]
13789#[doc = "**Initialization template**:"]
13790#[doc = r#"```no_run
13791# use vulk::vk as vk;
13792# use std::ptr::{null, null_mut};
13793let physical_device_subgroup_properties = vk::PhysicalDeviceSubgroupProperties {
13794    s_type: vk::StructureType::PhysicalDeviceSubgroupProperties,
13795    p_next: null_mut(),
13796    subgroup_size: todo!("u32"),
13797    supported_stages: todo!("vk::ShaderStageFlagBits"),
13798    supported_operations: todo!("vk::SubgroupFeatureFlagBits"),
13799    quad_operations_in_all_stages: todo!("vk::Bool32"),
13800};
13801```"#]
13802pub struct PhysicalDeviceSubgroupProperties {
13803    pub s_type: StructureType,
13804    pub p_next: *mut c_void,
13805    pub subgroup_size: u32,
13806    pub supported_stages: ShaderStageFlags,
13807    pub supported_operations: SubgroupFeatureFlags,
13808    pub quad_operations_in_all_stages: Bool32,
13809}
13810
13811#[repr(C)]
13812#[derive(Clone, Copy, Debug)]
13813#[doc = "**Chapter**: Limits"]
13814#[doc = "<br>"]
13815#[doc = "**Description**: Structure describing mesh shading properties"]
13816#[doc = "<br>"]
13817#[doc = "**Provided by**: [`VK_EXT_mesh_shader`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)"]
13818#[doc = "<br>"]
13819#[doc = "**Reference**: [`VkPhysicalDeviceMeshShaderPropertiesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html)"]
13820#[doc = "<br>"]
13821#[doc = "**Initialization template**:"]
13822#[doc = r#"```no_run
13823# use vulk::vk as vk;
13824# use std::ptr::{null, null_mut};
13825let physical_device_mesh_shader_properties_ext = vk::PhysicalDeviceMeshShaderPropertiesEXT {
13826    s_type: vk::StructureType::PhysicalDeviceMeshShaderPropertiesEXT,
13827    p_next: null_mut(),
13828    max_task_work_group_total_count: todo!("u32"),
13829    max_task_work_group_count: todo!("[u32; 3]"),
13830    max_task_work_group_invocations: todo!("u32"),
13831    max_task_work_group_size: todo!("[u32; 3]"),
13832    max_task_payload_size: todo!("u32"),
13833    max_task_shared_memory_size: todo!("u32"),
13834    max_task_payload_and_shared_memory_size: todo!("u32"),
13835    max_mesh_work_group_total_count: todo!("u32"),
13836    max_mesh_work_group_count: todo!("[u32; 3]"),
13837    max_mesh_work_group_invocations: todo!("u32"),
13838    max_mesh_work_group_size: todo!("[u32; 3]"),
13839    max_mesh_shared_memory_size: todo!("u32"),
13840    max_mesh_payload_and_shared_memory_size: todo!("u32"),
13841    max_mesh_output_memory_size: todo!("u32"),
13842    max_mesh_payload_and_output_memory_size: todo!("u32"),
13843    max_mesh_output_components: todo!("u32"),
13844    max_mesh_output_vertices: todo!("u32"),
13845    max_mesh_output_primitives: todo!("u32"),
13846    max_mesh_output_layers: todo!("u32"),
13847    max_mesh_multiview_view_count: todo!("u32"),
13848    mesh_output_per_vertex_granularity: todo!("u32"),
13849    mesh_output_per_primitive_granularity: todo!("u32"),
13850    max_preferred_task_work_group_invocations: todo!("u32"),
13851    max_preferred_mesh_work_group_invocations: todo!("u32"),
13852    prefers_local_invocation_vertex_output: todo!("vk::Bool32"),
13853    prefers_local_invocation_primitive_output: todo!("vk::Bool32"),
13854    prefers_compact_vertex_output: todo!("vk::Bool32"),
13855    prefers_compact_primitive_output: todo!("vk::Bool32"),
13856};
13857```"#]
13858pub struct PhysicalDeviceMeshShaderPropertiesEXT {
13859    pub s_type: StructureType,
13860    pub p_next: *mut c_void,
13861    pub max_task_work_group_total_count: u32,
13862    pub max_task_work_group_count: [u32; 3],
13863    pub max_task_work_group_invocations: u32,
13864    pub max_task_work_group_size: [u32; 3],
13865    pub max_task_payload_size: u32,
13866    pub max_task_shared_memory_size: u32,
13867    pub max_task_payload_and_shared_memory_size: u32,
13868    pub max_mesh_work_group_total_count: u32,
13869    pub max_mesh_work_group_count: [u32; 3],
13870    pub max_mesh_work_group_invocations: u32,
13871    pub max_mesh_work_group_size: [u32; 3],
13872    pub max_mesh_shared_memory_size: u32,
13873    pub max_mesh_payload_and_shared_memory_size: u32,
13874    pub max_mesh_output_memory_size: u32,
13875    pub max_mesh_payload_and_output_memory_size: u32,
13876    pub max_mesh_output_components: u32,
13877    pub max_mesh_output_vertices: u32,
13878    pub max_mesh_output_primitives: u32,
13879    pub max_mesh_output_layers: u32,
13880    pub max_mesh_multiview_view_count: u32,
13881    pub mesh_output_per_vertex_granularity: u32,
13882    pub mesh_output_per_primitive_granularity: u32,
13883    pub max_preferred_task_work_group_invocations: u32,
13884    pub max_preferred_mesh_work_group_invocations: u32,
13885    pub prefers_local_invocation_vertex_output: Bool32,
13886    pub prefers_local_invocation_primitive_output: Bool32,
13887    pub prefers_compact_vertex_output: Bool32,
13888    pub prefers_compact_primitive_output: Bool32,
13889}
13890
13891#[repr(C)]
13892#[derive(Clone, Copy, Debug)]
13893#[doc = "**Chapter**: Limits"]
13894#[doc = "<br>"]
13895#[doc = "**Description**: Properties of the physical device for acceleration structure"]
13896#[doc = "<br>"]
13897#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
13898#[doc = "<br>"]
13899#[doc = "**Reference**: [`VkPhysicalDeviceAccelerationStructurePropertiesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html)"]
13900#[doc = "<br>"]
13901#[doc = "**Initialization template**:"]
13902#[doc = r#"```no_run
13903# use vulk::vk as vk;
13904# use std::ptr::{null, null_mut};
13905let physical_device_acceleration_structure_properties_khr = vk::PhysicalDeviceAccelerationStructurePropertiesKHR {
13906    s_type: vk::StructureType::PhysicalDeviceAccelerationStructurePropertiesKHR,
13907    p_next: null_mut(),
13908    max_geometry_count: todo!("u64"),
13909    max_instance_count: todo!("u64"),
13910    max_primitive_count: todo!("u64"),
13911    max_per_stage_descriptor_acceleration_structures: todo!("u32"),
13912    max_per_stage_descriptor_update_after_bind_acceleration_structures: todo!("u32"),
13913    max_descriptor_set_acceleration_structures: todo!("u32"),
13914    max_descriptor_set_update_after_bind_acceleration_structures: todo!("u32"),
13915    min_acceleration_structure_scratch_offset_alignment: todo!("u32"),
13916};
13917```"#]
13918pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
13919    pub s_type: StructureType,
13920    pub p_next: *mut c_void,
13921    pub max_geometry_count: u64,
13922    pub max_instance_count: u64,
13923    pub max_primitive_count: u64,
13924    pub max_per_stage_descriptor_acceleration_structures: u32,
13925    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
13926    pub max_descriptor_set_acceleration_structures: u32,
13927    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
13928    pub min_acceleration_structure_scratch_offset_alignment: u32,
13929}
13930
13931#[repr(C)]
13932#[derive(Clone, Copy, Debug)]
13933#[doc = "**Chapter**: Limits"]
13934#[doc = "<br>"]
13935#[doc = "**Description**: Properties of the physical device for ray tracing"]
13936#[doc = "<br>"]
13937#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
13938#[doc = "<br>"]
13939#[doc = "**Reference**: [`VkPhysicalDeviceRayTracingPipelinePropertiesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html)"]
13940#[doc = "<br>"]
13941#[doc = "**Initialization template**:"]
13942#[doc = r#"```no_run
13943# use vulk::vk as vk;
13944# use std::ptr::{null, null_mut};
13945let physical_device_ray_tracing_pipeline_properties_khr = vk::PhysicalDeviceRayTracingPipelinePropertiesKHR {
13946    s_type: vk::StructureType::PhysicalDeviceRayTracingPipelinePropertiesKHR,
13947    p_next: null_mut(),
13948    shader_group_handle_size: todo!("u32"),
13949    max_ray_recursion_depth: todo!("u32"),
13950    max_shader_group_stride: todo!("u32"),
13951    shader_group_base_alignment: todo!("u32"),
13952    shader_group_handle_capture_replay_size: todo!("u32"),
13953    max_ray_dispatch_invocation_count: todo!("u32"),
13954    shader_group_handle_alignment: todo!("u32"),
13955    max_ray_hit_attribute_size: todo!("u32"),
13956};
13957```"#]
13958pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
13959    pub s_type: StructureType,
13960    pub p_next: *mut c_void,
13961    pub shader_group_handle_size: u32,
13962    pub max_ray_recursion_depth: u32,
13963    pub max_shader_group_stride: u32,
13964    pub shader_group_base_alignment: u32,
13965    pub shader_group_handle_capture_replay_size: u32,
13966    pub max_ray_dispatch_invocation_count: u32,
13967    pub shader_group_handle_alignment: u32,
13968    pub max_ray_hit_attribute_size: u32,
13969}
13970
13971#[repr(C)]
13972#[derive(Clone, Copy, Debug)]
13973#[doc = "**Chapter**: Limits"]
13974#[doc = "<br>"]
13975#[doc = "**Description**: Structure describing descriptor buffer properties supported by an implementation"]
13976#[doc = "<br>"]
13977#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
13978#[doc = "<br>"]
13979#[doc = "**Reference**: [`VkPhysicalDeviceDescriptorBufferPropertiesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html)"]
13980#[doc = "<br>"]
13981#[doc = "**Initialization template**:"]
13982#[doc = r#"```no_run
13983# use vulk::vk as vk;
13984# use std::ptr::{null, null_mut};
13985let physical_device_descriptor_buffer_properties_ext = vk::PhysicalDeviceDescriptorBufferPropertiesEXT {
13986    s_type: vk::StructureType::PhysicalDeviceDescriptorBufferPropertiesEXT,
13987    p_next: null_mut(),
13988    combined_image_sampler_descriptor_single_array: todo!("vk::Bool32"),
13989    bufferless_push_descriptors: todo!("vk::Bool32"),
13990    allow_sampler_image_view_post_submit_creation: todo!("vk::Bool32"),
13991    descriptor_buffer_offset_alignment: todo!("vk::DeviceSize"),
13992    max_descriptor_buffer_bindings: todo!("u32"),
13993    max_resource_descriptor_buffer_bindings: todo!("u32"),
13994    max_sampler_descriptor_buffer_bindings: todo!("u32"),
13995    max_embedded_immutable_sampler_bindings: todo!("u32"),
13996    max_embedded_immutable_samplers: todo!("u32"),
13997    buffer_capture_replay_descriptor_data_size: todo!("usize"),
13998    image_capture_replay_descriptor_data_size: todo!("usize"),
13999    image_view_capture_replay_descriptor_data_size: todo!("usize"),
14000    sampler_capture_replay_descriptor_data_size: todo!("usize"),
14001    acceleration_structure_capture_replay_descriptor_data_size: todo!("usize"),
14002    sampler_descriptor_size: todo!("usize"),
14003    combined_image_sampler_descriptor_size: todo!("usize"),
14004    sampled_image_descriptor_size: todo!("usize"),
14005    storage_image_descriptor_size: todo!("usize"),
14006    uniform_texel_buffer_descriptor_size: todo!("usize"),
14007    robust_uniform_texel_buffer_descriptor_size: todo!("usize"),
14008    storage_texel_buffer_descriptor_size: todo!("usize"),
14009    robust_storage_texel_buffer_descriptor_size: todo!("usize"),
14010    uniform_buffer_descriptor_size: todo!("usize"),
14011    robust_uniform_buffer_descriptor_size: todo!("usize"),
14012    storage_buffer_descriptor_size: todo!("usize"),
14013    robust_storage_buffer_descriptor_size: todo!("usize"),
14014    input_attachment_descriptor_size: todo!("usize"),
14015    acceleration_structure_descriptor_size: todo!("usize"),
14016    max_sampler_descriptor_buffer_range: todo!("vk::DeviceSize"),
14017    max_resource_descriptor_buffer_range: todo!("vk::DeviceSize"),
14018    sampler_descriptor_buffer_address_space_size: todo!("vk::DeviceSize"),
14019    resource_descriptor_buffer_address_space_size: todo!("vk::DeviceSize"),
14020    descriptor_buffer_address_space_size: todo!("vk::DeviceSize"),
14021};
14022```"#]
14023pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
14024    pub s_type: StructureType,
14025    pub p_next: *mut c_void,
14026    pub combined_image_sampler_descriptor_single_array: Bool32,
14027    pub bufferless_push_descriptors: Bool32,
14028    pub allow_sampler_image_view_post_submit_creation: Bool32,
14029    pub descriptor_buffer_offset_alignment: DeviceSize,
14030    pub max_descriptor_buffer_bindings: u32,
14031    pub max_resource_descriptor_buffer_bindings: u32,
14032    pub max_sampler_descriptor_buffer_bindings: u32,
14033    pub max_embedded_immutable_sampler_bindings: u32,
14034    pub max_embedded_immutable_samplers: u32,
14035    pub buffer_capture_replay_descriptor_data_size: usize,
14036    pub image_capture_replay_descriptor_data_size: usize,
14037    pub image_view_capture_replay_descriptor_data_size: usize,
14038    pub sampler_capture_replay_descriptor_data_size: usize,
14039    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
14040    pub sampler_descriptor_size: usize,
14041    pub combined_image_sampler_descriptor_size: usize,
14042    pub sampled_image_descriptor_size: usize,
14043    pub storage_image_descriptor_size: usize,
14044    pub uniform_texel_buffer_descriptor_size: usize,
14045    pub robust_uniform_texel_buffer_descriptor_size: usize,
14046    pub storage_texel_buffer_descriptor_size: usize,
14047    pub robust_storage_texel_buffer_descriptor_size: usize,
14048    pub uniform_buffer_descriptor_size: usize,
14049    pub robust_uniform_buffer_descriptor_size: usize,
14050    pub storage_buffer_descriptor_size: usize,
14051    pub robust_storage_buffer_descriptor_size: usize,
14052    pub input_attachment_descriptor_size: usize,
14053    pub acceleration_structure_descriptor_size: usize,
14054    pub max_sampler_descriptor_buffer_range: DeviceSize,
14055    pub max_resource_descriptor_buffer_range: DeviceSize,
14056    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
14057    pub resource_descriptor_buffer_address_space_size: DeviceSize,
14058    pub descriptor_buffer_address_space_size: DeviceSize,
14059}
14060
14061#[repr(C)]
14062#[derive(Clone, Copy, Debug)]
14063#[doc = "**Chapter**: Debugging"]
14064#[doc = "<br>"]
14065#[doc = "**Description**: Specify parameters of a name to give to an object"]
14066#[doc = "<br>"]
14067#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
14068#[doc = "<br>"]
14069#[doc = "**Reference**: [`VkDebugUtilsObjectNameInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsObjectNameInfoEXT.html)"]
14070#[doc = "<br>"]
14071#[doc = "**Initialization template**:"]
14072#[doc = r#"```no_run
14073# use vulk::vk as vk;
14074# use std::ptr::{null, null_mut};
14075let debug_utils_object_name_info_ext = vk::DebugUtilsObjectNameInfoEXT {
14076    s_type: vk::StructureType::DebugUtilsObjectNameInfoEXT,
14077    p_next: null(),
14078    object_type: todo!("vk::ObjectType"),
14079    object_handle: todo!("u64"),
14080    p_object_name: todo!("*const c_char"),
14081};
14082```"#]
14083pub struct DebugUtilsObjectNameInfoEXT {
14084    pub s_type: StructureType,
14085    pub p_next: *const c_void,
14086    pub object_type: ObjectType,
14087    pub object_handle: u64,
14088    pub p_object_name: *const c_char,
14089}
14090
14091#[repr(C)]
14092#[derive(Clone, Copy, Debug)]
14093#[doc = "**Chapter**: Debugging"]
14094#[doc = "<br>"]
14095#[doc = "**Description**: Specify parameters of a label region"]
14096#[doc = "<br>"]
14097#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
14098#[doc = "<br>"]
14099#[doc = "**Reference**: [`VkDebugUtilsLabelEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsLabelEXT.html)"]
14100#[doc = "<br>"]
14101#[doc = "**Initialization template**:"]
14102#[doc = r#"```no_run
14103# use vulk::vk as vk;
14104# use std::ptr::{null, null_mut};
14105let debug_utils_label_ext = vk::DebugUtilsLabelEXT {
14106    s_type: vk::StructureType::DebugUtilsLabelEXT,
14107    p_next: null(),
14108    p_label_name: todo!("*const c_char"),
14109    color: todo!("[f32; 4]"),
14110};
14111```"#]
14112pub struct DebugUtilsLabelEXT {
14113    pub s_type: StructureType,
14114    pub p_next: *const c_void,
14115    pub p_label_name: *const c_char,
14116    pub color: [f32; 4],
14117}
14118
14119#[repr(C)]
14120#[derive(Clone, Copy, Debug)]
14121#[doc = "**Chapter**: Debugging"]
14122#[doc = "<br>"]
14123#[doc = "**Description**: Structure specifying parameters of a newly created debug messenger"]
14124#[doc = "<br>"]
14125#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
14126#[doc = "<br>"]
14127#[doc = "**Reference**: [`VkDebugUtilsMessengerCreateInfoEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessengerCreateInfoEXT.html)"]
14128#[doc = "<br>"]
14129#[doc = "**Initialization template**:"]
14130#[doc = r#"```no_run
14131# use vulk::vk as vk;
14132# use std::ptr::{null, null_mut};
14133let debug_utils_messenger_create_info_ext = vk::DebugUtilsMessengerCreateInfoEXT {
14134    s_type: vk::StructureType::DebugUtilsMessengerCreateInfoEXT,
14135    p_next: null(),
14136    flags: vk::DebugUtilsMessengerCreateFlagsEXT::empty(),
14137    message_severity: todo!("vk::DebugUtilsMessageSeverityFlagBitsEXT"),
14138    message_type: todo!("vk::DebugUtilsMessageTypeFlagBitsEXT"),
14139    pfn_user_callback: todo!("vk::PfnDebugUtilsMessengerCallbackEXT"),
14140    p_user_data: todo!("*mut c_void"),
14141};
14142```"#]
14143pub struct DebugUtilsMessengerCreateInfoEXT {
14144    pub s_type: StructureType,
14145    pub p_next: *const c_void,
14146    pub flags: DebugUtilsMessengerCreateFlagsEXT,
14147    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
14148    pub message_type: DebugUtilsMessageTypeFlagsEXT,
14149    pub pfn_user_callback: PfnDebugUtilsMessengerCallbackEXT,
14150    pub p_user_data: *mut c_void,
14151}
14152
14153#[repr(C)]
14154#[derive(Clone, Copy, Debug)]
14155#[doc = "**Chapter**: Debugging"]
14156#[doc = "<br>"]
14157#[doc = "**Description**: Structure specifying parameters returned to the callback"]
14158#[doc = "<br>"]
14159#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
14160#[doc = "<br>"]
14161#[doc = "**Reference**: [`VkDebugUtilsMessengerCallbackDataEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessengerCallbackDataEXT.html)"]
14162#[doc = "<br>"]
14163#[doc = "**Initialization template**:"]
14164#[doc = r#"```no_run
14165# use vulk::vk as vk;
14166# use std::ptr::{null, null_mut};
14167let debug_utils_messenger_callback_data_ext = vk::DebugUtilsMessengerCallbackDataEXT {
14168    s_type: vk::StructureType::DebugUtilsMessengerCallbackDataEXT,
14169    p_next: null(),
14170    flags: vk::DebugUtilsMessengerCallbackDataFlagsEXT::empty(),
14171    p_message_id_name: todo!("*const c_char"),
14172    message_id_number: todo!("i32"),
14173    p_message: todo!("*const c_char"),
14174    queue_label_count: todo!("u32"),
14175    p_queue_labels: todo!("*const vk::DebugUtilsLabelEXT"),
14176    cmd_buf_label_count: todo!("u32"),
14177    p_cmd_buf_labels: todo!("*const vk::DebugUtilsLabelEXT"),
14178    object_count: todo!("u32"),
14179    p_objects: todo!("*const vk::DebugUtilsObjectNameInfoEXT"),
14180};
14181```"#]
14182pub struct DebugUtilsMessengerCallbackDataEXT {
14183    pub s_type: StructureType,
14184    pub p_next: *const c_void,
14185    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
14186    pub p_message_id_name: *const c_char,
14187    pub message_id_number: i32,
14188    pub p_message: *const c_char,
14189    pub queue_label_count: u32,
14190    pub p_queue_labels: *const DebugUtilsLabelEXT,
14191    pub cmd_buf_label_count: u32,
14192    pub p_cmd_buf_labels: *const DebugUtilsLabelEXT,
14193    pub object_count: u32,
14194    pub p_objects: *const DebugUtilsObjectNameInfoEXT,
14195}
14196
14197//
14198// Unions
14199//
14200
14201#[repr(C)]
14202#[derive(Clone, Copy)]
14203#[doc = "**Chapter**: Resource Descriptors"]
14204#[doc = "<br>"]
14205#[doc = "**Description**: Structure specifying descriptor data"]
14206#[doc = "<br>"]
14207#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
14208#[doc = "<br>"]
14209#[doc = "**Reference**: [`VkDescriptorDataEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorDataEXT.html)"]
14210pub union DescriptorDataEXT {
14211    pub p_sampler: *const Sampler,
14212    pub p_combined_image_sampler: *const DescriptorImageInfo,
14213    pub p_input_attachment_image: *const DescriptorImageInfo,
14214    pub p_sampled_image: *const DescriptorImageInfo,
14215    pub p_storage_image: *const DescriptorImageInfo,
14216    pub p_uniform_texel_buffer: *const DescriptorAddressInfoEXT,
14217    pub p_storage_texel_buffer: *const DescriptorAddressInfoEXT,
14218    pub p_uniform_buffer: *const DescriptorAddressInfoEXT,
14219    pub p_storage_buffer: *const DescriptorAddressInfoEXT,
14220    pub acceleration_structure: DeviceAddress,
14221}
14222
14223impl std::fmt::Debug for DescriptorDataEXT {
14224    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14225        f.debug_struct("DescriptorDataEXT").finish()
14226    }
14227}
14228
14229#[repr(C)]
14230#[derive(Clone, Copy)]
14231#[doc = "**Chapter**: Clear Commands"]
14232#[doc = "<br>"]
14233#[doc = "**Description**: Structure specifying a clear color value"]
14234#[doc = "<br>"]
14235#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14236#[doc = "<br>"]
14237#[doc = "**Reference**: [`VkClearColorValue`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkClearColorValue.html)"]
14238pub union ClearColorValue {
14239    pub float32: [f32; 4],
14240    pub int32: [i32; 4],
14241    pub uint32: [u32; 4],
14242}
14243
14244impl std::fmt::Debug for ClearColorValue {
14245    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14246        f.debug_struct("ClearColorValue").finish()
14247    }
14248}
14249
14250#[repr(C)]
14251#[derive(Clone, Copy)]
14252#[doc = "**Chapter**: Clear Commands"]
14253#[doc = "<br>"]
14254#[doc = "**Description**: Structure specifying a clear value"]
14255#[doc = "<br>"]
14256#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14257#[doc = "<br>"]
14258#[doc = "**Reference**: [`VkClearValue`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkClearValue.html)"]
14259pub union ClearValue {
14260    pub color: ClearColorValue,
14261    pub depth_stencil: ClearDepthStencilValue,
14262}
14263
14264impl std::fmt::Debug for ClearValue {
14265    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14266        f.debug_struct("ClearValue").finish()
14267    }
14268}
14269
14270#[repr(C)]
14271#[derive(Clone, Copy)]
14272#[doc = "**Chapter**: Acceleration Structures"]
14273#[doc = "<br>"]
14274#[doc = "**Description**: Union specifying a device or host address"]
14275#[doc = "<br>"]
14276#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
14277#[doc = "<br>"]
14278#[doc = "**Reference**: [`VkDeviceOrHostAddressKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceOrHostAddressKHR.html)"]
14279pub union DeviceOrHostAddressKHR {
14280    pub device_address: DeviceAddress,
14281    pub host_address: *mut c_void,
14282}
14283
14284impl std::fmt::Debug for DeviceOrHostAddressKHR {
14285    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14286        f.debug_struct("DeviceOrHostAddressKHR").finish()
14287    }
14288}
14289
14290#[repr(C)]
14291#[derive(Clone, Copy)]
14292#[doc = "**Chapter**: Acceleration Structures"]
14293#[doc = "<br>"]
14294#[doc = "**Description**: Union specifying a const device or host address"]
14295#[doc = "<br>"]
14296#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
14297#[doc = "<br>"]
14298#[doc = "**Reference**: [`VkDeviceOrHostAddressConstKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceOrHostAddressConstKHR.html)"]
14299pub union DeviceOrHostAddressConstKHR {
14300    pub device_address: DeviceAddress,
14301    pub host_address: *const c_void,
14302}
14303
14304impl std::fmt::Debug for DeviceOrHostAddressConstKHR {
14305    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14306        f.debug_struct("DeviceOrHostAddressConstKHR").finish()
14307    }
14308}
14309
14310#[repr(C)]
14311#[derive(Clone, Copy)]
14312#[doc = "**Chapter**: Acceleration Structures"]
14313#[doc = "<br>"]
14314#[doc = "**Description**: Union specifying acceleration structure geometry data"]
14315#[doc = "<br>"]
14316#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
14317#[doc = "<br>"]
14318#[doc = "**Reference**: [`VkAccelerationStructureGeometryDataKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureGeometryDataKHR.html)"]
14319pub union AccelerationStructureGeometryDataKHR {
14320    pub triangles: AccelerationStructureGeometryTrianglesDataKHR,
14321    pub aabbs: AccelerationStructureGeometryAabbsDataKHR,
14322    pub instances: AccelerationStructureGeometryInstancesDataKHR,
14323}
14324
14325impl std::fmt::Debug for AccelerationStructureGeometryDataKHR {
14326    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14327        f.debug_struct("AccelerationStructureGeometryDataKHR").finish()
14328    }
14329}
14330
14331//
14332// Command types
14333//
14334
14335#[doc = "**Chapter**: Initialization"]
14336#[doc = "<br>"]
14337#[doc = "**Description**: Return a function pointer for a command"]
14338#[doc = "<br>"]
14339#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14340#[doc = "<br>"]
14341#[doc = "**Reference**: [`vkGetInstanceProcAddr`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetInstanceProcAddr.html)"]
14342pub type GetInstanceProcAddr = unsafe extern "C" fn(
14343    instance: Instance,    //
14344    p_name: *const c_char, //
14345) -> PfnVoidFunction;
14346
14347#[doc = "**Chapter**: Initialization"]
14348#[doc = "<br>"]
14349#[doc = "**Description**: Return a function pointer for a command"]
14350#[doc = "<br>"]
14351#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14352#[doc = "<br>"]
14353#[doc = "**Reference**: [`vkGetDeviceProcAddr`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDeviceProcAddr.html)"]
14354pub type GetDeviceProcAddr = unsafe extern "C" fn(
14355    device: Device,        //
14356    p_name: *const c_char, //
14357) -> PfnVoidFunction;
14358
14359#[doc = "**Chapter**: Initialization"]
14360#[doc = "<br>"]
14361#[doc = "**Description**: Create a new Vulkan instance"]
14362#[doc = "<br>"]
14363#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14364#[doc = "<br>"]
14365#[doc = "**Reference**: [`vkCreateInstance`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateInstance.html)"]
14366pub type CreateInstance = unsafe extern "C" fn(
14367    p_create_info: *const InstanceCreateInfo, //
14368    p_allocator: *const AllocationCallbacks,  //
14369    p_instance: *mut Instance,                //
14370) -> Result;
14371
14372#[doc = "**Chapter**: Initialization"]
14373#[doc = "<br>"]
14374#[doc = "**Description**: Destroy an instance of Vulkan"]
14375#[doc = "<br>"]
14376#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14377#[doc = "<br>"]
14378#[doc = "**Reference**: [`vkDestroyInstance`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyInstance.html)"]
14379pub type DestroyInstance = unsafe extern "C" fn(
14380    instance: Instance,                      //
14381    p_allocator: *const AllocationCallbacks, //
14382);
14383
14384#[doc = "**Chapter**: Devices and Queues"]
14385#[doc = "<br>"]
14386#[doc = "**Description**: Enumerates the physical devices accessible to a Vulkan instance"]
14387#[doc = "<br>"]
14388#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14389#[doc = "<br>"]
14390#[doc = "**Reference**: [`vkEnumeratePhysicalDevices`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEnumeratePhysicalDevices.html)"]
14391pub type EnumeratePhysicalDevices = unsafe extern "C" fn(
14392    instance: Instance,                      //
14393    p_physical_device_count: *mut u32,       //
14394    p_physical_devices: *mut PhysicalDevice, //
14395) -> Result;
14396
14397#[doc = "**Chapter**: Devices and Queues"]
14398#[doc = "<br>"]
14399#[doc = "**Description**: Returns properties of a physical device"]
14400#[doc = "<br>"]
14401#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
14402#[doc = "<br>"]
14403#[doc = "**Reference**: [`vkGetPhysicalDeviceProperties2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceProperties2.html)"]
14404pub type GetPhysicalDeviceProperties2 = unsafe extern "C" fn(
14405    physical_device: PhysicalDevice,              //
14406    p_properties: *mut PhysicalDeviceProperties2, //
14407);
14408
14409#[doc = "**Chapter**: Devices and Queues"]
14410#[doc = "<br>"]
14411#[doc = "**Description**: Reports properties of the queues of the specified physical device"]
14412#[doc = "<br>"]
14413#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
14414#[doc = "<br>"]
14415#[doc = "**Reference**: [`vkGetPhysicalDeviceQueueFamilyProperties2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html)"]
14416pub type GetPhysicalDeviceQueueFamilyProperties2 = unsafe extern "C" fn(
14417    physical_device: PhysicalDevice,                        //
14418    p_queue_family_property_count: *mut u32,                //
14419    p_queue_family_properties: *mut QueueFamilyProperties2, //
14420);
14421
14422#[doc = "**Chapter**: Devices and Queues"]
14423#[doc = "<br>"]
14424#[doc = "**Description**: Create a new device instance"]
14425#[doc = "<br>"]
14426#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14427#[doc = "<br>"]
14428#[doc = "**Reference**: [`vkCreateDevice`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDevice.html)"]
14429pub type CreateDevice = unsafe extern "C" fn(
14430    physical_device: PhysicalDevice,         //
14431    p_create_info: *const DeviceCreateInfo,  //
14432    p_allocator: *const AllocationCallbacks, //
14433    p_device: *mut Device,                   //
14434) -> Result;
14435
14436#[doc = "**Chapter**: Devices and Queues"]
14437#[doc = "<br>"]
14438#[doc = "**Description**: Destroy a logical device"]
14439#[doc = "<br>"]
14440#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14441#[doc = "<br>"]
14442#[doc = "**Reference**: [`vkDestroyDevice`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyDevice.html)"]
14443pub type DestroyDevice = unsafe extern "C" fn(
14444    device: Device,                          //
14445    p_allocator: *const AllocationCallbacks, //
14446);
14447
14448#[doc = "**Chapter**: Devices and Queues"]
14449#[doc = "<br>"]
14450#[doc = "**Description**: Get a queue handle from a device"]
14451#[doc = "<br>"]
14452#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
14453#[doc = "<br>"]
14454#[doc = "**Reference**: [`vkGetDeviceQueue2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDeviceQueue2.html)"]
14455pub type GetDeviceQueue2 = unsafe extern "C" fn(
14456    device: Device,                        //
14457    p_queue_info: *const DeviceQueueInfo2, //
14458    p_queue: *mut Queue,                   //
14459);
14460
14461#[doc = "**Chapter**: Command Buffers"]
14462#[doc = "<br>"]
14463#[doc = "**Description**: Create a new command pool object"]
14464#[doc = "<br>"]
14465#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14466#[doc = "<br>"]
14467#[doc = "**Reference**: [`vkCreateCommandPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateCommandPool.html)"]
14468pub type CreateCommandPool = unsafe extern "C" fn(
14469    device: Device,                              //
14470    p_create_info: *const CommandPoolCreateInfo, //
14471    p_allocator: *const AllocationCallbacks,     //
14472    p_command_pool: *mut CommandPool,            //
14473) -> Result;
14474
14475#[doc = "**Chapter**: Command Buffers"]
14476#[doc = "<br>"]
14477#[doc = "**Description**: Reset a command pool"]
14478#[doc = "<br>"]
14479#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14480#[doc = "<br>"]
14481#[doc = "**Reference**: [`vkResetCommandPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetCommandPool.html)"]
14482pub type ResetCommandPool = unsafe extern "C" fn(
14483    device: Device,               //
14484    command_pool: CommandPool,    //
14485    flags: CommandPoolResetFlags, //
14486) -> Result;
14487
14488#[doc = "**Chapter**: Command Buffers"]
14489#[doc = "<br>"]
14490#[doc = "**Description**: Destroy a command pool object"]
14491#[doc = "<br>"]
14492#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14493#[doc = "<br>"]
14494#[doc = "**Reference**: [`vkDestroyCommandPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyCommandPool.html)"]
14495pub type DestroyCommandPool = unsafe extern "C" fn(
14496    device: Device,                          //
14497    command_pool: CommandPool,               //
14498    p_allocator: *const AllocationCallbacks, //
14499);
14500
14501#[doc = "**Chapter**: Command Buffers"]
14502#[doc = "<br>"]
14503#[doc = "**Description**: Allocate command buffers from an existing command pool"]
14504#[doc = "<br>"]
14505#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14506#[doc = "<br>"]
14507#[doc = "**Reference**: [`vkAllocateCommandBuffers`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAllocateCommandBuffers.html)"]
14508pub type AllocateCommandBuffers = unsafe extern "C" fn(
14509    device: Device,                                    //
14510    p_allocate_info: *const CommandBufferAllocateInfo, //
14511    p_command_buffers: *mut CommandBuffer,             //
14512) -> Result;
14513
14514#[doc = "**Chapter**: Command Buffers"]
14515#[doc = "<br>"]
14516#[doc = "**Description**: Reset a command buffer to the initial state"]
14517#[doc = "<br>"]
14518#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14519#[doc = "<br>"]
14520#[doc = "**Reference**: [`vkResetCommandBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetCommandBuffer.html)"]
14521pub type ResetCommandBuffer = unsafe extern "C" fn(
14522    command_buffer: CommandBuffer,  //
14523    flags: CommandBufferResetFlags, //
14524) -> Result;
14525
14526#[doc = "**Chapter**: Command Buffers"]
14527#[doc = "<br>"]
14528#[doc = "**Description**: Free command buffers"]
14529#[doc = "<br>"]
14530#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14531#[doc = "<br>"]
14532#[doc = "**Reference**: [`vkFreeCommandBuffers`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeCommandBuffers.html)"]
14533pub type FreeCommandBuffers = unsafe extern "C" fn(
14534    device: Device,                          //
14535    command_pool: CommandPool,               //
14536    command_buffer_count: u32,               //
14537    p_command_buffers: *const CommandBuffer, //
14538);
14539
14540#[doc = "**Chapter**: Command Buffers"]
14541#[doc = "<br>"]
14542#[doc = "**Description**: Start recording a command buffer"]
14543#[doc = "<br>"]
14544#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14545#[doc = "<br>"]
14546#[doc = "**Reference**: [`vkBeginCommandBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkBeginCommandBuffer.html)"]
14547pub type BeginCommandBuffer = unsafe extern "C" fn(
14548    command_buffer: CommandBuffer,               //
14549    p_begin_info: *const CommandBufferBeginInfo, //
14550) -> Result;
14551
14552#[doc = "**Chapter**: Command Buffers"]
14553#[doc = "<br>"]
14554#[doc = "**Description**: Finish recording a command buffer"]
14555#[doc = "<br>"]
14556#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14557#[doc = "<br>"]
14558#[doc = "**Reference**: [`vkEndCommandBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEndCommandBuffer.html)"]
14559pub type EndCommandBuffer = unsafe extern "C" fn(
14560    command_buffer: CommandBuffer, //
14561) -> Result;
14562
14563#[doc = "**Chapter**: Command Buffers"]
14564#[doc = "<br>"]
14565#[doc = "**Description**: Submits command buffers to a queue"]
14566#[doc = "<br>"]
14567#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
14568#[doc = "<br>"]
14569#[doc = "**Reference**: [`vkQueueSubmit2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkQueueSubmit2.html)"]
14570pub type QueueSubmit2 = unsafe extern "C" fn(
14571    queue: Queue,                  //
14572    submit_count: u32,             //
14573    p_submits: *const SubmitInfo2, //
14574    fence: Fence,                  //
14575) -> Result;
14576
14577#[doc = "**Chapter**: Synchronization and Cache Control"]
14578#[doc = "<br>"]
14579#[doc = "**Description**: Create a new queue semaphore object"]
14580#[doc = "<br>"]
14581#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14582#[doc = "<br>"]
14583#[doc = "**Reference**: [`vkCreateSemaphore`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateSemaphore.html)"]
14584pub type CreateSemaphore = unsafe extern "C" fn(
14585    device: Device,                            //
14586    p_create_info: *const SemaphoreCreateInfo, //
14587    p_allocator: *const AllocationCallbacks,   //
14588    p_semaphore: *mut Semaphore,               //
14589) -> Result;
14590
14591#[doc = "**Chapter**: Synchronization and Cache Control"]
14592#[doc = "<br>"]
14593#[doc = "**Description**: Destroy a semaphore object"]
14594#[doc = "<br>"]
14595#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14596#[doc = "<br>"]
14597#[doc = "**Reference**: [`vkDestroySemaphore`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroySemaphore.html)"]
14598pub type DestroySemaphore = unsafe extern "C" fn(
14599    device: Device,                          //
14600    semaphore: Semaphore,                    //
14601    p_allocator: *const AllocationCallbacks, //
14602);
14603
14604#[doc = "**Chapter**: Synchronization and Cache Control"]
14605#[doc = "<br>"]
14606#[doc = "**Description**: Query the current state of a timeline semaphore"]
14607#[doc = "<br>"]
14608#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
14609#[doc = "<br>"]
14610#[doc = "**Reference**: [`vkGetSemaphoreCounterValue`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetSemaphoreCounterValue.html)"]
14611pub type GetSemaphoreCounterValue = unsafe extern "C" fn(
14612    device: Device,       //
14613    semaphore: Semaphore, //
14614    p_value: *mut u64,    //
14615) -> Result;
14616
14617#[doc = "**Chapter**: Synchronization and Cache Control"]
14618#[doc = "<br>"]
14619#[doc = "**Description**: Wait for timeline semaphores on the host"]
14620#[doc = "<br>"]
14621#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
14622#[doc = "<br>"]
14623#[doc = "**Reference**: [`vkWaitSemaphores`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkWaitSemaphores.html)"]
14624pub type WaitSemaphores = unsafe extern "C" fn(
14625    device: Device,                        //
14626    p_wait_info: *const SemaphoreWaitInfo, //
14627    timeout: u64,                          //
14628) -> Result;
14629
14630#[doc = "**Chapter**: Synchronization and Cache Control"]
14631#[doc = "<br>"]
14632#[doc = "**Description**: Signal a timeline semaphore on the host"]
14633#[doc = "<br>"]
14634#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
14635#[doc = "<br>"]
14636#[doc = "**Reference**: [`vkSignalSemaphore`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkSignalSemaphore.html)"]
14637pub type SignalSemaphore = unsafe extern "C" fn(
14638    device: Device,                            //
14639    p_signal_info: *const SemaphoreSignalInfo, //
14640) -> Result;
14641
14642#[doc = "**Chapter**: Synchronization and Cache Control"]
14643#[doc = "<br>"]
14644#[doc = "**Description**: Insert a memory dependency"]
14645#[doc = "<br>"]
14646#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
14647#[doc = "<br>"]
14648#[doc = "**Reference**: [`vkCmdPipelineBarrier2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdPipelineBarrier2.html)"]
14649pub type CmdPipelineBarrier2 = unsafe extern "C" fn(
14650    command_buffer: CommandBuffer,            //
14651    p_dependency_info: *const DependencyInfo, //
14652);
14653
14654#[doc = "**Chapter**: Synchronization and Cache Control"]
14655#[doc = "<br>"]
14656#[doc = "**Description**: Wait for a queue to become idle"]
14657#[doc = "<br>"]
14658#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14659#[doc = "<br>"]
14660#[doc = "**Reference**: [`vkQueueWaitIdle`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkQueueWaitIdle.html)"]
14661pub type QueueWaitIdle = unsafe extern "C" fn(
14662    queue: Queue, //
14663) -> Result;
14664
14665#[doc = "**Chapter**: Synchronization and Cache Control"]
14666#[doc = "<br>"]
14667#[doc = "**Description**: Wait for a device to become idle"]
14668#[doc = "<br>"]
14669#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14670#[doc = "<br>"]
14671#[doc = "**Reference**: [`vkDeviceWaitIdle`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDeviceWaitIdle.html)"]
14672pub type DeviceWaitIdle = unsafe extern "C" fn(
14673    device: Device, //
14674) -> Result;
14675
14676#[doc = "**Chapter**: Synchronization and Cache Control"]
14677#[doc = "<br>"]
14678#[doc = "**Description**: Query calibrated timestamps"]
14679#[doc = "<br>"]
14680#[doc = "**Provided by**: [`VK_EXT_calibrated_timestamps`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_calibrated_timestamps.html)"]
14681#[doc = "<br>"]
14682#[doc = "**Reference**: [`vkGetCalibratedTimestampsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetCalibratedTimestampsEXT.html)"]
14683pub type GetCalibratedTimestampsEXT = unsafe extern "C" fn(
14684    device: Device,                                       //
14685    timestamp_count: u32,                                 //
14686    p_timestamp_infos: *const CalibratedTimestampInfoEXT, //
14687    p_timestamps: *mut u64,                               //
14688    p_max_deviation: *mut u64,                            //
14689) -> Result;
14690
14691#[doc = "**Chapter**: Render Pass"]
14692#[doc = "<br>"]
14693#[doc = "**Description**: Begin a dynamic render pass instance"]
14694#[doc = "<br>"]
14695#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
14696#[doc = "<br>"]
14697#[doc = "**Reference**: [`vkCmdBeginRendering`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBeginRendering.html)"]
14698pub type CmdBeginRendering = unsafe extern "C" fn(
14699    command_buffer: CommandBuffer,          //
14700    p_rendering_info: *const RenderingInfo, //
14701);
14702
14703#[doc = "**Chapter**: Render Pass"]
14704#[doc = "<br>"]
14705#[doc = "**Description**: End a dynamic render pass instance"]
14706#[doc = "<br>"]
14707#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
14708#[doc = "<br>"]
14709#[doc = "**Reference**: [`vkCmdEndRendering`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdEndRendering.html)"]
14710pub type CmdEndRendering = unsafe extern "C" fn(
14711    command_buffer: CommandBuffer, //
14712);
14713
14714#[doc = "**Chapter**: Shaders"]
14715#[doc = "<br>"]
14716#[doc = "**Description**: Create one or more new shaders"]
14717#[doc = "<br>"]
14718#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
14719#[doc = "<br>"]
14720#[doc = "**Reference**: [`vkCreateShadersEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateShadersEXT.html)"]
14721pub type CreateShadersEXT = unsafe extern "C" fn(
14722    device: Device,                             //
14723    create_info_count: u32,                     //
14724    p_create_infos: *const ShaderCreateInfoEXT, //
14725    p_allocator: *const AllocationCallbacks,    //
14726    p_shaders: *mut ShaderEXT,                  //
14727) -> Result;
14728
14729#[doc = "**Chapter**: Shaders"]
14730#[doc = "<br>"]
14731#[doc = "**Description**: Bind shader objects to a command buffer"]
14732#[doc = "<br>"]
14733#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
14734#[doc = "<br>"]
14735#[doc = "**Reference**: [`vkCmdBindShadersEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindShadersEXT.html)"]
14736pub type CmdBindShadersEXT = unsafe extern "C" fn(
14737    command_buffer: CommandBuffer,        //
14738    stage_count: u32,                     //
14739    p_stages: *const ShaderStageFlagBits, //
14740    p_shaders: *const ShaderEXT,          //
14741);
14742
14743#[doc = "**Chapter**: Shaders"]
14744#[doc = "<br>"]
14745#[doc = "**Description**: Destroy a shader object"]
14746#[doc = "<br>"]
14747#[doc = "**Provided by**: [`VK_EXT_shader_object`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)"]
14748#[doc = "<br>"]
14749#[doc = "**Reference**: [`vkDestroyShaderEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyShaderEXT.html)"]
14750pub type DestroyShaderEXT = unsafe extern "C" fn(
14751    device: Device,                          //
14752    shader: ShaderEXT,                       //
14753    p_allocator: *const AllocationCallbacks, //
14754);
14755
14756#[doc = "**Chapter**: Shaders"]
14757#[doc = "<br>"]
14758#[doc = "**Description**: Creates a new shader module object"]
14759#[doc = "<br>"]
14760#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14761#[doc = "<br>"]
14762#[doc = "**Reference**: [`vkCreateShaderModule`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateShaderModule.html)"]
14763pub type CreateShaderModule = unsafe extern "C" fn(
14764    device: Device,                               //
14765    p_create_info: *const ShaderModuleCreateInfo, //
14766    p_allocator: *const AllocationCallbacks,      //
14767    p_shader_module: *mut ShaderModule,           //
14768) -> Result;
14769
14770#[doc = "**Chapter**: Shaders"]
14771#[doc = "<br>"]
14772#[doc = "**Description**: Destroy a shader module"]
14773#[doc = "<br>"]
14774#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14775#[doc = "<br>"]
14776#[doc = "**Reference**: [`vkDestroyShaderModule`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyShaderModule.html)"]
14777pub type DestroyShaderModule = unsafe extern "C" fn(
14778    device: Device,                          //
14779    shader_module: ShaderModule,             //
14780    p_allocator: *const AllocationCallbacks, //
14781);
14782
14783#[doc = "**Chapter**: Pipelines"]
14784#[doc = "<br>"]
14785#[doc = "**Description**: Creates a new ray tracing pipeline object"]
14786#[doc = "<br>"]
14787#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
14788#[doc = "<br>"]
14789#[doc = "**Reference**: [`vkCreateRayTracingPipelinesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateRayTracingPipelinesKHR.html)"]
14790pub type CreateRayTracingPipelinesKHR = unsafe extern "C" fn(
14791    device: Device,                                         //
14792    deferred_operation: DeferredOperationKHR,               //
14793    pipeline_cache: PipelineCache,                          //
14794    create_info_count: u32,                                 //
14795    p_create_infos: *const RayTracingPipelineCreateInfoKHR, //
14796    p_allocator: *const AllocationCallbacks,                //
14797    p_pipelines: *mut Pipeline,                             //
14798) -> Result;
14799
14800#[doc = "**Chapter**: Pipelines"]
14801#[doc = "<br>"]
14802#[doc = "**Description**: Query ray tracing pipeline shader group handles"]
14803#[doc = "<br>"]
14804#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
14805#[doc = "<br>"]
14806#[doc = "**Reference**: [`vkGetRayTracingShaderGroupHandlesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetRayTracingShaderGroupHandlesKHR.html)"]
14807pub type GetRayTracingShaderGroupHandlesKHR = unsafe extern "C" fn(
14808    device: Device,      //
14809    pipeline: Pipeline,  //
14810    first_group: u32,    //
14811    group_count: u32,    //
14812    data_size: usize,    //
14813    p_data: *mut c_void, //
14814) -> Result;
14815
14816#[doc = "**Chapter**: Pipelines"]
14817#[doc = "<br>"]
14818#[doc = "**Description**: Destroy a pipeline object"]
14819#[doc = "<br>"]
14820#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14821#[doc = "<br>"]
14822#[doc = "**Reference**: [`vkDestroyPipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyPipeline.html)"]
14823pub type DestroyPipeline = unsafe extern "C" fn(
14824    device: Device,                          //
14825    pipeline: Pipeline,                      //
14826    p_allocator: *const AllocationCallbacks, //
14827);
14828
14829#[doc = "**Chapter**: Pipelines"]
14830#[doc = "<br>"]
14831#[doc = "**Description**: Bind a pipeline object to a command buffer"]
14832#[doc = "<br>"]
14833#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14834#[doc = "<br>"]
14835#[doc = "**Reference**: [`vkCmdBindPipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindPipeline.html)"]
14836pub type CmdBindPipeline = unsafe extern "C" fn(
14837    command_buffer: CommandBuffer,          //
14838    pipeline_bind_point: PipelineBindPoint, //
14839    pipeline: Pipeline,                     //
14840);
14841
14842#[doc = "**Chapter**: Memory Allocation"]
14843#[doc = "<br>"]
14844#[doc = "**Description**: Reports memory information for the specified physical device"]
14845#[doc = "<br>"]
14846#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
14847#[doc = "<br>"]
14848#[doc = "**Reference**: [`vkGetPhysicalDeviceMemoryProperties2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceMemoryProperties2.html)"]
14849pub type GetPhysicalDeviceMemoryProperties2 = unsafe extern "C" fn(
14850    physical_device: PhysicalDevice,                           //
14851    p_memory_properties: *mut PhysicalDeviceMemoryProperties2, //
14852);
14853
14854#[doc = "**Chapter**: Memory Allocation"]
14855#[doc = "<br>"]
14856#[doc = "**Description**: Allocate device memory"]
14857#[doc = "<br>"]
14858#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14859#[doc = "<br>"]
14860#[doc = "**Reference**: [`vkAllocateMemory`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAllocateMemory.html)"]
14861pub type AllocateMemory = unsafe extern "C" fn(
14862    device: Device,                             //
14863    p_allocate_info: *const MemoryAllocateInfo, //
14864    p_allocator: *const AllocationCallbacks,    //
14865    p_memory: *mut DeviceMemory,                //
14866) -> Result;
14867
14868#[doc = "**Chapter**: Memory Allocation"]
14869#[doc = "<br>"]
14870#[doc = "**Description**: Free device memory"]
14871#[doc = "<br>"]
14872#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14873#[doc = "<br>"]
14874#[doc = "**Reference**: [`vkFreeMemory`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeMemory.html)"]
14875pub type FreeMemory = unsafe extern "C" fn(
14876    device: Device,                          //
14877    memory: DeviceMemory,                    //
14878    p_allocator: *const AllocationCallbacks, //
14879);
14880
14881#[doc = "**Chapter**: Memory Allocation"]
14882#[doc = "<br>"]
14883#[doc = "**Description**: Map a memory object into application address space"]
14884#[doc = "<br>"]
14885#[doc = "**Provided by**: [`VK_KHR_map_memory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_map_memory2.html)"]
14886#[doc = "<br>"]
14887#[doc = "**Reference**: [`vkMapMemory2KHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkMapMemory2KHR.html)"]
14888pub type MapMemory2KHR = unsafe extern "C" fn(
14889    device: Device,                             //
14890    p_memory_map_info: *const MemoryMapInfoKHR, //
14891    pp_data: *mut *mut c_void,                  //
14892) -> Result;
14893
14894#[doc = "**Chapter**: Memory Allocation"]
14895#[doc = "<br>"]
14896#[doc = "**Description**: Unmap a previously mapped memory object"]
14897#[doc = "<br>"]
14898#[doc = "**Provided by**: [`VK_KHR_map_memory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_map_memory2.html)"]
14899#[doc = "<br>"]
14900#[doc = "**Reference**: [`vkUnmapMemory2KHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkUnmapMemory2KHR.html)"]
14901pub type UnmapMemory2KHR = unsafe extern "C" fn(
14902    device: Device,                                 //
14903    p_memory_unmap_info: *const MemoryUnmapInfoKHR, //
14904) -> Result;
14905
14906#[doc = "**Chapter**: Resource Creation"]
14907#[doc = "<br>"]
14908#[doc = "**Description**: Create a new buffer object"]
14909#[doc = "<br>"]
14910#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14911#[doc = "<br>"]
14912#[doc = "**Reference**: [`vkCreateBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateBuffer.html)"]
14913pub type CreateBuffer = unsafe extern "C" fn(
14914    device: Device,                          //
14915    p_create_info: *const BufferCreateInfo,  //
14916    p_allocator: *const AllocationCallbacks, //
14917    p_buffer: *mut Buffer,                   //
14918) -> Result;
14919
14920#[doc = "**Chapter**: Resource Creation"]
14921#[doc = "<br>"]
14922#[doc = "**Description**: Destroy a buffer object"]
14923#[doc = "<br>"]
14924#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14925#[doc = "<br>"]
14926#[doc = "**Reference**: [`vkDestroyBuffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyBuffer.html)"]
14927pub type DestroyBuffer = unsafe extern "C" fn(
14928    device: Device,                          //
14929    buffer: Buffer,                          //
14930    p_allocator: *const AllocationCallbacks, //
14931);
14932
14933#[doc = "**Chapter**: Resource Creation"]
14934#[doc = "<br>"]
14935#[doc = "**Description**: Create a new image object"]
14936#[doc = "<br>"]
14937#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14938#[doc = "<br>"]
14939#[doc = "**Reference**: [`vkCreateImage`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateImage.html)"]
14940pub type CreateImage = unsafe extern "C" fn(
14941    device: Device,                          //
14942    p_create_info: *const ImageCreateInfo,   //
14943    p_allocator: *const AllocationCallbacks, //
14944    p_image: *mut Image,                     //
14945) -> Result;
14946
14947#[doc = "**Chapter**: Resource Creation"]
14948#[doc = "<br>"]
14949#[doc = "**Description**: Destroy an image object"]
14950#[doc = "<br>"]
14951#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14952#[doc = "<br>"]
14953#[doc = "**Reference**: [`vkDestroyImage`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyImage.html)"]
14954pub type DestroyImage = unsafe extern "C" fn(
14955    device: Device,                          //
14956    image: Image,                            //
14957    p_allocator: *const AllocationCallbacks, //
14958);
14959
14960#[doc = "**Chapter**: Resource Creation"]
14961#[doc = "<br>"]
14962#[doc = "**Description**: Create an image view from an existing image"]
14963#[doc = "<br>"]
14964#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14965#[doc = "<br>"]
14966#[doc = "**Reference**: [`vkCreateImageView`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateImageView.html)"]
14967pub type CreateImageView = unsafe extern "C" fn(
14968    device: Device,                            //
14969    p_create_info: *const ImageViewCreateInfo, //
14970    p_allocator: *const AllocationCallbacks,   //
14971    p_view: *mut ImageView,                    //
14972) -> Result;
14973
14974#[doc = "**Chapter**: Resource Creation"]
14975#[doc = "<br>"]
14976#[doc = "**Description**: Destroy an image view object"]
14977#[doc = "<br>"]
14978#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
14979#[doc = "<br>"]
14980#[doc = "**Reference**: [`vkDestroyImageView`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyImageView.html)"]
14981pub type DestroyImageView = unsafe extern "C" fn(
14982    device: Device,                          //
14983    image_view: ImageView,                   //
14984    p_allocator: *const AllocationCallbacks, //
14985);
14986
14987#[doc = "**Chapter**: Resource Creation"]
14988#[doc = "<br>"]
14989#[doc = "**Description**: Create a new acceleration structure object"]
14990#[doc = "<br>"]
14991#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
14992#[doc = "<br>"]
14993#[doc = "**Reference**: [`vkCreateAccelerationStructureKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateAccelerationStructureKHR.html)"]
14994pub type CreateAccelerationStructureKHR = unsafe extern "C" fn(
14995    device: Device,                                           //
14996    p_create_info: *const AccelerationStructureCreateInfoKHR, //
14997    p_allocator: *const AllocationCallbacks,                  //
14998    p_acceleration_structure: *mut AccelerationStructureKHR,  //
14999) -> Result;
15000
15001#[doc = "**Chapter**: Resource Creation"]
15002#[doc = "<br>"]
15003#[doc = "**Description**: Retrieve the required size for an acceleration structure"]
15004#[doc = "<br>"]
15005#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
15006#[doc = "<br>"]
15007#[doc = "**Reference**: [`vkGetAccelerationStructureBuildSizesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetAccelerationStructureBuildSizesKHR.html)"]
15008pub type GetAccelerationStructureBuildSizesKHR = unsafe extern "C" fn(
15009    device: Device,                                                 //
15010    build_type: AccelerationStructureBuildTypeKHR,                  //
15011    p_build_info: *const AccelerationStructureBuildGeometryInfoKHR, //
15012    p_max_primitive_counts: *const u32,                             //
15013    p_size_info: *mut AccelerationStructureBuildSizesInfoKHR,       //
15014);
15015
15016#[doc = "**Chapter**: Resource Creation"]
15017#[doc = "<br>"]
15018#[doc = "**Description**: Destroy an acceleration structure object"]
15019#[doc = "<br>"]
15020#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
15021#[doc = "<br>"]
15022#[doc = "**Reference**: [`vkDestroyAccelerationStructureKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyAccelerationStructureKHR.html)"]
15023pub type DestroyAccelerationStructureKHR = unsafe extern "C" fn(
15024    device: Device,                                   //
15025    acceleration_structure: AccelerationStructureKHR, //
15026    p_allocator: *const AllocationCallbacks,          //
15027);
15028
15029#[doc = "**Chapter**: Resource Creation"]
15030#[doc = "<br>"]
15031#[doc = "**Description**: Query an address of a acceleration structure"]
15032#[doc = "<br>"]
15033#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
15034#[doc = "<br>"]
15035#[doc = "**Reference**: [`vkGetAccelerationStructureDeviceAddressKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetAccelerationStructureDeviceAddressKHR.html)"]
15036pub type GetAccelerationStructureDeviceAddressKHR = unsafe extern "C" fn(
15037    device: Device,                                           //
15038    p_info: *const AccelerationStructureDeviceAddressInfoKHR, //
15039) -> DeviceAddress;
15040
15041#[doc = "**Chapter**: Resource Creation"]
15042#[doc = "<br>"]
15043#[doc = "**Description**: Returns the memory requirements for specified Vulkan object"]
15044#[doc = "<br>"]
15045#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15046#[doc = "<br>"]
15047#[doc = "**Reference**: [`vkGetDeviceBufferMemoryRequirements`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDeviceBufferMemoryRequirements.html)"]
15048pub type GetDeviceBufferMemoryRequirements = unsafe extern "C" fn(
15049    device: Device,                                  //
15050    p_info: *const DeviceBufferMemoryRequirements,   //
15051    p_memory_requirements: *mut MemoryRequirements2, //
15052);
15053
15054#[doc = "**Chapter**: Resource Creation"]
15055#[doc = "<br>"]
15056#[doc = "**Description**: Returns the memory requirements for specified Vulkan object"]
15057#[doc = "<br>"]
15058#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15059#[doc = "<br>"]
15060#[doc = "**Reference**: [`vkGetDeviceImageMemoryRequirements`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDeviceImageMemoryRequirements.html)"]
15061pub type GetDeviceImageMemoryRequirements = unsafe extern "C" fn(
15062    device: Device,                                  //
15063    p_info: *const DeviceImageMemoryRequirements,    //
15064    p_memory_requirements: *mut MemoryRequirements2, //
15065);
15066
15067#[doc = "**Chapter**: Resource Creation"]
15068#[doc = "<br>"]
15069#[doc = "**Description**: Bind device memory to buffer objects"]
15070#[doc = "<br>"]
15071#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
15072#[doc = "<br>"]
15073#[doc = "**Reference**: [`vkBindBufferMemory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkBindBufferMemory2.html)"]
15074pub type BindBufferMemory2 = unsafe extern "C" fn(
15075    device: Device,                            //
15076    bind_info_count: u32,                      //
15077    p_bind_infos: *const BindBufferMemoryInfo, //
15078) -> Result;
15079
15080#[doc = "**Chapter**: Resource Creation"]
15081#[doc = "<br>"]
15082#[doc = "**Description**: Bind device memory to image objects"]
15083#[doc = "<br>"]
15084#[doc = "**Provided by**: [`VK_VERSION_1_1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_1.html)"]
15085#[doc = "<br>"]
15086#[doc = "**Reference**: [`vkBindImageMemory2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkBindImageMemory2.html)"]
15087pub type BindImageMemory2 = unsafe extern "C" fn(
15088    device: Device,                           //
15089    bind_info_count: u32,                     //
15090    p_bind_infos: *const BindImageMemoryInfo, //
15091) -> Result;
15092
15093#[doc = "**Chapter**: Samplers"]
15094#[doc = "<br>"]
15095#[doc = "**Description**: Create a new sampler object"]
15096#[doc = "<br>"]
15097#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15098#[doc = "<br>"]
15099#[doc = "**Reference**: [`vkCreateSampler`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateSampler.html)"]
15100pub type CreateSampler = unsafe extern "C" fn(
15101    device: Device,                          //
15102    p_create_info: *const SamplerCreateInfo, //
15103    p_allocator: *const AllocationCallbacks, //
15104    p_sampler: *mut Sampler,                 //
15105) -> Result;
15106
15107#[doc = "**Chapter**: Samplers"]
15108#[doc = "<br>"]
15109#[doc = "**Description**: Destroy a sampler object"]
15110#[doc = "<br>"]
15111#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15112#[doc = "<br>"]
15113#[doc = "**Reference**: [`vkDestroySampler`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroySampler.html)"]
15114pub type DestroySampler = unsafe extern "C" fn(
15115    device: Device,                          //
15116    sampler: Sampler,                        //
15117    p_allocator: *const AllocationCallbacks, //
15118);
15119
15120#[doc = "**Chapter**: Resource Descriptors"]
15121#[doc = "<br>"]
15122#[doc = "**Description**: Create a new descriptor set layout"]
15123#[doc = "<br>"]
15124#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15125#[doc = "<br>"]
15126#[doc = "**Reference**: [`vkCreateDescriptorSetLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDescriptorSetLayout.html)"]
15127pub type CreateDescriptorSetLayout = unsafe extern "C" fn(
15128    device: Device,                                      //
15129    p_create_info: *const DescriptorSetLayoutCreateInfo, //
15130    p_allocator: *const AllocationCallbacks,             //
15131    p_set_layout: *mut DescriptorSetLayout,              //
15132) -> Result;
15133
15134#[doc = "**Chapter**: Resource Descriptors"]
15135#[doc = "<br>"]
15136#[doc = "**Description**: Destroy a descriptor set layout object"]
15137#[doc = "<br>"]
15138#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15139#[doc = "<br>"]
15140#[doc = "**Reference**: [`vkDestroyDescriptorSetLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyDescriptorSetLayout.html)"]
15141pub type DestroyDescriptorSetLayout = unsafe extern "C" fn(
15142    device: Device,                             //
15143    descriptor_set_layout: DescriptorSetLayout, //
15144    p_allocator: *const AllocationCallbacks,    //
15145);
15146
15147#[doc = "**Chapter**: Resource Descriptors"]
15148#[doc = "<br>"]
15149#[doc = "**Description**: Creates a new pipeline layout object"]
15150#[doc = "<br>"]
15151#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15152#[doc = "<br>"]
15153#[doc = "**Reference**: [`vkCreatePipelineLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreatePipelineLayout.html)"]
15154pub type CreatePipelineLayout = unsafe extern "C" fn(
15155    device: Device,                                 //
15156    p_create_info: *const PipelineLayoutCreateInfo, //
15157    p_allocator: *const AllocationCallbacks,        //
15158    p_pipeline_layout: *mut PipelineLayout,         //
15159) -> Result;
15160
15161#[doc = "**Chapter**: Resource Descriptors"]
15162#[doc = "<br>"]
15163#[doc = "**Description**: Destroy a pipeline layout object"]
15164#[doc = "<br>"]
15165#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15166#[doc = "<br>"]
15167#[doc = "**Reference**: [`vkDestroyPipelineLayout`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyPipelineLayout.html)"]
15168pub type DestroyPipelineLayout = unsafe extern "C" fn(
15169    device: Device,                          //
15170    pipeline_layout: PipelineLayout,         //
15171    p_allocator: *const AllocationCallbacks, //
15172);
15173
15174#[doc = "**Chapter**: Resource Descriptors"]
15175#[doc = "<br>"]
15176#[doc = "**Description**: Update the values of push constants"]
15177#[doc = "<br>"]
15178#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15179#[doc = "<br>"]
15180#[doc = "**Reference**: [`vkCmdPushConstants`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdPushConstants.html)"]
15181pub type CmdPushConstants = unsafe extern "C" fn(
15182    command_buffer: CommandBuffer, //
15183    layout: PipelineLayout,        //
15184    stage_flags: ShaderStageFlags, //
15185    offset: u32,                   //
15186    size: u32,                     //
15187    p_values: *const c_void,       //
15188);
15189
15190#[doc = "**Chapter**: Resource Descriptors"]
15191#[doc = "<br>"]
15192#[doc = "**Description**: Query an address of a buffer"]
15193#[doc = "<br>"]
15194#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
15195#[doc = "<br>"]
15196#[doc = "**Reference**: [`vkGetBufferDeviceAddress`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetBufferDeviceAddress.html)"]
15197pub type GetBufferDeviceAddress = unsafe extern "C" fn(
15198    device: Device,                         //
15199    p_info: *const BufferDeviceAddressInfo, //
15200) -> DeviceAddress;
15201
15202#[doc = "**Chapter**: Resource Descriptors"]
15203#[doc = "<br>"]
15204#[doc = "**Description**: Get the size of a descriptor set layout in memory"]
15205#[doc = "<br>"]
15206#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
15207#[doc = "<br>"]
15208#[doc = "**Reference**: [`vkGetDescriptorSetLayoutSizeEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDescriptorSetLayoutSizeEXT.html)"]
15209pub type GetDescriptorSetLayoutSizeEXT = unsafe extern "C" fn(
15210    device: Device,                          //
15211    layout: DescriptorSetLayout,             //
15212    p_layout_size_in_bytes: *mut DeviceSize, //
15213);
15214
15215#[doc = "**Chapter**: Resource Descriptors"]
15216#[doc = "<br>"]
15217#[doc = "**Description**: Get the offset of a binding within a descriptor set layout"]
15218#[doc = "<br>"]
15219#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
15220#[doc = "<br>"]
15221#[doc = "**Reference**: [`vkGetDescriptorSetLayoutBindingOffsetEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html)"]
15222pub type GetDescriptorSetLayoutBindingOffsetEXT = unsafe extern "C" fn(
15223    device: Device,              //
15224    layout: DescriptorSetLayout, //
15225    binding: u32,                //
15226    p_offset: *mut DeviceSize,   //
15227);
15228
15229#[doc = "**Chapter**: Resource Descriptors"]
15230#[doc = "<br>"]
15231#[doc = "**Description**: To get a descriptor to place in a buffer"]
15232#[doc = "<br>"]
15233#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
15234#[doc = "<br>"]
15235#[doc = "**Reference**: [`vkGetDescriptorEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDescriptorEXT.html)"]
15236pub type GetDescriptorEXT = unsafe extern "C" fn(
15237    device: Device,                                 //
15238    p_descriptor_info: *const DescriptorGetInfoEXT, //
15239    data_size: usize,                               //
15240    p_descriptor: *mut c_void,                      //
15241);
15242
15243#[doc = "**Chapter**: Resource Descriptors"]
15244#[doc = "<br>"]
15245#[doc = "**Description**: Binding descriptor buffers to a command buffer"]
15246#[doc = "<br>"]
15247#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
15248#[doc = "<br>"]
15249#[doc = "**Reference**: [`vkCmdBindDescriptorBuffersEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindDescriptorBuffersEXT.html)"]
15250pub type CmdBindDescriptorBuffersEXT = unsafe extern "C" fn(
15251    command_buffer: CommandBuffer,                          //
15252    buffer_count: u32,                                      //
15253    p_binding_infos: *const DescriptorBufferBindingInfoEXT, //
15254);
15255
15256#[doc = "**Chapter**: Resource Descriptors"]
15257#[doc = "<br>"]
15258#[doc = "**Description**: Setting descriptor buffer offsets in a command buffer"]
15259#[doc = "<br>"]
15260#[doc = "**Provided by**: [`VK_EXT_descriptor_buffer`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)"]
15261#[doc = "<br>"]
15262#[doc = "**Reference**: [`vkCmdSetDescriptorBufferOffsetsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html)"]
15263pub type CmdSetDescriptorBufferOffsetsEXT = unsafe extern "C" fn(
15264    command_buffer: CommandBuffer,          //
15265    pipeline_bind_point: PipelineBindPoint, //
15266    layout: PipelineLayout,                 //
15267    first_set: u32,                         //
15268    set_count: u32,                         //
15269    p_buffer_indices: *const u32,           //
15270    p_offsets: *const DeviceSize,           //
15271);
15272
15273#[doc = "**Chapter**: Queries"]
15274#[doc = "<br>"]
15275#[doc = "**Description**: Create a new query pool object"]
15276#[doc = "<br>"]
15277#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15278#[doc = "<br>"]
15279#[doc = "**Reference**: [`vkCreateQueryPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateQueryPool.html)"]
15280pub type CreateQueryPool = unsafe extern "C" fn(
15281    device: Device,                            //
15282    p_create_info: *const QueryPoolCreateInfo, //
15283    p_allocator: *const AllocationCallbacks,   //
15284    p_query_pool: *mut QueryPool,              //
15285) -> Result;
15286
15287#[doc = "**Chapter**: Queries"]
15288#[doc = "<br>"]
15289#[doc = "**Description**: Destroy a query pool object"]
15290#[doc = "<br>"]
15291#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15292#[doc = "<br>"]
15293#[doc = "**Reference**: [`vkDestroyQueryPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyQueryPool.html)"]
15294pub type DestroyQueryPool = unsafe extern "C" fn(
15295    device: Device,                          //
15296    query_pool: QueryPool,                   //
15297    p_allocator: *const AllocationCallbacks, //
15298);
15299
15300#[doc = "**Chapter**: Queries"]
15301#[doc = "<br>"]
15302#[doc = "**Description**: Reset queries in a query pool"]
15303#[doc = "<br>"]
15304#[doc = "**Provided by**: [`VK_VERSION_1_2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_2.html)"]
15305#[doc = "<br>"]
15306#[doc = "**Reference**: [`vkResetQueryPool`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetQueryPool.html)"]
15307pub type ResetQueryPool = unsafe extern "C" fn(
15308    device: Device,        //
15309    query_pool: QueryPool, //
15310    first_query: u32,      //
15311    query_count: u32,      //
15312);
15313
15314#[doc = "**Chapter**: Queries"]
15315#[doc = "<br>"]
15316#[doc = "**Description**: Begin a query"]
15317#[doc = "<br>"]
15318#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15319#[doc = "<br>"]
15320#[doc = "**Reference**: [`vkCmdBeginQuery`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBeginQuery.html)"]
15321pub type CmdBeginQuery = unsafe extern "C" fn(
15322    command_buffer: CommandBuffer, //
15323    query_pool: QueryPool,         //
15324    query: u32,                    //
15325    flags: QueryControlFlags,      //
15326);
15327
15328#[doc = "**Chapter**: Queries"]
15329#[doc = "<br>"]
15330#[doc = "**Description**: Ends a query"]
15331#[doc = "<br>"]
15332#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15333#[doc = "<br>"]
15334#[doc = "**Reference**: [`vkCmdEndQuery`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdEndQuery.html)"]
15335pub type CmdEndQuery = unsafe extern "C" fn(
15336    command_buffer: CommandBuffer, //
15337    query_pool: QueryPool,         //
15338    query: u32,                    //
15339);
15340
15341#[doc = "**Chapter**: Queries"]
15342#[doc = "<br>"]
15343#[doc = "**Description**: Copy results of queries in a query pool to a host memory region"]
15344#[doc = "<br>"]
15345#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15346#[doc = "<br>"]
15347#[doc = "**Reference**: [`vkGetQueryPoolResults`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetQueryPoolResults.html)"]
15348pub type GetQueryPoolResults = unsafe extern "C" fn(
15349    device: Device,          //
15350    query_pool: QueryPool,   //
15351    first_query: u32,        //
15352    query_count: u32,        //
15353    data_size: usize,        //
15354    p_data: *mut c_void,     //
15355    stride: DeviceSize,      //
15356    flags: QueryResultFlags, //
15357) -> Result;
15358
15359#[doc = "**Chapter**: Queries"]
15360#[doc = "<br>"]
15361#[doc = "**Description**: Write a device timestamp into a query object"]
15362#[doc = "<br>"]
15363#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15364#[doc = "<br>"]
15365#[doc = "**Reference**: [`vkCmdWriteTimestamp2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdWriteTimestamp2.html)"]
15366pub type CmdWriteTimestamp2 = unsafe extern "C" fn(
15367    command_buffer: CommandBuffer, //
15368    stage: PipelineStageFlags2,    //
15369    query_pool: QueryPool,         //
15370    query: u32,                    //
15371);
15372
15373#[doc = "**Chapter**: Copy Commands"]
15374#[doc = "<br>"]
15375#[doc = "**Description**: Copy data between buffer regions"]
15376#[doc = "<br>"]
15377#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15378#[doc = "<br>"]
15379#[doc = "**Reference**: [`vkCmdCopyBuffer2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBuffer2.html)"]
15380pub type CmdCopyBuffer2 = unsafe extern "C" fn(
15381    command_buffer: CommandBuffer,              //
15382    p_copy_buffer_info: *const CopyBufferInfo2, //
15383);
15384
15385#[doc = "**Chapter**: Copy Commands"]
15386#[doc = "<br>"]
15387#[doc = "**Description**: Copy data between images"]
15388#[doc = "<br>"]
15389#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15390#[doc = "<br>"]
15391#[doc = "**Reference**: [`vkCmdCopyImage2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImage2.html)"]
15392pub type CmdCopyImage2 = unsafe extern "C" fn(
15393    command_buffer: CommandBuffer,            //
15394    p_copy_image_info: *const CopyImageInfo2, //
15395);
15396
15397#[doc = "**Chapter**: Copy Commands"]
15398#[doc = "<br>"]
15399#[doc = "**Description**: Copy data from a buffer into an image"]
15400#[doc = "<br>"]
15401#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15402#[doc = "<br>"]
15403#[doc = "**Reference**: [`vkCmdCopyBufferToImage2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBufferToImage2.html)"]
15404pub type CmdCopyBufferToImage2 = unsafe extern "C" fn(
15405    command_buffer: CommandBuffer,                              //
15406    p_copy_buffer_to_image_info: *const CopyBufferToImageInfo2, //
15407);
15408
15409#[doc = "**Chapter**: Copy Commands"]
15410#[doc = "<br>"]
15411#[doc = "**Description**: Copy image data into a buffer"]
15412#[doc = "<br>"]
15413#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15414#[doc = "<br>"]
15415#[doc = "**Reference**: [`vkCmdCopyImageToBuffer2`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImageToBuffer2.html)"]
15416pub type CmdCopyImageToBuffer2 = unsafe extern "C" fn(
15417    command_buffer: CommandBuffer,                              //
15418    p_copy_image_to_buffer_info: *const CopyImageToBufferInfo2, //
15419);
15420
15421#[doc = "**Chapter**: Drawing Commands"]
15422#[doc = "<br>"]
15423#[doc = "**Description**: Draw mesh task work items"]
15424#[doc = "<br>"]
15425#[doc = "**Provided by**: [`VK_EXT_mesh_shader`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)"]
15426#[doc = "<br>"]
15427#[doc = "**Reference**: [`vkCmdDrawMeshTasksEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksEXT.html)"]
15428pub type CmdDrawMeshTasksEXT = unsafe extern "C" fn(
15429    command_buffer: CommandBuffer, //
15430    group_count_x: u32,            //
15431    group_count_y: u32,            //
15432    group_count_z: u32,            //
15433);
15434
15435#[doc = "**Chapter**: Drawing Commands"]
15436#[doc = "<br>"]
15437#[doc = "**Description**: Issue an indirect mesh tasks draw into a command buffer"]
15438#[doc = "<br>"]
15439#[doc = "**Provided by**: [`VK_EXT_mesh_shader`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)"]
15440#[doc = "<br>"]
15441#[doc = "**Reference**: [`vkCmdDrawMeshTasksIndirectEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectEXT.html)"]
15442pub type CmdDrawMeshTasksIndirectEXT = unsafe extern "C" fn(
15443    command_buffer: CommandBuffer, //
15444    buffer: Buffer,                //
15445    offset: DeviceSize,            //
15446    draw_count: u32,               //
15447    stride: u32,                   //
15448);
15449
15450#[doc = "**Chapter**: Drawing Commands"]
15451#[doc = "<br>"]
15452#[doc = "**Description**: Perform an indirect mesh tasks draw with the draw count sourced from a buffer"]
15453#[doc = "<br>"]
15454#[doc = "**Provided by**: [`VK_EXT_mesh_shader`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)"]
15455#[doc = "<br>"]
15456#[doc = "**Reference**: [`vkCmdDrawMeshTasksIndirectCountEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html)"]
15457pub type CmdDrawMeshTasksIndirectCountEXT = unsafe extern "C" fn(
15458    command_buffer: CommandBuffer,   //
15459    buffer: Buffer,                  //
15460    offset: DeviceSize,              //
15461    count_buffer: Buffer,            //
15462    count_buffer_offset: DeviceSize, //
15463    max_draw_count: u32,             //
15464    stride: u32,                     //
15465);
15466
15467#[doc = "**Chapter**: Fixed-Function Vertex Post-Processing"]
15468#[doc = "<br>"]
15469#[doc = "**Description**: Set the viewport count and viewports dynamically for a command buffer"]
15470#[doc = "<br>"]
15471#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15472#[doc = "<br>"]
15473#[doc = "**Reference**: [`vkCmdSetViewportWithCount`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetViewportWithCount.html)"]
15474pub type CmdSetViewportWithCount = unsafe extern "C" fn(
15475    command_buffer: CommandBuffer, //
15476    viewport_count: u32,           //
15477    p_viewports: *const Viewport,  //
15478);
15479
15480#[doc = "**Chapter**: Fixed-Function Vertex Post-Processing"]
15481#[doc = "<br>"]
15482#[doc = "**Description**: Set the scissor count and scissor rectangular bounds dynamically for a command buffer"]
15483#[doc = "<br>"]
15484#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15485#[doc = "<br>"]
15486#[doc = "**Reference**: [`vkCmdSetScissorWithCount`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetScissorWithCount.html)"]
15487pub type CmdSetScissorWithCount = unsafe extern "C" fn(
15488    command_buffer: CommandBuffer, //
15489    scissor_count: u32,            //
15490    p_scissors: *const Rect2D,     //
15491);
15492
15493#[doc = "**Chapter**: Rasterization"]
15494#[doc = "<br>"]
15495#[doc = "**Description**: Specify the rasterization samples dynamically for a command buffer"]
15496#[doc = "<br>"]
15497#[doc = "**Provided by**: [`VK_EXT_extended_dynamic_state3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)"]
15498#[doc = "<br>"]
15499#[doc = "**Reference**: [`vkCmdSetRasterizationSamplesEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetRasterizationSamplesEXT.html)"]
15500pub type CmdSetRasterizationSamplesEXT = unsafe extern "C" fn(
15501    command_buffer: CommandBuffer,              //
15502    rasterization_samples: SampleCountFlagBits, //
15503);
15504
15505#[doc = "**Chapter**: Rasterization"]
15506#[doc = "<br>"]
15507#[doc = "**Description**: Set front face orientation dynamically for a command buffer"]
15508#[doc = "<br>"]
15509#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15510#[doc = "<br>"]
15511#[doc = "**Reference**: [`vkCmdSetFrontFace`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetFrontFace.html)"]
15512pub type CmdSetFrontFace = unsafe extern "C" fn(
15513    command_buffer: CommandBuffer, //
15514    front_face: FrontFace,         //
15515);
15516
15517#[doc = "**Chapter**: Rasterization"]
15518#[doc = "<br>"]
15519#[doc = "**Description**: Set cull mode dynamically for a command buffer"]
15520#[doc = "<br>"]
15521#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15522#[doc = "<br>"]
15523#[doc = "**Reference**: [`vkCmdSetCullMode`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetCullMode.html)"]
15524pub type CmdSetCullMode = unsafe extern "C" fn(
15525    command_buffer: CommandBuffer, //
15526    cull_mode: CullModeFlags,      //
15527);
15528
15529#[doc = "**Chapter**: Fragment Operations"]
15530#[doc = "<br>"]
15531#[doc = "**Description**: Set depth test enable dynamically for a command buffer"]
15532#[doc = "<br>"]
15533#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15534#[doc = "<br>"]
15535#[doc = "**Reference**: [`vkCmdSetDepthTestEnable`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthTestEnable.html)"]
15536pub type CmdSetDepthTestEnable = unsafe extern "C" fn(
15537    command_buffer: CommandBuffer, //
15538    depth_test_enable: Bool32,     //
15539);
15540
15541#[doc = "**Chapter**: Fragment Operations"]
15542#[doc = "<br>"]
15543#[doc = "**Description**: Set depth comparison operator dynamically for a command buffer"]
15544#[doc = "<br>"]
15545#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15546#[doc = "<br>"]
15547#[doc = "**Reference**: [`vkCmdSetDepthCompareOp`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthCompareOp.html)"]
15548pub type CmdSetDepthCompareOp = unsafe extern "C" fn(
15549    command_buffer: CommandBuffer, //
15550    depth_compare_op: CompareOp,   //
15551);
15552
15553#[doc = "**Chapter**: Fragment Operations"]
15554#[doc = "<br>"]
15555#[doc = "**Description**: Set depth write enable dynamically for a command buffer"]
15556#[doc = "<br>"]
15557#[doc = "**Provided by**: [`VK_VERSION_1_3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_3.html)"]
15558#[doc = "<br>"]
15559#[doc = "**Reference**: [`vkCmdSetDepthWriteEnable`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthWriteEnable.html)"]
15560pub type CmdSetDepthWriteEnable = unsafe extern "C" fn(
15561    command_buffer: CommandBuffer, //
15562    depth_write_enable: Bool32,    //
15563);
15564
15565#[doc = "**Chapter**: The Framebuffer"]
15566#[doc = "<br>"]
15567#[doc = "**Description**: Specify the pname:blendEnable for each attachment dynamically for a command buffer"]
15568#[doc = "<br>"]
15569#[doc = "**Provided by**: [`VK_EXT_extended_dynamic_state3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)"]
15570#[doc = "<br>"]
15571#[doc = "**Reference**: [`vkCmdSetColorBlendEnableEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorBlendEnableEXT.html)"]
15572pub type CmdSetColorBlendEnableEXT = unsafe extern "C" fn(
15573    command_buffer: CommandBuffer,        //
15574    first_attachment: u32,                //
15575    attachment_count: u32,                //
15576    p_color_blend_enables: *const Bool32, //
15577);
15578
15579#[doc = "**Chapter**: The Framebuffer"]
15580#[doc = "<br>"]
15581#[doc = "**Description**: Specify the blend factors and operations dynamically for a command buffer"]
15582#[doc = "<br>"]
15583#[doc = "**Provided by**: [`VK_EXT_extended_dynamic_state3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)"]
15584#[doc = "<br>"]
15585#[doc = "**Reference**: [`vkCmdSetColorBlendEquationEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorBlendEquationEXT.html)"]
15586pub type CmdSetColorBlendEquationEXT = unsafe extern "C" fn(
15587    command_buffer: CommandBuffer,                         //
15588    first_attachment: u32,                                 //
15589    attachment_count: u32,                                 //
15590    p_color_blend_equations: *const ColorBlendEquationEXT, //
15591);
15592
15593#[doc = "**Chapter**: The Framebuffer"]
15594#[doc = "<br>"]
15595#[doc = "**Description**: Specify the color write masks for each attachment dynamically for a command buffer"]
15596#[doc = "<br>"]
15597#[doc = "**Provided by**: [`VK_EXT_extended_dynamic_state3`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)"]
15598#[doc = "<br>"]
15599#[doc = "**Reference**: [`vkCmdSetColorWriteMaskEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorWriteMaskEXT.html)"]
15600pub type CmdSetColorWriteMaskEXT = unsafe extern "C" fn(
15601    command_buffer: CommandBuffer,                   //
15602    first_attachment: u32,                           //
15603    attachment_count: u32,                           //
15604    p_color_write_masks: *const ColorComponentFlags, //
15605);
15606
15607#[doc = "**Chapter**: Dispatching Commands"]
15608#[doc = "<br>"]
15609#[doc = "**Description**: Dispatch compute work items"]
15610#[doc = "<br>"]
15611#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15612#[doc = "<br>"]
15613#[doc = "**Reference**: [`vkCmdDispatch`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDispatch.html)"]
15614pub type CmdDispatch = unsafe extern "C" fn(
15615    command_buffer: CommandBuffer, //
15616    group_count_x: u32,            //
15617    group_count_y: u32,            //
15618    group_count_z: u32,            //
15619);
15620
15621#[doc = "**Chapter**: Dispatching Commands"]
15622#[doc = "<br>"]
15623#[doc = "**Description**: Dispatch compute work items with indirect parameters"]
15624#[doc = "<br>"]
15625#[doc = "**Provided by**: [`VK_VERSION_1_0`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_VERSION_1_0.html)"]
15626#[doc = "<br>"]
15627#[doc = "**Reference**: [`vkCmdDispatchIndirect`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDispatchIndirect.html)"]
15628pub type CmdDispatchIndirect = unsafe extern "C" fn(
15629    command_buffer: CommandBuffer, //
15630    buffer: Buffer,                //
15631    offset: DeviceSize,            //
15632);
15633
15634#[doc = "**Chapter**: Window System Integration (WSI)"]
15635#[doc = "<br>"]
15636#[doc = "**Description**: Create a VkSurfaceKHR object for an Win32 native window"]
15637#[doc = "<br>"]
15638#[doc = "**Provided by**: [`VK_KHR_win32_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_win32_surface.html)"]
15639#[doc = "<br>"]
15640#[doc = "**Reference**: [`vkCreateWin32SurfaceKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateWin32SurfaceKHR.html)"]
15641pub type CreateWin32SurfaceKHR = unsafe extern "C" fn(
15642    instance: Instance,                              //
15643    p_create_info: *const Win32SurfaceCreateInfoKHR, //
15644    p_allocator: *const AllocationCallbacks,         //
15645    p_surface: *mut SurfaceKHR,                      //
15646) -> Result;
15647
15648#[doc = "**Chapter**: Window System Integration (WSI)"]
15649#[doc = "<br>"]
15650#[doc = "**Description**: Destroy a VkSurfaceKHR object"]
15651#[doc = "<br>"]
15652#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
15653#[doc = "<br>"]
15654#[doc = "**Reference**: [`vkDestroySurfaceKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroySurfaceKHR.html)"]
15655pub type DestroySurfaceKHR = unsafe extern "C" fn(
15656    instance: Instance,                      //
15657    surface: SurfaceKHR,                     //
15658    p_allocator: *const AllocationCallbacks, //
15659);
15660
15661#[doc = "**Chapter**: Window System Integration (WSI)"]
15662#[doc = "<br>"]
15663#[doc = "**Description**: Query if presentation is supported"]
15664#[doc = "<br>"]
15665#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
15666#[doc = "<br>"]
15667#[doc = "**Reference**: [`vkGetPhysicalDeviceSurfaceSupportKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html)"]
15668pub type GetPhysicalDeviceSurfaceSupportKHR = unsafe extern "C" fn(
15669    physical_device: PhysicalDevice, //
15670    queue_family_index: u32,         //
15671    surface: SurfaceKHR,             //
15672    p_supported: *mut Bool32,        //
15673) -> Result;
15674
15675#[doc = "**Chapter**: Window System Integration (WSI)"]
15676#[doc = "<br>"]
15677#[doc = "**Description**: Query surface capabilities"]
15678#[doc = "<br>"]
15679#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
15680#[doc = "<br>"]
15681#[doc = "**Reference**: [`vkGetPhysicalDeviceSurfaceCapabilitiesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html)"]
15682pub type GetPhysicalDeviceSurfaceCapabilitiesKHR = unsafe extern "C" fn(
15683    physical_device: PhysicalDevice,                     //
15684    surface: SurfaceKHR,                                 //
15685    p_surface_capabilities: *mut SurfaceCapabilitiesKHR, //
15686) -> Result;
15687
15688#[doc = "**Chapter**: Window System Integration (WSI)"]
15689#[doc = "<br>"]
15690#[doc = "**Description**: Query color formats supported by surface"]
15691#[doc = "<br>"]
15692#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
15693#[doc = "<br>"]
15694#[doc = "**Reference**: [`vkGetPhysicalDeviceSurfaceFormatsKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html)"]
15695pub type GetPhysicalDeviceSurfaceFormatsKHR = unsafe extern "C" fn(
15696    physical_device: PhysicalDevice,          //
15697    surface: SurfaceKHR,                      //
15698    p_surface_format_count: *mut u32,         //
15699    p_surface_formats: *mut SurfaceFormatKHR, //
15700) -> Result;
15701
15702#[doc = "**Chapter**: Window System Integration (WSI)"]
15703#[doc = "<br>"]
15704#[doc = "**Description**: Query supported presentation modes"]
15705#[doc = "<br>"]
15706#[doc = "**Provided by**: [`VK_KHR_surface`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_surface.html)"]
15707#[doc = "<br>"]
15708#[doc = "**Reference**: [`vkGetPhysicalDeviceSurfacePresentModesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html)"]
15709pub type GetPhysicalDeviceSurfacePresentModesKHR = unsafe extern "C" fn(
15710    physical_device: PhysicalDevice,      //
15711    surface: SurfaceKHR,                  //
15712    p_present_mode_count: *mut u32,       //
15713    p_present_modes: *mut PresentModeKHR, //
15714) -> Result;
15715
15716#[doc = "**Chapter**: Window System Integration (WSI)"]
15717#[doc = "<br>"]
15718#[doc = "**Description**: Create a swapchain"]
15719#[doc = "<br>"]
15720#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
15721#[doc = "<br>"]
15722#[doc = "**Reference**: [`vkCreateSwapchainKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateSwapchainKHR.html)"]
15723pub type CreateSwapchainKHR = unsafe extern "C" fn(
15724    device: Device,                               //
15725    p_create_info: *const SwapchainCreateInfoKHR, //
15726    p_allocator: *const AllocationCallbacks,      //
15727    p_swapchain: *mut SwapchainKHR,               //
15728) -> Result;
15729
15730#[doc = "**Chapter**: Window System Integration (WSI)"]
15731#[doc = "<br>"]
15732#[doc = "**Description**: Destroy a swapchain object"]
15733#[doc = "<br>"]
15734#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
15735#[doc = "<br>"]
15736#[doc = "**Reference**: [`vkDestroySwapchainKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroySwapchainKHR.html)"]
15737pub type DestroySwapchainKHR = unsafe extern "C" fn(
15738    device: Device,                          //
15739    swapchain: SwapchainKHR,                 //
15740    p_allocator: *const AllocationCallbacks, //
15741);
15742
15743#[doc = "**Chapter**: Window System Integration (WSI)"]
15744#[doc = "<br>"]
15745#[doc = "**Description**: Obtain the array of presentable images associated with a swapchain"]
15746#[doc = "<br>"]
15747#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
15748#[doc = "<br>"]
15749#[doc = "**Reference**: [`vkGetSwapchainImagesKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetSwapchainImagesKHR.html)"]
15750pub type GetSwapchainImagesKHR = unsafe extern "C" fn(
15751    device: Device,                    //
15752    swapchain: SwapchainKHR,           //
15753    p_swapchain_image_count: *mut u32, //
15754    p_swapchain_images: *mut Image,    //
15755) -> Result;
15756
15757#[doc = "**Chapter**: Window System Integration (WSI)"]
15758#[doc = "<br>"]
15759#[doc = "**Description**: Retrieve the index of the next available presentable image"]
15760#[doc = "<br>"]
15761#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
15762#[doc = "<br>"]
15763#[doc = "**Reference**: [`vkAcquireNextImage2KHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAcquireNextImage2KHR.html)"]
15764pub type AcquireNextImage2KHR = unsafe extern "C" fn(
15765    device: Device,                                 //
15766    p_acquire_info: *const AcquireNextImageInfoKHR, //
15767    p_image_index: *mut u32,                        //
15768) -> Result;
15769
15770#[doc = "**Chapter**: Window System Integration (WSI)"]
15771#[doc = "<br>"]
15772#[doc = "**Description**: Queue an image for presentation"]
15773#[doc = "<br>"]
15774#[doc = "**Provided by**: [`VK_KHR_swapchain`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)"]
15775#[doc = "<br>"]
15776#[doc = "**Reference**: [`vkQueuePresentKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkQueuePresentKHR.html)"]
15777pub type QueuePresentKHR = unsafe extern "C" fn(
15778    queue: Queue,                          //
15779    p_present_info: *const PresentInfoKHR, //
15780) -> Result;
15781
15782#[doc = "**Chapter**: Acceleration Structures"]
15783#[doc = "<br>"]
15784#[doc = "**Description**: Build an acceleration structure"]
15785#[doc = "<br>"]
15786#[doc = "**Provided by**: [`VK_KHR_acceleration_structure`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_acceleration_structure.html)"]
15787#[doc = "<br>"]
15788#[doc = "**Reference**: [`vkCmdBuildAccelerationStructuresKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBuildAccelerationStructuresKHR.html)"]
15789pub type CmdBuildAccelerationStructuresKHR = unsafe extern "C" fn(
15790    command_buffer: CommandBuffer,                                              //
15791    info_count: u32,                                                            //
15792    p_infos: *const AccelerationStructureBuildGeometryInfoKHR,                  //
15793    pp_build_range_infos: *const *const AccelerationStructureBuildRangeInfoKHR, //
15794);
15795
15796#[doc = "**Chapter**: Ray Tracing"]
15797#[doc = "<br>"]
15798#[doc = "**Description**: Initialize a ray tracing dispatch"]
15799#[doc = "<br>"]
15800#[doc = "**Provided by**: [`VK_KHR_ray_tracing_pipeline`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)"]
15801#[doc = "<br>"]
15802#[doc = "**Reference**: [`vkCmdTraceRaysKHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdTraceRaysKHR.html)"]
15803pub type CmdTraceRaysKHR = unsafe extern "C" fn(
15804    command_buffer: CommandBuffer,                                         //
15805    p_raygen_shader_binding_table: *const StridedDeviceAddressRegionKHR,   //
15806    p_miss_shader_binding_table: *const StridedDeviceAddressRegionKHR,     //
15807    p_hit_shader_binding_table: *const StridedDeviceAddressRegionKHR,      //
15808    p_callable_shader_binding_table: *const StridedDeviceAddressRegionKHR, //
15809    width: u32,                                                            //
15810    height: u32,                                                           //
15811    depth: u32,                                                            //
15812);
15813
15814#[doc = "**Chapter**: Ray Tracing"]
15815#[doc = "<br>"]
15816#[doc = "**Description**: Initialize an indirect ray tracing dispatch with indirect shader binding tables"]
15817#[doc = "<br>"]
15818#[doc = "**Provided by**: [`VK_KHR_ray_tracing_maintenance1`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_maintenance1.html)"]
15819#[doc = "<br>"]
15820#[doc = "**Reference**: [`vkCmdTraceRaysIndirect2KHR`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdTraceRaysIndirect2KHR.html)"]
15821pub type CmdTraceRaysIndirect2KHR = unsafe extern "C" fn(
15822    command_buffer: CommandBuffer,          //
15823    indirect_device_address: DeviceAddress, //
15824);
15825
15826#[doc = "**Chapter**: Additional Capabilities"]
15827#[doc = "<br>"]
15828#[doc = "**Description**: Query calibrateable time domains"]
15829#[doc = "<br>"]
15830#[doc = "**Provided by**: [`VK_EXT_calibrated_timestamps`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_calibrated_timestamps.html)"]
15831#[doc = "<br>"]
15832#[doc = "**Reference**: [`vkGetPhysicalDeviceCalibrateableTimeDomainsEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html)"]
15833pub type GetPhysicalDeviceCalibrateableTimeDomainsEXT = unsafe extern "C" fn(
15834    physical_device: PhysicalDevice,    //
15835    p_time_domain_count: *mut u32,      //
15836    p_time_domains: *mut TimeDomainEXT, //
15837) -> Result;
15838
15839#[doc = "**Chapter**: Debugging"]
15840#[doc = "<br>"]
15841#[doc = "**Description**: Create a debug messenger object"]
15842#[doc = "<br>"]
15843#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
15844#[doc = "<br>"]
15845#[doc = "**Reference**: [`vkCreateDebugUtilsMessengerEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDebugUtilsMessengerEXT.html)"]
15846pub type CreateDebugUtilsMessengerEXT = unsafe extern "C" fn(
15847    instance: Instance,                                     //
15848    p_create_info: *const DebugUtilsMessengerCreateInfoEXT, //
15849    p_allocator: *const AllocationCallbacks,                //
15850    p_messenger: *mut DebugUtilsMessengerEXT,               //
15851) -> Result;
15852
15853#[doc = "**Chapter**: Debugging"]
15854#[doc = "<br>"]
15855#[doc = "**Description**: Destroy a debug messenger object"]
15856#[doc = "<br>"]
15857#[doc = "**Provided by**: [`VK_EXT_debug_utils`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html)"]
15858#[doc = "<br>"]
15859#[doc = "**Reference**: [`vkDestroyDebugUtilsMessengerEXT`](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyDebugUtilsMessengerEXT.html)"]
15860pub type DestroyDebugUtilsMessengerEXT = unsafe extern "C" fn(
15861    instance: Instance,                      //
15862    messenger: DebugUtilsMessengerEXT,       //
15863    p_allocator: *const AllocationCallbacks, //
15864);
15865
15866//
15867// Internal
15868//
15869
15870fn display_flag_bits_u32<FlagBit>(f: &mut std::fmt::Formatter<'_>, flags: u32, flag_bits: &[FlagBit]) -> std::fmt::Result
15871where
15872    FlagBit: std::fmt::Debug + Into<u32> + Copy,
15873{
15874    let mut count = 0;
15875    let mut remaining = flags;
15876    for &flag_bit in flag_bits {
15877        if flags & flag_bit.into() > 0 {
15878            if count > 0 {
15879                write!(f, " | ")?;
15880            }
15881            write!(f, "{flag_bit:?}")?;
15882            remaining &= !flag_bit.into();
15883            count += 1;
15884        }
15885    }
15886    if remaining != 0 {
15887        if count > 0 {
15888            write!(f, " | ")?;
15889        }
15890        write!(f, "0b{remaining:b}")?;
15891    }
15892    Ok(())
15893}
15894
15895fn display_flag_bits_u64<FlagBit>(f: &mut std::fmt::Formatter<'_>, flags: u64, flag_bits: &[FlagBit]) -> std::fmt::Result
15896where
15897    FlagBit: std::fmt::Debug + Into<u64> + Copy,
15898{
15899    let mut count = 0;
15900    let mut remaining = flags;
15901    for &flag_bit in flag_bits {
15902        if flags & flag_bit.into() > 0 {
15903            if count > 0 {
15904                write!(f, " | ")?;
15905            }
15906            write!(f, "{flag_bit:?}")?;
15907            remaining &= !flag_bit.into();
15908            count += 1;
15909        }
15910    }
15911    if remaining != 0 {
15912        if count > 0 {
15913            write!(f, " | ")?;
15914        }
15915        write!(f, "0b{remaining:b}")?;
15916    }
15917    Ok(())
15918}