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