Skip to main content

jay_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/VkBufferUsageFlagBits2.html>"]
141pub struct BufferUsageFlags2(pub(crate) Flags64);
142vk_bitflags_wrapped!(BufferUsageFlags2, Flags64);
143impl BufferUsageFlags2 {
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/VkPipelineCreateFlagBits2.html>"]
247pub struct PipelineCreateFlags2(pub(crate) Flags64);
248vk_bitflags_wrapped!(PipelineCreateFlags2, Flags64);
249impl PipelineCreateFlags2 {
250    pub const DISABLE_OPTIMIZATION: Self = Self(0b1);
251    pub const ALLOW_DERIVATIVES: Self = Self(0b10);
252    pub const DERIVATIVE: Self = Self(0b100);
253    pub const VIEW_INDEX_FROM_DEVICE_INDEX: Self = Self(0b1000);
254    pub const DISPATCH_BASE: Self = Self(0b1_0000);
255    pub const FAIL_ON_PIPELINE_COMPILE_REQUIRED: Self = Self(0b1_0000_0000);
256    pub const EARLY_RETURN_ON_FAILURE: Self = Self(0b10_0000_0000);
257    pub const NO_PROTECTED_ACCESS: Self = Self(0b1000_0000_0000_0000_0000_0000_0000);
258    pub const PROTECTED_ACCESS_ONLY: Self = Self(0b100_0000_0000_0000_0000_0000_0000_0000);
259}
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/VkPipelineShaderStageCreateFlagBits.html>"]
263pub struct PipelineShaderStageCreateFlags(pub(crate) Flags);
264vk_bitflags_wrapped!(PipelineShaderStageCreateFlags, Flags);
265impl PipelineShaderStageCreateFlags {}
266#[repr(transparent)]
267#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
268#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html>"]
269pub struct ColorComponentFlags(pub(crate) Flags);
270vk_bitflags_wrapped!(ColorComponentFlags, Flags);
271impl ColorComponentFlags {
272    pub const R: Self = Self(0b1);
273    pub const G: Self = Self(0b10);
274    pub const B: Self = Self(0b100);
275    pub const A: Self = Self(0b1000);
276}
277#[repr(transparent)]
278#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
279#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceCreateFlagBits.html>"]
280pub struct FenceCreateFlags(pub(crate) Flags);
281vk_bitflags_wrapped!(FenceCreateFlags, Flags);
282impl FenceCreateFlags {
283    pub const SIGNALED: Self = Self(0b1);
284}
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/VkSemaphoreCreateFlagBits.html>"]
288pub struct SemaphoreCreateFlags(pub(crate) Flags);
289vk_bitflags_wrapped!(SemaphoreCreateFlags, Flags);
290impl SemaphoreCreateFlags {}
291#[repr(transparent)]
292#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
293#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html>"]
294pub struct FormatFeatureFlags(pub(crate) Flags);
295vk_bitflags_wrapped!(FormatFeatureFlags, Flags);
296impl FormatFeatureFlags {
297    #[doc = "Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"]
298    pub const SAMPLED_IMAGE: Self = Self(0b1);
299    #[doc = "Format can be used for storage images (STORAGE_IMAGE descriptor type)"]
300    pub const STORAGE_IMAGE: Self = Self(0b10);
301    #[doc = "Format supports atomic operations in case it is used for storage images"]
302    pub const STORAGE_IMAGE_ATOMIC: Self = Self(0b100);
303    #[doc = "Format can be used for uniform texel buffers (TBOs)"]
304    pub const UNIFORM_TEXEL_BUFFER: Self = Self(0b1000);
305    #[doc = "Format can be used for storage texel buffers (IBOs)"]
306    pub const STORAGE_TEXEL_BUFFER: Self = Self(0b1_0000);
307    #[doc = "Format supports atomic operations in case it is used for storage texel buffers"]
308    pub const STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(0b10_0000);
309    #[doc = "Format can be used for vertex buffers (VBOs)"]
310    pub const VERTEX_BUFFER: Self = Self(0b100_0000);
311    #[doc = "Format can be used for color attachment images"]
312    pub const COLOR_ATTACHMENT: Self = Self(0b1000_0000);
313    #[doc = "Format supports blending in case it is used for color attachment images"]
314    pub const COLOR_ATTACHMENT_BLEND: Self = Self(0b1_0000_0000);
315    #[doc = "Format can be used for depth/stencil attachment images"]
316    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0b10_0000_0000);
317    #[doc = "Format can be used as the source image of blits with vkCmdBlitImage"]
318    pub const BLIT_SRC: Self = Self(0b100_0000_0000);
319    #[doc = "Format can be used as the destination image of blits with vkCmdBlitImage"]
320    pub const BLIT_DST: Self = Self(0b1000_0000_0000);
321    #[doc = "Format can be filtered with VK_FILTER_LINEAR when being sampled"]
322    pub const SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(0b1_0000_0000_0000);
323}
324#[repr(transparent)]
325#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
326#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlagBits.html>"]
327pub struct QueryControlFlags(pub(crate) Flags);
328vk_bitflags_wrapped!(QueryControlFlags, Flags);
329impl QueryControlFlags {
330    #[doc = "Require precise results to be collected by the query"]
331    pub const PRECISE: Self = Self(0b1);
332}
333#[repr(transparent)]
334#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
335#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html>"]
336pub struct QueryResultFlags(pub(crate) Flags);
337vk_bitflags_wrapped!(QueryResultFlags, Flags);
338impl QueryResultFlags {
339    #[doc = "Results of the queries are written to the destination buffer as 64-bit values"]
340    pub const TYPE_64: Self = Self(0b1);
341    #[doc = "Results of the queries are waited on before proceeding with the result copy"]
342    pub const WAIT: Self = Self(0b10);
343    #[doc = "Besides the results of the query, the availability of the results is also written"]
344    pub const WITH_AVAILABILITY: Self = Self(0b100);
345    #[doc = "Copy the partial results of the query even if the final results are not available"]
346    pub const PARTIAL: Self = Self(0b1000);
347}
348#[repr(transparent)]
349#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
350#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html>"]
351pub struct CommandBufferUsageFlags(pub(crate) Flags);
352vk_bitflags_wrapped!(CommandBufferUsageFlags, Flags);
353impl CommandBufferUsageFlags {
354    pub const ONE_TIME_SUBMIT: Self = Self(0b1);
355    pub const RENDER_PASS_CONTINUE: Self = Self(0b10);
356    #[doc = "Command buffer may be submitted/executed more than once simultaneously"]
357    pub const SIMULTANEOUS_USE: Self = Self(0b100);
358}
359#[repr(transparent)]
360#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
361#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html>"]
362pub struct QueryPipelineStatisticFlags(pub(crate) Flags);
363vk_bitflags_wrapped!(QueryPipelineStatisticFlags, Flags);
364impl QueryPipelineStatisticFlags {
365    #[doc = "Optional"]
366    pub const INPUT_ASSEMBLY_VERTICES: Self = Self(0b1);
367    #[doc = "Optional"]
368    pub const INPUT_ASSEMBLY_PRIMITIVES: Self = Self(0b10);
369    #[doc = "Optional"]
370    pub const VERTEX_SHADER_INVOCATIONS: Self = Self(0b100);
371    #[doc = "Optional"]
372    pub const GEOMETRY_SHADER_INVOCATIONS: Self = Self(0b1000);
373    #[doc = "Optional"]
374    pub const GEOMETRY_SHADER_PRIMITIVES: Self = Self(0b1_0000);
375    #[doc = "Optional"]
376    pub const CLIPPING_INVOCATIONS: Self = Self(0b10_0000);
377    #[doc = "Optional"]
378    pub const CLIPPING_PRIMITIVES: Self = Self(0b100_0000);
379    #[doc = "Optional"]
380    pub const FRAGMENT_SHADER_INVOCATIONS: Self = Self(0b1000_0000);
381    #[doc = "Optional"]
382    pub const TESSELLATION_CONTROL_SHADER_PATCHES: Self = Self(0b1_0000_0000);
383    #[doc = "Optional"]
384    pub const TESSELLATION_EVALUATION_SHADER_INVOCATIONS: Self = Self(0b10_0000_0000);
385    #[doc = "Optional"]
386    pub const COMPUTE_SHADER_INVOCATIONS: Self = Self(0b100_0000_0000);
387}
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/VkMemoryMapFlagBits.html>"]
391pub struct MemoryMapFlags(pub(crate) Flags);
392vk_bitflags_wrapped!(MemoryMapFlags, Flags);
393impl MemoryMapFlags {}
394#[repr(transparent)]
395#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
396#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html>"]
397pub struct ImageAspectFlags(pub(crate) Flags);
398vk_bitflags_wrapped!(ImageAspectFlags, Flags);
399impl ImageAspectFlags {
400    pub const COLOR: Self = Self(0b1);
401    pub const DEPTH: Self = Self(0b10);
402    pub const STENCIL: Self = Self(0b100);
403    pub const METADATA: Self = Self(0b1000);
404}
405#[repr(transparent)]
406#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
407#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatFlagBits.html>"]
408pub struct SparseImageFormatFlags(pub(crate) Flags);
409vk_bitflags_wrapped!(SparseImageFormatFlags, Flags);
410impl SparseImageFormatFlags {
411    #[doc = "Image uses a single mip tail region for all array layers"]
412    pub const SINGLE_MIPTAIL: Self = Self(0b1);
413    #[doc = "Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels."]
414    pub const ALIGNED_MIP_SIZE: Self = Self(0b10);
415    #[doc = "Image uses a non-standard sparse image block dimensions"]
416    pub const NONSTANDARD_BLOCK_SIZE: Self = Self(0b100);
417}
418#[repr(transparent)]
419#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
420#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseMemoryBindFlagBits.html>"]
421pub struct SparseMemoryBindFlags(pub(crate) Flags);
422vk_bitflags_wrapped!(SparseMemoryBindFlags, Flags);
423impl SparseMemoryBindFlags {
424    #[doc = "Operation binds resource metadata to memory"]
425    pub const METADATA: Self = Self(0b1);
426}
427#[repr(transparent)]
428#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
429#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html>"]
430pub struct PipelineStageFlags(pub(crate) Flags);
431vk_bitflags_wrapped!(PipelineStageFlags, Flags);
432impl PipelineStageFlags {
433    #[doc = "Before subsequent commands are processed"]
434    pub const TOP_OF_PIPE: Self = Self(0b1);
435    #[doc = "Draw/DispatchIndirect command fetch"]
436    pub const DRAW_INDIRECT: Self = Self(0b10);
437    #[doc = "Vertex/index fetch"]
438    pub const VERTEX_INPUT: Self = Self(0b100);
439    #[doc = "Vertex shading"]
440    pub const VERTEX_SHADER: Self = Self(0b1000);
441    #[doc = "Tessellation control shading"]
442    pub const TESSELLATION_CONTROL_SHADER: Self = Self(0b1_0000);
443    #[doc = "Tessellation evaluation shading"]
444    pub const TESSELLATION_EVALUATION_SHADER: Self = Self(0b10_0000);
445    #[doc = "Geometry shading"]
446    pub const GEOMETRY_SHADER: Self = Self(0b100_0000);
447    #[doc = "Fragment shading"]
448    pub const FRAGMENT_SHADER: Self = Self(0b1000_0000);
449    #[doc = "Early fragment (depth and stencil) tests"]
450    pub const EARLY_FRAGMENT_TESTS: Self = Self(0b1_0000_0000);
451    #[doc = "Late fragment (depth and stencil) tests"]
452    pub const LATE_FRAGMENT_TESTS: Self = Self(0b10_0000_0000);
453    #[doc = "Color attachment writes"]
454    pub const COLOR_ATTACHMENT_OUTPUT: Self = Self(0b100_0000_0000);
455    #[doc = "Compute shading"]
456    pub const COMPUTE_SHADER: Self = Self(0b1000_0000_0000);
457    #[doc = "Transfer/copy operations"]
458    pub const TRANSFER: Self = Self(0b1_0000_0000_0000);
459    #[doc = "After previous commands have completed"]
460    pub const BOTTOM_OF_PIPE: Self = Self(0b10_0000_0000_0000);
461    #[doc = "Indicates host (CPU) is a source/sink of the dependency"]
462    pub const HOST: Self = Self(0b100_0000_0000_0000);
463    #[doc = "All stages of the graphics pipeline"]
464    pub const ALL_GRAPHICS: Self = Self(0b1000_0000_0000_0000);
465    #[doc = "All stages supported on the queue"]
466    pub const ALL_COMMANDS: Self = Self(0b1_0000_0000_0000_0000);
467}
468#[repr(transparent)]
469#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
470#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html>"]
471pub struct CommandPoolCreateFlags(pub(crate) Flags);
472vk_bitflags_wrapped!(CommandPoolCreateFlags, Flags);
473impl CommandPoolCreateFlags {
474    #[doc = "Command buffers have a short lifetime"]
475    pub const TRANSIENT: Self = Self(0b1);
476    #[doc = "Command buffers may release their memory individually"]
477    pub const RESET_COMMAND_BUFFER: Self = Self(0b10);
478}
479#[repr(transparent)]
480#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
481#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlagBits.html>"]
482pub struct CommandPoolResetFlags(pub(crate) Flags);
483vk_bitflags_wrapped!(CommandPoolResetFlags, Flags);
484impl CommandPoolResetFlags {
485    #[doc = "Release resources owned by the pool"]
486    pub const RELEASE_RESOURCES: Self = Self(0b1);
487}
488#[repr(transparent)]
489#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
490#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlagBits.html>"]
491pub struct CommandBufferResetFlags(pub(crate) Flags);
492vk_bitflags_wrapped!(CommandBufferResetFlags, Flags);
493impl CommandBufferResetFlags {
494    #[doc = "Release resources owned by the buffer"]
495    pub const RELEASE_RESOURCES: Self = Self(0b1);
496}
497#[repr(transparent)]
498#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
499#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html>"]
500pub struct SampleCountFlags(pub(crate) Flags);
501vk_bitflags_wrapped!(SampleCountFlags, Flags);
502impl SampleCountFlags {
503    #[doc = "Sample count 1 supported"]
504    pub const TYPE_1: Self = Self(0b1);
505    #[doc = "Sample count 2 supported"]
506    pub const TYPE_2: Self = Self(0b10);
507    #[doc = "Sample count 4 supported"]
508    pub const TYPE_4: Self = Self(0b100);
509    #[doc = "Sample count 8 supported"]
510    pub const TYPE_8: Self = Self(0b1000);
511    #[doc = "Sample count 16 supported"]
512    pub const TYPE_16: Self = Self(0b1_0000);
513    #[doc = "Sample count 32 supported"]
514    pub const TYPE_32: Self = Self(0b10_0000);
515    #[doc = "Sample count 64 supported"]
516    pub const TYPE_64: Self = Self(0b100_0000);
517}
518#[repr(transparent)]
519#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
520#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentDescriptionFlagBits.html>"]
521pub struct AttachmentDescriptionFlags(pub(crate) Flags);
522vk_bitflags_wrapped!(AttachmentDescriptionFlags, Flags);
523impl AttachmentDescriptionFlags {
524    #[doc = "The attachment may alias physical memory of another attachment in the same render pass"]
525    pub const MAY_ALIAS: Self = Self(0b1);
526}
527#[repr(transparent)]
528#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
529#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilFaceFlagBits.html>"]
530pub struct StencilFaceFlags(pub(crate) Flags);
531vk_bitflags_wrapped!(StencilFaceFlags, Flags);
532impl StencilFaceFlags {
533    #[doc = "Front face"]
534    pub const FRONT: Self = Self(0b1);
535    #[doc = "Back face"]
536    pub const BACK: Self = Self(0b10);
537    #[doc = "Front and back faces"]
538    pub const FRONT_AND_BACK: Self = Self(0x0000_0003);
539}
540#[repr(transparent)]
541#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
542#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorPoolCreateFlagBits.html>"]
543pub struct DescriptorPoolCreateFlags(pub(crate) Flags);
544vk_bitflags_wrapped!(DescriptorPoolCreateFlags, Flags);
545impl DescriptorPoolCreateFlags {
546    #[doc = "Descriptor sets may be freed individually"]
547    pub const FREE_DESCRIPTOR_SET: Self = Self(0b1);
548}
549#[repr(transparent)]
550#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
551#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDependencyFlagBits.html>"]
552pub struct DependencyFlags(pub(crate) Flags);
553vk_bitflags_wrapped!(DependencyFlags, Flags);
554impl DependencyFlags {
555    #[doc = "Dependency is per pixel region "]
556    pub const BY_REGION: Self = Self(0b1);
557}
558#[repr(transparent)]
559#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
560#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreWaitFlagBits.html>"]
561pub struct SemaphoreWaitFlags(pub(crate) Flags);
562vk_bitflags_wrapped!(SemaphoreWaitFlags, Flags);
563impl SemaphoreWaitFlags {
564    pub const ANY: Self = Self(0b1);
565}
566#[repr(transparent)]
567#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
568#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDisplayPlaneAlphaFlagBitsKHR.html>"]
569pub struct DisplayPlaneAlphaFlagsKHR(pub(crate) Flags);
570vk_bitflags_wrapped!(DisplayPlaneAlphaFlagsKHR, Flags);
571impl DisplayPlaneAlphaFlagsKHR {
572    pub const OPAQUE: Self = Self(0b1);
573    pub const GLOBAL: Self = Self(0b10);
574    pub const PER_PIXEL: Self = Self(0b100);
575    pub const PER_PIXEL_PREMULTIPLIED: Self = Self(0b1000);
576}
577#[repr(transparent)]
578#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
579#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompositeAlphaFlagBitsKHR.html>"]
580pub struct CompositeAlphaFlagsKHR(pub(crate) Flags);
581vk_bitflags_wrapped!(CompositeAlphaFlagsKHR, Flags);
582impl CompositeAlphaFlagsKHR {
583    pub const OPAQUE: Self = Self(0b1);
584    pub const PRE_MULTIPLIED: Self = Self(0b10);
585    pub const POST_MULTIPLIED: Self = Self(0b100);
586    pub const INHERIT: Self = Self(0b1000);
587}
588#[repr(transparent)]
589#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
590#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSurfaceTransformFlagBitsKHR.html>"]
591pub struct SurfaceTransformFlagsKHR(pub(crate) Flags);
592vk_bitflags_wrapped!(SurfaceTransformFlagsKHR, Flags);
593impl SurfaceTransformFlagsKHR {
594    pub const IDENTITY: Self = Self(0b1);
595    pub const ROTATE_90: Self = Self(0b10);
596    pub const ROTATE_180: Self = Self(0b100);
597    pub const ROTATE_270: Self = Self(0b1000);
598    pub const HORIZONTAL_MIRROR: Self = Self(0b1_0000);
599    pub const HORIZONTAL_MIRROR_ROTATE_90: Self = Self(0b10_0000);
600    pub const HORIZONTAL_MIRROR_ROTATE_180: Self = Self(0b100_0000);
601    pub const HORIZONTAL_MIRROR_ROTATE_270: Self = Self(0b1000_0000);
602    pub const INHERIT: Self = Self(0b1_0000_0000);
603}
604#[repr(transparent)]
605#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
606#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSwapchainImageUsageFlagBitsANDROID.html>"]
607pub struct SwapchainImageUsageFlagsANDROID(pub(crate) Flags);
608vk_bitflags_wrapped!(SwapchainImageUsageFlagsANDROID, Flags);
609impl SwapchainImageUsageFlagsANDROID {
610    pub const SHARED: Self = Self(0b1);
611}
612#[repr(transparent)]
613#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
614#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugReportFlagBitsEXT.html>"]
615pub struct DebugReportFlagsEXT(pub(crate) Flags);
616vk_bitflags_wrapped!(DebugReportFlagsEXT, Flags);
617impl DebugReportFlagsEXT {
618    pub const INFORMATION: Self = Self(0b1);
619    pub const WARNING: Self = Self(0b10);
620    pub const PERFORMANCE_WARNING: Self = Self(0b100);
621    pub const ERROR: Self = Self(0b1000);
622    pub const DEBUG: Self = Self(0b1_0000);
623}
624#[repr(transparent)]
625#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
626#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryHandleTypeFlagBitsNV.html>"]
627pub struct ExternalMemoryHandleTypeFlagsNV(pub(crate) Flags);
628vk_bitflags_wrapped!(ExternalMemoryHandleTypeFlagsNV, Flags);
629impl ExternalMemoryHandleTypeFlagsNV {
630    pub const OPAQUE_WIN32: Self = Self(0b1);
631    pub const OPAQUE_WIN32_KMT: Self = Self(0b10);
632    pub const D3D11_IMAGE: Self = Self(0b100);
633    pub const D3D11_IMAGE_KMT: Self = Self(0b1000);
634}
635#[repr(transparent)]
636#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
637#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryFeatureFlagBitsNV.html>"]
638pub struct ExternalMemoryFeatureFlagsNV(pub(crate) Flags);
639vk_bitflags_wrapped!(ExternalMemoryFeatureFlagsNV, Flags);
640impl ExternalMemoryFeatureFlagsNV {
641    pub const DEDICATED_ONLY: Self = Self(0b1);
642    pub const EXPORTABLE: Self = Self(0b10);
643    pub const IMPORTABLE: Self = Self(0b100);
644}
645#[repr(transparent)]
646#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
647#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureIndexFormatFlagBitsNV.html>"]
648pub struct ClusterAccelerationStructureIndexFormatFlagsNV(pub(crate) Flags);
649vk_bitflags_wrapped!(ClusterAccelerationStructureIndexFormatFlagsNV, Flags);
650impl ClusterAccelerationStructureIndexFormatFlagsNV {
651    pub const TYPE_8BIT: Self = Self(0b1);
652    pub const TYPE_16BIT: Self = Self(0b10);
653    pub const TYPE_32BIT: Self = Self(0b100);
654}
655#[repr(transparent)]
656#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
657#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureClusterFlagBitsNV.html>"]
658pub struct ClusterAccelerationStructureClusterFlagsNV(pub(crate) Flags);
659vk_bitflags_wrapped!(ClusterAccelerationStructureClusterFlagsNV, Flags);
660impl ClusterAccelerationStructureClusterFlagsNV {
661    pub const ALLOW_DISABLE_OPACITY_MICROMAPS: Self = Self(0b1);
662}
663#[repr(transparent)]
664#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
665#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureGeometryFlagBitsNV.html>"]
666pub struct ClusterAccelerationStructureGeometryFlagsNV(pub(crate) Flags);
667vk_bitflags_wrapped!(ClusterAccelerationStructureGeometryFlagsNV, Flags);
668impl ClusterAccelerationStructureGeometryFlagsNV {
669    pub const CULL_DISABLE: Self = Self(0b1);
670    pub const NO_DUPLICATE_ANYHIT_INVOCATION: Self = Self(0b10);
671    pub const OPAQUE: Self = Self(0b100);
672}
673#[repr(transparent)]
674#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
675#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureAddressResolutionFlagBitsNV.html>"]
676pub struct ClusterAccelerationStructureAddressResolutionFlagsNV(pub(crate) Flags);
677vk_bitflags_wrapped!(ClusterAccelerationStructureAddressResolutionFlagsNV, Flags);
678impl ClusterAccelerationStructureAddressResolutionFlagsNV {
679    pub const NONE: Self = Self(0);
680    pub const INDIRECTED_DST_IMPLICIT_DATA: Self = Self(0b1);
681    pub const INDIRECTED_SCRATCH_DATA: Self = Self(0b10);
682    pub const INDIRECTED_DST_ADDRESS_ARRAY: Self = Self(0b100);
683    pub const INDIRECTED_DST_SIZES_ARRAY: Self = Self(0b1000);
684    pub const INDIRECTED_SRC_INFOS_ARRAY: Self = Self(0b1_0000);
685    pub const INDIRECTED_SRC_INFOS_COUNT: Self = Self(0b10_0000);
686}
687#[repr(transparent)]
688#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
689#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubgroupFeatureFlagBits.html>"]
690pub struct SubgroupFeatureFlags(pub(crate) Flags);
691vk_bitflags_wrapped!(SubgroupFeatureFlags, Flags);
692impl SubgroupFeatureFlags {
693    #[doc = "Basic subgroup operations"]
694    pub const BASIC: Self = Self(0b1);
695    #[doc = "Vote subgroup operations"]
696    pub const VOTE: Self = Self(0b10);
697    #[doc = "Arithmetic subgroup operations"]
698    pub const ARITHMETIC: Self = Self(0b100);
699    #[doc = "Ballot subgroup operations"]
700    pub const BALLOT: Self = Self(0b1000);
701    #[doc = "Shuffle subgroup operations"]
702    pub const SHUFFLE: Self = Self(0b1_0000);
703    #[doc = "Shuffle relative subgroup operations"]
704    pub const SHUFFLE_RELATIVE: Self = Self(0b10_0000);
705    #[doc = "Clustered subgroup operations"]
706    pub const CLUSTERED: Self = Self(0b100_0000);
707    #[doc = "Quad subgroup operations"]
708    pub const QUAD: Self = Self(0b1000_0000);
709}
710#[repr(transparent)]
711#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
712#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutUsageFlagBitsNV.html>"]
713pub struct IndirectCommandsLayoutUsageFlagsNV(pub(crate) Flags);
714vk_bitflags_wrapped!(IndirectCommandsLayoutUsageFlagsNV, Flags);
715impl IndirectCommandsLayoutUsageFlagsNV {
716    pub const EXPLICIT_PREPROCESS: Self = Self(0b1);
717    pub const INDEXED_SEQUENCES: Self = Self(0b10);
718    pub const UNORDERED_SEQUENCES: Self = Self(0b100);
719}
720#[repr(transparent)]
721#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
722#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectStateFlagBitsNV.html>"]
723pub struct IndirectStateFlagsNV(pub(crate) Flags);
724vk_bitflags_wrapped!(IndirectStateFlagsNV, Flags);
725impl IndirectStateFlagsNV {
726    pub const FLAG_FRONTFACE: Self = Self(0b1);
727}
728#[repr(transparent)]
729#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
730#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrivateDataSlotCreateFlagBits.html>"]
731pub struct PrivateDataSlotCreateFlags(pub(crate) Flags);
732vk_bitflags_wrapped!(PrivateDataSlotCreateFlags, Flags);
733impl PrivateDataSlotCreateFlags {}
734#[repr(transparent)]
735#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
736#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateFlagBits.html>"]
737pub struct DescriptorSetLayoutCreateFlags(pub(crate) Flags);
738vk_bitflags_wrapped!(DescriptorSetLayoutCreateFlags, Flags);
739impl DescriptorSetLayoutCreateFlags {}
740#[repr(transparent)]
741#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
742#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryHandleTypeFlagBits.html>"]
743pub struct ExternalMemoryHandleTypeFlags(pub(crate) Flags);
744vk_bitflags_wrapped!(ExternalMemoryHandleTypeFlags, Flags);
745impl ExternalMemoryHandleTypeFlags {
746    pub const OPAQUE_FD: Self = Self(0b1);
747    pub const OPAQUE_WIN32: Self = Self(0b10);
748    pub const OPAQUE_WIN32_KMT: Self = Self(0b100);
749    pub const D3D11_TEXTURE: Self = Self(0b1000);
750    pub const D3D11_TEXTURE_KMT: Self = Self(0b1_0000);
751    pub const D3D12_HEAP: Self = Self(0b10_0000);
752    pub const D3D12_RESOURCE: Self = Self(0b100_0000);
753}
754#[repr(transparent)]
755#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
756#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalMemoryFeatureFlagBits.html>"]
757pub struct ExternalMemoryFeatureFlags(pub(crate) Flags);
758vk_bitflags_wrapped!(ExternalMemoryFeatureFlags, Flags);
759impl ExternalMemoryFeatureFlags {
760    pub const DEDICATED_ONLY: Self = Self(0b1);
761    pub const EXPORTABLE: Self = Self(0b10);
762    pub const IMPORTABLE: Self = Self(0b100);
763}
764#[repr(transparent)]
765#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
766#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalSemaphoreHandleTypeFlagBits.html>"]
767pub struct ExternalSemaphoreHandleTypeFlags(pub(crate) Flags);
768vk_bitflags_wrapped!(ExternalSemaphoreHandleTypeFlags, Flags);
769impl ExternalSemaphoreHandleTypeFlags {
770    pub const OPAQUE_FD: Self = Self(0b1);
771    pub const OPAQUE_WIN32: Self = Self(0b10);
772    pub const OPAQUE_WIN32_KMT: Self = Self(0b100);
773    pub const D3D12_FENCE: Self = Self(0b1000);
774    pub const D3D11_FENCE: Self = Self::D3D12_FENCE;
775    pub const SYNC_FD: Self = Self(0b1_0000);
776}
777#[repr(transparent)]
778#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
779#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalSemaphoreFeatureFlagBits.html>"]
780pub struct ExternalSemaphoreFeatureFlags(pub(crate) Flags);
781vk_bitflags_wrapped!(ExternalSemaphoreFeatureFlags, Flags);
782impl ExternalSemaphoreFeatureFlags {
783    pub const EXPORTABLE: Self = Self(0b1);
784    pub const IMPORTABLE: Self = Self(0b10);
785}
786#[repr(transparent)]
787#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
788#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreImportFlagBits.html>"]
789pub struct SemaphoreImportFlags(pub(crate) Flags);
790vk_bitflags_wrapped!(SemaphoreImportFlags, Flags);
791impl SemaphoreImportFlags {
792    pub const TEMPORARY: Self = Self(0b1);
793}
794#[repr(transparent)]
795#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
796#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalFenceHandleTypeFlagBits.html>"]
797pub struct ExternalFenceHandleTypeFlags(pub(crate) Flags);
798vk_bitflags_wrapped!(ExternalFenceHandleTypeFlags, Flags);
799impl ExternalFenceHandleTypeFlags {
800    pub const OPAQUE_FD: Self = Self(0b1);
801    pub const OPAQUE_WIN32: Self = Self(0b10);
802    pub const OPAQUE_WIN32_KMT: Self = Self(0b100);
803    pub const SYNC_FD: Self = Self(0b1000);
804}
805#[repr(transparent)]
806#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
807#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExternalFenceFeatureFlagBits.html>"]
808pub struct ExternalFenceFeatureFlags(pub(crate) Flags);
809vk_bitflags_wrapped!(ExternalFenceFeatureFlags, Flags);
810impl ExternalFenceFeatureFlags {
811    pub const EXPORTABLE: Self = Self(0b1);
812    pub const IMPORTABLE: Self = Self(0b10);
813}
814#[repr(transparent)]
815#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
816#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceImportFlagBits.html>"]
817pub struct FenceImportFlags(pub(crate) Flags);
818vk_bitflags_wrapped!(FenceImportFlags, Flags);
819impl FenceImportFlags {
820    pub const TEMPORARY: Self = Self(0b1);
821}
822#[repr(transparent)]
823#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
824#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSurfaceCounterFlagBitsEXT.html>"]
825pub struct SurfaceCounterFlagsEXT(pub(crate) Flags);
826vk_bitflags_wrapped!(SurfaceCounterFlagsEXT, Flags);
827impl SurfaceCounterFlagsEXT {
828    pub const VBLANK: Self = Self(0b1);
829}
830#[repr(transparent)]
831#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
832#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPeerMemoryFeatureFlagBits.html>"]
833pub struct PeerMemoryFeatureFlags(pub(crate) Flags);
834vk_bitflags_wrapped!(PeerMemoryFeatureFlags, Flags);
835impl PeerMemoryFeatureFlags {
836    #[doc = "Can read with vkCmdCopy commands"]
837    pub const COPY_SRC: Self = Self(0b1);
838    #[doc = "Can write with vkCmdCopy commands"]
839    pub const COPY_DST: Self = Self(0b10);
840    #[doc = "Can read with any access type/command"]
841    pub const GENERIC_SRC: Self = Self(0b100);
842    #[doc = "Can write with and access type/command"]
843    pub const GENERIC_DST: Self = Self(0b1000);
844}
845#[repr(transparent)]
846#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
847#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateFlagBits.html>"]
848pub struct MemoryAllocateFlags(pub(crate) Flags);
849vk_bitflags_wrapped!(MemoryAllocateFlags, Flags);
850impl MemoryAllocateFlags {
851    #[doc = "Force allocation on specific devices"]
852    pub const DEVICE_MASK: Self = Self(0b1);
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/VkDeviceGroupPresentModeFlagBitsKHR.html>"]
857pub struct DeviceGroupPresentModeFlagsKHR(pub(crate) Flags);
858vk_bitflags_wrapped!(DeviceGroupPresentModeFlagsKHR, Flags);
859impl DeviceGroupPresentModeFlagsKHR {
860    #[doc = "Present from local memory"]
861    pub const LOCAL: Self = Self(0b1);
862    #[doc = "Present from remote memory"]
863    pub const REMOTE: Self = Self(0b10);
864    #[doc = "Present sum of local and/or remote memory"]
865    pub const SUM: Self = Self(0b100);
866    #[doc = "Each physical device presents from local memory"]
867    pub const LOCAL_MULTI_DEVICE: Self = Self(0b1000);
868}
869#[repr(transparent)]
870#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
871#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSwapchainCreateFlagBitsKHR.html>"]
872pub struct SwapchainCreateFlagsKHR(pub(crate) Flags);
873vk_bitflags_wrapped!(SwapchainCreateFlagsKHR, Flags);
874impl SwapchainCreateFlagsKHR {}
875#[repr(transparent)]
876#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
877#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassDescriptionFlagBits.html>"]
878pub struct SubpassDescriptionFlags(pub(crate) Flags);
879vk_bitflags_wrapped!(SubpassDescriptionFlags, Flags);
880impl SubpassDescriptionFlags {}
881#[repr(transparent)]
882#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
883#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageSeverityFlagBitsEXT.html>"]
884pub struct DebugUtilsMessageSeverityFlagsEXT(pub(crate) Flags);
885vk_bitflags_wrapped!(DebugUtilsMessageSeverityFlagsEXT, Flags);
886impl DebugUtilsMessageSeverityFlagsEXT {
887    pub const VERBOSE: Self = Self(0b1);
888    pub const INFO: Self = Self(0b1_0000);
889    pub const WARNING: Self = Self(0b1_0000_0000);
890    pub const ERROR: Self = Self(0b1_0000_0000_0000);
891}
892#[repr(transparent)]
893#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
894#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugUtilsMessageTypeFlagBitsEXT.html>"]
895pub struct DebugUtilsMessageTypeFlagsEXT(pub(crate) Flags);
896vk_bitflags_wrapped!(DebugUtilsMessageTypeFlagsEXT, Flags);
897impl DebugUtilsMessageTypeFlagsEXT {
898    pub const GENERAL: Self = Self(0b1);
899    pub const VALIDATION: Self = Self(0b10);
900    pub const PERFORMANCE: Self = Self(0b100);
901}
902#[repr(transparent)]
903#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
904#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorBindingFlagBits.html>"]
905pub struct DescriptorBindingFlags(pub(crate) Flags);
906vk_bitflags_wrapped!(DescriptorBindingFlags, Flags);
907impl DescriptorBindingFlags {
908    pub const UPDATE_AFTER_BIND: Self = Self(0b1);
909    pub const UPDATE_UNUSED_WHILE_PENDING: Self = Self(0b10);
910    pub const PARTIALLY_BOUND: Self = Self(0b100);
911    pub const VARIABLE_DESCRIPTOR_COUNT: Self = Self(0b1000);
912}
913#[repr(transparent)]
914#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
915#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkConditionalRenderingFlagBitsEXT.html>"]
916pub struct ConditionalRenderingFlagsEXT(pub(crate) Flags);
917vk_bitflags_wrapped!(ConditionalRenderingFlagsEXT, Flags);
918impl ConditionalRenderingFlagsEXT {
919    pub const INVERTED: Self = Self(0b1);
920}
921#[repr(transparent)]
922#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
923#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResolveModeFlagBits.html>"]
924pub struct ResolveModeFlags(pub(crate) Flags);
925vk_bitflags_wrapped!(ResolveModeFlags, Flags);
926impl ResolveModeFlags {
927    pub const NONE: Self = Self(0);
928    pub const SAMPLE_ZERO: Self = Self(0b1);
929    pub const AVERAGE: Self = Self(0b10);
930    pub const MIN: Self = Self(0b100);
931    pub const MAX: Self = Self(0b1000);
932}
933#[repr(transparent)]
934#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
935#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGeometryInstanceFlagBitsKHR.html>"]
936pub struct GeometryInstanceFlagsKHR(pub(crate) Flags);
937vk_bitflags_wrapped!(GeometryInstanceFlagsKHR, Flags);
938impl GeometryInstanceFlagsKHR {
939    pub const TRIANGLE_FACING_CULL_DISABLE: Self = Self(0b1);
940    pub const TRIANGLE_FLIP_FACING: Self = Self(0b10);
941    pub const FORCE_OPAQUE: Self = Self(0b100);
942    pub const FORCE_NO_OPAQUE: Self = Self(0b1000);
943    pub const TRIANGLE_FRONT_COUNTERCLOCKWISE: Self = Self::TRIANGLE_FLIP_FACING;
944}
945#[repr(transparent)]
946#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
947#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGeometryFlagBitsKHR.html>"]
948pub struct GeometryFlagsKHR(pub(crate) Flags);
949vk_bitflags_wrapped!(GeometryFlagsKHR, Flags);
950impl GeometryFlagsKHR {
951    pub const OPAQUE: Self = Self(0b1);
952    pub const NO_DUPLICATE_ANY_HIT_INVOCATION: Self = Self(0b10);
953}
954#[repr(transparent)]
955#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
956#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureFlagBitsKHR.html>"]
957pub struct BuildAccelerationStructureFlagsKHR(pub(crate) Flags);
958vk_bitflags_wrapped!(BuildAccelerationStructureFlagsKHR, Flags);
959impl BuildAccelerationStructureFlagsKHR {
960    pub const ALLOW_UPDATE: Self = Self(0b1);
961    pub const ALLOW_COMPACTION: Self = Self(0b10);
962    pub const PREFER_FAST_TRACE: Self = Self(0b100);
963    pub const PREFER_FAST_BUILD: Self = Self(0b1000);
964    pub const LOW_MEMORY: Self = Self(0b1_0000);
965}
966#[repr(transparent)]
967#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
968#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCreateFlagBitsKHR.html>"]
969pub struct AccelerationStructureCreateFlagsKHR(pub(crate) Flags);
970vk_bitflags_wrapped!(AccelerationStructureCreateFlagsKHR, Flags);
971impl AccelerationStructureCreateFlagsKHR {
972    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(0b1);
973}
974#[repr(transparent)]
975#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
976#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFramebufferCreateFlagBits.html>"]
977pub struct FramebufferCreateFlags(pub(crate) Flags);
978vk_bitflags_wrapped!(FramebufferCreateFlags, Flags);
979impl FramebufferCreateFlags {}
980#[repr(transparent)]
981#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
982#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPoolCreateFlagBits.html>"]
983pub struct QueryPoolCreateFlags(pub(crate) Flags);
984vk_bitflags_wrapped!(QueryPoolCreateFlags, Flags);
985impl QueryPoolCreateFlags {}
986#[repr(transparent)]
987#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
988#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceDiagnosticsConfigFlagBitsNV.html>"]
989pub struct DeviceDiagnosticsConfigFlagsNV(pub(crate) Flags);
990vk_bitflags_wrapped!(DeviceDiagnosticsConfigFlagsNV, Flags);
991impl DeviceDiagnosticsConfigFlagsNV {
992    pub const ENABLE_SHADER_DEBUG_INFO: Self = Self(0b1);
993    pub const ENABLE_RESOURCE_TRACKING: Self = Self(0b10);
994    pub const ENABLE_AUTOMATIC_CHECKPOINTS: Self = Self(0b100);
995    pub const ENABLE_SHADER_ERROR_REPORTING: Self = Self(0b1000);
996}
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/VkPipelineCreationFeedbackFlagBits.html>"]
1000pub struct PipelineCreationFeedbackFlags(pub(crate) Flags);
1001vk_bitflags_wrapped!(PipelineCreationFeedbackFlags, Flags);
1002impl PipelineCreationFeedbackFlags {
1003    pub const VALID: Self = Self(0b1);
1004    pub const APPLICATION_PIPELINE_CACHE_HIT: Self = Self(0b10);
1005    pub const BASE_PIPELINE_ACCELERATION: Self = Self(0b100);
1006}
1007#[repr(transparent)]
1008#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1009#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryDecompressionMethodFlagBitsEXT.html>"]
1010pub struct MemoryDecompressionMethodFlagsEXT(pub(crate) Flags64);
1011vk_bitflags_wrapped!(MemoryDecompressionMethodFlagsEXT, Flags64);
1012impl MemoryDecompressionMethodFlagsEXT {
1013    pub const GDEFLATE_1_0: Self = Self(0b1);
1014    pub const GDEFLATE_1_0_NV: Self = Self::GDEFLATE_1_0;
1015}
1016#[repr(transparent)]
1017#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1018#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterDescriptionFlagBitsKHR.html>"]
1019pub struct PerformanceCounterDescriptionFlagsKHR(pub(crate) Flags);
1020vk_bitflags_wrapped!(PerformanceCounterDescriptionFlagsKHR, Flags);
1021impl PerformanceCounterDescriptionFlagsKHR {
1022    pub const PERFORMANCE_IMPACTING: Self = Self(0b1);
1023    pub const CONCURRENTLY_IMPACTED: Self = Self(0b10);
1024}
1025#[repr(transparent)]
1026#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1027#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAcquireProfilingLockFlagBitsKHR.html>"]
1028pub struct AcquireProfilingLockFlagsKHR(pub(crate) Flags);
1029vk_bitflags_wrapped!(AcquireProfilingLockFlagsKHR, Flags);
1030impl AcquireProfilingLockFlagsKHR {}
1031#[repr(transparent)]
1032#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1033#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderCorePropertiesFlagBitsAMD.html>"]
1034pub struct ShaderCorePropertiesFlagsAMD(pub(crate) Flags);
1035vk_bitflags_wrapped!(ShaderCorePropertiesFlagsAMD, Flags);
1036impl ShaderCorePropertiesFlagsAMD {}
1037#[repr(transparent)]
1038#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1039#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderModuleCreateFlagBits.html>"]
1040pub struct ShaderModuleCreateFlags(pub(crate) Flags);
1041vk_bitflags_wrapped!(ShaderModuleCreateFlags, Flags);
1042impl ShaderModuleCreateFlags {}
1043#[repr(transparent)]
1044#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1045#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCompilerControlFlagBitsAMD.html>"]
1046pub struct PipelineCompilerControlFlagsAMD(pub(crate) Flags);
1047vk_bitflags_wrapped!(PipelineCompilerControlFlagsAMD, Flags);
1048impl PipelineCompilerControlFlagsAMD {}
1049#[repr(transparent)]
1050#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1051#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkToolPurposeFlagBits.html>"]
1052pub struct ToolPurposeFlags(pub(crate) Flags);
1053vk_bitflags_wrapped!(ToolPurposeFlags, Flags);
1054impl ToolPurposeFlags {
1055    pub const VALIDATION: Self = Self(0b1);
1056    pub const PROFILING: Self = Self(0b10);
1057    pub const TRACING: Self = Self(0b100);
1058    pub const ADDITIONAL_FEATURES: Self = Self(0b1000);
1059    pub const MODIFYING_FEATURES: Self = Self(0b1_0000);
1060}
1061#[repr(transparent)]
1062#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1063#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccessFlagBits2.html>"]
1064pub struct AccessFlags2(pub(crate) Flags64);
1065vk_bitflags_wrapped!(AccessFlags2, Flags64);
1066impl AccessFlags2 {
1067    pub const NONE: Self = Self(0);
1068    pub const INDIRECT_COMMAND_READ: Self = Self(0b1);
1069    pub const INDEX_READ: Self = Self(0b10);
1070    pub const VERTEX_ATTRIBUTE_READ: Self = Self(0b100);
1071    pub const UNIFORM_READ: Self = Self(0b1000);
1072    pub const INPUT_ATTACHMENT_READ: Self = Self(0b1_0000);
1073    pub const SHADER_READ: Self = Self(0b10_0000);
1074    pub const SHADER_WRITE: Self = Self(0b100_0000);
1075    pub const COLOR_ATTACHMENT_READ: Self = Self(0b1000_0000);
1076    pub const COLOR_ATTACHMENT_WRITE: Self = Self(0b1_0000_0000);
1077    pub const DEPTH_STENCIL_ATTACHMENT_READ: Self = Self(0b10_0000_0000);
1078    pub const DEPTH_STENCIL_ATTACHMENT_WRITE: Self = Self(0b100_0000_0000);
1079    pub const TRANSFER_READ: Self = Self(0b1000_0000_0000);
1080    pub const TRANSFER_WRITE: Self = Self(0b1_0000_0000_0000);
1081    pub const HOST_READ: Self = Self(0b10_0000_0000_0000);
1082    pub const HOST_WRITE: Self = Self(0b100_0000_0000_0000);
1083    pub const MEMORY_READ: Self = Self(0b1000_0000_0000_0000);
1084    pub const MEMORY_WRITE: Self = Self(0b1_0000_0000_0000_0000);
1085    pub const SHADER_SAMPLED_READ: Self = Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000);
1086    pub const SHADER_STORAGE_READ: Self = Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000);
1087    pub const SHADER_STORAGE_WRITE: Self = Self(0b100_0000_0000_0000_0000_0000_0000_0000_0000);
1088}
1089#[repr(transparent)]
1090#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1091#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits2.html>"]
1092pub struct PipelineStageFlags2(pub(crate) Flags64);
1093vk_bitflags_wrapped!(PipelineStageFlags2, Flags64);
1094impl PipelineStageFlags2 {
1095    pub const NONE: Self = Self(0);
1096    pub const TOP_OF_PIPE: Self = Self(0b1);
1097    pub const DRAW_INDIRECT: Self = Self(0b10);
1098    pub const VERTEX_INPUT: Self = Self(0b100);
1099    pub const VERTEX_SHADER: Self = Self(0b1000);
1100    pub const TESSELLATION_CONTROL_SHADER: Self = Self(0b1_0000);
1101    pub const TESSELLATION_EVALUATION_SHADER: Self = Self(0b10_0000);
1102    pub const GEOMETRY_SHADER: Self = Self(0b100_0000);
1103    pub const FRAGMENT_SHADER: Self = Self(0b1000_0000);
1104    pub const EARLY_FRAGMENT_TESTS: Self = Self(0b1_0000_0000);
1105    pub const LATE_FRAGMENT_TESTS: Self = Self(0b10_0000_0000);
1106    pub const COLOR_ATTACHMENT_OUTPUT: Self = Self(0b100_0000_0000);
1107    pub const COMPUTE_SHADER: Self = Self(0b1000_0000_0000);
1108    pub const ALL_TRANSFER: Self = Self(0b1_0000_0000_0000);
1109    pub const TRANSFER: Self = Self::ALL_TRANSFER;
1110    pub const BOTTOM_OF_PIPE: Self = Self(0b10_0000_0000_0000);
1111    pub const HOST: Self = Self(0b100_0000_0000_0000);
1112    pub const ALL_GRAPHICS: Self = Self(0b1000_0000_0000_0000);
1113    pub const ALL_COMMANDS: Self = Self(0b1_0000_0000_0000_0000);
1114    pub const COPY: Self = Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000);
1115    pub const RESOLVE: Self = Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000);
1116    pub const BLIT: Self = Self(0b100_0000_0000_0000_0000_0000_0000_0000_0000);
1117    pub const CLEAR: Self = Self(0b1000_0000_0000_0000_0000_0000_0000_0000_0000);
1118    pub const INDEX_INPUT: Self = Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000);
1119    pub const VERTEX_ATTRIBUTE_INPUT: Self =
1120        Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000_0000);
1121    pub const PRE_RASTERIZATION_SHADERS: Self =
1122        Self(0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000);
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}
1132#[repr(transparent)]
1133#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1134#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkEventCreateFlagBits.html>"]
1135pub struct EventCreateFlags(pub(crate) Flags);
1136vk_bitflags_wrapped!(EventCreateFlags, Flags);
1137impl EventCreateFlags {}
1138#[repr(transparent)]
1139#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1140#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateFlagBits.html>"]
1141pub struct PipelineLayoutCreateFlags(pub(crate) Flags);
1142vk_bitflags_wrapped!(PipelineLayoutCreateFlags, Flags);
1143impl PipelineLayoutCreateFlags {}
1144#[repr(transparent)]
1145#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1146#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineColorBlendStateCreateFlagBits.html>"]
1147pub struct PipelineColorBlendStateCreateFlags(pub(crate) Flags);
1148vk_bitflags_wrapped!(PipelineColorBlendStateCreateFlags, Flags);
1149impl PipelineColorBlendStateCreateFlags {}
1150#[repr(transparent)]
1151#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1152#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineDepthStencilStateCreateFlagBits.html>"]
1153pub struct PipelineDepthStencilStateCreateFlags(pub(crate) Flags);
1154vk_bitflags_wrapped!(PipelineDepthStencilStateCreateFlags, Flags);
1155impl PipelineDepthStencilStateCreateFlags {}
1156#[repr(transparent)]
1157#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1158#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineLibraryFlagBitsEXT.html>"]
1159pub struct GraphicsPipelineLibraryFlagsEXT(pub(crate) Flags);
1160vk_bitflags_wrapped!(GraphicsPipelineLibraryFlagsEXT, Flags);
1161impl GraphicsPipelineLibraryFlagsEXT {
1162    pub const VERTEX_INPUT_INTERFACE: Self = Self(0b1);
1163    pub const PRE_RASTERIZATION_SHADERS: Self = Self(0b10);
1164    pub const FRAGMENT_SHADER: Self = Self(0b100);
1165    pub const FRAGMENT_OUTPUT_INTERFACE: Self = Self(0b1000);
1166}
1167#[repr(transparent)]
1168#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1169#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderingAttachmentFlagBitsKHR.html>"]
1170pub struct RenderingAttachmentFlagsKHR(pub(crate) Flags);
1171vk_bitflags_wrapped!(RenderingAttachmentFlagsKHR, Flags);
1172impl RenderingAttachmentFlagsKHR {}
1173#[repr(transparent)]
1174#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1175#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResolveImageFlagBitsKHR.html>"]
1176pub struct ResolveImageFlagsKHR(pub(crate) Flags);
1177vk_bitflags_wrapped!(ResolveImageFlagsKHR, Flags);
1178impl ResolveImageFlagsKHR {}
1179#[repr(transparent)]
1180#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1181#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceAddressBindingFlagBitsEXT.html>"]
1182pub struct DeviceAddressBindingFlagsEXT(pub(crate) Flags);
1183vk_bitflags_wrapped!(DeviceAddressBindingFlagsEXT, Flags);
1184impl DeviceAddressBindingFlagsEXT {
1185    pub const INTERNAL_OBJECT: Self = Self(0b1);
1186}
1187#[repr(transparent)]
1188#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1189#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFrameBoundaryFlagBitsEXT.html>"]
1190pub struct FrameBoundaryFlagsEXT(pub(crate) Flags);
1191vk_bitflags_wrapped!(FrameBoundaryFlagsEXT, Flags);
1192impl FrameBoundaryFlagsEXT {
1193    pub const FRAME_END: Self = Self(0b1);
1194}
1195#[repr(transparent)]
1196#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1197#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentScalingFlagBitsKHR.html>"]
1198pub struct PresentScalingFlagsKHR(pub(crate) Flags);
1199vk_bitflags_wrapped!(PresentScalingFlagsKHR, Flags);
1200impl PresentScalingFlagsKHR {
1201    pub const ONE_TO_ONE: Self = Self(0b1);
1202    pub const ONE_TO_ONE_EXT: Self = Self::ONE_TO_ONE;
1203    pub const ASPECT_RATIO_STRETCH: Self = Self(0b10);
1204    pub const ASPECT_RATIO_STRETCH_EXT: Self = Self::ASPECT_RATIO_STRETCH;
1205    pub const STRETCH: Self = Self(0b100);
1206    pub const STRETCH_EXT: Self = Self::STRETCH;
1207}
1208#[repr(transparent)]
1209#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1210#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentGravityFlagBitsKHR.html>"]
1211pub struct PresentGravityFlagsKHR(pub(crate) Flags);
1212vk_bitflags_wrapped!(PresentGravityFlagsKHR, Flags);
1213impl PresentGravityFlagsKHR {
1214    pub const MIN: Self = Self(0b1);
1215    pub const MIN_EXT: Self = Self::MIN;
1216    pub const MAX: Self = Self(0b10);
1217    pub const MAX_EXT: Self = Self::MAX;
1218    pub const CENTERED: Self = Self(0b100);
1219    pub const CENTERED_EXT: Self = Self::CENTERED;
1220}
1221#[repr(transparent)]
1222#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1223#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSchedulingControlsFlagBitsARM.html>"]
1224pub struct PhysicalDeviceSchedulingControlsFlagsARM(pub(crate) Flags64);
1225vk_bitflags_wrapped!(PhysicalDeviceSchedulingControlsFlagsARM, Flags64);
1226impl PhysicalDeviceSchedulingControlsFlagsARM {
1227    pub const SHADER_CORE_COUNT: Self = Self(0b1);
1228}
1229#[repr(transparent)]
1230#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1231#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentStageFlagBitsEXT.html>"]
1232pub struct PresentStageFlagsEXT(pub(crate) Flags);
1233vk_bitflags_wrapped!(PresentStageFlagsEXT, Flags);
1234impl PresentStageFlagsEXT {
1235    pub const QUEUE_OPERATIONS_END: Self = Self(0b1);
1236    pub const REQUEST_DEQUEUED: Self = Self(0b10);
1237    pub const IMAGE_FIRST_PIXEL_OUT: Self = Self(0b100);
1238    pub const IMAGE_FIRST_PIXEL_VISIBLE: Self = Self(0b1000);
1239}
1240#[repr(transparent)]
1241#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1242#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPastPresentationTimingFlagBitsEXT.html>"]
1243pub struct PastPresentationTimingFlagsEXT(pub(crate) Flags);
1244vk_bitflags_wrapped!(PastPresentationTimingFlagsEXT, Flags);
1245impl PastPresentationTimingFlagsEXT {
1246    pub const ALLOW_PARTIAL_RESULTS: Self = Self(0b1);
1247    pub const ALLOW_OUT_OF_ORDER_RESULTS: Self = Self(0b10);
1248}
1249#[repr(transparent)]
1250#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1251#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentTimingInfoFlagBitsEXT.html>"]
1252pub struct PresentTimingInfoFlagsEXT(pub(crate) Flags);
1253vk_bitflags_wrapped!(PresentTimingInfoFlagsEXT, Flags);
1254impl PresentTimingInfoFlagsEXT {
1255    pub const PRESENT_AT_RELATIVE_TIME: Self = Self(0b1);
1256    pub const PRESENT_AT_NEAREST_REFRESH_CYCLE: Self = Self(0b10);
1257}
1258#[repr(transparent)]
1259#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1260#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoCodecOperationFlagBitsKHR.html>"]
1261pub struct VideoCodecOperationFlagsKHR(pub(crate) Flags);
1262vk_bitflags_wrapped!(VideoCodecOperationFlagsKHR, Flags);
1263impl VideoCodecOperationFlagsKHR {
1264    pub const NONE: Self = Self(0);
1265}
1266#[repr(transparent)]
1267#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1268#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoChromaSubsamplingFlagBitsKHR.html>"]
1269pub struct VideoChromaSubsamplingFlagsKHR(pub(crate) Flags);
1270vk_bitflags_wrapped!(VideoChromaSubsamplingFlagsKHR, Flags);
1271impl VideoChromaSubsamplingFlagsKHR {
1272    pub const INVALID: Self = Self(0);
1273    pub const MONOCHROME: Self = Self(0b1);
1274    pub const TYPE_420: Self = Self(0b10);
1275    pub const TYPE_422: Self = Self(0b100);
1276    pub const TYPE_444: Self = Self(0b1000);
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/VkVideoComponentBitDepthFlagBitsKHR.html>"]
1281pub struct VideoComponentBitDepthFlagsKHR(pub(crate) Flags);
1282vk_bitflags_wrapped!(VideoComponentBitDepthFlagsKHR, Flags);
1283impl VideoComponentBitDepthFlagsKHR {
1284    pub const INVALID: Self = Self(0);
1285    pub const TYPE_8: Self = Self(0b1);
1286    pub const TYPE_10: Self = Self(0b100);
1287    pub const TYPE_12: Self = Self(0b1_0000);
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/VkVideoCapabilityFlagBitsKHR.html>"]
1292pub struct VideoCapabilityFlagsKHR(pub(crate) Flags);
1293vk_bitflags_wrapped!(VideoCapabilityFlagsKHR, Flags);
1294impl VideoCapabilityFlagsKHR {
1295    pub const PROTECTED_CONTENT: Self = Self(0b1);
1296    pub const SEPARATE_REFERENCE_IMAGES: 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/VkVideoSessionCreateFlagBitsKHR.html>"]
1301pub struct VideoSessionCreateFlagsKHR(pub(crate) Flags);
1302vk_bitflags_wrapped!(VideoSessionCreateFlagsKHR, Flags);
1303impl VideoSessionCreateFlagsKHR {
1304    pub const PROTECTED_CONTENT: Self = Self(0b1);
1305}
1306#[repr(transparent)]
1307#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1308#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoSessionParametersCreateFlagBitsKHR.html>"]
1309pub struct VideoSessionParametersCreateFlagsKHR(pub(crate) Flags);
1310vk_bitflags_wrapped!(VideoSessionParametersCreateFlagsKHR, Flags);
1311impl VideoSessionParametersCreateFlagsKHR {}
1312#[repr(transparent)]
1313#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1314#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureLayoutFlagBitsKHR.html>"]
1315pub struct VideoDecodeH264PictureLayoutFlagsKHR(pub(crate) Flags);
1316vk_bitflags_wrapped!(VideoDecodeH264PictureLayoutFlagsKHR, Flags);
1317impl VideoDecodeH264PictureLayoutFlagsKHR {
1318    pub const PROGRESSIVE: Self = Self(0);
1319    pub const INTERLACED_INTERLEAVED_LINES: Self = Self(0b1);
1320    pub const INTERLACED_SEPARATE_PLANES: Self = Self(0b10);
1321}
1322#[repr(transparent)]
1323#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1324#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoCodingControlFlagBitsKHR.html>"]
1325pub struct VideoCodingControlFlagsKHR(pub(crate) Flags);
1326vk_bitflags_wrapped!(VideoCodingControlFlagsKHR, Flags);
1327impl VideoCodingControlFlagsKHR {
1328    pub const RESET: Self = Self(0b1);
1329}
1330#[repr(transparent)]
1331#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1332#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeUsageFlagBitsKHR.html>"]
1333pub struct VideoDecodeUsageFlagsKHR(pub(crate) Flags);
1334vk_bitflags_wrapped!(VideoDecodeUsageFlagsKHR, Flags);
1335impl VideoDecodeUsageFlagsKHR {
1336    pub const DEFAULT: Self = Self(0);
1337    pub const TRANSCODING: Self = Self(0b1);
1338    pub const OFFLINE: Self = Self(0b10);
1339    pub const STREAMING: Self = Self(0b100);
1340}
1341#[repr(transparent)]
1342#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1343#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeCapabilityFlagBitsKHR.html>"]
1344pub struct VideoDecodeCapabilityFlagsKHR(pub(crate) Flags);
1345vk_bitflags_wrapped!(VideoDecodeCapabilityFlagsKHR, Flags);
1346impl VideoDecodeCapabilityFlagsKHR {
1347    pub const DPB_AND_OUTPUT_COINCIDE: Self = Self(0b1);
1348    pub const DPB_AND_OUTPUT_DISTINCT: Self = Self(0b10);
1349}
1350#[repr(transparent)]
1351#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1352#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeFlagBitsKHR.html>"]
1353pub struct VideoEncodeFlagsKHR(pub(crate) Flags);
1354vk_bitflags_wrapped!(VideoEncodeFlagsKHR, Flags);
1355impl VideoEncodeFlagsKHR {}
1356#[repr(transparent)]
1357#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1358#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeUsageFlagBitsKHR.html>"]
1359pub struct VideoEncodeUsageFlagsKHR(pub(crate) Flags);
1360vk_bitflags_wrapped!(VideoEncodeUsageFlagsKHR, Flags);
1361impl VideoEncodeUsageFlagsKHR {
1362    pub const DEFAULT: Self = Self(0);
1363    pub const TRANSCODING: Self = Self(0b1);
1364    pub const STREAMING: Self = Self(0b10);
1365    pub const RECORDING: Self = Self(0b100);
1366    pub const CONFERENCING: Self = Self(0b1000);
1367}
1368#[repr(transparent)]
1369#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1370#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeContentFlagBitsKHR.html>"]
1371pub struct VideoEncodeContentFlagsKHR(pub(crate) Flags);
1372vk_bitflags_wrapped!(VideoEncodeContentFlagsKHR, Flags);
1373impl VideoEncodeContentFlagsKHR {
1374    pub const DEFAULT: Self = Self(0);
1375    pub const CAMERA: Self = Self(0b1);
1376    pub const DESKTOP: Self = Self(0b10);
1377    pub const RENDERED: Self = Self(0b100);
1378}
1379#[repr(transparent)]
1380#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1381#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeCapabilityFlagBitsKHR.html>"]
1382pub struct VideoEncodeCapabilityFlagsKHR(pub(crate) Flags);
1383vk_bitflags_wrapped!(VideoEncodeCapabilityFlagsKHR, Flags);
1384impl VideoEncodeCapabilityFlagsKHR {
1385    pub const PRECEDING_EXTERNALLY_ENCODED_BYTES: Self = Self(0b1);
1386    pub const INSUFFICIENTSTREAM_BUFFER_RANGE_DETECTION: Self = Self(0b10);
1387}
1388#[repr(transparent)]
1389#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1390#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeFeedbackFlagBitsKHR.html>"]
1391pub struct VideoEncodeFeedbackFlagsKHR(pub(crate) Flags);
1392vk_bitflags_wrapped!(VideoEncodeFeedbackFlagsKHR, Flags);
1393impl VideoEncodeFeedbackFlagsKHR {
1394    pub const BITSTREAM_BUFFER_OFFSET: Self = Self(0b1);
1395    pub const BITSTREAM_BYTES_WRITTEN: Self = Self(0b10);
1396    pub const BITSTREAM_HAS_OVERRIDES: Self = Self(0b100);
1397}
1398#[repr(transparent)]
1399#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1400#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeRateControlModeFlagBitsKHR.html>"]
1401pub struct VideoEncodeRateControlModeFlagsKHR(pub(crate) Flags);
1402vk_bitflags_wrapped!(VideoEncodeRateControlModeFlagsKHR, Flags);
1403impl VideoEncodeRateControlModeFlagsKHR {
1404    pub const DEFAULT: Self = Self(0);
1405    pub const DISABLED: Self = Self(0b1);
1406    pub const CBR: Self = Self(0b10);
1407    pub const VBR: Self = Self(0b100);
1408}
1409#[repr(transparent)]
1410#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1411#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeIntraRefreshModeFlagBitsKHR.html>"]
1412pub struct VideoEncodeIntraRefreshModeFlagsKHR(pub(crate) Flags);
1413vk_bitflags_wrapped!(VideoEncodeIntraRefreshModeFlagsKHR, Flags);
1414impl VideoEncodeIntraRefreshModeFlagsKHR {
1415    pub const NONE: Self = Self(0);
1416    pub const PER_PICTURE_PARTITION: Self = Self(0b1);
1417    pub const BLOCK_BASED: Self = Self(0b10);
1418    pub const BLOCK_ROW_BASED: Self = Self(0b100);
1419    pub const BLOCK_COLUMN_BASED: Self = Self(0b1000);
1420}
1421#[repr(transparent)]
1422#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1423#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264CapabilityFlagBitsKHR.html>"]
1424pub struct VideoEncodeH264CapabilityFlagsKHR(pub(crate) Flags);
1425vk_bitflags_wrapped!(VideoEncodeH264CapabilityFlagsKHR, Flags);
1426impl VideoEncodeH264CapabilityFlagsKHR {
1427    pub const HRD_COMPLIANCE: Self = Self(0b1);
1428    pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = Self(0b10);
1429    pub const ROW_UNALIGNED_SLICE: Self = Self(0b100);
1430    pub const DIFFERENT_SLICE_TYPE: Self = Self(0b1000);
1431    pub const B_FRAME_IN_L0_LIST: Self = Self(0b1_0000);
1432    pub const B_FRAME_IN_L1_LIST: Self = Self(0b10_0000);
1433    pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = Self(0b100_0000);
1434    pub const PER_SLICE_CONSTANT_QP: Self = Self(0b1000_0000);
1435    pub const GENERATE_PREFIX_NALU: Self = Self(0b1_0000_0000);
1436}
1437#[repr(transparent)]
1438#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1439#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264StdFlagBitsKHR.html>"]
1440pub struct VideoEncodeH264StdFlagsKHR(pub(crate) Flags);
1441vk_bitflags_wrapped!(VideoEncodeH264StdFlagsKHR, Flags);
1442impl VideoEncodeH264StdFlagsKHR {
1443    pub const SEPARATE_COLOR_PLANE_FLAG_SET: Self = Self(0b1);
1444    pub const QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET: Self = Self(0b10);
1445    pub const SCALING_MATRIX_PRESENT_FLAG_SET: Self = Self(0b100);
1446    pub const CHROMA_QP_INDEX_OFFSET: Self = Self(0b1000);
1447    pub const SECOND_CHROMA_QP_INDEX_OFFSET: Self = Self(0b1_0000);
1448    pub const PIC_INIT_QP_MINUS26: Self = Self(0b10_0000);
1449    pub const WEIGHTED_PRED_FLAG_SET: Self = Self(0b100_0000);
1450    pub const WEIGHTED_BIPRED_IDC_EXPLICIT: Self = Self(0b1000_0000);
1451    pub const WEIGHTED_BIPRED_IDC_IMPLICIT: Self = Self(0b1_0000_0000);
1452    pub const TRANSFORM_8X8_MODE_FLAG_SET: Self = Self(0b10_0000_0000);
1453    pub const DIRECT_SPATIAL_MV_PRED_FLAG_UNSET: Self = Self(0b100_0000_0000);
1454    pub const ENTROPY_CODING_MODE_FLAG_UNSET: Self = Self(0b1000_0000_0000);
1455    pub const ENTROPY_CODING_MODE_FLAG_SET: Self = Self(0b1_0000_0000_0000);
1456    pub const DIRECT_8X8_INFERENCE_FLAG_UNSET: Self = Self(0b10_0000_0000_0000);
1457    pub const CONSTRAINED_INTRA_PRED_FLAG_SET: Self = Self(0b100_0000_0000_0000);
1458    pub const DEBLOCKING_FILTER_DISABLED: Self = Self(0b1000_0000_0000_0000);
1459    pub const DEBLOCKING_FILTER_ENABLED: Self = Self(0b1_0000_0000_0000_0000);
1460    pub const DEBLOCKING_FILTER_PARTIAL: Self = Self(0b10_0000_0000_0000_0000);
1461    pub const SLICE_QP_DELTA: Self = Self(0b1000_0000_0000_0000_0000);
1462    pub const DIFFERENT_SLICE_QP_DELTA: Self = Self(0b1_0000_0000_0000_0000_0000);
1463}
1464#[repr(transparent)]
1465#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1466#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264RateControlFlagBitsKHR.html>"]
1467pub struct VideoEncodeH264RateControlFlagsKHR(pub(crate) Flags);
1468vk_bitflags_wrapped!(VideoEncodeH264RateControlFlagsKHR, Flags);
1469impl VideoEncodeH264RateControlFlagsKHR {
1470    pub const ATTEMPT_HRD_COMPLIANCE: Self = Self(0b1);
1471    pub const REGULAR_GOP: Self = Self(0b10);
1472    pub const REFERENCE_PATTERN_FLAT: Self = Self(0b100);
1473    pub const REFERENCE_PATTERN_DYADIC: Self = Self(0b1000);
1474    pub const TEMPORAL_LAYER_PATTERN_DYADIC: Self = Self(0b1_0000);
1475}
1476#[repr(transparent)]
1477#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1478#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkHostImageCopyFlagBits.html>"]
1479pub struct HostImageCopyFlags(pub(crate) Flags);
1480vk_bitflags_wrapped!(HostImageCopyFlags, Flags);
1481impl HostImageCopyFlags {
1482    pub const MEMCPY: Self = Self(0b1);
1483}
1484#[repr(transparent)]
1485#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1486#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPartitionedAccelerationStructureInstanceFlagBitsNV.html>"]
1487pub struct PartitionedAccelerationStructureInstanceFlagsNV(pub(crate) Flags);
1488vk_bitflags_wrapped!(PartitionedAccelerationStructureInstanceFlagsNV, Flags);
1489impl PartitionedAccelerationStructureInstanceFlagsNV {
1490    pub const FLAG_TRIANGLE_FACING_CULL_DISABLE: Self = Self(0b1);
1491    pub const FLAG_TRIANGLE_FLIP_FACING: Self = Self(0b10);
1492    pub const FLAG_FORCE_OPAQUE: Self = Self(0b100);
1493    pub const FLAG_FORCE_NO_OPAQUE: Self = Self(0b1000);
1494    pub const FLAG_ENABLE_EXPLICIT_BOUNDING_BOX: Self = Self(0b1_0000);
1495}
1496#[repr(transparent)]
1497#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1498#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageFormatConstraintsFlagBitsFUCHSIA.html>"]
1499pub struct ImageFormatConstraintsFlagsFUCHSIA(pub(crate) Flags);
1500vk_bitflags_wrapped!(ImageFormatConstraintsFlagsFUCHSIA, Flags);
1501impl ImageFormatConstraintsFlagsFUCHSIA {}
1502#[repr(transparent)]
1503#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1504#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageConstraintsInfoFlagBitsFUCHSIA.html>"]
1505pub struct ImageConstraintsInfoFlagsFUCHSIA(pub(crate) Flags);
1506vk_bitflags_wrapped!(ImageConstraintsInfoFlagsFUCHSIA, Flags);
1507impl ImageConstraintsInfoFlagsFUCHSIA {
1508    pub const CPU_READ_RARELY: Self = Self(0b1);
1509    pub const CPU_READ_OFTEN: Self = Self(0b10);
1510    pub const CPU_WRITE_RARELY: Self = Self(0b100);
1511    pub const CPU_WRITE_OFTEN: Self = Self(0b1000);
1512    pub const PROTECTED_OPTIONAL: Self = Self(0b1_0000);
1513}
1514#[repr(transparent)]
1515#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1516#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits2.html>"]
1517pub struct FormatFeatureFlags2(pub(crate) Flags64);
1518vk_bitflags_wrapped!(FormatFeatureFlags2, Flags64);
1519impl FormatFeatureFlags2 {
1520    pub const SAMPLED_IMAGE: Self = Self(0b1);
1521    pub const STORAGE_IMAGE: Self = Self(0b10);
1522    pub const STORAGE_IMAGE_ATOMIC: Self = Self(0b100);
1523    pub const UNIFORM_TEXEL_BUFFER: Self = Self(0b1000);
1524    pub const STORAGE_TEXEL_BUFFER: Self = Self(0b1_0000);
1525    pub const STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(0b10_0000);
1526    pub const VERTEX_BUFFER: Self = Self(0b100_0000);
1527    pub const COLOR_ATTACHMENT: Self = Self(0b1000_0000);
1528    pub const COLOR_ATTACHMENT_BLEND: Self = Self(0b1_0000_0000);
1529    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0b10_0000_0000);
1530    pub const BLIT_SRC: Self = Self(0b100_0000_0000);
1531    pub const BLIT_DST: Self = Self(0b1000_0000_0000);
1532    pub const SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(0b1_0000_0000_0000);
1533    pub const TRANSFER_SRC: Self = Self(0b100_0000_0000_0000);
1534    pub const TRANSFER_DST: Self = Self(0b1000_0000_0000_0000);
1535    pub const SAMPLED_IMAGE_FILTER_MINMAX: Self = Self(0b1_0000_0000_0000_0000);
1536    pub const MIDPOINT_CHROMA_SAMPLES: Self = Self(0b10_0000_0000_0000_0000);
1537    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER: Self = Self(0b100_0000_0000_0000_0000);
1538    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER: Self =
1539        Self(0b1000_0000_0000_0000_0000);
1540    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT: Self =
1541        Self(0b1_0000_0000_0000_0000_0000);
1542    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE: Self =
1543        Self(0b10_0000_0000_0000_0000_0000);
1544    pub const DISJOINT: Self = Self(0b100_0000_0000_0000_0000_0000);
1545    pub const COSITED_CHROMA_SAMPLES: Self = Self(0b1000_0000_0000_0000_0000_0000);
1546    pub const STORAGE_READ_WITHOUT_FORMAT: Self = Self(0b1000_0000_0000_0000_0000_0000_0000_0000);
1547    pub const STORAGE_WRITE_WITHOUT_FORMAT: Self =
1548        Self(0b1_0000_0000_0000_0000_0000_0000_0000_0000);
1549    pub const SAMPLED_IMAGE_DEPTH_COMPARISON: Self =
1550        Self(0b10_0000_0000_0000_0000_0000_0000_0000_0000);
1551}
1552#[repr(transparent)]
1553#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1554#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderingFlagBits.html>"]
1555pub struct RenderingFlags(pub(crate) Flags);
1556vk_bitflags_wrapped!(RenderingFlags, Flags);
1557impl RenderingFlags {
1558    pub const CONTENTS_SECONDARY_COMMAND_BUFFERS: Self = Self(0b1);
1559    pub const SUSPENDING: Self = Self(0b10);
1560    pub const RESUMING: Self = Self(0b100);
1561}
1562#[repr(transparent)]
1563#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1564#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265CapabilityFlagBitsKHR.html>"]
1565pub struct VideoEncodeH265CapabilityFlagsKHR(pub(crate) Flags);
1566vk_bitflags_wrapped!(VideoEncodeH265CapabilityFlagsKHR, Flags);
1567impl VideoEncodeH265CapabilityFlagsKHR {
1568    pub const HRD_COMPLIANCE: Self = Self(0b1);
1569    pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = Self(0b10);
1570    pub const ROW_UNALIGNED_SLICE_SEGMENT: Self = Self(0b100);
1571    pub const DIFFERENT_SLICE_SEGMENT_TYPE: Self = Self(0b1000);
1572    pub const B_FRAME_IN_L0_LIST: Self = Self(0b1_0000);
1573    pub const B_FRAME_IN_L1_LIST: Self = Self(0b10_0000);
1574    pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = Self(0b100_0000);
1575    pub const PER_SLICE_SEGMENT_CONSTANT_QP: Self = Self(0b1000_0000);
1576    pub const MULTIPLE_TILES_PER_SLICE_SEGMENT: Self = Self(0b1_0000_0000);
1577    pub const MULTIPLE_SLICE_SEGMENTS_PER_TILE: Self = Self(0b10_0000_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/VkVideoEncodeH265StdFlagBitsKHR.html>"]
1582pub struct VideoEncodeH265StdFlagsKHR(pub(crate) Flags);
1583vk_bitflags_wrapped!(VideoEncodeH265StdFlagsKHR, Flags);
1584impl VideoEncodeH265StdFlagsKHR {
1585    pub const SEPARATE_COLOR_PLANE_FLAG_SET: Self = Self(0b1);
1586    pub const SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET: Self = Self(0b10);
1587    pub const SCALING_LIST_DATA_PRESENT_FLAG_SET: Self = Self(0b100);
1588    pub const PCM_ENABLED_FLAG_SET: Self = Self(0b1000);
1589    pub const SPS_TEMPORAL_MVP_ENABLED_FLAG_SET: Self = Self(0b1_0000);
1590    pub const INIT_QP_MINUS26: Self = Self(0b10_0000);
1591    pub const WEIGHTED_PRED_FLAG_SET: Self = Self(0b100_0000);
1592    pub const WEIGHTED_BIPRED_FLAG_SET: Self = Self(0b1000_0000);
1593    pub const LOG2_PARALLEL_MERGE_LEVEL_MINUS2: Self = Self(0b1_0000_0000);
1594    pub const SIGN_DATA_HIDING_ENABLED_FLAG_SET: Self = Self(0b10_0000_0000);
1595    pub const TRANSFORM_SKIP_ENABLED_FLAG_SET: Self = Self(0b100_0000_0000);
1596    pub const TRANSFORM_SKIP_ENABLED_FLAG_UNSET: Self = Self(0b1000_0000_0000);
1597    pub const PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET: Self = Self(0b1_0000_0000_0000);
1598    pub const TRANSQUANT_BYPASS_ENABLED_FLAG_SET: Self = Self(0b10_0000_0000_0000);
1599    pub const CONSTRAINED_INTRA_PRED_FLAG_SET: Self = Self(0b100_0000_0000_0000);
1600    pub const ENTROPY_CODING_SYNC_ENABLED_FLAG_SET: Self = Self(0b1000_0000_0000_0000);
1601    pub const DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET: Self = Self(0b1_0000_0000_0000_0000);
1602    pub const DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET: Self = Self(0b10_0000_0000_0000_0000);
1603    pub const DEPENDENT_SLICE_SEGMENT_FLAG_SET: Self = Self(0b100_0000_0000_0000_0000);
1604    pub const SLICE_QP_DELTA: Self = Self(0b1000_0000_0000_0000_0000);
1605    pub const DIFFERENT_SLICE_QP_DELTA: Self = Self(0b1_0000_0000_0000_0000_0000);
1606}
1607#[repr(transparent)]
1608#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1609#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265RateControlFlagBitsKHR.html>"]
1610pub struct VideoEncodeH265RateControlFlagsKHR(pub(crate) Flags);
1611vk_bitflags_wrapped!(VideoEncodeH265RateControlFlagsKHR, Flags);
1612impl VideoEncodeH265RateControlFlagsKHR {
1613    pub const ATTEMPT_HRD_COMPLIANCE: Self = Self(0b1);
1614    pub const REGULAR_GOP: Self = Self(0b10);
1615    pub const REFERENCE_PATTERN_FLAT: Self = Self(0b100);
1616    pub const REFERENCE_PATTERN_DYADIC: Self = Self(0b1000);
1617    pub const TEMPORAL_SUB_LAYER_PATTERN_DYADIC: Self = Self(0b1_0000);
1618}
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/VkVideoEncodeH265CtbSizeFlagBitsKHR.html>"]
1622pub struct VideoEncodeH265CtbSizeFlagsKHR(pub(crate) Flags);
1623vk_bitflags_wrapped!(VideoEncodeH265CtbSizeFlagsKHR, Flags);
1624impl VideoEncodeH265CtbSizeFlagsKHR {
1625    pub const TYPE_16: Self = Self(0b1);
1626    pub const TYPE_32: Self = Self(0b10);
1627    pub const TYPE_64: Self = Self(0b100);
1628}
1629#[repr(transparent)]
1630#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1631#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265TransformBlockSizeFlagBitsKHR.html>"]
1632pub struct VideoEncodeH265TransformBlockSizeFlagsKHR(pub(crate) Flags);
1633vk_bitflags_wrapped!(VideoEncodeH265TransformBlockSizeFlagsKHR, Flags);
1634impl VideoEncodeH265TransformBlockSizeFlagsKHR {
1635    pub const TYPE_4: Self = Self(0b1);
1636    pub const TYPE_8: Self = Self(0b10);
1637    pub const TYPE_16: Self = Self(0b100);
1638    pub const TYPE_32: Self = Self(0b1000);
1639}
1640#[repr(transparent)]
1641#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1642#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeAV1CapabilityFlagBitsKHR.html>"]
1643pub struct VideoEncodeAV1CapabilityFlagsKHR(pub(crate) Flags);
1644vk_bitflags_wrapped!(VideoEncodeAV1CapabilityFlagsKHR, Flags);
1645impl VideoEncodeAV1CapabilityFlagsKHR {
1646    pub const PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX: Self = Self(0b1);
1647    pub const GENERATE_OBU_EXTENSION_HEADER: Self = Self(0b10);
1648    pub const PRIMARY_REFERENCE_CDF_ONLY: Self = Self(0b100);
1649    pub const FRAME_SIZE_OVERRIDE: Self = Self(0b1000);
1650    pub const MOTION_VECTOR_SCALING: Self = Self(0b1_0000);
1651}
1652#[repr(transparent)]
1653#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1654#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeAV1StdFlagBitsKHR.html>"]
1655pub struct VideoEncodeAV1StdFlagsKHR(pub(crate) Flags);
1656vk_bitflags_wrapped!(VideoEncodeAV1StdFlagsKHR, Flags);
1657impl VideoEncodeAV1StdFlagsKHR {
1658    pub const UNIFORM_TILE_SPACING_FLAG_SET: Self = Self(0b1);
1659    pub const SKIP_MODE_PRESENT_UNSET: Self = Self(0b10);
1660    pub const PRIMARY_REF_FRAME: Self = Self(0b100);
1661    pub const DELTA_Q: Self = Self(0b1000);
1662}
1663#[repr(transparent)]
1664#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1665#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeAV1RateControlFlagBitsKHR.html>"]
1666pub struct VideoEncodeAV1RateControlFlagsKHR(pub(crate) Flags);
1667vk_bitflags_wrapped!(VideoEncodeAV1RateControlFlagsKHR, Flags);
1668impl VideoEncodeAV1RateControlFlagsKHR {
1669    pub const REGULAR_GOP: Self = Self(0b1);
1670    pub const TEMPORAL_LAYER_PATTERN_DYADIC: Self = Self(0b10);
1671    pub const REFERENCE_PATTERN_FLAT: Self = Self(0b100);
1672    pub const REFERENCE_PATTERN_DYADIC: 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/VkVideoEncodeAV1SuperblockSizeFlagBitsKHR.html>"]
1677pub struct VideoEncodeAV1SuperblockSizeFlagsKHR(pub(crate) Flags);
1678vk_bitflags_wrapped!(VideoEncodeAV1SuperblockSizeFlagsKHR, Flags);
1679impl VideoEncodeAV1SuperblockSizeFlagsKHR {
1680    pub const TYPE_64: Self = Self(0b1);
1681    pub const TYPE_128: Self = Self(0b10);
1682}
1683#[repr(transparent)]
1684#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1685#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExportMetalObjectTypeFlagBitsEXT.html>"]
1686pub struct ExportMetalObjectTypeFlagsEXT(pub(crate) Flags);
1687vk_bitflags_wrapped!(ExportMetalObjectTypeFlagsEXT, Flags);
1688impl ExportMetalObjectTypeFlagsEXT {
1689    pub const METAL_DEVICE: Self = Self(0b1);
1690    pub const METAL_COMMAND_QUEUE: Self = Self(0b10);
1691    pub const METAL_BUFFER: Self = Self(0b100);
1692    pub const METAL_TEXTURE: Self = Self(0b1000);
1693    pub const METAL_IOSURFACE: Self = Self(0b1_0000);
1694    pub const METAL_SHARED_EVENT: Self = Self(0b10_0000);
1695}
1696#[repr(transparent)]
1697#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1698#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateFlagBits.html>"]
1699pub struct InstanceCreateFlags(pub(crate) Flags);
1700vk_bitflags_wrapped!(InstanceCreateFlags, Flags);
1701impl InstanceCreateFlags {}
1702#[repr(transparent)]
1703#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1704#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCompressionFlagBitsEXT.html>"]
1705pub struct ImageCompressionFlagsEXT(pub(crate) Flags);
1706vk_bitflags_wrapped!(ImageCompressionFlagsEXT, Flags);
1707impl ImageCompressionFlagsEXT {
1708    pub const DEFAULT: Self = Self(0);
1709    pub const FIXED_RATE_DEFAULT: Self = Self(0b1);
1710    pub const FIXED_RATE_EXPLICIT: Self = Self(0b10);
1711    pub const DISABLED: Self = Self(0b100);
1712}
1713#[repr(transparent)]
1714#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1715#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCompressionFixedRateFlagBitsEXT.html>"]
1716pub struct ImageCompressionFixedRateFlagsEXT(pub(crate) Flags);
1717vk_bitflags_wrapped!(ImageCompressionFixedRateFlagsEXT, Flags);
1718impl ImageCompressionFixedRateFlagsEXT {
1719    pub const NONE: Self = Self(0);
1720    pub const TYPE_1BPC: Self = Self(0b1);
1721    pub const TYPE_2BPC: Self = Self(0b10);
1722    pub const TYPE_3BPC: Self = Self(0b100);
1723    pub const TYPE_4BPC: Self = Self(0b1000);
1724    pub const TYPE_5BPC: Self = Self(0b1_0000);
1725    pub const TYPE_6BPC: Self = Self(0b10_0000);
1726    pub const TYPE_7BPC: Self = Self(0b100_0000);
1727    pub const TYPE_8BPC: Self = Self(0b1000_0000);
1728    pub const TYPE_9BPC: Self = Self(0b1_0000_0000);
1729    pub const TYPE_10BPC: Self = Self(0b10_0000_0000);
1730    pub const TYPE_11BPC: Self = Self(0b100_0000_0000);
1731    pub const TYPE_12BPC: Self = Self(0b1000_0000_0000);
1732    pub const TYPE_13BPC: Self = Self(0b1_0000_0000_0000);
1733    pub const TYPE_14BPC: Self = Self(0b10_0000_0000_0000);
1734    pub const TYPE_15BPC: Self = Self(0b100_0000_0000_0000);
1735    pub const TYPE_16BPC: Self = Self(0b1000_0000_0000_0000);
1736    pub const TYPE_17BPC: Self = Self(0b1_0000_0000_0000_0000);
1737    pub const TYPE_18BPC: Self = Self(0b10_0000_0000_0000_0000);
1738    pub const TYPE_19BPC: Self = Self(0b100_0000_0000_0000_0000);
1739    pub const TYPE_20BPC: Self = Self(0b1000_0000_0000_0000_0000);
1740    pub const TYPE_21BPC: Self = Self(0b1_0000_0000_0000_0000_0000);
1741    pub const TYPE_22BPC: Self = Self(0b10_0000_0000_0000_0000_0000);
1742    pub const TYPE_23BPC: Self = Self(0b100_0000_0000_0000_0000_0000);
1743    pub const TYPE_24BPC: Self = Self(0b1000_0000_0000_0000_0000_0000);
1744}
1745#[repr(transparent)]
1746#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1747#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowGridSizeFlagBitsNV.html>"]
1748pub struct OpticalFlowGridSizeFlagsNV(pub(crate) Flags);
1749vk_bitflags_wrapped!(OpticalFlowGridSizeFlagsNV, Flags);
1750impl OpticalFlowGridSizeFlagsNV {
1751    pub const UNKNOWN: Self = Self(0);
1752    pub const TYPE_1X1: Self = Self(0b1);
1753    pub const TYPE_2X2: Self = Self(0b10);
1754    pub const TYPE_4X4: Self = Self(0b100);
1755    pub const TYPE_8X8: Self = Self(0b1000);
1756}
1757#[repr(transparent)]
1758#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1759#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowUsageFlagBitsNV.html>"]
1760pub struct OpticalFlowUsageFlagsNV(pub(crate) Flags);
1761vk_bitflags_wrapped!(OpticalFlowUsageFlagsNV, Flags);
1762impl OpticalFlowUsageFlagsNV {
1763    pub const UNKNOWN: Self = Self(0);
1764    pub const INPUT: Self = Self(0b1);
1765    pub const OUTPUT: Self = Self(0b10);
1766    pub const HINT: Self = Self(0b100);
1767    pub const COST: Self = Self(0b1000);
1768    pub const GLOBAL_FLOW: Self = Self(0b1_0000);
1769}
1770#[repr(transparent)]
1771#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1772#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowSessionCreateFlagBitsNV.html>"]
1773pub struct OpticalFlowSessionCreateFlagsNV(pub(crate) Flags);
1774vk_bitflags_wrapped!(OpticalFlowSessionCreateFlagsNV, Flags);
1775impl OpticalFlowSessionCreateFlagsNV {
1776    pub const ENABLE_HINT: Self = Self(0b1);
1777    pub const ENABLE_COST: Self = Self(0b10);
1778    pub const ENABLE_GLOBAL_FLOW: Self = Self(0b100);
1779    pub const ALLOW_REGIONS: Self = Self(0b1000);
1780    pub const BOTH_DIRECTIONS: Self = Self(0b1_0000);
1781}
1782#[repr(transparent)]
1783#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1784#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowExecuteFlagBitsNV.html>"]
1785pub struct OpticalFlowExecuteFlagsNV(pub(crate) Flags);
1786vk_bitflags_wrapped!(OpticalFlowExecuteFlagsNV, Flags);
1787impl OpticalFlowExecuteFlagsNV {
1788    pub const DISABLE_TEMPORAL_HINTS: Self = Self(0b1);
1789}
1790#[repr(transparent)]
1791#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1792#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBuildMicromapFlagBitsEXT.html>"]
1793pub struct BuildMicromapFlagsEXT(pub(crate) Flags);
1794vk_bitflags_wrapped!(BuildMicromapFlagsEXT, Flags);
1795impl BuildMicromapFlagsEXT {
1796    pub const PREFER_FAST_TRACE: Self = Self(0b1);
1797    pub const PREFER_FAST_BUILD: Self = Self(0b10);
1798    pub const ALLOW_COMPACTION: Self = Self(0b100);
1799}
1800#[repr(transparent)]
1801#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1802#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMicromapCreateFlagBitsEXT.html>"]
1803pub struct MicromapCreateFlagsEXT(pub(crate) Flags);
1804vk_bitflags_wrapped!(MicromapCreateFlagsEXT, Flags);
1805impl MicromapCreateFlagsEXT {
1806    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(0b1);
1807}
1808#[repr(transparent)]
1809#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1810#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsLayoutUsageFlagBitsEXT.html>"]
1811pub struct IndirectCommandsLayoutUsageFlagsEXT(pub(crate) Flags);
1812vk_bitflags_wrapped!(IndirectCommandsLayoutUsageFlagsEXT, Flags);
1813impl IndirectCommandsLayoutUsageFlagsEXT {
1814    pub const EXPLICIT_PREPROCESS: Self = Self(0b1);
1815    pub const UNORDERED_SEQUENCES: Self = Self(0b10);
1816}
1817#[repr(transparent)]
1818#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1819#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsInputModeFlagBitsEXT.html>"]
1820pub struct IndirectCommandsInputModeFlagsEXT(pub(crate) Flags);
1821vk_bitflags_wrapped!(IndirectCommandsInputModeFlagsEXT, Flags);
1822impl IndirectCommandsInputModeFlagsEXT {
1823    pub const VULKAN_INDEX_BUFFER: Self = Self(0b1);
1824    pub const DXGI_INDEX_BUFFER: Self = Self(0b10);
1825}
1826#[repr(transparent)]
1827#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1828#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderCreateFlagBitsEXT.html>"]
1829pub struct ShaderCreateFlagsEXT(pub(crate) Flags);
1830vk_bitflags_wrapped!(ShaderCreateFlagsEXT, Flags);
1831impl ShaderCreateFlagsEXT {
1832    pub const LINK_STAGE: Self = Self(0b1);
1833}
1834#[repr(transparent)]
1835#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1836#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryUnmapFlagBits.html>"]
1837pub struct MemoryUnmapFlags(pub(crate) Flags);
1838vk_bitflags_wrapped!(MemoryUnmapFlags, Flags);
1839impl MemoryUnmapFlags {}
1840#[repr(transparent)]
1841#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1842#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkWaylandSurfaceCreateFlagBitsKHR.html>"]
1843pub struct WaylandSurfaceCreateFlagsKHR(pub(crate) Flags);
1844vk_bitflags_wrapped!(WaylandSurfaceCreateFlagsKHR, Flags);
1845impl WaylandSurfaceCreateFlagsKHR {}
1846#[repr(transparent)]
1847#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1848#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccessFlagBits3KHR.html>"]
1849pub struct AccessFlags3KHR(pub(crate) Flags64);
1850vk_bitflags_wrapped!(AccessFlags3KHR, Flags64);
1851impl AccessFlags3KHR {
1852    pub const NONE: Self = Self(0);
1853}
1854#[repr(transparent)]
1855#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1856#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTileShadingRenderPassFlagBitsQCOM.html>"]
1857pub struct TileShadingRenderPassFlagsQCOM(pub(crate) Flags);
1858vk_bitflags_wrapped!(TileShadingRenderPassFlagsQCOM, Flags);
1859impl TileShadingRenderPassFlagsQCOM {
1860    pub const ENABLE: Self = Self(0b1);
1861    pub const PER_TILE_EXECUTION: Self = Self(0b10);
1862}
1863#[repr(transparent)]
1864#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1865#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAddressCopyFlagBitsKHR.html>"]
1866pub struct AddressCopyFlagsKHR(pub(crate) Flags);
1867vk_bitflags_wrapped!(AddressCopyFlagsKHR, Flags);
1868impl AddressCopyFlagsKHR {
1869    pub const DEVICE_LOCAL: Self = Self(0b1);
1870    pub const SPARSE: Self = Self(0b10);
1871    pub const PROTECTED: Self = Self(0b100);
1872}
1873#[repr(transparent)]
1874#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1875#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTensorCreateFlagBitsARM.html>"]
1876pub struct TensorCreateFlagsARM(pub(crate) Flags64);
1877vk_bitflags_wrapped!(TensorCreateFlagsARM, Flags64);
1878impl TensorCreateFlagsARM {
1879    pub const MUTABLE_FORMAT: Self = Self(0b1);
1880    pub const PROTECTED: Self = Self(0b10);
1881}
1882#[repr(transparent)]
1883#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1884#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTensorUsageFlagBitsARM.html>"]
1885pub struct TensorUsageFlagsARM(pub(crate) Flags64);
1886vk_bitflags_wrapped!(TensorUsageFlagsARM, Flags64);
1887impl TensorUsageFlagsARM {
1888    #[doc = "Tensor written/read through shader descriptor"]
1889    pub const SHADER: Self = Self(0b10);
1890    #[doc = "Tensor can be src of a transfer operation"]
1891    pub const TRANSFER_SRC: Self = Self(0b100);
1892    #[doc = "Tensor can be dst of a transfer operation"]
1893    pub const TRANSFER_DST: Self = Self(0b1000);
1894    #[doc = "Tensor can be aliased with an image"]
1895    pub const IMAGE_ALIASING: Self = Self(0b1_0000);
1896}
1897#[repr(transparent)]
1898#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1899#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTensorViewCreateFlagBitsARM.html>"]
1900pub struct TensorViewCreateFlagsARM(pub(crate) Flags64);
1901vk_bitflags_wrapped!(TensorViewCreateFlagsARM, Flags64);
1902impl TensorViewCreateFlagsARM {}
1903#[repr(transparent)]
1904#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1905#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDataGraphPipelineSessionCreateFlagBitsARM.html>"]
1906pub struct DataGraphPipelineSessionCreateFlagsARM(pub(crate) Flags64);
1907vk_bitflags_wrapped!(DataGraphPipelineSessionCreateFlagsARM, Flags64);
1908impl DataGraphPipelineSessionCreateFlagsARM {
1909    pub const PROTECTED: Self = Self(0b1);
1910}
1911#[repr(transparent)]
1912#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1913#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDataGraphPipelineDispatchFlagBitsARM.html>"]
1914pub struct DataGraphPipelineDispatchFlagsARM(pub(crate) Flags64);
1915vk_bitflags_wrapped!(DataGraphPipelineDispatchFlagsARM, Flags64);
1916impl DataGraphPipelineDispatchFlagsARM {}
1917#[repr(transparent)]
1918#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1919#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeRgbModelConversionFlagBitsVALVE.html>"]
1920pub struct VideoEncodeRgbModelConversionFlagsVALVE(pub(crate) Flags);
1921vk_bitflags_wrapped!(VideoEncodeRgbModelConversionFlagsVALVE, Flags);
1922impl VideoEncodeRgbModelConversionFlagsVALVE {
1923    pub const RGB_IDENTITY: Self = Self(0b1);
1924    pub const YCBCR_IDENTITY: Self = Self(0b10);
1925    pub const YCBCR_709: Self = Self(0b100);
1926    pub const YCBCR_601: Self = Self(0b1000);
1927    pub const YCBCR_2020: Self = Self(0b1_0000);
1928}
1929#[repr(transparent)]
1930#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1931#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeRgbRangeCompressionFlagBitsVALVE.html>"]
1932pub struct VideoEncodeRgbRangeCompressionFlagsVALVE(pub(crate) Flags);
1933vk_bitflags_wrapped!(VideoEncodeRgbRangeCompressionFlagsVALVE, Flags);
1934impl VideoEncodeRgbRangeCompressionFlagsVALVE {
1935    pub const FULL_RANGE: Self = Self(0b1);
1936    pub const NARROW_RANGE: Self = Self(0b10);
1937}
1938#[repr(transparent)]
1939#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1940#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeRgbChromaOffsetFlagBitsVALVE.html>"]
1941pub struct VideoEncodeRgbChromaOffsetFlagsVALVE(pub(crate) Flags);
1942vk_bitflags_wrapped!(VideoEncodeRgbChromaOffsetFlagsVALVE, Flags);
1943impl VideoEncodeRgbChromaOffsetFlagsVALVE {
1944    pub const COSITED_EVEN: Self = Self(0b1);
1945    pub const MIDPOINT: Self = Self(0b10);
1946}
1947#[repr(transparent)]
1948#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
1949#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSpirvResourceTypeFlagBitsEXT.html>"]
1950pub struct SpirvResourceTypeFlagsEXT(pub(crate) Flags);
1951vk_bitflags_wrapped!(SpirvResourceTypeFlagsEXT, Flags);
1952impl SpirvResourceTypeFlagsEXT {
1953    pub const ALL: Self = Self(0x7FFF_FFFF);
1954    pub const SAMPLER: Self = Self(0b1);
1955    pub const SAMPLED_IMAGE: Self = Self(0b10);
1956    pub const READ_ONLY_IMAGE: Self = Self(0b100);
1957    pub const READ_WRITE_IMAGE: Self = Self(0b1000);
1958    pub const COMBINED_SAMPLED_IMAGE: Self = Self(0b1_0000);
1959    pub const UNIFORM_BUFFER: Self = Self(0b10_0000);
1960    pub const READ_ONLY_STORAGE_BUFFER: Self = Self(0b100_0000);
1961    pub const READ_WRITE_STORAGE_BUFFER: Self = Self(0b1000_0000);
1962}