vulkanalia_sys/
bitmasks.rs

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