vulkanalia_sys/
bitmasks.rs

1// SPDX-License-Identifier: Apache-2.0
2
3// DO NOT EDIT.
4//
5// This file has been generated by the Kotlin project in the `generator`
6// directory from a Vulkan API registry.
7
8#![allow(
9    non_camel_case_types,
10    non_snake_case,
11    clippy::bad_bit_mask,
12    clippy::let_unit_value,
13    clippy::missing_safety_doc,
14    clippy::missing_transmute_annotations,
15    clippy::needless_lifetimes,
16    clippy::too_many_arguments,
17    clippy::type_complexity,
18    clippy::unnecessary_cast,
19    clippy::upper_case_acronyms,
20    clippy::useless_transmute
21)]
22
23use bitflags::bitflags;
24
25use crate::{Flags, Flags64};
26
27bitflags! {
28    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateFlagsKHR.html>
29    #[repr(transparent)]
30    #[derive(Default)]
31    pub struct AccelerationStructureCreateFlagsKHR: Flags {
32        const DEVICE_ADDRESS_CAPTURE_REPLAY = 1;
33        const MOTION_NV = 1 << 2;
34        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_EXT = 1 << 3;
35    }
36}
37
38bitflags! {
39    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoFlagsNV.html>
40    #[repr(transparent)]
41    #[derive(Default)]
42    pub struct AccelerationStructureMotionInfoFlagsNV: Flags { }
43}
44
45bitflags! {
46    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceFlagsNV.html>
47    #[repr(transparent)]
48    #[derive(Default)]
49    pub struct AccelerationStructureMotionInstanceFlagsNV: Flags { }
50}
51
52bitflags! {
53    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccessFlags.html>
54    #[repr(transparent)]
55    #[derive(Default)]
56    pub struct AccessFlags: Flags {
57        const INDIRECT_COMMAND_READ = 1;
58        const INDEX_READ = 1 << 1;
59        const VERTEX_ATTRIBUTE_READ = 1 << 2;
60        const UNIFORM_READ = 1 << 3;
61        const INPUT_ATTACHMENT_READ = 1 << 4;
62        const SHADER_READ = 1 << 5;
63        const SHADER_WRITE = 1 << 6;
64        const COLOR_ATTACHMENT_READ = 1 << 7;
65        const COLOR_ATTACHMENT_WRITE = 1 << 8;
66        const DEPTH_STENCIL_ATTACHMENT_READ = 1 << 9;
67        const DEPTH_STENCIL_ATTACHMENT_WRITE = 1 << 10;
68        const TRANSFER_READ = 1 << 11;
69        const TRANSFER_WRITE = 1 << 12;
70        const HOST_READ = 1 << 13;
71        const HOST_WRITE = 1 << 14;
72        const MEMORY_READ = 1 << 15;
73        const MEMORY_WRITE = 1 << 16;
74        const COMMAND_PREPROCESS_READ_EXT = 1 << 17;
75        const COMMAND_PREPROCESS_WRITE_EXT = 1 << 18;
76        const COLOR_ATTACHMENT_READ_NONCOHERENT_EXT = 1 << 19;
77        const CONDITIONAL_RENDERING_READ_EXT = 1 << 20;
78        const ACCELERATION_STRUCTURE_READ_KHR = 1 << 21;
79        const ACCELERATION_STRUCTURE_WRITE_KHR = 1 << 22;
80        const FRAGMENT_SHADING_RATE_ATTACHMENT_READ_KHR = 1 << 23;
81        const FRAGMENT_DENSITY_MAP_READ_EXT = 1 << 24;
82        const TRANSFORM_FEEDBACK_WRITE_EXT = 1 << 25;
83        const TRANSFORM_FEEDBACK_COUNTER_READ_EXT = 1 << 26;
84        const TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT = 1 << 27;
85    }
86}
87
88bitflags! {
89    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccessFlags2.html>
90    #[repr(transparent)]
91    #[derive(Default)]
92    pub struct AccessFlags2: Flags64 {
93        const NONE = 0;
94        const INDIRECT_COMMAND_READ = 1;
95        const INDEX_READ = 1 << 1;
96        const VERTEX_ATTRIBUTE_READ = 1 << 2;
97        const UNIFORM_READ = 1 << 3;
98        const INPUT_ATTACHMENT_READ = 1 << 4;
99        const SHADER_READ = 1 << 5;
100        const SHADER_WRITE = 1 << 6;
101        const COLOR_ATTACHMENT_READ = 1 << 7;
102        const COLOR_ATTACHMENT_WRITE = 1 << 8;
103        const DEPTH_STENCIL_ATTACHMENT_READ = 1 << 9;
104        const DEPTH_STENCIL_ATTACHMENT_WRITE = 1 << 10;
105        const TRANSFER_READ = 1 << 11;
106        const TRANSFER_WRITE = 1 << 12;
107        const HOST_READ = 1 << 13;
108        const HOST_WRITE = 1 << 14;
109        const MEMORY_READ = 1 << 15;
110        const MEMORY_WRITE = 1 << 16;
111        const COMMAND_PREPROCESS_READ_EXT = 1 << 17;
112        const COMMAND_PREPROCESS_WRITE_EXT = 1 << 18;
113        const COLOR_ATTACHMENT_READ_NONCOHERENT_EXT = 1 << 19;
114        const CONDITIONAL_RENDERING_READ_EXT = 1 << 20;
115        const ACCELERATION_STRUCTURE_READ_KHR = 1 << 21;
116        const ACCELERATION_STRUCTURE_WRITE_KHR = 1 << 22;
117        const FRAGMENT_SHADING_RATE_ATTACHMENT_READ_KHR = 1 << 23;
118        const FRAGMENT_DENSITY_MAP_READ_EXT = 1 << 24;
119        const TRANSFORM_FEEDBACK_WRITE_EXT = 1 << 25;
120        const TRANSFORM_FEEDBACK_COUNTER_READ_EXT = 1 << 26;
121        const TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT = 1 << 27;
122        const SHADER_SAMPLED_READ = 1 << 32;
123        const SHADER_STORAGE_READ = 1 << 33;
124        const SHADER_STORAGE_WRITE = 1 << 34;
125        const VIDEO_DECODE_READ_KHR = 1 << 35;
126        const VIDEO_DECODE_WRITE_KHR = 1 << 36;
127        const VIDEO_ENCODE_READ_KHR = 1 << 37;
128        const VIDEO_ENCODE_WRITE_KHR = 1 << 38;
129        const INVOCATION_MASK_READ_HUAWEI = 1 << 39;
130        const SHADER_BINDING_TABLE_READ_KHR = 1 << 40;
131        const DESCRIPTOR_BUFFER_READ_EXT = 1 << 41;
132        const OPTICAL_FLOW_READ_NV = 1 << 42;
133        const OPTICAL_FLOW_WRITE_NV = 1 << 43;
134        const MICROMAP_READ_EXT = 1 << 44;
135        const MICROMAP_WRITE_EXT = 1 << 45;
136        const DATA_GRAPH_READ_ARM = 1 << 47;
137        const DATA_GRAPH_WRITE_ARM = 1 << 48;
138        const SHADER_TILE_ATTACHMENT_READ_QCOM = 1 << 51;
139        const SHADER_TILE_ATTACHMENT_WRITE_QCOM = 1 << 52;
140        const MEMORY_DECOMPRESSION_READ_EXT = 1 << 55;
141        const MEMORY_DECOMPRESSION_WRITE_EXT = 1 << 56;
142    }
143}
144
145bitflags! {
146    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccessFlags3KHR.html>
147    #[repr(transparent)]
148    #[derive(Default)]
149    pub struct AccessFlags3KHR: Flags {
150        const NONE = 0;
151    }
152}
153
154bitflags! {
155    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireProfilingLockFlagsKHR.html>
156    #[repr(transparent)]
157    #[derive(Default)]
158    pub struct AcquireProfilingLockFlagsKHR: Flags { }
159}
160
161bitflags! {
162    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAddressCopyFlagsKHR.html>
163    #[repr(transparent)]
164    #[derive(Default)]
165    pub struct AddressCopyFlagsKHR: Flags {
166        const DEVICE_LOCAL = 1;
167        const SPARSE = 1 << 1;
168        const PROTECTED = 1 << 2;
169    }
170}
171
172bitflags! {
173    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateFlagsKHR.html>
174    #[repr(transparent)]
175    #[derive(Default)]
176    pub struct AndroidSurfaceCreateFlagsKHR: Flags { }
177}
178
179bitflags! {
180    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionFlags.html>
181    #[repr(transparent)]
182    #[derive(Default)]
183    pub struct AttachmentDescriptionFlags: Flags {
184        const MAY_ALIAS = 1;
185        const RESOLVE_SKIP_TRANSFER_FUNCTION_KHR = 1 << 1;
186        const RESOLVE_ENABLE_TRANSFER_FUNCTION_KHR = 1 << 2;
187    }
188}
189
190bitflags! {
191    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateFlags.html>
192    #[repr(transparent)]
193    #[derive(Default)]
194    pub struct BufferCreateFlags: Flags {
195        const SPARSE_BINDING = 1;
196        const SPARSE_RESIDENCY = 1 << 1;
197        const SPARSE_ALIASED = 1 << 2;
198        const PROTECTED = 1 << 3;
199        const DEVICE_ADDRESS_CAPTURE_REPLAY = 1 << 4;
200        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_EXT = 1 << 5;
201        const VIDEO_PROFILE_INDEPENDENT_KHR = 1 << 6;
202    }
203}
204
205bitflags! {
206    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags.html>
207    #[repr(transparent)]
208    #[derive(Default)]
209    pub struct BufferUsageFlags: Flags {
210        const TRANSFER_SRC = 1;
211        const TRANSFER_DST = 1 << 1;
212        const UNIFORM_TEXEL_BUFFER = 1 << 2;
213        const STORAGE_TEXEL_BUFFER = 1 << 3;
214        const UNIFORM_BUFFER = 1 << 4;
215        const STORAGE_BUFFER = 1 << 5;
216        const INDEX_BUFFER = 1 << 6;
217        const VERTEX_BUFFER = 1 << 7;
218        const INDIRECT_BUFFER = 1 << 8;
219        const CONDITIONAL_RENDERING_EXT = 1 << 9;
220        const SHADER_BINDING_TABLE_KHR = 1 << 10;
221        const TRANSFORM_FEEDBACK_BUFFER_EXT = 1 << 11;
222        const TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT = 1 << 12;
223        const VIDEO_DECODE_SRC_KHR = 1 << 13;
224        const VIDEO_DECODE_DST_KHR = 1 << 14;
225        const VIDEO_ENCODE_DST_KHR = 1 << 15;
226        const VIDEO_ENCODE_SRC_KHR = 1 << 16;
227        const SHADER_DEVICE_ADDRESS = 1 << 17;
228        const ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR = 1 << 19;
229        const ACCELERATION_STRUCTURE_STORAGE_KHR = 1 << 20;
230        const SAMPLER_DESCRIPTOR_BUFFER_EXT = 1 << 21;
231        const RESOURCE_DESCRIPTOR_BUFFER_EXT = 1 << 22;
232        const MICROMAP_BUILD_INPUT_READ_ONLY_EXT = 1 << 23;
233        const MICROMAP_STORAGE_EXT = 1 << 24;
234        const EXECUTION_GRAPH_SCRATCH_AMDX = 1 << 25;
235        const PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_EXT = 1 << 26;
236        const TILE_MEMORY_QCOM = 1 << 27;
237    }
238}
239
240bitflags! {
241    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2.html>
242    #[repr(transparent)]
243    #[derive(Default)]
244    pub struct BufferUsageFlags2: Flags64 {
245        const TRANSFER_SRC = 1;
246        const TRANSFER_DST = 1 << 1;
247        const UNIFORM_TEXEL_BUFFER = 1 << 2;
248        const STORAGE_TEXEL_BUFFER = 1 << 3;
249        const UNIFORM_BUFFER = 1 << 4;
250        const STORAGE_BUFFER = 1 << 5;
251        const INDEX_BUFFER = 1 << 6;
252        const VERTEX_BUFFER = 1 << 7;
253        const INDIRECT_BUFFER = 1 << 8;
254        const CONDITIONAL_RENDERING_EXT = 1 << 9;
255        const SHADER_BINDING_TABLE_KHR = 1 << 10;
256        const TRANSFORM_FEEDBACK_BUFFER_EXT = 1 << 11;
257        const TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT = 1 << 12;
258        const VIDEO_DECODE_SRC_KHR = 1 << 13;
259        const VIDEO_DECODE_DST_KHR = 1 << 14;
260        const VIDEO_ENCODE_DST_KHR = 1 << 15;
261        const VIDEO_ENCODE_SRC_KHR = 1 << 16;
262        const SHADER_DEVICE_ADDRESS = 1 << 17;
263        const ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR = 1 << 19;
264        const ACCELERATION_STRUCTURE_STORAGE_KHR = 1 << 20;
265        const SAMPLER_DESCRIPTOR_BUFFER_EXT = 1 << 21;
266        const RESOURCE_DESCRIPTOR_BUFFER_EXT = 1 << 22;
267        const MICROMAP_BUILD_INPUT_READ_ONLY_EXT = 1 << 23;
268        const MICROMAP_STORAGE_EXT = 1 << 24;
269        const EXECUTION_GRAPH_SCRATCH_AMDX = 1 << 25;
270        const PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_EXT = 1 << 26;
271        const TILE_MEMORY_QCOM = 1 << 27;
272        const DATA_GRAPH_FOREIGN_DESCRIPTOR_ARM = 1 << 29;
273        const PREPROCESS_BUFFER_EXT = 1 << 31;
274        const MEMORY_DECOMPRESSION_EXT = 1 << 32;
275        const COMPRESSED_DATA_DGF1_AMDX = 1 << 33;
276    }
277}
278
279bitflags! {
280    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateFlags.html>
281    #[repr(transparent)]
282    #[derive(Default)]
283    pub struct BufferViewCreateFlags: Flags { }
284}
285
286bitflags! {
287    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildAccelerationStructureFlagsKHR.html>
288    #[repr(transparent)]
289    #[derive(Default)]
290    pub struct BuildAccelerationStructureFlagsKHR: Flags {
291        const ALLOW_UPDATE = 1;
292        const ALLOW_COMPACTION = 1 << 1;
293        const PREFER_FAST_TRACE = 1 << 2;
294        const PREFER_FAST_BUILD = 1 << 3;
295        const LOW_MEMORY = 1 << 4;
296        const MOTION_NV = 1 << 5;
297        const ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 1 << 6;
298        const ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 1 << 7;
299        const ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 1 << 8;
300        const ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = 1 << 9;
301        const ALLOW_DATA_ACCESS = 1 << 11;
302        const ALLOW_CLUSTER_OPACITY_MICROMAPS_NV = 1 << 12;
303    }
304}
305
306bitflags! {
307    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildMicromapFlagsEXT.html>
308    #[repr(transparent)]
309    #[derive(Default)]
310    pub struct BuildMicromapFlagsEXT: Flags {
311        const PREFER_FAST_TRACE = 1;
312        const PREFER_FAST_BUILD = 1 << 1;
313        const ALLOW_COMPACTION = 1 << 2;
314    }
315}
316
317bitflags! {
318    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureAddressResolutionFlagsNV.html>
319    #[repr(transparent)]
320    #[derive(Default)]
321    pub struct ClusterAccelerationStructureAddressResolutionFlagsNV: Flags {
322        const NONE = 0;
323        const INDIRECTED_DST_IMPLICIT_DATA = 1;
324        const INDIRECTED_SCRATCH_DATA = 1 << 1;
325        const INDIRECTED_DST_ADDRESS_ARRAY = 1 << 2;
326        const INDIRECTED_DST_SIZES_ARRAY = 1 << 3;
327        const INDIRECTED_SRC_INFOS_ARRAY = 1 << 4;
328        const INDIRECTED_SRC_INFOS_COUNT = 1 << 5;
329    }
330}
331
332bitflags! {
333    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClusterFlagsNV.html>
334    #[repr(transparent)]
335    #[derive(Default)]
336    pub struct ClusterAccelerationStructureClusterFlagsNV: Flags {
337        const ALLOW_DISABLE_OPACITY_MICROMAPS = 1;
338    }
339}
340
341bitflags! {
342    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryFlagsNV.html>
343    #[repr(transparent)]
344    #[derive(Default)]
345    pub struct ClusterAccelerationStructureGeometryFlagsNV: Flags {
346        const CULL_DISABLE = 1;
347        const NO_DUPLICATE_ANYHIT_INVOCATION = 1 << 1;
348        const OPAQUE = 1 << 2;
349    }
350}
351
352bitflags! {
353    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureIndexFormatFlagsNV.html>
354    #[repr(transparent)]
355    #[derive(Default)]
356    pub struct ClusterAccelerationStructureIndexFormatFlagsNV: Flags {
357        const _8BIT = 1;
358        const _16BIT = 1 << 1;
359        const _32BIT = 1 << 2;
360    }
361}
362
363bitflags! {
364    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorComponentFlags.html>
365    #[repr(transparent)]
366    #[derive(Default)]
367    pub struct ColorComponentFlags: Flags {
368        const R = 1;
369        const G = 1 << 1;
370        const B = 1 << 2;
371        const A = 1 << 3;
372    }
373}
374
375bitflags! {
376    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferResetFlags.html>
377    #[repr(transparent)]
378    #[derive(Default)]
379    pub struct CommandBufferResetFlags: Flags {
380        const RELEASE_RESOURCES = 1;
381    }
382}
383
384bitflags! {
385    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferUsageFlags.html>
386    #[repr(transparent)]
387    #[derive(Default)]
388    pub struct CommandBufferUsageFlags: Flags {
389        const ONE_TIME_SUBMIT = 1;
390        const RENDER_PASS_CONTINUE = 1 << 1;
391        const SIMULTANEOUS_USE = 1 << 2;
392    }
393}
394
395bitflags! {
396    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateFlags.html>
397    #[repr(transparent)]
398    #[derive(Default)]
399    pub struct CommandPoolCreateFlags: Flags {
400        const TRANSIENT = 1;
401        const RESET_COMMAND_BUFFER = 1 << 1;
402        const PROTECTED = 1 << 2;
403    }
404}
405
406bitflags! {
407    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolResetFlags.html>
408    #[repr(transparent)]
409    #[derive(Default)]
410    pub struct CommandPoolResetFlags: Flags {
411        const RELEASE_RESOURCES = 1;
412    }
413}
414
415bitflags! {
416    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolTrimFlags.html>
417    #[repr(transparent)]
418    #[derive(Default)]
419    pub struct CommandPoolTrimFlags: Flags { }
420}
421
422bitflags! {
423    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCompositeAlphaFlagsKHR.html>
424    #[repr(transparent)]
425    #[derive(Default)]
426    pub struct CompositeAlphaFlagsKHR: Flags {
427        const OPAQUE = 1;
428        const PRE_MULTIPLIED = 1 << 1;
429        const POST_MULTIPLIED = 1 << 2;
430        const INHERIT = 1 << 3;
431    }
432}
433
434bitflags! {
435    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingFlagsEXT.html>
436    #[repr(transparent)]
437    #[derive(Default)]
438    pub struct ConditionalRenderingFlagsEXT: Flags {
439        const INVERTED = 1;
440    }
441}
442
443bitflags! {
444    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCullModeFlags.html>
445    #[repr(transparent)]
446    #[derive(Default)]
447    pub struct CullModeFlags: Flags {
448        const NONE = 0;
449        const FRONT = 1;
450        const BACK = 1 << 1;
451        const FRONT_AND_BACK = Self::FRONT.bits | Self::BACK.bits;
452    }
453}
454
455bitflags! {
456    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchFlagsARM.html>
457    #[repr(transparent)]
458    #[derive(Default)]
459    pub struct DataGraphPipelineDispatchFlagsARM: Flags { }
460}
461
462bitflags! {
463    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateFlagsARM.html>
464    #[repr(transparent)]
465    #[derive(Default)]
466    pub struct DataGraphPipelineSessionCreateFlagsARM: Flags {
467        const PROTECTED = 1;
468    }
469}
470
471bitflags! {
472    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportFlagsEXT.html>
473    #[repr(transparent)]
474    #[derive(Default)]
475    pub struct DebugReportFlagsEXT: Flags {
476        const INFORMATION = 1;
477        const WARNING = 1 << 1;
478        const PERFORMANCE_WARNING = 1 << 2;
479        const ERROR = 1 << 3;
480        const DEBUG = 1 << 4;
481    }
482}
483
484bitflags! {
485    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessageSeverityFlagsEXT.html>
486    #[repr(transparent)]
487    #[derive(Default)]
488    pub struct DebugUtilsMessageSeverityFlagsEXT: Flags {
489        const VERBOSE = 1;
490        const INFO = 1 << 4;
491        const WARNING = 1 << 8;
492        const ERROR = 1 << 12;
493    }
494}
495
496bitflags! {
497    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessageTypeFlagsEXT.html>
498    #[repr(transparent)]
499    #[derive(Default)]
500    pub struct DebugUtilsMessageTypeFlagsEXT: Flags {
501        const GENERAL = 1;
502        const VALIDATION = 1 << 1;
503        const PERFORMANCE = 1 << 2;
504        const DEVICE_ADDRESS_BINDING = 1 << 3;
505    }
506}
507
508bitflags! {
509    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataFlagsEXT.html>
510    #[repr(transparent)]
511    #[derive(Default)]
512    pub struct DebugUtilsMessengerCallbackDataFlagsEXT: Flags { }
513}
514
515bitflags! {
516    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateFlagsEXT.html>
517    #[repr(transparent)]
518    #[derive(Default)]
519    pub struct DebugUtilsMessengerCreateFlagsEXT: Flags { }
520}
521
522bitflags! {
523    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyFlags.html>
524    #[repr(transparent)]
525    #[derive(Default)]
526    pub struct DependencyFlags: Flags {
527        const BY_REGION = 1;
528        const VIEW_LOCAL = 1 << 1;
529        const DEVICE_GROUP = 1 << 2;
530        const FEEDBACK_LOOP_EXT = 1 << 3;
531        const QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_KHR = 1 << 5;
532        const ASYMMETRIC_EVENT_KHR = 1 << 6;
533    }
534}
535
536bitflags! {
537    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBindingFlags.html>
538    #[repr(transparent)]
539    #[derive(Default)]
540    pub struct DescriptorBindingFlags: Flags {
541        const UPDATE_AFTER_BIND = 1;
542        const UPDATE_UNUSED_WHILE_PENDING = 1 << 1;
543        const PARTIALLY_BOUND = 1 << 2;
544        const VARIABLE_DESCRIPTOR_COUNT = 1 << 3;
545    }
546}
547
548bitflags! {
549    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateFlags.html>
550    #[repr(transparent)]
551    #[derive(Default)]
552    pub struct DescriptorPoolCreateFlags: Flags {
553        const FREE_DESCRIPTOR_SET = 1;
554        const UPDATE_AFTER_BIND = 1 << 1;
555        const HOST_ONLY_EXT = 1 << 2;
556        const ALLOW_OVERALLOCATION_SETS_NV = 1 << 3;
557        const ALLOW_OVERALLOCATION_POOLS_NV = 1 << 4;
558    }
559}
560
561bitflags! {
562    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolResetFlags.html>
563    #[repr(transparent)]
564    #[derive(Default)]
565    pub struct DescriptorPoolResetFlags: Flags { }
566}
567
568bitflags! {
569    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateFlags.html>
570    #[repr(transparent)]
571    #[derive(Default)]
572    pub struct DescriptorSetLayoutCreateFlags: Flags {
573        const PUSH_DESCRIPTOR = 1;
574        const UPDATE_AFTER_BIND_POOL = 1 << 1;
575        const HOST_ONLY_POOL_EXT = 1 << 2;
576        const DESCRIPTOR_BUFFER_EXT = 1 << 4;
577        const EMBEDDED_IMMUTABLE_SAMPLERS_EXT = 1 << 5;
578        const PER_STAGE_NV = 1 << 6;
579        const INDIRECT_BINDABLE_NV = 1 << 7;
580    }
581}
582
583bitflags! {
584    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateFlags.html>
585    #[repr(transparent)]
586    #[derive(Default)]
587    pub struct DescriptorUpdateTemplateCreateFlags: Flags { }
588}
589
590bitflags! {
591    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingFlagsEXT.html>
592    #[repr(transparent)]
593    #[derive(Default)]
594    pub struct DeviceAddressBindingFlagsEXT: Flags {
595        const INTERNAL_OBJECT = 1;
596    }
597}
598
599bitflags! {
600    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateFlags.html>
601    #[repr(transparent)]
602    #[derive(Default)]
603    pub struct DeviceCreateFlags: Flags { }
604}
605
606bitflags! {
607    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigFlagsNV.html>
608    #[repr(transparent)]
609    #[derive(Default)]
610    pub struct DeviceDiagnosticsConfigFlagsNV: Flags {
611        const ENABLE_SHADER_DEBUG_INFO = 1;
612        const ENABLE_RESOURCE_TRACKING = 1 << 1;
613        const ENABLE_AUTOMATIC_CHECKPOINTS = 1 << 2;
614        const ENABLE_SHADER_ERROR_REPORTING = 1 << 3;
615    }
616}
617
618bitflags! {
619    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentModeFlagsKHR.html>
620    #[repr(transparent)]
621    #[derive(Default)]
622    pub struct DeviceGroupPresentModeFlagsKHR: Flags {
623        const LOCAL = 1;
624        const REMOTE = 1 << 1;
625        const SUM = 1 << 2;
626        const LOCAL_MULTI_DEVICE = 1 << 3;
627    }
628}
629
630bitflags! {
631    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportFlagsEXT.html>
632    #[repr(transparent)]
633    #[derive(Default)]
634    pub struct DeviceMemoryReportFlagsEXT: Flags { }
635}
636
637bitflags! {
638    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateFlags.html>
639    #[repr(transparent)]
640    #[derive(Default)]
641    pub struct DeviceQueueCreateFlags: Flags {
642        const PROTECTED = 1;
643    }
644}
645
646bitflags! {
647    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingFlagsLUNARG.html>
648    #[repr(transparent)]
649    #[derive(Default)]
650    pub struct DirectDriverLoadingFlagsLUNARG: Flags { }
651}
652
653bitflags! {
654    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateFlagsEXT.html>
655    #[repr(transparent)]
656    #[derive(Default)]
657    pub struct DirectFBSurfaceCreateFlagsEXT: Flags { }
658}
659
660bitflags! {
661    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateFlagsKHR.html>
662    #[repr(transparent)]
663    #[derive(Default)]
664    pub struct DisplayModeCreateFlagsKHR: Flags { }
665}
666
667bitflags! {
668    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneAlphaFlagsKHR.html>
669    #[repr(transparent)]
670    #[derive(Default)]
671    pub struct DisplayPlaneAlphaFlagsKHR: Flags {
672        const OPAQUE = 1;
673        const GLOBAL = 1 << 1;
674        const PER_PIXEL = 1 << 2;
675        const PER_PIXEL_PREMULTIPLIED = 1 << 3;
676    }
677}
678
679bitflags! {
680    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateFlagsKHR.html>
681    #[repr(transparent)]
682    #[derive(Default)]
683    pub struct DisplaySurfaceCreateFlagsKHR: Flags { }
684}
685
686bitflags! {
687    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateFlags.html>
688    #[repr(transparent)]
689    #[derive(Default)]
690    pub struct EventCreateFlags: Flags {
691        const DEVICE_ONLY = 1;
692    }
693}
694
695bitflags! {
696    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectTypeFlagsEXT.html>
697    #[repr(transparent)]
698    #[derive(Default)]
699    pub struct ExportMetalObjectTypeFlagsEXT: Flags {
700        const METAL_DEVICE = 1;
701        const METAL_COMMAND_QUEUE = 1 << 1;
702        const METAL_BUFFER = 1 << 2;
703        const METAL_TEXTURE = 1 << 3;
704        const METAL_IOSURFACE = 1 << 4;
705        const METAL_SHARED_EVENT = 1 << 5;
706    }
707}
708
709bitflags! {
710    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceFeatureFlags.html>
711    #[repr(transparent)]
712    #[derive(Default)]
713    pub struct ExternalFenceFeatureFlags: Flags {
714        const EXPORTABLE = 1;
715        const IMPORTABLE = 1 << 1;
716    }
717}
718
719bitflags! {
720    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceHandleTypeFlags.html>
721    #[repr(transparent)]
722    #[derive(Default)]
723    pub struct ExternalFenceHandleTypeFlags: Flags {
724        const OPAQUE_FD = 1;
725        const OPAQUE_WIN32 = 1 << 1;
726        const OPAQUE_WIN32_KMT = 1 << 2;
727        const SYNC_FD = 1 << 3;
728        const SCI_SYNC_OBJ_NV = 1 << 4;
729        const SCI_SYNC_FENCE_NV = 1 << 5;
730    }
731}
732
733bitflags! {
734    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlags.html>
735    #[repr(transparent)]
736    #[derive(Default)]
737    pub struct ExternalMemoryFeatureFlags: Flags {
738        const DEDICATED_ONLY = 1;
739        const EXPORTABLE = 1 << 1;
740        const IMPORTABLE = 1 << 2;
741    }
742}
743
744bitflags! {
745    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagsNV.html>
746    #[repr(transparent)]
747    #[derive(Default)]
748    pub struct ExternalMemoryFeatureFlagsNV: Flags {
749        const DEDICATED_ONLY = 1;
750        const EXPORTABLE = 1 << 1;
751        const IMPORTABLE = 1 << 2;
752    }
753}
754
755bitflags! {
756    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlags.html>
757    #[repr(transparent)]
758    #[derive(Default)]
759    pub struct ExternalMemoryHandleTypeFlags: Flags {
760        const OPAQUE_FD = 1;
761        const OPAQUE_WIN32 = 1 << 1;
762        const OPAQUE_WIN32_KMT = 1 << 2;
763        const D3D11_TEXTURE = 1 << 3;
764        const D3D11_TEXTURE_KMT = 1 << 4;
765        const D3D12_HEAP = 1 << 5;
766        const D3D12_RESOURCE = 1 << 6;
767        const HOST_ALLOCATION_EXT = 1 << 7;
768        const HOST_MAPPED_FOREIGN_MEMORY_EXT = 1 << 8;
769        const DMA_BUF_EXT = 1 << 9;
770        const ANDROID_HARDWARE_BUFFER_ANDROID = 1 << 10;
771        const ZIRCON_VMO_FUCHSIA = 1 << 11;
772        const RDMA_ADDRESS_NV = 1 << 12;
773        const SCI_BUF_NV = 1 << 13;
774        const SCREEN_BUFFER_QNX = 1 << 14;
775        const OH_NATIVE_BUFFER_OHOS = 1 << 15;
776        const MTLBUFFER_EXT = 1 << 16;
777        const MTLTEXTURE_EXT = 1 << 17;
778        const MTLHEAP_EXT = 1 << 18;
779    }
780}
781
782bitflags! {
783    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagsNV.html>
784    #[repr(transparent)]
785    #[derive(Default)]
786    pub struct ExternalMemoryHandleTypeFlagsNV: Flags {
787        const OPAQUE_WIN32 = 1;
788        const OPAQUE_WIN32_KMT = 1 << 1;
789        const D3D11_IMAGE = 1 << 2;
790        const D3D11_IMAGE_KMT = 1 << 3;
791    }
792}
793
794bitflags! {
795    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreFeatureFlags.html>
796    #[repr(transparent)]
797    #[derive(Default)]
798    pub struct ExternalSemaphoreFeatureFlags: Flags {
799        const EXPORTABLE = 1;
800        const IMPORTABLE = 1 << 1;
801    }
802}
803
804bitflags! {
805    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreHandleTypeFlags.html>
806    #[repr(transparent)]
807    #[derive(Default)]
808    pub struct ExternalSemaphoreHandleTypeFlags: Flags {
809        const OPAQUE_FD = 1;
810        const OPAQUE_WIN32 = 1 << 1;
811        const OPAQUE_WIN32_KMT = 1 << 2;
812        const D3D12_FENCE = 1 << 3;
813        const SYNC_FD = 1 << 4;
814        const SCI_SYNC_OBJ_NV = 1 << 5;
815        const ZIRCON_EVENT_FUCHSIA = 1 << 7;
816    }
817}
818
819bitflags! {
820    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateFlags.html>
821    #[repr(transparent)]
822    #[derive(Default)]
823    pub struct FenceCreateFlags: Flags {
824        const SIGNALED = 1;
825    }
826}
827
828bitflags! {
829    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceImportFlags.html>
830    #[repr(transparent)]
831    #[derive(Default)]
832    pub struct FenceImportFlags: Flags {
833        const TEMPORARY = 1;
834    }
835}
836
837bitflags! {
838    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatFeatureFlags.html>
839    #[repr(transparent)]
840    #[derive(Default)]
841    pub struct FormatFeatureFlags: Flags {
842        const SAMPLED_IMAGE = 1;
843        const STORAGE_IMAGE = 1 << 1;
844        const STORAGE_IMAGE_ATOMIC = 1 << 2;
845        const UNIFORM_TEXEL_BUFFER = 1 << 3;
846        const STORAGE_TEXEL_BUFFER = 1 << 4;
847        const STORAGE_TEXEL_BUFFER_ATOMIC = 1 << 5;
848        const VERTEX_BUFFER = 1 << 6;
849        const COLOR_ATTACHMENT = 1 << 7;
850        const COLOR_ATTACHMENT_BLEND = 1 << 8;
851        const DEPTH_STENCIL_ATTACHMENT = 1 << 9;
852        const BLIT_SRC = 1 << 10;
853        const BLIT_DST = 1 << 11;
854        const SAMPLED_IMAGE_FILTER_LINEAR = 1 << 12;
855        const SAMPLED_IMAGE_FILTER_CUBIC_EXT = 1 << 13;
856        const TRANSFER_SRC = 1 << 14;
857        const TRANSFER_DST = 1 << 15;
858        const SAMPLED_IMAGE_FILTER_MINMAX = 1 << 16;
859        const MIDPOINT_CHROMA_SAMPLES = 1 << 17;
860        const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER = 1 << 18;
861        const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER = 1 << 19;
862        const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT = 1 << 20;
863        const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE = 1 << 21;
864        const DISJOINT = 1 << 22;
865        const COSITED_CHROMA_SAMPLES = 1 << 23;
866        const FRAGMENT_DENSITY_MAP_EXT = 1 << 24;
867        const VIDEO_DECODE_OUTPUT_KHR = 1 << 25;
868        const VIDEO_DECODE_DPB_KHR = 1 << 26;
869        const VIDEO_ENCODE_INPUT_KHR = 1 << 27;
870        const VIDEO_ENCODE_DPB_KHR = 1 << 28;
871        const ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR = 1 << 29;
872        const FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 30;
873    }
874}
875
876bitflags! {
877    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatFeatureFlags2.html>
878    #[repr(transparent)]
879    #[derive(Default)]
880    pub struct FormatFeatureFlags2: Flags64 {
881        const SAMPLED_IMAGE = 1;
882        const STORAGE_IMAGE = 1 << 1;
883        const STORAGE_IMAGE_ATOMIC = 1 << 2;
884        const UNIFORM_TEXEL_BUFFER = 1 << 3;
885        const STORAGE_TEXEL_BUFFER = 1 << 4;
886        const STORAGE_TEXEL_BUFFER_ATOMIC = 1 << 5;
887        const VERTEX_BUFFER = 1 << 6;
888        const COLOR_ATTACHMENT = 1 << 7;
889        const COLOR_ATTACHMENT_BLEND = 1 << 8;
890        const DEPTH_STENCIL_ATTACHMENT = 1 << 9;
891        const BLIT_SRC = 1 << 10;
892        const BLIT_DST = 1 << 11;
893        const SAMPLED_IMAGE_FILTER_LINEAR = 1 << 12;
894        const SAMPLED_IMAGE_FILTER_CUBIC = 1 << 13;
895        const TRANSFER_SRC = 1 << 14;
896        const TRANSFER_DST = 1 << 15;
897        const SAMPLED_IMAGE_FILTER_MINMAX = 1 << 16;
898        const MIDPOINT_CHROMA_SAMPLES = 1 << 17;
899        const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER = 1 << 18;
900        const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER = 1 << 19;
901        const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT = 1 << 20;
902        const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE = 1 << 21;
903        const DISJOINT = 1 << 22;
904        const COSITED_CHROMA_SAMPLES = 1 << 23;
905        const FRAGMENT_DENSITY_MAP_EXT = 1 << 24;
906        const VIDEO_DECODE_OUTPUT_KHR = 1 << 25;
907        const VIDEO_DECODE_DPB_KHR = 1 << 26;
908        const VIDEO_ENCODE_INPUT_KHR = 1 << 27;
909        const VIDEO_ENCODE_DPB_KHR = 1 << 28;
910        const ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR = 1 << 29;
911        const FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 30;
912        const STORAGE_READ_WITHOUT_FORMAT = 1 << 31;
913        const STORAGE_WRITE_WITHOUT_FORMAT = 1 << 32;
914        const SAMPLED_IMAGE_DEPTH_COMPARISON = 1 << 33;
915        const WEIGHT_IMAGE_QCOM = 1 << 34;
916        const WEIGHT_SAMPLED_IMAGE_QCOM = 1 << 35;
917        const BLOCK_MATCHING_QCOM = 1 << 36;
918        const BOX_FILTER_SAMPLED_QCOM = 1 << 37;
919        const LINEAR_COLOR_ATTACHMENT_NV = 1 << 38;
920        const TENSOR_SHADER_ARM = 1 << 39;
921        const OPTICAL_FLOW_IMAGE_NV = 1 << 40;
922        const OPTICAL_FLOW_VECTOR_NV = 1 << 41;
923        const OPTICAL_FLOW_COST_NV = 1 << 42;
924        const TENSOR_IMAGE_ALIASING_ARM = 1 << 43;
925        const HOST_IMAGE_TRANSFER = 1 << 46;
926        const TENSOR_DATA_GRAPH_ARM = 1 << 48;
927        const VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_KHR = 1 << 49;
928        const VIDEO_ENCODE_EMPHASIS_MAP_KHR = 1 << 50;
929        const ACCELERATION_STRUCTURE_RADIUS_BUFFER_NV = 1 << 51;
930        const DEPTH_COPY_ON_COMPUTE_QUEUE_KHR = 1 << 52;
931        const DEPTH_COPY_ON_TRANSFER_QUEUE_KHR = 1 << 53;
932        const STENCIL_COPY_ON_COMPUTE_QUEUE_KHR = 1 << 54;
933        const STENCIL_COPY_ON_TRANSFER_QUEUE_KHR = 1 << 55;
934        const COPY_IMAGE_INDIRECT_DST_KHR = 1 << 59;
935    }
936}
937
938bitflags! {
939    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryFlagsEXT.html>
940    #[repr(transparent)]
941    #[derive(Default)]
942    pub struct FrameBoundaryFlagsEXT: Flags {
943        const FRAME_END = 1;
944    }
945}
946
947bitflags! {
948    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateFlags.html>
949    #[repr(transparent)]
950    #[derive(Default)]
951    pub struct FramebufferCreateFlags: Flags {
952        const IMAGELESS = 1;
953    }
954}
955
956bitflags! {
957    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryFlagsKHR.html>
958    #[repr(transparent)]
959    #[derive(Default)]
960    pub struct GeometryFlagsKHR: Flags {
961        const OPAQUE = 1;
962        const NO_DUPLICATE_ANY_HIT_INVOCATION = 1 << 1;
963    }
964}
965
966bitflags! {
967    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryInstanceFlagsKHR.html>
968    #[repr(transparent)]
969    #[derive(Default)]
970    pub struct GeometryInstanceFlagsKHR: Flags {
971        const TRIANGLE_FACING_CULL_DISABLE = 1;
972        const TRIANGLE_FLIP_FACING = 1 << 1;
973        const FORCE_OPAQUE = 1 << 2;
974        const FORCE_NO_OPAQUE = 1 << 3;
975        const FORCE_OPACITY_MICROMAP_2_STATE_EXT = 1 << 4;
976        const DISABLE_OPACITY_MICROMAPS_EXT = 1 << 5;
977    }
978}
979
980bitflags! {
981    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryFlagsEXT.html>
982    #[repr(transparent)]
983    #[derive(Default)]
984    pub struct GraphicsPipelineLibraryFlagsEXT: Flags {
985        const VERTEX_INPUT_INTERFACE = 1;
986        const PRE_RASTERIZATION_SHADERS = 1 << 1;
987        const FRAGMENT_SHADER = 1 << 2;
988        const FRAGMENT_OUTPUT_INTERFACE = 1 << 3;
989    }
990}
991
992bitflags! {
993    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateFlagsEXT.html>
994    #[repr(transparent)]
995    #[derive(Default)]
996    pub struct HeadlessSurfaceCreateFlagsEXT: Flags { }
997}
998
999bitflags! {
1000    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyFlags.html>
1001    #[repr(transparent)]
1002    #[derive(Default)]
1003    pub struct HostImageCopyFlags: Flags {
1004        const MEMCPY = 1;
1005    }
1006}
1007
1008bitflags! {
1009    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateFlagsMVK.html>
1010    #[repr(transparent)]
1011    #[derive(Default)]
1012    pub struct IOSSurfaceCreateFlagsMVK: Flags { }
1013}
1014
1015bitflags! {
1016    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAspectFlags.html>
1017    #[repr(transparent)]
1018    #[derive(Default)]
1019    pub struct ImageAspectFlags: Flags {
1020        const COLOR = 1;
1021        const DEPTH = 1 << 1;
1022        const STENCIL = 1 << 2;
1023        const METADATA = 1 << 3;
1024        const PLANE_0 = 1 << 4;
1025        const PLANE_1 = 1 << 5;
1026        const PLANE_2 = 1 << 6;
1027        const MEMORY_PLANE_0_EXT = 1 << 7;
1028        const MEMORY_PLANE_1_EXT = 1 << 8;
1029        const MEMORY_PLANE_2_EXT = 1 << 9;
1030        const MEMORY_PLANE_3_EXT = 1 << 10;
1031    }
1032}
1033
1034bitflags! {
1035    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionFixedRateFlagsEXT.html>
1036    #[repr(transparent)]
1037    #[derive(Default)]
1038    pub struct ImageCompressionFixedRateFlagsEXT: Flags {
1039        const NONE = 0;
1040        const _1BPC = 1;
1041        const _2BPC = 1 << 1;
1042        const _3BPC = 1 << 2;
1043        const _4BPC = 1 << 3;
1044        const _5BPC = 1 << 4;
1045        const _6BPC = 1 << 5;
1046        const _7BPC = 1 << 6;
1047        const _8BPC = 1 << 7;
1048        const _9BPC = 1 << 8;
1049        const _10BPC = 1 << 9;
1050        const _11BPC = 1 << 10;
1051        const _12BPC = 1 << 11;
1052        const _13BPC = 1 << 12;
1053        const _14BPC = 1 << 13;
1054        const _15BPC = 1 << 14;
1055        const _16BPC = 1 << 15;
1056        const _17BPC = 1 << 16;
1057        const _18BPC = 1 << 17;
1058        const _19BPC = 1 << 18;
1059        const _20BPC = 1 << 19;
1060        const _21BPC = 1 << 20;
1061        const _22BPC = 1 << 21;
1062        const _23BPC = 1 << 22;
1063        const _24BPC = 1 << 23;
1064    }
1065}
1066
1067bitflags! {
1068    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionFlagsEXT.html>
1069    #[repr(transparent)]
1070    #[derive(Default)]
1071    pub struct ImageCompressionFlagsEXT: Flags {
1072        const DEFAULT = 0;
1073        const FIXED_RATE_DEFAULT = 1;
1074        const FIXED_RATE_EXPLICIT = 1 << 1;
1075        const DISABLED = 1 << 2;
1076    }
1077}
1078
1079bitflags! {
1080    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFlagsFUCHSIA.html>
1081    #[repr(transparent)]
1082    #[derive(Default)]
1083    pub struct ImageConstraintsInfoFlagsFUCHSIA: Flags {
1084        const CPU_READ_RARELY = 1;
1085        const CPU_READ_OFTEN = 1 << 1;
1086        const CPU_WRITE_RARELY = 1 << 2;
1087        const CPU_WRITE_OFTEN = 1 << 3;
1088        const PROTECTED_OPTIONAL = 1 << 4;
1089    }
1090}
1091
1092bitflags! {
1093    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateFlags.html>
1094    #[repr(transparent)]
1095    #[derive(Default)]
1096    pub struct ImageCreateFlags: Flags {
1097        const SPARSE_BINDING = 1;
1098        const SPARSE_RESIDENCY = 1 << 1;
1099        const SPARSE_ALIASED = 1 << 2;
1100        const MUTABLE_FORMAT = 1 << 3;
1101        const CUBE_COMPATIBLE = 1 << 4;
1102        const _2D_ARRAY_COMPATIBLE = 1 << 5;
1103        const SPLIT_INSTANCE_BIND_REGIONS = 1 << 6;
1104        const BLOCK_TEXEL_VIEW_COMPATIBLE = 1 << 7;
1105        const EXTENDED_USAGE = 1 << 8;
1106        const DISJOINT = 1 << 9;
1107        const ALIAS = 1 << 10;
1108        const PROTECTED = 1 << 11;
1109        const SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT = 1 << 12;
1110        const CORNER_SAMPLED_NV = 1 << 13;
1111        const SUBSAMPLED_EXT = 1 << 14;
1112        const FRAGMENT_DENSITY_MAP_OFFSET_EXT = 1 << 15;
1113        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_EXT = 1 << 16;
1114        const _2D_VIEW_COMPATIBLE_EXT = 1 << 17;
1115        const MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXT = 1 << 18;
1116        const VIDEO_PROFILE_INDEPENDENT_KHR = 1 << 20;
1117    }
1118}
1119
1120bitflags! {
1121    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsFlagsFUCHSIA.html>
1122    #[repr(transparent)]
1123    #[derive(Default)]
1124    pub struct ImageFormatConstraintsFlagsFUCHSIA: Flags { }
1125}
1126
1127bitflags! {
1128    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateFlagsFUCHSIA.html>
1129    #[repr(transparent)]
1130    #[derive(Default)]
1131    pub struct ImagePipeSurfaceCreateFlagsFUCHSIA: Flags { }
1132}
1133
1134bitflags! {
1135    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageUsageFlags.html>
1136    #[repr(transparent)]
1137    #[derive(Default)]
1138    pub struct ImageUsageFlags: Flags {
1139        const TRANSFER_SRC = 1;
1140        const TRANSFER_DST = 1 << 1;
1141        const SAMPLED = 1 << 2;
1142        const STORAGE = 1 << 3;
1143        const COLOR_ATTACHMENT = 1 << 4;
1144        const DEPTH_STENCIL_ATTACHMENT = 1 << 5;
1145        const TRANSIENT_ATTACHMENT = 1 << 6;
1146        const INPUT_ATTACHMENT = 1 << 7;
1147        const FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 8;
1148        const FRAGMENT_DENSITY_MAP_EXT = 1 << 9;
1149        const VIDEO_DECODE_DST_KHR = 1 << 10;
1150        const VIDEO_DECODE_SRC_KHR = 1 << 11;
1151        const VIDEO_DECODE_DPB_KHR = 1 << 12;
1152        const VIDEO_ENCODE_DST_KHR = 1 << 13;
1153        const VIDEO_ENCODE_SRC_KHR = 1 << 14;
1154        const VIDEO_ENCODE_DPB_KHR = 1 << 15;
1155        const INVOCATION_MASK_HUAWEI = 1 << 18;
1156        const ATTACHMENT_FEEDBACK_LOOP_EXT = 1 << 19;
1157        const SAMPLE_WEIGHT_QCOM = 1 << 20;
1158        const SAMPLE_BLOCK_MATCH_QCOM = 1 << 21;
1159        const HOST_TRANSFER = 1 << 22;
1160        const TENSOR_ALIASING_ARM = 1 << 23;
1161        const VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_KHR = 1 << 25;
1162        const VIDEO_ENCODE_EMPHASIS_MAP_KHR = 1 << 26;
1163        const TILE_MEMORY_QCOM = 1 << 27;
1164    }
1165}
1166
1167bitflags! {
1168    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateFlags.html>
1169    #[repr(transparent)]
1170    #[derive(Default)]
1171    pub struct ImageViewCreateFlags: Flags {
1172        const FRAGMENT_DENSITY_MAP_DYNAMIC_EXT = 1;
1173        const FRAGMENT_DENSITY_MAP_DEFERRED_EXT = 1 << 1;
1174        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_EXT = 1 << 2;
1175    }
1176}
1177
1178bitflags! {
1179    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsInputModeFlagsEXT.html>
1180    #[repr(transparent)]
1181    #[derive(Default)]
1182    pub struct IndirectCommandsInputModeFlagsEXT: Flags {
1183        const VULKAN_INDEX_BUFFER = 1;
1184        const DXGI_INDEX_BUFFER = 1 << 1;
1185    }
1186}
1187
1188bitflags! {
1189    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagsEXT.html>
1190    #[repr(transparent)]
1191    #[derive(Default)]
1192    pub struct IndirectCommandsLayoutUsageFlagsEXT: Flags {
1193        const EXPLICIT_PREPROCESS = 1;
1194        const UNORDERED_SEQUENCES = 1 << 1;
1195    }
1196}
1197
1198bitflags! {
1199    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagsNV.html>
1200    #[repr(transparent)]
1201    #[derive(Default)]
1202    pub struct IndirectCommandsLayoutUsageFlagsNV: Flags {
1203        const EXPLICIT_PREPROCESS = 1;
1204        const INDEXED_SEQUENCES = 1 << 1;
1205        const UNORDERED_SEQUENCES = 1 << 2;
1206    }
1207}
1208
1209bitflags! {
1210    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectStateFlagsNV.html>
1211    #[repr(transparent)]
1212    #[derive(Default)]
1213    pub struct IndirectStateFlagsNV: Flags {
1214        const FLAG_FRONTFACE = 1;
1215    }
1216}
1217
1218bitflags! {
1219    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateFlags.html>
1220    #[repr(transparent)]
1221    #[derive(Default)]
1222    pub struct InstanceCreateFlags: Flags {
1223        const ENUMERATE_PORTABILITY_KHR = 1;
1224    }
1225}
1226
1227bitflags! {
1228    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateFlagsMVK.html>
1229    #[repr(transparent)]
1230    #[derive(Default)]
1231    pub struct MacOSSurfaceCreateFlagsMVK: Flags { }
1232}
1233
1234bitflags! {
1235    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlags.html>
1236    #[repr(transparent)]
1237    #[derive(Default)]
1238    pub struct MemoryAllocateFlags: Flags {
1239        const DEVICE_MASK = 1;
1240        const DEVICE_ADDRESS = 1 << 1;
1241        const DEVICE_ADDRESS_CAPTURE_REPLAY = 1 << 2;
1242        const ZERO_INITIALIZE_EXT = 1 << 3;
1243    }
1244}
1245
1246bitflags! {
1247    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDecompressionMethodFlagsEXT.html>
1248    #[repr(transparent)]
1249    #[derive(Default)]
1250    pub struct MemoryDecompressionMethodFlagsEXT: Flags {
1251        const GDEFLATE_1_0 = 1;
1252    }
1253}
1254
1255bitflags! {
1256    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeapFlags.html>
1257    #[repr(transparent)]
1258    #[derive(Default)]
1259    pub struct MemoryHeapFlags: Flags {
1260        const DEVICE_LOCAL = 1;
1261        const MULTI_INSTANCE = 1 << 1;
1262        const TILE_MEMORY_QCOM = 1 << 3;
1263    }
1264}
1265
1266bitflags! {
1267    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapFlags.html>
1268    #[repr(transparent)]
1269    #[derive(Default)]
1270    pub struct MemoryMapFlags: Flags {
1271        const PLACED_EXT = 1;
1272    }
1273}
1274
1275bitflags! {
1276    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPropertyFlags.html>
1277    #[repr(transparent)]
1278    #[derive(Default)]
1279    pub struct MemoryPropertyFlags: Flags {
1280        const DEVICE_LOCAL = 1;
1281        const HOST_VISIBLE = 1 << 1;
1282        const HOST_COHERENT = 1 << 2;
1283        const HOST_CACHED = 1 << 3;
1284        const LAZILY_ALLOCATED = 1 << 4;
1285        const PROTECTED = 1 << 5;
1286        const DEVICE_COHERENT_AMD = 1 << 6;
1287        const DEVICE_UNCACHED_AMD = 1 << 7;
1288        const RDMA_CAPABLE_NV = 1 << 8;
1289    }
1290}
1291
1292bitflags! {
1293    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapFlags.html>
1294    #[repr(transparent)]
1295    #[derive(Default)]
1296    pub struct MemoryUnmapFlags: Flags {
1297        const RESERVE_EXT = 1;
1298    }
1299}
1300
1301bitflags! {
1302    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateFlagsEXT.html>
1303    #[repr(transparent)]
1304    #[derive(Default)]
1305    pub struct MetalSurfaceCreateFlagsEXT: Flags { }
1306}
1307
1308bitflags! {
1309    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateFlagsEXT.html>
1310    #[repr(transparent)]
1311    #[derive(Default)]
1312    pub struct MicromapCreateFlagsEXT: Flags {
1313        const DEVICE_ADDRESS_CAPTURE_REPLAY = 1;
1314    }
1315}
1316
1317bitflags! {
1318    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteFlagsNV.html>
1319    #[repr(transparent)]
1320    #[derive(Default)]
1321    pub struct OpticalFlowExecuteFlagsNV: Flags {
1322        const DISABLE_TEMPORAL_HINTS = 1;
1323    }
1324}
1325
1326bitflags! {
1327    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowGridSizeFlagsNV.html>
1328    #[repr(transparent)]
1329    #[derive(Default)]
1330    pub struct OpticalFlowGridSizeFlagsNV: Flags {
1331        const UNKNOWN = 0;
1332        const _1X1 = 1;
1333        const _2X2 = 1 << 1;
1334        const _4X4 = 1 << 2;
1335        const _8X8 = 1 << 3;
1336    }
1337}
1338
1339bitflags! {
1340    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateFlagsNV.html>
1341    #[repr(transparent)]
1342    #[derive(Default)]
1343    pub struct OpticalFlowSessionCreateFlagsNV: Flags {
1344        const ENABLE_HINT = 1;
1345        const ENABLE_COST = 1 << 1;
1346        const ENABLE_GLOBAL_FLOW = 1 << 2;
1347        const ALLOW_REGIONS = 1 << 3;
1348        const BOTH_DIRECTIONS = 1 << 4;
1349    }
1350}
1351
1352bitflags! {
1353    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowUsageFlagsNV.html>
1354    #[repr(transparent)]
1355    #[derive(Default)]
1356    pub struct OpticalFlowUsageFlagsNV: Flags {
1357        const UNKNOWN = 0;
1358        const INPUT = 1;
1359        const OUTPUT = 1 << 1;
1360        const HINT = 1 << 2;
1361        const COST = 1 << 3;
1362        const GLOBAL_FLOW = 1 << 4;
1363    }
1364}
1365
1366bitflags! {
1367    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstanceFlagsNV.html>
1368    #[repr(transparent)]
1369    #[derive(Default)]
1370    pub struct PartitionedAccelerationStructureInstanceFlagsNV: Flags {
1371        const FLAG_TRIANGLE_FACING_CULL_DISABLE = 1;
1372        const FLAG_TRIANGLE_FLIP_FACING = 1 << 1;
1373        const FLAG_FORCE_OPAQUE = 1 << 2;
1374        const FLAG_FORCE_NO_OPAQUE = 1 << 3;
1375        const FLAG_ENABLE_EXPLICIT_BOUNDING_BOX = 1 << 4;
1376    }
1377}
1378
1379bitflags! {
1380    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPeerMemoryFeatureFlags.html>
1381    #[repr(transparent)]
1382    #[derive(Default)]
1383    pub struct PeerMemoryFeatureFlags: Flags {
1384        const COPY_SRC = 1;
1385        const COPY_DST = 1 << 1;
1386        const GENERIC_SRC = 1 << 2;
1387        const GENERIC_DST = 1 << 3;
1388    }
1389}
1390
1391bitflags! {
1392    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionFlagsARM.html>
1393    #[repr(transparent)]
1394    #[derive(Default)]
1395    pub struct PerformanceCounterDescriptionFlagsARM: Flags { }
1396}
1397
1398bitflags! {
1399    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionFlagsKHR.html>
1400    #[repr(transparent)]
1401    #[derive(Default)]
1402    pub struct PerformanceCounterDescriptionFlagsKHR: Flags {
1403        const PERFORMANCE_IMPACTING = 1;
1404        const CONCURRENTLY_IMPACTED = 1 << 1;
1405    }
1406}
1407
1408bitflags! {
1409    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFlagsARM.html>
1410    #[repr(transparent)]
1411    #[derive(Default)]
1412    pub struct PhysicalDeviceSchedulingControlsFlagsARM: Flags {
1413        const SHADER_CORE_COUNT = 1;
1414    }
1415}
1416
1417bitflags! {
1418    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateFlags.html>
1419    #[repr(transparent)]
1420    #[derive(Default)]
1421    pub struct PipelineCacheCreateFlags: Flags {
1422        const EXTERNALLY_SYNCHRONIZED = 1;
1423        const INTERNALLY_SYNCHRONIZED_MERGE_KHR = 1 << 3;
1424    }
1425}
1426
1427bitflags! {
1428    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateFlags.html>
1429    #[repr(transparent)]
1430    #[derive(Default)]
1431    pub struct PipelineColorBlendStateCreateFlags: Flags {
1432        const RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXT = 1;
1433    }
1434}
1435
1436bitflags! {
1437    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlFlagsAMD.html>
1438    #[repr(transparent)]
1439    #[derive(Default)]
1440    pub struct PipelineCompilerControlFlagsAMD: Flags { }
1441}
1442
1443bitflags! {
1444    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateFlagsNV.html>
1445    #[repr(transparent)]
1446    #[derive(Default)]
1447    pub struct PipelineCoverageModulationStateCreateFlagsNV: Flags { }
1448}
1449
1450bitflags! {
1451    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateFlagsNV.html>
1452    #[repr(transparent)]
1453    #[derive(Default)]
1454    pub struct PipelineCoverageReductionStateCreateFlagsNV: Flags { }
1455}
1456
1457bitflags! {
1458    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateFlagsNV.html>
1459    #[repr(transparent)]
1460    #[derive(Default)]
1461    pub struct PipelineCoverageToColorStateCreateFlagsNV: Flags { }
1462}
1463
1464bitflags! {
1465    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags.html>
1466    #[repr(transparent)]
1467    #[derive(Default)]
1468    pub struct PipelineCreateFlags: Flags {
1469        const DISABLE_OPTIMIZATION = 1;
1470        const ALLOW_DERIVATIVES = 1 << 1;
1471        const DERIVATIVE = 1 << 2;
1472        const VIEW_INDEX_FROM_DEVICE_INDEX = 1 << 3;
1473        const DISPATCH_BASE = 1 << 4;
1474        const DEFER_COMPILE_NV = 1 << 5;
1475        const CAPTURE_STATISTICS_KHR = 1 << 6;
1476        const CAPTURE_INTERNAL_REPRESENTATIONS_KHR = 1 << 7;
1477        const FAIL_ON_PIPELINE_COMPILE_REQUIRED = 1 << 8;
1478        const EARLY_RETURN_ON_FAILURE = 1 << 9;
1479        const LINK_TIME_OPTIMIZATION_EXT = 1 << 10;
1480        const LIBRARY_KHR = 1 << 11;
1481        const RAY_TRACING_SKIP_TRIANGLES_KHR = 1 << 12;
1482        const RAY_TRACING_SKIP_AABBS_KHR = 1 << 13;
1483        const RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR = 1 << 14;
1484        const RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR = 1 << 15;
1485        const RAY_TRACING_NO_NULL_MISS_SHADERS_KHR = 1 << 16;
1486        const RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR = 1 << 17;
1487        const INDIRECT_BINDABLE_NV = 1 << 18;
1488        const RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_KHR = 1 << 19;
1489        const RAY_TRACING_ALLOW_MOTION_NV = 1 << 20;
1490        const RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 21;
1491        const RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT = 1 << 22;
1492        const RETAIN_LINK_TIME_OPTIMIZATION_INFO_EXT = 1 << 23;
1493        const RAY_TRACING_OPACITY_MICROMAP_EXT = 1 << 24;
1494        const COLOR_ATTACHMENT_FEEDBACK_LOOP_EXT = 1 << 25;
1495        const DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_EXT = 1 << 26;
1496        const NO_PROTECTED_ACCESS = 1 << 27;
1497        const RAY_TRACING_DISPLACEMENT_MICROMAP_NV = 1 << 28;
1498        const DESCRIPTOR_BUFFER_EXT = 1 << 29;
1499        const PROTECTED_ACCESS_ONLY = 1 << 30;
1500    }
1501}
1502
1503bitflags! {
1504    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2.html>
1505    #[repr(transparent)]
1506    #[derive(Default)]
1507    pub struct PipelineCreateFlags2: Flags64 {
1508        const DISABLE_OPTIMIZATION = 1;
1509        const ALLOW_DERIVATIVES = 1 << 1;
1510        const DERIVATIVE = 1 << 2;
1511        const VIEW_INDEX_FROM_DEVICE_INDEX = 1 << 3;
1512        const DISPATCH_BASE = 1 << 4;
1513        const DEFER_COMPILE_NV = 1 << 5;
1514        const CAPTURE_STATISTICS_KHR = 1 << 6;
1515        const CAPTURE_INTERNAL_REPRESENTATIONS_KHR = 1 << 7;
1516        const FAIL_ON_PIPELINE_COMPILE_REQUIRED = 1 << 8;
1517        const EARLY_RETURN_ON_FAILURE = 1 << 9;
1518        const LINK_TIME_OPTIMIZATION_EXT = 1 << 10;
1519        const LIBRARY_KHR = 1 << 11;
1520        const RAY_TRACING_SKIP_TRIANGLES_KHR = 1 << 12;
1521        const RAY_TRACING_SKIP_AABBS_KHR = 1 << 13;
1522        const RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR = 1 << 14;
1523        const RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR = 1 << 15;
1524        const RAY_TRACING_NO_NULL_MISS_SHADERS_KHR = 1 << 16;
1525        const RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR = 1 << 17;
1526        const INDIRECT_BINDABLE_NV = 1 << 18;
1527        const RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_KHR = 1 << 19;
1528        const RAY_TRACING_ALLOW_MOTION_NV = 1 << 20;
1529        const RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 21;
1530        const RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT = 1 << 22;
1531        const RETAIN_LINK_TIME_OPTIMIZATION_INFO_EXT = 1 << 23;
1532        const RAY_TRACING_OPACITY_MICROMAP_EXT = 1 << 24;
1533        const COLOR_ATTACHMENT_FEEDBACK_LOOP_EXT = 1 << 25;
1534        const DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_EXT = 1 << 26;
1535        const NO_PROTECTED_ACCESS = 1 << 27;
1536        const RAY_TRACING_DISPLACEMENT_MICROMAP_NV = 1 << 28;
1537        const DESCRIPTOR_BUFFER_EXT = 1 << 29;
1538        const PROTECTED_ACCESS_ONLY = 1 << 30;
1539        const CAPTURE_DATA_KHR = 1 << 31;
1540        const EXECUTION_GRAPH_AMDX = 1 << 32;
1541        const RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_NV = 1 << 33;
1542        const ENABLE_LEGACY_DITHERING_EXT = 1 << 34;
1543        const DISALLOW_OPACITY_MICROMAP_ARM = 1 << 37;
1544        const INDIRECT_BINDABLE_EXT = 1 << 38;
1545        const PER_LAYER_FRAGMENT_DENSITY_VALVE = 1 << 40;
1546        const _64_BIT_INDEXING_EXT = 1 << 43;
1547    }
1548}
1549
1550bitflags! {
1551    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackFlags.html>
1552    #[repr(transparent)]
1553    #[derive(Default)]
1554    pub struct PipelineCreationFeedbackFlags: Flags {
1555        const VALID = 1;
1556        const APPLICATION_PIPELINE_CACHE_HIT = 1 << 1;
1557        const BASE_PIPELINE_ACCELERATION = 1 << 2;
1558    }
1559}
1560
1561bitflags! {
1562    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateFlags.html>
1563    #[repr(transparent)]
1564    #[derive(Default)]
1565    pub struct PipelineDepthStencilStateCreateFlags: Flags {
1566        const RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_EXT = 1;
1567        const RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_EXT = 1 << 1;
1568    }
1569}
1570
1571bitflags! {
1572    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateFlagsEXT.html>
1573    #[repr(transparent)]
1574    #[derive(Default)]
1575    pub struct PipelineDiscardRectangleStateCreateFlagsEXT: Flags { }
1576}
1577
1578bitflags! {
1579    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateFlags.html>
1580    #[repr(transparent)]
1581    #[derive(Default)]
1582    pub struct PipelineDynamicStateCreateFlags: Flags { }
1583}
1584
1585bitflags! {
1586    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateFlags.html>
1587    #[repr(transparent)]
1588    #[derive(Default)]
1589    pub struct PipelineInputAssemblyStateCreateFlags: Flags { }
1590}
1591
1592bitflags! {
1593    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateFlags.html>
1594    #[repr(transparent)]
1595    #[derive(Default)]
1596    pub struct PipelineLayoutCreateFlags: Flags {
1597        const INDEPENDENT_SETS_EXT = 1 << 1;
1598    }
1599}
1600
1601bitflags! {
1602    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateFlags.html>
1603    #[repr(transparent)]
1604    #[derive(Default)]
1605    pub struct PipelineMultisampleStateCreateFlags: Flags { }
1606}
1607
1608bitflags! {
1609    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateFlagsEXT.html>
1610    #[repr(transparent)]
1611    #[derive(Default)]
1612    pub struct PipelineRasterizationConservativeStateCreateFlagsEXT: Flags { }
1613}
1614
1615bitflags! {
1616    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateFlagsEXT.html>
1617    #[repr(transparent)]
1618    #[derive(Default)]
1619    pub struct PipelineRasterizationDepthClipStateCreateFlagsEXT: Flags { }
1620}
1621
1622bitflags! {
1623    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateFlags.html>
1624    #[repr(transparent)]
1625    #[derive(Default)]
1626    pub struct PipelineRasterizationStateCreateFlags: Flags { }
1627}
1628
1629bitflags! {
1630    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateFlagsEXT.html>
1631    #[repr(transparent)]
1632    #[derive(Default)]
1633    pub struct PipelineRasterizationStateStreamCreateFlagsEXT: Flags { }
1634}
1635
1636bitflags! {
1637    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateFlags.html>
1638    #[repr(transparent)]
1639    #[derive(Default)]
1640    pub struct PipelineShaderStageCreateFlags: Flags {
1641        const ALLOW_VARYING_SUBGROUP_SIZE = 1;
1642        const REQUIRE_FULL_SUBGROUPS = 1 << 1;
1643    }
1644}
1645
1646bitflags! {
1647    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineStageFlags.html>
1648    #[repr(transparent)]
1649    #[derive(Default)]
1650    pub struct PipelineStageFlags: Flags {
1651        const TOP_OF_PIPE = 1;
1652        const DRAW_INDIRECT = 1 << 1;
1653        const VERTEX_INPUT = 1 << 2;
1654        const VERTEX_SHADER = 1 << 3;
1655        const TESSELLATION_CONTROL_SHADER = 1 << 4;
1656        const TESSELLATION_EVALUATION_SHADER = 1 << 5;
1657        const GEOMETRY_SHADER = 1 << 6;
1658        const FRAGMENT_SHADER = 1 << 7;
1659        const EARLY_FRAGMENT_TESTS = 1 << 8;
1660        const LATE_FRAGMENT_TESTS = 1 << 9;
1661        const COLOR_ATTACHMENT_OUTPUT = 1 << 10;
1662        const COMPUTE_SHADER = 1 << 11;
1663        const TRANSFER = 1 << 12;
1664        const BOTTOM_OF_PIPE = 1 << 13;
1665        const HOST = 1 << 14;
1666        const ALL_GRAPHICS = 1 << 15;
1667        const ALL_COMMANDS = 1 << 16;
1668        const COMMAND_PREPROCESS_EXT = 1 << 17;
1669        const CONDITIONAL_RENDERING_EXT = 1 << 18;
1670        const TASK_SHADER_EXT = 1 << 19;
1671        const MESH_SHADER_EXT = 1 << 20;
1672        const RAY_TRACING_SHADER_KHR = 1 << 21;
1673        const FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 22;
1674        const FRAGMENT_DENSITY_PROCESS_EXT = 1 << 23;
1675        const TRANSFORM_FEEDBACK_EXT = 1 << 24;
1676        const ACCELERATION_STRUCTURE_BUILD_KHR = 1 << 25;
1677    }
1678}
1679
1680bitflags! {
1681    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineStageFlags2.html>
1682    #[repr(transparent)]
1683    #[derive(Default)]
1684    pub struct PipelineStageFlags2: Flags64 {
1685        const NONE = 0;
1686        const TOP_OF_PIPE = 1;
1687        const DRAW_INDIRECT = 1 << 1;
1688        const VERTEX_INPUT = 1 << 2;
1689        const VERTEX_SHADER = 1 << 3;
1690        const TESSELLATION_CONTROL_SHADER = 1 << 4;
1691        const TESSELLATION_EVALUATION_SHADER = 1 << 5;
1692        const GEOMETRY_SHADER = 1 << 6;
1693        const FRAGMENT_SHADER = 1 << 7;
1694        const EARLY_FRAGMENT_TESTS = 1 << 8;
1695        const LATE_FRAGMENT_TESTS = 1 << 9;
1696        const COLOR_ATTACHMENT_OUTPUT = 1 << 10;
1697        const COMPUTE_SHADER = 1 << 11;
1698        const ALL_TRANSFER = 1 << 12;
1699        const BOTTOM_OF_PIPE = 1 << 13;
1700        const HOST = 1 << 14;
1701        const ALL_GRAPHICS = 1 << 15;
1702        const ALL_COMMANDS = 1 << 16;
1703        const COMMAND_PREPROCESS_EXT = 1 << 17;
1704        const CONDITIONAL_RENDERING_EXT = 1 << 18;
1705        const TASK_SHADER_EXT = 1 << 19;
1706        const MESH_SHADER_EXT = 1 << 20;
1707        const RAY_TRACING_SHADER_KHR = 1 << 21;
1708        const FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 1 << 22;
1709        const FRAGMENT_DENSITY_PROCESS_EXT = 1 << 23;
1710        const TRANSFORM_FEEDBACK_EXT = 1 << 24;
1711        const ACCELERATION_STRUCTURE_BUILD_KHR = 1 << 25;
1712        const VIDEO_DECODE_KHR = 1 << 26;
1713        const VIDEO_ENCODE_KHR = 1 << 27;
1714        const ACCELERATION_STRUCTURE_COPY_KHR = 1 << 28;
1715        const OPTICAL_FLOW_NV = 1 << 29;
1716        const MICROMAP_BUILD_EXT = 1 << 30;
1717        const COPY = 1 << 32;
1718        const RESOLVE = 1 << 33;
1719        const BLIT = 1 << 34;
1720        const CLEAR = 1 << 35;
1721        const INDEX_INPUT = 1 << 36;
1722        const VERTEX_ATTRIBUTE_INPUT = 1 << 37;
1723        const PRE_RASTERIZATION_SHADERS = 1 << 38;
1724        const SUBPASS_SHADER_HUAWEI = 1 << 39;
1725        const INVOCATION_MASK_HUAWEI = 1 << 40;
1726        const CLUSTER_CULLING_SHADER_HUAWEI = 1 << 41;
1727        const DATA_GRAPH_ARM = 1 << 42;
1728        const CONVERT_COOPERATIVE_VECTOR_MATRIX_NV = 1 << 44;
1729        const MEMORY_DECOMPRESSION_EXT = 1 << 45;
1730        const COPY_INDIRECT_KHR = 1 << 46;
1731    }
1732}
1733
1734bitflags! {
1735    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateFlags.html>
1736    #[repr(transparent)]
1737    #[derive(Default)]
1738    pub struct PipelineTessellationStateCreateFlags: Flags { }
1739}
1740
1741bitflags! {
1742    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateFlags.html>
1743    #[repr(transparent)]
1744    #[derive(Default)]
1745    pub struct PipelineVertexInputStateCreateFlags: Flags { }
1746}
1747
1748bitflags! {
1749    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateFlags.html>
1750    #[repr(transparent)]
1751    #[derive(Default)]
1752    pub struct PipelineViewportStateCreateFlags: Flags { }
1753}
1754
1755bitflags! {
1756    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateFlagsNV.html>
1757    #[repr(transparent)]
1758    #[derive(Default)]
1759    pub struct PipelineViewportSwizzleStateCreateFlagsNV: Flags { }
1760}
1761
1762bitflags! {
1763    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentGravityFlagsKHR.html>
1764    #[repr(transparent)]
1765    #[derive(Default)]
1766    pub struct PresentGravityFlagsKHR: Flags {
1767        const MIN = 1;
1768        const MAX = 1 << 1;
1769        const CENTERED = 1 << 2;
1770    }
1771}
1772
1773bitflags! {
1774    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentScalingFlagsKHR.html>
1775    #[repr(transparent)]
1776    #[derive(Default)]
1777    pub struct PresentScalingFlagsKHR: Flags {
1778        const ONE_TO_ONE = 1;
1779        const ASPECT_RATIO_STRETCH = 1 << 1;
1780        const STRETCH = 1 << 2;
1781    }
1782}
1783
1784bitflags! {
1785    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateFlags.html>
1786    #[repr(transparent)]
1787    #[derive(Default)]
1788    pub struct PrivateDataSlotCreateFlags: Flags { }
1789}
1790
1791bitflags! {
1792    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryControlFlags.html>
1793    #[repr(transparent)]
1794    #[derive(Default)]
1795    pub struct QueryControlFlags: Flags {
1796        const PRECISE = 1;
1797    }
1798}
1799
1800bitflags! {
1801    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPipelineStatisticFlags.html>
1802    #[repr(transparent)]
1803    #[derive(Default)]
1804    pub struct QueryPipelineStatisticFlags: Flags {
1805        const INPUT_ASSEMBLY_VERTICES = 1;
1806        const INPUT_ASSEMBLY_PRIMITIVES = 1 << 1;
1807        const VERTEX_SHADER_INVOCATIONS = 1 << 2;
1808        const GEOMETRY_SHADER_INVOCATIONS = 1 << 3;
1809        const GEOMETRY_SHADER_PRIMITIVES = 1 << 4;
1810        const CLIPPING_INVOCATIONS = 1 << 5;
1811        const CLIPPING_PRIMITIVES = 1 << 6;
1812        const FRAGMENT_SHADER_INVOCATIONS = 1 << 7;
1813        const TESSELLATION_CONTROL_SHADER_PATCHES = 1 << 8;
1814        const TESSELLATION_EVALUATION_SHADER_INVOCATIONS = 1 << 9;
1815        const COMPUTE_SHADER_INVOCATIONS = 1 << 10;
1816        const TASK_SHADER_INVOCATIONS_EXT = 1 << 11;
1817        const MESH_SHADER_INVOCATIONS_EXT = 1 << 12;
1818        const CLUSTER_CULLING_SHADER_INVOCATIONS_HUAWEI = 1 << 13;
1819    }
1820}
1821
1822bitflags! {
1823    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateFlags.html>
1824    #[repr(transparent)]
1825    #[derive(Default)]
1826    pub struct QueryPoolCreateFlags: Flags {
1827        const RESET_KHR = 1;
1828    }
1829}
1830
1831bitflags! {
1832    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryResultFlags.html>
1833    #[repr(transparent)]
1834    #[derive(Default)]
1835    pub struct QueryResultFlags: Flags {
1836        const _64 = 1;
1837        const WAIT = 1 << 1;
1838        const WITH_AVAILABILITY = 1 << 2;
1839        const PARTIAL = 1 << 3;
1840        const WITH_STATUS_KHR = 1 << 4;
1841    }
1842}
1843
1844bitflags! {
1845    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFlags.html>
1846    #[repr(transparent)]
1847    #[derive(Default)]
1848    pub struct QueueFlags: Flags {
1849        const GRAPHICS = 1;
1850        const COMPUTE = 1 << 1;
1851        const TRANSFER = 1 << 2;
1852        const SPARSE_BINDING = 1 << 3;
1853        const PROTECTED = 1 << 4;
1854        const VIDEO_DECODE_KHR = 1 << 5;
1855        const VIDEO_ENCODE_KHR = 1 << 6;
1856        const OPTICAL_FLOW_NV = 1 << 8;
1857        const DATA_GRAPH_ARM = 1 << 10;
1858    }
1859}
1860
1861bitflags! {
1862    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectFlagsKHR.html>
1863    #[repr(transparent)]
1864    #[derive(Default)]
1865    pub struct RefreshObjectFlagsKHR: Flags { }
1866}
1867
1868bitflags! {
1869    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateFlags.html>
1870    #[repr(transparent)]
1871    #[derive(Default)]
1872    pub struct RenderPassCreateFlags: Flags {
1873        const TRANSFORM_QCOM = 1 << 1;
1874        const PER_LAYER_FRAGMENT_DENSITY_VALVE = 1 << 2;
1875    }
1876}
1877
1878bitflags! {
1879    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsKHR.html>
1880    #[repr(transparent)]
1881    #[derive(Default)]
1882    pub struct RenderingAttachmentFlagsKHR: Flags {
1883        const INPUT_ATTACHMENT_FEEDBACK = 1;
1884        const RESOLVE_SKIP_TRANSFER_FUNCTION = 1 << 1;
1885        const RESOLVE_ENABLE_TRANSFER_FUNCTION = 1 << 2;
1886    }
1887}
1888
1889bitflags! {
1890    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFlags.html>
1891    #[repr(transparent)]
1892    #[derive(Default)]
1893    pub struct RenderingFlags: Flags {
1894        const CONTENTS_SECONDARY_COMMAND_BUFFERS = 1;
1895        const SUSPENDING = 1 << 1;
1896        const RESUMING = 1 << 2;
1897        const ENABLE_LEGACY_DITHERING_EXT = 1 << 3;
1898        const CONTENTS_INLINE_KHR = 1 << 4;
1899        const PER_LAYER_FRAGMENT_DENSITY_VALVE = 1 << 5;
1900        const LOCAL_READ_CONCURRENT_ACCESS_CONTROL_KHR = 1 << 8;
1901    }
1902}
1903
1904bitflags! {
1905    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageFlagsKHR.html>
1906    #[repr(transparent)]
1907    #[derive(Default)]
1908    pub struct ResolveImageFlagsKHR: Flags {
1909        const SKIP_TRANSFER_FUNCTION = 1;
1910        const ENABLE_TRANSFER_FUNCTION = 1 << 1;
1911    }
1912}
1913
1914bitflags! {
1915    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveModeFlags.html>
1916    #[repr(transparent)]
1917    #[derive(Default)]
1918    pub struct ResolveModeFlags: Flags {
1919        const NONE = 0;
1920        const SAMPLE_ZERO = 1;
1921        const AVERAGE = 1 << 1;
1922        const MIN = 1 << 2;
1923        const MAX = 1 << 3;
1924        const EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 1 << 4;
1925    }
1926}
1927
1928bitflags! {
1929    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleCountFlags.html>
1930    #[repr(transparent)]
1931    #[derive(Default)]
1932    pub struct SampleCountFlags: Flags {
1933        const _1 = 1;
1934        const _2 = 1 << 1;
1935        const _4 = 1 << 2;
1936        const _8 = 1 << 3;
1937        const _16 = 1 << 4;
1938        const _32 = 1 << 5;
1939        const _64 = 1 << 6;
1940    }
1941}
1942
1943bitflags! {
1944    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateFlags.html>
1945    #[repr(transparent)]
1946    #[derive(Default)]
1947    pub struct SamplerCreateFlags: Flags {
1948        const SUBSAMPLED_EXT = 1;
1949        const SUBSAMPLED_COARSE_RECONSTRUCTION_EXT = 1 << 1;
1950        const NON_SEAMLESS_CUBE_MAP_EXT = 1 << 2;
1951        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_EXT = 1 << 3;
1952        const IMAGE_PROCESSING_QCOM = 1 << 4;
1953    }
1954}
1955
1956bitflags! {
1957    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateFlagsQNX.html>
1958    #[repr(transparent)]
1959    #[derive(Default)]
1960    pub struct ScreenSurfaceCreateFlagsQNX: Flags { }
1961}
1962
1963bitflags! {
1964    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateFlags.html>
1965    #[repr(transparent)]
1966    #[derive(Default)]
1967    pub struct SemaphoreCreateFlags: Flags { }
1968}
1969
1970bitflags! {
1971    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreImportFlags.html>
1972    #[repr(transparent)]
1973    #[derive(Default)]
1974    pub struct SemaphoreImportFlags: Flags {
1975        const TEMPORARY = 1;
1976    }
1977}
1978
1979bitflags! {
1980    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitFlags.html>
1981    #[repr(transparent)]
1982    #[derive(Default)]
1983    pub struct SemaphoreWaitFlags: Flags {
1984        const ANY = 1;
1985    }
1986}
1987
1988bitflags! {
1989    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCorePropertiesFlagsAMD.html>
1990    #[repr(transparent)]
1991    #[derive(Default)]
1992    pub struct ShaderCorePropertiesFlagsAMD: Flags { }
1993}
1994
1995bitflags! {
1996    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateFlagsEXT.html>
1997    #[repr(transparent)]
1998    #[derive(Default)]
1999    pub struct ShaderCreateFlagsEXT: Flags {
2000        const LINK_STAGE = 1;
2001        const ALLOW_VARYING_SUBGROUP_SIZE = 1 << 1;
2002        const REQUIRE_FULL_SUBGROUPS = 1 << 2;
2003        const NO_TASK_SHADER = 1 << 3;
2004        const DISPATCH_BASE = 1 << 4;
2005        const FRAGMENT_SHADING_RATE_ATTACHMENT = 1 << 5;
2006        const FRAGMENT_DENSITY_MAP_ATTACHMENT = 1 << 6;
2007        const INDIRECT_BINDABLE = 1 << 7;
2008        const _64_BIT_INDEXING = 1 << 15;
2009    }
2010}
2011
2012bitflags! {
2013    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateFlags.html>
2014    #[repr(transparent)]
2015    #[derive(Default)]
2016    pub struct ShaderModuleCreateFlags: Flags { }
2017}
2018
2019bitflags! {
2020    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStageFlags.html>
2021    #[repr(transparent)]
2022    #[derive(Default)]
2023    pub struct ShaderStageFlags: Flags {
2024        const VERTEX = 1;
2025        const TESSELLATION_CONTROL = 1 << 1;
2026        const TESSELLATION_EVALUATION = 1 << 2;
2027        const GEOMETRY = 1 << 3;
2028        const FRAGMENT = 1 << 4;
2029        const ALL_GRAPHICS = Self::VERTEX.bits | Self::TESSELLATION_CONTROL.bits | Self::TESSELLATION_EVALUATION.bits | Self::GEOMETRY.bits | Self::FRAGMENT.bits;
2030        const COMPUTE = 1 << 5;
2031        const TASK_EXT = 1 << 6;
2032        const MESH_EXT = 1 << 7;
2033        const RAYGEN_KHR = 1 << 8;
2034        const ANY_HIT_KHR = 1 << 9;
2035        const CLOSEST_HIT_KHR = 1 << 10;
2036        const MISS_KHR = 1 << 11;
2037        const INTERSECTION_KHR = 1 << 12;
2038        const CALLABLE_KHR = 1 << 13;
2039        const SUBPASS_SHADING_HUAWEI = 1 << 14;
2040        const CLUSTER_CULLING_HUAWEI = 1 << 19;
2041        const ALL = i32::MAX as u32;
2042    }
2043}
2044
2045bitflags! {
2046    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatFlags.html>
2047    #[repr(transparent)]
2048    #[derive(Default)]
2049    pub struct SparseImageFormatFlags: Flags {
2050        const SINGLE_MIPTAIL = 1;
2051        const ALIGNED_MIP_SIZE = 1 << 1;
2052        const NONSTANDARD_BLOCK_SIZE = 1 << 2;
2053    }
2054}
2055
2056bitflags! {
2057    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBindFlags.html>
2058    #[repr(transparent)]
2059    #[derive(Default)]
2060    pub struct SparseMemoryBindFlags: Flags {
2061        const METADATA = 1;
2062    }
2063}
2064
2065bitflags! {
2066    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilFaceFlags.html>
2067    #[repr(transparent)]
2068    #[derive(Default)]
2069    pub struct StencilFaceFlags: Flags {
2070        const FRONT = 1;
2071        const BACK = 1 << 1;
2072        const FRONT_AND_BACK = Self::FRONT.bits | Self::BACK.bits;
2073    }
2074}
2075
2076bitflags! {
2077    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateFlagsGGP.html>
2078    #[repr(transparent)]
2079    #[derive(Default)]
2080    pub struct StreamDescriptorSurfaceCreateFlagsGGP: Flags { }
2081}
2082
2083bitflags! {
2084    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubgroupFeatureFlags.html>
2085    #[repr(transparent)]
2086    #[derive(Default)]
2087    pub struct SubgroupFeatureFlags: Flags {
2088        const BASIC = 1;
2089        const VOTE = 1 << 1;
2090        const ARITHMETIC = 1 << 2;
2091        const BALLOT = 1 << 3;
2092        const SHUFFLE = 1 << 4;
2093        const SHUFFLE_RELATIVE = 1 << 5;
2094        const CLUSTERED = 1 << 6;
2095        const QUAD = 1 << 7;
2096        const PARTITIONED_NV = 1 << 8;
2097        const ROTATE = 1 << 9;
2098        const ROTATE_CLUSTERED = 1 << 10;
2099    }
2100}
2101
2102bitflags! {
2103    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitFlags.html>
2104    #[repr(transparent)]
2105    #[derive(Default)]
2106    pub struct SubmitFlags: Flags {
2107        const PROTECTED = 1;
2108    }
2109}
2110
2111bitflags! {
2112    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionFlags.html>
2113    #[repr(transparent)]
2114    #[derive(Default)]
2115    pub struct SubpassDescriptionFlags: Flags {
2116        const PER_VIEW_ATTRIBUTES_NVX = 1;
2117        const PER_VIEW_POSITION_X_ONLY_NVX = 1 << 1;
2118        const FRAGMENT_REGION_QCOM = 1 << 2;
2119        const SHADER_RESOLVE_QCOM = 1 << 3;
2120        const RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_EXT = 1 << 4;
2121        const RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_EXT = 1 << 5;
2122        const RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_EXT = 1 << 6;
2123        const ENABLE_LEGACY_DITHERING_EXT = 1 << 7;
2124        const TILE_SHADING_APRON_QCOM = 1 << 8;
2125    }
2126}
2127
2128bitflags! {
2129    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCounterFlagsEXT.html>
2130    #[repr(transparent)]
2131    #[derive(Default)]
2132    pub struct SurfaceCounterFlagsEXT: Flags {
2133        const VBLANK = 1;
2134    }
2135}
2136
2137bitflags! {
2138    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateFlagsOHOS.html>
2139    #[repr(transparent)]
2140    #[derive(Default)]
2141    pub struct SurfaceCreateFlagsOHOS: Flags { }
2142}
2143
2144bitflags! {
2145    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceTransformFlagsKHR.html>
2146    #[repr(transparent)]
2147    #[derive(Default)]
2148    pub struct SurfaceTransformFlagsKHR: Flags {
2149        const IDENTITY = 1;
2150        const ROTATE_90 = 1 << 1;
2151        const ROTATE_180 = 1 << 2;
2152        const ROTATE_270 = 1 << 3;
2153        const HORIZONTAL_MIRROR = 1 << 4;
2154        const HORIZONTAL_MIRROR_ROTATE_90 = 1 << 5;
2155        const HORIZONTAL_MIRROR_ROTATE_180 = 1 << 6;
2156        const HORIZONTAL_MIRROR_ROTATE_270 = 1 << 7;
2157        const INHERIT = 1 << 8;
2158    }
2159}
2160
2161bitflags! {
2162    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateFlagsKHR.html>
2163    #[repr(transparent)]
2164    #[derive(Default)]
2165    pub struct SwapchainCreateFlagsKHR: Flags {
2166        const SPLIT_INSTANCE_BIND_REGIONS = 1;
2167        const PROTECTED = 1 << 1;
2168        const MUTABLE_FORMAT = 1 << 2;
2169        const DEFERRED_MEMORY_ALLOCATION = 1 << 3;
2170        const PRESENT_ID_2 = 1 << 6;
2171        const PRESENT_WAIT_2 = 1 << 7;
2172    }
2173}
2174
2175bitflags! {
2176    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainImageUsageFlagsOHOS.html>
2177    #[repr(transparent)]
2178    #[derive(Default)]
2179    pub struct SwapchainImageUsageFlagsOHOS: Flags {
2180        const SHARED = 1;
2181    }
2182}
2183
2184bitflags! {
2185    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateFlagsARM.html>
2186    #[repr(transparent)]
2187    #[derive(Default)]
2188    pub struct TensorCreateFlagsARM: Flags {
2189        const MUTABLE_FORMAT = 1;
2190        const PROTECTED = 1 << 1;
2191        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY = 1 << 2;
2192    }
2193}
2194
2195bitflags! {
2196    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorUsageFlagsARM.html>
2197    #[repr(transparent)]
2198    #[derive(Default)]
2199    pub struct TensorUsageFlagsARM: Flags {
2200        const SHADER = 1 << 1;
2201        const TRANSFER_SRC = 1 << 2;
2202        const TRANSFER_DST = 1 << 3;
2203        const IMAGE_ALIASING = 1 << 4;
2204        const DATA_GRAPH = 1 << 5;
2205    }
2206}
2207
2208bitflags! {
2209    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateFlagsARM.html>
2210    #[repr(transparent)]
2211    #[derive(Default)]
2212    pub struct TensorViewCreateFlagsARM: Flags {
2213        const DESCRIPTOR_BUFFER_CAPTURE_REPLAY = 1;
2214    }
2215}
2216
2217bitflags! {
2218    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileShadingRenderPassFlagsQCOM.html>
2219    #[repr(transparent)]
2220    #[derive(Default)]
2221    pub struct TileShadingRenderPassFlagsQCOM: Flags {
2222        const ENABLE = 1;
2223        const PER_TILE_EXECUTION = 1 << 1;
2224    }
2225}
2226
2227bitflags! {
2228    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkToolPurposeFlags.html>
2229    #[repr(transparent)]
2230    #[derive(Default)]
2231    pub struct ToolPurposeFlags: Flags {
2232        const VALIDATION = 1;
2233        const PROFILING = 1 << 1;
2234        const TRACING = 1 << 2;
2235        const ADDITIONAL_FEATURES = 1 << 3;
2236        const MODIFYING_FEATURES = 1 << 4;
2237        const DEBUG_REPORTING_EXT = 1 << 5;
2238        const DEBUG_MARKERS_EXT = 1 << 6;
2239    }
2240}
2241
2242bitflags! {
2243    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateFlagsEXT.html>
2244    #[repr(transparent)]
2245    #[derive(Default)]
2246    pub struct ValidationCacheCreateFlagsEXT: Flags { }
2247}
2248
2249bitflags! {
2250    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateFlagsNN.html>
2251    #[repr(transparent)]
2252    #[derive(Default)]
2253    pub struct ViSurfaceCreateFlagsNN: Flags { }
2254}
2255
2256bitflags! {
2257    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingFlagsKHR.html>
2258    #[repr(transparent)]
2259    #[derive(Default)]
2260    pub struct VideoBeginCodingFlagsKHR: Flags { }
2261}
2262
2263bitflags! {
2264    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilityFlagsKHR.html>
2265    #[repr(transparent)]
2266    #[derive(Default)]
2267    pub struct VideoCapabilityFlagsKHR: Flags {
2268        const PROTECTED_CONTENT = 1;
2269        const SEPARATE_REFERENCE_IMAGES = 1 << 1;
2270    }
2271}
2272
2273bitflags! {
2274    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoChromaSubsamplingFlagsKHR.html>
2275    #[repr(transparent)]
2276    #[derive(Default)]
2277    pub struct VideoChromaSubsamplingFlagsKHR: Flags {
2278        const INVALID = 0;
2279        const MONOCHROME = 1;
2280        const _420 = 1 << 1;
2281        const _422 = 1 << 2;
2282        const _444 = 1 << 3;
2283    }
2284}
2285
2286bitflags! {
2287    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodecOperationFlagsKHR.html>
2288    #[repr(transparent)]
2289    #[derive(Default)]
2290    pub struct VideoCodecOperationFlagsKHR: Flags {
2291        const NONE = 0;
2292        const DECODE_H264 = 1;
2293        const DECODE_H265 = 1 << 1;
2294        const DECODE_AV1 = 1 << 2;
2295        const DECODE_VP9 = 1 << 3;
2296        const ENCODE_H264 = 1 << 16;
2297        const ENCODE_H265 = 1 << 17;
2298        const ENCODE_AV1 = 1 << 18;
2299    }
2300}
2301
2302bitflags! {
2303    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlFlagsKHR.html>
2304    #[repr(transparent)]
2305    #[derive(Default)]
2306    pub struct VideoCodingControlFlagsKHR: Flags {
2307        const RESET = 1;
2308        const ENCODE_RATE_CONTROL = 1 << 1;
2309        const ENCODE_QUALITY_LEVEL = 1 << 2;
2310    }
2311}
2312
2313bitflags! {
2314    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoComponentBitDepthFlagsKHR.html>
2315    #[repr(transparent)]
2316    #[derive(Default)]
2317    pub struct VideoComponentBitDepthFlagsKHR: Flags {
2318        const INVALID = 0;
2319        const _8 = 1;
2320        const _10 = 1 << 2;
2321        const _12 = 1 << 4;
2322    }
2323}
2324
2325bitflags! {
2326    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilityFlagsKHR.html>
2327    #[repr(transparent)]
2328    #[derive(Default)]
2329    pub struct VideoDecodeCapabilityFlagsKHR: Flags {
2330        const DPB_AND_OUTPUT_COINCIDE = 1;
2331        const DPB_AND_OUTPUT_DISTINCT = 1 << 1;
2332    }
2333}
2334
2335bitflags! {
2336    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeFlagsKHR.html>
2337    #[repr(transparent)]
2338    #[derive(Default)]
2339    pub struct VideoDecodeFlagsKHR: Flags { }
2340}
2341
2342bitflags! {
2343    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureLayoutFlagsKHR.html>
2344    #[repr(transparent)]
2345    #[derive(Default)]
2346    pub struct VideoDecodeH264PictureLayoutFlagsKHR: Flags {
2347        const PROGRESSIVE = 0;
2348        const INTERLACED_INTERLEAVED_LINES = 1;
2349        const INTERLACED_SEPARATE_PLANES = 1 << 1;
2350    }
2351}
2352
2353bitflags! {
2354    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageFlagsKHR.html>
2355    #[repr(transparent)]
2356    #[derive(Default)]
2357    pub struct VideoDecodeUsageFlagsKHR: Flags {
2358        const DEFAULT = 0;
2359        const TRANSCODING = 1;
2360        const OFFLINE = 1 << 1;
2361        const STREAMING = 1 << 2;
2362    }
2363}
2364
2365bitflags! {
2366    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilityFlagsKHR.html>
2367    #[repr(transparent)]
2368    #[derive(Default)]
2369    pub struct VideoEncodeAV1CapabilityFlagsKHR: Flags {
2370        const VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX = 1;
2371        const VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER = 1 << 1;
2372        const VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY = 1 << 2;
2373        const VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE = 1 << 3;
2374        const VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING = 1 << 4;
2375        const VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH = 1 << 5;
2376    }
2377}
2378
2379bitflags! {
2380    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlFlagsKHR.html>
2381    #[repr(transparent)]
2382    #[derive(Default)]
2383    pub struct VideoEncodeAV1RateControlFlagsKHR: Flags {
2384        const VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP = 1;
2385        const VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC = 1 << 1;
2386        const VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT = 1 << 2;
2387        const VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC = 1 << 3;
2388    }
2389}
2390
2391bitflags! {
2392    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1StdFlagsKHR.html>
2393    #[repr(transparent)]
2394    #[derive(Default)]
2395    pub struct VideoEncodeAV1StdFlagsKHR: Flags {
2396        const VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET = 1;
2397        const VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET = 1 << 1;
2398        const VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME = 1 << 2;
2399        const VIDEO_ENCODE_AV1_STD_DELTA_Q = 1 << 3;
2400    }
2401}
2402
2403bitflags! {
2404    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SuperblockSizeFlagsKHR.html>
2405    #[repr(transparent)]
2406    #[derive(Default)]
2407    pub struct VideoEncodeAV1SuperblockSizeFlagsKHR: Flags {
2408        const VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64 = 1;
2409        const VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128 = 1 << 1;
2410    }
2411}
2412
2413bitflags! {
2414    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilityFlagsKHR.html>
2415    #[repr(transparent)]
2416    #[derive(Default)]
2417    pub struct VideoEncodeCapabilityFlagsKHR: Flags {
2418        const PRECEDING_EXTERNALLY_ENCODED_BYTES = 1;
2419        const INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION = 1 << 1;
2420        const QUANTIZATION_DELTA_MAP = 1 << 2;
2421        const EMPHASIS_MAP = 1 << 3;
2422    }
2423}
2424
2425bitflags! {
2426    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeContentFlagsKHR.html>
2427    #[repr(transparent)]
2428    #[derive(Default)]
2429    pub struct VideoEncodeContentFlagsKHR: Flags {
2430        const DEFAULT = 0;
2431        const CAMERA = 1;
2432        const DESKTOP = 1 << 1;
2433        const RENDERED = 1 << 2;
2434    }
2435}
2436
2437bitflags! {
2438    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeFeedbackFlagsKHR.html>
2439    #[repr(transparent)]
2440    #[derive(Default)]
2441    pub struct VideoEncodeFeedbackFlagsKHR: Flags {
2442        const BITSTREAM_BUFFER_OFFSET = 1;
2443        const BITSTREAM_BYTES_WRITTEN = 1 << 1;
2444        const BITSTREAM_HAS_OVERRIDES = 1 << 2;
2445    }
2446}
2447
2448bitflags! {
2449    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeFlagsKHR.html>
2450    #[repr(transparent)]
2451    #[derive(Default)]
2452    pub struct VideoEncodeFlagsKHR: Flags {
2453        const WITH_QUANTIZATION_DELTA_MAP = 1;
2454        const WITH_EMPHASIS_MAP = 1 << 1;
2455        const INTRA_REFRESH = 1 << 2;
2456    }
2457}
2458
2459bitflags! {
2460    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilityFlagsKHR.html>
2461    #[repr(transparent)]
2462    #[derive(Default)]
2463    pub struct VideoEncodeH264CapabilityFlagsKHR: Flags {
2464        const HRD_COMPLIANCE = 1;
2465        const PREDICTION_WEIGHT_TABLE_GENERATED = 1 << 1;
2466        const ROW_UNALIGNED_SLICE = 1 << 2;
2467        const DIFFERENT_SLICE_TYPE = 1 << 3;
2468        const B_FRAME_IN_L0_LIST = 1 << 4;
2469        const B_FRAME_IN_L1_LIST = 1 << 5;
2470        const PER_PICTURE_TYPE_MIN_MAX_QP = 1 << 6;
2471        const PER_SLICE_CONSTANT_QP = 1 << 7;
2472        const GENERATE_PREFIX_NALU = 1 << 8;
2473        const MB_QP_DIFF_WRAPAROUND = 1 << 9;
2474        const B_PICTURE_INTRA_REFRESH = 1 << 10;
2475    }
2476}
2477
2478bitflags! {
2479    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlFlagsKHR.html>
2480    #[repr(transparent)]
2481    #[derive(Default)]
2482    pub struct VideoEncodeH264RateControlFlagsKHR: Flags {
2483        const ATTEMPT_HRD_COMPLIANCE = 1;
2484        const REGULAR_GOP = 1 << 1;
2485        const REFERENCE_PATTERN_FLAT = 1 << 2;
2486        const REFERENCE_PATTERN_DYADIC = 1 << 3;
2487        const TEMPORAL_LAYER_PATTERN_DYADIC = 1 << 4;
2488    }
2489}
2490
2491bitflags! {
2492    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264StdFlagsKHR.html>
2493    #[repr(transparent)]
2494    #[derive(Default)]
2495    pub struct VideoEncodeH264StdFlagsKHR: Flags {
2496        const SEPARATE_COLOR_PLANE_FLAG_SET = 1;
2497        const QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET = 1 << 1;
2498        const SCALING_MATRIX_PRESENT_FLAG_SET = 1 << 2;
2499        const CHROMA_QP_INDEX_OFFSET = 1 << 3;
2500        const SECOND_CHROMA_QP_INDEX_OFFSET = 1 << 4;
2501        const PIC_INIT_QP_MINUS26 = 1 << 5;
2502        const WEIGHTED_PRED_FLAG_SET = 1 << 6;
2503        const WEIGHTED_BIPRED_IDC_EXPLICIT = 1 << 7;
2504        const WEIGHTED_BIPRED_IDC_IMPLICIT = 1 << 8;
2505        const TRANSFORM_8X8_MODE_FLAG_SET = 1 << 9;
2506        const DIRECT_SPATIAL_MV_PRED_FLAG_UNSET = 1 << 10;
2507        const ENTROPY_CODING_MODE_FLAG_UNSET = 1 << 11;
2508        const ENTROPY_CODING_MODE_FLAG_SET = 1 << 12;
2509        const DIRECT_8X8_INFERENCE_FLAG_UNSET = 1 << 13;
2510        const CONSTRAINED_INTRA_PRED_FLAG_SET = 1 << 14;
2511        const DEBLOCKING_FILTER_DISABLED = 1 << 15;
2512        const DEBLOCKING_FILTER_ENABLED = 1 << 16;
2513        const DEBLOCKING_FILTER_PARTIAL = 1 << 17;
2514        const SLICE_QP_DELTA = 1 << 19;
2515        const DIFFERENT_SLICE_QP_DELTA = 1 << 20;
2516    }
2517}
2518
2519bitflags! {
2520    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilityFlagsKHR.html>
2521    #[repr(transparent)]
2522    #[derive(Default)]
2523    pub struct VideoEncodeH265CapabilityFlagsKHR: Flags {
2524        const HRD_COMPLIANCE = 1;
2525        const PREDICTION_WEIGHT_TABLE_GENERATED = 1 << 1;
2526        const ROW_UNALIGNED_SLICE_SEGMENT = 1 << 2;
2527        const DIFFERENT_SLICE_SEGMENT_TYPE = 1 << 3;
2528        const B_FRAME_IN_L0_LIST = 1 << 4;
2529        const B_FRAME_IN_L1_LIST = 1 << 5;
2530        const PER_PICTURE_TYPE_MIN_MAX_QP = 1 << 6;
2531        const PER_SLICE_SEGMENT_CONSTANT_QP = 1 << 7;
2532        const MULTIPLE_TILES_PER_SLICE_SEGMENT = 1 << 8;
2533        const MULTIPLE_SLICE_SEGMENTS_PER_TILE = 1 << 9;
2534        const CU_QP_DIFF_WRAPAROUND = 1 << 10;
2535        const B_PICTURE_INTRA_REFRESH = 1 << 11;
2536    }
2537}
2538
2539bitflags! {
2540    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CtbSizeFlagsKHR.html>
2541    #[repr(transparent)]
2542    #[derive(Default)]
2543    pub struct VideoEncodeH265CtbSizeFlagsKHR: Flags {
2544        const _16 = 1;
2545        const _32 = 1 << 1;
2546        const _64 = 1 << 2;
2547    }
2548}
2549
2550bitflags! {
2551    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlFlagsKHR.html>
2552    #[repr(transparent)]
2553    #[derive(Default)]
2554    pub struct VideoEncodeH265RateControlFlagsKHR: Flags {
2555        const ATTEMPT_HRD_COMPLIANCE = 1;
2556        const REGULAR_GOP = 1 << 1;
2557        const REFERENCE_PATTERN_FLAT = 1 << 2;
2558        const REFERENCE_PATTERN_DYADIC = 1 << 3;
2559        const TEMPORAL_SUB_LAYER_PATTERN_DYADIC = 1 << 4;
2560    }
2561}
2562
2563bitflags! {
2564    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265StdFlagsKHR.html>
2565    #[repr(transparent)]
2566    #[derive(Default)]
2567    pub struct VideoEncodeH265StdFlagsKHR: Flags {
2568        const SEPARATE_COLOR_PLANE_FLAG_SET = 1;
2569        const SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET = 1 << 1;
2570        const SCALING_LIST_DATA_PRESENT_FLAG_SET = 1 << 2;
2571        const PCM_ENABLED_FLAG_SET = 1 << 3;
2572        const SPS_TEMPORAL_MVP_ENABLED_FLAG_SET = 1 << 4;
2573        const INIT_QP_MINUS26 = 1 << 5;
2574        const WEIGHTED_PRED_FLAG_SET = 1 << 6;
2575        const WEIGHTED_BIPRED_FLAG_SET = 1 << 7;
2576        const LOG2_PARALLEL_MERGE_LEVEL_MINUS2 = 1 << 8;
2577        const SIGN_DATA_HIDING_ENABLED_FLAG_SET = 1 << 9;
2578        const TRANSFORM_SKIP_ENABLED_FLAG_SET = 1 << 10;
2579        const TRANSFORM_SKIP_ENABLED_FLAG_UNSET = 1 << 11;
2580        const PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET = 1 << 12;
2581        const TRANSQUANT_BYPASS_ENABLED_FLAG_SET = 1 << 13;
2582        const CONSTRAINED_INTRA_PRED_FLAG_SET = 1 << 14;
2583        const ENTROPY_CODING_SYNC_ENABLED_FLAG_SET = 1 << 15;
2584        const DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET = 1 << 16;
2585        const DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET = 1 << 17;
2586        const DEPENDENT_SLICE_SEGMENT_FLAG_SET = 1 << 18;
2587        const SLICE_QP_DELTA = 1 << 19;
2588        const DIFFERENT_SLICE_QP_DELTA = 1 << 20;
2589    }
2590}
2591
2592bitflags! {
2593    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265TransformBlockSizeFlagsKHR.html>
2594    #[repr(transparent)]
2595    #[derive(Default)]
2596    pub struct VideoEncodeH265TransformBlockSizeFlagsKHR: Flags {
2597        const _4 = 1;
2598        const _8 = 1 << 1;
2599        const _16 = 1 << 2;
2600        const _32 = 1 << 3;
2601    }
2602}
2603
2604bitflags! {
2605    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshModeFlagsKHR.html>
2606    #[repr(transparent)]
2607    #[derive(Default)]
2608    pub struct VideoEncodeIntraRefreshModeFlagsKHR: Flags {
2609        const NONE = 0;
2610        const PER_PICTURE_PARTITION = 1;
2611        const BLOCK_BASED = 1 << 1;
2612        const BLOCK_ROW_BASED = 1 << 2;
2613        const BLOCK_COLUMN_BASED = 1 << 3;
2614    }
2615}
2616
2617bitflags! {
2618    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlFlagsKHR.html>
2619    #[repr(transparent)]
2620    #[derive(Default)]
2621    pub struct VideoEncodeRateControlFlagsKHR: Flags { }
2622}
2623
2624bitflags! {
2625    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlModeFlagsKHR.html>
2626    #[repr(transparent)]
2627    #[derive(Default)]
2628    pub struct VideoEncodeRateControlModeFlagsKHR: Flags {
2629        const DEFAULT = 0;
2630        const DISABLED = 1;
2631        const CBR = 1 << 1;
2632        const VBR = 1 << 2;
2633    }
2634}
2635
2636bitflags! {
2637    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbChromaOffsetFlagsVALVE.html>
2638    #[repr(transparent)]
2639    #[derive(Default)]
2640    pub struct VideoEncodeRgbChromaOffsetFlagsVALVE: Flags {
2641        const COSITED_EVEN = 1;
2642        const MIDPOINT = 1 << 1;
2643    }
2644}
2645
2646bitflags! {
2647    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbModelConversionFlagsVALVE.html>
2648    #[repr(transparent)]
2649    #[derive(Default)]
2650    pub struct VideoEncodeRgbModelConversionFlagsVALVE: Flags {
2651        const RGB_IDENTITY = 1;
2652        const YCBCR_IDENTITY = 1 << 1;
2653        const YCBCR_709 = 1 << 2;
2654        const YCBCR_601 = 1 << 3;
2655        const YCBCR_2020 = 1 << 4;
2656    }
2657}
2658
2659bitflags! {
2660    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbRangeCompressionFlagsVALVE.html>
2661    #[repr(transparent)]
2662    #[derive(Default)]
2663    pub struct VideoEncodeRgbRangeCompressionFlagsVALVE: Flags {
2664        const FULL_RANGE = 1;
2665        const NARROW_RANGE = 1 << 1;
2666    }
2667}
2668
2669bitflags! {
2670    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageFlagsKHR.html>
2671    #[repr(transparent)]
2672    #[derive(Default)]
2673    pub struct VideoEncodeUsageFlagsKHR: Flags {
2674        const DEFAULT = 0;
2675        const TRANSCODING = 1;
2676        const STREAMING = 1 << 1;
2677        const RECORDING = 1 << 2;
2678        const CONFERENCING = 1 << 3;
2679    }
2680}
2681
2682bitflags! {
2683    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingFlagsKHR.html>
2684    #[repr(transparent)]
2685    #[derive(Default)]
2686    pub struct VideoEndCodingFlagsKHR: Flags { }
2687}
2688
2689bitflags! {
2690    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateFlagsKHR.html>
2691    #[repr(transparent)]
2692    #[derive(Default)]
2693    pub struct VideoSessionCreateFlagsKHR: Flags {
2694        const PROTECTED_CONTENT = 1;
2695        const ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS = 1 << 1;
2696        const INLINE_QUERIES = 1 << 2;
2697        const ALLOW_ENCODE_QUANTIZATION_DELTA_MAP = 1 << 3;
2698        const ALLOW_ENCODE_EMPHASIS_MAP = 1 << 4;
2699        const INLINE_SESSION_PARAMETERS = 1 << 5;
2700    }
2701}
2702
2703bitflags! {
2704    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateFlagsKHR.html>
2705    #[repr(transparent)]
2706    #[derive(Default)]
2707    pub struct VideoSessionParametersCreateFlagsKHR: Flags {
2708        const QUANTIZATION_MAP_COMPATIBLE = 1;
2709    }
2710}
2711
2712bitflags! {
2713    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateFlagsKHR.html>
2714    #[repr(transparent)]
2715    #[derive(Default)]
2716    pub struct WaylandSurfaceCreateFlagsKHR: Flags { }
2717}
2718
2719bitflags! {
2720    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateFlagsKHR.html>
2721    #[repr(transparent)]
2722    #[derive(Default)]
2723    pub struct Win32SurfaceCreateFlagsKHR: Flags { }
2724}
2725
2726bitflags! {
2727    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateFlagsKHR.html>
2728    #[repr(transparent)]
2729    #[derive(Default)]
2730    pub struct XcbSurfaceCreateFlagsKHR: Flags { }
2731}
2732
2733bitflags! {
2734    /// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateFlagsKHR.html>
2735    #[repr(transparent)]
2736    #[derive(Default)]
2737    pub struct XlibSurfaceCreateFlagsKHR: Flags { }
2738}
2739
2740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccessFlags2KHR.html>
2741pub type AccessFlags2KHR = AccessFlags2;
2742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2KHR.html>
2743pub type BufferUsageFlags2KHR = BufferUsageFlags2;
2744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildAccelerationStructureFlagsNV.html>
2745pub type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR;
2746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolTrimFlagsKHR.html>
2747pub type CommandPoolTrimFlagsKHR = CommandPoolTrimFlags;
2748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBindingFlagsEXT.html>
2749pub type DescriptorBindingFlagsEXT = DescriptorBindingFlags;
2750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateFlagsKHR.html>
2751pub type DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags;
2752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceFeatureFlagsKHR.html>
2753pub type ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags;
2754/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceHandleTypeFlagsKHR.html>
2755pub type ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags;
2756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagsKHR.html>
2757pub type ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags;
2758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagsKHR.html>
2759pub type ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags;
2760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreFeatureFlagsKHR.html>
2761pub type ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags;
2762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreHandleTypeFlagsKHR.html>
2763pub type ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags;
2764/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceImportFlagsKHR.html>
2765pub type FenceImportFlagsKHR = FenceImportFlags;
2766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatFeatureFlags2KHR.html>
2767pub type FormatFeatureFlags2KHR = FormatFeatureFlags2;
2768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryFlagsNV.html>
2769pub type GeometryFlagsNV = GeometryFlagsKHR;
2770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryInstanceFlagsNV.html>
2771pub type GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR;
2772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyFlagsEXT.html>
2773pub type HostImageCopyFlagsEXT = HostImageCopyFlags;
2774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsKHR.html>
2775pub type MemoryAllocateFlagsKHR = MemoryAllocateFlags;
2776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDecompressionMethodFlagsNV.html>
2777pub type MemoryDecompressionMethodFlagsNV = MemoryDecompressionMethodFlagsEXT;
2778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapFlagsKHR.html>
2779pub type MemoryUnmapFlagsKHR = MemoryUnmapFlags;
2780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPeerMemoryFeatureFlagsKHR.html>
2781pub type PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags;
2782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2KHR.html>
2783pub type PipelineCreateFlags2KHR = PipelineCreateFlags2;
2784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackFlagsEXT.html>
2785pub type PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlags;
2786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineStageFlags2KHR.html>
2787pub type PipelineStageFlags2KHR = PipelineStageFlags2;
2788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentGravityFlagsEXT.html>
2789pub type PresentGravityFlagsEXT = PresentGravityFlagsKHR;
2790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentScalingFlagsEXT.html>
2791pub type PresentScalingFlagsEXT = PresentScalingFlagsKHR;
2792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateFlagsEXT.html>
2793pub type PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlags;
2794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFlagsKHR.html>
2795pub type RenderingFlagsKHR = RenderingFlags;
2796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveModeFlagsKHR.html>
2797pub type ResolveModeFlagsKHR = ResolveModeFlags;
2798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreImportFlagsKHR.html>
2799pub type SemaphoreImportFlagsKHR = SemaphoreImportFlags;
2800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitFlagsKHR.html>
2801pub type SemaphoreWaitFlagsKHR = SemaphoreWaitFlags;
2802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitFlagsKHR.html>
2803pub type SubmitFlagsKHR = SubmitFlags;
2804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkToolPurposeFlagsEXT.html>
2805pub type ToolPurposeFlagsEXT = ToolPurposeFlags;