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