vulkanalia_sys/
bitmasks.rs

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