1use std::ffi::{c_char, c_void};
6
7#[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#[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#[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#[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#[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#[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#[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#[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#[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#[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, p_name: *const c_char, ) -> 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, p_name: *const c_char, ) -> 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, p_allocator: *const AllocationCallbacks, p_instance: *mut Instance, ) -> 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, p_allocator: *const AllocationCallbacks, );
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, p_physical_device_count: *mut u32, p_physical_devices: *mut PhysicalDevice, ) -> 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, p_properties: *mut PhysicalDeviceProperties2, );
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, p_queue_family_property_count: *mut u32, p_queue_family_properties: *mut QueueFamilyProperties2, );
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, p_create_info: *const DeviceCreateInfo, p_allocator: *const AllocationCallbacks, p_device: *mut Device, ) -> 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, p_allocator: *const AllocationCallbacks, );
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, p_queue_info: *const DeviceQueueInfo2, p_queue: *mut Queue, );
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, p_create_info: *const CommandPoolCreateInfo, p_allocator: *const AllocationCallbacks, p_command_pool: *mut CommandPool, ) -> 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, command_pool: CommandPool, flags: CommandPoolResetFlags, ) -> 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, command_pool: CommandPool, p_allocator: *const AllocationCallbacks, );
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, p_allocate_info: *const CommandBufferAllocateInfo, p_command_buffers: *mut CommandBuffer, ) -> 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, flags: CommandBufferResetFlags, ) -> 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, command_pool: CommandPool, command_buffer_count: u32, p_command_buffers: *const CommandBuffer, );
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, p_begin_info: *const CommandBufferBeginInfo, ) -> 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, ) -> 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, submit_count: u32, p_submits: *const SubmitInfo2, fence: Fence, ) -> 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, p_create_info: *const SemaphoreCreateInfo, p_allocator: *const AllocationCallbacks, p_semaphore: *mut Semaphore, ) -> 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, semaphore: Semaphore, p_allocator: *const AllocationCallbacks, );
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, semaphore: Semaphore, p_value: *mut u64, ) -> 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, p_wait_info: *const SemaphoreWaitInfo, timeout: u64, ) -> 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, p_signal_info: *const SemaphoreSignalInfo, ) -> 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, p_dependency_info: *const DependencyInfo, );
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, ) -> 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, ) -> 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, timestamp_count: u32, p_timestamp_infos: *const CalibratedTimestampInfoEXT, p_timestamps: *mut u64, p_max_deviation: *mut u64, ) -> 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, p_rendering_info: *const RenderingInfo, );
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, );
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, create_info_count: u32, p_create_infos: *const ShaderCreateInfoEXT, p_allocator: *const AllocationCallbacks, p_shaders: *mut ShaderEXT, ) -> 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, stage_count: u32, p_stages: *const ShaderStageFlagBits, p_shaders: *const ShaderEXT, );
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, shader: ShaderEXT, p_allocator: *const AllocationCallbacks, );
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, p_create_info: *const ShaderModuleCreateInfo, p_allocator: *const AllocationCallbacks, p_shader_module: *mut ShaderModule, ) -> 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, shader_module: ShaderModule, p_allocator: *const AllocationCallbacks, );
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, deferred_operation: DeferredOperationKHR, pipeline_cache: PipelineCache, create_info_count: u32, p_create_infos: *const RayTracingPipelineCreateInfoKHR, p_allocator: *const AllocationCallbacks, p_pipelines: *mut Pipeline, ) -> 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, pipeline: Pipeline, first_group: u32, group_count: u32, data_size: usize, p_data: *mut c_void, ) -> 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, pipeline: Pipeline, p_allocator: *const AllocationCallbacks, );
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, pipeline_bind_point: PipelineBindPoint, pipeline: Pipeline, );
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, p_memory_properties: *mut PhysicalDeviceMemoryProperties2, );
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, p_allocate_info: *const MemoryAllocateInfo, p_allocator: *const AllocationCallbacks, p_memory: *mut DeviceMemory, ) -> 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, memory: DeviceMemory, p_allocator: *const AllocationCallbacks, );
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, p_memory_map_info: *const MemoryMapInfoKHR, pp_data: *mut *mut c_void, ) -> 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, p_memory_unmap_info: *const MemoryUnmapInfoKHR, ) -> 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, p_create_info: *const BufferCreateInfo, p_allocator: *const AllocationCallbacks, p_buffer: *mut Buffer, ) -> 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, buffer: Buffer, p_allocator: *const AllocationCallbacks, );
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, p_create_info: *const ImageCreateInfo, p_allocator: *const AllocationCallbacks, p_image: *mut Image, ) -> 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, image: Image, p_allocator: *const AllocationCallbacks, );
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, p_create_info: *const ImageViewCreateInfo, p_allocator: *const AllocationCallbacks, p_view: *mut ImageView, ) -> 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, image_view: ImageView, p_allocator: *const AllocationCallbacks, );
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, p_create_info: *const AccelerationStructureCreateInfoKHR, p_allocator: *const AllocationCallbacks, p_acceleration_structure: *mut AccelerationStructureKHR, ) -> 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, build_type: AccelerationStructureBuildTypeKHR, p_build_info: *const AccelerationStructureBuildGeometryInfoKHR, p_max_primitive_counts: *const u32, p_size_info: *mut AccelerationStructureBuildSizesInfoKHR, );
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, acceleration_structure: AccelerationStructureKHR, p_allocator: *const AllocationCallbacks, );
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, p_info: *const AccelerationStructureDeviceAddressInfoKHR, ) -> 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, p_info: *const DeviceBufferMemoryRequirements, p_memory_requirements: *mut MemoryRequirements2, );
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, p_info: *const DeviceImageMemoryRequirements, p_memory_requirements: *mut MemoryRequirements2, );
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, bind_info_count: u32, p_bind_infos: *const BindBufferMemoryInfo, ) -> 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, bind_info_count: u32, p_bind_infos: *const BindImageMemoryInfo, ) -> 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, p_create_info: *const SamplerCreateInfo, p_allocator: *const AllocationCallbacks, p_sampler: *mut Sampler, ) -> 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, sampler: Sampler, p_allocator: *const AllocationCallbacks, );
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, p_create_info: *const DescriptorSetLayoutCreateInfo, p_allocator: *const AllocationCallbacks, p_set_layout: *mut DescriptorSetLayout, ) -> 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, descriptor_set_layout: DescriptorSetLayout, p_allocator: *const AllocationCallbacks, );
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, p_create_info: *const PipelineLayoutCreateInfo, p_allocator: *const AllocationCallbacks, p_pipeline_layout: *mut PipelineLayout, ) -> 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, pipeline_layout: PipelineLayout, p_allocator: *const AllocationCallbacks, );
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, layout: PipelineLayout, stage_flags: ShaderStageFlags, offset: u32, size: u32, p_values: *const c_void, );
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, p_info: *const BufferDeviceAddressInfo, ) -> 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, layout: DescriptorSetLayout, p_layout_size_in_bytes: *mut DeviceSize, );
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, layout: DescriptorSetLayout, binding: u32, p_offset: *mut DeviceSize, );
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, p_descriptor_info: *const DescriptorGetInfoEXT, data_size: usize, p_descriptor: *mut c_void, );
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, buffer_count: u32, p_binding_infos: *const DescriptorBufferBindingInfoEXT, );
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, pipeline_bind_point: PipelineBindPoint, layout: PipelineLayout, first_set: u32, set_count: u32, p_buffer_indices: *const u32, p_offsets: *const DeviceSize, );
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, p_create_info: *const QueryPoolCreateInfo, p_allocator: *const AllocationCallbacks, p_query_pool: *mut QueryPool, ) -> 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, query_pool: QueryPool, p_allocator: *const AllocationCallbacks, );
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, query_pool: QueryPool, first_query: u32, query_count: u32, );
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, query_pool: QueryPool, query: u32, flags: QueryControlFlags, );
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, query_pool: QueryPool, query: u32, );
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, query_pool: QueryPool, first_query: u32, query_count: u32, data_size: usize, p_data: *mut c_void, stride: DeviceSize, flags: QueryResultFlags, ) -> 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, stage: PipelineStageFlags2, query_pool: QueryPool, query: u32, );
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, p_copy_buffer_info: *const CopyBufferInfo2, );
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, p_copy_image_info: *const CopyImageInfo2, );
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, p_copy_buffer_to_image_info: *const CopyBufferToImageInfo2, );
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, p_copy_image_to_buffer_info: *const CopyImageToBufferInfo2, );
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, group_count_x: u32, group_count_y: u32, group_count_z: u32, );
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, buffer: Buffer, offset: DeviceSize, draw_count: u32, stride: u32, );
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, buffer: Buffer, offset: DeviceSize, count_buffer: Buffer, count_buffer_offset: DeviceSize, max_draw_count: u32, stride: u32, );
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, viewport_count: u32, p_viewports: *const Viewport, );
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, scissor_count: u32, p_scissors: *const Rect2D, );
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, rasterization_samples: SampleCountFlagBits, );
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, front_face: FrontFace, );
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, cull_mode: CullModeFlags, );
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, depth_test_enable: Bool32, );
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, depth_compare_op: CompareOp, );
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, depth_write_enable: Bool32, );
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, first_attachment: u32, attachment_count: u32, p_color_blend_enables: *const Bool32, );
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, first_attachment: u32, attachment_count: u32, p_color_blend_equations: *const ColorBlendEquationEXT, );
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, first_attachment: u32, attachment_count: u32, p_color_write_masks: *const ColorComponentFlags, );
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, group_count_x: u32, group_count_y: u32, group_count_z: u32, );
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, buffer: Buffer, offset: DeviceSize, );
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, p_create_info: *const Win32SurfaceCreateInfoKHR, p_allocator: *const AllocationCallbacks, p_surface: *mut SurfaceKHR, ) -> 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, surface: SurfaceKHR, p_allocator: *const AllocationCallbacks, );
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, queue_family_index: u32, surface: SurfaceKHR, p_supported: *mut Bool32, ) -> 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, surface: SurfaceKHR, p_surface_capabilities: *mut SurfaceCapabilitiesKHR, ) -> 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, surface: SurfaceKHR, p_surface_format_count: *mut u32, p_surface_formats: *mut SurfaceFormatKHR, ) -> 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, surface: SurfaceKHR, p_present_mode_count: *mut u32, p_present_modes: *mut PresentModeKHR, ) -> 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, p_create_info: *const SwapchainCreateInfoKHR, p_allocator: *const AllocationCallbacks, p_swapchain: *mut SwapchainKHR, ) -> 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, swapchain: SwapchainKHR, p_allocator: *const AllocationCallbacks, );
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, swapchain: SwapchainKHR, p_swapchain_image_count: *mut u32, p_swapchain_images: *mut Image, ) -> 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, p_acquire_info: *const AcquireNextImageInfoKHR, p_image_index: *mut u32, ) -> 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, p_present_info: *const PresentInfoKHR, ) -> 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, info_count: u32, p_infos: *const AccelerationStructureBuildGeometryInfoKHR, pp_build_range_infos: *const *const AccelerationStructureBuildRangeInfoKHR, );
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, p_raygen_shader_binding_table: *const StridedDeviceAddressRegionKHR, p_miss_shader_binding_table: *const StridedDeviceAddressRegionKHR, p_hit_shader_binding_table: *const StridedDeviceAddressRegionKHR, p_callable_shader_binding_table: *const StridedDeviceAddressRegionKHR, width: u32, height: u32, depth: u32, );
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, indirect_device_address: DeviceAddress, );
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, p_time_domain_count: *mut u32, p_time_domains: *mut TimeDomainEXT, ) -> 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, p_create_info: *const DebugUtilsMessengerCreateInfoEXT, p_allocator: *const AllocationCallbacks, p_messenger: *mut DebugUtilsMessengerEXT, ) -> 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, messenger: DebugUtilsMessengerEXT, p_allocator: *const AllocationCallbacks, );
15865
15866fn 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}