ash/vk/
bitflags.rs

1use crate::vk::definitions::*;
2#[repr(transparent)]
3#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
4#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheCreateFlagBits.html>"]
5pub struct PipelineCacheCreateFlags(pub(crate) Flags);
6vk_bitflags_wrapped!(PipelineCacheCreateFlags, Flags);
7impl PipelineCacheCreateFlags {}
8#[repr(transparent)]
9#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
10#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html>"]
11pub struct QueueFlags(pub(crate) Flags);
12vk_bitflags_wrapped!(QueueFlags, Flags);
13impl QueueFlags {
14    #[doc = "Queue supports graphics operations"]
15    pub const GRAPHICS: Self = Self(0b1);
16    #[doc = "Queue supports compute operations"]
17    pub const COMPUTE: Self = Self(0b10);
18    #[doc = "Queue supports transfer operations"]
19    pub const TRANSFER: Self = Self(0b100);
20    #[doc = "Queue supports sparse resource memory management operations"]
21    pub const SPARSE_BINDING: Self = Self(0b1000);
22}
23#[repr(transparent)]
24#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
25#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCullModeFlagBits.html>"]
26pub struct CullModeFlags(pub(crate) Flags);
27vk_bitflags_wrapped!(CullModeFlags, Flags);
28impl CullModeFlags {
29    pub const NONE: Self = Self(0);
30    pub const FRONT: Self = Self(0b1);
31    pub const BACK: Self = Self(0b10);
32    pub const FRONT_AND_BACK: Self = Self(0x0000_0003);
33}
34#[repr(transparent)]
35#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
36#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderPassCreateFlagBits.html>"]
37pub struct RenderPassCreateFlags(pub(crate) Flags);
38vk_bitflags_wrapped!(RenderPassCreateFlags, Flags);
39impl RenderPassCreateFlags {}
40#[repr(transparent)]
41#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
42#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateFlagBits.html>"]
43pub struct DeviceQueueCreateFlags(pub(crate) Flags);
44vk_bitflags_wrapped!(DeviceQueueCreateFlags, Flags);
45impl DeviceQueueCreateFlags {}
46#[repr(transparent)]
47#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
48#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html>"]
49pub struct MemoryPropertyFlags(pub(crate) Flags);
50vk_bitflags_wrapped!(MemoryPropertyFlags, Flags);
51impl MemoryPropertyFlags {
52    #[doc = "If otherwise stated, then allocate memory on device"]
53    pub const DEVICE_LOCAL: Self = Self(0b1);
54    #[doc = "Memory is mappable by host"]
55    pub const HOST_VISIBLE: Self = Self(0b10);
56    #[doc = "Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"]
57    pub const HOST_COHERENT: Self = Self(0b100);
58    #[doc = "Memory will be cached by the host"]
59    pub const HOST_CACHED: Self = Self(0b1000);
60    #[doc = "Memory may be allocated by the driver when it is required"]
61    pub const LAZILY_ALLOCATED: Self = Self(0b1_0000);
62}
63#[repr(transparent)]
64#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
65#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryHeapFlagBits.html>"]
66pub struct MemoryHeapFlags(pub(crate) Flags);
67vk_bitflags_wrapped!(MemoryHeapFlags, Flags);
68impl MemoryHeapFlags {
69    #[doc = "If set, heap represents device memory"]
70    pub const DEVICE_LOCAL: Self = Self(0b1);
71}
72#[repr(transparent)]
73#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
74#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccessFlagBits.html>"]
75pub struct AccessFlags(pub(crate) Flags);
76vk_bitflags_wrapped!(AccessFlags, Flags);
77impl AccessFlags {
78    #[doc = "Controls coherency of indirect command reads"]
79    pub const INDIRECT_COMMAND_READ: Self = Self(0b1);
80    #[doc = "Controls coherency of index reads"]
81    pub const INDEX_READ: Self = Self(0b10);
82    #[doc = "Controls coherency of vertex attribute reads"]
83    pub const VERTEX_ATTRIBUTE_READ: Self = Self(0b100);
84    #[doc = "Controls coherency of uniform buffer reads"]
85    pub const UNIFORM_READ: Self = Self(0b1000);
86    #[doc = "Controls coherency of input attachment reads"]
87    pub const INPUT_ATTACHMENT_READ: Self = Self(0b1_0000);
88    #[doc = "Controls coherency of shader reads"]
89    pub const SHADER_READ: Self = Self(0b10_0000);
90    #[doc = "Controls coherency of shader writes"]
91    pub const SHADER_WRITE: Self = Self(0b100_0000);
92    #[doc = "Controls coherency of color attachment reads"]
93    pub const COLOR_ATTACHMENT_READ: Self = Self(0b1000_0000);
94    #[doc = "Controls coherency of color attachment writes"]
95    pub const COLOR_ATTACHMENT_WRITE: Self = Self(0b1_0000_0000);
96    #[doc = "Controls coherency of depth/stencil attachment reads"]
97    pub const DEPTH_STENCIL_ATTACHMENT_READ: Self = Self(0b10_0000_0000);
98    #[doc = "Controls coherency of depth/stencil attachment writes"]
99    pub const DEPTH_STENCIL_ATTACHMENT_WRITE: Self = Self(0b100_0000_0000);
100    #[doc = "Controls coherency of transfer reads"]
101    pub const TRANSFER_READ: Self = Self(0b1000_0000_0000);
102    #[doc = "Controls coherency of transfer writes"]
103    pub const TRANSFER_WRITE: Self = Self(0b1_0000_0000_0000);
104    #[doc = "Controls coherency of host reads"]
105    pub const HOST_READ: Self = Self(0b10_0000_0000_0000);
106    #[doc = "Controls coherency of host writes"]
107    pub const HOST_WRITE: Self = Self(0b100_0000_0000_0000);
108    #[doc = "Controls coherency of memory reads"]
109    pub const MEMORY_READ: Self = Self(0b1000_0000_0000_0000);
110    #[doc = "Controls coherency of memory writes"]
111    pub const MEMORY_WRITE: Self = Self(0b1_0000_0000_0000_0000);
112}
113#[repr(transparent)]
114#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
115#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html>"]
116pub struct BufferUsageFlags(pub(crate) Flags);
117vk_bitflags_wrapped!(BufferUsageFlags, Flags);
118impl BufferUsageFlags {
119    #[doc = "Can be used as a source of transfer operations"]
120    pub const TRANSFER_SRC: Self = Self(0b1);
121    #[doc = "Can be used as a destination of transfer operations"]
122    pub const TRANSFER_DST: Self = Self(0b10);
123    #[doc = "Can be used as TBO"]
124    pub const UNIFORM_TEXEL_BUFFER: Self = Self(0b100);
125    #[doc = "Can be used as IBO"]
126    pub const STORAGE_TEXEL_BUFFER: Self = Self(0b1000);
127    #[doc = "Can be used as UBO"]
128    pub const UNIFORM_BUFFER: Self = Self(0b1_0000);
129    #[doc = "Can be used as SSBO"]
130    pub const STORAGE_BUFFER: Self = Self(0b10_0000);
131    #[doc = "Can be used as source of fixed-function index fetch (index buffer)"]
132    pub const INDEX_BUFFER: Self = Self(0b100_0000);
133    #[doc = "Can be used as source of fixed-function vertex fetch (VBO)"]
134    pub const VERTEX_BUFFER: Self = Self(0b1000_0000);
135    #[doc = "Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)"]
136    pub const INDIRECT_BUFFER: Self = Self(0b1_0000_0000);
137}
138#[repr(transparent)]
139#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
140#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits2KHR.html>"]
141pub struct BufferUsageFlags2KHR(pub(crate) Flags64);
142vk_bitflags_wrapped!(BufferUsageFlags2KHR, Flags64);
143impl BufferUsageFlags2KHR {
144    pub const TRANSFER_SRC: Self = Self(0b1);
145    pub const TRANSFER_DST: Self = Self(0b10);
146    pub const UNIFORM_TEXEL_BUFFER: Self = Self(0b100);
147    pub const STORAGE_TEXEL_BUFFER: Self = Self(0b1000);
148    pub const UNIFORM_BUFFER: Self = Self(0b1_0000);
149    pub const STORAGE_BUFFER: Self = Self(0b10_0000);
150    pub const INDEX_BUFFER: Self = Self(0b100_0000);
151    pub const VERTEX_BUFFER: Self = Self(0b1000_0000);
152    pub const INDIRECT_BUFFER: Self = Self(0b1_0000_0000);
153}
154#[repr(transparent)]
155#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
156#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html>"]
157pub struct BufferCreateFlags(pub(crate) Flags);
158vk_bitflags_wrapped!(BufferCreateFlags, Flags);
159impl BufferCreateFlags {
160    #[doc = "Buffer should support sparse backing"]
161    pub const SPARSE_BINDING: Self = Self(0b1);
162    #[doc = "Buffer should support sparse backing with partial residency"]
163    pub const SPARSE_RESIDENCY: Self = Self(0b10);
164    #[doc = "Buffer should support constant data access to physical memory ranges mapped into multiple locations of sparse buffers"]
165    pub const SPARSE_ALIASED: Self = Self(0b100);
166}
167#[repr(transparent)]
168#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
169#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html>"]
170pub struct ShaderStageFlags(pub(crate) Flags);
171vk_bitflags_wrapped!(ShaderStageFlags, Flags);
172impl ShaderStageFlags {
173    pub const VERTEX: Self = Self(0b1);
174    pub const TESSELLATION_CONTROL: Self = Self(0b10);
175    pub const TESSELLATION_EVALUATION: Self = Self(0b100);
176    pub const GEOMETRY: Self = Self(0b1000);
177    pub const FRAGMENT: Self = Self(0b1_0000);
178    pub const COMPUTE: Self = Self(0b10_0000);
179    pub const ALL_GRAPHICS: Self = Self(0x0000_001F);
180    pub const ALL: Self = Self(0x7FFF_FFFF);
181}
182#[repr(transparent)]
183#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
184#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html>"]
185pub struct ImageUsageFlags(pub(crate) Flags);
186vk_bitflags_wrapped!(ImageUsageFlags, Flags);
187impl ImageUsageFlags {
188    #[doc = "Can be used as a source of transfer operations"]
189    pub const TRANSFER_SRC: Self = Self(0b1);
190    #[doc = "Can be used as a destination of transfer operations"]
191    pub const TRANSFER_DST: Self = Self(0b10);
192    #[doc = "Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"]
193    pub const SAMPLED: Self = Self(0b100);
194    #[doc = "Can be used as storage image (STORAGE_IMAGE descriptor type)"]
195    pub const STORAGE: Self = Self(0b1000);
196    #[doc = "Can be used as framebuffer color attachment"]
197    pub const COLOR_ATTACHMENT: Self = Self(0b1_0000);
198    #[doc = "Can be used as framebuffer depth/stencil attachment"]
199    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0b10_0000);
200    #[doc = "Image data not needed outside of rendering"]
201    pub const TRANSIENT_ATTACHMENT: Self = Self(0b100_0000);
202    #[doc = "Can be used as framebuffer input attachment"]
203    pub const INPUT_ATTACHMENT: Self = Self(0b1000_0000);
204}
205#[repr(transparent)]
206#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
207#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html>"]
208pub struct ImageCreateFlags(pub(crate) Flags);
209vk_bitflags_wrapped!(ImageCreateFlags, Flags);
210impl ImageCreateFlags {
211    #[doc = "Image should support sparse backing"]
212    pub const SPARSE_BINDING: Self = Self(0b1);
213    #[doc = "Image should support sparse backing with partial residency"]
214    pub const SPARSE_RESIDENCY: Self = Self(0b10);
215    #[doc = "Image should support constant data access to physical memory ranges mapped into multiple locations of sparse images"]
216    pub const SPARSE_ALIASED: Self = Self(0b100);
217    #[doc = "Allows image views to have different format than the base image"]
218    pub const MUTABLE_FORMAT: Self = Self(0b1000);
219    #[doc = "Allows creating image views with cube type from the created image"]
220    pub const CUBE_COMPATIBLE: Self = Self(0b1_0000);
221}
222#[repr(transparent)]
223#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
224#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateFlagBits.html>"]
225pub struct ImageViewCreateFlags(pub(crate) Flags);
226vk_bitflags_wrapped!(ImageViewCreateFlags, Flags);
227impl ImageViewCreateFlags {}
228#[repr(transparent)]
229#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
230#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateFlagBits.html>"]
231pub struct SamplerCreateFlags(pub(crate) Flags);
232vk_bitflags_wrapped!(SamplerCreateFlags, Flags);
233impl SamplerCreateFlags {}
234#[repr(transparent)]
235#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
236#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlagBits.html>"]
237pub struct PipelineCreateFlags(pub(crate) Flags);
238vk_bitflags_wrapped!(PipelineCreateFlags, Flags);
239impl PipelineCreateFlags {
240    pub const DISABLE_OPTIMIZATION: Self = Self(0b1);
241    pub const ALLOW_DERIVATIVES: Self = Self(0b10);
242    pub const DERIVATIVE: Self = Self(0b100);
243}
244#[repr(transparent)]
245#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
246#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlagBits2KHR.html>"]
247pub struct PipelineCreateFlags2KHR(pub(crate) Flags64);
248vk_bitflags_wrapped!(PipelineCreateFlags2KHR, Flags64);
249impl PipelineCreateFlags2KHR {
250    pub const DISABLE_OPTIMIZATION: Self = Self(0b1);
251    pub const ALLOW_DERIVATIVES: Self = Self(0b10);
252    pub const DERIVATIVE: Self = Self(0b100);
253}
254#[repr(transparent)]
255#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
256#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateFlagBits.html>"]
257pub struct PipelineShaderStageCreateFlags(pub(crate) Flags);
258vk_bitflags_wrapped!(PipelineShaderStageCreateFlags, Flags);
259impl PipelineShaderStageCreateFlags {}
260#[repr(transparent)]
261#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
262#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html>"]
263pub struct ColorComponentFlags(pub(crate) Flags);
264vk_bitflags_wrapped!(ColorComponentFlags, Flags);
265impl ColorComponentFlags {
266    pub const R: Self = Self(0b1);
267    pub const G: Self = Self(0b10);
268    pub const B: Self = Self(0b100);
269    pub const A: Self = Self(0b1000);
270}
271#[repr(transparent)]
272#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
273#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceCreateFlagBits.html>"]
274pub struct FenceCreateFlags(pub(crate) Flags);
275vk_bitflags_wrapped!(FenceCreateFlags, Flags);
276impl FenceCreateFlags {
277    pub const SIGNALED: Self = Self(0b1);
278}
279#[repr(transparent)]
280#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
281#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreCreateFlagBits.html>"]
282pub struct SemaphoreCreateFlags(pub(crate) Flags);
283vk_bitflags_wrapped!(SemaphoreCreateFlags, Flags);
284impl SemaphoreCreateFlags {}
285#[repr(transparent)]
286#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
287#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html>"]
288pub struct FormatFeatureFlags(pub(crate) Flags);
289vk_bitflags_wrapped!(FormatFeatureFlags, Flags);
290impl FormatFeatureFlags {
291    #[doc = "Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"]
292    pub const SAMPLED_IMAGE: Self = Self(0b1);
293    #[doc = "Format can be used for storage images (STORAGE_IMAGE descriptor type)"]
294    pub const STORAGE_IMAGE: Self = Self(0b10);
295    #[doc = "Format supports atomic operations in case it is used for storage images"]
296    pub const STORAGE_IMAGE_ATOMIC: Self = Self(0b100);
297    #[doc = "Format can be used for uniform texel buffers (TBOs)"]
298    pub const UNIFORM_TEXEL_BUFFER: Self = Self(0b1000);
299    #[doc = "Format can be used for storage texel buffers (IBOs)"]
300    pub const STORAGE_TEXEL_BUFFER: Self = Self(0b1_0000);
301    #[doc = "Format supports atomic operations in case it is used for storage texel buffers"]
302    pub const STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(0b10_0000);
303    #[doc = "Format can be used for vertex buffers (VBOs)"]
304    pub const VERTEX_BUFFER: Self = Self(0b100_0000);
305    #[doc = "Format can be used for color attachment images"]
306    pub const COLOR_ATTACHMENT: Self = Self(0b1000_0000);
307    #[doc = "Format supports blending in case it is used for color attachment images"]
308    pub const COLOR_ATTACHMENT_BLEND: Self = Self(0b1_0000_0000);
309    #[doc = "Format can be used for depth/stencil attachment images"]
310    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0b10_0000_0000);
311    #[doc = "Format can be used as the source image of blits with vkCmdBlitImage"]
312    pub const BLIT_SRC: Self = Self(0b100_0000_0000);
313    #[doc = "Format can be used as the destination image of blits with vkCmdBlitImage"]
314    pub const BLIT_DST: Self = Self(0b1000_0000_0000);
315    #[doc = "Format can be filtered with VK_FILTER_LINEAR when being sampled"]
316    pub const SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(0b1_0000_0000_0000);
317}
318#[repr(transparent)]
319#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
320#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlagBits.html>"]
321pub struct QueryControlFlags(pub(crate) Flags);
322vk_bitflags_wrapped!(QueryControlFlags, Flags);
323impl QueryControlFlags {
324    #[doc = "Require precise results to be collected by the query"]
325    pub const PRECISE: Self = Self(0b1);
326}
327#[repr(transparent)]
328#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
329#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html>"]
330pub struct QueryResultFlags(pub(crate) Flags);
331vk_bitflags_wrapped!(QueryResultFlags, Flags);
332impl QueryResultFlags {
333    #[doc = "Results of the queries are written to the destination buffer as 64-bit values"]
334    pub const TYPE_64: Self = Self(0b1);
335    #[doc = "Results of the queries are waited on before proceeding with the result copy"]
336    pub const WAIT: Self = Self(0b10);
337    #[doc = "Besides the results of the query, the availability of the results is also written"]
338    pub const WITH_AVAILABILITY: Self = Self(0b100);
339    #[doc = "Copy the partial results of the query even if the final results are not available"]
340    pub const PARTIAL: Self = Self(0b1000);
341}
342#[repr(transparent)]
343#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
344#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html>"]
345pub struct CommandBufferUsageFlags(pub(crate) Flags);
346vk_bitflags_wrapped!(CommandBufferUsageFlags, Flags);
347impl CommandBufferUsageFlags {
348    pub const ONE_TIME_SUBMIT: Self = Self(0b1);
349    pub const RENDER_PASS_CONTINUE: Self = Self(0b10);
350    #[doc = "Command buffer may be submitted/executed more than once simultaneously"]
351    pub const SIMULTANEOUS_USE: Self = Self(0b100);
352}
353#[repr(transparent)]
354#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
355#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html>"]
356pub struct QueryPipelineStatisticFlags(pub(crate) Flags);
357vk_bitflags_wrapped!(QueryPipelineStatisticFlags, Flags);
358impl QueryPipelineStatisticFlags {
359    #[doc = "Optional"]
360    pub const INPUT_ASSEMBLY_VERTICES: Self = Self(0b1);
361    #[doc = "Optional"]
362    pub const INPUT_ASSEMBLY_PRIMITIVES: Self = Self(0b10);
363    #[doc = "Optional"]
364    pub const VERTEX_SHADER_INVOCATIONS: Self = Self(0b100);
365    #[doc = "Optional"]
366    pub const GEOMETRY_SHADER_INVOCATIONS: Self = Self(0b1000);
367    #[doc = "Optional"]
368    pub const GEOMETRY_SHADER_PRIMITIVES: Self = Self(0b1_0000);
369    #[doc = "Optional"]
370    pub const CLIPPING_INVOCATIONS: Self = Self(0b10_0000);
371    #[doc = "Optional"]
372    pub const CLIPPING_PRIMITIVES: Self = Self(0b100_0000);
373    #[doc = "Optional"]
374    pub const FRAGMENT_SHADER_INVOCATIONS: Self = Self(0b1000_0000);
375    #[doc = "Optional"]
376    pub const TESSELLATION_CONTROL_SHADER_PATCHES: Self = Self(0b1_0000_0000);
377    #[doc = "Optional"]
378    pub const TESSELLATION_EVALUATION_SHADER_INVOCATIONS: Self = Self(0b10_0000_0000);
379    #[doc = "Optional"]
380    pub const COMPUTE_SHADER_INVOCATIONS: Self = Self(0b100_0000_0000);
381}
382#[repr(transparent)]
383#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
384#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryMapFlagBits.html>"]
385pub struct MemoryMapFlags(pub(crate) Flags);
386vk_bitflags_wrapped!(MemoryMapFlags, Flags);
387impl MemoryMapFlags {}
388#[repr(transparent)]
389#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
390#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html>"]
391pub struct ImageAspectFlags(pub(crate) Flags);
392vk_bitflags_wrapped!(ImageAspectFlags, Flags);
393impl ImageAspectFlags {
394    pub const COLOR: Self = Self(0b1);
395    pub const DEPTH: Self = Self(0b10);
396    pub const STENCIL: Self = Self(0b100);
397    pub const METADATA: Self = Self(0b1000);
398}
399#[repr(transparent)]
400#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
401#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatFlagBits.html>"]
402pub struct SparseImageFormatFlags(pub(crate) Flags);
403vk_bitflags_wrapped!(SparseImageFormatFlags, Flags);
404impl SparseImageFormatFlags {
405    #[doc = "Image uses a single mip tail region for all array layers"]
406    pub const SINGLE_MIPTAIL: Self = Self(0b1);
407    #[doc = "Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels."]
408    pub const ALIGNED_MIP_SIZE: Self = Self(0b10);
409    #[doc = "Image uses a non-standard sparse image block dimensions"]
410    pub const NONSTANDARD_BLOCK_SIZE: Self = Self(0b100);
411}
412#[repr(transparent)]
413#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
414#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseMemoryBindFlagBits.html>"]
415pub struct SparseMemoryBindFlags(pub(crate) Flags);
416vk_bitflags_wrapped!(SparseMemoryBindFlags, Flags);
417impl SparseMemoryBindFlags {
418    #[doc = "Operation binds resource metadata to memory"]
419    pub const METADATA: Self = Self(0b1);
420}
421#[repr(transparent)]
422#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
423#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html>"]
424pub struct PipelineStageFlags(pub(crate) Flags);
425vk_bitflags_wrapped!(PipelineStageFlags, Flags);
426impl PipelineStageFlags {
427    #[doc = "Before subsequent commands are processed"]
428    pub const TOP_OF_PIPE: Self = Self(0b1);
429    #[doc = "Draw/DispatchIndirect command fetch"]
430    pub const DRAW_INDIRECT: Self = Self(0b10);
431    #[doc = "Vertex/index fetch"]
432    pub const VERTEX_INPUT: Self = Self(0b100);
433    #[doc = "Vertex shading"]
434    pub const VERTEX_SHADER: Self = Self(0b1000);
435    #[doc = "Tessellation control shading"]
436    pub const TESSELLATION_CONTROL_SHADER: Self = Self(0b1_0000);
437    #[doc = "Tessellation evaluation shading"]
438    pub const TESSELLATION_EVALUATION_SHADER: Self = Self(0b10_0000);
439    #[doc = "Geometry shading"]
440    pub const GEOMETRY_SHADER: Self = Self(0b100_0000);
441    #[doc = "Fragment shading"]
442    pub const FRAGMENT_SHADER: Self = Self(0b1000_0000);
443    #[doc = "Early fragment (depth and stencil) tests"]
444    pub const EARLY_FRAGMENT_TESTS: Self = Self(0b1_0000_0000);
445    #[doc = "Late fragment (depth and stencil) tests"]
446    pub const LATE_FRAGMENT_TESTS: Self = Self(0b10_0000_0000);
447    #[doc = "Color attachment writes"]
448    pub const COLOR_ATTACHMENT_OUTPUT: Self = Self(0b100_0000_0000);
449    #[doc = "Compute shading"]
450    pub const COMPUTE_SHADER: Self = Self(0b1000_0000_0000);
451    #[doc = "Transfer/copy operations"]
452    pub const TRANSFER: Self = Self(0b1_0000_0000_0000);
453    #[doc = "After previous commands have completed"]
454    pub const BOTTOM_OF_PIPE: Self = Self(0b10_0000_0000_0000);
455    #[doc = "Indicates host (CPU) is a source/sink of the dependency"]
456    pub const HOST: Self = Self(0b100_0000_0000_0000);
457    #[doc = "All stages of the graphics pipeline"]
458    pub const ALL_GRAPHICS: Self = Self(0b1000_0000_0000_0000);
459    #[doc = "All stages supported on the queue"]
460    pub const ALL_COMMANDS: Self = Self(0b1_0000_0000_0000_0000);
461}
462#[repr(transparent)]
463#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
464#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html>"]
465pub struct CommandPoolCreateFlags(pub(crate) Flags);
466vk_bitflags_wrapped!(CommandPoolCreateFlags, Flags);
467impl CommandPoolCreateFlags {
468    #[doc = "Command buffers have a short lifetime"]
469    pub const TRANSIENT: Self = Self(0b1);
470    #[doc = "Command buffers may release their memory individually"]
471    pub const RESET_COMMAND_BUFFER: Self = Self(0b10);
472}
473#[repr(transparent)]
474#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
475#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlagBits.html>"]
476pub struct CommandPoolResetFlags(pub(crate) Flags);
477vk_bitflags_wrapped!(CommandPoolResetFlags, Flags);
478impl CommandPoolResetFlags {
479    #[doc = "Release resources owned by the pool"]
480    pub const RELEASE_RESOURCES: Self = Self(0b1);
481}
482#[repr(transparent)]
483#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
484#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlagBits.html>"]
485pub struct CommandBufferResetFlags(pub(crate) Flags);
486vk_bitflags_wrapped!(CommandBufferResetFlags, Flags);
487impl CommandBufferResetFlags {
488    #[doc = "Release resources owned by the buffer"]
489    pub const RELEASE_RESOURCES: Self = Self(0b1);
490}
491#[repr(transparent)]
492#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
493#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html>"]
494pub struct SampleCountFlags(pub(crate) Flags);
495vk_bitflags_wrapped!(SampleCountFlags, Flags);
496impl SampleCountFlags {
497    #[doc = "Sample count 1 supported"]
498    pub const TYPE_1: Self = Self(0b1);
499    #[doc = "Sample count 2 supported"]
500    pub const TYPE_2: Self = Self(0b10);
501    #[doc = "Sample count 4 supported"]
502    pub const TYPE_4: Self = Self(0b100);
503    #[doc = "Sample count 8 supported"]
504    pub const TYPE_8: Self = Self(0b1000);
505    #[doc = "Sample count 16 supported"]
506    pub const TYPE_16: Self = Self(0b1_0000);
507    #[doc = "Sample count 32 supported"]
508    pub const TYPE_32: Self = Self(0b10_0000);
509    #[doc = "Sample count 64 supported"]
510    pub const TYPE_64: Self = Self(0b100_0000);
511}
512#[repr(transparent)]
513#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
514#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentDescriptionFlagBits.html>"]
515pub struct AttachmentDescriptionFlags(pub(crate) Flags);
516vk_bitflags_wrapped!(AttachmentDescriptionFlags, Flags);
517impl AttachmentDescriptionFlags {
518    #[doc = "The attachment may alias physical memory of another attachment in the same render pass"]
519    pub const MAY_ALIAS: Self = Self(0b1);
520}
521#[repr(transparent)]
522#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
523#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilFaceFlagBits.html>"]
524pub struct StencilFaceFlags(pub(crate) Flags);
525vk_bitflags_wrapped!(StencilFaceFlags, Flags);
526impl StencilFaceFlags {
527    #[doc = "Front face"]
528    pub const FRONT: Self = Self(0b1);
529    #[doc = "Back face"]
530    pub const BACK: Self = Self(0b10);
531    #[doc = "Front and back faces"]
532    pub const FRONT_AND_BACK: Self = Self(0x0000_0003);
533}
534#[repr(transparent)]
535#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
536#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorPoolCreateFlagBits.html>"]
537pub struct DescriptorPoolCreateFlags(pub(crate) Flags);
538vk_bitflags_wrapped!(DescriptorPoolCreateFlags, Flags);
539impl DescriptorPoolCreateFlags {
540    #[doc = "Descriptor sets may be freed individually"]
541    pub const FREE_DESCRIPTOR_SET: Self = Self(0b1);
542}
543#[repr(transparent)]
544#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
545#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDependencyFlagBits.html>"]
546pub struct DependencyFlags(pub(crate) Flags);
547vk_bitflags_wrapped!(DependencyFlags, Flags);
548impl DependencyFlags {
549    #[doc = "Dependency is per pixel region "]
550    pub const BY_REGION: Self = Self(0b1);
551}
552#[repr(transparent)]
553#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
554#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreWaitFlagBits.html>"]
555pub struct SemaphoreWaitFlags(pub(crate) Flags);
556vk_bitflags_wrapped!(SemaphoreWaitFlags, Flags);
557impl SemaphoreWaitFlags {
558    pub const ANY: Self = Self(0b1);
559}
560#[repr(transparent)]
561#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
562#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDisplayPlaneAlphaFlagBitsKHR.html>"]
563pub struct DisplayPlaneAlphaFlagsKHR(pub(crate) Flags);
564vk_bitflags_wrapped!(DisplayPlaneAlphaFlagsKHR, Flags);
565impl DisplayPlaneAlphaFlagsKHR {
566    pub const OPAQUE: Self = Self(0b1);
567    pub const GLOBAL: Self = Self(0b10);
568    pub const PER_PIXEL: Self = Self(0b100);
569    pub const PER_PIXEL_PREMULTIPLIED: Self = Self(0b1000);
570}
571#[repr(transparent)]
572#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
573#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompositeAlphaFlagBitsKHR.html>"]
574pub struct CompositeAlphaFlagsKHR(pub(crate) Flags);
575vk_bitflags_wrapped!(CompositeAlphaFlagsKHR, Flags);
576impl CompositeAlphaFlagsKHR {
577    pub const OPAQUE: Self = Self(0b1);
578    pub const PRE_MULTIPLIED: Self = Self(0b10);
579    pub const POST_MULTIPLIED: Self = Self(0b100);
580    pub const INHERIT: Self = Self(0b1000);
581}
582#[repr(transparent)]
583#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
584#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSurfaceTransformFlagBitsKHR.html>"]
585pub struct SurfaceTransformFlagsKHR(pub(crate) Flags);
586vk_bitflags_wrapped!(SurfaceTransformFlagsKHR, Flags);
587impl SurfaceTransformFlagsKHR {
588    pub const IDENTITY: Self = Self(0b1);
589    pub const ROTATE_90: Self = Self(0b10);
590    pub const ROTATE_180: Self = Self(0b100);
591    pub const ROTATE_270: Self = Self(0b1000);
592    pub const HORIZONTAL_MIRROR: Self = Self(0b1_0000);
593    pub const HORIZONTAL_MIRROR_ROTATE_90: Self = Self(0b10_0000);
594    pub const HORIZONTAL_MIRROR_ROTATE_180: Self = Self(0b100_0000);
595    pub const HORIZONTAL_MIRROR_ROTATE_270: Self = Self(0b1000_0000);
596    pub const INHERIT: Self = Self(0b1_0000_0000);
597}
598#[repr(transparent)]
599#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
600#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSwapchainImageUsageFlagBitsANDROID.html>"]
601pub struct SwapchainImageUsageFlagsANDROID(pub(crate) Flags);
602vk_bitflags_wrapped!(SwapchainImageUsageFlagsANDROID, Flags);
603impl SwapchainImageUsageFlagsANDROID {
604    pub const SHARED: Self = Self(0b1);
605}
606#[repr(transparent)]
607#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
608#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugReportFlagBitsEXT.html>"]
609pub struct DebugReportFlagsEXT(pub(crate) Flags);
610vk_bitflags_wrapped!(DebugReportFlagsEXT, Flags);
611impl DebugReportFlagsEXT {
612    pub const INFORMATION: Self = Self(0b1);
613    pub const WARNING: Self = Self(0b10);
614    pub const PERFORMANCE_WARNING: Self = Self(0b100);
615    pub const ERROR: Self = Self(0b1000);
616    pub const DEBUG: Self = Self(0b1_0000);
617}
618#[repr(transparent)]
619#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
620#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryHandleTypeFlagBitsNV.html>"]
621pub struct ExternalMemoryHandleTypeFlagsNV(pub(crate) Flags);
622vk_bitflags_wrapped!(ExternalMemoryHandleTypeFlagsNV, Flags);
623impl ExternalMemoryHandleTypeFlagsNV {
624    pub const OPAQUE_WIN32: Self = Self(0b1);
625    pub const OPAQUE_WIN32_KMT: Self = Self(0b10);
626    pub const D3D11_IMAGE: Self = Self(0b100);
627    pub const D3D11_IMAGE_KMT: Self = Self(0b1000);
628}
629#[repr(transparent)]
630#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
631#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryFeatureFlagBitsNV.html>"]
632pub struct ExternalMemoryFeatureFlagsNV(pub(crate) Flags);
633vk_bitflags_wrapped!(ExternalMemoryFeatureFlagsNV, Flags);
634impl ExternalMemoryFeatureFlagsNV {
635    pub const DEDICATED_ONLY: Self = Self(0b1);
636    pub const EXPORTABLE: Self = Self(0b10);
637    pub const IMPORTABLE: Self = Self(0b100);
638}
639#[repr(transparent)]
640#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
641#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubgroupFeatureFlagBits.html>"]
642pub struct SubgroupFeatureFlags(pub(crate) Flags);
643vk_bitflags_wrapped!(SubgroupFeatureFlags, Flags);
644impl SubgroupFeatureFlags {
645    #[doc = "Basic subgroup operations"]
646    pub const BASIC: Self = Self(0b1);
647    #[doc = "Vote subgroup operations"]
648    pub const VOTE: Self = Self(0b10);
649    #[doc = "Arithmetic subgroup operations"]
650    pub const ARITHMETIC: Self = Self(0b100);
651    #[doc = "Ballot subgroup operations"]
652    pub const BALLOT: Self = Self(0b1000);
653    #[doc = "Shuffle subgroup operations"]
654    pub const SHUFFLE: Self = Self(0b1_0000);
655    #[doc = "Shuffle relative subgroup operations"]
656    pub const SHUFFLE_RELATIVE: Self = Self(0b10_0000);
657    #[doc = "Clustered subgroup operations"]
658    pub const CLUSTERED: Self = Self(0b100_0000);
659    #[doc = "Quad subgroup operations"]
660    pub const QUAD: Self = Self(0b1000_0000);
661}
662#[repr(transparent)]
663#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
664#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutUsageFlagBitsNV.html>"]
665pub struct IndirectCommandsLayoutUsageFlagsNV(pub(crate) Flags);
666vk_bitflags_wrapped!(IndirectCommandsLayoutUsageFlagsNV, Flags);
667impl IndirectCommandsLayoutUsageFlagsNV {
668    pub const EXPLICIT_PREPROCESS: Self = Self(0b1);
669    pub const INDEXED_SEQUENCES: Self = Self(0b10);
670    pub const UNORDERED_SEQUENCES: Self = Self(0b100);
671}
672#[repr(transparent)]
673#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
674#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectStateFlagBitsNV.html>"]
675pub struct IndirectStateFlagsNV(pub(crate) Flags);
676vk_bitflags_wrapped!(IndirectStateFlagsNV, Flags);
677impl IndirectStateFlagsNV {
678    pub const FLAG_FRONTFACE: Self = Self(0b1);
679}
680#[repr(transparent)]
681#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
682#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrivateDataSlotCreateFlagBits.html>"]
683pub struct PrivateDataSlotCreateFlags(pub(crate) Flags);
684vk_bitflags_wrapped!(PrivateDataSlotCreateFlags, Flags);
685impl PrivateDataSlotCreateFlags {}
686#[repr(transparent)]
687#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
688#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateFlagBits.html>"]
689pub struct DescriptorSetLayoutCreateFlags(pub(crate) Flags);
690vk_bitflags_wrapped!(DescriptorSetLayoutCreateFlags, Flags);
691impl DescriptorSetLayoutCreateFlags {}
692#[repr(transparent)]
693#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
694#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryHandleTypeFlagBits.html>"]
695pub struct ExternalMemoryHandleTypeFlags(pub(crate) Flags);
696vk_bitflags_wrapped!(ExternalMemoryHandleTypeFlags, Flags);
697impl ExternalMemoryHandleTypeFlags {
698    pub const OPAQUE_FD: Self = Self(0b1);
699    pub const OPAQUE_WIN32: Self = Self(0b10);
700    pub const OPAQUE_WIN32_KMT: Self = Self(0b100);
701    pub const D3D11_TEXTURE: Self = Self(0b1000);
702    pub const D3D11_TEXTURE_KMT: Self = Self(0b1_0000);
703    pub const D3D12_HEAP: Self = Self(0b10_0000);
704    pub const D3D12_RESOURCE: Self = Self(0b100_0000);
705}
706#[repr(transparent)]
707#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
708#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryFeatureFlagBits.html>"]
709pub struct ExternalMemoryFeatureFlags(pub(crate) Flags);
710vk_bitflags_wrapped!(ExternalMemoryFeatureFlags, Flags);
711impl ExternalMemoryFeatureFlags {
712    pub const DEDICATED_ONLY: Self = Self(0b1);
713    pub const EXPORTABLE: Self = Self(0b10);
714    pub const IMPORTABLE: Self = Self(0b100);
715}
716#[repr(transparent)]
717#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
718#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalSemaphoreHandleTypeFlagBits.html>"]
719pub struct ExternalSemaphoreHandleTypeFlags(pub(crate) Flags);
720vk_bitflags_wrapped!(ExternalSemaphoreHandleTypeFlags, Flags);
721impl ExternalSemaphoreHandleTypeFlags {
722    pub const OPAQUE_FD: Self = Self(0b1);
723    pub const OPAQUE_WIN32: Self = Self(0b10);
724    pub const OPAQUE_WIN32_KMT: Self = Self(0b100);
725    pub const D3D12_FENCE: Self = Self(0b1000);
726    pub const D3D11_FENCE: Self = Self::D3D12_FENCE;
727    pub const SYNC_FD: Self = Self(0b1_0000);
728}
729#[repr(transparent)]
730#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
731#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalSemaphoreFeatureFlagBits.html>"]
732pub struct ExternalSemaphoreFeatureFlags(pub(crate) Flags);
733vk_bitflags_wrapped!(ExternalSemaphoreFeatureFlags, Flags);
734impl ExternalSemaphoreFeatureFlags {
735    pub const EXPORTABLE: Self = Self(0b1);
736    pub const IMPORTABLE: Self = Self(0b10);
737}
738#[repr(transparent)]
739#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
740#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreImportFlagBits.html>"]
741pub struct SemaphoreImportFlags(pub(crate) Flags);
742vk_bitflags_wrapped!(SemaphoreImportFlags, Flags);
743impl SemaphoreImportFlags {
744    pub const TEMPORARY: Self = Self(0b1);
745}
746#[repr(transparent)]
747#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
748#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalFenceHandleTypeFlagBits.html>"]
749pub struct ExternalFenceHandleTypeFlags(pub(crate) Flags);
750vk_bitflags_wrapped!(ExternalFenceHandleTypeFlags, Flags);
751impl ExternalFenceHandleTypeFlags {
752    pub const OPAQUE_FD: Self = Self(0b1);
753    pub const OPAQUE_WIN32: Self = Self(0b10);
754    pub const OPAQUE_WIN32_KMT: Self = Self(0b100);
755    pub const SYNC_FD: Self = Self(0b1000);
756}
757#[repr(transparent)]
758#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
759#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalFenceFeatureFlagBits.html>"]
760pub struct ExternalFenceFeatureFlags(pub(crate) Flags);
761vk_bitflags_wrapped!(ExternalFenceFeatureFlags, Flags);
762impl ExternalFenceFeatureFlags {
763    pub const EXPORTABLE: Self = Self(0b1);
764    pub const IMPORTABLE: Self = Self(0b10);
765}
766#[repr(transparent)]
767#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
768#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceImportFlagBits.html>"]
769pub struct FenceImportFlags(pub(crate) Flags);
770vk_bitflags_wrapped!(FenceImportFlags, Flags);
771impl FenceImportFlags {
772    pub const TEMPORARY: Self = Self(0b1);
773}
774#[repr(transparent)]
775#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
776#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSurfaceCounterFlagBitsEXT.html>"]
777pub struct SurfaceCounterFlagsEXT(pub(crate) Flags);
778vk_bitflags_wrapped!(SurfaceCounterFlagsEXT, Flags);
779impl SurfaceCounterFlagsEXT {
780    pub const VBLANK: Self = Self(0b1);
781}
782#[repr(transparent)]
783#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
784#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPeerMemoryFeatureFlagBits.html>"]
785pub struct PeerMemoryFeatureFlags(pub(crate) Flags);
786vk_bitflags_wrapped!(PeerMemoryFeatureFlags, Flags);
787impl PeerMemoryFeatureFlags {
788    #[doc = "Can read with vkCmdCopy commands"]
789    pub const COPY_SRC: Self = Self(0b1);
790    #[doc = "Can write with vkCmdCopy commands"]
791    pub const COPY_DST: Self = Self(0b10);
792    #[doc = "Can read with any access type/command"]
793    pub const GENERIC_SRC: Self = Self(0b100);
794    #[doc = "Can write with and access type/command"]
795    pub const GENERIC_DST: Self = Self(0b1000);
796}
797#[repr(transparent)]
798#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
799#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlagBits.html>"]
800pub struct MemoryAllocateFlags(pub(crate) Flags);
801vk_bitflags_wrapped!(MemoryAllocateFlags, Flags);
802impl MemoryAllocateFlags {
803    #[doc = "Force allocation on specific devices"]
804    pub const DEVICE_MASK: Self = Self(0b1);
805}
806#[repr(transparent)]
807#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
808#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceGroupPresentModeFlagBitsKHR.html>"]
809pub struct DeviceGroupPresentModeFlagsKHR(pub(crate) Flags);
810vk_bitflags_wrapped!(DeviceGroupPresentModeFlagsKHR, Flags);
811impl DeviceGroupPresentModeFlagsKHR {
812    #[doc = "Present from local memory"]
813    pub const LOCAL: Self = Self(0b1);
814    #[doc = "Present from remote memory"]
815    pub const REMOTE: Self = Self(0b10);
816    #[doc = "Present sum of local and/or remote memory"]
817    pub const SUM: Self = Self(0b100);
818    #[doc = "Each physical device presents from local memory"]
819    pub const LOCAL_MULTI_DEVICE: Self = Self(0b1000);
820}
821#[repr(transparent)]
822#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
823#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSwapchainCreateFlagBitsKHR.html>"]
824pub struct SwapchainCreateFlagsKHR(pub(crate) Flags);
825vk_bitflags_wrapped!(SwapchainCreateFlagsKHR, Flags);
826impl SwapchainCreateFlagsKHR {}
827#[repr(transparent)]
828#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
829#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassDescriptionFlagBits.html>"]
830pub struct SubpassDescriptionFlags(pub(crate) Flags);
831vk_bitflags_wrapped!(SubpassDescriptionFlags, Flags);
832impl SubpassDescriptionFlags {}
833#[repr(transparent)]
834#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
835#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageSeverityFlagBitsEXT.html>"]
836pub struct DebugUtilsMessageSeverityFlagsEXT(pub(crate) Flags);
837vk_bitflags_wrapped!(DebugUtilsMessageSeverityFlagsEXT, Flags);
838impl DebugUtilsMessageSeverityFlagsEXT {
839    pub const VERBOSE: Self = Self(0b1);
840    pub const INFO: Self = Self(0b1_0000);
841    pub const WARNING: Self = Self(0b1_0000_0000);
842    pub const ERROR: Self = Self(0b1_0000_0000_0000);
843}
844#[repr(transparent)]
845#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
846#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageTypeFlagBitsEXT.html>"]
847pub struct DebugUtilsMessageTypeFlagsEXT(pub(crate) Flags);
848vk_bitflags_wrapped!(DebugUtilsMessageTypeFlagsEXT, Flags);
849impl DebugUtilsMessageTypeFlagsEXT {
850    pub const GENERAL: Self = Self(0b1);
851    pub const VALIDATION: Self = Self(0b10);
852    pub const PERFORMANCE: Self = Self(0b100);
853}
854#[repr(transparent)]
855#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
856#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorBindingFlagBits.html>"]
857pub struct DescriptorBindingFlags(pub(crate) Flags);
858vk_bitflags_wrapped!(DescriptorBindingFlags, Flags);
859impl DescriptorBindingFlags {
860    pub const UPDATE_AFTER_BIND: Self = Self(0b1);
861    pub const UPDATE_UNUSED_WHILE_PENDING: Self = Self(0b10);
862    pub const PARTIALLY_BOUND: Self = Self(0b100);
863    pub const VARIABLE_DESCRIPTOR_COUNT: Self = Self(0b1000);
864}
865#[repr(transparent)]
866#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
867#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkConditionalRenderingFlagBitsEXT.html>"]
868pub struct ConditionalRenderingFlagsEXT(pub(crate) Flags);
869vk_bitflags_wrapped!(ConditionalRenderingFlagsEXT, Flags);
870impl ConditionalRenderingFlagsEXT {
871    pub const INVERTED: Self = Self(0b1);
872}
873#[repr(transparent)]
874#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
875#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResolveModeFlagBits.html>"]
876pub struct ResolveModeFlags(pub(crate) Flags);
877vk_bitflags_wrapped!(ResolveModeFlags, Flags);
878impl ResolveModeFlags {
879    pub const NONE: Self = Self(0);
880    pub const SAMPLE_ZERO: Self = Self(0b1);
881    pub const AVERAGE: Self = Self(0b10);
882    pub const MIN: Self = Self(0b100);
883    pub const MAX: Self = Self(0b1000);
884}
885#[repr(transparent)]
886#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
887#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGeometryInstanceFlagBitsKHR.html>"]
888pub struct GeometryInstanceFlagsKHR(pub(crate) Flags);
889vk_bitflags_wrapped!(GeometryInstanceFlagsKHR, Flags);
890impl GeometryInstanceFlagsKHR {
891    pub const TRIANGLE_FACING_CULL_DISABLE: Self = Self(0b1);
892    pub const TRIANGLE_FLIP_FACING: Self = Self(0b10);
893    pub const FORCE_OPAQUE: Self = Self(0b100);
894    pub const FORCE_NO_OPAQUE: Self = Self(0b1000);
895    pub const TRIANGLE_FRONT_COUNTERCLOCKWISE: Self = Self::TRIANGLE_FLIP_FACING;
896}
897#[repr(transparent)]
898#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
899#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGeometryFlagBitsKHR.html>"]
900pub struct GeometryFlagsKHR(pub(crate) Flags);
901vk_bitflags_wrapped!(GeometryFlagsKHR, Flags);
902impl GeometryFlagsKHR {
903    pub const OPAQUE: Self = Self(0b1);
904    pub const NO_DUPLICATE_ANY_HIT_INVOCATION: Self = Self(0b10);
905}
906#[repr(transparent)]
907#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
908#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureFlagBitsKHR.html>"]
909pub struct BuildAccelerationStructureFlagsKHR(pub(crate) Flags);
910vk_bitflags_wrapped!(BuildAccelerationStructureFlagsKHR, Flags);
911impl BuildAccelerationStructureFlagsKHR {
912    pub const ALLOW_UPDATE: Self = Self(0b1);
913    pub const ALLOW_COMPACTION: Self = Self(0b10);
914    pub const PREFER_FAST_TRACE: Self = Self(0b100);
915    pub const PREFER_FAST_BUILD: Self = Self(0b1000);
916    pub const LOW_MEMORY: Self = Self(0b1_0000);
917}
918#[repr(transparent)]
919#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
920#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCreateFlagBitsKHR.html>"]
921pub struct AccelerationStructureCreateFlagsKHR(pub(crate) Flags);
922vk_bitflags_wrapped!(AccelerationStructureCreateFlagsKHR, Flags);
923impl AccelerationStructureCreateFlagsKHR {
924    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(0b1);
925}
926#[repr(transparent)]
927#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
928#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFramebufferCreateFlagBits.html>"]
929pub struct FramebufferCreateFlags(pub(crate) Flags);
930vk_bitflags_wrapped!(FramebufferCreateFlags, Flags);
931impl FramebufferCreateFlags {}
932#[repr(transparent)]
933#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
934#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceDiagnosticsConfigFlagBitsNV.html>"]
935pub struct DeviceDiagnosticsConfigFlagsNV(pub(crate) Flags);
936vk_bitflags_wrapped!(DeviceDiagnosticsConfigFlagsNV, Flags);
937impl DeviceDiagnosticsConfigFlagsNV {
938    pub const ENABLE_SHADER_DEBUG_INFO: Self = Self(0b1);
939    pub const ENABLE_RESOURCE_TRACKING: Self = Self(0b10);
940    pub const ENABLE_AUTOMATIC_CHECKPOINTS: Self = Self(0b100);
941    pub const ENABLE_SHADER_ERROR_REPORTING: Self = Self(0b1000);
942}
943#[repr(transparent)]
944#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
945#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCreationFeedbackFlagBits.html>"]
946pub struct PipelineCreationFeedbackFlags(pub(crate) Flags);
947vk_bitflags_wrapped!(PipelineCreationFeedbackFlags, Flags);
948impl PipelineCreationFeedbackFlags {
949    pub const VALID: Self = Self(0b1);
950    pub const VALID_EXT: Self = Self::VALID;
951    pub const APPLICATION_PIPELINE_CACHE_HIT: Self = Self(0b10);
952    pub const APPLICATION_PIPELINE_CACHE_HIT_EXT: Self = Self::APPLICATION_PIPELINE_CACHE_HIT;
953    pub const BASE_PIPELINE_ACCELERATION: Self = Self(0b100);
954    pub const BASE_PIPELINE_ACCELERATION_EXT: Self = Self::BASE_PIPELINE_ACCELERATION;
955}
956#[repr(transparent)]
957#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
958#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryDecompressionMethodFlagBitsNV.html>"]
959pub struct MemoryDecompressionMethodFlagsNV(pub(crate) Flags64);
960vk_bitflags_wrapped!(MemoryDecompressionMethodFlagsNV, Flags64);
961impl MemoryDecompressionMethodFlagsNV {
962    pub const GDEFLATE_1_0: Self = Self(0b1);
963}
964#[repr(transparent)]
965#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
966#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterDescriptionFlagBitsKHR.html>"]
967pub struct PerformanceCounterDescriptionFlagsKHR(pub(crate) Flags);
968vk_bitflags_wrapped!(PerformanceCounterDescriptionFlagsKHR, Flags);
969impl PerformanceCounterDescriptionFlagsKHR {
970    pub const PERFORMANCE_IMPACTING: Self = Self(0b1);
971    pub const CONCURRENTLY_IMPACTED: Self = Self(0b10);
972}
973#[repr(transparent)]
974#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
975#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAcquireProfilingLockFlagBitsKHR.html>"]
976pub struct AcquireProfilingLockFlagsKHR(pub(crate) Flags);
977vk_bitflags_wrapped!(AcquireProfilingLockFlagsKHR, Flags);
978impl AcquireProfilingLockFlagsKHR {}
979#[repr(transparent)]
980#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
981#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderCorePropertiesFlagBitsAMD.html>"]
982pub struct ShaderCorePropertiesFlagsAMD(pub(crate) Flags);
983vk_bitflags_wrapped!(ShaderCorePropertiesFlagsAMD, Flags);
984impl ShaderCorePropertiesFlagsAMD {}
985#[repr(transparent)]
986#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
987#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderModuleCreateFlagBits.html>"]
988pub struct ShaderModuleCreateFlags(pub(crate) Flags);
989vk_bitflags_wrapped!(ShaderModuleCreateFlags, Flags);
990impl ShaderModuleCreateFlags {}
991#[repr(transparent)]
992#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
993#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCompilerControlFlagBitsAMD.html>"]
994pub struct PipelineCompilerControlFlagsAMD(pub(crate) Flags);
995vk_bitflags_wrapped!(PipelineCompilerControlFlagsAMD, Flags);
996impl PipelineCompilerControlFlagsAMD {}
997#[repr(transparent)]
998#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
999#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkToolPurposeFlagBits.html>"]
1000pub struct ToolPurposeFlags(pub(crate) Flags);
1001vk_bitflags_wrapped!(ToolPurposeFlags, Flags);
1002impl ToolPurposeFlags {
1003    pub const VALIDATION: Self = Self(0b1);
1004    pub const VALIDATION_EXT: Self = Self::VALIDATION;
1005    pub const PROFILING: Self = Self(0b10);
1006    pub const PROFILING_EXT: Self = Self::PROFILING;
1007    pub const TRACING: Self = Self(0b100);
1008    pub const TRACING_EXT: Self = Self::TRACING;
1009    pub const ADDITIONAL_FEATURES: Self = Self(0b1000);
1010    pub const ADDITIONAL_FEATURES_EXT: Self = Self::ADDITIONAL_FEATURES;
1011    pub const MODIFYING_FEATURES: Self = Self(0b1_0000);
1012    pub const MODIFYING_FEATURES_EXT: Self = Self::MODIFYING_FEATURES;
1013}
1014#[repr(transparent)]
1015#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1016#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccessFlagBits2.html>"]
1017pub struct AccessFlags2(pub(crate) Flags64);
1018vk_bitflags_wrapped!(AccessFlags2, Flags64);
1019impl AccessFlags2 {
1020    pub const NONE: Self = Self(0);
1021    pub const NONE_KHR: Self = Self::NONE;
1022    pub const INDIRECT_COMMAND_READ: Self = Self(0b1);
1023    pub const INDIRECT_COMMAND_READ_KHR: Self = Self::INDIRECT_COMMAND_READ;
1024    pub const INDEX_READ: Self = Self(0b10);
1025    pub const INDEX_READ_KHR: Self = Self::INDEX_READ;
1026    pub const VERTEX_ATTRIBUTE_READ: Self = Self(0b100);
1027    pub const VERTEX_ATTRIBUTE_READ_KHR: Self = Self::VERTEX_ATTRIBUTE_READ;
1028    pub const UNIFORM_READ: Self = Self(0b1000);
1029    pub const UNIFORM_READ_KHR: Self = Self::UNIFORM_READ;
1030    pub const INPUT_ATTACHMENT_READ: Self = Self(0b1_0000);
1031    pub const INPUT_ATTACHMENT_READ_KHR: Self = Self::INPUT_ATTACHMENT_READ;
1032    pub const SHADER_READ: Self = Self(0b10_0000);
1033    pub const SHADER_READ_KHR: Self = Self::SHADER_READ;
1034    pub const SHADER_WRITE: Self = Self(0b100_0000);
1035    pub const SHADER_WRITE_KHR: Self = Self::SHADER_WRITE;
1036    pub const COLOR_ATTACHMENT_READ: Self = Self(0b1000_0000);
1037    pub const COLOR_ATTACHMENT_READ_KHR: Self = Self::COLOR_ATTACHMENT_READ;
1038    pub const COLOR_ATTACHMENT_WRITE: Self = Self(0b1_0000_0000);
1039    pub const COLOR_ATTACHMENT_WRITE_KHR: Self = Self::COLOR_ATTACHMENT_WRITE;
1040    pub const DEPTH_STENCIL_ATTACHMENT_READ: Self = Self(0b10_0000_0000);
1041    pub const DEPTH_STENCIL_ATTACHMENT_READ_KHR: Self = Self::DEPTH_STENCIL_ATTACHMENT_READ;
1042    pub const DEPTH_STENCIL_ATTACHMENT_WRITE: Self = Self(0b100_0000_0000);
1043    pub const DEPTH_STENCIL_ATTACHMENT_WRITE_KHR: Self = Self::DEPTH_STENCIL_ATTACHMENT_WRITE;
1044    pub const TRANSFER_READ: Self = Self(0b1000_0000_0000);
1045    pub const TRANSFER_READ_KHR: Self = Self::TRANSFER_READ;
1046    pub const TRANSFER_WRITE: Self = Self(0b1_0000_0000_0000);
1047    pub const TRANSFER_WRITE_KHR: Self = Self::TRANSFER_WRITE;
1048    pub const HOST_READ: Self = Self(0b10_0000_0000_0000);
1049    pub const HOST_READ_KHR: Self = Self::HOST_READ;
1050    pub const HOST_WRITE: Self = Self(0b100_0000_0000_0000);
1051    pub const HOST_WRITE_KHR: Self = Self::HOST_WRITE;
1052    pub const MEMORY_READ: Self = Self(0b1000_0000_0000_0000);
1053    pub const MEMORY_READ_KHR: Self = Self::MEMORY_READ;
1054    pub const MEMORY_WRITE: Self = Self(0b1_0000_0000_0000_0000);
1055    pub const MEMORY_WRITE_KHR: Self = Self::MEMORY_WRITE;
1056    pub const SHADER_SAMPLED_READ: Self = Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000);
1057    pub const SHADER_SAMPLED_READ_KHR: Self = Self::SHADER_SAMPLED_READ;
1058    pub const SHADER_STORAGE_READ: Self = Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000);
1059    pub const SHADER_STORAGE_READ_KHR: Self = Self::SHADER_STORAGE_READ;
1060    pub const SHADER_STORAGE_WRITE: Self = Self(0b100_0000_0000_0000_0000_0000_0000_0000_0000);
1061    pub const SHADER_STORAGE_WRITE_KHR: Self = Self::SHADER_STORAGE_WRITE;
1062}
1063#[repr(transparent)]
1064#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1065#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits2.html>"]
1066pub struct PipelineStageFlags2(pub(crate) Flags64);
1067vk_bitflags_wrapped!(PipelineStageFlags2, Flags64);
1068impl PipelineStageFlags2 {
1069    pub const NONE: Self = Self(0);
1070    pub const NONE_KHR: Self = Self::NONE;
1071    pub const TOP_OF_PIPE: Self = Self(0b1);
1072    pub const TOP_OF_PIPE_KHR: Self = Self::TOP_OF_PIPE;
1073    pub const DRAW_INDIRECT: Self = Self(0b10);
1074    pub const DRAW_INDIRECT_KHR: Self = Self::DRAW_INDIRECT;
1075    pub const VERTEX_INPUT: Self = Self(0b100);
1076    pub const VERTEX_INPUT_KHR: Self = Self::VERTEX_INPUT;
1077    pub const VERTEX_SHADER: Self = Self(0b1000);
1078    pub const VERTEX_SHADER_KHR: Self = Self::VERTEX_SHADER;
1079    pub const TESSELLATION_CONTROL_SHADER: Self = Self(0b1_0000);
1080    pub const TESSELLATION_CONTROL_SHADER_KHR: Self = Self::TESSELLATION_CONTROL_SHADER;
1081    pub const TESSELLATION_EVALUATION_SHADER: Self = Self(0b10_0000);
1082    pub const TESSELLATION_EVALUATION_SHADER_KHR: Self = Self::TESSELLATION_EVALUATION_SHADER;
1083    pub const GEOMETRY_SHADER: Self = Self(0b100_0000);
1084    pub const GEOMETRY_SHADER_KHR: Self = Self::GEOMETRY_SHADER;
1085    pub const FRAGMENT_SHADER: Self = Self(0b1000_0000);
1086    pub const FRAGMENT_SHADER_KHR: Self = Self::FRAGMENT_SHADER;
1087    pub const EARLY_FRAGMENT_TESTS: Self = Self(0b1_0000_0000);
1088    pub const EARLY_FRAGMENT_TESTS_KHR: Self = Self::EARLY_FRAGMENT_TESTS;
1089    pub const LATE_FRAGMENT_TESTS: Self = Self(0b10_0000_0000);
1090    pub const LATE_FRAGMENT_TESTS_KHR: Self = Self::LATE_FRAGMENT_TESTS;
1091    pub const COLOR_ATTACHMENT_OUTPUT: Self = Self(0b100_0000_0000);
1092    pub const COLOR_ATTACHMENT_OUTPUT_KHR: Self = Self::COLOR_ATTACHMENT_OUTPUT;
1093    pub const COMPUTE_SHADER: Self = Self(0b1000_0000_0000);
1094    pub const COMPUTE_SHADER_KHR: Self = Self::COMPUTE_SHADER;
1095    pub const ALL_TRANSFER: Self = Self(0b1_0000_0000_0000);
1096    pub const ALL_TRANSFER_KHR: Self = Self::ALL_TRANSFER;
1097    pub const TRANSFER: Self = Self::ALL_TRANSFER_KHR;
1098    pub const TRANSFER_KHR: Self = Self::ALL_TRANSFER;
1099    pub const BOTTOM_OF_PIPE: Self = Self(0b10_0000_0000_0000);
1100    pub const BOTTOM_OF_PIPE_KHR: Self = Self::BOTTOM_OF_PIPE;
1101    pub const HOST: Self = Self(0b100_0000_0000_0000);
1102    pub const HOST_KHR: Self = Self::HOST;
1103    pub const ALL_GRAPHICS: Self = Self(0b1000_0000_0000_0000);
1104    pub const ALL_GRAPHICS_KHR: Self = Self::ALL_GRAPHICS;
1105    pub const ALL_COMMANDS: Self = Self(0b1_0000_0000_0000_0000);
1106    pub const ALL_COMMANDS_KHR: Self = Self::ALL_COMMANDS;
1107    pub const COPY: Self = Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000);
1108    pub const COPY_KHR: Self = Self::COPY;
1109    pub const RESOLVE: Self = Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000);
1110    pub const RESOLVE_KHR: Self = Self::RESOLVE;
1111    pub const BLIT: Self = Self(0b100_0000_0000_0000_0000_0000_0000_0000_0000);
1112    pub const BLIT_KHR: Self = Self::BLIT;
1113    pub const CLEAR: Self = Self(0b1000_0000_0000_0000_0000_0000_0000_0000_0000);
1114    pub const CLEAR_KHR: Self = Self::CLEAR;
1115    pub const INDEX_INPUT: Self = Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000);
1116    pub const INDEX_INPUT_KHR: Self = Self::INDEX_INPUT;
1117    pub const VERTEX_ATTRIBUTE_INPUT: Self =
1118        Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000_0000);
1119    pub const VERTEX_ATTRIBUTE_INPUT_KHR: Self = Self::VERTEX_ATTRIBUTE_INPUT;
1120    pub const PRE_RASTERIZATION_SHADERS: Self =
1121        Self(0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000);
1122    pub const PRE_RASTERIZATION_SHADERS_KHR: Self = Self::PRE_RASTERIZATION_SHADERS;
1123}
1124#[repr(transparent)]
1125#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1126#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubmitFlagBits.html>"]
1127pub struct SubmitFlags(pub(crate) Flags);
1128vk_bitflags_wrapped!(SubmitFlags, Flags);
1129impl SubmitFlags {
1130    pub const PROTECTED: Self = Self(0b1);
1131    pub const PROTECTED_KHR: Self = Self::PROTECTED;
1132}
1133#[repr(transparent)]
1134#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1135#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkEventCreateFlagBits.html>"]
1136pub struct EventCreateFlags(pub(crate) Flags);
1137vk_bitflags_wrapped!(EventCreateFlags, Flags);
1138impl EventCreateFlags {}
1139#[repr(transparent)]
1140#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1141#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateFlagBits.html>"]
1142pub struct PipelineLayoutCreateFlags(pub(crate) Flags);
1143vk_bitflags_wrapped!(PipelineLayoutCreateFlags, Flags);
1144impl PipelineLayoutCreateFlags {}
1145#[repr(transparent)]
1146#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1147#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineColorBlendStateCreateFlagBits.html>"]
1148pub struct PipelineColorBlendStateCreateFlags(pub(crate) Flags);
1149vk_bitflags_wrapped!(PipelineColorBlendStateCreateFlags, Flags);
1150impl PipelineColorBlendStateCreateFlags {}
1151#[repr(transparent)]
1152#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1153#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineDepthStencilStateCreateFlagBits.html>"]
1154pub struct PipelineDepthStencilStateCreateFlags(pub(crate) Flags);
1155vk_bitflags_wrapped!(PipelineDepthStencilStateCreateFlags, Flags);
1156impl PipelineDepthStencilStateCreateFlags {}
1157#[repr(transparent)]
1158#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1159#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineLibraryFlagBitsEXT.html>"]
1160pub struct GraphicsPipelineLibraryFlagsEXT(pub(crate) Flags);
1161vk_bitflags_wrapped!(GraphicsPipelineLibraryFlagsEXT, Flags);
1162impl GraphicsPipelineLibraryFlagsEXT {
1163    pub const VERTEX_INPUT_INTERFACE: Self = Self(0b1);
1164    pub const PRE_RASTERIZATION_SHADERS: Self = Self(0b10);
1165    pub const FRAGMENT_SHADER: Self = Self(0b100);
1166    pub const FRAGMENT_OUTPUT_INTERFACE: Self = Self(0b1000);
1167}
1168#[repr(transparent)]
1169#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1170#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceAddressBindingFlagBitsEXT.html>"]
1171pub struct DeviceAddressBindingFlagsEXT(pub(crate) Flags);
1172vk_bitflags_wrapped!(DeviceAddressBindingFlagsEXT, Flags);
1173impl DeviceAddressBindingFlagsEXT {
1174    pub const INTERNAL_OBJECT: Self = Self(0b1);
1175}
1176#[repr(transparent)]
1177#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1178#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFrameBoundaryFlagBitsEXT.html>"]
1179pub struct FrameBoundaryFlagsEXT(pub(crate) Flags);
1180vk_bitflags_wrapped!(FrameBoundaryFlagsEXT, Flags);
1181impl FrameBoundaryFlagsEXT {
1182    pub const FRAME_END: Self = Self(0b1);
1183}
1184#[repr(transparent)]
1185#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1186#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentScalingFlagBitsEXT.html>"]
1187pub struct PresentScalingFlagsEXT(pub(crate) Flags);
1188vk_bitflags_wrapped!(PresentScalingFlagsEXT, Flags);
1189impl PresentScalingFlagsEXT {
1190    pub const ONE_TO_ONE: Self = Self(0b1);
1191    pub const ASPECT_RATIO_STRETCH: Self = Self(0b10);
1192    pub const STRETCH: Self = Self(0b100);
1193}
1194#[repr(transparent)]
1195#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1196#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentGravityFlagBitsEXT.html>"]
1197pub struct PresentGravityFlagsEXT(pub(crate) Flags);
1198vk_bitflags_wrapped!(PresentGravityFlagsEXT, Flags);
1199impl PresentGravityFlagsEXT {
1200    pub const MIN: Self = Self(0b1);
1201    pub const MAX: Self = Self(0b10);
1202    pub const CENTERED: Self = Self(0b100);
1203}
1204#[repr(transparent)]
1205#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1206#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSchedulingControlsFlagBitsARM.html>"]
1207pub struct PhysicalDeviceSchedulingControlsFlagsARM(pub(crate) Flags64);
1208vk_bitflags_wrapped!(PhysicalDeviceSchedulingControlsFlagsARM, Flags64);
1209impl PhysicalDeviceSchedulingControlsFlagsARM {
1210    pub const SHADER_CORE_COUNT: Self = Self(0b1);
1211}
1212#[repr(transparent)]
1213#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1214#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoCodecOperationFlagBitsKHR.html>"]
1215pub struct VideoCodecOperationFlagsKHR(pub(crate) Flags);
1216vk_bitflags_wrapped!(VideoCodecOperationFlagsKHR, Flags);
1217impl VideoCodecOperationFlagsKHR {
1218    pub const NONE: Self = Self(0);
1219}
1220#[repr(transparent)]
1221#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1222#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoChromaSubsamplingFlagBitsKHR.html>"]
1223pub struct VideoChromaSubsamplingFlagsKHR(pub(crate) Flags);
1224vk_bitflags_wrapped!(VideoChromaSubsamplingFlagsKHR, Flags);
1225impl VideoChromaSubsamplingFlagsKHR {
1226    pub const INVALID: Self = Self(0);
1227    pub const MONOCHROME: Self = Self(0b1);
1228    pub const TYPE_420: Self = Self(0b10);
1229    pub const TYPE_422: Self = Self(0b100);
1230    pub const TYPE_444: Self = Self(0b1000);
1231}
1232#[repr(transparent)]
1233#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1234#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoComponentBitDepthFlagBitsKHR.html>"]
1235pub struct VideoComponentBitDepthFlagsKHR(pub(crate) Flags);
1236vk_bitflags_wrapped!(VideoComponentBitDepthFlagsKHR, Flags);
1237impl VideoComponentBitDepthFlagsKHR {
1238    pub const INVALID: Self = Self(0);
1239    pub const TYPE_8: Self = Self(0b1);
1240    pub const TYPE_10: Self = Self(0b100);
1241    pub const TYPE_12: Self = Self(0b1_0000);
1242}
1243#[repr(transparent)]
1244#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1245#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoCapabilityFlagBitsKHR.html>"]
1246pub struct VideoCapabilityFlagsKHR(pub(crate) Flags);
1247vk_bitflags_wrapped!(VideoCapabilityFlagsKHR, Flags);
1248impl VideoCapabilityFlagsKHR {
1249    pub const PROTECTED_CONTENT: Self = Self(0b1);
1250    pub const SEPARATE_REFERENCE_IMAGES: Self = Self(0b10);
1251}
1252#[repr(transparent)]
1253#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1254#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoSessionCreateFlagBitsKHR.html>"]
1255pub struct VideoSessionCreateFlagsKHR(pub(crate) Flags);
1256vk_bitflags_wrapped!(VideoSessionCreateFlagsKHR, Flags);
1257impl VideoSessionCreateFlagsKHR {
1258    pub const PROTECTED_CONTENT: Self = Self(0b1);
1259}
1260#[repr(transparent)]
1261#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1262#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureLayoutFlagBitsKHR.html>"]
1263pub struct VideoDecodeH264PictureLayoutFlagsKHR(pub(crate) Flags);
1264vk_bitflags_wrapped!(VideoDecodeH264PictureLayoutFlagsKHR, Flags);
1265impl VideoDecodeH264PictureLayoutFlagsKHR {
1266    pub const PROGRESSIVE: Self = Self(0);
1267    pub const INTERLACED_INTERLEAVED_LINES: Self = Self(0b1);
1268    pub const INTERLACED_SEPARATE_PLANES: Self = Self(0b10);
1269}
1270#[repr(transparent)]
1271#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1272#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoCodingControlFlagBitsKHR.html>"]
1273pub struct VideoCodingControlFlagsKHR(pub(crate) Flags);
1274vk_bitflags_wrapped!(VideoCodingControlFlagsKHR, Flags);
1275impl VideoCodingControlFlagsKHR {
1276    pub const RESET: Self = Self(0b1);
1277}
1278#[repr(transparent)]
1279#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1280#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeUsageFlagBitsKHR.html>"]
1281pub struct VideoDecodeUsageFlagsKHR(pub(crate) Flags);
1282vk_bitflags_wrapped!(VideoDecodeUsageFlagsKHR, Flags);
1283impl VideoDecodeUsageFlagsKHR {
1284    pub const DEFAULT: Self = Self(0);
1285    pub const TRANSCODING: Self = Self(0b1);
1286    pub const OFFLINE: Self = Self(0b10);
1287    pub const STREAMING: Self = Self(0b100);
1288}
1289#[repr(transparent)]
1290#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1291#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeCapabilityFlagBitsKHR.html>"]
1292pub struct VideoDecodeCapabilityFlagsKHR(pub(crate) Flags);
1293vk_bitflags_wrapped!(VideoDecodeCapabilityFlagsKHR, Flags);
1294impl VideoDecodeCapabilityFlagsKHR {
1295    pub const DPB_AND_OUTPUT_COINCIDE: Self = Self(0b1);
1296    pub const DPB_AND_OUTPUT_DISTINCT: Self = Self(0b10);
1297}
1298#[repr(transparent)]
1299#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1300#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeFlagBitsKHR.html>"]
1301pub struct VideoEncodeFlagsKHR(pub(crate) Flags);
1302vk_bitflags_wrapped!(VideoEncodeFlagsKHR, Flags);
1303impl VideoEncodeFlagsKHR {}
1304#[repr(transparent)]
1305#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1306#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeUsageFlagBitsKHR.html>"]
1307pub struct VideoEncodeUsageFlagsKHR(pub(crate) Flags);
1308vk_bitflags_wrapped!(VideoEncodeUsageFlagsKHR, Flags);
1309impl VideoEncodeUsageFlagsKHR {
1310    pub const DEFAULT: Self = Self(0);
1311    pub const TRANSCODING: Self = Self(0b1);
1312    pub const STREAMING: Self = Self(0b10);
1313    pub const RECORDING: Self = Self(0b100);
1314    pub const CONFERENCING: Self = Self(0b1000);
1315}
1316#[repr(transparent)]
1317#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1318#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeContentFlagBitsKHR.html>"]
1319pub struct VideoEncodeContentFlagsKHR(pub(crate) Flags);
1320vk_bitflags_wrapped!(VideoEncodeContentFlagsKHR, Flags);
1321impl VideoEncodeContentFlagsKHR {
1322    pub const DEFAULT: Self = Self(0);
1323    pub const CAMERA: Self = Self(0b1);
1324    pub const DESKTOP: Self = Self(0b10);
1325    pub const RENDERED: Self = Self(0b100);
1326}
1327#[repr(transparent)]
1328#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1329#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeCapabilityFlagBitsKHR.html>"]
1330pub struct VideoEncodeCapabilityFlagsKHR(pub(crate) Flags);
1331vk_bitflags_wrapped!(VideoEncodeCapabilityFlagsKHR, Flags);
1332impl VideoEncodeCapabilityFlagsKHR {
1333    pub const PRECEDING_EXTERNALLY_ENCODED_BYTES: Self = Self(0b1);
1334    pub const INSUFFICIENTSTREAM_BUFFER_RANGE_DETECTION: Self = Self(0b10);
1335}
1336#[repr(transparent)]
1337#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1338#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeFeedbackFlagBitsKHR.html>"]
1339pub struct VideoEncodeFeedbackFlagsKHR(pub(crate) Flags);
1340vk_bitflags_wrapped!(VideoEncodeFeedbackFlagsKHR, Flags);
1341impl VideoEncodeFeedbackFlagsKHR {
1342    pub const BITSTREAM_BUFFER_OFFSET: Self = Self(0b1);
1343    pub const BITSTREAM_BYTES_WRITTEN: Self = Self(0b10);
1344    pub const BITSTREAM_HAS_OVERRIDES: Self = Self(0b100);
1345}
1346#[repr(transparent)]
1347#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1348#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeRateControlModeFlagBitsKHR.html>"]
1349pub struct VideoEncodeRateControlModeFlagsKHR(pub(crate) Flags);
1350vk_bitflags_wrapped!(VideoEncodeRateControlModeFlagsKHR, Flags);
1351impl VideoEncodeRateControlModeFlagsKHR {
1352    pub const DEFAULT: Self = Self(0);
1353    pub const DISABLED: Self = Self(0b1);
1354    pub const CBR: Self = Self(0b10);
1355    pub const VBR: Self = Self(0b100);
1356}
1357#[repr(transparent)]
1358#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1359#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264CapabilityFlagBitsKHR.html>"]
1360pub struct VideoEncodeH264CapabilityFlagsKHR(pub(crate) Flags);
1361vk_bitflags_wrapped!(VideoEncodeH264CapabilityFlagsKHR, Flags);
1362impl VideoEncodeH264CapabilityFlagsKHR {
1363    pub const HRD_COMPLIANCE: Self = Self(0b1);
1364    pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = Self(0b10);
1365    pub const ROW_UNALIGNED_SLICE: Self = Self(0b100);
1366    pub const DIFFERENT_SLICE_TYPE: Self = Self(0b1000);
1367    pub const B_FRAME_IN_L0_LIST: Self = Self(0b1_0000);
1368    pub const B_FRAME_IN_L1_LIST: Self = Self(0b10_0000);
1369    pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = Self(0b100_0000);
1370    pub const PER_SLICE_CONSTANT_QP: Self = Self(0b1000_0000);
1371    pub const GENERATE_PREFIX_NALU: Self = Self(0b1_0000_0000);
1372}
1373#[repr(transparent)]
1374#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1375#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264StdFlagBitsKHR.html>"]
1376pub struct VideoEncodeH264StdFlagsKHR(pub(crate) Flags);
1377vk_bitflags_wrapped!(VideoEncodeH264StdFlagsKHR, Flags);
1378impl VideoEncodeH264StdFlagsKHR {
1379    pub const SEPARATE_COLOR_PLANE_FLAG_SET: Self = Self(0b1);
1380    pub const QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET: Self = Self(0b10);
1381    pub const SCALING_MATRIX_PRESENT_FLAG_SET: Self = Self(0b100);
1382    pub const CHROMA_QP_INDEX_OFFSET: Self = Self(0b1000);
1383    pub const SECOND_CHROMA_QP_INDEX_OFFSET: Self = Self(0b1_0000);
1384    pub const PIC_INIT_QP_MINUS26: Self = Self(0b10_0000);
1385    pub const WEIGHTED_PRED_FLAG_SET: Self = Self(0b100_0000);
1386    pub const WEIGHTED_BIPRED_IDC_EXPLICIT: Self = Self(0b1000_0000);
1387    pub const WEIGHTED_BIPRED_IDC_IMPLICIT: Self = Self(0b1_0000_0000);
1388    pub const TRANSFORM_8X8_MODE_FLAG_SET: Self = Self(0b10_0000_0000);
1389    pub const DIRECT_SPATIAL_MV_PRED_FLAG_UNSET: Self = Self(0b100_0000_0000);
1390    pub const ENTROPY_CODING_MODE_FLAG_UNSET: Self = Self(0b1000_0000_0000);
1391    pub const ENTROPY_CODING_MODE_FLAG_SET: Self = Self(0b1_0000_0000_0000);
1392    pub const DIRECT_8X8_INFERENCE_FLAG_UNSET: Self = Self(0b10_0000_0000_0000);
1393    pub const CONSTRAINED_INTRA_PRED_FLAG_SET: Self = Self(0b100_0000_0000_0000);
1394    pub const DEBLOCKING_FILTER_DISABLED: Self = Self(0b1000_0000_0000_0000);
1395    pub const DEBLOCKING_FILTER_ENABLED: Self = Self(0b1_0000_0000_0000_0000);
1396    pub const DEBLOCKING_FILTER_PARTIAL: Self = Self(0b10_0000_0000_0000_0000);
1397    pub const SLICE_QP_DELTA: Self = Self(0b1000_0000_0000_0000_0000);
1398    pub const DIFFERENT_SLICE_QP_DELTA: Self = Self(0b1_0000_0000_0000_0000_0000);
1399}
1400#[repr(transparent)]
1401#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1402#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264RateControlFlagBitsKHR.html>"]
1403pub struct VideoEncodeH264RateControlFlagsKHR(pub(crate) Flags);
1404vk_bitflags_wrapped!(VideoEncodeH264RateControlFlagsKHR, Flags);
1405impl VideoEncodeH264RateControlFlagsKHR {
1406    pub const ATTEMPT_HRD_COMPLIANCE: Self = Self(0b1);
1407    pub const REGULAR_GOP: Self = Self(0b10);
1408    pub const REFERENCE_PATTERN_FLAT: Self = Self(0b100);
1409    pub const REFERENCE_PATTERN_DYADIC: Self = Self(0b1000);
1410    pub const TEMPORAL_LAYER_PATTERN_DYADIC: Self = Self(0b1_0000);
1411}
1412#[repr(transparent)]
1413#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1414#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkHostImageCopyFlagBitsEXT.html>"]
1415pub struct HostImageCopyFlagsEXT(pub(crate) Flags);
1416vk_bitflags_wrapped!(HostImageCopyFlagsEXT, Flags);
1417impl HostImageCopyFlagsEXT {
1418    pub const MEMCPY: Self = Self(0b1);
1419}
1420#[repr(transparent)]
1421#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1422#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageFormatConstraintsFlagBitsFUCHSIA.html>"]
1423pub struct ImageFormatConstraintsFlagsFUCHSIA(pub(crate) Flags);
1424vk_bitflags_wrapped!(ImageFormatConstraintsFlagsFUCHSIA, Flags);
1425impl ImageFormatConstraintsFlagsFUCHSIA {}
1426#[repr(transparent)]
1427#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1428#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageConstraintsInfoFlagBitsFUCHSIA.html>"]
1429pub struct ImageConstraintsInfoFlagsFUCHSIA(pub(crate) Flags);
1430vk_bitflags_wrapped!(ImageConstraintsInfoFlagsFUCHSIA, Flags);
1431impl ImageConstraintsInfoFlagsFUCHSIA {
1432    pub const CPU_READ_RARELY: Self = Self(0b1);
1433    pub const CPU_READ_OFTEN: Self = Self(0b10);
1434    pub const CPU_WRITE_RARELY: Self = Self(0b100);
1435    pub const CPU_WRITE_OFTEN: Self = Self(0b1000);
1436    pub const PROTECTED_OPTIONAL: Self = Self(0b1_0000);
1437}
1438#[repr(transparent)]
1439#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1440#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits2.html>"]
1441pub struct FormatFeatureFlags2(pub(crate) Flags64);
1442vk_bitflags_wrapped!(FormatFeatureFlags2, Flags64);
1443impl FormatFeatureFlags2 {
1444    pub const SAMPLED_IMAGE: Self = Self(0b1);
1445    pub const SAMPLED_IMAGE_KHR: Self = Self::SAMPLED_IMAGE;
1446    pub const STORAGE_IMAGE: Self = Self(0b10);
1447    pub const STORAGE_IMAGE_KHR: Self = Self::STORAGE_IMAGE;
1448    pub const STORAGE_IMAGE_ATOMIC: Self = Self(0b100);
1449    pub const STORAGE_IMAGE_ATOMIC_KHR: Self = Self::STORAGE_IMAGE_ATOMIC;
1450    pub const UNIFORM_TEXEL_BUFFER: Self = Self(0b1000);
1451    pub const UNIFORM_TEXEL_BUFFER_KHR: Self = Self::UNIFORM_TEXEL_BUFFER;
1452    pub const STORAGE_TEXEL_BUFFER: Self = Self(0b1_0000);
1453    pub const STORAGE_TEXEL_BUFFER_KHR: Self = Self::STORAGE_TEXEL_BUFFER;
1454    pub const STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(0b10_0000);
1455    pub const STORAGE_TEXEL_BUFFER_ATOMIC_KHR: Self = Self::STORAGE_TEXEL_BUFFER_ATOMIC;
1456    pub const VERTEX_BUFFER: Self = Self(0b100_0000);
1457    pub const VERTEX_BUFFER_KHR: Self = Self::VERTEX_BUFFER;
1458    pub const COLOR_ATTACHMENT: Self = Self(0b1000_0000);
1459    pub const COLOR_ATTACHMENT_KHR: Self = Self::COLOR_ATTACHMENT;
1460    pub const COLOR_ATTACHMENT_BLEND: Self = Self(0b1_0000_0000);
1461    pub const COLOR_ATTACHMENT_BLEND_KHR: Self = Self::COLOR_ATTACHMENT_BLEND;
1462    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0b10_0000_0000);
1463    pub const DEPTH_STENCIL_ATTACHMENT_KHR: Self = Self::DEPTH_STENCIL_ATTACHMENT;
1464    pub const BLIT_SRC: Self = Self(0b100_0000_0000);
1465    pub const BLIT_SRC_KHR: Self = Self::BLIT_SRC;
1466    pub const BLIT_DST: Self = Self(0b1000_0000_0000);
1467    pub const BLIT_DST_KHR: Self = Self::BLIT_DST;
1468    pub const SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(0b1_0000_0000_0000);
1469    pub const SAMPLED_IMAGE_FILTER_LINEAR_KHR: Self = Self::SAMPLED_IMAGE_FILTER_LINEAR;
1470    pub const SAMPLED_IMAGE_FILTER_CUBIC: Self = Self(0b10_0000_0000_0000);
1471    pub const SAMPLED_IMAGE_FILTER_CUBIC_EXT: Self = Self::SAMPLED_IMAGE_FILTER_CUBIC;
1472    pub const TRANSFER_SRC: Self = Self(0b100_0000_0000_0000);
1473    pub const TRANSFER_SRC_KHR: Self = Self::TRANSFER_SRC;
1474    pub const TRANSFER_DST: Self = Self(0b1000_0000_0000_0000);
1475    pub const TRANSFER_DST_KHR: Self = Self::TRANSFER_DST;
1476    pub const SAMPLED_IMAGE_FILTER_MINMAX: Self = Self(0b1_0000_0000_0000_0000);
1477    pub const SAMPLED_IMAGE_FILTER_MINMAX_KHR: Self = Self::SAMPLED_IMAGE_FILTER_MINMAX;
1478    pub const MIDPOINT_CHROMA_SAMPLES: Self = Self(0b10_0000_0000_0000_0000);
1479    pub const MIDPOINT_CHROMA_SAMPLES_KHR: Self = Self::MIDPOINT_CHROMA_SAMPLES;
1480    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER: Self = Self(0b100_0000_0000_0000_0000);
1481    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_KHR: Self =
1482        Self::SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER;
1483    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER: Self =
1484        Self(0b1000_0000_0000_0000_0000);
1485    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_KHR: Self =
1486        Self::SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER;
1487    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT: Self =
1488        Self(0b1_0000_0000_0000_0000_0000);
1489    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_KHR: Self =
1490        Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT;
1491    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE: Self =
1492        Self(0b10_0000_0000_0000_0000_0000);
1493    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_KHR: Self =
1494        Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE;
1495    pub const DISJOINT: Self = Self(0b100_0000_0000_0000_0000_0000);
1496    pub const DISJOINT_KHR: Self = Self::DISJOINT;
1497    pub const COSITED_CHROMA_SAMPLES: Self = Self(0b1000_0000_0000_0000_0000_0000);
1498    pub const COSITED_CHROMA_SAMPLES_KHR: Self = Self::COSITED_CHROMA_SAMPLES;
1499    pub const STORAGE_READ_WITHOUT_FORMAT: Self = Self(0b1000_0000_0000_0000_0000_0000_0000_0000);
1500    pub const STORAGE_READ_WITHOUT_FORMAT_KHR: Self = Self::STORAGE_READ_WITHOUT_FORMAT;
1501    pub const STORAGE_WRITE_WITHOUT_FORMAT: Self =
1502        Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000);
1503    pub const STORAGE_WRITE_WITHOUT_FORMAT_KHR: Self = Self::STORAGE_WRITE_WITHOUT_FORMAT;
1504    pub const SAMPLED_IMAGE_DEPTH_COMPARISON: Self =
1505        Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000);
1506    pub const SAMPLED_IMAGE_DEPTH_COMPARISON_KHR: Self = Self::SAMPLED_IMAGE_DEPTH_COMPARISON;
1507}
1508#[repr(transparent)]
1509#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1510#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderingFlagBits.html>"]
1511pub struct RenderingFlags(pub(crate) Flags);
1512vk_bitflags_wrapped!(RenderingFlags, Flags);
1513impl RenderingFlags {
1514    pub const CONTENTS_SECONDARY_COMMAND_BUFFERS: Self = Self(0b1);
1515    pub const CONTENTS_SECONDARY_COMMAND_BUFFERS_KHR: Self =
1516        Self::CONTENTS_SECONDARY_COMMAND_BUFFERS;
1517    pub const SUSPENDING: Self = Self(0b10);
1518    pub const SUSPENDING_KHR: Self = Self::SUSPENDING;
1519    pub const RESUMING: Self = Self(0b100);
1520    pub const RESUMING_KHR: Self = Self::RESUMING;
1521}
1522#[repr(transparent)]
1523#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1524#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265CapabilityFlagBitsKHR.html>"]
1525pub struct VideoEncodeH265CapabilityFlagsKHR(pub(crate) Flags);
1526vk_bitflags_wrapped!(VideoEncodeH265CapabilityFlagsKHR, Flags);
1527impl VideoEncodeH265CapabilityFlagsKHR {
1528    pub const HRD_COMPLIANCE: Self = Self(0b1);
1529    pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = Self(0b10);
1530    pub const ROW_UNALIGNED_SLICE_SEGMENT: Self = Self(0b100);
1531    pub const DIFFERENT_SLICE_SEGMENT_TYPE: Self = Self(0b1000);
1532    pub const B_FRAME_IN_L0_LIST: Self = Self(0b1_0000);
1533    pub const B_FRAME_IN_L1_LIST: Self = Self(0b10_0000);
1534    pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = Self(0b100_0000);
1535    pub const PER_SLICE_SEGMENT_CONSTANT_QP: Self = Self(0b1000_0000);
1536    pub const MULTIPLE_TILES_PER_SLICE_SEGMENT: Self = Self(0b1_0000_0000);
1537    pub const MULTIPLE_SLICE_SEGMENTS_PER_TILE: Self = Self(0b10_0000_0000);
1538}
1539#[repr(transparent)]
1540#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1541#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265StdFlagBitsKHR.html>"]
1542pub struct VideoEncodeH265StdFlagsKHR(pub(crate) Flags);
1543vk_bitflags_wrapped!(VideoEncodeH265StdFlagsKHR, Flags);
1544impl VideoEncodeH265StdFlagsKHR {
1545    pub const SEPARATE_COLOR_PLANE_FLAG_SET: Self = Self(0b1);
1546    pub const SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET: Self = Self(0b10);
1547    pub const SCALING_LIST_DATA_PRESENT_FLAG_SET: Self = Self(0b100);
1548    pub const PCM_ENABLED_FLAG_SET: Self = Self(0b1000);
1549    pub const SPS_TEMPORAL_MVP_ENABLED_FLAG_SET: Self = Self(0b1_0000);
1550    pub const INIT_QP_MINUS26: Self = Self(0b10_0000);
1551    pub const WEIGHTED_PRED_FLAG_SET: Self = Self(0b100_0000);
1552    pub const WEIGHTED_BIPRED_FLAG_SET: Self = Self(0b1000_0000);
1553    pub const LOG2_PARALLEL_MERGE_LEVEL_MINUS2: Self = Self(0b1_0000_0000);
1554    pub const SIGN_DATA_HIDING_ENABLED_FLAG_SET: Self = Self(0b10_0000_0000);
1555    pub const TRANSFORM_SKIP_ENABLED_FLAG_SET: Self = Self(0b100_0000_0000);
1556    pub const TRANSFORM_SKIP_ENABLED_FLAG_UNSET: Self = Self(0b1000_0000_0000);
1557    pub const PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET: Self = Self(0b1_0000_0000_0000);
1558    pub const TRANSQUANT_BYPASS_ENABLED_FLAG_SET: Self = Self(0b10_0000_0000_0000);
1559    pub const CONSTRAINED_INTRA_PRED_FLAG_SET: Self = Self(0b100_0000_0000_0000);
1560    pub const ENTROPY_CODING_SYNC_ENABLED_FLAG_SET: Self = Self(0b1000_0000_0000_0000);
1561    pub const DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET: Self = Self(0b1_0000_0000_0000_0000);
1562    pub const DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET: Self = Self(0b10_0000_0000_0000_0000);
1563    pub const DEPENDENT_SLICE_SEGMENT_FLAG_SET: Self = Self(0b100_0000_0000_0000_0000);
1564    pub const SLICE_QP_DELTA: Self = Self(0b1000_0000_0000_0000_0000);
1565    pub const DIFFERENT_SLICE_QP_DELTA: Self = Self(0b1_0000_0000_0000_0000_0000);
1566}
1567#[repr(transparent)]
1568#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1569#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265RateControlFlagBitsKHR.html>"]
1570pub struct VideoEncodeH265RateControlFlagsKHR(pub(crate) Flags);
1571vk_bitflags_wrapped!(VideoEncodeH265RateControlFlagsKHR, Flags);
1572impl VideoEncodeH265RateControlFlagsKHR {
1573    pub const ATTEMPT_HRD_COMPLIANCE: Self = Self(0b1);
1574    pub const REGULAR_GOP: Self = Self(0b10);
1575    pub const REFERENCE_PATTERN_FLAT: Self = Self(0b100);
1576    pub const REFERENCE_PATTERN_DYADIC: Self = Self(0b1000);
1577    pub const TEMPORAL_SUB_LAYER_PATTERN_DYADIC: Self = Self(0b1_0000);
1578}
1579#[repr(transparent)]
1580#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1581#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265CtbSizeFlagBitsKHR.html>"]
1582pub struct VideoEncodeH265CtbSizeFlagsKHR(pub(crate) Flags);
1583vk_bitflags_wrapped!(VideoEncodeH265CtbSizeFlagsKHR, Flags);
1584impl VideoEncodeH265CtbSizeFlagsKHR {
1585    pub const TYPE_16: Self = Self(0b1);
1586    pub const TYPE_32: Self = Self(0b10);
1587    pub const TYPE_64: Self = Self(0b100);
1588}
1589#[repr(transparent)]
1590#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1591#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265TransformBlockSizeFlagBitsKHR.html>"]
1592pub struct VideoEncodeH265TransformBlockSizeFlagsKHR(pub(crate) Flags);
1593vk_bitflags_wrapped!(VideoEncodeH265TransformBlockSizeFlagsKHR, Flags);
1594impl VideoEncodeH265TransformBlockSizeFlagsKHR {
1595    pub const TYPE_4: Self = Self(0b1);
1596    pub const TYPE_8: Self = Self(0b10);
1597    pub const TYPE_16: Self = Self(0b100);
1598    pub const TYPE_32: Self = Self(0b1000);
1599}
1600#[repr(transparent)]
1601#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1602#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExportMetalObjectTypeFlagBitsEXT.html>"]
1603pub struct ExportMetalObjectTypeFlagsEXT(pub(crate) Flags);
1604vk_bitflags_wrapped!(ExportMetalObjectTypeFlagsEXT, Flags);
1605impl ExportMetalObjectTypeFlagsEXT {
1606    pub const METAL_DEVICE: Self = Self(0b1);
1607    pub const METAL_COMMAND_QUEUE: Self = Self(0b10);
1608    pub const METAL_BUFFER: Self = Self(0b100);
1609    pub const METAL_TEXTURE: Self = Self(0b1000);
1610    pub const METAL_IOSURFACE: Self = Self(0b1_0000);
1611    pub const METAL_SHARED_EVENT: Self = Self(0b10_0000);
1612}
1613#[repr(transparent)]
1614#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1615#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateFlagBits.html>"]
1616pub struct InstanceCreateFlags(pub(crate) Flags);
1617vk_bitflags_wrapped!(InstanceCreateFlags, Flags);
1618impl InstanceCreateFlags {}
1619#[repr(transparent)]
1620#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1621#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCompressionFlagBitsEXT.html>"]
1622pub struct ImageCompressionFlagsEXT(pub(crate) Flags);
1623vk_bitflags_wrapped!(ImageCompressionFlagsEXT, Flags);
1624impl ImageCompressionFlagsEXT {
1625    pub const DEFAULT: Self = Self(0);
1626    pub const FIXED_RATE_DEFAULT: Self = Self(0b1);
1627    pub const FIXED_RATE_EXPLICIT: Self = Self(0b10);
1628    pub const DISABLED: Self = Self(0b100);
1629}
1630#[repr(transparent)]
1631#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1632#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCompressionFixedRateFlagBitsEXT.html>"]
1633pub struct ImageCompressionFixedRateFlagsEXT(pub(crate) Flags);
1634vk_bitflags_wrapped!(ImageCompressionFixedRateFlagsEXT, Flags);
1635impl ImageCompressionFixedRateFlagsEXT {
1636    pub const NONE: Self = Self(0);
1637    pub const TYPE_1BPC: Self = Self(0b1);
1638    pub const TYPE_2BPC: Self = Self(0b10);
1639    pub const TYPE_3BPC: Self = Self(0b100);
1640    pub const TYPE_4BPC: Self = Self(0b1000);
1641    pub const TYPE_5BPC: Self = Self(0b1_0000);
1642    pub const TYPE_6BPC: Self = Self(0b10_0000);
1643    pub const TYPE_7BPC: Self = Self(0b100_0000);
1644    pub const TYPE_8BPC: Self = Self(0b1000_0000);
1645    pub const TYPE_9BPC: Self = Self(0b1_0000_0000);
1646    pub const TYPE_10BPC: Self = Self(0b10_0000_0000);
1647    pub const TYPE_11BPC: Self = Self(0b100_0000_0000);
1648    pub const TYPE_12BPC: Self = Self(0b1000_0000_0000);
1649    pub const TYPE_13BPC: Self = Self(0b1_0000_0000_0000);
1650    pub const TYPE_14BPC: Self = Self(0b10_0000_0000_0000);
1651    pub const TYPE_15BPC: Self = Self(0b100_0000_0000_0000);
1652    pub const TYPE_16BPC: Self = Self(0b1000_0000_0000_0000);
1653    pub const TYPE_17BPC: Self = Self(0b1_0000_0000_0000_0000);
1654    pub const TYPE_18BPC: Self = Self(0b10_0000_0000_0000_0000);
1655    pub const TYPE_19BPC: Self = Self(0b100_0000_0000_0000_0000);
1656    pub const TYPE_20BPC: Self = Self(0b1000_0000_0000_0000_0000);
1657    pub const TYPE_21BPC: Self = Self(0b1_0000_0000_0000_0000_0000);
1658    pub const TYPE_22BPC: Self = Self(0b10_0000_0000_0000_0000_0000);
1659    pub const TYPE_23BPC: Self = Self(0b100_0000_0000_0000_0000_0000);
1660    pub const TYPE_24BPC: Self = Self(0b1000_0000_0000_0000_0000_0000);
1661}
1662#[repr(transparent)]
1663#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1664#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowGridSizeFlagBitsNV.html>"]
1665pub struct OpticalFlowGridSizeFlagsNV(pub(crate) Flags);
1666vk_bitflags_wrapped!(OpticalFlowGridSizeFlagsNV, Flags);
1667impl OpticalFlowGridSizeFlagsNV {
1668    pub const UNKNOWN: Self = Self(0);
1669    pub const TYPE_1X1: Self = Self(0b1);
1670    pub const TYPE_2X2: Self = Self(0b10);
1671    pub const TYPE_4X4: Self = Self(0b100);
1672    pub const TYPE_8X8: Self = Self(0b1000);
1673}
1674#[repr(transparent)]
1675#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1676#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowUsageFlagBitsNV.html>"]
1677pub struct OpticalFlowUsageFlagsNV(pub(crate) Flags);
1678vk_bitflags_wrapped!(OpticalFlowUsageFlagsNV, Flags);
1679impl OpticalFlowUsageFlagsNV {
1680    pub const UNKNOWN: Self = Self(0);
1681    pub const INPUT: Self = Self(0b1);
1682    pub const OUTPUT: Self = Self(0b10);
1683    pub const HINT: Self = Self(0b100);
1684    pub const COST: Self = Self(0b1000);
1685    pub const GLOBAL_FLOW: Self = Self(0b1_0000);
1686}
1687#[repr(transparent)]
1688#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1689#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowSessionCreateFlagBitsNV.html>"]
1690pub struct OpticalFlowSessionCreateFlagsNV(pub(crate) Flags);
1691vk_bitflags_wrapped!(OpticalFlowSessionCreateFlagsNV, Flags);
1692impl OpticalFlowSessionCreateFlagsNV {
1693    pub const ENABLE_HINT: Self = Self(0b1);
1694    pub const ENABLE_COST: Self = Self(0b10);
1695    pub const ENABLE_GLOBAL_FLOW: Self = Self(0b100);
1696    pub const ALLOW_REGIONS: Self = Self(0b1000);
1697    pub const BOTH_DIRECTIONS: Self = Self(0b1_0000);
1698}
1699#[repr(transparent)]
1700#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1701#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowExecuteFlagBitsNV.html>"]
1702pub struct OpticalFlowExecuteFlagsNV(pub(crate) Flags);
1703vk_bitflags_wrapped!(OpticalFlowExecuteFlagsNV, Flags);
1704impl OpticalFlowExecuteFlagsNV {
1705    pub const DISABLE_TEMPORAL_HINTS: Self = Self(0b1);
1706}
1707#[repr(transparent)]
1708#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1709#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBuildMicromapFlagBitsEXT.html>"]
1710pub struct BuildMicromapFlagsEXT(pub(crate) Flags);
1711vk_bitflags_wrapped!(BuildMicromapFlagsEXT, Flags);
1712impl BuildMicromapFlagsEXT {
1713    pub const PREFER_FAST_TRACE: Self = Self(0b1);
1714    pub const PREFER_FAST_BUILD: Self = Self(0b10);
1715    pub const ALLOW_COMPACTION: Self = Self(0b100);
1716}
1717#[repr(transparent)]
1718#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1719#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMicromapCreateFlagBitsEXT.html>"]
1720pub struct MicromapCreateFlagsEXT(pub(crate) Flags);
1721vk_bitflags_wrapped!(MicromapCreateFlagsEXT, Flags);
1722impl MicromapCreateFlagsEXT {
1723    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(0b1);
1724}
1725#[repr(transparent)]
1726#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1727#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderCreateFlagBitsEXT.html>"]
1728pub struct ShaderCreateFlagsEXT(pub(crate) Flags);
1729vk_bitflags_wrapped!(ShaderCreateFlagsEXT, Flags);
1730impl ShaderCreateFlagsEXT {
1731    pub const LINK_STAGE: Self = Self(0b1);
1732}
1733#[repr(transparent)]
1734#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1735#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryUnmapFlagBitsKHR.html>"]
1736pub struct MemoryUnmapFlagsKHR(pub(crate) Flags);
1737vk_bitflags_wrapped!(MemoryUnmapFlagsKHR, Flags);
1738impl MemoryUnmapFlagsKHR {}