Skip to main content

vulkan_rust_sys/
bitmasks.rs

1///[`VkAccelerationStructureCreateFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCreateFlagBitsKHR.html)
2#[repr(transparent)]
3#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4#[doc(alias = "VkAccelerationStructureCreateFlagBitsKHR")]
5pub struct AccelerationStructureCreateFlagBitsKHR(u32);
6impl AccelerationStructureCreateFlagBitsKHR {
7    #[inline]
8    pub const fn empty() -> Self {
9        Self(0u32)
10    }
11    #[inline]
12    pub const fn from_raw(value: u32) -> Self {
13        Self(value)
14    }
15    #[inline]
16    pub const fn as_raw(self) -> u32 {
17        self.0
18    }
19    #[inline]
20    pub const fn is_empty(self) -> bool {
21        self.0 == 0u32
22    }
23    #[inline]
24    pub const fn contains(self, other: Self) -> bool {
25        (self.0 & other.0) == other.0
26    }
27    #[inline]
28    pub const fn all() -> Self {
29        Self(13u32)
30    }
31    ///Bit 0.
32    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(1u32);
33    ///Bit 3.
34    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY: Self = Self(8u32);
35    ///Bit 2.
36    pub const MOTION: Self = Self(4u32);
37}
38impl core::ops::BitOr for AccelerationStructureCreateFlagBitsKHR {
39    type Output = Self;
40    #[inline]
41    fn bitor(self, rhs: Self) -> Self {
42        Self(self.0 | rhs.0)
43    }
44}
45impl core::ops::BitOrAssign for AccelerationStructureCreateFlagBitsKHR {
46    #[inline]
47    fn bitor_assign(&mut self, rhs: Self) {
48        self.0 |= rhs.0;
49    }
50}
51impl core::ops::BitAnd for AccelerationStructureCreateFlagBitsKHR {
52    type Output = Self;
53    #[inline]
54    fn bitand(self, rhs: Self) -> Self {
55        Self(self.0 & rhs.0)
56    }
57}
58impl core::ops::BitAndAssign for AccelerationStructureCreateFlagBitsKHR {
59    #[inline]
60    fn bitand_assign(&mut self, rhs: Self) {
61        self.0 &= rhs.0;
62    }
63}
64impl core::ops::BitXor for AccelerationStructureCreateFlagBitsKHR {
65    type Output = Self;
66    #[inline]
67    fn bitxor(self, rhs: Self) -> Self {
68        Self(self.0 ^ rhs.0)
69    }
70}
71impl core::ops::BitXorAssign for AccelerationStructureCreateFlagBitsKHR {
72    #[inline]
73    fn bitxor_assign(&mut self, rhs: Self) {
74        self.0 ^= rhs.0;
75    }
76}
77impl core::ops::Not for AccelerationStructureCreateFlagBitsKHR {
78    type Output = Self;
79    #[inline]
80    fn not(self) -> Self {
81        Self(!self.0)
82    }
83}
84impl core::fmt::Debug for AccelerationStructureCreateFlagBitsKHR {
85    #[allow(unused_mut, unused_variables)]
86    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
87        let mut first = true;
88        let mut remaining = self.0;
89        if remaining & Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0 != 0 {
90            if !first {
91                f.write_str(" | ")?;
92            }
93            f.write_str("DEVICE_ADDRESS_CAPTURE_REPLAY")?;
94            remaining &= !Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0;
95            first = false;
96        }
97        if remaining & Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0 != 0 {
98            if !first {
99                f.write_str(" | ")?;
100            }
101            f.write_str("DESCRIPTOR_BUFFER_CAPTURE_REPLAY")?;
102            remaining &= !Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0;
103            first = false;
104        }
105        if remaining & Self::MOTION.0 != 0 {
106            if !first {
107                f.write_str(" | ")?;
108            }
109            f.write_str("MOTION")?;
110            remaining &= !Self::MOTION.0;
111            first = false;
112        }
113        if remaining != 0u32 {
114            if !first {
115                f.write_str(" | ")?;
116            }
117            write!(f, "{:#x}", remaining)?;
118        } else if first {
119            f.write_str("(empty)")?;
120        }
121        Ok(())
122    }
123}
124///[`VkAccessFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlagBits.html)
125#[repr(transparent)]
126#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
127#[doc(alias = "VkAccessFlagBits")]
128pub struct AccessFlagBits(u32);
129impl AccessFlagBits {
130    #[inline]
131    pub const fn empty() -> Self {
132        Self(0u32)
133    }
134    #[inline]
135    pub const fn from_raw(value: u32) -> Self {
136        Self(value)
137    }
138    #[inline]
139    pub const fn as_raw(self) -> u32 {
140        self.0
141    }
142    #[inline]
143    pub const fn is_empty(self) -> bool {
144        self.0 == 0u32
145    }
146    #[inline]
147    pub const fn contains(self, other: Self) -> bool {
148        (self.0 & other.0) == other.0
149    }
150    #[inline]
151    pub const fn all() -> Self {
152        Self(268435455u32)
153    }
154    ///Bit 0.
155    pub const INDIRECT_COMMAND_READ: Self = Self(1u32);
156    ///Bit 1.
157    pub const INDEX_READ: Self = Self(2u32);
158    ///Bit 2.
159    pub const VERTEX_ATTRIBUTE_READ: Self = Self(4u32);
160    ///Bit 3.
161    pub const UNIFORM_READ: Self = Self(8u32);
162    ///Bit 4.
163    pub const INPUT_ATTACHMENT_READ: Self = Self(16u32);
164    ///Bit 5.
165    pub const SHADER_READ: Self = Self(32u32);
166    ///Bit 6.
167    pub const SHADER_WRITE: Self = Self(64u32);
168    ///Bit 7.
169    pub const COLOR_ATTACHMENT_READ: Self = Self(128u32);
170    ///Bit 8.
171    pub const COLOR_ATTACHMENT_WRITE: Self = Self(256u32);
172    ///Bit 9.
173    pub const DEPTH_STENCIL_ATTACHMENT_READ: Self = Self(512u32);
174    ///Bit 10.
175    pub const DEPTH_STENCIL_ATTACHMENT_WRITE: Self = Self(1024u32);
176    ///Bit 11.
177    pub const TRANSFER_READ: Self = Self(2048u32);
178    ///Bit 12.
179    pub const TRANSFER_WRITE: Self = Self(4096u32);
180    ///Bit 13.
181    pub const HOST_READ: Self = Self(8192u32);
182    ///Bit 14.
183    pub const HOST_WRITE: Self = Self(16384u32);
184    ///Bit 15.
185    pub const MEMORY_READ: Self = Self(32768u32);
186    ///Bit 16.
187    pub const MEMORY_WRITE: Self = Self(65536u32);
188    pub const NONE: Self = Self(0u32);
189    ///Bit 25.
190    pub const TRANSFORM_FEEDBACK_WRITE: Self = Self(33554432u32);
191    ///Bit 26.
192    pub const TRANSFORM_FEEDBACK_COUNTER_READ: Self = Self(67108864u32);
193    ///Bit 27.
194    pub const TRANSFORM_FEEDBACK_COUNTER_WRITE: Self = Self(134217728u32);
195    ///Bit 20.
196    pub const CONDITIONAL_RENDERING_READ: Self = Self(1048576u32);
197    ///Bit 19.
198    pub const COLOR_ATTACHMENT_READ_NONCOHERENT: Self = Self(524288u32);
199    ///Bit 21.
200    pub const ACCELERATION_STRUCTURE_READ: Self = Self(2097152u32);
201    ///Bit 22.
202    pub const ACCELERATION_STRUCTURE_WRITE: Self = Self(4194304u32);
203    pub const SHADING_RATE_IMAGE_READ: Self = Self::FRAGMENT_SHADING_RATE_ATTACHMENT_READ;
204    ///Bit 24.
205    pub const FRAGMENT_DENSITY_MAP_READ: Self = Self(16777216u32);
206    ///Bit 23.
207    pub const FRAGMENT_SHADING_RATE_ATTACHMENT_READ: Self = Self(8388608u32);
208    ///Bit 17.
209    pub const COMMAND_PREPROCESS_READ: Self = Self(131072u32);
210    ///Bit 18.
211    pub const COMMAND_PREPROCESS_WRITE: Self = Self(262144u32);
212}
213impl core::ops::BitOr for AccessFlagBits {
214    type Output = Self;
215    #[inline]
216    fn bitor(self, rhs: Self) -> Self {
217        Self(self.0 | rhs.0)
218    }
219}
220impl core::ops::BitOrAssign for AccessFlagBits {
221    #[inline]
222    fn bitor_assign(&mut self, rhs: Self) {
223        self.0 |= rhs.0;
224    }
225}
226impl core::ops::BitAnd for AccessFlagBits {
227    type Output = Self;
228    #[inline]
229    fn bitand(self, rhs: Self) -> Self {
230        Self(self.0 & rhs.0)
231    }
232}
233impl core::ops::BitAndAssign for AccessFlagBits {
234    #[inline]
235    fn bitand_assign(&mut self, rhs: Self) {
236        self.0 &= rhs.0;
237    }
238}
239impl core::ops::BitXor for AccessFlagBits {
240    type Output = Self;
241    #[inline]
242    fn bitxor(self, rhs: Self) -> Self {
243        Self(self.0 ^ rhs.0)
244    }
245}
246impl core::ops::BitXorAssign for AccessFlagBits {
247    #[inline]
248    fn bitxor_assign(&mut self, rhs: Self) {
249        self.0 ^= rhs.0;
250    }
251}
252impl core::ops::Not for AccessFlagBits {
253    type Output = Self;
254    #[inline]
255    fn not(self) -> Self {
256        Self(!self.0)
257    }
258}
259impl core::fmt::Debug for AccessFlagBits {
260    #[allow(unused_mut, unused_variables)]
261    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
262        let mut first = true;
263        let mut remaining = self.0;
264        if remaining & Self::INDIRECT_COMMAND_READ.0 != 0 {
265            if !first {
266                f.write_str(" | ")?;
267            }
268            f.write_str("INDIRECT_COMMAND_READ")?;
269            remaining &= !Self::INDIRECT_COMMAND_READ.0;
270            first = false;
271        }
272        if remaining & Self::INDEX_READ.0 != 0 {
273            if !first {
274                f.write_str(" | ")?;
275            }
276            f.write_str("INDEX_READ")?;
277            remaining &= !Self::INDEX_READ.0;
278            first = false;
279        }
280        if remaining & Self::VERTEX_ATTRIBUTE_READ.0 != 0 {
281            if !first {
282                f.write_str(" | ")?;
283            }
284            f.write_str("VERTEX_ATTRIBUTE_READ")?;
285            remaining &= !Self::VERTEX_ATTRIBUTE_READ.0;
286            first = false;
287        }
288        if remaining & Self::UNIFORM_READ.0 != 0 {
289            if !first {
290                f.write_str(" | ")?;
291            }
292            f.write_str("UNIFORM_READ")?;
293            remaining &= !Self::UNIFORM_READ.0;
294            first = false;
295        }
296        if remaining & Self::INPUT_ATTACHMENT_READ.0 != 0 {
297            if !first {
298                f.write_str(" | ")?;
299            }
300            f.write_str("INPUT_ATTACHMENT_READ")?;
301            remaining &= !Self::INPUT_ATTACHMENT_READ.0;
302            first = false;
303        }
304        if remaining & Self::SHADER_READ.0 != 0 {
305            if !first {
306                f.write_str(" | ")?;
307            }
308            f.write_str("SHADER_READ")?;
309            remaining &= !Self::SHADER_READ.0;
310            first = false;
311        }
312        if remaining & Self::SHADER_WRITE.0 != 0 {
313            if !first {
314                f.write_str(" | ")?;
315            }
316            f.write_str("SHADER_WRITE")?;
317            remaining &= !Self::SHADER_WRITE.0;
318            first = false;
319        }
320        if remaining & Self::COLOR_ATTACHMENT_READ.0 != 0 {
321            if !first {
322                f.write_str(" | ")?;
323            }
324            f.write_str("COLOR_ATTACHMENT_READ")?;
325            remaining &= !Self::COLOR_ATTACHMENT_READ.0;
326            first = false;
327        }
328        if remaining & Self::COLOR_ATTACHMENT_WRITE.0 != 0 {
329            if !first {
330                f.write_str(" | ")?;
331            }
332            f.write_str("COLOR_ATTACHMENT_WRITE")?;
333            remaining &= !Self::COLOR_ATTACHMENT_WRITE.0;
334            first = false;
335        }
336        if remaining & Self::DEPTH_STENCIL_ATTACHMENT_READ.0 != 0 {
337            if !first {
338                f.write_str(" | ")?;
339            }
340            f.write_str("DEPTH_STENCIL_ATTACHMENT_READ")?;
341            remaining &= !Self::DEPTH_STENCIL_ATTACHMENT_READ.0;
342            first = false;
343        }
344        if remaining & Self::DEPTH_STENCIL_ATTACHMENT_WRITE.0 != 0 {
345            if !first {
346                f.write_str(" | ")?;
347            }
348            f.write_str("DEPTH_STENCIL_ATTACHMENT_WRITE")?;
349            remaining &= !Self::DEPTH_STENCIL_ATTACHMENT_WRITE.0;
350            first = false;
351        }
352        if remaining & Self::TRANSFER_READ.0 != 0 {
353            if !first {
354                f.write_str(" | ")?;
355            }
356            f.write_str("TRANSFER_READ")?;
357            remaining &= !Self::TRANSFER_READ.0;
358            first = false;
359        }
360        if remaining & Self::TRANSFER_WRITE.0 != 0 {
361            if !first {
362                f.write_str(" | ")?;
363            }
364            f.write_str("TRANSFER_WRITE")?;
365            remaining &= !Self::TRANSFER_WRITE.0;
366            first = false;
367        }
368        if remaining & Self::HOST_READ.0 != 0 {
369            if !first {
370                f.write_str(" | ")?;
371            }
372            f.write_str("HOST_READ")?;
373            remaining &= !Self::HOST_READ.0;
374            first = false;
375        }
376        if remaining & Self::HOST_WRITE.0 != 0 {
377            if !first {
378                f.write_str(" | ")?;
379            }
380            f.write_str("HOST_WRITE")?;
381            remaining &= !Self::HOST_WRITE.0;
382            first = false;
383        }
384        if remaining & Self::MEMORY_READ.0 != 0 {
385            if !first {
386                f.write_str(" | ")?;
387            }
388            f.write_str("MEMORY_READ")?;
389            remaining &= !Self::MEMORY_READ.0;
390            first = false;
391        }
392        if remaining & Self::MEMORY_WRITE.0 != 0 {
393            if !first {
394                f.write_str(" | ")?;
395            }
396            f.write_str("MEMORY_WRITE")?;
397            remaining &= !Self::MEMORY_WRITE.0;
398            first = false;
399        }
400        if remaining & Self::TRANSFORM_FEEDBACK_WRITE.0 != 0 {
401            if !first {
402                f.write_str(" | ")?;
403            }
404            f.write_str("TRANSFORM_FEEDBACK_WRITE")?;
405            remaining &= !Self::TRANSFORM_FEEDBACK_WRITE.0;
406            first = false;
407        }
408        if remaining & Self::TRANSFORM_FEEDBACK_COUNTER_READ.0 != 0 {
409            if !first {
410                f.write_str(" | ")?;
411            }
412            f.write_str("TRANSFORM_FEEDBACK_COUNTER_READ")?;
413            remaining &= !Self::TRANSFORM_FEEDBACK_COUNTER_READ.0;
414            first = false;
415        }
416        if remaining & Self::TRANSFORM_FEEDBACK_COUNTER_WRITE.0 != 0 {
417            if !first {
418                f.write_str(" | ")?;
419            }
420            f.write_str("TRANSFORM_FEEDBACK_COUNTER_WRITE")?;
421            remaining &= !Self::TRANSFORM_FEEDBACK_COUNTER_WRITE.0;
422            first = false;
423        }
424        if remaining & Self::CONDITIONAL_RENDERING_READ.0 != 0 {
425            if !first {
426                f.write_str(" | ")?;
427            }
428            f.write_str("CONDITIONAL_RENDERING_READ")?;
429            remaining &= !Self::CONDITIONAL_RENDERING_READ.0;
430            first = false;
431        }
432        if remaining & Self::COLOR_ATTACHMENT_READ_NONCOHERENT.0 != 0 {
433            if !first {
434                f.write_str(" | ")?;
435            }
436            f.write_str("COLOR_ATTACHMENT_READ_NONCOHERENT")?;
437            remaining &= !Self::COLOR_ATTACHMENT_READ_NONCOHERENT.0;
438            first = false;
439        }
440        if remaining & Self::ACCELERATION_STRUCTURE_READ.0 != 0 {
441            if !first {
442                f.write_str(" | ")?;
443            }
444            f.write_str("ACCELERATION_STRUCTURE_READ")?;
445            remaining &= !Self::ACCELERATION_STRUCTURE_READ.0;
446            first = false;
447        }
448        if remaining & Self::ACCELERATION_STRUCTURE_WRITE.0 != 0 {
449            if !first {
450                f.write_str(" | ")?;
451            }
452            f.write_str("ACCELERATION_STRUCTURE_WRITE")?;
453            remaining &= !Self::ACCELERATION_STRUCTURE_WRITE.0;
454            first = false;
455        }
456        if remaining & Self::FRAGMENT_DENSITY_MAP_READ.0 != 0 {
457            if !first {
458                f.write_str(" | ")?;
459            }
460            f.write_str("FRAGMENT_DENSITY_MAP_READ")?;
461            remaining &= !Self::FRAGMENT_DENSITY_MAP_READ.0;
462            first = false;
463        }
464        if remaining & Self::FRAGMENT_SHADING_RATE_ATTACHMENT_READ.0 != 0 {
465            if !first {
466                f.write_str(" | ")?;
467            }
468            f.write_str("FRAGMENT_SHADING_RATE_ATTACHMENT_READ")?;
469            remaining &= !Self::FRAGMENT_SHADING_RATE_ATTACHMENT_READ.0;
470            first = false;
471        }
472        if remaining & Self::COMMAND_PREPROCESS_READ.0 != 0 {
473            if !first {
474                f.write_str(" | ")?;
475            }
476            f.write_str("COMMAND_PREPROCESS_READ")?;
477            remaining &= !Self::COMMAND_PREPROCESS_READ.0;
478            first = false;
479        }
480        if remaining & Self::COMMAND_PREPROCESS_WRITE.0 != 0 {
481            if !first {
482                f.write_str(" | ")?;
483            }
484            f.write_str("COMMAND_PREPROCESS_WRITE")?;
485            remaining &= !Self::COMMAND_PREPROCESS_WRITE.0;
486            first = false;
487        }
488        if remaining != 0u32 {
489            if !first {
490                f.write_str(" | ")?;
491            }
492            write!(f, "{:#x}", remaining)?;
493        } else if first {
494            f.write_str("(empty)")?;
495        }
496        Ok(())
497    }
498}
499///[`VkAccessFlagBits2`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlagBits2.html)
500#[repr(transparent)]
501#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
502#[doc(alias = "VkAccessFlagBits2")]
503pub struct AccessFlagBits2(u64);
504impl AccessFlagBits2 {
505    #[inline]
506    pub const fn empty() -> Self {
507        Self(0u64)
508    }
509    #[inline]
510    pub const fn from_raw(value: u64) -> Self {
511        Self(value)
512    }
513    #[inline]
514    pub const fn as_raw(self) -> u64 {
515        self.0
516    }
517    #[inline]
518    pub const fn is_empty(self) -> bool {
519        self.0 == 0u64
520    }
521    #[inline]
522    pub const fn contains(self, other: Self) -> bool {
523        (self.0 & other.0) == other.0
524    }
525    #[inline]
526    pub const fn all() -> Self {
527        Self(547679931908227071u64)
528    }
529    pub const _2_NONE: Self = Self(0u64);
530    ///Bit 0.
531    pub const _2_INDIRECT_COMMAND_READ: Self = Self(1u64);
532    ///Bit 1.
533    pub const _2_INDEX_READ: Self = Self(2u64);
534    ///Bit 2.
535    pub const _2_VERTEX_ATTRIBUTE_READ: Self = Self(4u64);
536    ///Bit 3.
537    pub const _2_UNIFORM_READ: Self = Self(8u64);
538    ///Bit 4.
539    pub const _2_INPUT_ATTACHMENT_READ: Self = Self(16u64);
540    ///Bit 5.
541    pub const _2_SHADER_READ: Self = Self(32u64);
542    ///Bit 6.
543    pub const _2_SHADER_WRITE: Self = Self(64u64);
544    ///Bit 7.
545    pub const _2_COLOR_ATTACHMENT_READ: Self = Self(128u64);
546    ///Bit 8.
547    pub const _2_COLOR_ATTACHMENT_WRITE: Self = Self(256u64);
548    ///Bit 9.
549    pub const _2_DEPTH_STENCIL_ATTACHMENT_READ: Self = Self(512u64);
550    ///Bit 10.
551    pub const _2_DEPTH_STENCIL_ATTACHMENT_WRITE: Self = Self(1024u64);
552    ///Bit 11.
553    pub const _2_TRANSFER_READ: Self = Self(2048u64);
554    ///Bit 12.
555    pub const _2_TRANSFER_WRITE: Self = Self(4096u64);
556    ///Bit 13.
557    pub const _2_HOST_READ: Self = Self(8192u64);
558    ///Bit 14.
559    pub const _2_HOST_WRITE: Self = Self(16384u64);
560    ///Bit 15.
561    pub const _2_MEMORY_READ: Self = Self(32768u64);
562    ///Bit 16.
563    pub const _2_MEMORY_WRITE: Self = Self(65536u64);
564    ///Bit 32.
565    pub const _2_SHADER_SAMPLED_READ: Self = Self(4294967296u64);
566    ///Bit 33.
567    pub const _2_SHADER_STORAGE_READ: Self = Self(8589934592u64);
568    ///Bit 34.
569    pub const _2_SHADER_STORAGE_WRITE: Self = Self(17179869184u64);
570    ///Bit 35.
571    pub const _2_VIDEO_DECODE_READ: Self = Self(34359738368u64);
572    ///Bit 36.
573    pub const _2_VIDEO_DECODE_WRITE: Self = Self(68719476736u64);
574    ///Bit 57.
575    pub const _2_SAMPLER_HEAP_READ: Self = Self(144115188075855872u64);
576    ///Bit 58.
577    pub const _2_RESOURCE_HEAP_READ: Self = Self(288230376151711744u64);
578    ///Bit 37.
579    pub const _2_VIDEO_ENCODE_READ: Self = Self(137438953472u64);
580    ///Bit 38.
581    pub const _2_VIDEO_ENCODE_WRITE: Self = Self(274877906944u64);
582    ///Bit 51.
583    pub const _2_SHADER_TILE_ATTACHMENT_READ_BIT: Self = Self(2251799813685248u64);
584    ///Bit 52.
585    pub const _2_SHADER_TILE_ATTACHMENT_WRITE_BIT: Self = Self(4503599627370496u64);
586    ///Bit 25.
587    pub const _2_TRANSFORM_FEEDBACK_WRITE: Self = Self(33554432u64);
588    ///Bit 26.
589    pub const _2_TRANSFORM_FEEDBACK_COUNTER_READ: Self = Self(67108864u64);
590    ///Bit 27.
591    pub const _2_TRANSFORM_FEEDBACK_COUNTER_WRITE: Self = Self(134217728u64);
592    ///Bit 20.
593    pub const _2_CONDITIONAL_RENDERING_READ: Self = Self(1048576u64);
594    ///Bit 17.
595    pub const _2_COMMAND_PREPROCESS_READ: Self = Self(131072u64);
596    ///Bit 18.
597    pub const _2_COMMAND_PREPROCESS_WRITE: Self = Self(262144u64);
598    ///Bit 23.
599    pub const _2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ: Self = Self(8388608u64);
600    pub const _2_SHADING_RATE_IMAGE_READ: Self = Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ;
601    ///Bit 21.
602    pub const _2_ACCELERATION_STRUCTURE_READ: Self = Self(2097152u64);
603    ///Bit 22.
604    pub const _2_ACCELERATION_STRUCTURE_WRITE: Self = Self(4194304u64);
605    ///Bit 24.
606    pub const _2_FRAGMENT_DENSITY_MAP_READ: Self = Self(16777216u64);
607    ///Bit 19.
608    pub const _2_COLOR_ATTACHMENT_READ_NONCOHERENT: Self = Self(524288u64);
609    ///Bit 41.
610    pub const _2_DESCRIPTOR_BUFFER_READ: Self = Self(2199023255552u64);
611    ///Bit 39.
612    pub const _2_INVOCATION_MASK_READ_BIT: Self = Self(549755813888u64);
613    ///Bit 40.
614    pub const _2_SHADER_BINDING_TABLE_READ: Self = Self(1099511627776u64);
615    ///Bit 44.
616    pub const _2_MICROMAP_READ: Self = Self(17592186044416u64);
617    ///Bit 45.
618    pub const _2_MICROMAP_WRITE: Self = Self(35184372088832u64);
619    ///Bit 42.
620    pub const _2_OPTICAL_FLOW_READ: Self = Self(4398046511104u64);
621    ///Bit 43.
622    pub const _2_OPTICAL_FLOW_WRITE: Self = Self(8796093022208u64);
623    ///Bit 47.
624    pub const _2_DATA_GRAPH_READ_BIT: Self = Self(140737488355328u64);
625    ///Bit 48.
626    pub const _2_DATA_GRAPH_WRITE_BIT: Self = Self(281474976710656u64);
627    ///Bit 55.
628    pub const _2_MEMORY_DECOMPRESSION_READ: Self = Self(36028797018963968u64);
629    ///Bit 56.
630    pub const _2_MEMORY_DECOMPRESSION_WRITE: Self = Self(72057594037927936u64);
631}
632impl core::ops::BitOr for AccessFlagBits2 {
633    type Output = Self;
634    #[inline]
635    fn bitor(self, rhs: Self) -> Self {
636        Self(self.0 | rhs.0)
637    }
638}
639impl core::ops::BitOrAssign for AccessFlagBits2 {
640    #[inline]
641    fn bitor_assign(&mut self, rhs: Self) {
642        self.0 |= rhs.0;
643    }
644}
645impl core::ops::BitAnd for AccessFlagBits2 {
646    type Output = Self;
647    #[inline]
648    fn bitand(self, rhs: Self) -> Self {
649        Self(self.0 & rhs.0)
650    }
651}
652impl core::ops::BitAndAssign for AccessFlagBits2 {
653    #[inline]
654    fn bitand_assign(&mut self, rhs: Self) {
655        self.0 &= rhs.0;
656    }
657}
658impl core::ops::BitXor for AccessFlagBits2 {
659    type Output = Self;
660    #[inline]
661    fn bitxor(self, rhs: Self) -> Self {
662        Self(self.0 ^ rhs.0)
663    }
664}
665impl core::ops::BitXorAssign for AccessFlagBits2 {
666    #[inline]
667    fn bitxor_assign(&mut self, rhs: Self) {
668        self.0 ^= rhs.0;
669    }
670}
671impl core::ops::Not for AccessFlagBits2 {
672    type Output = Self;
673    #[inline]
674    fn not(self) -> Self {
675        Self(!self.0)
676    }
677}
678impl core::fmt::Debug for AccessFlagBits2 {
679    #[allow(unused_mut, unused_variables)]
680    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
681        let mut first = true;
682        let mut remaining = self.0;
683        if remaining & Self::_2_INDIRECT_COMMAND_READ.0 != 0 {
684            if !first {
685                f.write_str(" | ")?;
686            }
687            f.write_str("_2_INDIRECT_COMMAND_READ")?;
688            remaining &= !Self::_2_INDIRECT_COMMAND_READ.0;
689            first = false;
690        }
691        if remaining & Self::_2_INDEX_READ.0 != 0 {
692            if !first {
693                f.write_str(" | ")?;
694            }
695            f.write_str("_2_INDEX_READ")?;
696            remaining &= !Self::_2_INDEX_READ.0;
697            first = false;
698        }
699        if remaining & Self::_2_VERTEX_ATTRIBUTE_READ.0 != 0 {
700            if !first {
701                f.write_str(" | ")?;
702            }
703            f.write_str("_2_VERTEX_ATTRIBUTE_READ")?;
704            remaining &= !Self::_2_VERTEX_ATTRIBUTE_READ.0;
705            first = false;
706        }
707        if remaining & Self::_2_UNIFORM_READ.0 != 0 {
708            if !first {
709                f.write_str(" | ")?;
710            }
711            f.write_str("_2_UNIFORM_READ")?;
712            remaining &= !Self::_2_UNIFORM_READ.0;
713            first = false;
714        }
715        if remaining & Self::_2_INPUT_ATTACHMENT_READ.0 != 0 {
716            if !first {
717                f.write_str(" | ")?;
718            }
719            f.write_str("_2_INPUT_ATTACHMENT_READ")?;
720            remaining &= !Self::_2_INPUT_ATTACHMENT_READ.0;
721            first = false;
722        }
723        if remaining & Self::_2_SHADER_READ.0 != 0 {
724            if !first {
725                f.write_str(" | ")?;
726            }
727            f.write_str("_2_SHADER_READ")?;
728            remaining &= !Self::_2_SHADER_READ.0;
729            first = false;
730        }
731        if remaining & Self::_2_SHADER_WRITE.0 != 0 {
732            if !first {
733                f.write_str(" | ")?;
734            }
735            f.write_str("_2_SHADER_WRITE")?;
736            remaining &= !Self::_2_SHADER_WRITE.0;
737            first = false;
738        }
739        if remaining & Self::_2_COLOR_ATTACHMENT_READ.0 != 0 {
740            if !first {
741                f.write_str(" | ")?;
742            }
743            f.write_str("_2_COLOR_ATTACHMENT_READ")?;
744            remaining &= !Self::_2_COLOR_ATTACHMENT_READ.0;
745            first = false;
746        }
747        if remaining & Self::_2_COLOR_ATTACHMENT_WRITE.0 != 0 {
748            if !first {
749                f.write_str(" | ")?;
750            }
751            f.write_str("_2_COLOR_ATTACHMENT_WRITE")?;
752            remaining &= !Self::_2_COLOR_ATTACHMENT_WRITE.0;
753            first = false;
754        }
755        if remaining & Self::_2_DEPTH_STENCIL_ATTACHMENT_READ.0 != 0 {
756            if !first {
757                f.write_str(" | ")?;
758            }
759            f.write_str("_2_DEPTH_STENCIL_ATTACHMENT_READ")?;
760            remaining &= !Self::_2_DEPTH_STENCIL_ATTACHMENT_READ.0;
761            first = false;
762        }
763        if remaining & Self::_2_DEPTH_STENCIL_ATTACHMENT_WRITE.0 != 0 {
764            if !first {
765                f.write_str(" | ")?;
766            }
767            f.write_str("_2_DEPTH_STENCIL_ATTACHMENT_WRITE")?;
768            remaining &= !Self::_2_DEPTH_STENCIL_ATTACHMENT_WRITE.0;
769            first = false;
770        }
771        if remaining & Self::_2_TRANSFER_READ.0 != 0 {
772            if !first {
773                f.write_str(" | ")?;
774            }
775            f.write_str("_2_TRANSFER_READ")?;
776            remaining &= !Self::_2_TRANSFER_READ.0;
777            first = false;
778        }
779        if remaining & Self::_2_TRANSFER_WRITE.0 != 0 {
780            if !first {
781                f.write_str(" | ")?;
782            }
783            f.write_str("_2_TRANSFER_WRITE")?;
784            remaining &= !Self::_2_TRANSFER_WRITE.0;
785            first = false;
786        }
787        if remaining & Self::_2_HOST_READ.0 != 0 {
788            if !first {
789                f.write_str(" | ")?;
790            }
791            f.write_str("_2_HOST_READ")?;
792            remaining &= !Self::_2_HOST_READ.0;
793            first = false;
794        }
795        if remaining & Self::_2_HOST_WRITE.0 != 0 {
796            if !first {
797                f.write_str(" | ")?;
798            }
799            f.write_str("_2_HOST_WRITE")?;
800            remaining &= !Self::_2_HOST_WRITE.0;
801            first = false;
802        }
803        if remaining & Self::_2_MEMORY_READ.0 != 0 {
804            if !first {
805                f.write_str(" | ")?;
806            }
807            f.write_str("_2_MEMORY_READ")?;
808            remaining &= !Self::_2_MEMORY_READ.0;
809            first = false;
810        }
811        if remaining & Self::_2_MEMORY_WRITE.0 != 0 {
812            if !first {
813                f.write_str(" | ")?;
814            }
815            f.write_str("_2_MEMORY_WRITE")?;
816            remaining &= !Self::_2_MEMORY_WRITE.0;
817            first = false;
818        }
819        if remaining & Self::_2_SHADER_SAMPLED_READ.0 != 0 {
820            if !first {
821                f.write_str(" | ")?;
822            }
823            f.write_str("_2_SHADER_SAMPLED_READ")?;
824            remaining &= !Self::_2_SHADER_SAMPLED_READ.0;
825            first = false;
826        }
827        if remaining & Self::_2_SHADER_STORAGE_READ.0 != 0 {
828            if !first {
829                f.write_str(" | ")?;
830            }
831            f.write_str("_2_SHADER_STORAGE_READ")?;
832            remaining &= !Self::_2_SHADER_STORAGE_READ.0;
833            first = false;
834        }
835        if remaining & Self::_2_SHADER_STORAGE_WRITE.0 != 0 {
836            if !first {
837                f.write_str(" | ")?;
838            }
839            f.write_str("_2_SHADER_STORAGE_WRITE")?;
840            remaining &= !Self::_2_SHADER_STORAGE_WRITE.0;
841            first = false;
842        }
843        if remaining & Self::_2_VIDEO_DECODE_READ.0 != 0 {
844            if !first {
845                f.write_str(" | ")?;
846            }
847            f.write_str("_2_VIDEO_DECODE_READ")?;
848            remaining &= !Self::_2_VIDEO_DECODE_READ.0;
849            first = false;
850        }
851        if remaining & Self::_2_VIDEO_DECODE_WRITE.0 != 0 {
852            if !first {
853                f.write_str(" | ")?;
854            }
855            f.write_str("_2_VIDEO_DECODE_WRITE")?;
856            remaining &= !Self::_2_VIDEO_DECODE_WRITE.0;
857            first = false;
858        }
859        if remaining & Self::_2_SAMPLER_HEAP_READ.0 != 0 {
860            if !first {
861                f.write_str(" | ")?;
862            }
863            f.write_str("_2_SAMPLER_HEAP_READ")?;
864            remaining &= !Self::_2_SAMPLER_HEAP_READ.0;
865            first = false;
866        }
867        if remaining & Self::_2_RESOURCE_HEAP_READ.0 != 0 {
868            if !first {
869                f.write_str(" | ")?;
870            }
871            f.write_str("_2_RESOURCE_HEAP_READ")?;
872            remaining &= !Self::_2_RESOURCE_HEAP_READ.0;
873            first = false;
874        }
875        if remaining & Self::_2_VIDEO_ENCODE_READ.0 != 0 {
876            if !first {
877                f.write_str(" | ")?;
878            }
879            f.write_str("_2_VIDEO_ENCODE_READ")?;
880            remaining &= !Self::_2_VIDEO_ENCODE_READ.0;
881            first = false;
882        }
883        if remaining & Self::_2_VIDEO_ENCODE_WRITE.0 != 0 {
884            if !first {
885                f.write_str(" | ")?;
886            }
887            f.write_str("_2_VIDEO_ENCODE_WRITE")?;
888            remaining &= !Self::_2_VIDEO_ENCODE_WRITE.0;
889            first = false;
890        }
891        if remaining & Self::_2_SHADER_TILE_ATTACHMENT_READ_BIT.0 != 0 {
892            if !first {
893                f.write_str(" | ")?;
894            }
895            f.write_str("_2_SHADER_TILE_ATTACHMENT_READ_BIT")?;
896            remaining &= !Self::_2_SHADER_TILE_ATTACHMENT_READ_BIT.0;
897            first = false;
898        }
899        if remaining & Self::_2_SHADER_TILE_ATTACHMENT_WRITE_BIT.0 != 0 {
900            if !first {
901                f.write_str(" | ")?;
902            }
903            f.write_str("_2_SHADER_TILE_ATTACHMENT_WRITE_BIT")?;
904            remaining &= !Self::_2_SHADER_TILE_ATTACHMENT_WRITE_BIT.0;
905            first = false;
906        }
907        if remaining & Self::_2_TRANSFORM_FEEDBACK_WRITE.0 != 0 {
908            if !first {
909                f.write_str(" | ")?;
910            }
911            f.write_str("_2_TRANSFORM_FEEDBACK_WRITE")?;
912            remaining &= !Self::_2_TRANSFORM_FEEDBACK_WRITE.0;
913            first = false;
914        }
915        if remaining & Self::_2_TRANSFORM_FEEDBACK_COUNTER_READ.0 != 0 {
916            if !first {
917                f.write_str(" | ")?;
918            }
919            f.write_str("_2_TRANSFORM_FEEDBACK_COUNTER_READ")?;
920            remaining &= !Self::_2_TRANSFORM_FEEDBACK_COUNTER_READ.0;
921            first = false;
922        }
923        if remaining & Self::_2_TRANSFORM_FEEDBACK_COUNTER_WRITE.0 != 0 {
924            if !first {
925                f.write_str(" | ")?;
926            }
927            f.write_str("_2_TRANSFORM_FEEDBACK_COUNTER_WRITE")?;
928            remaining &= !Self::_2_TRANSFORM_FEEDBACK_COUNTER_WRITE.0;
929            first = false;
930        }
931        if remaining & Self::_2_CONDITIONAL_RENDERING_READ.0 != 0 {
932            if !first {
933                f.write_str(" | ")?;
934            }
935            f.write_str("_2_CONDITIONAL_RENDERING_READ")?;
936            remaining &= !Self::_2_CONDITIONAL_RENDERING_READ.0;
937            first = false;
938        }
939        if remaining & Self::_2_COMMAND_PREPROCESS_READ.0 != 0 {
940            if !first {
941                f.write_str(" | ")?;
942            }
943            f.write_str("_2_COMMAND_PREPROCESS_READ")?;
944            remaining &= !Self::_2_COMMAND_PREPROCESS_READ.0;
945            first = false;
946        }
947        if remaining & Self::_2_COMMAND_PREPROCESS_WRITE.0 != 0 {
948            if !first {
949                f.write_str(" | ")?;
950            }
951            f.write_str("_2_COMMAND_PREPROCESS_WRITE")?;
952            remaining &= !Self::_2_COMMAND_PREPROCESS_WRITE.0;
953            first = false;
954        }
955        if remaining & Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ.0 != 0 {
956            if !first {
957                f.write_str(" | ")?;
958            }
959            f.write_str("_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ")?;
960            remaining &= !Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ.0;
961            first = false;
962        }
963        if remaining & Self::_2_ACCELERATION_STRUCTURE_READ.0 != 0 {
964            if !first {
965                f.write_str(" | ")?;
966            }
967            f.write_str("_2_ACCELERATION_STRUCTURE_READ")?;
968            remaining &= !Self::_2_ACCELERATION_STRUCTURE_READ.0;
969            first = false;
970        }
971        if remaining & Self::_2_ACCELERATION_STRUCTURE_WRITE.0 != 0 {
972            if !first {
973                f.write_str(" | ")?;
974            }
975            f.write_str("_2_ACCELERATION_STRUCTURE_WRITE")?;
976            remaining &= !Self::_2_ACCELERATION_STRUCTURE_WRITE.0;
977            first = false;
978        }
979        if remaining & Self::_2_FRAGMENT_DENSITY_MAP_READ.0 != 0 {
980            if !first {
981                f.write_str(" | ")?;
982            }
983            f.write_str("_2_FRAGMENT_DENSITY_MAP_READ")?;
984            remaining &= !Self::_2_FRAGMENT_DENSITY_MAP_READ.0;
985            first = false;
986        }
987        if remaining & Self::_2_COLOR_ATTACHMENT_READ_NONCOHERENT.0 != 0 {
988            if !first {
989                f.write_str(" | ")?;
990            }
991            f.write_str("_2_COLOR_ATTACHMENT_READ_NONCOHERENT")?;
992            remaining &= !Self::_2_COLOR_ATTACHMENT_READ_NONCOHERENT.0;
993            first = false;
994        }
995        if remaining & Self::_2_DESCRIPTOR_BUFFER_READ.0 != 0 {
996            if !first {
997                f.write_str(" | ")?;
998            }
999            f.write_str("_2_DESCRIPTOR_BUFFER_READ")?;
1000            remaining &= !Self::_2_DESCRIPTOR_BUFFER_READ.0;
1001            first = false;
1002        }
1003        if remaining & Self::_2_INVOCATION_MASK_READ_BIT.0 != 0 {
1004            if !first {
1005                f.write_str(" | ")?;
1006            }
1007            f.write_str("_2_INVOCATION_MASK_READ_BIT")?;
1008            remaining &= !Self::_2_INVOCATION_MASK_READ_BIT.0;
1009            first = false;
1010        }
1011        if remaining & Self::_2_SHADER_BINDING_TABLE_READ.0 != 0 {
1012            if !first {
1013                f.write_str(" | ")?;
1014            }
1015            f.write_str("_2_SHADER_BINDING_TABLE_READ")?;
1016            remaining &= !Self::_2_SHADER_BINDING_TABLE_READ.0;
1017            first = false;
1018        }
1019        if remaining & Self::_2_MICROMAP_READ.0 != 0 {
1020            if !first {
1021                f.write_str(" | ")?;
1022            }
1023            f.write_str("_2_MICROMAP_READ")?;
1024            remaining &= !Self::_2_MICROMAP_READ.0;
1025            first = false;
1026        }
1027        if remaining & Self::_2_MICROMAP_WRITE.0 != 0 {
1028            if !first {
1029                f.write_str(" | ")?;
1030            }
1031            f.write_str("_2_MICROMAP_WRITE")?;
1032            remaining &= !Self::_2_MICROMAP_WRITE.0;
1033            first = false;
1034        }
1035        if remaining & Self::_2_OPTICAL_FLOW_READ.0 != 0 {
1036            if !first {
1037                f.write_str(" | ")?;
1038            }
1039            f.write_str("_2_OPTICAL_FLOW_READ")?;
1040            remaining &= !Self::_2_OPTICAL_FLOW_READ.0;
1041            first = false;
1042        }
1043        if remaining & Self::_2_OPTICAL_FLOW_WRITE.0 != 0 {
1044            if !first {
1045                f.write_str(" | ")?;
1046            }
1047            f.write_str("_2_OPTICAL_FLOW_WRITE")?;
1048            remaining &= !Self::_2_OPTICAL_FLOW_WRITE.0;
1049            first = false;
1050        }
1051        if remaining & Self::_2_DATA_GRAPH_READ_BIT.0 != 0 {
1052            if !first {
1053                f.write_str(" | ")?;
1054            }
1055            f.write_str("_2_DATA_GRAPH_READ_BIT")?;
1056            remaining &= !Self::_2_DATA_GRAPH_READ_BIT.0;
1057            first = false;
1058        }
1059        if remaining & Self::_2_DATA_GRAPH_WRITE_BIT.0 != 0 {
1060            if !first {
1061                f.write_str(" | ")?;
1062            }
1063            f.write_str("_2_DATA_GRAPH_WRITE_BIT")?;
1064            remaining &= !Self::_2_DATA_GRAPH_WRITE_BIT.0;
1065            first = false;
1066        }
1067        if remaining & Self::_2_MEMORY_DECOMPRESSION_READ.0 != 0 {
1068            if !first {
1069                f.write_str(" | ")?;
1070            }
1071            f.write_str("_2_MEMORY_DECOMPRESSION_READ")?;
1072            remaining &= !Self::_2_MEMORY_DECOMPRESSION_READ.0;
1073            first = false;
1074        }
1075        if remaining & Self::_2_MEMORY_DECOMPRESSION_WRITE.0 != 0 {
1076            if !first {
1077                f.write_str(" | ")?;
1078            }
1079            f.write_str("_2_MEMORY_DECOMPRESSION_WRITE")?;
1080            remaining &= !Self::_2_MEMORY_DECOMPRESSION_WRITE.0;
1081            first = false;
1082        }
1083        if remaining != 0u64 {
1084            if !first {
1085                f.write_str(" | ")?;
1086            }
1087            write!(f, "{:#x}", remaining)?;
1088        } else if first {
1089            f.write_str("(empty)")?;
1090        }
1091        Ok(())
1092    }
1093}
1094///[`VkAccessFlagBits3KHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlagBits3KHR.html)
1095#[repr(transparent)]
1096#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1097#[doc(alias = "VkAccessFlagBits3KHR")]
1098pub struct AccessFlagBits3KHR(u64);
1099impl AccessFlagBits3KHR {
1100    #[inline]
1101    pub const fn empty() -> Self {
1102        Self(0u64)
1103    }
1104    #[inline]
1105    pub const fn from_raw(value: u64) -> Self {
1106        Self(value)
1107    }
1108    #[inline]
1109    pub const fn as_raw(self) -> u64 {
1110        self.0
1111    }
1112    #[inline]
1113    pub const fn is_empty(self) -> bool {
1114        self.0 == 0u64
1115    }
1116    #[inline]
1117    pub const fn contains(self, other: Self) -> bool {
1118        (self.0 & other.0) == other.0
1119    }
1120    #[inline]
1121    pub const fn all() -> Self {
1122        Self(0u64)
1123    }
1124    pub const ACCESS_3_NONE: Self = Self(0u64);
1125}
1126impl core::ops::BitOr for AccessFlagBits3KHR {
1127    type Output = Self;
1128    #[inline]
1129    fn bitor(self, rhs: Self) -> Self {
1130        Self(self.0 | rhs.0)
1131    }
1132}
1133impl core::ops::BitOrAssign for AccessFlagBits3KHR {
1134    #[inline]
1135    fn bitor_assign(&mut self, rhs: Self) {
1136        self.0 |= rhs.0;
1137    }
1138}
1139impl core::ops::BitAnd for AccessFlagBits3KHR {
1140    type Output = Self;
1141    #[inline]
1142    fn bitand(self, rhs: Self) -> Self {
1143        Self(self.0 & rhs.0)
1144    }
1145}
1146impl core::ops::BitAndAssign for AccessFlagBits3KHR {
1147    #[inline]
1148    fn bitand_assign(&mut self, rhs: Self) {
1149        self.0 &= rhs.0;
1150    }
1151}
1152impl core::ops::BitXor for AccessFlagBits3KHR {
1153    type Output = Self;
1154    #[inline]
1155    fn bitxor(self, rhs: Self) -> Self {
1156        Self(self.0 ^ rhs.0)
1157    }
1158}
1159impl core::ops::BitXorAssign for AccessFlagBits3KHR {
1160    #[inline]
1161    fn bitxor_assign(&mut self, rhs: Self) {
1162        self.0 ^= rhs.0;
1163    }
1164}
1165impl core::ops::Not for AccessFlagBits3KHR {
1166    type Output = Self;
1167    #[inline]
1168    fn not(self) -> Self {
1169        Self(!self.0)
1170    }
1171}
1172impl core::fmt::Debug for AccessFlagBits3KHR {
1173    #[allow(unused_mut, unused_variables)]
1174    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1175        let mut first = true;
1176        let mut remaining = self.0;
1177        if remaining != 0u64 {
1178            if !first {
1179                f.write_str(" | ")?;
1180            }
1181            write!(f, "{:#x}", remaining)?;
1182        } else if first {
1183            f.write_str("(empty)")?;
1184        }
1185        Ok(())
1186    }
1187}
1188///[`VkAcquireProfilingLockFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAcquireProfilingLockFlagBitsKHR.html)
1189#[repr(transparent)]
1190#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1191#[doc(alias = "VkAcquireProfilingLockFlagBitsKHR")]
1192pub struct AcquireProfilingLockFlagBitsKHR(u32);
1193impl AcquireProfilingLockFlagBitsKHR {
1194    #[inline]
1195    pub const fn empty() -> Self {
1196        Self(0u32)
1197    }
1198    #[inline]
1199    pub const fn from_raw(value: u32) -> Self {
1200        Self(value)
1201    }
1202    #[inline]
1203    pub const fn as_raw(self) -> u32 {
1204        self.0
1205    }
1206    #[inline]
1207    pub const fn is_empty(self) -> bool {
1208        self.0 == 0u32
1209    }
1210    #[inline]
1211    pub const fn contains(self, other: Self) -> bool {
1212        (self.0 & other.0) == other.0
1213    }
1214    #[inline]
1215    pub const fn all() -> Self {
1216        Self(0u32)
1217    }
1218}
1219impl core::ops::BitOr for AcquireProfilingLockFlagBitsKHR {
1220    type Output = Self;
1221    #[inline]
1222    fn bitor(self, rhs: Self) -> Self {
1223        Self(self.0 | rhs.0)
1224    }
1225}
1226impl core::ops::BitOrAssign for AcquireProfilingLockFlagBitsKHR {
1227    #[inline]
1228    fn bitor_assign(&mut self, rhs: Self) {
1229        self.0 |= rhs.0;
1230    }
1231}
1232impl core::ops::BitAnd for AcquireProfilingLockFlagBitsKHR {
1233    type Output = Self;
1234    #[inline]
1235    fn bitand(self, rhs: Self) -> Self {
1236        Self(self.0 & rhs.0)
1237    }
1238}
1239impl core::ops::BitAndAssign for AcquireProfilingLockFlagBitsKHR {
1240    #[inline]
1241    fn bitand_assign(&mut self, rhs: Self) {
1242        self.0 &= rhs.0;
1243    }
1244}
1245impl core::ops::BitXor for AcquireProfilingLockFlagBitsKHR {
1246    type Output = Self;
1247    #[inline]
1248    fn bitxor(self, rhs: Self) -> Self {
1249        Self(self.0 ^ rhs.0)
1250    }
1251}
1252impl core::ops::BitXorAssign for AcquireProfilingLockFlagBitsKHR {
1253    #[inline]
1254    fn bitxor_assign(&mut self, rhs: Self) {
1255        self.0 ^= rhs.0;
1256    }
1257}
1258impl core::ops::Not for AcquireProfilingLockFlagBitsKHR {
1259    type Output = Self;
1260    #[inline]
1261    fn not(self) -> Self {
1262        Self(!self.0)
1263    }
1264}
1265impl core::fmt::Debug for AcquireProfilingLockFlagBitsKHR {
1266    #[allow(unused_mut, unused_variables)]
1267    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1268        let mut first = true;
1269        let mut remaining = self.0;
1270        if remaining != 0u32 {
1271            if !first {
1272                f.write_str(" | ")?;
1273            }
1274            write!(f, "{:#x}", remaining)?;
1275        } else if first {
1276            f.write_str("(empty)")?;
1277        }
1278        Ok(())
1279    }
1280}
1281///[`VkAddressCommandFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAddressCommandFlagBitsKHR.html)
1282#[repr(transparent)]
1283#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1284#[doc(alias = "VkAddressCommandFlagBitsKHR")]
1285pub struct AddressCommandFlagBitsKHR(u32);
1286impl AddressCommandFlagBitsKHR {
1287    #[inline]
1288    pub const fn empty() -> Self {
1289        Self(0u32)
1290    }
1291    #[inline]
1292    pub const fn from_raw(value: u32) -> Self {
1293        Self(value)
1294    }
1295    #[inline]
1296    pub const fn as_raw(self) -> u32 {
1297        self.0
1298    }
1299    #[inline]
1300    pub const fn is_empty(self) -> bool {
1301        self.0 == 0u32
1302    }
1303    #[inline]
1304    pub const fn contains(self, other: Self) -> bool {
1305        (self.0 & other.0) == other.0
1306    }
1307    #[inline]
1308    pub const fn all() -> Self {
1309        Self(63u32)
1310    }
1311    ///Bit 0.
1312    pub const PROTECTED: Self = Self(1u32);
1313    ///Bit 1.
1314    pub const FULLY_BOUND: Self = Self(2u32);
1315    ///Bit 2.
1316    pub const STORAGE_BUFFER_USAGE: Self = Self(4u32);
1317    ///Bit 3.
1318    pub const UNKNOWN_STORAGE_BUFFER_USAGE: Self = Self(8u32);
1319    ///Bit 4.
1320    pub const TRANSFORM_FEEDBACK_BUFFER_USAGE: Self = Self(16u32);
1321    ///Bit 5.
1322    pub const UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE: Self = Self(32u32);
1323}
1324impl core::ops::BitOr for AddressCommandFlagBitsKHR {
1325    type Output = Self;
1326    #[inline]
1327    fn bitor(self, rhs: Self) -> Self {
1328        Self(self.0 | rhs.0)
1329    }
1330}
1331impl core::ops::BitOrAssign for AddressCommandFlagBitsKHR {
1332    #[inline]
1333    fn bitor_assign(&mut self, rhs: Self) {
1334        self.0 |= rhs.0;
1335    }
1336}
1337impl core::ops::BitAnd for AddressCommandFlagBitsKHR {
1338    type Output = Self;
1339    #[inline]
1340    fn bitand(self, rhs: Self) -> Self {
1341        Self(self.0 & rhs.0)
1342    }
1343}
1344impl core::ops::BitAndAssign for AddressCommandFlagBitsKHR {
1345    #[inline]
1346    fn bitand_assign(&mut self, rhs: Self) {
1347        self.0 &= rhs.0;
1348    }
1349}
1350impl core::ops::BitXor for AddressCommandFlagBitsKHR {
1351    type Output = Self;
1352    #[inline]
1353    fn bitxor(self, rhs: Self) -> Self {
1354        Self(self.0 ^ rhs.0)
1355    }
1356}
1357impl core::ops::BitXorAssign for AddressCommandFlagBitsKHR {
1358    #[inline]
1359    fn bitxor_assign(&mut self, rhs: Self) {
1360        self.0 ^= rhs.0;
1361    }
1362}
1363impl core::ops::Not for AddressCommandFlagBitsKHR {
1364    type Output = Self;
1365    #[inline]
1366    fn not(self) -> Self {
1367        Self(!self.0)
1368    }
1369}
1370impl core::fmt::Debug for AddressCommandFlagBitsKHR {
1371    #[allow(unused_mut, unused_variables)]
1372    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1373        let mut first = true;
1374        let mut remaining = self.0;
1375        if remaining & Self::PROTECTED.0 != 0 {
1376            if !first {
1377                f.write_str(" | ")?;
1378            }
1379            f.write_str("PROTECTED")?;
1380            remaining &= !Self::PROTECTED.0;
1381            first = false;
1382        }
1383        if remaining & Self::FULLY_BOUND.0 != 0 {
1384            if !first {
1385                f.write_str(" | ")?;
1386            }
1387            f.write_str("FULLY_BOUND")?;
1388            remaining &= !Self::FULLY_BOUND.0;
1389            first = false;
1390        }
1391        if remaining & Self::STORAGE_BUFFER_USAGE.0 != 0 {
1392            if !first {
1393                f.write_str(" | ")?;
1394            }
1395            f.write_str("STORAGE_BUFFER_USAGE")?;
1396            remaining &= !Self::STORAGE_BUFFER_USAGE.0;
1397            first = false;
1398        }
1399        if remaining & Self::UNKNOWN_STORAGE_BUFFER_USAGE.0 != 0 {
1400            if !first {
1401                f.write_str(" | ")?;
1402            }
1403            f.write_str("UNKNOWN_STORAGE_BUFFER_USAGE")?;
1404            remaining &= !Self::UNKNOWN_STORAGE_BUFFER_USAGE.0;
1405            first = false;
1406        }
1407        if remaining & Self::TRANSFORM_FEEDBACK_BUFFER_USAGE.0 != 0 {
1408            if !first {
1409                f.write_str(" | ")?;
1410            }
1411            f.write_str("TRANSFORM_FEEDBACK_BUFFER_USAGE")?;
1412            remaining &= !Self::TRANSFORM_FEEDBACK_BUFFER_USAGE.0;
1413            first = false;
1414        }
1415        if remaining & Self::UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE.0 != 0 {
1416            if !first {
1417                f.write_str(" | ")?;
1418            }
1419            f.write_str("UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE")?;
1420            remaining &= !Self::UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE.0;
1421            first = false;
1422        }
1423        if remaining != 0u32 {
1424            if !first {
1425                f.write_str(" | ")?;
1426            }
1427            write!(f, "{:#x}", remaining)?;
1428        } else if first {
1429            f.write_str("(empty)")?;
1430        }
1431        Ok(())
1432    }
1433}
1434///[`VkAddressCopyFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAddressCopyFlagBitsKHR.html)
1435#[repr(transparent)]
1436#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1437#[doc(alias = "VkAddressCopyFlagBitsKHR")]
1438pub struct AddressCopyFlagBitsKHR(u32);
1439impl AddressCopyFlagBitsKHR {
1440    #[inline]
1441    pub const fn empty() -> Self {
1442        Self(0u32)
1443    }
1444    #[inline]
1445    pub const fn from_raw(value: u32) -> Self {
1446        Self(value)
1447    }
1448    #[inline]
1449    pub const fn as_raw(self) -> u32 {
1450        self.0
1451    }
1452    #[inline]
1453    pub const fn is_empty(self) -> bool {
1454        self.0 == 0u32
1455    }
1456    #[inline]
1457    pub const fn contains(self, other: Self) -> bool {
1458        (self.0 & other.0) == other.0
1459    }
1460    #[inline]
1461    pub const fn all() -> Self {
1462        Self(7u32)
1463    }
1464    ///Bit 0.
1465    pub const DEVICE_LOCAL: Self = Self(1u32);
1466    ///Bit 1.
1467    pub const SPARSE: Self = Self(2u32);
1468    ///Bit 2.
1469    pub const PROTECTED: Self = Self(4u32);
1470}
1471impl core::ops::BitOr for AddressCopyFlagBitsKHR {
1472    type Output = Self;
1473    #[inline]
1474    fn bitor(self, rhs: Self) -> Self {
1475        Self(self.0 | rhs.0)
1476    }
1477}
1478impl core::ops::BitOrAssign for AddressCopyFlagBitsKHR {
1479    #[inline]
1480    fn bitor_assign(&mut self, rhs: Self) {
1481        self.0 |= rhs.0;
1482    }
1483}
1484impl core::ops::BitAnd for AddressCopyFlagBitsKHR {
1485    type Output = Self;
1486    #[inline]
1487    fn bitand(self, rhs: Self) -> Self {
1488        Self(self.0 & rhs.0)
1489    }
1490}
1491impl core::ops::BitAndAssign for AddressCopyFlagBitsKHR {
1492    #[inline]
1493    fn bitand_assign(&mut self, rhs: Self) {
1494        self.0 &= rhs.0;
1495    }
1496}
1497impl core::ops::BitXor for AddressCopyFlagBitsKHR {
1498    type Output = Self;
1499    #[inline]
1500    fn bitxor(self, rhs: Self) -> Self {
1501        Self(self.0 ^ rhs.0)
1502    }
1503}
1504impl core::ops::BitXorAssign for AddressCopyFlagBitsKHR {
1505    #[inline]
1506    fn bitxor_assign(&mut self, rhs: Self) {
1507        self.0 ^= rhs.0;
1508    }
1509}
1510impl core::ops::Not for AddressCopyFlagBitsKHR {
1511    type Output = Self;
1512    #[inline]
1513    fn not(self) -> Self {
1514        Self(!self.0)
1515    }
1516}
1517impl core::fmt::Debug for AddressCopyFlagBitsKHR {
1518    #[allow(unused_mut, unused_variables)]
1519    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1520        let mut first = true;
1521        let mut remaining = self.0;
1522        if remaining & Self::DEVICE_LOCAL.0 != 0 {
1523            if !first {
1524                f.write_str(" | ")?;
1525            }
1526            f.write_str("DEVICE_LOCAL")?;
1527            remaining &= !Self::DEVICE_LOCAL.0;
1528            first = false;
1529        }
1530        if remaining & Self::SPARSE.0 != 0 {
1531            if !first {
1532                f.write_str(" | ")?;
1533            }
1534            f.write_str("SPARSE")?;
1535            remaining &= !Self::SPARSE.0;
1536            first = false;
1537        }
1538        if remaining & Self::PROTECTED.0 != 0 {
1539            if !first {
1540                f.write_str(" | ")?;
1541            }
1542            f.write_str("PROTECTED")?;
1543            remaining &= !Self::PROTECTED.0;
1544            first = false;
1545        }
1546        if remaining != 0u32 {
1547            if !first {
1548                f.write_str(" | ")?;
1549            }
1550            write!(f, "{:#x}", remaining)?;
1551        } else if first {
1552            f.write_str("(empty)")?;
1553        }
1554        Ok(())
1555    }
1556}
1557///[`VkAttachmentDescriptionFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentDescriptionFlagBits.html)
1558#[repr(transparent)]
1559#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1560#[doc(alias = "VkAttachmentDescriptionFlagBits")]
1561pub struct AttachmentDescriptionFlagBits(u32);
1562impl AttachmentDescriptionFlagBits {
1563    #[inline]
1564    pub const fn empty() -> Self {
1565        Self(0u32)
1566    }
1567    #[inline]
1568    pub const fn from_raw(value: u32) -> Self {
1569        Self(value)
1570    }
1571    #[inline]
1572    pub const fn as_raw(self) -> u32 {
1573        self.0
1574    }
1575    #[inline]
1576    pub const fn is_empty(self) -> bool {
1577        self.0 == 0u32
1578    }
1579    #[inline]
1580    pub const fn contains(self, other: Self) -> bool {
1581        (self.0 & other.0) == other.0
1582    }
1583    #[inline]
1584    pub const fn all() -> Self {
1585        Self(7u32)
1586    }
1587    ///Bit 0.
1588    pub const MAY_ALIAS: Self = Self(1u32);
1589    ///Bit 1.
1590    pub const RESOLVE_SKIP_TRANSFER_FUNCTION: Self = Self(2u32);
1591    ///Bit 2.
1592    pub const RESOLVE_ENABLE_TRANSFER_FUNCTION: Self = Self(4u32);
1593}
1594impl core::ops::BitOr for AttachmentDescriptionFlagBits {
1595    type Output = Self;
1596    #[inline]
1597    fn bitor(self, rhs: Self) -> Self {
1598        Self(self.0 | rhs.0)
1599    }
1600}
1601impl core::ops::BitOrAssign for AttachmentDescriptionFlagBits {
1602    #[inline]
1603    fn bitor_assign(&mut self, rhs: Self) {
1604        self.0 |= rhs.0;
1605    }
1606}
1607impl core::ops::BitAnd for AttachmentDescriptionFlagBits {
1608    type Output = Self;
1609    #[inline]
1610    fn bitand(self, rhs: Self) -> Self {
1611        Self(self.0 & rhs.0)
1612    }
1613}
1614impl core::ops::BitAndAssign for AttachmentDescriptionFlagBits {
1615    #[inline]
1616    fn bitand_assign(&mut self, rhs: Self) {
1617        self.0 &= rhs.0;
1618    }
1619}
1620impl core::ops::BitXor for AttachmentDescriptionFlagBits {
1621    type Output = Self;
1622    #[inline]
1623    fn bitxor(self, rhs: Self) -> Self {
1624        Self(self.0 ^ rhs.0)
1625    }
1626}
1627impl core::ops::BitXorAssign for AttachmentDescriptionFlagBits {
1628    #[inline]
1629    fn bitxor_assign(&mut self, rhs: Self) {
1630        self.0 ^= rhs.0;
1631    }
1632}
1633impl core::ops::Not for AttachmentDescriptionFlagBits {
1634    type Output = Self;
1635    #[inline]
1636    fn not(self) -> Self {
1637        Self(!self.0)
1638    }
1639}
1640impl core::fmt::Debug for AttachmentDescriptionFlagBits {
1641    #[allow(unused_mut, unused_variables)]
1642    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1643        let mut first = true;
1644        let mut remaining = self.0;
1645        if remaining & Self::MAY_ALIAS.0 != 0 {
1646            if !first {
1647                f.write_str(" | ")?;
1648            }
1649            f.write_str("MAY_ALIAS")?;
1650            remaining &= !Self::MAY_ALIAS.0;
1651            first = false;
1652        }
1653        if remaining & Self::RESOLVE_SKIP_TRANSFER_FUNCTION.0 != 0 {
1654            if !first {
1655                f.write_str(" | ")?;
1656            }
1657            f.write_str("RESOLVE_SKIP_TRANSFER_FUNCTION")?;
1658            remaining &= !Self::RESOLVE_SKIP_TRANSFER_FUNCTION.0;
1659            first = false;
1660        }
1661        if remaining & Self::RESOLVE_ENABLE_TRANSFER_FUNCTION.0 != 0 {
1662            if !first {
1663                f.write_str(" | ")?;
1664            }
1665            f.write_str("RESOLVE_ENABLE_TRANSFER_FUNCTION")?;
1666            remaining &= !Self::RESOLVE_ENABLE_TRANSFER_FUNCTION.0;
1667            first = false;
1668        }
1669        if remaining != 0u32 {
1670            if !first {
1671                f.write_str(" | ")?;
1672            }
1673            write!(f, "{:#x}", remaining)?;
1674        } else if first {
1675            f.write_str("(empty)")?;
1676        }
1677        Ok(())
1678    }
1679}
1680///[`VkBufferCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCreateFlagBits.html)
1681#[repr(transparent)]
1682#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1683#[doc(alias = "VkBufferCreateFlagBits")]
1684pub struct BufferCreateFlagBits(u32);
1685impl BufferCreateFlagBits {
1686    #[inline]
1687    pub const fn empty() -> Self {
1688        Self(0u32)
1689    }
1690    #[inline]
1691    pub const fn from_raw(value: u32) -> Self {
1692        Self(value)
1693    }
1694    #[inline]
1695    pub const fn as_raw(self) -> u32 {
1696        self.0
1697    }
1698    #[inline]
1699    pub const fn is_empty(self) -> bool {
1700        self.0 == 0u32
1701    }
1702    #[inline]
1703    pub const fn contains(self, other: Self) -> bool {
1704        (self.0 & other.0) == other.0
1705    }
1706    #[inline]
1707    pub const fn all() -> Self {
1708        Self(127u32)
1709    }
1710    ///Bit 0.
1711    pub const SPARSE_BINDING: Self = Self(1u32);
1712    ///Bit 1.
1713    pub const SPARSE_RESIDENCY: Self = Self(2u32);
1714    ///Bit 2.
1715    pub const SPARSE_ALIASED: Self = Self(4u32);
1716    ///Bit 3.
1717    pub const PROTECTED: Self = Self(8u32);
1718    ///Bit 4.
1719    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(16u32);
1720    ///Bit 5.
1721    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY: Self = Self(32u32);
1722    ///Bit 6.
1723    pub const VIDEO_PROFILE_INDEPENDENT: Self = Self(64u32);
1724}
1725impl core::ops::BitOr for BufferCreateFlagBits {
1726    type Output = Self;
1727    #[inline]
1728    fn bitor(self, rhs: Self) -> Self {
1729        Self(self.0 | rhs.0)
1730    }
1731}
1732impl core::ops::BitOrAssign for BufferCreateFlagBits {
1733    #[inline]
1734    fn bitor_assign(&mut self, rhs: Self) {
1735        self.0 |= rhs.0;
1736    }
1737}
1738impl core::ops::BitAnd for BufferCreateFlagBits {
1739    type Output = Self;
1740    #[inline]
1741    fn bitand(self, rhs: Self) -> Self {
1742        Self(self.0 & rhs.0)
1743    }
1744}
1745impl core::ops::BitAndAssign for BufferCreateFlagBits {
1746    #[inline]
1747    fn bitand_assign(&mut self, rhs: Self) {
1748        self.0 &= rhs.0;
1749    }
1750}
1751impl core::ops::BitXor for BufferCreateFlagBits {
1752    type Output = Self;
1753    #[inline]
1754    fn bitxor(self, rhs: Self) -> Self {
1755        Self(self.0 ^ rhs.0)
1756    }
1757}
1758impl core::ops::BitXorAssign for BufferCreateFlagBits {
1759    #[inline]
1760    fn bitxor_assign(&mut self, rhs: Self) {
1761        self.0 ^= rhs.0;
1762    }
1763}
1764impl core::ops::Not for BufferCreateFlagBits {
1765    type Output = Self;
1766    #[inline]
1767    fn not(self) -> Self {
1768        Self(!self.0)
1769    }
1770}
1771impl core::fmt::Debug for BufferCreateFlagBits {
1772    #[allow(unused_mut, unused_variables)]
1773    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1774        let mut first = true;
1775        let mut remaining = self.0;
1776        if remaining & Self::SPARSE_BINDING.0 != 0 {
1777            if !first {
1778                f.write_str(" | ")?;
1779            }
1780            f.write_str("SPARSE_BINDING")?;
1781            remaining &= !Self::SPARSE_BINDING.0;
1782            first = false;
1783        }
1784        if remaining & Self::SPARSE_RESIDENCY.0 != 0 {
1785            if !first {
1786                f.write_str(" | ")?;
1787            }
1788            f.write_str("SPARSE_RESIDENCY")?;
1789            remaining &= !Self::SPARSE_RESIDENCY.0;
1790            first = false;
1791        }
1792        if remaining & Self::SPARSE_ALIASED.0 != 0 {
1793            if !first {
1794                f.write_str(" | ")?;
1795            }
1796            f.write_str("SPARSE_ALIASED")?;
1797            remaining &= !Self::SPARSE_ALIASED.0;
1798            first = false;
1799        }
1800        if remaining & Self::PROTECTED.0 != 0 {
1801            if !first {
1802                f.write_str(" | ")?;
1803            }
1804            f.write_str("PROTECTED")?;
1805            remaining &= !Self::PROTECTED.0;
1806            first = false;
1807        }
1808        if remaining & Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0 != 0 {
1809            if !first {
1810                f.write_str(" | ")?;
1811            }
1812            f.write_str("DEVICE_ADDRESS_CAPTURE_REPLAY")?;
1813            remaining &= !Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0;
1814            first = false;
1815        }
1816        if remaining & Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0 != 0 {
1817            if !first {
1818                f.write_str(" | ")?;
1819            }
1820            f.write_str("DESCRIPTOR_BUFFER_CAPTURE_REPLAY")?;
1821            remaining &= !Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0;
1822            first = false;
1823        }
1824        if remaining & Self::VIDEO_PROFILE_INDEPENDENT.0 != 0 {
1825            if !first {
1826                f.write_str(" | ")?;
1827            }
1828            f.write_str("VIDEO_PROFILE_INDEPENDENT")?;
1829            remaining &= !Self::VIDEO_PROFILE_INDEPENDENT.0;
1830            first = false;
1831        }
1832        if remaining != 0u32 {
1833            if !first {
1834                f.write_str(" | ")?;
1835            }
1836            write!(f, "{:#x}", remaining)?;
1837        } else if first {
1838            f.write_str("(empty)")?;
1839        }
1840        Ok(())
1841    }
1842}
1843///[`VkBufferUsageFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlagBits.html)
1844#[repr(transparent)]
1845#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1846#[doc(alias = "VkBufferUsageFlagBits")]
1847pub struct BufferUsageFlagBits(u32);
1848impl BufferUsageFlagBits {
1849    #[inline]
1850    pub const fn empty() -> Self {
1851        Self(0u32)
1852    }
1853    #[inline]
1854    pub const fn from_raw(value: u32) -> Self {
1855        Self(value)
1856    }
1857    #[inline]
1858    pub const fn as_raw(self) -> u32 {
1859        self.0
1860    }
1861    #[inline]
1862    pub const fn is_empty(self) -> bool {
1863        self.0 == 0u32
1864    }
1865    #[inline]
1866    pub const fn contains(self, other: Self) -> bool {
1867        (self.0 & other.0) == other.0
1868    }
1869    #[inline]
1870    pub const fn all() -> Self {
1871        Self(536608767u32)
1872    }
1873    ///Bit 0.
1874    pub const TRANSFER_SRC: Self = Self(1u32);
1875    ///Bit 1.
1876    pub const TRANSFER_DST: Self = Self(2u32);
1877    ///Bit 2.
1878    pub const UNIFORM_TEXEL_BUFFER: Self = Self(4u32);
1879    ///Bit 3.
1880    pub const STORAGE_TEXEL_BUFFER: Self = Self(8u32);
1881    ///Bit 4.
1882    pub const UNIFORM_BUFFER: Self = Self(16u32);
1883    ///Bit 5.
1884    pub const STORAGE_BUFFER: Self = Self(32u32);
1885    ///Bit 6.
1886    pub const INDEX_BUFFER: Self = Self(64u32);
1887    ///Bit 7.
1888    pub const VERTEX_BUFFER: Self = Self(128u32);
1889    ///Bit 8.
1890    pub const INDIRECT_BUFFER: Self = Self(256u32);
1891    ///Bit 17.
1892    pub const SHADER_DEVICE_ADDRESS: Self = Self(131072u32);
1893    ///Bit 13.
1894    pub const VIDEO_DECODE_SRC: Self = Self(8192u32);
1895    ///Bit 14.
1896    pub const VIDEO_DECODE_DST: Self = Self(16384u32);
1897    ///Bit 11.
1898    pub const TRANSFORM_FEEDBACK_BUFFER: Self = Self(2048u32);
1899    ///Bit 12.
1900    pub const TRANSFORM_FEEDBACK_COUNTER_BUFFER: Self = Self(4096u32);
1901    ///Bit 9.
1902    pub const CONDITIONAL_RENDERING: Self = Self(512u32);
1903    ///Bit 25.
1904    pub const EXECUTION_GRAPH_SCRATCH_BIT: Self = Self(33554432u32);
1905    ///Bit 28.
1906    pub const DESCRIPTOR_HEAP: Self = Self(268435456u32);
1907    ///Bit 19.
1908    pub const ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY: Self = Self(524288u32);
1909    ///Bit 20.
1910    pub const ACCELERATION_STRUCTURE_STORAGE: Self = Self(1048576u32);
1911    ///Bit 10.
1912    pub const SHADER_BINDING_TABLE: Self = Self(1024u32);
1913    pub const RAY_TRACING: Self = Self::SHADER_BINDING_TABLE;
1914    ///Bit 15.
1915    pub const VIDEO_ENCODE_DST: Self = Self(32768u32);
1916    ///Bit 16.
1917    pub const VIDEO_ENCODE_SRC: Self = Self(65536u32);
1918    ///Bit 21.
1919    pub const SAMPLER_DESCRIPTOR_BUFFER: Self = Self(2097152u32);
1920    ///Bit 22.
1921    pub const RESOURCE_DESCRIPTOR_BUFFER: Self = Self(4194304u32);
1922    ///Bit 26.
1923    pub const PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER: Self = Self(67108864u32);
1924    ///Bit 23.
1925    pub const MICROMAP_BUILD_INPUT_READ_ONLY: Self = Self(8388608u32);
1926    ///Bit 24.
1927    pub const MICROMAP_STORAGE: Self = Self(16777216u32);
1928    ///Bit 27.
1929    pub const TILE_MEMORY_BIT: Self = Self(134217728u32);
1930}
1931impl core::ops::BitOr for BufferUsageFlagBits {
1932    type Output = Self;
1933    #[inline]
1934    fn bitor(self, rhs: Self) -> Self {
1935        Self(self.0 | rhs.0)
1936    }
1937}
1938impl core::ops::BitOrAssign for BufferUsageFlagBits {
1939    #[inline]
1940    fn bitor_assign(&mut self, rhs: Self) {
1941        self.0 |= rhs.0;
1942    }
1943}
1944impl core::ops::BitAnd for BufferUsageFlagBits {
1945    type Output = Self;
1946    #[inline]
1947    fn bitand(self, rhs: Self) -> Self {
1948        Self(self.0 & rhs.0)
1949    }
1950}
1951impl core::ops::BitAndAssign for BufferUsageFlagBits {
1952    #[inline]
1953    fn bitand_assign(&mut self, rhs: Self) {
1954        self.0 &= rhs.0;
1955    }
1956}
1957impl core::ops::BitXor for BufferUsageFlagBits {
1958    type Output = Self;
1959    #[inline]
1960    fn bitxor(self, rhs: Self) -> Self {
1961        Self(self.0 ^ rhs.0)
1962    }
1963}
1964impl core::ops::BitXorAssign for BufferUsageFlagBits {
1965    #[inline]
1966    fn bitxor_assign(&mut self, rhs: Self) {
1967        self.0 ^= rhs.0;
1968    }
1969}
1970impl core::ops::Not for BufferUsageFlagBits {
1971    type Output = Self;
1972    #[inline]
1973    fn not(self) -> Self {
1974        Self(!self.0)
1975    }
1976}
1977impl core::fmt::Debug for BufferUsageFlagBits {
1978    #[allow(unused_mut, unused_variables)]
1979    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1980        let mut first = true;
1981        let mut remaining = self.0;
1982        if remaining & Self::TRANSFER_SRC.0 != 0 {
1983            if !first {
1984                f.write_str(" | ")?;
1985            }
1986            f.write_str("TRANSFER_SRC")?;
1987            remaining &= !Self::TRANSFER_SRC.0;
1988            first = false;
1989        }
1990        if remaining & Self::TRANSFER_DST.0 != 0 {
1991            if !first {
1992                f.write_str(" | ")?;
1993            }
1994            f.write_str("TRANSFER_DST")?;
1995            remaining &= !Self::TRANSFER_DST.0;
1996            first = false;
1997        }
1998        if remaining & Self::UNIFORM_TEXEL_BUFFER.0 != 0 {
1999            if !first {
2000                f.write_str(" | ")?;
2001            }
2002            f.write_str("UNIFORM_TEXEL_BUFFER")?;
2003            remaining &= !Self::UNIFORM_TEXEL_BUFFER.0;
2004            first = false;
2005        }
2006        if remaining & Self::STORAGE_TEXEL_BUFFER.0 != 0 {
2007            if !first {
2008                f.write_str(" | ")?;
2009            }
2010            f.write_str("STORAGE_TEXEL_BUFFER")?;
2011            remaining &= !Self::STORAGE_TEXEL_BUFFER.0;
2012            first = false;
2013        }
2014        if remaining & Self::UNIFORM_BUFFER.0 != 0 {
2015            if !first {
2016                f.write_str(" | ")?;
2017            }
2018            f.write_str("UNIFORM_BUFFER")?;
2019            remaining &= !Self::UNIFORM_BUFFER.0;
2020            first = false;
2021        }
2022        if remaining & Self::STORAGE_BUFFER.0 != 0 {
2023            if !first {
2024                f.write_str(" | ")?;
2025            }
2026            f.write_str("STORAGE_BUFFER")?;
2027            remaining &= !Self::STORAGE_BUFFER.0;
2028            first = false;
2029        }
2030        if remaining & Self::INDEX_BUFFER.0 != 0 {
2031            if !first {
2032                f.write_str(" | ")?;
2033            }
2034            f.write_str("INDEX_BUFFER")?;
2035            remaining &= !Self::INDEX_BUFFER.0;
2036            first = false;
2037        }
2038        if remaining & Self::VERTEX_BUFFER.0 != 0 {
2039            if !first {
2040                f.write_str(" | ")?;
2041            }
2042            f.write_str("VERTEX_BUFFER")?;
2043            remaining &= !Self::VERTEX_BUFFER.0;
2044            first = false;
2045        }
2046        if remaining & Self::INDIRECT_BUFFER.0 != 0 {
2047            if !first {
2048                f.write_str(" | ")?;
2049            }
2050            f.write_str("INDIRECT_BUFFER")?;
2051            remaining &= !Self::INDIRECT_BUFFER.0;
2052            first = false;
2053        }
2054        if remaining & Self::SHADER_DEVICE_ADDRESS.0 != 0 {
2055            if !first {
2056                f.write_str(" | ")?;
2057            }
2058            f.write_str("SHADER_DEVICE_ADDRESS")?;
2059            remaining &= !Self::SHADER_DEVICE_ADDRESS.0;
2060            first = false;
2061        }
2062        if remaining & Self::VIDEO_DECODE_SRC.0 != 0 {
2063            if !first {
2064                f.write_str(" | ")?;
2065            }
2066            f.write_str("VIDEO_DECODE_SRC")?;
2067            remaining &= !Self::VIDEO_DECODE_SRC.0;
2068            first = false;
2069        }
2070        if remaining & Self::VIDEO_DECODE_DST.0 != 0 {
2071            if !first {
2072                f.write_str(" | ")?;
2073            }
2074            f.write_str("VIDEO_DECODE_DST")?;
2075            remaining &= !Self::VIDEO_DECODE_DST.0;
2076            first = false;
2077        }
2078        if remaining & Self::TRANSFORM_FEEDBACK_BUFFER.0 != 0 {
2079            if !first {
2080                f.write_str(" | ")?;
2081            }
2082            f.write_str("TRANSFORM_FEEDBACK_BUFFER")?;
2083            remaining &= !Self::TRANSFORM_FEEDBACK_BUFFER.0;
2084            first = false;
2085        }
2086        if remaining & Self::TRANSFORM_FEEDBACK_COUNTER_BUFFER.0 != 0 {
2087            if !first {
2088                f.write_str(" | ")?;
2089            }
2090            f.write_str("TRANSFORM_FEEDBACK_COUNTER_BUFFER")?;
2091            remaining &= !Self::TRANSFORM_FEEDBACK_COUNTER_BUFFER.0;
2092            first = false;
2093        }
2094        if remaining & Self::CONDITIONAL_RENDERING.0 != 0 {
2095            if !first {
2096                f.write_str(" | ")?;
2097            }
2098            f.write_str("CONDITIONAL_RENDERING")?;
2099            remaining &= !Self::CONDITIONAL_RENDERING.0;
2100            first = false;
2101        }
2102        if remaining & Self::EXECUTION_GRAPH_SCRATCH_BIT.0 != 0 {
2103            if !first {
2104                f.write_str(" | ")?;
2105            }
2106            f.write_str("EXECUTION_GRAPH_SCRATCH_BIT")?;
2107            remaining &= !Self::EXECUTION_GRAPH_SCRATCH_BIT.0;
2108            first = false;
2109        }
2110        if remaining & Self::DESCRIPTOR_HEAP.0 != 0 {
2111            if !first {
2112                f.write_str(" | ")?;
2113            }
2114            f.write_str("DESCRIPTOR_HEAP")?;
2115            remaining &= !Self::DESCRIPTOR_HEAP.0;
2116            first = false;
2117        }
2118        if remaining & Self::ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY.0 != 0 {
2119            if !first {
2120                f.write_str(" | ")?;
2121            }
2122            f.write_str("ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY")?;
2123            remaining &= !Self::ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY.0;
2124            first = false;
2125        }
2126        if remaining & Self::ACCELERATION_STRUCTURE_STORAGE.0 != 0 {
2127            if !first {
2128                f.write_str(" | ")?;
2129            }
2130            f.write_str("ACCELERATION_STRUCTURE_STORAGE")?;
2131            remaining &= !Self::ACCELERATION_STRUCTURE_STORAGE.0;
2132            first = false;
2133        }
2134        if remaining & Self::SHADER_BINDING_TABLE.0 != 0 {
2135            if !first {
2136                f.write_str(" | ")?;
2137            }
2138            f.write_str("SHADER_BINDING_TABLE")?;
2139            remaining &= !Self::SHADER_BINDING_TABLE.0;
2140            first = false;
2141        }
2142        if remaining & Self::VIDEO_ENCODE_DST.0 != 0 {
2143            if !first {
2144                f.write_str(" | ")?;
2145            }
2146            f.write_str("VIDEO_ENCODE_DST")?;
2147            remaining &= !Self::VIDEO_ENCODE_DST.0;
2148            first = false;
2149        }
2150        if remaining & Self::VIDEO_ENCODE_SRC.0 != 0 {
2151            if !first {
2152                f.write_str(" | ")?;
2153            }
2154            f.write_str("VIDEO_ENCODE_SRC")?;
2155            remaining &= !Self::VIDEO_ENCODE_SRC.0;
2156            first = false;
2157        }
2158        if remaining & Self::SAMPLER_DESCRIPTOR_BUFFER.0 != 0 {
2159            if !first {
2160                f.write_str(" | ")?;
2161            }
2162            f.write_str("SAMPLER_DESCRIPTOR_BUFFER")?;
2163            remaining &= !Self::SAMPLER_DESCRIPTOR_BUFFER.0;
2164            first = false;
2165        }
2166        if remaining & Self::RESOURCE_DESCRIPTOR_BUFFER.0 != 0 {
2167            if !first {
2168                f.write_str(" | ")?;
2169            }
2170            f.write_str("RESOURCE_DESCRIPTOR_BUFFER")?;
2171            remaining &= !Self::RESOURCE_DESCRIPTOR_BUFFER.0;
2172            first = false;
2173        }
2174        if remaining & Self::PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER.0 != 0 {
2175            if !first {
2176                f.write_str(" | ")?;
2177            }
2178            f.write_str("PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER")?;
2179            remaining &= !Self::PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER.0;
2180            first = false;
2181        }
2182        if remaining & Self::MICROMAP_BUILD_INPUT_READ_ONLY.0 != 0 {
2183            if !first {
2184                f.write_str(" | ")?;
2185            }
2186            f.write_str("MICROMAP_BUILD_INPUT_READ_ONLY")?;
2187            remaining &= !Self::MICROMAP_BUILD_INPUT_READ_ONLY.0;
2188            first = false;
2189        }
2190        if remaining & Self::MICROMAP_STORAGE.0 != 0 {
2191            if !first {
2192                f.write_str(" | ")?;
2193            }
2194            f.write_str("MICROMAP_STORAGE")?;
2195            remaining &= !Self::MICROMAP_STORAGE.0;
2196            first = false;
2197        }
2198        if remaining & Self::TILE_MEMORY_BIT.0 != 0 {
2199            if !first {
2200                f.write_str(" | ")?;
2201            }
2202            f.write_str("TILE_MEMORY_BIT")?;
2203            remaining &= !Self::TILE_MEMORY_BIT.0;
2204            first = false;
2205        }
2206        if remaining != 0u32 {
2207            if !first {
2208                f.write_str(" | ")?;
2209            }
2210            write!(f, "{:#x}", remaining)?;
2211        } else if first {
2212            f.write_str("(empty)")?;
2213        }
2214        Ok(())
2215    }
2216}
2217///[`VkBufferUsageFlagBits2`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlagBits2.html)
2218#[repr(transparent)]
2219#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2220#[doc(alias = "VkBufferUsageFlagBits2")]
2221pub struct BufferUsageFlagBits2(u64);
2222impl BufferUsageFlagBits2 {
2223    #[inline]
2224    pub const fn empty() -> Self {
2225        Self(0u64)
2226    }
2227    #[inline]
2228    pub const fn from_raw(value: u64) -> Self {
2229        Self(value)
2230    }
2231    #[inline]
2232    pub const fn as_raw(self) -> u64 {
2233        self.0
2234    }
2235    #[inline]
2236    pub const fn is_empty(self) -> bool {
2237        self.0 == 0u64
2238    }
2239    #[inline]
2240    pub const fn contains(self, other: Self) -> bool {
2241        (self.0 & other.0) == other.0
2242    }
2243    #[inline]
2244    pub const fn all() -> Self {
2245        Self(16105865215u64)
2246    }
2247    ///Bit 0.
2248    pub const _2_TRANSFER_SRC: Self = Self(1u64);
2249    ///Bit 1.
2250    pub const _2_TRANSFER_DST: Self = Self(2u64);
2251    ///Bit 2.
2252    pub const _2_UNIFORM_TEXEL_BUFFER: Self = Self(4u64);
2253    ///Bit 3.
2254    pub const _2_STORAGE_TEXEL_BUFFER: Self = Self(8u64);
2255    ///Bit 4.
2256    pub const _2_UNIFORM_BUFFER: Self = Self(16u64);
2257    ///Bit 5.
2258    pub const _2_STORAGE_BUFFER: Self = Self(32u64);
2259    ///Bit 6.
2260    pub const _2_INDEX_BUFFER: Self = Self(64u64);
2261    ///Bit 7.
2262    pub const _2_VERTEX_BUFFER: Self = Self(128u64);
2263    ///Bit 8.
2264    pub const _2_INDIRECT_BUFFER: Self = Self(256u64);
2265    ///Bit 17.
2266    pub const _2_SHADER_DEVICE_ADDRESS: Self = Self(131072u64);
2267    ///Bit 25.
2268    pub const _2_EXECUTION_GRAPH_SCRATCH_BIT: Self = Self(33554432u64);
2269    ///Bit 28.
2270    pub const _2_DESCRIPTOR_HEAP: Self = Self(268435456u64);
2271    ///Bit 9.
2272    pub const _2_CONDITIONAL_RENDERING: Self = Self(512u64);
2273    ///Bit 10.
2274    pub const _2_SHADER_BINDING_TABLE: Self = Self(1024u64);
2275    pub const _2_RAY_TRACING: Self = Self::_2_SHADER_BINDING_TABLE;
2276    ///Bit 11.
2277    pub const _2_TRANSFORM_FEEDBACK_BUFFER: Self = Self(2048u64);
2278    ///Bit 12.
2279    pub const _2_TRANSFORM_FEEDBACK_COUNTER_BUFFER: Self = Self(4096u64);
2280    ///Bit 13.
2281    pub const _2_VIDEO_DECODE_SRC: Self = Self(8192u64);
2282    ///Bit 14.
2283    pub const _2_VIDEO_DECODE_DST: Self = Self(16384u64);
2284    ///Bit 15.
2285    pub const _2_VIDEO_ENCODE_DST: Self = Self(32768u64);
2286    ///Bit 16.
2287    pub const _2_VIDEO_ENCODE_SRC: Self = Self(65536u64);
2288    ///Bit 19.
2289    pub const _2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY: Self = Self(524288u64);
2290    ///Bit 20.
2291    pub const _2_ACCELERATION_STRUCTURE_STORAGE: Self = Self(1048576u64);
2292    ///Bit 21.
2293    pub const _2_SAMPLER_DESCRIPTOR_BUFFER: Self = Self(2097152u64);
2294    ///Bit 22.
2295    pub const _2_RESOURCE_DESCRIPTOR_BUFFER: Self = Self(4194304u64);
2296    ///Bit 26.
2297    pub const _2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER: Self = Self(67108864u64);
2298    ///Bit 23.
2299    pub const _2_MICROMAP_BUILD_INPUT_READ_ONLY: Self = Self(8388608u64);
2300    ///Bit 24.
2301    pub const _2_MICROMAP_STORAGE: Self = Self(16777216u64);
2302    ///Bit 33.
2303    pub const _2_COMPRESSED_DATA_DGF1_BIT: Self = Self(8589934592u64);
2304    ///Bit 29.
2305    pub const _2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT: Self = Self(536870912u64);
2306    ///Bit 27.
2307    pub const _2_TILE_MEMORY_BIT: Self = Self(134217728u64);
2308    ///Bit 32.
2309    pub const _2_MEMORY_DECOMPRESSION: Self = Self(4294967296u64);
2310    ///Bit 31.
2311    pub const _2_PREPROCESS_BUFFER: Self = Self(2147483648u64);
2312}
2313impl core::ops::BitOr for BufferUsageFlagBits2 {
2314    type Output = Self;
2315    #[inline]
2316    fn bitor(self, rhs: Self) -> Self {
2317        Self(self.0 | rhs.0)
2318    }
2319}
2320impl core::ops::BitOrAssign for BufferUsageFlagBits2 {
2321    #[inline]
2322    fn bitor_assign(&mut self, rhs: Self) {
2323        self.0 |= rhs.0;
2324    }
2325}
2326impl core::ops::BitAnd for BufferUsageFlagBits2 {
2327    type Output = Self;
2328    #[inline]
2329    fn bitand(self, rhs: Self) -> Self {
2330        Self(self.0 & rhs.0)
2331    }
2332}
2333impl core::ops::BitAndAssign for BufferUsageFlagBits2 {
2334    #[inline]
2335    fn bitand_assign(&mut self, rhs: Self) {
2336        self.0 &= rhs.0;
2337    }
2338}
2339impl core::ops::BitXor for BufferUsageFlagBits2 {
2340    type Output = Self;
2341    #[inline]
2342    fn bitxor(self, rhs: Self) -> Self {
2343        Self(self.0 ^ rhs.0)
2344    }
2345}
2346impl core::ops::BitXorAssign for BufferUsageFlagBits2 {
2347    #[inline]
2348    fn bitxor_assign(&mut self, rhs: Self) {
2349        self.0 ^= rhs.0;
2350    }
2351}
2352impl core::ops::Not for BufferUsageFlagBits2 {
2353    type Output = Self;
2354    #[inline]
2355    fn not(self) -> Self {
2356        Self(!self.0)
2357    }
2358}
2359impl core::fmt::Debug for BufferUsageFlagBits2 {
2360    #[allow(unused_mut, unused_variables)]
2361    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2362        let mut first = true;
2363        let mut remaining = self.0;
2364        if remaining & Self::_2_TRANSFER_SRC.0 != 0 {
2365            if !first {
2366                f.write_str(" | ")?;
2367            }
2368            f.write_str("_2_TRANSFER_SRC")?;
2369            remaining &= !Self::_2_TRANSFER_SRC.0;
2370            first = false;
2371        }
2372        if remaining & Self::_2_TRANSFER_DST.0 != 0 {
2373            if !first {
2374                f.write_str(" | ")?;
2375            }
2376            f.write_str("_2_TRANSFER_DST")?;
2377            remaining &= !Self::_2_TRANSFER_DST.0;
2378            first = false;
2379        }
2380        if remaining & Self::_2_UNIFORM_TEXEL_BUFFER.0 != 0 {
2381            if !first {
2382                f.write_str(" | ")?;
2383            }
2384            f.write_str("_2_UNIFORM_TEXEL_BUFFER")?;
2385            remaining &= !Self::_2_UNIFORM_TEXEL_BUFFER.0;
2386            first = false;
2387        }
2388        if remaining & Self::_2_STORAGE_TEXEL_BUFFER.0 != 0 {
2389            if !first {
2390                f.write_str(" | ")?;
2391            }
2392            f.write_str("_2_STORAGE_TEXEL_BUFFER")?;
2393            remaining &= !Self::_2_STORAGE_TEXEL_BUFFER.0;
2394            first = false;
2395        }
2396        if remaining & Self::_2_UNIFORM_BUFFER.0 != 0 {
2397            if !first {
2398                f.write_str(" | ")?;
2399            }
2400            f.write_str("_2_UNIFORM_BUFFER")?;
2401            remaining &= !Self::_2_UNIFORM_BUFFER.0;
2402            first = false;
2403        }
2404        if remaining & Self::_2_STORAGE_BUFFER.0 != 0 {
2405            if !first {
2406                f.write_str(" | ")?;
2407            }
2408            f.write_str("_2_STORAGE_BUFFER")?;
2409            remaining &= !Self::_2_STORAGE_BUFFER.0;
2410            first = false;
2411        }
2412        if remaining & Self::_2_INDEX_BUFFER.0 != 0 {
2413            if !first {
2414                f.write_str(" | ")?;
2415            }
2416            f.write_str("_2_INDEX_BUFFER")?;
2417            remaining &= !Self::_2_INDEX_BUFFER.0;
2418            first = false;
2419        }
2420        if remaining & Self::_2_VERTEX_BUFFER.0 != 0 {
2421            if !first {
2422                f.write_str(" | ")?;
2423            }
2424            f.write_str("_2_VERTEX_BUFFER")?;
2425            remaining &= !Self::_2_VERTEX_BUFFER.0;
2426            first = false;
2427        }
2428        if remaining & Self::_2_INDIRECT_BUFFER.0 != 0 {
2429            if !first {
2430                f.write_str(" | ")?;
2431            }
2432            f.write_str("_2_INDIRECT_BUFFER")?;
2433            remaining &= !Self::_2_INDIRECT_BUFFER.0;
2434            first = false;
2435        }
2436        if remaining & Self::_2_SHADER_DEVICE_ADDRESS.0 != 0 {
2437            if !first {
2438                f.write_str(" | ")?;
2439            }
2440            f.write_str("_2_SHADER_DEVICE_ADDRESS")?;
2441            remaining &= !Self::_2_SHADER_DEVICE_ADDRESS.0;
2442            first = false;
2443        }
2444        if remaining & Self::_2_EXECUTION_GRAPH_SCRATCH_BIT.0 != 0 {
2445            if !first {
2446                f.write_str(" | ")?;
2447            }
2448            f.write_str("_2_EXECUTION_GRAPH_SCRATCH_BIT")?;
2449            remaining &= !Self::_2_EXECUTION_GRAPH_SCRATCH_BIT.0;
2450            first = false;
2451        }
2452        if remaining & Self::_2_DESCRIPTOR_HEAP.0 != 0 {
2453            if !first {
2454                f.write_str(" | ")?;
2455            }
2456            f.write_str("_2_DESCRIPTOR_HEAP")?;
2457            remaining &= !Self::_2_DESCRIPTOR_HEAP.0;
2458            first = false;
2459        }
2460        if remaining & Self::_2_CONDITIONAL_RENDERING.0 != 0 {
2461            if !first {
2462                f.write_str(" | ")?;
2463            }
2464            f.write_str("_2_CONDITIONAL_RENDERING")?;
2465            remaining &= !Self::_2_CONDITIONAL_RENDERING.0;
2466            first = false;
2467        }
2468        if remaining & Self::_2_SHADER_BINDING_TABLE.0 != 0 {
2469            if !first {
2470                f.write_str(" | ")?;
2471            }
2472            f.write_str("_2_SHADER_BINDING_TABLE")?;
2473            remaining &= !Self::_2_SHADER_BINDING_TABLE.0;
2474            first = false;
2475        }
2476        if remaining & Self::_2_TRANSFORM_FEEDBACK_BUFFER.0 != 0 {
2477            if !first {
2478                f.write_str(" | ")?;
2479            }
2480            f.write_str("_2_TRANSFORM_FEEDBACK_BUFFER")?;
2481            remaining &= !Self::_2_TRANSFORM_FEEDBACK_BUFFER.0;
2482            first = false;
2483        }
2484        if remaining & Self::_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER.0 != 0 {
2485            if !first {
2486                f.write_str(" | ")?;
2487            }
2488            f.write_str("_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER")?;
2489            remaining &= !Self::_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER.0;
2490            first = false;
2491        }
2492        if remaining & Self::_2_VIDEO_DECODE_SRC.0 != 0 {
2493            if !first {
2494                f.write_str(" | ")?;
2495            }
2496            f.write_str("_2_VIDEO_DECODE_SRC")?;
2497            remaining &= !Self::_2_VIDEO_DECODE_SRC.0;
2498            first = false;
2499        }
2500        if remaining & Self::_2_VIDEO_DECODE_DST.0 != 0 {
2501            if !first {
2502                f.write_str(" | ")?;
2503            }
2504            f.write_str("_2_VIDEO_DECODE_DST")?;
2505            remaining &= !Self::_2_VIDEO_DECODE_DST.0;
2506            first = false;
2507        }
2508        if remaining & Self::_2_VIDEO_ENCODE_DST.0 != 0 {
2509            if !first {
2510                f.write_str(" | ")?;
2511            }
2512            f.write_str("_2_VIDEO_ENCODE_DST")?;
2513            remaining &= !Self::_2_VIDEO_ENCODE_DST.0;
2514            first = false;
2515        }
2516        if remaining & Self::_2_VIDEO_ENCODE_SRC.0 != 0 {
2517            if !first {
2518                f.write_str(" | ")?;
2519            }
2520            f.write_str("_2_VIDEO_ENCODE_SRC")?;
2521            remaining &= !Self::_2_VIDEO_ENCODE_SRC.0;
2522            first = false;
2523        }
2524        if remaining & Self::_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY.0 != 0 {
2525            if !first {
2526                f.write_str(" | ")?;
2527            }
2528            f.write_str("_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY")?;
2529            remaining &= !Self::_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY.0;
2530            first = false;
2531        }
2532        if remaining & Self::_2_ACCELERATION_STRUCTURE_STORAGE.0 != 0 {
2533            if !first {
2534                f.write_str(" | ")?;
2535            }
2536            f.write_str("_2_ACCELERATION_STRUCTURE_STORAGE")?;
2537            remaining &= !Self::_2_ACCELERATION_STRUCTURE_STORAGE.0;
2538            first = false;
2539        }
2540        if remaining & Self::_2_SAMPLER_DESCRIPTOR_BUFFER.0 != 0 {
2541            if !first {
2542                f.write_str(" | ")?;
2543            }
2544            f.write_str("_2_SAMPLER_DESCRIPTOR_BUFFER")?;
2545            remaining &= !Self::_2_SAMPLER_DESCRIPTOR_BUFFER.0;
2546            first = false;
2547        }
2548        if remaining & Self::_2_RESOURCE_DESCRIPTOR_BUFFER.0 != 0 {
2549            if !first {
2550                f.write_str(" | ")?;
2551            }
2552            f.write_str("_2_RESOURCE_DESCRIPTOR_BUFFER")?;
2553            remaining &= !Self::_2_RESOURCE_DESCRIPTOR_BUFFER.0;
2554            first = false;
2555        }
2556        if remaining & Self::_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER.0 != 0 {
2557            if !first {
2558                f.write_str(" | ")?;
2559            }
2560            f.write_str("_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER")?;
2561            remaining &= !Self::_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER.0;
2562            first = false;
2563        }
2564        if remaining & Self::_2_MICROMAP_BUILD_INPUT_READ_ONLY.0 != 0 {
2565            if !first {
2566                f.write_str(" | ")?;
2567            }
2568            f.write_str("_2_MICROMAP_BUILD_INPUT_READ_ONLY")?;
2569            remaining &= !Self::_2_MICROMAP_BUILD_INPUT_READ_ONLY.0;
2570            first = false;
2571        }
2572        if remaining & Self::_2_MICROMAP_STORAGE.0 != 0 {
2573            if !first {
2574                f.write_str(" | ")?;
2575            }
2576            f.write_str("_2_MICROMAP_STORAGE")?;
2577            remaining &= !Self::_2_MICROMAP_STORAGE.0;
2578            first = false;
2579        }
2580        if remaining & Self::_2_COMPRESSED_DATA_DGF1_BIT.0 != 0 {
2581            if !first {
2582                f.write_str(" | ")?;
2583            }
2584            f.write_str("_2_COMPRESSED_DATA_DGF1_BIT")?;
2585            remaining &= !Self::_2_COMPRESSED_DATA_DGF1_BIT.0;
2586            first = false;
2587        }
2588        if remaining & Self::_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT.0 != 0 {
2589            if !first {
2590                f.write_str(" | ")?;
2591            }
2592            f.write_str("_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT")?;
2593            remaining &= !Self::_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT.0;
2594            first = false;
2595        }
2596        if remaining & Self::_2_TILE_MEMORY_BIT.0 != 0 {
2597            if !first {
2598                f.write_str(" | ")?;
2599            }
2600            f.write_str("_2_TILE_MEMORY_BIT")?;
2601            remaining &= !Self::_2_TILE_MEMORY_BIT.0;
2602            first = false;
2603        }
2604        if remaining & Self::_2_MEMORY_DECOMPRESSION.0 != 0 {
2605            if !first {
2606                f.write_str(" | ")?;
2607            }
2608            f.write_str("_2_MEMORY_DECOMPRESSION")?;
2609            remaining &= !Self::_2_MEMORY_DECOMPRESSION.0;
2610            first = false;
2611        }
2612        if remaining & Self::_2_PREPROCESS_BUFFER.0 != 0 {
2613            if !first {
2614                f.write_str(" | ")?;
2615            }
2616            f.write_str("_2_PREPROCESS_BUFFER")?;
2617            remaining &= !Self::_2_PREPROCESS_BUFFER.0;
2618            first = false;
2619        }
2620        if remaining != 0u64 {
2621            if !first {
2622                f.write_str(" | ")?;
2623            }
2624            write!(f, "{:#x}", remaining)?;
2625        } else if first {
2626            f.write_str("(empty)")?;
2627        }
2628        Ok(())
2629    }
2630}
2631///[`VkBuildAccelerationStructureFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildAccelerationStructureFlagBitsKHR.html)
2632#[repr(transparent)]
2633#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2634#[doc(alias = "VkBuildAccelerationStructureFlagBitsKHR")]
2635pub struct BuildAccelerationStructureFlagBitsKHR(u32);
2636impl BuildAccelerationStructureFlagBitsKHR {
2637    #[inline]
2638    pub const fn empty() -> Self {
2639        Self(0u32)
2640    }
2641    #[inline]
2642    pub const fn from_raw(value: u32) -> Self {
2643        Self(value)
2644    }
2645    #[inline]
2646    pub const fn as_raw(self) -> u32 {
2647        self.0
2648    }
2649    #[inline]
2650    pub const fn is_empty(self) -> bool {
2651        self.0 == 0u32
2652    }
2653    #[inline]
2654    pub const fn contains(self, other: Self) -> bool {
2655        (self.0 & other.0) == other.0
2656    }
2657    #[inline]
2658    pub const fn all() -> Self {
2659        Self(7167u32)
2660    }
2661    ///Bit 0.
2662    pub const ALLOW_UPDATE: Self = Self(1u32);
2663    ///Bit 1.
2664    pub const ALLOW_COMPACTION: Self = Self(2u32);
2665    ///Bit 2.
2666    pub const PREFER_FAST_TRACE: Self = Self(4u32);
2667    ///Bit 3.
2668    pub const PREFER_FAST_BUILD: Self = Self(8u32);
2669    ///Bit 4.
2670    pub const LOW_MEMORY: Self = Self(16u32);
2671    ///Bit 5.
2672    pub const MOTION: Self = Self(32u32);
2673    ///Bit 6.
2674    pub const ALLOW_OPACITY_MICROMAP_UPDATE: Self = Self(64u32);
2675    ///Bit 7.
2676    pub const ALLOW_DISABLE_OPACITY_MICROMAPS: Self = Self(128u32);
2677    ///Bit 8.
2678    pub const ALLOW_OPACITY_MICROMAP_DATA_UPDATE: Self = Self(256u32);
2679    ///Bit 9.
2680    pub const ALLOW_DISPLACEMENT_MICROMAP_UPDATE: Self = Self(512u32);
2681    ///Bit 11.
2682    pub const ALLOW_DATA_ACCESS: Self = Self(2048u32);
2683    ///Bit 12.
2684    pub const ALLOW_CLUSTER_OPACITY_MICROMAPS: Self = Self(4096u32);
2685}
2686impl core::ops::BitOr for BuildAccelerationStructureFlagBitsKHR {
2687    type Output = Self;
2688    #[inline]
2689    fn bitor(self, rhs: Self) -> Self {
2690        Self(self.0 | rhs.0)
2691    }
2692}
2693impl core::ops::BitOrAssign for BuildAccelerationStructureFlagBitsKHR {
2694    #[inline]
2695    fn bitor_assign(&mut self, rhs: Self) {
2696        self.0 |= rhs.0;
2697    }
2698}
2699impl core::ops::BitAnd for BuildAccelerationStructureFlagBitsKHR {
2700    type Output = Self;
2701    #[inline]
2702    fn bitand(self, rhs: Self) -> Self {
2703        Self(self.0 & rhs.0)
2704    }
2705}
2706impl core::ops::BitAndAssign for BuildAccelerationStructureFlagBitsKHR {
2707    #[inline]
2708    fn bitand_assign(&mut self, rhs: Self) {
2709        self.0 &= rhs.0;
2710    }
2711}
2712impl core::ops::BitXor for BuildAccelerationStructureFlagBitsKHR {
2713    type Output = Self;
2714    #[inline]
2715    fn bitxor(self, rhs: Self) -> Self {
2716        Self(self.0 ^ rhs.0)
2717    }
2718}
2719impl core::ops::BitXorAssign for BuildAccelerationStructureFlagBitsKHR {
2720    #[inline]
2721    fn bitxor_assign(&mut self, rhs: Self) {
2722        self.0 ^= rhs.0;
2723    }
2724}
2725impl core::ops::Not for BuildAccelerationStructureFlagBitsKHR {
2726    type Output = Self;
2727    #[inline]
2728    fn not(self) -> Self {
2729        Self(!self.0)
2730    }
2731}
2732impl core::fmt::Debug for BuildAccelerationStructureFlagBitsKHR {
2733    #[allow(unused_mut, unused_variables)]
2734    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2735        let mut first = true;
2736        let mut remaining = self.0;
2737        if remaining & Self::ALLOW_UPDATE.0 != 0 {
2738            if !first {
2739                f.write_str(" | ")?;
2740            }
2741            f.write_str("ALLOW_UPDATE")?;
2742            remaining &= !Self::ALLOW_UPDATE.0;
2743            first = false;
2744        }
2745        if remaining & Self::ALLOW_COMPACTION.0 != 0 {
2746            if !first {
2747                f.write_str(" | ")?;
2748            }
2749            f.write_str("ALLOW_COMPACTION")?;
2750            remaining &= !Self::ALLOW_COMPACTION.0;
2751            first = false;
2752        }
2753        if remaining & Self::PREFER_FAST_TRACE.0 != 0 {
2754            if !first {
2755                f.write_str(" | ")?;
2756            }
2757            f.write_str("PREFER_FAST_TRACE")?;
2758            remaining &= !Self::PREFER_FAST_TRACE.0;
2759            first = false;
2760        }
2761        if remaining & Self::PREFER_FAST_BUILD.0 != 0 {
2762            if !first {
2763                f.write_str(" | ")?;
2764            }
2765            f.write_str("PREFER_FAST_BUILD")?;
2766            remaining &= !Self::PREFER_FAST_BUILD.0;
2767            first = false;
2768        }
2769        if remaining & Self::LOW_MEMORY.0 != 0 {
2770            if !first {
2771                f.write_str(" | ")?;
2772            }
2773            f.write_str("LOW_MEMORY")?;
2774            remaining &= !Self::LOW_MEMORY.0;
2775            first = false;
2776        }
2777        if remaining & Self::MOTION.0 != 0 {
2778            if !first {
2779                f.write_str(" | ")?;
2780            }
2781            f.write_str("MOTION")?;
2782            remaining &= !Self::MOTION.0;
2783            first = false;
2784        }
2785        if remaining & Self::ALLOW_OPACITY_MICROMAP_UPDATE.0 != 0 {
2786            if !first {
2787                f.write_str(" | ")?;
2788            }
2789            f.write_str("ALLOW_OPACITY_MICROMAP_UPDATE")?;
2790            remaining &= !Self::ALLOW_OPACITY_MICROMAP_UPDATE.0;
2791            first = false;
2792        }
2793        if remaining & Self::ALLOW_DISABLE_OPACITY_MICROMAPS.0 != 0 {
2794            if !first {
2795                f.write_str(" | ")?;
2796            }
2797            f.write_str("ALLOW_DISABLE_OPACITY_MICROMAPS")?;
2798            remaining &= !Self::ALLOW_DISABLE_OPACITY_MICROMAPS.0;
2799            first = false;
2800        }
2801        if remaining & Self::ALLOW_OPACITY_MICROMAP_DATA_UPDATE.0 != 0 {
2802            if !first {
2803                f.write_str(" | ")?;
2804            }
2805            f.write_str("ALLOW_OPACITY_MICROMAP_DATA_UPDATE")?;
2806            remaining &= !Self::ALLOW_OPACITY_MICROMAP_DATA_UPDATE.0;
2807            first = false;
2808        }
2809        if remaining & Self::ALLOW_DISPLACEMENT_MICROMAP_UPDATE.0 != 0 {
2810            if !first {
2811                f.write_str(" | ")?;
2812            }
2813            f.write_str("ALLOW_DISPLACEMENT_MICROMAP_UPDATE")?;
2814            remaining &= !Self::ALLOW_DISPLACEMENT_MICROMAP_UPDATE.0;
2815            first = false;
2816        }
2817        if remaining & Self::ALLOW_DATA_ACCESS.0 != 0 {
2818            if !first {
2819                f.write_str(" | ")?;
2820            }
2821            f.write_str("ALLOW_DATA_ACCESS")?;
2822            remaining &= !Self::ALLOW_DATA_ACCESS.0;
2823            first = false;
2824        }
2825        if remaining & Self::ALLOW_CLUSTER_OPACITY_MICROMAPS.0 != 0 {
2826            if !first {
2827                f.write_str(" | ")?;
2828            }
2829            f.write_str("ALLOW_CLUSTER_OPACITY_MICROMAPS")?;
2830            remaining &= !Self::ALLOW_CLUSTER_OPACITY_MICROMAPS.0;
2831            first = false;
2832        }
2833        if remaining != 0u32 {
2834            if !first {
2835                f.write_str(" | ")?;
2836            }
2837            write!(f, "{:#x}", remaining)?;
2838        } else if first {
2839            f.write_str("(empty)")?;
2840        }
2841        Ok(())
2842    }
2843}
2844///[`VkBuildMicromapFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildMicromapFlagBitsEXT.html)
2845#[repr(transparent)]
2846#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2847#[doc(alias = "VkBuildMicromapFlagBitsEXT")]
2848pub struct BuildMicromapFlagBitsEXT(u32);
2849impl BuildMicromapFlagBitsEXT {
2850    #[inline]
2851    pub const fn empty() -> Self {
2852        Self(0u32)
2853    }
2854    #[inline]
2855    pub const fn from_raw(value: u32) -> Self {
2856        Self(value)
2857    }
2858    #[inline]
2859    pub const fn as_raw(self) -> u32 {
2860        self.0
2861    }
2862    #[inline]
2863    pub const fn is_empty(self) -> bool {
2864        self.0 == 0u32
2865    }
2866    #[inline]
2867    pub const fn contains(self, other: Self) -> bool {
2868        (self.0 & other.0) == other.0
2869    }
2870    #[inline]
2871    pub const fn all() -> Self {
2872        Self(7u32)
2873    }
2874    ///Bit 0.
2875    pub const PREFER_FAST_TRACE: Self = Self(1u32);
2876    ///Bit 1.
2877    pub const PREFER_FAST_BUILD: Self = Self(2u32);
2878    ///Bit 2.
2879    pub const ALLOW_COMPACTION: Self = Self(4u32);
2880}
2881impl core::ops::BitOr for BuildMicromapFlagBitsEXT {
2882    type Output = Self;
2883    #[inline]
2884    fn bitor(self, rhs: Self) -> Self {
2885        Self(self.0 | rhs.0)
2886    }
2887}
2888impl core::ops::BitOrAssign for BuildMicromapFlagBitsEXT {
2889    #[inline]
2890    fn bitor_assign(&mut self, rhs: Self) {
2891        self.0 |= rhs.0;
2892    }
2893}
2894impl core::ops::BitAnd for BuildMicromapFlagBitsEXT {
2895    type Output = Self;
2896    #[inline]
2897    fn bitand(self, rhs: Self) -> Self {
2898        Self(self.0 & rhs.0)
2899    }
2900}
2901impl core::ops::BitAndAssign for BuildMicromapFlagBitsEXT {
2902    #[inline]
2903    fn bitand_assign(&mut self, rhs: Self) {
2904        self.0 &= rhs.0;
2905    }
2906}
2907impl core::ops::BitXor for BuildMicromapFlagBitsEXT {
2908    type Output = Self;
2909    #[inline]
2910    fn bitxor(self, rhs: Self) -> Self {
2911        Self(self.0 ^ rhs.0)
2912    }
2913}
2914impl core::ops::BitXorAssign for BuildMicromapFlagBitsEXT {
2915    #[inline]
2916    fn bitxor_assign(&mut self, rhs: Self) {
2917        self.0 ^= rhs.0;
2918    }
2919}
2920impl core::ops::Not for BuildMicromapFlagBitsEXT {
2921    type Output = Self;
2922    #[inline]
2923    fn not(self) -> Self {
2924        Self(!self.0)
2925    }
2926}
2927impl core::fmt::Debug for BuildMicromapFlagBitsEXT {
2928    #[allow(unused_mut, unused_variables)]
2929    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2930        let mut first = true;
2931        let mut remaining = self.0;
2932        if remaining & Self::PREFER_FAST_TRACE.0 != 0 {
2933            if !first {
2934                f.write_str(" | ")?;
2935            }
2936            f.write_str("PREFER_FAST_TRACE")?;
2937            remaining &= !Self::PREFER_FAST_TRACE.0;
2938            first = false;
2939        }
2940        if remaining & Self::PREFER_FAST_BUILD.0 != 0 {
2941            if !first {
2942                f.write_str(" | ")?;
2943            }
2944            f.write_str("PREFER_FAST_BUILD")?;
2945            remaining &= !Self::PREFER_FAST_BUILD.0;
2946            first = false;
2947        }
2948        if remaining & Self::ALLOW_COMPACTION.0 != 0 {
2949            if !first {
2950                f.write_str(" | ")?;
2951            }
2952            f.write_str("ALLOW_COMPACTION")?;
2953            remaining &= !Self::ALLOW_COMPACTION.0;
2954            first = false;
2955        }
2956        if remaining != 0u32 {
2957            if !first {
2958                f.write_str(" | ")?;
2959            }
2960            write!(f, "{:#x}", remaining)?;
2961        } else if first {
2962            f.write_str("(empty)")?;
2963        }
2964        Ok(())
2965    }
2966}
2967///[`VkClusterAccelerationStructureAddressResolutionFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureAddressResolutionFlagBitsNV.html)
2968#[repr(transparent)]
2969#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2970#[doc(alias = "VkClusterAccelerationStructureAddressResolutionFlagBitsNV")]
2971pub struct ClusterAccelerationStructureAddressResolutionFlagBitsNV(u32);
2972impl ClusterAccelerationStructureAddressResolutionFlagBitsNV {
2973    #[inline]
2974    pub const fn empty() -> Self {
2975        Self(0u32)
2976    }
2977    #[inline]
2978    pub const fn from_raw(value: u32) -> Self {
2979        Self(value)
2980    }
2981    #[inline]
2982    pub const fn as_raw(self) -> u32 {
2983        self.0
2984    }
2985    #[inline]
2986    pub const fn is_empty(self) -> bool {
2987        self.0 == 0u32
2988    }
2989    #[inline]
2990    pub const fn contains(self, other: Self) -> bool {
2991        (self.0 & other.0) == other.0
2992    }
2993    #[inline]
2994    pub const fn all() -> Self {
2995        Self(63u32)
2996    }
2997    pub const NONE: Self = Self(0u32);
2998    ///Bit 0.
2999    pub const INDIRECTED_DST_IMPLICIT_DATA: Self = Self(1u32);
3000    ///Bit 1.
3001    pub const INDIRECTED_SCRATCH_DATA: Self = Self(2u32);
3002    ///Bit 2.
3003    pub const INDIRECTED_DST_ADDRESS_ARRAY: Self = Self(4u32);
3004    ///Bit 3.
3005    pub const INDIRECTED_DST_SIZES_ARRAY: Self = Self(8u32);
3006    ///Bit 4.
3007    pub const INDIRECTED_SRC_INFOS_ARRAY: Self = Self(16u32);
3008    ///Bit 5.
3009    pub const INDIRECTED_SRC_INFOS_COUNT: Self = Self(32u32);
3010}
3011impl core::ops::BitOr for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3012    type Output = Self;
3013    #[inline]
3014    fn bitor(self, rhs: Self) -> Self {
3015        Self(self.0 | rhs.0)
3016    }
3017}
3018impl core::ops::BitOrAssign for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3019    #[inline]
3020    fn bitor_assign(&mut self, rhs: Self) {
3021        self.0 |= rhs.0;
3022    }
3023}
3024impl core::ops::BitAnd for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3025    type Output = Self;
3026    #[inline]
3027    fn bitand(self, rhs: Self) -> Self {
3028        Self(self.0 & rhs.0)
3029    }
3030}
3031impl core::ops::BitAndAssign
3032for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3033    #[inline]
3034    fn bitand_assign(&mut self, rhs: Self) {
3035        self.0 &= rhs.0;
3036    }
3037}
3038impl core::ops::BitXor for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3039    type Output = Self;
3040    #[inline]
3041    fn bitxor(self, rhs: Self) -> Self {
3042        Self(self.0 ^ rhs.0)
3043    }
3044}
3045impl core::ops::BitXorAssign
3046for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3047    #[inline]
3048    fn bitxor_assign(&mut self, rhs: Self) {
3049        self.0 ^= rhs.0;
3050    }
3051}
3052impl core::ops::Not for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3053    type Output = Self;
3054    #[inline]
3055    fn not(self) -> Self {
3056        Self(!self.0)
3057    }
3058}
3059impl core::fmt::Debug for ClusterAccelerationStructureAddressResolutionFlagBitsNV {
3060    #[allow(unused_mut, unused_variables)]
3061    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3062        let mut first = true;
3063        let mut remaining = self.0;
3064        if remaining & Self::INDIRECTED_DST_IMPLICIT_DATA.0 != 0 {
3065            if !first {
3066                f.write_str(" | ")?;
3067            }
3068            f.write_str("INDIRECTED_DST_IMPLICIT_DATA")?;
3069            remaining &= !Self::INDIRECTED_DST_IMPLICIT_DATA.0;
3070            first = false;
3071        }
3072        if remaining & Self::INDIRECTED_SCRATCH_DATA.0 != 0 {
3073            if !first {
3074                f.write_str(" | ")?;
3075            }
3076            f.write_str("INDIRECTED_SCRATCH_DATA")?;
3077            remaining &= !Self::INDIRECTED_SCRATCH_DATA.0;
3078            first = false;
3079        }
3080        if remaining & Self::INDIRECTED_DST_ADDRESS_ARRAY.0 != 0 {
3081            if !first {
3082                f.write_str(" | ")?;
3083            }
3084            f.write_str("INDIRECTED_DST_ADDRESS_ARRAY")?;
3085            remaining &= !Self::INDIRECTED_DST_ADDRESS_ARRAY.0;
3086            first = false;
3087        }
3088        if remaining & Self::INDIRECTED_DST_SIZES_ARRAY.0 != 0 {
3089            if !first {
3090                f.write_str(" | ")?;
3091            }
3092            f.write_str("INDIRECTED_DST_SIZES_ARRAY")?;
3093            remaining &= !Self::INDIRECTED_DST_SIZES_ARRAY.0;
3094            first = false;
3095        }
3096        if remaining & Self::INDIRECTED_SRC_INFOS_ARRAY.0 != 0 {
3097            if !first {
3098                f.write_str(" | ")?;
3099            }
3100            f.write_str("INDIRECTED_SRC_INFOS_ARRAY")?;
3101            remaining &= !Self::INDIRECTED_SRC_INFOS_ARRAY.0;
3102            first = false;
3103        }
3104        if remaining & Self::INDIRECTED_SRC_INFOS_COUNT.0 != 0 {
3105            if !first {
3106                f.write_str(" | ")?;
3107            }
3108            f.write_str("INDIRECTED_SRC_INFOS_COUNT")?;
3109            remaining &= !Self::INDIRECTED_SRC_INFOS_COUNT.0;
3110            first = false;
3111        }
3112        if remaining != 0u32 {
3113            if !first {
3114                f.write_str(" | ")?;
3115            }
3116            write!(f, "{:#x}", remaining)?;
3117        } else if first {
3118            f.write_str("(empty)")?;
3119        }
3120        Ok(())
3121    }
3122}
3123///[`VkClusterAccelerationStructureClusterFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClusterFlagBitsNV.html)
3124#[repr(transparent)]
3125#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3126#[doc(alias = "VkClusterAccelerationStructureClusterFlagBitsNV")]
3127pub struct ClusterAccelerationStructureClusterFlagBitsNV(u32);
3128impl ClusterAccelerationStructureClusterFlagBitsNV {
3129    #[inline]
3130    pub const fn empty() -> Self {
3131        Self(0u32)
3132    }
3133    #[inline]
3134    pub const fn from_raw(value: u32) -> Self {
3135        Self(value)
3136    }
3137    #[inline]
3138    pub const fn as_raw(self) -> u32 {
3139        self.0
3140    }
3141    #[inline]
3142    pub const fn is_empty(self) -> bool {
3143        self.0 == 0u32
3144    }
3145    #[inline]
3146    pub const fn contains(self, other: Self) -> bool {
3147        (self.0 & other.0) == other.0
3148    }
3149    #[inline]
3150    pub const fn all() -> Self {
3151        Self(1u32)
3152    }
3153    ///Bit 0.
3154    pub const ALLOW_DISABLE_OPACITY_MICROMAPS: Self = Self(1u32);
3155}
3156impl core::ops::BitOr for ClusterAccelerationStructureClusterFlagBitsNV {
3157    type Output = Self;
3158    #[inline]
3159    fn bitor(self, rhs: Self) -> Self {
3160        Self(self.0 | rhs.0)
3161    }
3162}
3163impl core::ops::BitOrAssign for ClusterAccelerationStructureClusterFlagBitsNV {
3164    #[inline]
3165    fn bitor_assign(&mut self, rhs: Self) {
3166        self.0 |= rhs.0;
3167    }
3168}
3169impl core::ops::BitAnd for ClusterAccelerationStructureClusterFlagBitsNV {
3170    type Output = Self;
3171    #[inline]
3172    fn bitand(self, rhs: Self) -> Self {
3173        Self(self.0 & rhs.0)
3174    }
3175}
3176impl core::ops::BitAndAssign for ClusterAccelerationStructureClusterFlagBitsNV {
3177    #[inline]
3178    fn bitand_assign(&mut self, rhs: Self) {
3179        self.0 &= rhs.0;
3180    }
3181}
3182impl core::ops::BitXor for ClusterAccelerationStructureClusterFlagBitsNV {
3183    type Output = Self;
3184    #[inline]
3185    fn bitxor(self, rhs: Self) -> Self {
3186        Self(self.0 ^ rhs.0)
3187    }
3188}
3189impl core::ops::BitXorAssign for ClusterAccelerationStructureClusterFlagBitsNV {
3190    #[inline]
3191    fn bitxor_assign(&mut self, rhs: Self) {
3192        self.0 ^= rhs.0;
3193    }
3194}
3195impl core::ops::Not for ClusterAccelerationStructureClusterFlagBitsNV {
3196    type Output = Self;
3197    #[inline]
3198    fn not(self) -> Self {
3199        Self(!self.0)
3200    }
3201}
3202impl core::fmt::Debug for ClusterAccelerationStructureClusterFlagBitsNV {
3203    #[allow(unused_mut, unused_variables)]
3204    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3205        let mut first = true;
3206        let mut remaining = self.0;
3207        if remaining & Self::ALLOW_DISABLE_OPACITY_MICROMAPS.0 != 0 {
3208            if !first {
3209                f.write_str(" | ")?;
3210            }
3211            f.write_str("ALLOW_DISABLE_OPACITY_MICROMAPS")?;
3212            remaining &= !Self::ALLOW_DISABLE_OPACITY_MICROMAPS.0;
3213            first = false;
3214        }
3215        if remaining != 0u32 {
3216            if !first {
3217                f.write_str(" | ")?;
3218            }
3219            write!(f, "{:#x}", remaining)?;
3220        } else if first {
3221            f.write_str("(empty)")?;
3222        }
3223        Ok(())
3224    }
3225}
3226///[`VkClusterAccelerationStructureGeometryFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryFlagBitsNV.html)
3227#[repr(transparent)]
3228#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3229#[doc(alias = "VkClusterAccelerationStructureGeometryFlagBitsNV")]
3230pub struct ClusterAccelerationStructureGeometryFlagBitsNV(u32);
3231impl ClusterAccelerationStructureGeometryFlagBitsNV {
3232    #[inline]
3233    pub const fn empty() -> Self {
3234        Self(0u32)
3235    }
3236    #[inline]
3237    pub const fn from_raw(value: u32) -> Self {
3238        Self(value)
3239    }
3240    #[inline]
3241    pub const fn as_raw(self) -> u32 {
3242        self.0
3243    }
3244    #[inline]
3245    pub const fn is_empty(self) -> bool {
3246        self.0 == 0u32
3247    }
3248    #[inline]
3249    pub const fn contains(self, other: Self) -> bool {
3250        (self.0 & other.0) == other.0
3251    }
3252    #[inline]
3253    pub const fn all() -> Self {
3254        Self(7u32)
3255    }
3256    ///Bit 0.
3257    pub const CULL_DISABLE: Self = Self(1u32);
3258    ///Bit 1.
3259    pub const NO_DUPLICATE_ANYHIT_INVOCATION: Self = Self(2u32);
3260    ///Bit 2.
3261    pub const OPAQUE: Self = Self(4u32);
3262}
3263impl core::ops::BitOr for ClusterAccelerationStructureGeometryFlagBitsNV {
3264    type Output = Self;
3265    #[inline]
3266    fn bitor(self, rhs: Self) -> Self {
3267        Self(self.0 | rhs.0)
3268    }
3269}
3270impl core::ops::BitOrAssign for ClusterAccelerationStructureGeometryFlagBitsNV {
3271    #[inline]
3272    fn bitor_assign(&mut self, rhs: Self) {
3273        self.0 |= rhs.0;
3274    }
3275}
3276impl core::ops::BitAnd for ClusterAccelerationStructureGeometryFlagBitsNV {
3277    type Output = Self;
3278    #[inline]
3279    fn bitand(self, rhs: Self) -> Self {
3280        Self(self.0 & rhs.0)
3281    }
3282}
3283impl core::ops::BitAndAssign for ClusterAccelerationStructureGeometryFlagBitsNV {
3284    #[inline]
3285    fn bitand_assign(&mut self, rhs: Self) {
3286        self.0 &= rhs.0;
3287    }
3288}
3289impl core::ops::BitXor for ClusterAccelerationStructureGeometryFlagBitsNV {
3290    type Output = Self;
3291    #[inline]
3292    fn bitxor(self, rhs: Self) -> Self {
3293        Self(self.0 ^ rhs.0)
3294    }
3295}
3296impl core::ops::BitXorAssign for ClusterAccelerationStructureGeometryFlagBitsNV {
3297    #[inline]
3298    fn bitxor_assign(&mut self, rhs: Self) {
3299        self.0 ^= rhs.0;
3300    }
3301}
3302impl core::ops::Not for ClusterAccelerationStructureGeometryFlagBitsNV {
3303    type Output = Self;
3304    #[inline]
3305    fn not(self) -> Self {
3306        Self(!self.0)
3307    }
3308}
3309impl core::fmt::Debug for ClusterAccelerationStructureGeometryFlagBitsNV {
3310    #[allow(unused_mut, unused_variables)]
3311    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3312        let mut first = true;
3313        let mut remaining = self.0;
3314        if remaining & Self::CULL_DISABLE.0 != 0 {
3315            if !first {
3316                f.write_str(" | ")?;
3317            }
3318            f.write_str("CULL_DISABLE")?;
3319            remaining &= !Self::CULL_DISABLE.0;
3320            first = false;
3321        }
3322        if remaining & Self::NO_DUPLICATE_ANYHIT_INVOCATION.0 != 0 {
3323            if !first {
3324                f.write_str(" | ")?;
3325            }
3326            f.write_str("NO_DUPLICATE_ANYHIT_INVOCATION")?;
3327            remaining &= !Self::NO_DUPLICATE_ANYHIT_INVOCATION.0;
3328            first = false;
3329        }
3330        if remaining & Self::OPAQUE.0 != 0 {
3331            if !first {
3332                f.write_str(" | ")?;
3333            }
3334            f.write_str("OPAQUE")?;
3335            remaining &= !Self::OPAQUE.0;
3336            first = false;
3337        }
3338        if remaining != 0u32 {
3339            if !first {
3340                f.write_str(" | ")?;
3341            }
3342            write!(f, "{:#x}", remaining)?;
3343        } else if first {
3344            f.write_str("(empty)")?;
3345        }
3346        Ok(())
3347    }
3348}
3349///[`VkClusterAccelerationStructureIndexFormatFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureIndexFormatFlagBitsNV.html)
3350#[repr(transparent)]
3351#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3352#[doc(alias = "VkClusterAccelerationStructureIndexFormatFlagBitsNV")]
3353pub struct ClusterAccelerationStructureIndexFormatFlagBitsNV(u32);
3354impl ClusterAccelerationStructureIndexFormatFlagBitsNV {
3355    #[inline]
3356    pub const fn empty() -> Self {
3357        Self(0u32)
3358    }
3359    #[inline]
3360    pub const fn from_raw(value: u32) -> Self {
3361        Self(value)
3362    }
3363    #[inline]
3364    pub const fn as_raw(self) -> u32 {
3365        self.0
3366    }
3367    #[inline]
3368    pub const fn is_empty(self) -> bool {
3369        self.0 == 0u32
3370    }
3371    #[inline]
3372    pub const fn contains(self, other: Self) -> bool {
3373        (self.0 & other.0) == other.0
3374    }
3375    #[inline]
3376    pub const fn all() -> Self {
3377        Self(7u32)
3378    }
3379    ///Bit 0.
3380    pub const _8BIT: Self = Self(1u32);
3381    ///Bit 1.
3382    pub const _16BIT: Self = Self(2u32);
3383    ///Bit 2.
3384    pub const _32BIT: Self = Self(4u32);
3385}
3386impl core::ops::BitOr for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3387    type Output = Self;
3388    #[inline]
3389    fn bitor(self, rhs: Self) -> Self {
3390        Self(self.0 | rhs.0)
3391    }
3392}
3393impl core::ops::BitOrAssign for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3394    #[inline]
3395    fn bitor_assign(&mut self, rhs: Self) {
3396        self.0 |= rhs.0;
3397    }
3398}
3399impl core::ops::BitAnd for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3400    type Output = Self;
3401    #[inline]
3402    fn bitand(self, rhs: Self) -> Self {
3403        Self(self.0 & rhs.0)
3404    }
3405}
3406impl core::ops::BitAndAssign for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3407    #[inline]
3408    fn bitand_assign(&mut self, rhs: Self) {
3409        self.0 &= rhs.0;
3410    }
3411}
3412impl core::ops::BitXor for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3413    type Output = Self;
3414    #[inline]
3415    fn bitxor(self, rhs: Self) -> Self {
3416        Self(self.0 ^ rhs.0)
3417    }
3418}
3419impl core::ops::BitXorAssign for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3420    #[inline]
3421    fn bitxor_assign(&mut self, rhs: Self) {
3422        self.0 ^= rhs.0;
3423    }
3424}
3425impl core::ops::Not for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3426    type Output = Self;
3427    #[inline]
3428    fn not(self) -> Self {
3429        Self(!self.0)
3430    }
3431}
3432impl core::fmt::Debug for ClusterAccelerationStructureIndexFormatFlagBitsNV {
3433    #[allow(unused_mut, unused_variables)]
3434    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3435        let mut first = true;
3436        let mut remaining = self.0;
3437        if remaining & Self::_8BIT.0 != 0 {
3438            if !first {
3439                f.write_str(" | ")?;
3440            }
3441            f.write_str("_8BIT")?;
3442            remaining &= !Self::_8BIT.0;
3443            first = false;
3444        }
3445        if remaining & Self::_16BIT.0 != 0 {
3446            if !first {
3447                f.write_str(" | ")?;
3448            }
3449            f.write_str("_16BIT")?;
3450            remaining &= !Self::_16BIT.0;
3451            first = false;
3452        }
3453        if remaining & Self::_32BIT.0 != 0 {
3454            if !first {
3455                f.write_str(" | ")?;
3456            }
3457            f.write_str("_32BIT")?;
3458            remaining &= !Self::_32BIT.0;
3459            first = false;
3460        }
3461        if remaining != 0u32 {
3462            if !first {
3463                f.write_str(" | ")?;
3464            }
3465            write!(f, "{:#x}", remaining)?;
3466        } else if first {
3467            f.write_str("(empty)")?;
3468        }
3469        Ok(())
3470    }
3471}
3472///[`VkColorComponentFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkColorComponentFlagBits.html)
3473#[repr(transparent)]
3474#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3475#[doc(alias = "VkColorComponentFlagBits")]
3476pub struct ColorComponentFlagBits(u32);
3477impl ColorComponentFlagBits {
3478    #[inline]
3479    pub const fn empty() -> Self {
3480        Self(0u32)
3481    }
3482    #[inline]
3483    pub const fn from_raw(value: u32) -> Self {
3484        Self(value)
3485    }
3486    #[inline]
3487    pub const fn as_raw(self) -> u32 {
3488        self.0
3489    }
3490    #[inline]
3491    pub const fn is_empty(self) -> bool {
3492        self.0 == 0u32
3493    }
3494    #[inline]
3495    pub const fn contains(self, other: Self) -> bool {
3496        (self.0 & other.0) == other.0
3497    }
3498    #[inline]
3499    pub const fn all() -> Self {
3500        Self(15u32)
3501    }
3502    ///Bit 0.
3503    pub const R: Self = Self(1u32);
3504    ///Bit 1.
3505    pub const G: Self = Self(2u32);
3506    ///Bit 2.
3507    pub const B: Self = Self(4u32);
3508    ///Bit 3.
3509    pub const A: Self = Self(8u32);
3510}
3511impl core::ops::BitOr for ColorComponentFlagBits {
3512    type Output = Self;
3513    #[inline]
3514    fn bitor(self, rhs: Self) -> Self {
3515        Self(self.0 | rhs.0)
3516    }
3517}
3518impl core::ops::BitOrAssign for ColorComponentFlagBits {
3519    #[inline]
3520    fn bitor_assign(&mut self, rhs: Self) {
3521        self.0 |= rhs.0;
3522    }
3523}
3524impl core::ops::BitAnd for ColorComponentFlagBits {
3525    type Output = Self;
3526    #[inline]
3527    fn bitand(self, rhs: Self) -> Self {
3528        Self(self.0 & rhs.0)
3529    }
3530}
3531impl core::ops::BitAndAssign for ColorComponentFlagBits {
3532    #[inline]
3533    fn bitand_assign(&mut self, rhs: Self) {
3534        self.0 &= rhs.0;
3535    }
3536}
3537impl core::ops::BitXor for ColorComponentFlagBits {
3538    type Output = Self;
3539    #[inline]
3540    fn bitxor(self, rhs: Self) -> Self {
3541        Self(self.0 ^ rhs.0)
3542    }
3543}
3544impl core::ops::BitXorAssign for ColorComponentFlagBits {
3545    #[inline]
3546    fn bitxor_assign(&mut self, rhs: Self) {
3547        self.0 ^= rhs.0;
3548    }
3549}
3550impl core::ops::Not for ColorComponentFlagBits {
3551    type Output = Self;
3552    #[inline]
3553    fn not(self) -> Self {
3554        Self(!self.0)
3555    }
3556}
3557impl core::fmt::Debug for ColorComponentFlagBits {
3558    #[allow(unused_mut, unused_variables)]
3559    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3560        let mut first = true;
3561        let mut remaining = self.0;
3562        if remaining & Self::R.0 != 0 {
3563            if !first {
3564                f.write_str(" | ")?;
3565            }
3566            f.write_str("R")?;
3567            remaining &= !Self::R.0;
3568            first = false;
3569        }
3570        if remaining & Self::G.0 != 0 {
3571            if !first {
3572                f.write_str(" | ")?;
3573            }
3574            f.write_str("G")?;
3575            remaining &= !Self::G.0;
3576            first = false;
3577        }
3578        if remaining & Self::B.0 != 0 {
3579            if !first {
3580                f.write_str(" | ")?;
3581            }
3582            f.write_str("B")?;
3583            remaining &= !Self::B.0;
3584            first = false;
3585        }
3586        if remaining & Self::A.0 != 0 {
3587            if !first {
3588                f.write_str(" | ")?;
3589            }
3590            f.write_str("A")?;
3591            remaining &= !Self::A.0;
3592            first = false;
3593        }
3594        if remaining != 0u32 {
3595            if !first {
3596                f.write_str(" | ")?;
3597            }
3598            write!(f, "{:#x}", remaining)?;
3599        } else if first {
3600            f.write_str("(empty)")?;
3601        }
3602        Ok(())
3603    }
3604}
3605///[`VkCommandBufferResetFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferResetFlagBits.html)
3606#[repr(transparent)]
3607#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3608#[doc(alias = "VkCommandBufferResetFlagBits")]
3609pub struct CommandBufferResetFlagBits(u32);
3610impl CommandBufferResetFlagBits {
3611    #[inline]
3612    pub const fn empty() -> Self {
3613        Self(0u32)
3614    }
3615    #[inline]
3616    pub const fn from_raw(value: u32) -> Self {
3617        Self(value)
3618    }
3619    #[inline]
3620    pub const fn as_raw(self) -> u32 {
3621        self.0
3622    }
3623    #[inline]
3624    pub const fn is_empty(self) -> bool {
3625        self.0 == 0u32
3626    }
3627    #[inline]
3628    pub const fn contains(self, other: Self) -> bool {
3629        (self.0 & other.0) == other.0
3630    }
3631    #[inline]
3632    pub const fn all() -> Self {
3633        Self(1u32)
3634    }
3635    ///Bit 0.
3636    pub const RELEASE_RESOURCES: Self = Self(1u32);
3637}
3638impl core::ops::BitOr for CommandBufferResetFlagBits {
3639    type Output = Self;
3640    #[inline]
3641    fn bitor(self, rhs: Self) -> Self {
3642        Self(self.0 | rhs.0)
3643    }
3644}
3645impl core::ops::BitOrAssign for CommandBufferResetFlagBits {
3646    #[inline]
3647    fn bitor_assign(&mut self, rhs: Self) {
3648        self.0 |= rhs.0;
3649    }
3650}
3651impl core::ops::BitAnd for CommandBufferResetFlagBits {
3652    type Output = Self;
3653    #[inline]
3654    fn bitand(self, rhs: Self) -> Self {
3655        Self(self.0 & rhs.0)
3656    }
3657}
3658impl core::ops::BitAndAssign for CommandBufferResetFlagBits {
3659    #[inline]
3660    fn bitand_assign(&mut self, rhs: Self) {
3661        self.0 &= rhs.0;
3662    }
3663}
3664impl core::ops::BitXor for CommandBufferResetFlagBits {
3665    type Output = Self;
3666    #[inline]
3667    fn bitxor(self, rhs: Self) -> Self {
3668        Self(self.0 ^ rhs.0)
3669    }
3670}
3671impl core::ops::BitXorAssign for CommandBufferResetFlagBits {
3672    #[inline]
3673    fn bitxor_assign(&mut self, rhs: Self) {
3674        self.0 ^= rhs.0;
3675    }
3676}
3677impl core::ops::Not for CommandBufferResetFlagBits {
3678    type Output = Self;
3679    #[inline]
3680    fn not(self) -> Self {
3681        Self(!self.0)
3682    }
3683}
3684impl core::fmt::Debug for CommandBufferResetFlagBits {
3685    #[allow(unused_mut, unused_variables)]
3686    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3687        let mut first = true;
3688        let mut remaining = self.0;
3689        if remaining & Self::RELEASE_RESOURCES.0 != 0 {
3690            if !first {
3691                f.write_str(" | ")?;
3692            }
3693            f.write_str("RELEASE_RESOURCES")?;
3694            remaining &= !Self::RELEASE_RESOURCES.0;
3695            first = false;
3696        }
3697        if remaining != 0u32 {
3698            if !first {
3699                f.write_str(" | ")?;
3700            }
3701            write!(f, "{:#x}", remaining)?;
3702        } else if first {
3703            f.write_str("(empty)")?;
3704        }
3705        Ok(())
3706    }
3707}
3708///[`VkCommandBufferUsageFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferUsageFlagBits.html)
3709#[repr(transparent)]
3710#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3711#[doc(alias = "VkCommandBufferUsageFlagBits")]
3712pub struct CommandBufferUsageFlagBits(u32);
3713impl CommandBufferUsageFlagBits {
3714    #[inline]
3715    pub const fn empty() -> Self {
3716        Self(0u32)
3717    }
3718    #[inline]
3719    pub const fn from_raw(value: u32) -> Self {
3720        Self(value)
3721    }
3722    #[inline]
3723    pub const fn as_raw(self) -> u32 {
3724        self.0
3725    }
3726    #[inline]
3727    pub const fn is_empty(self) -> bool {
3728        self.0 == 0u32
3729    }
3730    #[inline]
3731    pub const fn contains(self, other: Self) -> bool {
3732        (self.0 & other.0) == other.0
3733    }
3734    #[inline]
3735    pub const fn all() -> Self {
3736        Self(7u32)
3737    }
3738    ///Bit 0.
3739    pub const ONE_TIME_SUBMIT: Self = Self(1u32);
3740    ///Bit 1.
3741    pub const RENDER_PASS_CONTINUE: Self = Self(2u32);
3742    ///Bit 2.
3743    pub const SIMULTANEOUS_USE: Self = Self(4u32);
3744}
3745impl core::ops::BitOr for CommandBufferUsageFlagBits {
3746    type Output = Self;
3747    #[inline]
3748    fn bitor(self, rhs: Self) -> Self {
3749        Self(self.0 | rhs.0)
3750    }
3751}
3752impl core::ops::BitOrAssign for CommandBufferUsageFlagBits {
3753    #[inline]
3754    fn bitor_assign(&mut self, rhs: Self) {
3755        self.0 |= rhs.0;
3756    }
3757}
3758impl core::ops::BitAnd for CommandBufferUsageFlagBits {
3759    type Output = Self;
3760    #[inline]
3761    fn bitand(self, rhs: Self) -> Self {
3762        Self(self.0 & rhs.0)
3763    }
3764}
3765impl core::ops::BitAndAssign for CommandBufferUsageFlagBits {
3766    #[inline]
3767    fn bitand_assign(&mut self, rhs: Self) {
3768        self.0 &= rhs.0;
3769    }
3770}
3771impl core::ops::BitXor for CommandBufferUsageFlagBits {
3772    type Output = Self;
3773    #[inline]
3774    fn bitxor(self, rhs: Self) -> Self {
3775        Self(self.0 ^ rhs.0)
3776    }
3777}
3778impl core::ops::BitXorAssign for CommandBufferUsageFlagBits {
3779    #[inline]
3780    fn bitxor_assign(&mut self, rhs: Self) {
3781        self.0 ^= rhs.0;
3782    }
3783}
3784impl core::ops::Not for CommandBufferUsageFlagBits {
3785    type Output = Self;
3786    #[inline]
3787    fn not(self) -> Self {
3788        Self(!self.0)
3789    }
3790}
3791impl core::fmt::Debug for CommandBufferUsageFlagBits {
3792    #[allow(unused_mut, unused_variables)]
3793    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3794        let mut first = true;
3795        let mut remaining = self.0;
3796        if remaining & Self::ONE_TIME_SUBMIT.0 != 0 {
3797            if !first {
3798                f.write_str(" | ")?;
3799            }
3800            f.write_str("ONE_TIME_SUBMIT")?;
3801            remaining &= !Self::ONE_TIME_SUBMIT.0;
3802            first = false;
3803        }
3804        if remaining & Self::RENDER_PASS_CONTINUE.0 != 0 {
3805            if !first {
3806                f.write_str(" | ")?;
3807            }
3808            f.write_str("RENDER_PASS_CONTINUE")?;
3809            remaining &= !Self::RENDER_PASS_CONTINUE.0;
3810            first = false;
3811        }
3812        if remaining & Self::SIMULTANEOUS_USE.0 != 0 {
3813            if !first {
3814                f.write_str(" | ")?;
3815            }
3816            f.write_str("SIMULTANEOUS_USE")?;
3817            remaining &= !Self::SIMULTANEOUS_USE.0;
3818            first = false;
3819        }
3820        if remaining != 0u32 {
3821            if !first {
3822                f.write_str(" | ")?;
3823            }
3824            write!(f, "{:#x}", remaining)?;
3825        } else if first {
3826            f.write_str("(empty)")?;
3827        }
3828        Ok(())
3829    }
3830}
3831///[`VkCommandPoolCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolCreateFlagBits.html)
3832#[repr(transparent)]
3833#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3834#[doc(alias = "VkCommandPoolCreateFlagBits")]
3835pub struct CommandPoolCreateFlagBits(u32);
3836impl CommandPoolCreateFlagBits {
3837    #[inline]
3838    pub const fn empty() -> Self {
3839        Self(0u32)
3840    }
3841    #[inline]
3842    pub const fn from_raw(value: u32) -> Self {
3843        Self(value)
3844    }
3845    #[inline]
3846    pub const fn as_raw(self) -> u32 {
3847        self.0
3848    }
3849    #[inline]
3850    pub const fn is_empty(self) -> bool {
3851        self.0 == 0u32
3852    }
3853    #[inline]
3854    pub const fn contains(self, other: Self) -> bool {
3855        (self.0 & other.0) == other.0
3856    }
3857    #[inline]
3858    pub const fn all() -> Self {
3859        Self(7u32)
3860    }
3861    ///Bit 0.
3862    pub const TRANSIENT: Self = Self(1u32);
3863    ///Bit 1.
3864    pub const RESET_COMMAND_BUFFER: Self = Self(2u32);
3865    ///Bit 2.
3866    pub const PROTECTED: Self = Self(4u32);
3867}
3868impl core::ops::BitOr for CommandPoolCreateFlagBits {
3869    type Output = Self;
3870    #[inline]
3871    fn bitor(self, rhs: Self) -> Self {
3872        Self(self.0 | rhs.0)
3873    }
3874}
3875impl core::ops::BitOrAssign for CommandPoolCreateFlagBits {
3876    #[inline]
3877    fn bitor_assign(&mut self, rhs: Self) {
3878        self.0 |= rhs.0;
3879    }
3880}
3881impl core::ops::BitAnd for CommandPoolCreateFlagBits {
3882    type Output = Self;
3883    #[inline]
3884    fn bitand(self, rhs: Self) -> Self {
3885        Self(self.0 & rhs.0)
3886    }
3887}
3888impl core::ops::BitAndAssign for CommandPoolCreateFlagBits {
3889    #[inline]
3890    fn bitand_assign(&mut self, rhs: Self) {
3891        self.0 &= rhs.0;
3892    }
3893}
3894impl core::ops::BitXor for CommandPoolCreateFlagBits {
3895    type Output = Self;
3896    #[inline]
3897    fn bitxor(self, rhs: Self) -> Self {
3898        Self(self.0 ^ rhs.0)
3899    }
3900}
3901impl core::ops::BitXorAssign for CommandPoolCreateFlagBits {
3902    #[inline]
3903    fn bitxor_assign(&mut self, rhs: Self) {
3904        self.0 ^= rhs.0;
3905    }
3906}
3907impl core::ops::Not for CommandPoolCreateFlagBits {
3908    type Output = Self;
3909    #[inline]
3910    fn not(self) -> Self {
3911        Self(!self.0)
3912    }
3913}
3914impl core::fmt::Debug for CommandPoolCreateFlagBits {
3915    #[allow(unused_mut, unused_variables)]
3916    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3917        let mut first = true;
3918        let mut remaining = self.0;
3919        if remaining & Self::TRANSIENT.0 != 0 {
3920            if !first {
3921                f.write_str(" | ")?;
3922            }
3923            f.write_str("TRANSIENT")?;
3924            remaining &= !Self::TRANSIENT.0;
3925            first = false;
3926        }
3927        if remaining & Self::RESET_COMMAND_BUFFER.0 != 0 {
3928            if !first {
3929                f.write_str(" | ")?;
3930            }
3931            f.write_str("RESET_COMMAND_BUFFER")?;
3932            remaining &= !Self::RESET_COMMAND_BUFFER.0;
3933            first = false;
3934        }
3935        if remaining & Self::PROTECTED.0 != 0 {
3936            if !first {
3937                f.write_str(" | ")?;
3938            }
3939            f.write_str("PROTECTED")?;
3940            remaining &= !Self::PROTECTED.0;
3941            first = false;
3942        }
3943        if remaining != 0u32 {
3944            if !first {
3945                f.write_str(" | ")?;
3946            }
3947            write!(f, "{:#x}", remaining)?;
3948        } else if first {
3949            f.write_str("(empty)")?;
3950        }
3951        Ok(())
3952    }
3953}
3954///[`VkCommandPoolResetFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolResetFlagBits.html)
3955#[repr(transparent)]
3956#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3957#[doc(alias = "VkCommandPoolResetFlagBits")]
3958pub struct CommandPoolResetFlagBits(u32);
3959impl CommandPoolResetFlagBits {
3960    #[inline]
3961    pub const fn empty() -> Self {
3962        Self(0u32)
3963    }
3964    #[inline]
3965    pub const fn from_raw(value: u32) -> Self {
3966        Self(value)
3967    }
3968    #[inline]
3969    pub const fn as_raw(self) -> u32 {
3970        self.0
3971    }
3972    #[inline]
3973    pub const fn is_empty(self) -> bool {
3974        self.0 == 0u32
3975    }
3976    #[inline]
3977    pub const fn contains(self, other: Self) -> bool {
3978        (self.0 & other.0) == other.0
3979    }
3980    #[inline]
3981    pub const fn all() -> Self {
3982        Self(1u32)
3983    }
3984    ///Bit 0.
3985    pub const RELEASE_RESOURCES: Self = Self(1u32);
3986}
3987impl core::ops::BitOr for CommandPoolResetFlagBits {
3988    type Output = Self;
3989    #[inline]
3990    fn bitor(self, rhs: Self) -> Self {
3991        Self(self.0 | rhs.0)
3992    }
3993}
3994impl core::ops::BitOrAssign for CommandPoolResetFlagBits {
3995    #[inline]
3996    fn bitor_assign(&mut self, rhs: Self) {
3997        self.0 |= rhs.0;
3998    }
3999}
4000impl core::ops::BitAnd for CommandPoolResetFlagBits {
4001    type Output = Self;
4002    #[inline]
4003    fn bitand(self, rhs: Self) -> Self {
4004        Self(self.0 & rhs.0)
4005    }
4006}
4007impl core::ops::BitAndAssign for CommandPoolResetFlagBits {
4008    #[inline]
4009    fn bitand_assign(&mut self, rhs: Self) {
4010        self.0 &= rhs.0;
4011    }
4012}
4013impl core::ops::BitXor for CommandPoolResetFlagBits {
4014    type Output = Self;
4015    #[inline]
4016    fn bitxor(self, rhs: Self) -> Self {
4017        Self(self.0 ^ rhs.0)
4018    }
4019}
4020impl core::ops::BitXorAssign for CommandPoolResetFlagBits {
4021    #[inline]
4022    fn bitxor_assign(&mut self, rhs: Self) {
4023        self.0 ^= rhs.0;
4024    }
4025}
4026impl core::ops::Not for CommandPoolResetFlagBits {
4027    type Output = Self;
4028    #[inline]
4029    fn not(self) -> Self {
4030        Self(!self.0)
4031    }
4032}
4033impl core::fmt::Debug for CommandPoolResetFlagBits {
4034    #[allow(unused_mut, unused_variables)]
4035    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4036        let mut first = true;
4037        let mut remaining = self.0;
4038        if remaining & Self::RELEASE_RESOURCES.0 != 0 {
4039            if !first {
4040                f.write_str(" | ")?;
4041            }
4042            f.write_str("RELEASE_RESOURCES")?;
4043            remaining &= !Self::RELEASE_RESOURCES.0;
4044            first = false;
4045        }
4046        if remaining != 0u32 {
4047            if !first {
4048                f.write_str(" | ")?;
4049            }
4050            write!(f, "{:#x}", remaining)?;
4051        } else if first {
4052            f.write_str("(empty)")?;
4053        }
4054        Ok(())
4055    }
4056}
4057///[`VkCompositeAlphaFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCompositeAlphaFlagBitsKHR.html)
4058#[repr(transparent)]
4059#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4060#[doc(alias = "VkCompositeAlphaFlagBitsKHR")]
4061pub struct CompositeAlphaFlagBitsKHR(u32);
4062impl CompositeAlphaFlagBitsKHR {
4063    #[inline]
4064    pub const fn empty() -> Self {
4065        Self(0u32)
4066    }
4067    #[inline]
4068    pub const fn from_raw(value: u32) -> Self {
4069        Self(value)
4070    }
4071    #[inline]
4072    pub const fn as_raw(self) -> u32 {
4073        self.0
4074    }
4075    #[inline]
4076    pub const fn is_empty(self) -> bool {
4077        self.0 == 0u32
4078    }
4079    #[inline]
4080    pub const fn contains(self, other: Self) -> bool {
4081        (self.0 & other.0) == other.0
4082    }
4083    #[inline]
4084    pub const fn all() -> Self {
4085        Self(15u32)
4086    }
4087    ///Bit 0.
4088    pub const OPAQUE: Self = Self(1u32);
4089    ///Bit 1.
4090    pub const PRE_MULTIPLIED: Self = Self(2u32);
4091    ///Bit 2.
4092    pub const POST_MULTIPLIED: Self = Self(4u32);
4093    ///Bit 3.
4094    pub const INHERIT: Self = Self(8u32);
4095}
4096impl core::ops::BitOr for CompositeAlphaFlagBitsKHR {
4097    type Output = Self;
4098    #[inline]
4099    fn bitor(self, rhs: Self) -> Self {
4100        Self(self.0 | rhs.0)
4101    }
4102}
4103impl core::ops::BitOrAssign for CompositeAlphaFlagBitsKHR {
4104    #[inline]
4105    fn bitor_assign(&mut self, rhs: Self) {
4106        self.0 |= rhs.0;
4107    }
4108}
4109impl core::ops::BitAnd for CompositeAlphaFlagBitsKHR {
4110    type Output = Self;
4111    #[inline]
4112    fn bitand(self, rhs: Self) -> Self {
4113        Self(self.0 & rhs.0)
4114    }
4115}
4116impl core::ops::BitAndAssign for CompositeAlphaFlagBitsKHR {
4117    #[inline]
4118    fn bitand_assign(&mut self, rhs: Self) {
4119        self.0 &= rhs.0;
4120    }
4121}
4122impl core::ops::BitXor for CompositeAlphaFlagBitsKHR {
4123    type Output = Self;
4124    #[inline]
4125    fn bitxor(self, rhs: Self) -> Self {
4126        Self(self.0 ^ rhs.0)
4127    }
4128}
4129impl core::ops::BitXorAssign for CompositeAlphaFlagBitsKHR {
4130    #[inline]
4131    fn bitxor_assign(&mut self, rhs: Self) {
4132        self.0 ^= rhs.0;
4133    }
4134}
4135impl core::ops::Not for CompositeAlphaFlagBitsKHR {
4136    type Output = Self;
4137    #[inline]
4138    fn not(self) -> Self {
4139        Self(!self.0)
4140    }
4141}
4142impl core::fmt::Debug for CompositeAlphaFlagBitsKHR {
4143    #[allow(unused_mut, unused_variables)]
4144    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4145        let mut first = true;
4146        let mut remaining = self.0;
4147        if remaining & Self::OPAQUE.0 != 0 {
4148            if !first {
4149                f.write_str(" | ")?;
4150            }
4151            f.write_str("OPAQUE")?;
4152            remaining &= !Self::OPAQUE.0;
4153            first = false;
4154        }
4155        if remaining & Self::PRE_MULTIPLIED.0 != 0 {
4156            if !first {
4157                f.write_str(" | ")?;
4158            }
4159            f.write_str("PRE_MULTIPLIED")?;
4160            remaining &= !Self::PRE_MULTIPLIED.0;
4161            first = false;
4162        }
4163        if remaining & Self::POST_MULTIPLIED.0 != 0 {
4164            if !first {
4165                f.write_str(" | ")?;
4166            }
4167            f.write_str("POST_MULTIPLIED")?;
4168            remaining &= !Self::POST_MULTIPLIED.0;
4169            first = false;
4170        }
4171        if remaining & Self::INHERIT.0 != 0 {
4172            if !first {
4173                f.write_str(" | ")?;
4174            }
4175            f.write_str("INHERIT")?;
4176            remaining &= !Self::INHERIT.0;
4177            first = false;
4178        }
4179        if remaining != 0u32 {
4180            if !first {
4181                f.write_str(" | ")?;
4182            }
4183            write!(f, "{:#x}", remaining)?;
4184        } else if first {
4185            f.write_str("(empty)")?;
4186        }
4187        Ok(())
4188    }
4189}
4190///[`VkConditionalRenderingFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkConditionalRenderingFlagBitsEXT.html)
4191#[repr(transparent)]
4192#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4193#[doc(alias = "VkConditionalRenderingFlagBitsEXT")]
4194pub struct ConditionalRenderingFlagBitsEXT(u32);
4195impl ConditionalRenderingFlagBitsEXT {
4196    #[inline]
4197    pub const fn empty() -> Self {
4198        Self(0u32)
4199    }
4200    #[inline]
4201    pub const fn from_raw(value: u32) -> Self {
4202        Self(value)
4203    }
4204    #[inline]
4205    pub const fn as_raw(self) -> u32 {
4206        self.0
4207    }
4208    #[inline]
4209    pub const fn is_empty(self) -> bool {
4210        self.0 == 0u32
4211    }
4212    #[inline]
4213    pub const fn contains(self, other: Self) -> bool {
4214        (self.0 & other.0) == other.0
4215    }
4216    #[inline]
4217    pub const fn all() -> Self {
4218        Self(1u32)
4219    }
4220    ///Bit 0.
4221    pub const INVERTED: Self = Self(1u32);
4222}
4223impl core::ops::BitOr for ConditionalRenderingFlagBitsEXT {
4224    type Output = Self;
4225    #[inline]
4226    fn bitor(self, rhs: Self) -> Self {
4227        Self(self.0 | rhs.0)
4228    }
4229}
4230impl core::ops::BitOrAssign for ConditionalRenderingFlagBitsEXT {
4231    #[inline]
4232    fn bitor_assign(&mut self, rhs: Self) {
4233        self.0 |= rhs.0;
4234    }
4235}
4236impl core::ops::BitAnd for ConditionalRenderingFlagBitsEXT {
4237    type Output = Self;
4238    #[inline]
4239    fn bitand(self, rhs: Self) -> Self {
4240        Self(self.0 & rhs.0)
4241    }
4242}
4243impl core::ops::BitAndAssign for ConditionalRenderingFlagBitsEXT {
4244    #[inline]
4245    fn bitand_assign(&mut self, rhs: Self) {
4246        self.0 &= rhs.0;
4247    }
4248}
4249impl core::ops::BitXor for ConditionalRenderingFlagBitsEXT {
4250    type Output = Self;
4251    #[inline]
4252    fn bitxor(self, rhs: Self) -> Self {
4253        Self(self.0 ^ rhs.0)
4254    }
4255}
4256impl core::ops::BitXorAssign for ConditionalRenderingFlagBitsEXT {
4257    #[inline]
4258    fn bitxor_assign(&mut self, rhs: Self) {
4259        self.0 ^= rhs.0;
4260    }
4261}
4262impl core::ops::Not for ConditionalRenderingFlagBitsEXT {
4263    type Output = Self;
4264    #[inline]
4265    fn not(self) -> Self {
4266        Self(!self.0)
4267    }
4268}
4269impl core::fmt::Debug for ConditionalRenderingFlagBitsEXT {
4270    #[allow(unused_mut, unused_variables)]
4271    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4272        let mut first = true;
4273        let mut remaining = self.0;
4274        if remaining & Self::INVERTED.0 != 0 {
4275            if !first {
4276                f.write_str(" | ")?;
4277            }
4278            f.write_str("INVERTED")?;
4279            remaining &= !Self::INVERTED.0;
4280            first = false;
4281        }
4282        if remaining != 0u32 {
4283            if !first {
4284                f.write_str(" | ")?;
4285            }
4286            write!(f, "{:#x}", remaining)?;
4287        } else if first {
4288            f.write_str("(empty)")?;
4289        }
4290        Ok(())
4291    }
4292}
4293///[`VkCullModeFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCullModeFlagBits.html)
4294#[repr(transparent)]
4295#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4296#[doc(alias = "VkCullModeFlagBits")]
4297pub struct CullModeFlagBits(u32);
4298impl CullModeFlagBits {
4299    #[inline]
4300    pub const fn empty() -> Self {
4301        Self(0u32)
4302    }
4303    #[inline]
4304    pub const fn from_raw(value: u32) -> Self {
4305        Self(value)
4306    }
4307    #[inline]
4308    pub const fn as_raw(self) -> u32 {
4309        self.0
4310    }
4311    #[inline]
4312    pub const fn is_empty(self) -> bool {
4313        self.0 == 0u32
4314    }
4315    #[inline]
4316    pub const fn contains(self, other: Self) -> bool {
4317        (self.0 & other.0) == other.0
4318    }
4319    #[inline]
4320    pub const fn all() -> Self {
4321        Self(3u32)
4322    }
4323    pub const NONE: Self = Self(0u32);
4324    ///Bit 0.
4325    pub const FRONT: Self = Self(1u32);
4326    ///Bit 1.
4327    pub const BACK: Self = Self(2u32);
4328    pub const FRONT_AND_BACK: Self = Self(3u32);
4329}
4330impl core::ops::BitOr for CullModeFlagBits {
4331    type Output = Self;
4332    #[inline]
4333    fn bitor(self, rhs: Self) -> Self {
4334        Self(self.0 | rhs.0)
4335    }
4336}
4337impl core::ops::BitOrAssign for CullModeFlagBits {
4338    #[inline]
4339    fn bitor_assign(&mut self, rhs: Self) {
4340        self.0 |= rhs.0;
4341    }
4342}
4343impl core::ops::BitAnd for CullModeFlagBits {
4344    type Output = Self;
4345    #[inline]
4346    fn bitand(self, rhs: Self) -> Self {
4347        Self(self.0 & rhs.0)
4348    }
4349}
4350impl core::ops::BitAndAssign for CullModeFlagBits {
4351    #[inline]
4352    fn bitand_assign(&mut self, rhs: Self) {
4353        self.0 &= rhs.0;
4354    }
4355}
4356impl core::ops::BitXor for CullModeFlagBits {
4357    type Output = Self;
4358    #[inline]
4359    fn bitxor(self, rhs: Self) -> Self {
4360        Self(self.0 ^ rhs.0)
4361    }
4362}
4363impl core::ops::BitXorAssign for CullModeFlagBits {
4364    #[inline]
4365    fn bitxor_assign(&mut self, rhs: Self) {
4366        self.0 ^= rhs.0;
4367    }
4368}
4369impl core::ops::Not for CullModeFlagBits {
4370    type Output = Self;
4371    #[inline]
4372    fn not(self) -> Self {
4373        Self(!self.0)
4374    }
4375}
4376impl core::fmt::Debug for CullModeFlagBits {
4377    #[allow(unused_mut, unused_variables)]
4378    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4379        let mut first = true;
4380        let mut remaining = self.0;
4381        if remaining & Self::FRONT.0 != 0 {
4382            if !first {
4383                f.write_str(" | ")?;
4384            }
4385            f.write_str("FRONT")?;
4386            remaining &= !Self::FRONT.0;
4387            first = false;
4388        }
4389        if remaining & Self::BACK.0 != 0 {
4390            if !first {
4391                f.write_str(" | ")?;
4392            }
4393            f.write_str("BACK")?;
4394            remaining &= !Self::BACK.0;
4395            first = false;
4396        }
4397        if remaining != 0u32 {
4398            if !first {
4399                f.write_str(" | ")?;
4400            }
4401            write!(f, "{:#x}", remaining)?;
4402        } else if first {
4403            f.write_str("(empty)")?;
4404        }
4405        Ok(())
4406    }
4407}
4408///[`VkDataGraphPipelineDispatchFlagBitsARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchFlagBitsARM.html)
4409#[repr(transparent)]
4410#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4411#[doc(alias = "VkDataGraphPipelineDispatchFlagBitsARM")]
4412pub struct DataGraphPipelineDispatchFlagBitsARM(u64);
4413impl DataGraphPipelineDispatchFlagBitsARM {
4414    #[inline]
4415    pub const fn empty() -> Self {
4416        Self(0u64)
4417    }
4418    #[inline]
4419    pub const fn from_raw(value: u64) -> Self {
4420        Self(value)
4421    }
4422    #[inline]
4423    pub const fn as_raw(self) -> u64 {
4424        self.0
4425    }
4426    #[inline]
4427    pub const fn is_empty(self) -> bool {
4428        self.0 == 0u64
4429    }
4430    #[inline]
4431    pub const fn contains(self, other: Self) -> bool {
4432        (self.0 & other.0) == other.0
4433    }
4434    #[inline]
4435    pub const fn all() -> Self {
4436        Self(0u64)
4437    }
4438}
4439impl core::ops::BitOr for DataGraphPipelineDispatchFlagBitsARM {
4440    type Output = Self;
4441    #[inline]
4442    fn bitor(self, rhs: Self) -> Self {
4443        Self(self.0 | rhs.0)
4444    }
4445}
4446impl core::ops::BitOrAssign for DataGraphPipelineDispatchFlagBitsARM {
4447    #[inline]
4448    fn bitor_assign(&mut self, rhs: Self) {
4449        self.0 |= rhs.0;
4450    }
4451}
4452impl core::ops::BitAnd for DataGraphPipelineDispatchFlagBitsARM {
4453    type Output = Self;
4454    #[inline]
4455    fn bitand(self, rhs: Self) -> Self {
4456        Self(self.0 & rhs.0)
4457    }
4458}
4459impl core::ops::BitAndAssign for DataGraphPipelineDispatchFlagBitsARM {
4460    #[inline]
4461    fn bitand_assign(&mut self, rhs: Self) {
4462        self.0 &= rhs.0;
4463    }
4464}
4465impl core::ops::BitXor for DataGraphPipelineDispatchFlagBitsARM {
4466    type Output = Self;
4467    #[inline]
4468    fn bitxor(self, rhs: Self) -> Self {
4469        Self(self.0 ^ rhs.0)
4470    }
4471}
4472impl core::ops::BitXorAssign for DataGraphPipelineDispatchFlagBitsARM {
4473    #[inline]
4474    fn bitxor_assign(&mut self, rhs: Self) {
4475        self.0 ^= rhs.0;
4476    }
4477}
4478impl core::ops::Not for DataGraphPipelineDispatchFlagBitsARM {
4479    type Output = Self;
4480    #[inline]
4481    fn not(self) -> Self {
4482        Self(!self.0)
4483    }
4484}
4485impl core::fmt::Debug for DataGraphPipelineDispatchFlagBitsARM {
4486    #[allow(unused_mut, unused_variables)]
4487    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4488        let mut first = true;
4489        let mut remaining = self.0;
4490        if remaining != 0u64 {
4491            if !first {
4492                f.write_str(" | ")?;
4493            }
4494            write!(f, "{:#x}", remaining)?;
4495        } else if first {
4496            f.write_str("(empty)")?;
4497        }
4498        Ok(())
4499    }
4500}
4501///[`VkDataGraphPipelineSessionCreateFlagBitsARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateFlagBitsARM.html)
4502#[repr(transparent)]
4503#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4504#[doc(alias = "VkDataGraphPipelineSessionCreateFlagBitsARM")]
4505pub struct DataGraphPipelineSessionCreateFlagBitsARM(u64);
4506impl DataGraphPipelineSessionCreateFlagBitsARM {
4507    #[inline]
4508    pub const fn empty() -> Self {
4509        Self(0u64)
4510    }
4511    #[inline]
4512    pub const fn from_raw(value: u64) -> Self {
4513        Self(value)
4514    }
4515    #[inline]
4516    pub const fn as_raw(self) -> u64 {
4517        self.0
4518    }
4519    #[inline]
4520    pub const fn is_empty(self) -> bool {
4521        self.0 == 0u64
4522    }
4523    #[inline]
4524    pub const fn contains(self, other: Self) -> bool {
4525        (self.0 & other.0) == other.0
4526    }
4527    #[inline]
4528    pub const fn all() -> Self {
4529        Self(1u64)
4530    }
4531    ///Bit 0.
4532    pub const PROTECTED_BIT: Self = Self(1u64);
4533}
4534impl core::ops::BitOr for DataGraphPipelineSessionCreateFlagBitsARM {
4535    type Output = Self;
4536    #[inline]
4537    fn bitor(self, rhs: Self) -> Self {
4538        Self(self.0 | rhs.0)
4539    }
4540}
4541impl core::ops::BitOrAssign for DataGraphPipelineSessionCreateFlagBitsARM {
4542    #[inline]
4543    fn bitor_assign(&mut self, rhs: Self) {
4544        self.0 |= rhs.0;
4545    }
4546}
4547impl core::ops::BitAnd for DataGraphPipelineSessionCreateFlagBitsARM {
4548    type Output = Self;
4549    #[inline]
4550    fn bitand(self, rhs: Self) -> Self {
4551        Self(self.0 & rhs.0)
4552    }
4553}
4554impl core::ops::BitAndAssign for DataGraphPipelineSessionCreateFlagBitsARM {
4555    #[inline]
4556    fn bitand_assign(&mut self, rhs: Self) {
4557        self.0 &= rhs.0;
4558    }
4559}
4560impl core::ops::BitXor for DataGraphPipelineSessionCreateFlagBitsARM {
4561    type Output = Self;
4562    #[inline]
4563    fn bitxor(self, rhs: Self) -> Self {
4564        Self(self.0 ^ rhs.0)
4565    }
4566}
4567impl core::ops::BitXorAssign for DataGraphPipelineSessionCreateFlagBitsARM {
4568    #[inline]
4569    fn bitxor_assign(&mut self, rhs: Self) {
4570        self.0 ^= rhs.0;
4571    }
4572}
4573impl core::ops::Not for DataGraphPipelineSessionCreateFlagBitsARM {
4574    type Output = Self;
4575    #[inline]
4576    fn not(self) -> Self {
4577        Self(!self.0)
4578    }
4579}
4580impl core::fmt::Debug for DataGraphPipelineSessionCreateFlagBitsARM {
4581    #[allow(unused_mut, unused_variables)]
4582    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4583        let mut first = true;
4584        let mut remaining = self.0;
4585        if remaining & Self::PROTECTED_BIT.0 != 0 {
4586            if !first {
4587                f.write_str(" | ")?;
4588            }
4589            f.write_str("PROTECTED_BIT")?;
4590            remaining &= !Self::PROTECTED_BIT.0;
4591            first = false;
4592        }
4593        if remaining != 0u64 {
4594            if !first {
4595                f.write_str(" | ")?;
4596            }
4597            write!(f, "{:#x}", remaining)?;
4598        } else if first {
4599            f.write_str("(empty)")?;
4600        }
4601        Ok(())
4602    }
4603}
4604///[`VkDebugReportFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportFlagBitsEXT.html)
4605#[repr(transparent)]
4606#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4607#[doc(alias = "VkDebugReportFlagBitsEXT")]
4608pub struct DebugReportFlagBitsEXT(u32);
4609impl DebugReportFlagBitsEXT {
4610    #[inline]
4611    pub const fn empty() -> Self {
4612        Self(0u32)
4613    }
4614    #[inline]
4615    pub const fn from_raw(value: u32) -> Self {
4616        Self(value)
4617    }
4618    #[inline]
4619    pub const fn as_raw(self) -> u32 {
4620        self.0
4621    }
4622    #[inline]
4623    pub const fn is_empty(self) -> bool {
4624        self.0 == 0u32
4625    }
4626    #[inline]
4627    pub const fn contains(self, other: Self) -> bool {
4628        (self.0 & other.0) == other.0
4629    }
4630    #[inline]
4631    pub const fn all() -> Self {
4632        Self(31u32)
4633    }
4634    ///Bit 0.
4635    pub const INFORMATION: Self = Self(1u32);
4636    ///Bit 1.
4637    pub const WARNING: Self = Self(2u32);
4638    ///Bit 2.
4639    pub const PERFORMANCE_WARNING: Self = Self(4u32);
4640    ///Bit 3.
4641    pub const ERROR: Self = Self(8u32);
4642    ///Bit 4.
4643    pub const DEBUG: Self = Self(16u32);
4644}
4645impl core::ops::BitOr for DebugReportFlagBitsEXT {
4646    type Output = Self;
4647    #[inline]
4648    fn bitor(self, rhs: Self) -> Self {
4649        Self(self.0 | rhs.0)
4650    }
4651}
4652impl core::ops::BitOrAssign for DebugReportFlagBitsEXT {
4653    #[inline]
4654    fn bitor_assign(&mut self, rhs: Self) {
4655        self.0 |= rhs.0;
4656    }
4657}
4658impl core::ops::BitAnd for DebugReportFlagBitsEXT {
4659    type Output = Self;
4660    #[inline]
4661    fn bitand(self, rhs: Self) -> Self {
4662        Self(self.0 & rhs.0)
4663    }
4664}
4665impl core::ops::BitAndAssign for DebugReportFlagBitsEXT {
4666    #[inline]
4667    fn bitand_assign(&mut self, rhs: Self) {
4668        self.0 &= rhs.0;
4669    }
4670}
4671impl core::ops::BitXor for DebugReportFlagBitsEXT {
4672    type Output = Self;
4673    #[inline]
4674    fn bitxor(self, rhs: Self) -> Self {
4675        Self(self.0 ^ rhs.0)
4676    }
4677}
4678impl core::ops::BitXorAssign for DebugReportFlagBitsEXT {
4679    #[inline]
4680    fn bitxor_assign(&mut self, rhs: Self) {
4681        self.0 ^= rhs.0;
4682    }
4683}
4684impl core::ops::Not for DebugReportFlagBitsEXT {
4685    type Output = Self;
4686    #[inline]
4687    fn not(self) -> Self {
4688        Self(!self.0)
4689    }
4690}
4691impl core::fmt::Debug for DebugReportFlagBitsEXT {
4692    #[allow(unused_mut, unused_variables)]
4693    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4694        let mut first = true;
4695        let mut remaining = self.0;
4696        if remaining & Self::INFORMATION.0 != 0 {
4697            if !first {
4698                f.write_str(" | ")?;
4699            }
4700            f.write_str("INFORMATION")?;
4701            remaining &= !Self::INFORMATION.0;
4702            first = false;
4703        }
4704        if remaining & Self::WARNING.0 != 0 {
4705            if !first {
4706                f.write_str(" | ")?;
4707            }
4708            f.write_str("WARNING")?;
4709            remaining &= !Self::WARNING.0;
4710            first = false;
4711        }
4712        if remaining & Self::PERFORMANCE_WARNING.0 != 0 {
4713            if !first {
4714                f.write_str(" | ")?;
4715            }
4716            f.write_str("PERFORMANCE_WARNING")?;
4717            remaining &= !Self::PERFORMANCE_WARNING.0;
4718            first = false;
4719        }
4720        if remaining & Self::ERROR.0 != 0 {
4721            if !first {
4722                f.write_str(" | ")?;
4723            }
4724            f.write_str("ERROR")?;
4725            remaining &= !Self::ERROR.0;
4726            first = false;
4727        }
4728        if remaining & Self::DEBUG.0 != 0 {
4729            if !first {
4730                f.write_str(" | ")?;
4731            }
4732            f.write_str("DEBUG")?;
4733            remaining &= !Self::DEBUG.0;
4734            first = false;
4735        }
4736        if remaining != 0u32 {
4737            if !first {
4738                f.write_str(" | ")?;
4739            }
4740            write!(f, "{:#x}", remaining)?;
4741        } else if first {
4742            f.write_str("(empty)")?;
4743        }
4744        Ok(())
4745    }
4746}
4747///[`VkDebugUtilsMessageSeverityFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessageSeverityFlagBitsEXT.html)
4748#[repr(transparent)]
4749#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4750#[doc(alias = "VkDebugUtilsMessageSeverityFlagBitsEXT")]
4751pub struct DebugUtilsMessageSeverityFlagBitsEXT(u32);
4752impl DebugUtilsMessageSeverityFlagBitsEXT {
4753    #[inline]
4754    pub const fn empty() -> Self {
4755        Self(0u32)
4756    }
4757    #[inline]
4758    pub const fn from_raw(value: u32) -> Self {
4759        Self(value)
4760    }
4761    #[inline]
4762    pub const fn as_raw(self) -> u32 {
4763        self.0
4764    }
4765    #[inline]
4766    pub const fn is_empty(self) -> bool {
4767        self.0 == 0u32
4768    }
4769    #[inline]
4770    pub const fn contains(self, other: Self) -> bool {
4771        (self.0 & other.0) == other.0
4772    }
4773    #[inline]
4774    pub const fn all() -> Self {
4775        Self(4369u32)
4776    }
4777    ///Bit 0.
4778    pub const VERBOSE: Self = Self(1u32);
4779    ///Bit 4.
4780    pub const INFO: Self = Self(16u32);
4781    ///Bit 8.
4782    pub const WARNING: Self = Self(256u32);
4783    ///Bit 12.
4784    pub const ERROR: Self = Self(4096u32);
4785}
4786impl core::ops::BitOr for DebugUtilsMessageSeverityFlagBitsEXT {
4787    type Output = Self;
4788    #[inline]
4789    fn bitor(self, rhs: Self) -> Self {
4790        Self(self.0 | rhs.0)
4791    }
4792}
4793impl core::ops::BitOrAssign for DebugUtilsMessageSeverityFlagBitsEXT {
4794    #[inline]
4795    fn bitor_assign(&mut self, rhs: Self) {
4796        self.0 |= rhs.0;
4797    }
4798}
4799impl core::ops::BitAnd for DebugUtilsMessageSeverityFlagBitsEXT {
4800    type Output = Self;
4801    #[inline]
4802    fn bitand(self, rhs: Self) -> Self {
4803        Self(self.0 & rhs.0)
4804    }
4805}
4806impl core::ops::BitAndAssign for DebugUtilsMessageSeverityFlagBitsEXT {
4807    #[inline]
4808    fn bitand_assign(&mut self, rhs: Self) {
4809        self.0 &= rhs.0;
4810    }
4811}
4812impl core::ops::BitXor for DebugUtilsMessageSeverityFlagBitsEXT {
4813    type Output = Self;
4814    #[inline]
4815    fn bitxor(self, rhs: Self) -> Self {
4816        Self(self.0 ^ rhs.0)
4817    }
4818}
4819impl core::ops::BitXorAssign for DebugUtilsMessageSeverityFlagBitsEXT {
4820    #[inline]
4821    fn bitxor_assign(&mut self, rhs: Self) {
4822        self.0 ^= rhs.0;
4823    }
4824}
4825impl core::ops::Not for DebugUtilsMessageSeverityFlagBitsEXT {
4826    type Output = Self;
4827    #[inline]
4828    fn not(self) -> Self {
4829        Self(!self.0)
4830    }
4831}
4832impl core::fmt::Debug for DebugUtilsMessageSeverityFlagBitsEXT {
4833    #[allow(unused_mut, unused_variables)]
4834    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4835        let mut first = true;
4836        let mut remaining = self.0;
4837        if remaining & Self::VERBOSE.0 != 0 {
4838            if !first {
4839                f.write_str(" | ")?;
4840            }
4841            f.write_str("VERBOSE")?;
4842            remaining &= !Self::VERBOSE.0;
4843            first = false;
4844        }
4845        if remaining & Self::INFO.0 != 0 {
4846            if !first {
4847                f.write_str(" | ")?;
4848            }
4849            f.write_str("INFO")?;
4850            remaining &= !Self::INFO.0;
4851            first = false;
4852        }
4853        if remaining & Self::WARNING.0 != 0 {
4854            if !first {
4855                f.write_str(" | ")?;
4856            }
4857            f.write_str("WARNING")?;
4858            remaining &= !Self::WARNING.0;
4859            first = false;
4860        }
4861        if remaining & Self::ERROR.0 != 0 {
4862            if !first {
4863                f.write_str(" | ")?;
4864            }
4865            f.write_str("ERROR")?;
4866            remaining &= !Self::ERROR.0;
4867            first = false;
4868        }
4869        if remaining != 0u32 {
4870            if !first {
4871                f.write_str(" | ")?;
4872            }
4873            write!(f, "{:#x}", remaining)?;
4874        } else if first {
4875            f.write_str("(empty)")?;
4876        }
4877        Ok(())
4878    }
4879}
4880///[`VkDebugUtilsMessageTypeFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessageTypeFlagBitsEXT.html)
4881#[repr(transparent)]
4882#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4883#[doc(alias = "VkDebugUtilsMessageTypeFlagBitsEXT")]
4884pub struct DebugUtilsMessageTypeFlagBitsEXT(u32);
4885impl DebugUtilsMessageTypeFlagBitsEXT {
4886    #[inline]
4887    pub const fn empty() -> Self {
4888        Self(0u32)
4889    }
4890    #[inline]
4891    pub const fn from_raw(value: u32) -> Self {
4892        Self(value)
4893    }
4894    #[inline]
4895    pub const fn as_raw(self) -> u32 {
4896        self.0
4897    }
4898    #[inline]
4899    pub const fn is_empty(self) -> bool {
4900        self.0 == 0u32
4901    }
4902    #[inline]
4903    pub const fn contains(self, other: Self) -> bool {
4904        (self.0 & other.0) == other.0
4905    }
4906    #[inline]
4907    pub const fn all() -> Self {
4908        Self(15u32)
4909    }
4910    ///Bit 0.
4911    pub const GENERAL: Self = Self(1u32);
4912    ///Bit 1.
4913    pub const VALIDATION: Self = Self(2u32);
4914    ///Bit 2.
4915    pub const PERFORMANCE: Self = Self(4u32);
4916    ///Bit 3.
4917    pub const DEVICE_ADDRESS_BINDING: Self = Self(8u32);
4918}
4919impl core::ops::BitOr for DebugUtilsMessageTypeFlagBitsEXT {
4920    type Output = Self;
4921    #[inline]
4922    fn bitor(self, rhs: Self) -> Self {
4923        Self(self.0 | rhs.0)
4924    }
4925}
4926impl core::ops::BitOrAssign for DebugUtilsMessageTypeFlagBitsEXT {
4927    #[inline]
4928    fn bitor_assign(&mut self, rhs: Self) {
4929        self.0 |= rhs.0;
4930    }
4931}
4932impl core::ops::BitAnd for DebugUtilsMessageTypeFlagBitsEXT {
4933    type Output = Self;
4934    #[inline]
4935    fn bitand(self, rhs: Self) -> Self {
4936        Self(self.0 & rhs.0)
4937    }
4938}
4939impl core::ops::BitAndAssign for DebugUtilsMessageTypeFlagBitsEXT {
4940    #[inline]
4941    fn bitand_assign(&mut self, rhs: Self) {
4942        self.0 &= rhs.0;
4943    }
4944}
4945impl core::ops::BitXor for DebugUtilsMessageTypeFlagBitsEXT {
4946    type Output = Self;
4947    #[inline]
4948    fn bitxor(self, rhs: Self) -> Self {
4949        Self(self.0 ^ rhs.0)
4950    }
4951}
4952impl core::ops::BitXorAssign for DebugUtilsMessageTypeFlagBitsEXT {
4953    #[inline]
4954    fn bitxor_assign(&mut self, rhs: Self) {
4955        self.0 ^= rhs.0;
4956    }
4957}
4958impl core::ops::Not for DebugUtilsMessageTypeFlagBitsEXT {
4959    type Output = Self;
4960    #[inline]
4961    fn not(self) -> Self {
4962        Self(!self.0)
4963    }
4964}
4965impl core::fmt::Debug for DebugUtilsMessageTypeFlagBitsEXT {
4966    #[allow(unused_mut, unused_variables)]
4967    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4968        let mut first = true;
4969        let mut remaining = self.0;
4970        if remaining & Self::GENERAL.0 != 0 {
4971            if !first {
4972                f.write_str(" | ")?;
4973            }
4974            f.write_str("GENERAL")?;
4975            remaining &= !Self::GENERAL.0;
4976            first = false;
4977        }
4978        if remaining & Self::VALIDATION.0 != 0 {
4979            if !first {
4980                f.write_str(" | ")?;
4981            }
4982            f.write_str("VALIDATION")?;
4983            remaining &= !Self::VALIDATION.0;
4984            first = false;
4985        }
4986        if remaining & Self::PERFORMANCE.0 != 0 {
4987            if !first {
4988                f.write_str(" | ")?;
4989            }
4990            f.write_str("PERFORMANCE")?;
4991            remaining &= !Self::PERFORMANCE.0;
4992            first = false;
4993        }
4994        if remaining & Self::DEVICE_ADDRESS_BINDING.0 != 0 {
4995            if !first {
4996                f.write_str(" | ")?;
4997            }
4998            f.write_str("DEVICE_ADDRESS_BINDING")?;
4999            remaining &= !Self::DEVICE_ADDRESS_BINDING.0;
5000            first = false;
5001        }
5002        if remaining != 0u32 {
5003            if !first {
5004                f.write_str(" | ")?;
5005            }
5006            write!(f, "{:#x}", remaining)?;
5007        } else if first {
5008            f.write_str("(empty)")?;
5009        }
5010        Ok(())
5011    }
5012}
5013///[`VkDependencyFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDependencyFlagBits.html)
5014#[repr(transparent)]
5015#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5016#[doc(alias = "VkDependencyFlagBits")]
5017pub struct DependencyFlagBits(u32);
5018impl DependencyFlagBits {
5019    #[inline]
5020    pub const fn empty() -> Self {
5021        Self(0u32)
5022    }
5023    #[inline]
5024    pub const fn from_raw(value: u32) -> Self {
5025        Self(value)
5026    }
5027    #[inline]
5028    pub const fn as_raw(self) -> u32 {
5029        self.0
5030    }
5031    #[inline]
5032    pub const fn is_empty(self) -> bool {
5033        self.0 == 0u32
5034    }
5035    #[inline]
5036    pub const fn contains(self, other: Self) -> bool {
5037        (self.0 & other.0) == other.0
5038    }
5039    #[inline]
5040    pub const fn all() -> Self {
5041        Self(111u32)
5042    }
5043    ///Bit 0.
5044    pub const BY_REGION: Self = Self(1u32);
5045    ///Bit 2.
5046    pub const DEVICE_GROUP: Self = Self(4u32);
5047    ///Bit 1.
5048    pub const VIEW_LOCAL: Self = Self(2u32);
5049    ///Bit 3.
5050    pub const FEEDBACK_LOOP: Self = Self(8u32);
5051    ///Bit 5.
5052    pub const QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES: Self = Self(32u32);
5053    ///Bit 6.
5054    pub const ASYMMETRIC_EVENT: Self = Self(64u32);
5055}
5056impl core::ops::BitOr for DependencyFlagBits {
5057    type Output = Self;
5058    #[inline]
5059    fn bitor(self, rhs: Self) -> Self {
5060        Self(self.0 | rhs.0)
5061    }
5062}
5063impl core::ops::BitOrAssign for DependencyFlagBits {
5064    #[inline]
5065    fn bitor_assign(&mut self, rhs: Self) {
5066        self.0 |= rhs.0;
5067    }
5068}
5069impl core::ops::BitAnd for DependencyFlagBits {
5070    type Output = Self;
5071    #[inline]
5072    fn bitand(self, rhs: Self) -> Self {
5073        Self(self.0 & rhs.0)
5074    }
5075}
5076impl core::ops::BitAndAssign for DependencyFlagBits {
5077    #[inline]
5078    fn bitand_assign(&mut self, rhs: Self) {
5079        self.0 &= rhs.0;
5080    }
5081}
5082impl core::ops::BitXor for DependencyFlagBits {
5083    type Output = Self;
5084    #[inline]
5085    fn bitxor(self, rhs: Self) -> Self {
5086        Self(self.0 ^ rhs.0)
5087    }
5088}
5089impl core::ops::BitXorAssign for DependencyFlagBits {
5090    #[inline]
5091    fn bitxor_assign(&mut self, rhs: Self) {
5092        self.0 ^= rhs.0;
5093    }
5094}
5095impl core::ops::Not for DependencyFlagBits {
5096    type Output = Self;
5097    #[inline]
5098    fn not(self) -> Self {
5099        Self(!self.0)
5100    }
5101}
5102impl core::fmt::Debug for DependencyFlagBits {
5103    #[allow(unused_mut, unused_variables)]
5104    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5105        let mut first = true;
5106        let mut remaining = self.0;
5107        if remaining & Self::BY_REGION.0 != 0 {
5108            if !first {
5109                f.write_str(" | ")?;
5110            }
5111            f.write_str("BY_REGION")?;
5112            remaining &= !Self::BY_REGION.0;
5113            first = false;
5114        }
5115        if remaining & Self::DEVICE_GROUP.0 != 0 {
5116            if !first {
5117                f.write_str(" | ")?;
5118            }
5119            f.write_str("DEVICE_GROUP")?;
5120            remaining &= !Self::DEVICE_GROUP.0;
5121            first = false;
5122        }
5123        if remaining & Self::VIEW_LOCAL.0 != 0 {
5124            if !first {
5125                f.write_str(" | ")?;
5126            }
5127            f.write_str("VIEW_LOCAL")?;
5128            remaining &= !Self::VIEW_LOCAL.0;
5129            first = false;
5130        }
5131        if remaining & Self::FEEDBACK_LOOP.0 != 0 {
5132            if !first {
5133                f.write_str(" | ")?;
5134            }
5135            f.write_str("FEEDBACK_LOOP")?;
5136            remaining &= !Self::FEEDBACK_LOOP.0;
5137            first = false;
5138        }
5139        if remaining & Self::QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES.0 != 0 {
5140            if !first {
5141                f.write_str(" | ")?;
5142            }
5143            f.write_str("QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES")?;
5144            remaining &= !Self::QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES.0;
5145            first = false;
5146        }
5147        if remaining & Self::ASYMMETRIC_EVENT.0 != 0 {
5148            if !first {
5149                f.write_str(" | ")?;
5150            }
5151            f.write_str("ASYMMETRIC_EVENT")?;
5152            remaining &= !Self::ASYMMETRIC_EVENT.0;
5153            first = false;
5154        }
5155        if remaining != 0u32 {
5156            if !first {
5157                f.write_str(" | ")?;
5158            }
5159            write!(f, "{:#x}", remaining)?;
5160        } else if first {
5161            f.write_str("(empty)")?;
5162        }
5163        Ok(())
5164    }
5165}
5166///[`VkDescriptorBindingFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorBindingFlagBits.html)
5167#[repr(transparent)]
5168#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5169#[doc(alias = "VkDescriptorBindingFlagBits")]
5170pub struct DescriptorBindingFlagBits(u32);
5171impl DescriptorBindingFlagBits {
5172    #[inline]
5173    pub const fn empty() -> Self {
5174        Self(0u32)
5175    }
5176    #[inline]
5177    pub const fn from_raw(value: u32) -> Self {
5178        Self(value)
5179    }
5180    #[inline]
5181    pub const fn as_raw(self) -> u32 {
5182        self.0
5183    }
5184    #[inline]
5185    pub const fn is_empty(self) -> bool {
5186        self.0 == 0u32
5187    }
5188    #[inline]
5189    pub const fn contains(self, other: Self) -> bool {
5190        (self.0 & other.0) == other.0
5191    }
5192    #[inline]
5193    pub const fn all() -> Self {
5194        Self(15u32)
5195    }
5196    ///Bit 0.
5197    pub const UPDATE_AFTER_BIND: Self = Self(1u32);
5198    ///Bit 1.
5199    pub const UPDATE_UNUSED_WHILE_PENDING: Self = Self(2u32);
5200    ///Bit 2.
5201    pub const PARTIALLY_BOUND: Self = Self(4u32);
5202    ///Bit 3.
5203    pub const VARIABLE_DESCRIPTOR_COUNT: Self = Self(8u32);
5204}
5205impl core::ops::BitOr for DescriptorBindingFlagBits {
5206    type Output = Self;
5207    #[inline]
5208    fn bitor(self, rhs: Self) -> Self {
5209        Self(self.0 | rhs.0)
5210    }
5211}
5212impl core::ops::BitOrAssign for DescriptorBindingFlagBits {
5213    #[inline]
5214    fn bitor_assign(&mut self, rhs: Self) {
5215        self.0 |= rhs.0;
5216    }
5217}
5218impl core::ops::BitAnd for DescriptorBindingFlagBits {
5219    type Output = Self;
5220    #[inline]
5221    fn bitand(self, rhs: Self) -> Self {
5222        Self(self.0 & rhs.0)
5223    }
5224}
5225impl core::ops::BitAndAssign for DescriptorBindingFlagBits {
5226    #[inline]
5227    fn bitand_assign(&mut self, rhs: Self) {
5228        self.0 &= rhs.0;
5229    }
5230}
5231impl core::ops::BitXor for DescriptorBindingFlagBits {
5232    type Output = Self;
5233    #[inline]
5234    fn bitxor(self, rhs: Self) -> Self {
5235        Self(self.0 ^ rhs.0)
5236    }
5237}
5238impl core::ops::BitXorAssign for DescriptorBindingFlagBits {
5239    #[inline]
5240    fn bitxor_assign(&mut self, rhs: Self) {
5241        self.0 ^= rhs.0;
5242    }
5243}
5244impl core::ops::Not for DescriptorBindingFlagBits {
5245    type Output = Self;
5246    #[inline]
5247    fn not(self) -> Self {
5248        Self(!self.0)
5249    }
5250}
5251impl core::fmt::Debug for DescriptorBindingFlagBits {
5252    #[allow(unused_mut, unused_variables)]
5253    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5254        let mut first = true;
5255        let mut remaining = self.0;
5256        if remaining & Self::UPDATE_AFTER_BIND.0 != 0 {
5257            if !first {
5258                f.write_str(" | ")?;
5259            }
5260            f.write_str("UPDATE_AFTER_BIND")?;
5261            remaining &= !Self::UPDATE_AFTER_BIND.0;
5262            first = false;
5263        }
5264        if remaining & Self::UPDATE_UNUSED_WHILE_PENDING.0 != 0 {
5265            if !first {
5266                f.write_str(" | ")?;
5267            }
5268            f.write_str("UPDATE_UNUSED_WHILE_PENDING")?;
5269            remaining &= !Self::UPDATE_UNUSED_WHILE_PENDING.0;
5270            first = false;
5271        }
5272        if remaining & Self::PARTIALLY_BOUND.0 != 0 {
5273            if !first {
5274                f.write_str(" | ")?;
5275            }
5276            f.write_str("PARTIALLY_BOUND")?;
5277            remaining &= !Self::PARTIALLY_BOUND.0;
5278            first = false;
5279        }
5280        if remaining & Self::VARIABLE_DESCRIPTOR_COUNT.0 != 0 {
5281            if !first {
5282                f.write_str(" | ")?;
5283            }
5284            f.write_str("VARIABLE_DESCRIPTOR_COUNT")?;
5285            remaining &= !Self::VARIABLE_DESCRIPTOR_COUNT.0;
5286            first = false;
5287        }
5288        if remaining != 0u32 {
5289            if !first {
5290                f.write_str(" | ")?;
5291            }
5292            write!(f, "{:#x}", remaining)?;
5293        } else if first {
5294            f.write_str("(empty)")?;
5295        }
5296        Ok(())
5297    }
5298}
5299///[`VkDescriptorPoolCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolCreateFlagBits.html)
5300#[repr(transparent)]
5301#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5302#[doc(alias = "VkDescriptorPoolCreateFlagBits")]
5303pub struct DescriptorPoolCreateFlagBits(u32);
5304impl DescriptorPoolCreateFlagBits {
5305    #[inline]
5306    pub const fn empty() -> Self {
5307        Self(0u32)
5308    }
5309    #[inline]
5310    pub const fn from_raw(value: u32) -> Self {
5311        Self(value)
5312    }
5313    #[inline]
5314    pub const fn as_raw(self) -> u32 {
5315        self.0
5316    }
5317    #[inline]
5318    pub const fn is_empty(self) -> bool {
5319        self.0 == 0u32
5320    }
5321    #[inline]
5322    pub const fn contains(self, other: Self) -> bool {
5323        (self.0 & other.0) == other.0
5324    }
5325    #[inline]
5326    pub const fn all() -> Self {
5327        Self(31u32)
5328    }
5329    ///Bit 0.
5330    pub const FREE_DESCRIPTOR_SET: Self = Self(1u32);
5331    ///Bit 1.
5332    pub const UPDATE_AFTER_BIND: Self = Self(2u32);
5333    pub const HOST_ONLY_BIT: Self = Self::HOST_ONLY;
5334    ///Bit 2.
5335    pub const HOST_ONLY: Self = Self(4u32);
5336    ///Bit 3.
5337    pub const ALLOW_OVERALLOCATION_SETS: Self = Self(8u32);
5338    ///Bit 4.
5339    pub const ALLOW_OVERALLOCATION_POOLS: Self = Self(16u32);
5340}
5341impl core::ops::BitOr for DescriptorPoolCreateFlagBits {
5342    type Output = Self;
5343    #[inline]
5344    fn bitor(self, rhs: Self) -> Self {
5345        Self(self.0 | rhs.0)
5346    }
5347}
5348impl core::ops::BitOrAssign for DescriptorPoolCreateFlagBits {
5349    #[inline]
5350    fn bitor_assign(&mut self, rhs: Self) {
5351        self.0 |= rhs.0;
5352    }
5353}
5354impl core::ops::BitAnd for DescriptorPoolCreateFlagBits {
5355    type Output = Self;
5356    #[inline]
5357    fn bitand(self, rhs: Self) -> Self {
5358        Self(self.0 & rhs.0)
5359    }
5360}
5361impl core::ops::BitAndAssign for DescriptorPoolCreateFlagBits {
5362    #[inline]
5363    fn bitand_assign(&mut self, rhs: Self) {
5364        self.0 &= rhs.0;
5365    }
5366}
5367impl core::ops::BitXor for DescriptorPoolCreateFlagBits {
5368    type Output = Self;
5369    #[inline]
5370    fn bitxor(self, rhs: Self) -> Self {
5371        Self(self.0 ^ rhs.0)
5372    }
5373}
5374impl core::ops::BitXorAssign for DescriptorPoolCreateFlagBits {
5375    #[inline]
5376    fn bitxor_assign(&mut self, rhs: Self) {
5377        self.0 ^= rhs.0;
5378    }
5379}
5380impl core::ops::Not for DescriptorPoolCreateFlagBits {
5381    type Output = Self;
5382    #[inline]
5383    fn not(self) -> Self {
5384        Self(!self.0)
5385    }
5386}
5387impl core::fmt::Debug for DescriptorPoolCreateFlagBits {
5388    #[allow(unused_mut, unused_variables)]
5389    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5390        let mut first = true;
5391        let mut remaining = self.0;
5392        if remaining & Self::FREE_DESCRIPTOR_SET.0 != 0 {
5393            if !first {
5394                f.write_str(" | ")?;
5395            }
5396            f.write_str("FREE_DESCRIPTOR_SET")?;
5397            remaining &= !Self::FREE_DESCRIPTOR_SET.0;
5398            first = false;
5399        }
5400        if remaining & Self::UPDATE_AFTER_BIND.0 != 0 {
5401            if !first {
5402                f.write_str(" | ")?;
5403            }
5404            f.write_str("UPDATE_AFTER_BIND")?;
5405            remaining &= !Self::UPDATE_AFTER_BIND.0;
5406            first = false;
5407        }
5408        if remaining & Self::HOST_ONLY.0 != 0 {
5409            if !first {
5410                f.write_str(" | ")?;
5411            }
5412            f.write_str("HOST_ONLY")?;
5413            remaining &= !Self::HOST_ONLY.0;
5414            first = false;
5415        }
5416        if remaining & Self::ALLOW_OVERALLOCATION_SETS.0 != 0 {
5417            if !first {
5418                f.write_str(" | ")?;
5419            }
5420            f.write_str("ALLOW_OVERALLOCATION_SETS")?;
5421            remaining &= !Self::ALLOW_OVERALLOCATION_SETS.0;
5422            first = false;
5423        }
5424        if remaining & Self::ALLOW_OVERALLOCATION_POOLS.0 != 0 {
5425            if !first {
5426                f.write_str(" | ")?;
5427            }
5428            f.write_str("ALLOW_OVERALLOCATION_POOLS")?;
5429            remaining &= !Self::ALLOW_OVERALLOCATION_POOLS.0;
5430            first = false;
5431        }
5432        if remaining != 0u32 {
5433            if !first {
5434                f.write_str(" | ")?;
5435            }
5436            write!(f, "{:#x}", remaining)?;
5437        } else if first {
5438            f.write_str("(empty)")?;
5439        }
5440        Ok(())
5441    }
5442}
5443///[`VkDescriptorSetLayoutCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateFlagBits.html)
5444#[repr(transparent)]
5445#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5446#[doc(alias = "VkDescriptorSetLayoutCreateFlagBits")]
5447pub struct DescriptorSetLayoutCreateFlagBits(u32);
5448impl DescriptorSetLayoutCreateFlagBits {
5449    #[inline]
5450    pub const fn empty() -> Self {
5451        Self(0u32)
5452    }
5453    #[inline]
5454    pub const fn from_raw(value: u32) -> Self {
5455        Self(value)
5456    }
5457    #[inline]
5458    pub const fn as_raw(self) -> u32 {
5459        self.0
5460    }
5461    #[inline]
5462    pub const fn is_empty(self) -> bool {
5463        self.0 == 0u32
5464    }
5465    #[inline]
5466    pub const fn contains(self, other: Self) -> bool {
5467        (self.0 & other.0) == other.0
5468    }
5469    #[inline]
5470    pub const fn all() -> Self {
5471        Self(247u32)
5472    }
5473    ///Bit 1.
5474    pub const UPDATE_AFTER_BIND_POOL: Self = Self(2u32);
5475    ///Bit 0.
5476    pub const PUSH_DESCRIPTOR: Self = Self(1u32);
5477    ///Bit 4.
5478    pub const DESCRIPTOR_BUFFER: Self = Self(16u32);
5479    ///Bit 5.
5480    pub const EMBEDDED_IMMUTABLE_SAMPLERS: Self = Self(32u32);
5481    pub const HOST_ONLY_POOL_BIT: Self = Self::HOST_ONLY_POOL;
5482    ///Bit 7.
5483    pub const INDIRECT_BINDABLE: Self = Self(128u32);
5484    ///Bit 2.
5485    pub const HOST_ONLY_POOL: Self = Self(4u32);
5486    ///Bit 6.
5487    pub const PER_STAGE: Self = Self(64u32);
5488}
5489impl core::ops::BitOr for DescriptorSetLayoutCreateFlagBits {
5490    type Output = Self;
5491    #[inline]
5492    fn bitor(self, rhs: Self) -> Self {
5493        Self(self.0 | rhs.0)
5494    }
5495}
5496impl core::ops::BitOrAssign for DescriptorSetLayoutCreateFlagBits {
5497    #[inline]
5498    fn bitor_assign(&mut self, rhs: Self) {
5499        self.0 |= rhs.0;
5500    }
5501}
5502impl core::ops::BitAnd for DescriptorSetLayoutCreateFlagBits {
5503    type Output = Self;
5504    #[inline]
5505    fn bitand(self, rhs: Self) -> Self {
5506        Self(self.0 & rhs.0)
5507    }
5508}
5509impl core::ops::BitAndAssign for DescriptorSetLayoutCreateFlagBits {
5510    #[inline]
5511    fn bitand_assign(&mut self, rhs: Self) {
5512        self.0 &= rhs.0;
5513    }
5514}
5515impl core::ops::BitXor for DescriptorSetLayoutCreateFlagBits {
5516    type Output = Self;
5517    #[inline]
5518    fn bitxor(self, rhs: Self) -> Self {
5519        Self(self.0 ^ rhs.0)
5520    }
5521}
5522impl core::ops::BitXorAssign for DescriptorSetLayoutCreateFlagBits {
5523    #[inline]
5524    fn bitxor_assign(&mut self, rhs: Self) {
5525        self.0 ^= rhs.0;
5526    }
5527}
5528impl core::ops::Not for DescriptorSetLayoutCreateFlagBits {
5529    type Output = Self;
5530    #[inline]
5531    fn not(self) -> Self {
5532        Self(!self.0)
5533    }
5534}
5535impl core::fmt::Debug for DescriptorSetLayoutCreateFlagBits {
5536    #[allow(unused_mut, unused_variables)]
5537    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5538        let mut first = true;
5539        let mut remaining = self.0;
5540        if remaining & Self::UPDATE_AFTER_BIND_POOL.0 != 0 {
5541            if !first {
5542                f.write_str(" | ")?;
5543            }
5544            f.write_str("UPDATE_AFTER_BIND_POOL")?;
5545            remaining &= !Self::UPDATE_AFTER_BIND_POOL.0;
5546            first = false;
5547        }
5548        if remaining & Self::PUSH_DESCRIPTOR.0 != 0 {
5549            if !first {
5550                f.write_str(" | ")?;
5551            }
5552            f.write_str("PUSH_DESCRIPTOR")?;
5553            remaining &= !Self::PUSH_DESCRIPTOR.0;
5554            first = false;
5555        }
5556        if remaining & Self::DESCRIPTOR_BUFFER.0 != 0 {
5557            if !first {
5558                f.write_str(" | ")?;
5559            }
5560            f.write_str("DESCRIPTOR_BUFFER")?;
5561            remaining &= !Self::DESCRIPTOR_BUFFER.0;
5562            first = false;
5563        }
5564        if remaining & Self::EMBEDDED_IMMUTABLE_SAMPLERS.0 != 0 {
5565            if !first {
5566                f.write_str(" | ")?;
5567            }
5568            f.write_str("EMBEDDED_IMMUTABLE_SAMPLERS")?;
5569            remaining &= !Self::EMBEDDED_IMMUTABLE_SAMPLERS.0;
5570            first = false;
5571        }
5572        if remaining & Self::INDIRECT_BINDABLE.0 != 0 {
5573            if !first {
5574                f.write_str(" | ")?;
5575            }
5576            f.write_str("INDIRECT_BINDABLE")?;
5577            remaining &= !Self::INDIRECT_BINDABLE.0;
5578            first = false;
5579        }
5580        if remaining & Self::HOST_ONLY_POOL.0 != 0 {
5581            if !first {
5582                f.write_str(" | ")?;
5583            }
5584            f.write_str("HOST_ONLY_POOL")?;
5585            remaining &= !Self::HOST_ONLY_POOL.0;
5586            first = false;
5587        }
5588        if remaining & Self::PER_STAGE.0 != 0 {
5589            if !first {
5590                f.write_str(" | ")?;
5591            }
5592            f.write_str("PER_STAGE")?;
5593            remaining &= !Self::PER_STAGE.0;
5594            first = false;
5595        }
5596        if remaining != 0u32 {
5597            if !first {
5598                f.write_str(" | ")?;
5599            }
5600            write!(f, "{:#x}", remaining)?;
5601        } else if first {
5602            f.write_str("(empty)")?;
5603        }
5604        Ok(())
5605    }
5606}
5607///[`VkDeviceAddressBindingFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceAddressBindingFlagBitsEXT.html)
5608#[repr(transparent)]
5609#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5610#[doc(alias = "VkDeviceAddressBindingFlagBitsEXT")]
5611pub struct DeviceAddressBindingFlagBitsEXT(u32);
5612impl DeviceAddressBindingFlagBitsEXT {
5613    #[inline]
5614    pub const fn empty() -> Self {
5615        Self(0u32)
5616    }
5617    #[inline]
5618    pub const fn from_raw(value: u32) -> Self {
5619        Self(value)
5620    }
5621    #[inline]
5622    pub const fn as_raw(self) -> u32 {
5623        self.0
5624    }
5625    #[inline]
5626    pub const fn is_empty(self) -> bool {
5627        self.0 == 0u32
5628    }
5629    #[inline]
5630    pub const fn contains(self, other: Self) -> bool {
5631        (self.0 & other.0) == other.0
5632    }
5633    #[inline]
5634    pub const fn all() -> Self {
5635        Self(1u32)
5636    }
5637    ///Bit 0.
5638    pub const INTERNAL_OBJECT: Self = Self(1u32);
5639}
5640impl core::ops::BitOr for DeviceAddressBindingFlagBitsEXT {
5641    type Output = Self;
5642    #[inline]
5643    fn bitor(self, rhs: Self) -> Self {
5644        Self(self.0 | rhs.0)
5645    }
5646}
5647impl core::ops::BitOrAssign for DeviceAddressBindingFlagBitsEXT {
5648    #[inline]
5649    fn bitor_assign(&mut self, rhs: Self) {
5650        self.0 |= rhs.0;
5651    }
5652}
5653impl core::ops::BitAnd for DeviceAddressBindingFlagBitsEXT {
5654    type Output = Self;
5655    #[inline]
5656    fn bitand(self, rhs: Self) -> Self {
5657        Self(self.0 & rhs.0)
5658    }
5659}
5660impl core::ops::BitAndAssign for DeviceAddressBindingFlagBitsEXT {
5661    #[inline]
5662    fn bitand_assign(&mut self, rhs: Self) {
5663        self.0 &= rhs.0;
5664    }
5665}
5666impl core::ops::BitXor for DeviceAddressBindingFlagBitsEXT {
5667    type Output = Self;
5668    #[inline]
5669    fn bitxor(self, rhs: Self) -> Self {
5670        Self(self.0 ^ rhs.0)
5671    }
5672}
5673impl core::ops::BitXorAssign for DeviceAddressBindingFlagBitsEXT {
5674    #[inline]
5675    fn bitxor_assign(&mut self, rhs: Self) {
5676        self.0 ^= rhs.0;
5677    }
5678}
5679impl core::ops::Not for DeviceAddressBindingFlagBitsEXT {
5680    type Output = Self;
5681    #[inline]
5682    fn not(self) -> Self {
5683        Self(!self.0)
5684    }
5685}
5686impl core::fmt::Debug for DeviceAddressBindingFlagBitsEXT {
5687    #[allow(unused_mut, unused_variables)]
5688    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5689        let mut first = true;
5690        let mut remaining = self.0;
5691        if remaining & Self::INTERNAL_OBJECT.0 != 0 {
5692            if !first {
5693                f.write_str(" | ")?;
5694            }
5695            f.write_str("INTERNAL_OBJECT")?;
5696            remaining &= !Self::INTERNAL_OBJECT.0;
5697            first = false;
5698        }
5699        if remaining != 0u32 {
5700            if !first {
5701                f.write_str(" | ")?;
5702            }
5703            write!(f, "{:#x}", remaining)?;
5704        } else if first {
5705            f.write_str("(empty)")?;
5706        }
5707        Ok(())
5708    }
5709}
5710///[`VkDeviceDiagnosticsConfigFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigFlagBitsNV.html)
5711#[repr(transparent)]
5712#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5713#[doc(alias = "VkDeviceDiagnosticsConfigFlagBitsNV")]
5714pub struct DeviceDiagnosticsConfigFlagBitsNV(u32);
5715impl DeviceDiagnosticsConfigFlagBitsNV {
5716    #[inline]
5717    pub const fn empty() -> Self {
5718        Self(0u32)
5719    }
5720    #[inline]
5721    pub const fn from_raw(value: u32) -> Self {
5722        Self(value)
5723    }
5724    #[inline]
5725    pub const fn as_raw(self) -> u32 {
5726        self.0
5727    }
5728    #[inline]
5729    pub const fn is_empty(self) -> bool {
5730        self.0 == 0u32
5731    }
5732    #[inline]
5733    pub const fn contains(self, other: Self) -> bool {
5734        (self.0 & other.0) == other.0
5735    }
5736    #[inline]
5737    pub const fn all() -> Self {
5738        Self(15u32)
5739    }
5740    ///Bit 0.
5741    pub const ENABLE_SHADER_DEBUG_INFO: Self = Self(1u32);
5742    ///Bit 1.
5743    pub const ENABLE_RESOURCE_TRACKING: Self = Self(2u32);
5744    ///Bit 2.
5745    pub const ENABLE_AUTOMATIC_CHECKPOINTS: Self = Self(4u32);
5746    ///Bit 3.
5747    pub const ENABLE_SHADER_ERROR_REPORTING: Self = Self(8u32);
5748}
5749impl core::ops::BitOr for DeviceDiagnosticsConfigFlagBitsNV {
5750    type Output = Self;
5751    #[inline]
5752    fn bitor(self, rhs: Self) -> Self {
5753        Self(self.0 | rhs.0)
5754    }
5755}
5756impl core::ops::BitOrAssign for DeviceDiagnosticsConfigFlagBitsNV {
5757    #[inline]
5758    fn bitor_assign(&mut self, rhs: Self) {
5759        self.0 |= rhs.0;
5760    }
5761}
5762impl core::ops::BitAnd for DeviceDiagnosticsConfigFlagBitsNV {
5763    type Output = Self;
5764    #[inline]
5765    fn bitand(self, rhs: Self) -> Self {
5766        Self(self.0 & rhs.0)
5767    }
5768}
5769impl core::ops::BitAndAssign for DeviceDiagnosticsConfigFlagBitsNV {
5770    #[inline]
5771    fn bitand_assign(&mut self, rhs: Self) {
5772        self.0 &= rhs.0;
5773    }
5774}
5775impl core::ops::BitXor for DeviceDiagnosticsConfigFlagBitsNV {
5776    type Output = Self;
5777    #[inline]
5778    fn bitxor(self, rhs: Self) -> Self {
5779        Self(self.0 ^ rhs.0)
5780    }
5781}
5782impl core::ops::BitXorAssign for DeviceDiagnosticsConfigFlagBitsNV {
5783    #[inline]
5784    fn bitxor_assign(&mut self, rhs: Self) {
5785        self.0 ^= rhs.0;
5786    }
5787}
5788impl core::ops::Not for DeviceDiagnosticsConfigFlagBitsNV {
5789    type Output = Self;
5790    #[inline]
5791    fn not(self) -> Self {
5792        Self(!self.0)
5793    }
5794}
5795impl core::fmt::Debug for DeviceDiagnosticsConfigFlagBitsNV {
5796    #[allow(unused_mut, unused_variables)]
5797    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5798        let mut first = true;
5799        let mut remaining = self.0;
5800        if remaining & Self::ENABLE_SHADER_DEBUG_INFO.0 != 0 {
5801            if !first {
5802                f.write_str(" | ")?;
5803            }
5804            f.write_str("ENABLE_SHADER_DEBUG_INFO")?;
5805            remaining &= !Self::ENABLE_SHADER_DEBUG_INFO.0;
5806            first = false;
5807        }
5808        if remaining & Self::ENABLE_RESOURCE_TRACKING.0 != 0 {
5809            if !first {
5810                f.write_str(" | ")?;
5811            }
5812            f.write_str("ENABLE_RESOURCE_TRACKING")?;
5813            remaining &= !Self::ENABLE_RESOURCE_TRACKING.0;
5814            first = false;
5815        }
5816        if remaining & Self::ENABLE_AUTOMATIC_CHECKPOINTS.0 != 0 {
5817            if !first {
5818                f.write_str(" | ")?;
5819            }
5820            f.write_str("ENABLE_AUTOMATIC_CHECKPOINTS")?;
5821            remaining &= !Self::ENABLE_AUTOMATIC_CHECKPOINTS.0;
5822            first = false;
5823        }
5824        if remaining & Self::ENABLE_SHADER_ERROR_REPORTING.0 != 0 {
5825            if !first {
5826                f.write_str(" | ")?;
5827            }
5828            f.write_str("ENABLE_SHADER_ERROR_REPORTING")?;
5829            remaining &= !Self::ENABLE_SHADER_ERROR_REPORTING.0;
5830            first = false;
5831        }
5832        if remaining != 0u32 {
5833            if !first {
5834                f.write_str(" | ")?;
5835            }
5836            write!(f, "{:#x}", remaining)?;
5837        } else if first {
5838            f.write_str("(empty)")?;
5839        }
5840        Ok(())
5841    }
5842}
5843///[`VkDeviceFaultFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultFlagBitsKHR.html)
5844#[repr(transparent)]
5845#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5846#[doc(alias = "VkDeviceFaultFlagBitsKHR")]
5847pub struct DeviceFaultFlagBitsKHR(u32);
5848impl DeviceFaultFlagBitsKHR {
5849    #[inline]
5850    pub const fn empty() -> Self {
5851        Self(0u32)
5852    }
5853    #[inline]
5854    pub const fn from_raw(value: u32) -> Self {
5855        Self(value)
5856    }
5857    #[inline]
5858    pub const fn as_raw(self) -> u32 {
5859        self.0
5860    }
5861    #[inline]
5862    pub const fn is_empty(self) -> bool {
5863        self.0 == 0u32
5864    }
5865    #[inline]
5866    pub const fn contains(self, other: Self) -> bool {
5867        (self.0 & other.0) == other.0
5868    }
5869    #[inline]
5870    pub const fn all() -> Self {
5871        Self(63u32)
5872    }
5873    ///Bit 0.
5874    pub const FLAG_DEVICE_LOST: Self = Self(1u32);
5875    ///Bit 1.
5876    pub const FLAG_MEMORY_ADDRESS: Self = Self(2u32);
5877    ///Bit 2.
5878    pub const FLAG_INSTRUCTION_ADDRESS: Self = Self(4u32);
5879    ///Bit 3.
5880    pub const FLAG_VENDOR: Self = Self(8u32);
5881    ///Bit 4.
5882    pub const FLAG_WATCHDOG_TIMEOUT: Self = Self(16u32);
5883    ///Bit 5.
5884    pub const FLAG_OVERFLOW: Self = Self(32u32);
5885}
5886impl core::ops::BitOr for DeviceFaultFlagBitsKHR {
5887    type Output = Self;
5888    #[inline]
5889    fn bitor(self, rhs: Self) -> Self {
5890        Self(self.0 | rhs.0)
5891    }
5892}
5893impl core::ops::BitOrAssign for DeviceFaultFlagBitsKHR {
5894    #[inline]
5895    fn bitor_assign(&mut self, rhs: Self) {
5896        self.0 |= rhs.0;
5897    }
5898}
5899impl core::ops::BitAnd for DeviceFaultFlagBitsKHR {
5900    type Output = Self;
5901    #[inline]
5902    fn bitand(self, rhs: Self) -> Self {
5903        Self(self.0 & rhs.0)
5904    }
5905}
5906impl core::ops::BitAndAssign for DeviceFaultFlagBitsKHR {
5907    #[inline]
5908    fn bitand_assign(&mut self, rhs: Self) {
5909        self.0 &= rhs.0;
5910    }
5911}
5912impl core::ops::BitXor for DeviceFaultFlagBitsKHR {
5913    type Output = Self;
5914    #[inline]
5915    fn bitxor(self, rhs: Self) -> Self {
5916        Self(self.0 ^ rhs.0)
5917    }
5918}
5919impl core::ops::BitXorAssign for DeviceFaultFlagBitsKHR {
5920    #[inline]
5921    fn bitxor_assign(&mut self, rhs: Self) {
5922        self.0 ^= rhs.0;
5923    }
5924}
5925impl core::ops::Not for DeviceFaultFlagBitsKHR {
5926    type Output = Self;
5927    #[inline]
5928    fn not(self) -> Self {
5929        Self(!self.0)
5930    }
5931}
5932impl core::fmt::Debug for DeviceFaultFlagBitsKHR {
5933    #[allow(unused_mut, unused_variables)]
5934    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5935        let mut first = true;
5936        let mut remaining = self.0;
5937        if remaining & Self::FLAG_DEVICE_LOST.0 != 0 {
5938            if !first {
5939                f.write_str(" | ")?;
5940            }
5941            f.write_str("FLAG_DEVICE_LOST")?;
5942            remaining &= !Self::FLAG_DEVICE_LOST.0;
5943            first = false;
5944        }
5945        if remaining & Self::FLAG_MEMORY_ADDRESS.0 != 0 {
5946            if !first {
5947                f.write_str(" | ")?;
5948            }
5949            f.write_str("FLAG_MEMORY_ADDRESS")?;
5950            remaining &= !Self::FLAG_MEMORY_ADDRESS.0;
5951            first = false;
5952        }
5953        if remaining & Self::FLAG_INSTRUCTION_ADDRESS.0 != 0 {
5954            if !first {
5955                f.write_str(" | ")?;
5956            }
5957            f.write_str("FLAG_INSTRUCTION_ADDRESS")?;
5958            remaining &= !Self::FLAG_INSTRUCTION_ADDRESS.0;
5959            first = false;
5960        }
5961        if remaining & Self::FLAG_VENDOR.0 != 0 {
5962            if !first {
5963                f.write_str(" | ")?;
5964            }
5965            f.write_str("FLAG_VENDOR")?;
5966            remaining &= !Self::FLAG_VENDOR.0;
5967            first = false;
5968        }
5969        if remaining & Self::FLAG_WATCHDOG_TIMEOUT.0 != 0 {
5970            if !first {
5971                f.write_str(" | ")?;
5972            }
5973            f.write_str("FLAG_WATCHDOG_TIMEOUT")?;
5974            remaining &= !Self::FLAG_WATCHDOG_TIMEOUT.0;
5975            first = false;
5976        }
5977        if remaining & Self::FLAG_OVERFLOW.0 != 0 {
5978            if !first {
5979                f.write_str(" | ")?;
5980            }
5981            f.write_str("FLAG_OVERFLOW")?;
5982            remaining &= !Self::FLAG_OVERFLOW.0;
5983            first = false;
5984        }
5985        if remaining != 0u32 {
5986            if !first {
5987                f.write_str(" | ")?;
5988            }
5989            write!(f, "{:#x}", remaining)?;
5990        } else if first {
5991            f.write_str("(empty)")?;
5992        }
5993        Ok(())
5994    }
5995}
5996///[`VkDeviceGroupPresentModeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupPresentModeFlagBitsKHR.html)
5997#[repr(transparent)]
5998#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5999#[doc(alias = "VkDeviceGroupPresentModeFlagBitsKHR")]
6000pub struct DeviceGroupPresentModeFlagBitsKHR(u32);
6001impl DeviceGroupPresentModeFlagBitsKHR {
6002    #[inline]
6003    pub const fn empty() -> Self {
6004        Self(0u32)
6005    }
6006    #[inline]
6007    pub const fn from_raw(value: u32) -> Self {
6008        Self(value)
6009    }
6010    #[inline]
6011    pub const fn as_raw(self) -> u32 {
6012        self.0
6013    }
6014    #[inline]
6015    pub const fn is_empty(self) -> bool {
6016        self.0 == 0u32
6017    }
6018    #[inline]
6019    pub const fn contains(self, other: Self) -> bool {
6020        (self.0 & other.0) == other.0
6021    }
6022    #[inline]
6023    pub const fn all() -> Self {
6024        Self(15u32)
6025    }
6026    ///Bit 0.
6027    pub const LOCAL: Self = Self(1u32);
6028    ///Bit 1.
6029    pub const REMOTE: Self = Self(2u32);
6030    ///Bit 2.
6031    pub const SUM: Self = Self(4u32);
6032    ///Bit 3.
6033    pub const LOCAL_MULTI_DEVICE: Self = Self(8u32);
6034}
6035impl core::ops::BitOr for DeviceGroupPresentModeFlagBitsKHR {
6036    type Output = Self;
6037    #[inline]
6038    fn bitor(self, rhs: Self) -> Self {
6039        Self(self.0 | rhs.0)
6040    }
6041}
6042impl core::ops::BitOrAssign for DeviceGroupPresentModeFlagBitsKHR {
6043    #[inline]
6044    fn bitor_assign(&mut self, rhs: Self) {
6045        self.0 |= rhs.0;
6046    }
6047}
6048impl core::ops::BitAnd for DeviceGroupPresentModeFlagBitsKHR {
6049    type Output = Self;
6050    #[inline]
6051    fn bitand(self, rhs: Self) -> Self {
6052        Self(self.0 & rhs.0)
6053    }
6054}
6055impl core::ops::BitAndAssign for DeviceGroupPresentModeFlagBitsKHR {
6056    #[inline]
6057    fn bitand_assign(&mut self, rhs: Self) {
6058        self.0 &= rhs.0;
6059    }
6060}
6061impl core::ops::BitXor for DeviceGroupPresentModeFlagBitsKHR {
6062    type Output = Self;
6063    #[inline]
6064    fn bitxor(self, rhs: Self) -> Self {
6065        Self(self.0 ^ rhs.0)
6066    }
6067}
6068impl core::ops::BitXorAssign for DeviceGroupPresentModeFlagBitsKHR {
6069    #[inline]
6070    fn bitxor_assign(&mut self, rhs: Self) {
6071        self.0 ^= rhs.0;
6072    }
6073}
6074impl core::ops::Not for DeviceGroupPresentModeFlagBitsKHR {
6075    type Output = Self;
6076    #[inline]
6077    fn not(self) -> Self {
6078        Self(!self.0)
6079    }
6080}
6081impl core::fmt::Debug for DeviceGroupPresentModeFlagBitsKHR {
6082    #[allow(unused_mut, unused_variables)]
6083    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6084        let mut first = true;
6085        let mut remaining = self.0;
6086        if remaining & Self::LOCAL.0 != 0 {
6087            if !first {
6088                f.write_str(" | ")?;
6089            }
6090            f.write_str("LOCAL")?;
6091            remaining &= !Self::LOCAL.0;
6092            first = false;
6093        }
6094        if remaining & Self::REMOTE.0 != 0 {
6095            if !first {
6096                f.write_str(" | ")?;
6097            }
6098            f.write_str("REMOTE")?;
6099            remaining &= !Self::REMOTE.0;
6100            first = false;
6101        }
6102        if remaining & Self::SUM.0 != 0 {
6103            if !first {
6104                f.write_str(" | ")?;
6105            }
6106            f.write_str("SUM")?;
6107            remaining &= !Self::SUM.0;
6108            first = false;
6109        }
6110        if remaining & Self::LOCAL_MULTI_DEVICE.0 != 0 {
6111            if !first {
6112                f.write_str(" | ")?;
6113            }
6114            f.write_str("LOCAL_MULTI_DEVICE")?;
6115            remaining &= !Self::LOCAL_MULTI_DEVICE.0;
6116            first = false;
6117        }
6118        if remaining != 0u32 {
6119            if !first {
6120                f.write_str(" | ")?;
6121            }
6122            write!(f, "{:#x}", remaining)?;
6123        } else if first {
6124            f.write_str("(empty)")?;
6125        }
6126        Ok(())
6127    }
6128}
6129///[`VkDeviceQueueCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueCreateFlagBits.html)
6130#[repr(transparent)]
6131#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6132#[doc(alias = "VkDeviceQueueCreateFlagBits")]
6133pub struct DeviceQueueCreateFlagBits(u32);
6134impl DeviceQueueCreateFlagBits {
6135    #[inline]
6136    pub const fn empty() -> Self {
6137        Self(0u32)
6138    }
6139    #[inline]
6140    pub const fn from_raw(value: u32) -> Self {
6141        Self(value)
6142    }
6143    #[inline]
6144    pub const fn as_raw(self) -> u32 {
6145        self.0
6146    }
6147    #[inline]
6148    pub const fn is_empty(self) -> bool {
6149        self.0 == 0u32
6150    }
6151    #[inline]
6152    pub const fn contains(self, other: Self) -> bool {
6153        (self.0 & other.0) == other.0
6154    }
6155    #[inline]
6156    pub const fn all() -> Self {
6157        Self(5u32)
6158    }
6159    ///Bit 0.
6160    pub const PROTECTED: Self = Self(1u32);
6161    ///Bit 2.
6162    pub const INTERNALLY_SYNCHRONIZED: Self = Self(4u32);
6163}
6164impl core::ops::BitOr for DeviceQueueCreateFlagBits {
6165    type Output = Self;
6166    #[inline]
6167    fn bitor(self, rhs: Self) -> Self {
6168        Self(self.0 | rhs.0)
6169    }
6170}
6171impl core::ops::BitOrAssign for DeviceQueueCreateFlagBits {
6172    #[inline]
6173    fn bitor_assign(&mut self, rhs: Self) {
6174        self.0 |= rhs.0;
6175    }
6176}
6177impl core::ops::BitAnd for DeviceQueueCreateFlagBits {
6178    type Output = Self;
6179    #[inline]
6180    fn bitand(self, rhs: Self) -> Self {
6181        Self(self.0 & rhs.0)
6182    }
6183}
6184impl core::ops::BitAndAssign for DeviceQueueCreateFlagBits {
6185    #[inline]
6186    fn bitand_assign(&mut self, rhs: Self) {
6187        self.0 &= rhs.0;
6188    }
6189}
6190impl core::ops::BitXor for DeviceQueueCreateFlagBits {
6191    type Output = Self;
6192    #[inline]
6193    fn bitxor(self, rhs: Self) -> Self {
6194        Self(self.0 ^ rhs.0)
6195    }
6196}
6197impl core::ops::BitXorAssign for DeviceQueueCreateFlagBits {
6198    #[inline]
6199    fn bitxor_assign(&mut self, rhs: Self) {
6200        self.0 ^= rhs.0;
6201    }
6202}
6203impl core::ops::Not for DeviceQueueCreateFlagBits {
6204    type Output = Self;
6205    #[inline]
6206    fn not(self) -> Self {
6207        Self(!self.0)
6208    }
6209}
6210impl core::fmt::Debug for DeviceQueueCreateFlagBits {
6211    #[allow(unused_mut, unused_variables)]
6212    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6213        let mut first = true;
6214        let mut remaining = self.0;
6215        if remaining & Self::PROTECTED.0 != 0 {
6216            if !first {
6217                f.write_str(" | ")?;
6218            }
6219            f.write_str("PROTECTED")?;
6220            remaining &= !Self::PROTECTED.0;
6221            first = false;
6222        }
6223        if remaining & Self::INTERNALLY_SYNCHRONIZED.0 != 0 {
6224            if !first {
6225                f.write_str(" | ")?;
6226            }
6227            f.write_str("INTERNALLY_SYNCHRONIZED")?;
6228            remaining &= !Self::INTERNALLY_SYNCHRONIZED.0;
6229            first = false;
6230        }
6231        if remaining != 0u32 {
6232            if !first {
6233                f.write_str(" | ")?;
6234            }
6235            write!(f, "{:#x}", remaining)?;
6236        } else if first {
6237            f.write_str("(empty)")?;
6238        }
6239        Ok(())
6240    }
6241}
6242///[`VkDisplayPlaneAlphaFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneAlphaFlagBitsKHR.html)
6243#[repr(transparent)]
6244#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6245#[doc(alias = "VkDisplayPlaneAlphaFlagBitsKHR")]
6246pub struct DisplayPlaneAlphaFlagBitsKHR(u32);
6247impl DisplayPlaneAlphaFlagBitsKHR {
6248    #[inline]
6249    pub const fn empty() -> Self {
6250        Self(0u32)
6251    }
6252    #[inline]
6253    pub const fn from_raw(value: u32) -> Self {
6254        Self(value)
6255    }
6256    #[inline]
6257    pub const fn as_raw(self) -> u32 {
6258        self.0
6259    }
6260    #[inline]
6261    pub const fn is_empty(self) -> bool {
6262        self.0 == 0u32
6263    }
6264    #[inline]
6265    pub const fn contains(self, other: Self) -> bool {
6266        (self.0 & other.0) == other.0
6267    }
6268    #[inline]
6269    pub const fn all() -> Self {
6270        Self(15u32)
6271    }
6272    ///Bit 0.
6273    pub const OPAQUE: Self = Self(1u32);
6274    ///Bit 1.
6275    pub const GLOBAL: Self = Self(2u32);
6276    ///Bit 2.
6277    pub const PER_PIXEL: Self = Self(4u32);
6278    ///Bit 3.
6279    pub const PER_PIXEL_PREMULTIPLIED: Self = Self(8u32);
6280}
6281impl core::ops::BitOr for DisplayPlaneAlphaFlagBitsKHR {
6282    type Output = Self;
6283    #[inline]
6284    fn bitor(self, rhs: Self) -> Self {
6285        Self(self.0 | rhs.0)
6286    }
6287}
6288impl core::ops::BitOrAssign for DisplayPlaneAlphaFlagBitsKHR {
6289    #[inline]
6290    fn bitor_assign(&mut self, rhs: Self) {
6291        self.0 |= rhs.0;
6292    }
6293}
6294impl core::ops::BitAnd for DisplayPlaneAlphaFlagBitsKHR {
6295    type Output = Self;
6296    #[inline]
6297    fn bitand(self, rhs: Self) -> Self {
6298        Self(self.0 & rhs.0)
6299    }
6300}
6301impl core::ops::BitAndAssign for DisplayPlaneAlphaFlagBitsKHR {
6302    #[inline]
6303    fn bitand_assign(&mut self, rhs: Self) {
6304        self.0 &= rhs.0;
6305    }
6306}
6307impl core::ops::BitXor for DisplayPlaneAlphaFlagBitsKHR {
6308    type Output = Self;
6309    #[inline]
6310    fn bitxor(self, rhs: Self) -> Self {
6311        Self(self.0 ^ rhs.0)
6312    }
6313}
6314impl core::ops::BitXorAssign for DisplayPlaneAlphaFlagBitsKHR {
6315    #[inline]
6316    fn bitxor_assign(&mut self, rhs: Self) {
6317        self.0 ^= rhs.0;
6318    }
6319}
6320impl core::ops::Not for DisplayPlaneAlphaFlagBitsKHR {
6321    type Output = Self;
6322    #[inline]
6323    fn not(self) -> Self {
6324        Self(!self.0)
6325    }
6326}
6327impl core::fmt::Debug for DisplayPlaneAlphaFlagBitsKHR {
6328    #[allow(unused_mut, unused_variables)]
6329    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6330        let mut first = true;
6331        let mut remaining = self.0;
6332        if remaining & Self::OPAQUE.0 != 0 {
6333            if !first {
6334                f.write_str(" | ")?;
6335            }
6336            f.write_str("OPAQUE")?;
6337            remaining &= !Self::OPAQUE.0;
6338            first = false;
6339        }
6340        if remaining & Self::GLOBAL.0 != 0 {
6341            if !first {
6342                f.write_str(" | ")?;
6343            }
6344            f.write_str("GLOBAL")?;
6345            remaining &= !Self::GLOBAL.0;
6346            first = false;
6347        }
6348        if remaining & Self::PER_PIXEL.0 != 0 {
6349            if !first {
6350                f.write_str(" | ")?;
6351            }
6352            f.write_str("PER_PIXEL")?;
6353            remaining &= !Self::PER_PIXEL.0;
6354            first = false;
6355        }
6356        if remaining & Self::PER_PIXEL_PREMULTIPLIED.0 != 0 {
6357            if !first {
6358                f.write_str(" | ")?;
6359            }
6360            f.write_str("PER_PIXEL_PREMULTIPLIED")?;
6361            remaining &= !Self::PER_PIXEL_PREMULTIPLIED.0;
6362            first = false;
6363        }
6364        if remaining != 0u32 {
6365            if !first {
6366                f.write_str(" | ")?;
6367            }
6368            write!(f, "{:#x}", remaining)?;
6369        } else if first {
6370            f.write_str("(empty)")?;
6371        }
6372        Ok(())
6373    }
6374}
6375///[`VkEventCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkEventCreateFlagBits.html)
6376#[repr(transparent)]
6377#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6378#[doc(alias = "VkEventCreateFlagBits")]
6379pub struct EventCreateFlagBits(u32);
6380impl EventCreateFlagBits {
6381    #[inline]
6382    pub const fn empty() -> Self {
6383        Self(0u32)
6384    }
6385    #[inline]
6386    pub const fn from_raw(value: u32) -> Self {
6387        Self(value)
6388    }
6389    #[inline]
6390    pub const fn as_raw(self) -> u32 {
6391        self.0
6392    }
6393    #[inline]
6394    pub const fn is_empty(self) -> bool {
6395        self.0 == 0u32
6396    }
6397    #[inline]
6398    pub const fn contains(self, other: Self) -> bool {
6399        (self.0 & other.0) == other.0
6400    }
6401    #[inline]
6402    pub const fn all() -> Self {
6403        Self(1u32)
6404    }
6405    ///Bit 0.
6406    pub const DEVICE_ONLY: Self = Self(1u32);
6407}
6408impl core::ops::BitOr for EventCreateFlagBits {
6409    type Output = Self;
6410    #[inline]
6411    fn bitor(self, rhs: Self) -> Self {
6412        Self(self.0 | rhs.0)
6413    }
6414}
6415impl core::ops::BitOrAssign for EventCreateFlagBits {
6416    #[inline]
6417    fn bitor_assign(&mut self, rhs: Self) {
6418        self.0 |= rhs.0;
6419    }
6420}
6421impl core::ops::BitAnd for EventCreateFlagBits {
6422    type Output = Self;
6423    #[inline]
6424    fn bitand(self, rhs: Self) -> Self {
6425        Self(self.0 & rhs.0)
6426    }
6427}
6428impl core::ops::BitAndAssign for EventCreateFlagBits {
6429    #[inline]
6430    fn bitand_assign(&mut self, rhs: Self) {
6431        self.0 &= rhs.0;
6432    }
6433}
6434impl core::ops::BitXor for EventCreateFlagBits {
6435    type Output = Self;
6436    #[inline]
6437    fn bitxor(self, rhs: Self) -> Self {
6438        Self(self.0 ^ rhs.0)
6439    }
6440}
6441impl core::ops::BitXorAssign for EventCreateFlagBits {
6442    #[inline]
6443    fn bitxor_assign(&mut self, rhs: Self) {
6444        self.0 ^= rhs.0;
6445    }
6446}
6447impl core::ops::Not for EventCreateFlagBits {
6448    type Output = Self;
6449    #[inline]
6450    fn not(self) -> Self {
6451        Self(!self.0)
6452    }
6453}
6454impl core::fmt::Debug for EventCreateFlagBits {
6455    #[allow(unused_mut, unused_variables)]
6456    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6457        let mut first = true;
6458        let mut remaining = self.0;
6459        if remaining & Self::DEVICE_ONLY.0 != 0 {
6460            if !first {
6461                f.write_str(" | ")?;
6462            }
6463            f.write_str("DEVICE_ONLY")?;
6464            remaining &= !Self::DEVICE_ONLY.0;
6465            first = false;
6466        }
6467        if remaining != 0u32 {
6468            if !first {
6469                f.write_str(" | ")?;
6470            }
6471            write!(f, "{:#x}", remaining)?;
6472        } else if first {
6473            f.write_str("(empty)")?;
6474        }
6475        Ok(())
6476    }
6477}
6478///[`VkExportMetalObjectTypeFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalObjectTypeFlagBitsEXT.html)
6479#[repr(transparent)]
6480#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6481#[doc(alias = "VkExportMetalObjectTypeFlagBitsEXT")]
6482pub struct ExportMetalObjectTypeFlagBitsEXT(u32);
6483impl ExportMetalObjectTypeFlagBitsEXT {
6484    #[inline]
6485    pub const fn empty() -> Self {
6486        Self(0u32)
6487    }
6488    #[inline]
6489    pub const fn from_raw(value: u32) -> Self {
6490        Self(value)
6491    }
6492    #[inline]
6493    pub const fn as_raw(self) -> u32 {
6494        self.0
6495    }
6496    #[inline]
6497    pub const fn is_empty(self) -> bool {
6498        self.0 == 0u32
6499    }
6500    #[inline]
6501    pub const fn contains(self, other: Self) -> bool {
6502        (self.0 & other.0) == other.0
6503    }
6504    #[inline]
6505    pub const fn all() -> Self {
6506        Self(63u32)
6507    }
6508    ///Bit 0.
6509    pub const METAL_DEVICE: Self = Self(1u32);
6510    ///Bit 1.
6511    pub const METAL_COMMAND_QUEUE: Self = Self(2u32);
6512    ///Bit 2.
6513    pub const METAL_BUFFER: Self = Self(4u32);
6514    ///Bit 3.
6515    pub const METAL_TEXTURE: Self = Self(8u32);
6516    ///Bit 4.
6517    pub const METAL_IOSURFACE: Self = Self(16u32);
6518    ///Bit 5.
6519    pub const METAL_SHARED_EVENT: Self = Self(32u32);
6520}
6521impl core::ops::BitOr for ExportMetalObjectTypeFlagBitsEXT {
6522    type Output = Self;
6523    #[inline]
6524    fn bitor(self, rhs: Self) -> Self {
6525        Self(self.0 | rhs.0)
6526    }
6527}
6528impl core::ops::BitOrAssign for ExportMetalObjectTypeFlagBitsEXT {
6529    #[inline]
6530    fn bitor_assign(&mut self, rhs: Self) {
6531        self.0 |= rhs.0;
6532    }
6533}
6534impl core::ops::BitAnd for ExportMetalObjectTypeFlagBitsEXT {
6535    type Output = Self;
6536    #[inline]
6537    fn bitand(self, rhs: Self) -> Self {
6538        Self(self.0 & rhs.0)
6539    }
6540}
6541impl core::ops::BitAndAssign for ExportMetalObjectTypeFlagBitsEXT {
6542    #[inline]
6543    fn bitand_assign(&mut self, rhs: Self) {
6544        self.0 &= rhs.0;
6545    }
6546}
6547impl core::ops::BitXor for ExportMetalObjectTypeFlagBitsEXT {
6548    type Output = Self;
6549    #[inline]
6550    fn bitxor(self, rhs: Self) -> Self {
6551        Self(self.0 ^ rhs.0)
6552    }
6553}
6554impl core::ops::BitXorAssign for ExportMetalObjectTypeFlagBitsEXT {
6555    #[inline]
6556    fn bitxor_assign(&mut self, rhs: Self) {
6557        self.0 ^= rhs.0;
6558    }
6559}
6560impl core::ops::Not for ExportMetalObjectTypeFlagBitsEXT {
6561    type Output = Self;
6562    #[inline]
6563    fn not(self) -> Self {
6564        Self(!self.0)
6565    }
6566}
6567impl core::fmt::Debug for ExportMetalObjectTypeFlagBitsEXT {
6568    #[allow(unused_mut, unused_variables)]
6569    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6570        let mut first = true;
6571        let mut remaining = self.0;
6572        if remaining & Self::METAL_DEVICE.0 != 0 {
6573            if !first {
6574                f.write_str(" | ")?;
6575            }
6576            f.write_str("METAL_DEVICE")?;
6577            remaining &= !Self::METAL_DEVICE.0;
6578            first = false;
6579        }
6580        if remaining & Self::METAL_COMMAND_QUEUE.0 != 0 {
6581            if !first {
6582                f.write_str(" | ")?;
6583            }
6584            f.write_str("METAL_COMMAND_QUEUE")?;
6585            remaining &= !Self::METAL_COMMAND_QUEUE.0;
6586            first = false;
6587        }
6588        if remaining & Self::METAL_BUFFER.0 != 0 {
6589            if !first {
6590                f.write_str(" | ")?;
6591            }
6592            f.write_str("METAL_BUFFER")?;
6593            remaining &= !Self::METAL_BUFFER.0;
6594            first = false;
6595        }
6596        if remaining & Self::METAL_TEXTURE.0 != 0 {
6597            if !first {
6598                f.write_str(" | ")?;
6599            }
6600            f.write_str("METAL_TEXTURE")?;
6601            remaining &= !Self::METAL_TEXTURE.0;
6602            first = false;
6603        }
6604        if remaining & Self::METAL_IOSURFACE.0 != 0 {
6605            if !first {
6606                f.write_str(" | ")?;
6607            }
6608            f.write_str("METAL_IOSURFACE")?;
6609            remaining &= !Self::METAL_IOSURFACE.0;
6610            first = false;
6611        }
6612        if remaining & Self::METAL_SHARED_EVENT.0 != 0 {
6613            if !first {
6614                f.write_str(" | ")?;
6615            }
6616            f.write_str("METAL_SHARED_EVENT")?;
6617            remaining &= !Self::METAL_SHARED_EVENT.0;
6618            first = false;
6619        }
6620        if remaining != 0u32 {
6621            if !first {
6622                f.write_str(" | ")?;
6623            }
6624            write!(f, "{:#x}", remaining)?;
6625        } else if first {
6626            f.write_str("(empty)")?;
6627        }
6628        Ok(())
6629    }
6630}
6631///[`VkExternalFenceFeatureFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceFeatureFlagBits.html)
6632#[repr(transparent)]
6633#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6634#[doc(alias = "VkExternalFenceFeatureFlagBits")]
6635pub struct ExternalFenceFeatureFlagBits(u32);
6636impl ExternalFenceFeatureFlagBits {
6637    #[inline]
6638    pub const fn empty() -> Self {
6639        Self(0u32)
6640    }
6641    #[inline]
6642    pub const fn from_raw(value: u32) -> Self {
6643        Self(value)
6644    }
6645    #[inline]
6646    pub const fn as_raw(self) -> u32 {
6647        self.0
6648    }
6649    #[inline]
6650    pub const fn is_empty(self) -> bool {
6651        self.0 == 0u32
6652    }
6653    #[inline]
6654    pub const fn contains(self, other: Self) -> bool {
6655        (self.0 & other.0) == other.0
6656    }
6657    #[inline]
6658    pub const fn all() -> Self {
6659        Self(3u32)
6660    }
6661    ///Bit 0.
6662    pub const EXPORTABLE: Self = Self(1u32);
6663    ///Bit 1.
6664    pub const IMPORTABLE: Self = Self(2u32);
6665}
6666impl core::ops::BitOr for ExternalFenceFeatureFlagBits {
6667    type Output = Self;
6668    #[inline]
6669    fn bitor(self, rhs: Self) -> Self {
6670        Self(self.0 | rhs.0)
6671    }
6672}
6673impl core::ops::BitOrAssign for ExternalFenceFeatureFlagBits {
6674    #[inline]
6675    fn bitor_assign(&mut self, rhs: Self) {
6676        self.0 |= rhs.0;
6677    }
6678}
6679impl core::ops::BitAnd for ExternalFenceFeatureFlagBits {
6680    type Output = Self;
6681    #[inline]
6682    fn bitand(self, rhs: Self) -> Self {
6683        Self(self.0 & rhs.0)
6684    }
6685}
6686impl core::ops::BitAndAssign for ExternalFenceFeatureFlagBits {
6687    #[inline]
6688    fn bitand_assign(&mut self, rhs: Self) {
6689        self.0 &= rhs.0;
6690    }
6691}
6692impl core::ops::BitXor for ExternalFenceFeatureFlagBits {
6693    type Output = Self;
6694    #[inline]
6695    fn bitxor(self, rhs: Self) -> Self {
6696        Self(self.0 ^ rhs.0)
6697    }
6698}
6699impl core::ops::BitXorAssign for ExternalFenceFeatureFlagBits {
6700    #[inline]
6701    fn bitxor_assign(&mut self, rhs: Self) {
6702        self.0 ^= rhs.0;
6703    }
6704}
6705impl core::ops::Not for ExternalFenceFeatureFlagBits {
6706    type Output = Self;
6707    #[inline]
6708    fn not(self) -> Self {
6709        Self(!self.0)
6710    }
6711}
6712impl core::fmt::Debug for ExternalFenceFeatureFlagBits {
6713    #[allow(unused_mut, unused_variables)]
6714    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6715        let mut first = true;
6716        let mut remaining = self.0;
6717        if remaining & Self::EXPORTABLE.0 != 0 {
6718            if !first {
6719                f.write_str(" | ")?;
6720            }
6721            f.write_str("EXPORTABLE")?;
6722            remaining &= !Self::EXPORTABLE.0;
6723            first = false;
6724        }
6725        if remaining & Self::IMPORTABLE.0 != 0 {
6726            if !first {
6727                f.write_str(" | ")?;
6728            }
6729            f.write_str("IMPORTABLE")?;
6730            remaining &= !Self::IMPORTABLE.0;
6731            first = false;
6732        }
6733        if remaining != 0u32 {
6734            if !first {
6735                f.write_str(" | ")?;
6736            }
6737            write!(f, "{:#x}", remaining)?;
6738        } else if first {
6739            f.write_str("(empty)")?;
6740        }
6741        Ok(())
6742    }
6743}
6744///[`VkExternalFenceHandleTypeFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceHandleTypeFlagBits.html)
6745#[repr(transparent)]
6746#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6747#[doc(alias = "VkExternalFenceHandleTypeFlagBits")]
6748pub struct ExternalFenceHandleTypeFlagBits(u32);
6749impl ExternalFenceHandleTypeFlagBits {
6750    #[inline]
6751    pub const fn empty() -> Self {
6752        Self(0u32)
6753    }
6754    #[inline]
6755    pub const fn from_raw(value: u32) -> Self {
6756        Self(value)
6757    }
6758    #[inline]
6759    pub const fn as_raw(self) -> u32 {
6760        self.0
6761    }
6762    #[inline]
6763    pub const fn is_empty(self) -> bool {
6764        self.0 == 0u32
6765    }
6766    #[inline]
6767    pub const fn contains(self, other: Self) -> bool {
6768        (self.0 & other.0) == other.0
6769    }
6770    #[inline]
6771    pub const fn all() -> Self {
6772        Self(15u32)
6773    }
6774    ///Bit 0.
6775    pub const OPAQUE_FD: Self = Self(1u32);
6776    ///Bit 1.
6777    pub const OPAQUE_WIN32: Self = Self(2u32);
6778    ///Bit 2.
6779    pub const OPAQUE_WIN32_KMT: Self = Self(4u32);
6780    ///Bit 3.
6781    pub const SYNC_FD: Self = Self(8u32);
6782}
6783impl core::ops::BitOr for ExternalFenceHandleTypeFlagBits {
6784    type Output = Self;
6785    #[inline]
6786    fn bitor(self, rhs: Self) -> Self {
6787        Self(self.0 | rhs.0)
6788    }
6789}
6790impl core::ops::BitOrAssign for ExternalFenceHandleTypeFlagBits {
6791    #[inline]
6792    fn bitor_assign(&mut self, rhs: Self) {
6793        self.0 |= rhs.0;
6794    }
6795}
6796impl core::ops::BitAnd for ExternalFenceHandleTypeFlagBits {
6797    type Output = Self;
6798    #[inline]
6799    fn bitand(self, rhs: Self) -> Self {
6800        Self(self.0 & rhs.0)
6801    }
6802}
6803impl core::ops::BitAndAssign for ExternalFenceHandleTypeFlagBits {
6804    #[inline]
6805    fn bitand_assign(&mut self, rhs: Self) {
6806        self.0 &= rhs.0;
6807    }
6808}
6809impl core::ops::BitXor for ExternalFenceHandleTypeFlagBits {
6810    type Output = Self;
6811    #[inline]
6812    fn bitxor(self, rhs: Self) -> Self {
6813        Self(self.0 ^ rhs.0)
6814    }
6815}
6816impl core::ops::BitXorAssign for ExternalFenceHandleTypeFlagBits {
6817    #[inline]
6818    fn bitxor_assign(&mut self, rhs: Self) {
6819        self.0 ^= rhs.0;
6820    }
6821}
6822impl core::ops::Not for ExternalFenceHandleTypeFlagBits {
6823    type Output = Self;
6824    #[inline]
6825    fn not(self) -> Self {
6826        Self(!self.0)
6827    }
6828}
6829impl core::fmt::Debug for ExternalFenceHandleTypeFlagBits {
6830    #[allow(unused_mut, unused_variables)]
6831    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6832        let mut first = true;
6833        let mut remaining = self.0;
6834        if remaining & Self::OPAQUE_FD.0 != 0 {
6835            if !first {
6836                f.write_str(" | ")?;
6837            }
6838            f.write_str("OPAQUE_FD")?;
6839            remaining &= !Self::OPAQUE_FD.0;
6840            first = false;
6841        }
6842        if remaining & Self::OPAQUE_WIN32.0 != 0 {
6843            if !first {
6844                f.write_str(" | ")?;
6845            }
6846            f.write_str("OPAQUE_WIN32")?;
6847            remaining &= !Self::OPAQUE_WIN32.0;
6848            first = false;
6849        }
6850        if remaining & Self::OPAQUE_WIN32_KMT.0 != 0 {
6851            if !first {
6852                f.write_str(" | ")?;
6853            }
6854            f.write_str("OPAQUE_WIN32_KMT")?;
6855            remaining &= !Self::OPAQUE_WIN32_KMT.0;
6856            first = false;
6857        }
6858        if remaining & Self::SYNC_FD.0 != 0 {
6859            if !first {
6860                f.write_str(" | ")?;
6861            }
6862            f.write_str("SYNC_FD")?;
6863            remaining &= !Self::SYNC_FD.0;
6864            first = false;
6865        }
6866        if remaining != 0u32 {
6867            if !first {
6868                f.write_str(" | ")?;
6869            }
6870            write!(f, "{:#x}", remaining)?;
6871        } else if first {
6872            f.write_str("(empty)")?;
6873        }
6874        Ok(())
6875    }
6876}
6877///[`VkExternalMemoryFeatureFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagBits.html)
6878#[repr(transparent)]
6879#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
6880#[doc(alias = "VkExternalMemoryFeatureFlagBits")]
6881pub struct ExternalMemoryFeatureFlagBits(u32);
6882impl ExternalMemoryFeatureFlagBits {
6883    #[inline]
6884    pub const fn empty() -> Self {
6885        Self(0u32)
6886    }
6887    #[inline]
6888    pub const fn from_raw(value: u32) -> Self {
6889        Self(value)
6890    }
6891    #[inline]
6892    pub const fn as_raw(self) -> u32 {
6893        self.0
6894    }
6895    #[inline]
6896    pub const fn is_empty(self) -> bool {
6897        self.0 == 0u32
6898    }
6899    #[inline]
6900    pub const fn contains(self, other: Self) -> bool {
6901        (self.0 & other.0) == other.0
6902    }
6903    #[inline]
6904    pub const fn all() -> Self {
6905        Self(7u32)
6906    }
6907    ///Bit 0.
6908    pub const DEDICATED_ONLY: Self = Self(1u32);
6909    ///Bit 1.
6910    pub const EXPORTABLE: Self = Self(2u32);
6911    ///Bit 2.
6912    pub const IMPORTABLE: Self = Self(4u32);
6913}
6914impl core::ops::BitOr for ExternalMemoryFeatureFlagBits {
6915    type Output = Self;
6916    #[inline]
6917    fn bitor(self, rhs: Self) -> Self {
6918        Self(self.0 | rhs.0)
6919    }
6920}
6921impl core::ops::BitOrAssign for ExternalMemoryFeatureFlagBits {
6922    #[inline]
6923    fn bitor_assign(&mut self, rhs: Self) {
6924        self.0 |= rhs.0;
6925    }
6926}
6927impl core::ops::BitAnd for ExternalMemoryFeatureFlagBits {
6928    type Output = Self;
6929    #[inline]
6930    fn bitand(self, rhs: Self) -> Self {
6931        Self(self.0 & rhs.0)
6932    }
6933}
6934impl core::ops::BitAndAssign for ExternalMemoryFeatureFlagBits {
6935    #[inline]
6936    fn bitand_assign(&mut self, rhs: Self) {
6937        self.0 &= rhs.0;
6938    }
6939}
6940impl core::ops::BitXor for ExternalMemoryFeatureFlagBits {
6941    type Output = Self;
6942    #[inline]
6943    fn bitxor(self, rhs: Self) -> Self {
6944        Self(self.0 ^ rhs.0)
6945    }
6946}
6947impl core::ops::BitXorAssign for ExternalMemoryFeatureFlagBits {
6948    #[inline]
6949    fn bitxor_assign(&mut self, rhs: Self) {
6950        self.0 ^= rhs.0;
6951    }
6952}
6953impl core::ops::Not for ExternalMemoryFeatureFlagBits {
6954    type Output = Self;
6955    #[inline]
6956    fn not(self) -> Self {
6957        Self(!self.0)
6958    }
6959}
6960impl core::fmt::Debug for ExternalMemoryFeatureFlagBits {
6961    #[allow(unused_mut, unused_variables)]
6962    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6963        let mut first = true;
6964        let mut remaining = self.0;
6965        if remaining & Self::DEDICATED_ONLY.0 != 0 {
6966            if !first {
6967                f.write_str(" | ")?;
6968            }
6969            f.write_str("DEDICATED_ONLY")?;
6970            remaining &= !Self::DEDICATED_ONLY.0;
6971            first = false;
6972        }
6973        if remaining & Self::EXPORTABLE.0 != 0 {
6974            if !first {
6975                f.write_str(" | ")?;
6976            }
6977            f.write_str("EXPORTABLE")?;
6978            remaining &= !Self::EXPORTABLE.0;
6979            first = false;
6980        }
6981        if remaining & Self::IMPORTABLE.0 != 0 {
6982            if !first {
6983                f.write_str(" | ")?;
6984            }
6985            f.write_str("IMPORTABLE")?;
6986            remaining &= !Self::IMPORTABLE.0;
6987            first = false;
6988        }
6989        if remaining != 0u32 {
6990            if !first {
6991                f.write_str(" | ")?;
6992            }
6993            write!(f, "{:#x}", remaining)?;
6994        } else if first {
6995            f.write_str("(empty)")?;
6996        }
6997        Ok(())
6998    }
6999}
7000///[`VkExternalMemoryFeatureFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagBitsNV.html)
7001#[repr(transparent)]
7002#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7003#[doc(alias = "VkExternalMemoryFeatureFlagBitsNV")]
7004pub struct ExternalMemoryFeatureFlagBitsNV(u32);
7005impl ExternalMemoryFeatureFlagBitsNV {
7006    #[inline]
7007    pub const fn empty() -> Self {
7008        Self(0u32)
7009    }
7010    #[inline]
7011    pub const fn from_raw(value: u32) -> Self {
7012        Self(value)
7013    }
7014    #[inline]
7015    pub const fn as_raw(self) -> u32 {
7016        self.0
7017    }
7018    #[inline]
7019    pub const fn is_empty(self) -> bool {
7020        self.0 == 0u32
7021    }
7022    #[inline]
7023    pub const fn contains(self, other: Self) -> bool {
7024        (self.0 & other.0) == other.0
7025    }
7026    #[inline]
7027    pub const fn all() -> Self {
7028        Self(7u32)
7029    }
7030    ///Bit 0.
7031    pub const DEDICATED_ONLY: Self = Self(1u32);
7032    ///Bit 1.
7033    pub const EXPORTABLE: Self = Self(2u32);
7034    ///Bit 2.
7035    pub const IMPORTABLE: Self = Self(4u32);
7036}
7037impl core::ops::BitOr for ExternalMemoryFeatureFlagBitsNV {
7038    type Output = Self;
7039    #[inline]
7040    fn bitor(self, rhs: Self) -> Self {
7041        Self(self.0 | rhs.0)
7042    }
7043}
7044impl core::ops::BitOrAssign for ExternalMemoryFeatureFlagBitsNV {
7045    #[inline]
7046    fn bitor_assign(&mut self, rhs: Self) {
7047        self.0 |= rhs.0;
7048    }
7049}
7050impl core::ops::BitAnd for ExternalMemoryFeatureFlagBitsNV {
7051    type Output = Self;
7052    #[inline]
7053    fn bitand(self, rhs: Self) -> Self {
7054        Self(self.0 & rhs.0)
7055    }
7056}
7057impl core::ops::BitAndAssign for ExternalMemoryFeatureFlagBitsNV {
7058    #[inline]
7059    fn bitand_assign(&mut self, rhs: Self) {
7060        self.0 &= rhs.0;
7061    }
7062}
7063impl core::ops::BitXor for ExternalMemoryFeatureFlagBitsNV {
7064    type Output = Self;
7065    #[inline]
7066    fn bitxor(self, rhs: Self) -> Self {
7067        Self(self.0 ^ rhs.0)
7068    }
7069}
7070impl core::ops::BitXorAssign for ExternalMemoryFeatureFlagBitsNV {
7071    #[inline]
7072    fn bitxor_assign(&mut self, rhs: Self) {
7073        self.0 ^= rhs.0;
7074    }
7075}
7076impl core::ops::Not for ExternalMemoryFeatureFlagBitsNV {
7077    type Output = Self;
7078    #[inline]
7079    fn not(self) -> Self {
7080        Self(!self.0)
7081    }
7082}
7083impl core::fmt::Debug for ExternalMemoryFeatureFlagBitsNV {
7084    #[allow(unused_mut, unused_variables)]
7085    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7086        let mut first = true;
7087        let mut remaining = self.0;
7088        if remaining & Self::DEDICATED_ONLY.0 != 0 {
7089            if !first {
7090                f.write_str(" | ")?;
7091            }
7092            f.write_str("DEDICATED_ONLY")?;
7093            remaining &= !Self::DEDICATED_ONLY.0;
7094            first = false;
7095        }
7096        if remaining & Self::EXPORTABLE.0 != 0 {
7097            if !first {
7098                f.write_str(" | ")?;
7099            }
7100            f.write_str("EXPORTABLE")?;
7101            remaining &= !Self::EXPORTABLE.0;
7102            first = false;
7103        }
7104        if remaining & Self::IMPORTABLE.0 != 0 {
7105            if !first {
7106                f.write_str(" | ")?;
7107            }
7108            f.write_str("IMPORTABLE")?;
7109            remaining &= !Self::IMPORTABLE.0;
7110            first = false;
7111        }
7112        if remaining != 0u32 {
7113            if !first {
7114                f.write_str(" | ")?;
7115            }
7116            write!(f, "{:#x}", remaining)?;
7117        } else if first {
7118            f.write_str("(empty)")?;
7119        }
7120        Ok(())
7121    }
7122}
7123///[`VkExternalMemoryHandleTypeFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagBits.html)
7124#[repr(transparent)]
7125#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7126#[doc(alias = "VkExternalMemoryHandleTypeFlagBits")]
7127pub struct ExternalMemoryHandleTypeFlagBits(u32);
7128impl ExternalMemoryHandleTypeFlagBits {
7129    #[inline]
7130    pub const fn empty() -> Self {
7131        Self(0u32)
7132    }
7133    #[inline]
7134    pub const fn from_raw(value: u32) -> Self {
7135        Self(value)
7136    }
7137    #[inline]
7138    pub const fn as_raw(self) -> u32 {
7139        self.0
7140    }
7141    #[inline]
7142    pub const fn is_empty(self) -> bool {
7143        self.0 == 0u32
7144    }
7145    #[inline]
7146    pub const fn contains(self, other: Self) -> bool {
7147        (self.0 & other.0) == other.0
7148    }
7149    #[inline]
7150    pub const fn all() -> Self {
7151        Self(516095u32)
7152    }
7153    ///Bit 0.
7154    pub const OPAQUE_FD: Self = Self(1u32);
7155    ///Bit 1.
7156    pub const OPAQUE_WIN32: Self = Self(2u32);
7157    ///Bit 2.
7158    pub const OPAQUE_WIN32_KMT: Self = Self(4u32);
7159    ///Bit 3.
7160    pub const D3D11_TEXTURE: Self = Self(8u32);
7161    ///Bit 4.
7162    pub const D3D11_TEXTURE_KMT: Self = Self(16u32);
7163    ///Bit 5.
7164    pub const D3D12_HEAP: Self = Self(32u32);
7165    ///Bit 6.
7166    pub const D3D12_RESOURCE: Self = Self(64u32);
7167    ///Bit 9.
7168    pub const DMA_BUF: Self = Self(512u32);
7169    ///Bit 10.
7170    pub const ANDROID_HARDWARE_BUFFER_BIT: Self = Self(1024u32);
7171    ///Bit 7.
7172    pub const HOST_ALLOCATION: Self = Self(128u32);
7173    ///Bit 8.
7174    pub const HOST_MAPPED_FOREIGN_MEMORY: Self = Self(256u32);
7175    ///Bit 11.
7176    pub const ZIRCON_VMO_BIT: Self = Self(2048u32);
7177    ///Bit 12.
7178    pub const RDMA_ADDRESS: Self = Self(4096u32);
7179    ///Bit 15.
7180    pub const OH_NATIVE_BUFFER_BIT: Self = Self(32768u32);
7181    ///Bit 14.
7182    pub const SCREEN_BUFFER_BIT: Self = Self(16384u32);
7183    ///Bit 16.
7184    pub const MTLBUFFER: Self = Self(65536u32);
7185    ///Bit 17.
7186    pub const MTLTEXTURE: Self = Self(131072u32);
7187    ///Bit 18.
7188    pub const MTLHEAP: Self = Self(262144u32);
7189}
7190impl core::ops::BitOr for ExternalMemoryHandleTypeFlagBits {
7191    type Output = Self;
7192    #[inline]
7193    fn bitor(self, rhs: Self) -> Self {
7194        Self(self.0 | rhs.0)
7195    }
7196}
7197impl core::ops::BitOrAssign for ExternalMemoryHandleTypeFlagBits {
7198    #[inline]
7199    fn bitor_assign(&mut self, rhs: Self) {
7200        self.0 |= rhs.0;
7201    }
7202}
7203impl core::ops::BitAnd for ExternalMemoryHandleTypeFlagBits {
7204    type Output = Self;
7205    #[inline]
7206    fn bitand(self, rhs: Self) -> Self {
7207        Self(self.0 & rhs.0)
7208    }
7209}
7210impl core::ops::BitAndAssign for ExternalMemoryHandleTypeFlagBits {
7211    #[inline]
7212    fn bitand_assign(&mut self, rhs: Self) {
7213        self.0 &= rhs.0;
7214    }
7215}
7216impl core::ops::BitXor for ExternalMemoryHandleTypeFlagBits {
7217    type Output = Self;
7218    #[inline]
7219    fn bitxor(self, rhs: Self) -> Self {
7220        Self(self.0 ^ rhs.0)
7221    }
7222}
7223impl core::ops::BitXorAssign for ExternalMemoryHandleTypeFlagBits {
7224    #[inline]
7225    fn bitxor_assign(&mut self, rhs: Self) {
7226        self.0 ^= rhs.0;
7227    }
7228}
7229impl core::ops::Not for ExternalMemoryHandleTypeFlagBits {
7230    type Output = Self;
7231    #[inline]
7232    fn not(self) -> Self {
7233        Self(!self.0)
7234    }
7235}
7236impl core::fmt::Debug for ExternalMemoryHandleTypeFlagBits {
7237    #[allow(unused_mut, unused_variables)]
7238    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7239        let mut first = true;
7240        let mut remaining = self.0;
7241        if remaining & Self::OPAQUE_FD.0 != 0 {
7242            if !first {
7243                f.write_str(" | ")?;
7244            }
7245            f.write_str("OPAQUE_FD")?;
7246            remaining &= !Self::OPAQUE_FD.0;
7247            first = false;
7248        }
7249        if remaining & Self::OPAQUE_WIN32.0 != 0 {
7250            if !first {
7251                f.write_str(" | ")?;
7252            }
7253            f.write_str("OPAQUE_WIN32")?;
7254            remaining &= !Self::OPAQUE_WIN32.0;
7255            first = false;
7256        }
7257        if remaining & Self::OPAQUE_WIN32_KMT.0 != 0 {
7258            if !first {
7259                f.write_str(" | ")?;
7260            }
7261            f.write_str("OPAQUE_WIN32_KMT")?;
7262            remaining &= !Self::OPAQUE_WIN32_KMT.0;
7263            first = false;
7264        }
7265        if remaining & Self::D3D11_TEXTURE.0 != 0 {
7266            if !first {
7267                f.write_str(" | ")?;
7268            }
7269            f.write_str("D3D11_TEXTURE")?;
7270            remaining &= !Self::D3D11_TEXTURE.0;
7271            first = false;
7272        }
7273        if remaining & Self::D3D11_TEXTURE_KMT.0 != 0 {
7274            if !first {
7275                f.write_str(" | ")?;
7276            }
7277            f.write_str("D3D11_TEXTURE_KMT")?;
7278            remaining &= !Self::D3D11_TEXTURE_KMT.0;
7279            first = false;
7280        }
7281        if remaining & Self::D3D12_HEAP.0 != 0 {
7282            if !first {
7283                f.write_str(" | ")?;
7284            }
7285            f.write_str("D3D12_HEAP")?;
7286            remaining &= !Self::D3D12_HEAP.0;
7287            first = false;
7288        }
7289        if remaining & Self::D3D12_RESOURCE.0 != 0 {
7290            if !first {
7291                f.write_str(" | ")?;
7292            }
7293            f.write_str("D3D12_RESOURCE")?;
7294            remaining &= !Self::D3D12_RESOURCE.0;
7295            first = false;
7296        }
7297        if remaining & Self::DMA_BUF.0 != 0 {
7298            if !first {
7299                f.write_str(" | ")?;
7300            }
7301            f.write_str("DMA_BUF")?;
7302            remaining &= !Self::DMA_BUF.0;
7303            first = false;
7304        }
7305        if remaining & Self::ANDROID_HARDWARE_BUFFER_BIT.0 != 0 {
7306            if !first {
7307                f.write_str(" | ")?;
7308            }
7309            f.write_str("ANDROID_HARDWARE_BUFFER_BIT")?;
7310            remaining &= !Self::ANDROID_HARDWARE_BUFFER_BIT.0;
7311            first = false;
7312        }
7313        if remaining & Self::HOST_ALLOCATION.0 != 0 {
7314            if !first {
7315                f.write_str(" | ")?;
7316            }
7317            f.write_str("HOST_ALLOCATION")?;
7318            remaining &= !Self::HOST_ALLOCATION.0;
7319            first = false;
7320        }
7321        if remaining & Self::HOST_MAPPED_FOREIGN_MEMORY.0 != 0 {
7322            if !first {
7323                f.write_str(" | ")?;
7324            }
7325            f.write_str("HOST_MAPPED_FOREIGN_MEMORY")?;
7326            remaining &= !Self::HOST_MAPPED_FOREIGN_MEMORY.0;
7327            first = false;
7328        }
7329        if remaining & Self::ZIRCON_VMO_BIT.0 != 0 {
7330            if !first {
7331                f.write_str(" | ")?;
7332            }
7333            f.write_str("ZIRCON_VMO_BIT")?;
7334            remaining &= !Self::ZIRCON_VMO_BIT.0;
7335            first = false;
7336        }
7337        if remaining & Self::RDMA_ADDRESS.0 != 0 {
7338            if !first {
7339                f.write_str(" | ")?;
7340            }
7341            f.write_str("RDMA_ADDRESS")?;
7342            remaining &= !Self::RDMA_ADDRESS.0;
7343            first = false;
7344        }
7345        if remaining & Self::OH_NATIVE_BUFFER_BIT.0 != 0 {
7346            if !first {
7347                f.write_str(" | ")?;
7348            }
7349            f.write_str("OH_NATIVE_BUFFER_BIT")?;
7350            remaining &= !Self::OH_NATIVE_BUFFER_BIT.0;
7351            first = false;
7352        }
7353        if remaining & Self::SCREEN_BUFFER_BIT.0 != 0 {
7354            if !first {
7355                f.write_str(" | ")?;
7356            }
7357            f.write_str("SCREEN_BUFFER_BIT")?;
7358            remaining &= !Self::SCREEN_BUFFER_BIT.0;
7359            first = false;
7360        }
7361        if remaining & Self::MTLBUFFER.0 != 0 {
7362            if !first {
7363                f.write_str(" | ")?;
7364            }
7365            f.write_str("MTLBUFFER")?;
7366            remaining &= !Self::MTLBUFFER.0;
7367            first = false;
7368        }
7369        if remaining & Self::MTLTEXTURE.0 != 0 {
7370            if !first {
7371                f.write_str(" | ")?;
7372            }
7373            f.write_str("MTLTEXTURE")?;
7374            remaining &= !Self::MTLTEXTURE.0;
7375            first = false;
7376        }
7377        if remaining & Self::MTLHEAP.0 != 0 {
7378            if !first {
7379                f.write_str(" | ")?;
7380            }
7381            f.write_str("MTLHEAP")?;
7382            remaining &= !Self::MTLHEAP.0;
7383            first = false;
7384        }
7385        if remaining != 0u32 {
7386            if !first {
7387                f.write_str(" | ")?;
7388            }
7389            write!(f, "{:#x}", remaining)?;
7390        } else if first {
7391            f.write_str("(empty)")?;
7392        }
7393        Ok(())
7394    }
7395}
7396///[`VkExternalMemoryHandleTypeFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagBitsNV.html)
7397#[repr(transparent)]
7398#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7399#[doc(alias = "VkExternalMemoryHandleTypeFlagBitsNV")]
7400pub struct ExternalMemoryHandleTypeFlagBitsNV(u32);
7401impl ExternalMemoryHandleTypeFlagBitsNV {
7402    #[inline]
7403    pub const fn empty() -> Self {
7404        Self(0u32)
7405    }
7406    #[inline]
7407    pub const fn from_raw(value: u32) -> Self {
7408        Self(value)
7409    }
7410    #[inline]
7411    pub const fn as_raw(self) -> u32 {
7412        self.0
7413    }
7414    #[inline]
7415    pub const fn is_empty(self) -> bool {
7416        self.0 == 0u32
7417    }
7418    #[inline]
7419    pub const fn contains(self, other: Self) -> bool {
7420        (self.0 & other.0) == other.0
7421    }
7422    #[inline]
7423    pub const fn all() -> Self {
7424        Self(15u32)
7425    }
7426    ///Bit 0.
7427    pub const OPAQUE_WIN32: Self = Self(1u32);
7428    ///Bit 1.
7429    pub const OPAQUE_WIN32_KMT: Self = Self(2u32);
7430    ///Bit 2.
7431    pub const D3D11_IMAGE: Self = Self(4u32);
7432    ///Bit 3.
7433    pub const D3D11_IMAGE_KMT: Self = Self(8u32);
7434}
7435impl core::ops::BitOr for ExternalMemoryHandleTypeFlagBitsNV {
7436    type Output = Self;
7437    #[inline]
7438    fn bitor(self, rhs: Self) -> Self {
7439        Self(self.0 | rhs.0)
7440    }
7441}
7442impl core::ops::BitOrAssign for ExternalMemoryHandleTypeFlagBitsNV {
7443    #[inline]
7444    fn bitor_assign(&mut self, rhs: Self) {
7445        self.0 |= rhs.0;
7446    }
7447}
7448impl core::ops::BitAnd for ExternalMemoryHandleTypeFlagBitsNV {
7449    type Output = Self;
7450    #[inline]
7451    fn bitand(self, rhs: Self) -> Self {
7452        Self(self.0 & rhs.0)
7453    }
7454}
7455impl core::ops::BitAndAssign for ExternalMemoryHandleTypeFlagBitsNV {
7456    #[inline]
7457    fn bitand_assign(&mut self, rhs: Self) {
7458        self.0 &= rhs.0;
7459    }
7460}
7461impl core::ops::BitXor for ExternalMemoryHandleTypeFlagBitsNV {
7462    type Output = Self;
7463    #[inline]
7464    fn bitxor(self, rhs: Self) -> Self {
7465        Self(self.0 ^ rhs.0)
7466    }
7467}
7468impl core::ops::BitXorAssign for ExternalMemoryHandleTypeFlagBitsNV {
7469    #[inline]
7470    fn bitxor_assign(&mut self, rhs: Self) {
7471        self.0 ^= rhs.0;
7472    }
7473}
7474impl core::ops::Not for ExternalMemoryHandleTypeFlagBitsNV {
7475    type Output = Self;
7476    #[inline]
7477    fn not(self) -> Self {
7478        Self(!self.0)
7479    }
7480}
7481impl core::fmt::Debug for ExternalMemoryHandleTypeFlagBitsNV {
7482    #[allow(unused_mut, unused_variables)]
7483    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7484        let mut first = true;
7485        let mut remaining = self.0;
7486        if remaining & Self::OPAQUE_WIN32.0 != 0 {
7487            if !first {
7488                f.write_str(" | ")?;
7489            }
7490            f.write_str("OPAQUE_WIN32")?;
7491            remaining &= !Self::OPAQUE_WIN32.0;
7492            first = false;
7493        }
7494        if remaining & Self::OPAQUE_WIN32_KMT.0 != 0 {
7495            if !first {
7496                f.write_str(" | ")?;
7497            }
7498            f.write_str("OPAQUE_WIN32_KMT")?;
7499            remaining &= !Self::OPAQUE_WIN32_KMT.0;
7500            first = false;
7501        }
7502        if remaining & Self::D3D11_IMAGE.0 != 0 {
7503            if !first {
7504                f.write_str(" | ")?;
7505            }
7506            f.write_str("D3D11_IMAGE")?;
7507            remaining &= !Self::D3D11_IMAGE.0;
7508            first = false;
7509        }
7510        if remaining & Self::D3D11_IMAGE_KMT.0 != 0 {
7511            if !first {
7512                f.write_str(" | ")?;
7513            }
7514            f.write_str("D3D11_IMAGE_KMT")?;
7515            remaining &= !Self::D3D11_IMAGE_KMT.0;
7516            first = false;
7517        }
7518        if remaining != 0u32 {
7519            if !first {
7520                f.write_str(" | ")?;
7521            }
7522            write!(f, "{:#x}", remaining)?;
7523        } else if first {
7524            f.write_str("(empty)")?;
7525        }
7526        Ok(())
7527    }
7528}
7529///[`VkExternalSemaphoreFeatureFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreFeatureFlagBits.html)
7530#[repr(transparent)]
7531#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7532#[doc(alias = "VkExternalSemaphoreFeatureFlagBits")]
7533pub struct ExternalSemaphoreFeatureFlagBits(u32);
7534impl ExternalSemaphoreFeatureFlagBits {
7535    #[inline]
7536    pub const fn empty() -> Self {
7537        Self(0u32)
7538    }
7539    #[inline]
7540    pub const fn from_raw(value: u32) -> Self {
7541        Self(value)
7542    }
7543    #[inline]
7544    pub const fn as_raw(self) -> u32 {
7545        self.0
7546    }
7547    #[inline]
7548    pub const fn is_empty(self) -> bool {
7549        self.0 == 0u32
7550    }
7551    #[inline]
7552    pub const fn contains(self, other: Self) -> bool {
7553        (self.0 & other.0) == other.0
7554    }
7555    #[inline]
7556    pub const fn all() -> Self {
7557        Self(3u32)
7558    }
7559    ///Bit 0.
7560    pub const EXPORTABLE: Self = Self(1u32);
7561    ///Bit 1.
7562    pub const IMPORTABLE: Self = Self(2u32);
7563}
7564impl core::ops::BitOr for ExternalSemaphoreFeatureFlagBits {
7565    type Output = Self;
7566    #[inline]
7567    fn bitor(self, rhs: Self) -> Self {
7568        Self(self.0 | rhs.0)
7569    }
7570}
7571impl core::ops::BitOrAssign for ExternalSemaphoreFeatureFlagBits {
7572    #[inline]
7573    fn bitor_assign(&mut self, rhs: Self) {
7574        self.0 |= rhs.0;
7575    }
7576}
7577impl core::ops::BitAnd for ExternalSemaphoreFeatureFlagBits {
7578    type Output = Self;
7579    #[inline]
7580    fn bitand(self, rhs: Self) -> Self {
7581        Self(self.0 & rhs.0)
7582    }
7583}
7584impl core::ops::BitAndAssign for ExternalSemaphoreFeatureFlagBits {
7585    #[inline]
7586    fn bitand_assign(&mut self, rhs: Self) {
7587        self.0 &= rhs.0;
7588    }
7589}
7590impl core::ops::BitXor for ExternalSemaphoreFeatureFlagBits {
7591    type Output = Self;
7592    #[inline]
7593    fn bitxor(self, rhs: Self) -> Self {
7594        Self(self.0 ^ rhs.0)
7595    }
7596}
7597impl core::ops::BitXorAssign for ExternalSemaphoreFeatureFlagBits {
7598    #[inline]
7599    fn bitxor_assign(&mut self, rhs: Self) {
7600        self.0 ^= rhs.0;
7601    }
7602}
7603impl core::ops::Not for ExternalSemaphoreFeatureFlagBits {
7604    type Output = Self;
7605    #[inline]
7606    fn not(self) -> Self {
7607        Self(!self.0)
7608    }
7609}
7610impl core::fmt::Debug for ExternalSemaphoreFeatureFlagBits {
7611    #[allow(unused_mut, unused_variables)]
7612    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7613        let mut first = true;
7614        let mut remaining = self.0;
7615        if remaining & Self::EXPORTABLE.0 != 0 {
7616            if !first {
7617                f.write_str(" | ")?;
7618            }
7619            f.write_str("EXPORTABLE")?;
7620            remaining &= !Self::EXPORTABLE.0;
7621            first = false;
7622        }
7623        if remaining & Self::IMPORTABLE.0 != 0 {
7624            if !first {
7625                f.write_str(" | ")?;
7626            }
7627            f.write_str("IMPORTABLE")?;
7628            remaining &= !Self::IMPORTABLE.0;
7629            first = false;
7630        }
7631        if remaining != 0u32 {
7632            if !first {
7633                f.write_str(" | ")?;
7634            }
7635            write!(f, "{:#x}", remaining)?;
7636        } else if first {
7637            f.write_str("(empty)")?;
7638        }
7639        Ok(())
7640    }
7641}
7642///[`VkExternalSemaphoreHandleTypeFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreHandleTypeFlagBits.html)
7643#[repr(transparent)]
7644#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7645#[doc(alias = "VkExternalSemaphoreHandleTypeFlagBits")]
7646pub struct ExternalSemaphoreHandleTypeFlagBits(u32);
7647impl ExternalSemaphoreHandleTypeFlagBits {
7648    #[inline]
7649    pub const fn empty() -> Self {
7650        Self(0u32)
7651    }
7652    #[inline]
7653    pub const fn from_raw(value: u32) -> Self {
7654        Self(value)
7655    }
7656    #[inline]
7657    pub const fn as_raw(self) -> u32 {
7658        self.0
7659    }
7660    #[inline]
7661    pub const fn is_empty(self) -> bool {
7662        self.0 == 0u32
7663    }
7664    #[inline]
7665    pub const fn contains(self, other: Self) -> bool {
7666        (self.0 & other.0) == other.0
7667    }
7668    #[inline]
7669    pub const fn all() -> Self {
7670        Self(159u32)
7671    }
7672    ///Bit 0.
7673    pub const OPAQUE_FD: Self = Self(1u32);
7674    ///Bit 1.
7675    pub const OPAQUE_WIN32: Self = Self(2u32);
7676    ///Bit 2.
7677    pub const OPAQUE_WIN32_KMT: Self = Self(4u32);
7678    ///Bit 3.
7679    pub const D3D12_FENCE: Self = Self(8u32);
7680    pub const D3D11_FENCE: Self = Self::D3D12_FENCE;
7681    ///Bit 4.
7682    pub const SYNC_FD: Self = Self(16u32);
7683    ///Bit 7.
7684    pub const ZIRCON_EVENT_BIT: Self = Self(128u32);
7685}
7686impl core::ops::BitOr for ExternalSemaphoreHandleTypeFlagBits {
7687    type Output = Self;
7688    #[inline]
7689    fn bitor(self, rhs: Self) -> Self {
7690        Self(self.0 | rhs.0)
7691    }
7692}
7693impl core::ops::BitOrAssign for ExternalSemaphoreHandleTypeFlagBits {
7694    #[inline]
7695    fn bitor_assign(&mut self, rhs: Self) {
7696        self.0 |= rhs.0;
7697    }
7698}
7699impl core::ops::BitAnd for ExternalSemaphoreHandleTypeFlagBits {
7700    type Output = Self;
7701    #[inline]
7702    fn bitand(self, rhs: Self) -> Self {
7703        Self(self.0 & rhs.0)
7704    }
7705}
7706impl core::ops::BitAndAssign for ExternalSemaphoreHandleTypeFlagBits {
7707    #[inline]
7708    fn bitand_assign(&mut self, rhs: Self) {
7709        self.0 &= rhs.0;
7710    }
7711}
7712impl core::ops::BitXor for ExternalSemaphoreHandleTypeFlagBits {
7713    type Output = Self;
7714    #[inline]
7715    fn bitxor(self, rhs: Self) -> Self {
7716        Self(self.0 ^ rhs.0)
7717    }
7718}
7719impl core::ops::BitXorAssign for ExternalSemaphoreHandleTypeFlagBits {
7720    #[inline]
7721    fn bitxor_assign(&mut self, rhs: Self) {
7722        self.0 ^= rhs.0;
7723    }
7724}
7725impl core::ops::Not for ExternalSemaphoreHandleTypeFlagBits {
7726    type Output = Self;
7727    #[inline]
7728    fn not(self) -> Self {
7729        Self(!self.0)
7730    }
7731}
7732impl core::fmt::Debug for ExternalSemaphoreHandleTypeFlagBits {
7733    #[allow(unused_mut, unused_variables)]
7734    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7735        let mut first = true;
7736        let mut remaining = self.0;
7737        if remaining & Self::OPAQUE_FD.0 != 0 {
7738            if !first {
7739                f.write_str(" | ")?;
7740            }
7741            f.write_str("OPAQUE_FD")?;
7742            remaining &= !Self::OPAQUE_FD.0;
7743            first = false;
7744        }
7745        if remaining & Self::OPAQUE_WIN32.0 != 0 {
7746            if !first {
7747                f.write_str(" | ")?;
7748            }
7749            f.write_str("OPAQUE_WIN32")?;
7750            remaining &= !Self::OPAQUE_WIN32.0;
7751            first = false;
7752        }
7753        if remaining & Self::OPAQUE_WIN32_KMT.0 != 0 {
7754            if !first {
7755                f.write_str(" | ")?;
7756            }
7757            f.write_str("OPAQUE_WIN32_KMT")?;
7758            remaining &= !Self::OPAQUE_WIN32_KMT.0;
7759            first = false;
7760        }
7761        if remaining & Self::D3D12_FENCE.0 != 0 {
7762            if !first {
7763                f.write_str(" | ")?;
7764            }
7765            f.write_str("D3D12_FENCE")?;
7766            remaining &= !Self::D3D12_FENCE.0;
7767            first = false;
7768        }
7769        if remaining & Self::SYNC_FD.0 != 0 {
7770            if !first {
7771                f.write_str(" | ")?;
7772            }
7773            f.write_str("SYNC_FD")?;
7774            remaining &= !Self::SYNC_FD.0;
7775            first = false;
7776        }
7777        if remaining & Self::ZIRCON_EVENT_BIT.0 != 0 {
7778            if !first {
7779                f.write_str(" | ")?;
7780            }
7781            f.write_str("ZIRCON_EVENT_BIT")?;
7782            remaining &= !Self::ZIRCON_EVENT_BIT.0;
7783            first = false;
7784        }
7785        if remaining != 0u32 {
7786            if !first {
7787                f.write_str(" | ")?;
7788            }
7789            write!(f, "{:#x}", remaining)?;
7790        } else if first {
7791            f.write_str("(empty)")?;
7792        }
7793        Ok(())
7794    }
7795}
7796///[`VkFenceCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceCreateFlagBits.html)
7797#[repr(transparent)]
7798#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7799#[doc(alias = "VkFenceCreateFlagBits")]
7800pub struct FenceCreateFlagBits(u32);
7801impl FenceCreateFlagBits {
7802    #[inline]
7803    pub const fn empty() -> Self {
7804        Self(0u32)
7805    }
7806    #[inline]
7807    pub const fn from_raw(value: u32) -> Self {
7808        Self(value)
7809    }
7810    #[inline]
7811    pub const fn as_raw(self) -> u32 {
7812        self.0
7813    }
7814    #[inline]
7815    pub const fn is_empty(self) -> bool {
7816        self.0 == 0u32
7817    }
7818    #[inline]
7819    pub const fn contains(self, other: Self) -> bool {
7820        (self.0 & other.0) == other.0
7821    }
7822    #[inline]
7823    pub const fn all() -> Self {
7824        Self(1u32)
7825    }
7826    ///Bit 0.
7827    pub const SIGNALED: Self = Self(1u32);
7828}
7829impl core::ops::BitOr for FenceCreateFlagBits {
7830    type Output = Self;
7831    #[inline]
7832    fn bitor(self, rhs: Self) -> Self {
7833        Self(self.0 | rhs.0)
7834    }
7835}
7836impl core::ops::BitOrAssign for FenceCreateFlagBits {
7837    #[inline]
7838    fn bitor_assign(&mut self, rhs: Self) {
7839        self.0 |= rhs.0;
7840    }
7841}
7842impl core::ops::BitAnd for FenceCreateFlagBits {
7843    type Output = Self;
7844    #[inline]
7845    fn bitand(self, rhs: Self) -> Self {
7846        Self(self.0 & rhs.0)
7847    }
7848}
7849impl core::ops::BitAndAssign for FenceCreateFlagBits {
7850    #[inline]
7851    fn bitand_assign(&mut self, rhs: Self) {
7852        self.0 &= rhs.0;
7853    }
7854}
7855impl core::ops::BitXor for FenceCreateFlagBits {
7856    type Output = Self;
7857    #[inline]
7858    fn bitxor(self, rhs: Self) -> Self {
7859        Self(self.0 ^ rhs.0)
7860    }
7861}
7862impl core::ops::BitXorAssign for FenceCreateFlagBits {
7863    #[inline]
7864    fn bitxor_assign(&mut self, rhs: Self) {
7865        self.0 ^= rhs.0;
7866    }
7867}
7868impl core::ops::Not for FenceCreateFlagBits {
7869    type Output = Self;
7870    #[inline]
7871    fn not(self) -> Self {
7872        Self(!self.0)
7873    }
7874}
7875impl core::fmt::Debug for FenceCreateFlagBits {
7876    #[allow(unused_mut, unused_variables)]
7877    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7878        let mut first = true;
7879        let mut remaining = self.0;
7880        if remaining & Self::SIGNALED.0 != 0 {
7881            if !first {
7882                f.write_str(" | ")?;
7883            }
7884            f.write_str("SIGNALED")?;
7885            remaining &= !Self::SIGNALED.0;
7886            first = false;
7887        }
7888        if remaining != 0u32 {
7889            if !first {
7890                f.write_str(" | ")?;
7891            }
7892            write!(f, "{:#x}", remaining)?;
7893        } else if first {
7894            f.write_str("(empty)")?;
7895        }
7896        Ok(())
7897    }
7898}
7899///[`VkFenceImportFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceImportFlagBits.html)
7900#[repr(transparent)]
7901#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
7902#[doc(alias = "VkFenceImportFlagBits")]
7903pub struct FenceImportFlagBits(u32);
7904impl FenceImportFlagBits {
7905    #[inline]
7906    pub const fn empty() -> Self {
7907        Self(0u32)
7908    }
7909    #[inline]
7910    pub const fn from_raw(value: u32) -> Self {
7911        Self(value)
7912    }
7913    #[inline]
7914    pub const fn as_raw(self) -> u32 {
7915        self.0
7916    }
7917    #[inline]
7918    pub const fn is_empty(self) -> bool {
7919        self.0 == 0u32
7920    }
7921    #[inline]
7922    pub const fn contains(self, other: Self) -> bool {
7923        (self.0 & other.0) == other.0
7924    }
7925    #[inline]
7926    pub const fn all() -> Self {
7927        Self(1u32)
7928    }
7929    ///Bit 0.
7930    pub const TEMPORARY: Self = Self(1u32);
7931}
7932impl core::ops::BitOr for FenceImportFlagBits {
7933    type Output = Self;
7934    #[inline]
7935    fn bitor(self, rhs: Self) -> Self {
7936        Self(self.0 | rhs.0)
7937    }
7938}
7939impl core::ops::BitOrAssign for FenceImportFlagBits {
7940    #[inline]
7941    fn bitor_assign(&mut self, rhs: Self) {
7942        self.0 |= rhs.0;
7943    }
7944}
7945impl core::ops::BitAnd for FenceImportFlagBits {
7946    type Output = Self;
7947    #[inline]
7948    fn bitand(self, rhs: Self) -> Self {
7949        Self(self.0 & rhs.0)
7950    }
7951}
7952impl core::ops::BitAndAssign for FenceImportFlagBits {
7953    #[inline]
7954    fn bitand_assign(&mut self, rhs: Self) {
7955        self.0 &= rhs.0;
7956    }
7957}
7958impl core::ops::BitXor for FenceImportFlagBits {
7959    type Output = Self;
7960    #[inline]
7961    fn bitxor(self, rhs: Self) -> Self {
7962        Self(self.0 ^ rhs.0)
7963    }
7964}
7965impl core::ops::BitXorAssign for FenceImportFlagBits {
7966    #[inline]
7967    fn bitxor_assign(&mut self, rhs: Self) {
7968        self.0 ^= rhs.0;
7969    }
7970}
7971impl core::ops::Not for FenceImportFlagBits {
7972    type Output = Self;
7973    #[inline]
7974    fn not(self) -> Self {
7975        Self(!self.0)
7976    }
7977}
7978impl core::fmt::Debug for FenceImportFlagBits {
7979    #[allow(unused_mut, unused_variables)]
7980    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7981        let mut first = true;
7982        let mut remaining = self.0;
7983        if remaining & Self::TEMPORARY.0 != 0 {
7984            if !first {
7985                f.write_str(" | ")?;
7986            }
7987            f.write_str("TEMPORARY")?;
7988            remaining &= !Self::TEMPORARY.0;
7989            first = false;
7990        }
7991        if remaining != 0u32 {
7992            if !first {
7993                f.write_str(" | ")?;
7994            }
7995            write!(f, "{:#x}", remaining)?;
7996        } else if first {
7997            f.write_str("(empty)")?;
7998        }
7999        Ok(())
8000    }
8001}
8002///[`VkFormatFeatureFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatFeatureFlagBits.html)
8003#[repr(transparent)]
8004#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
8005#[doc(alias = "VkFormatFeatureFlagBits")]
8006pub struct FormatFeatureFlagBits(u32);
8007impl FormatFeatureFlagBits {
8008    #[inline]
8009    pub const fn empty() -> Self {
8010        Self(0u32)
8011    }
8012    #[inline]
8013    pub const fn from_raw(value: u32) -> Self {
8014        Self(value)
8015    }
8016    #[inline]
8017    pub const fn as_raw(self) -> u32 {
8018        self.0
8019    }
8020    #[inline]
8021    pub const fn is_empty(self) -> bool {
8022        self.0 == 0u32
8023    }
8024    #[inline]
8025    pub const fn contains(self, other: Self) -> bool {
8026        (self.0 & other.0) == other.0
8027    }
8028    #[inline]
8029    pub const fn all() -> Self {
8030        Self(2147483647u32)
8031    }
8032    ///Bit 0.
8033    pub const SAMPLED_IMAGE: Self = Self(1u32);
8034    ///Bit 1.
8035    pub const STORAGE_IMAGE: Self = Self(2u32);
8036    ///Bit 2.
8037    pub const STORAGE_IMAGE_ATOMIC: Self = Self(4u32);
8038    ///Bit 3.
8039    pub const UNIFORM_TEXEL_BUFFER: Self = Self(8u32);
8040    ///Bit 4.
8041    pub const STORAGE_TEXEL_BUFFER: Self = Self(16u32);
8042    ///Bit 5.
8043    pub const STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(32u32);
8044    ///Bit 6.
8045    pub const VERTEX_BUFFER: Self = Self(64u32);
8046    ///Bit 7.
8047    pub const COLOR_ATTACHMENT: Self = Self(128u32);
8048    ///Bit 8.
8049    pub const COLOR_ATTACHMENT_BLEND: Self = Self(256u32);
8050    ///Bit 9.
8051    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(512u32);
8052    ///Bit 10.
8053    pub const BLIT_SRC: Self = Self(1024u32);
8054    ///Bit 11.
8055    pub const BLIT_DST: Self = Self(2048u32);
8056    ///Bit 12.
8057    pub const SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(4096u32);
8058    ///Bit 14.
8059    pub const TRANSFER_SRC: Self = Self(16384u32);
8060    ///Bit 15.
8061    pub const TRANSFER_DST: Self = Self(32768u32);
8062    ///Bit 17.
8063    pub const MIDPOINT_CHROMA_SAMPLES: Self = Self(131072u32);
8064    ///Bit 18.
8065    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER: Self = Self(262144u32);
8066    ///Bit 19.
8067    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER: Self = Self(
8068        524288u32,
8069    );
8070    ///Bit 20.
8071    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT: Self = Self(
8072        1048576u32,
8073    );
8074    ///Bit 21.
8075    pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE: Self = Self(
8076        2097152u32,
8077    );
8078    ///Bit 22.
8079    pub const DISJOINT: Self = Self(4194304u32);
8080    ///Bit 23.
8081    pub const COSITED_CHROMA_SAMPLES: Self = Self(8388608u32);
8082    ///Bit 16.
8083    pub const SAMPLED_IMAGE_FILTER_MINMAX: Self = Self(65536u32);
8084    pub const SAMPLED_IMAGE_FILTER_CUBIC_BIT: Self = Self::SAMPLED_IMAGE_FILTER_CUBIC;
8085    ///Bit 25.
8086    pub const VIDEO_DECODE_OUTPUT: Self = Self(33554432u32);
8087    ///Bit 26.
8088    pub const VIDEO_DECODE_DPB: Self = Self(67108864u32);
8089    ///Bit 29.
8090    pub const ACCELERATION_STRUCTURE_VERTEX_BUFFER: Self = Self(536870912u32);
8091    ///Bit 13.
8092    pub const SAMPLED_IMAGE_FILTER_CUBIC: Self = Self(8192u32);
8093    ///Bit 24.
8094    pub const FRAGMENT_DENSITY_MAP: Self = Self(16777216u32);
8095    ///Bit 30.
8096    pub const FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(1073741824u32);
8097    ///Bit 27.
8098    pub const VIDEO_ENCODE_INPUT: Self = Self(134217728u32);
8099    ///Bit 28.
8100    pub const VIDEO_ENCODE_DPB: Self = Self(268435456u32);
8101}
8102impl core::ops::BitOr for FormatFeatureFlagBits {
8103    type Output = Self;
8104    #[inline]
8105    fn bitor(self, rhs: Self) -> Self {
8106        Self(self.0 | rhs.0)
8107    }
8108}
8109impl core::ops::BitOrAssign for FormatFeatureFlagBits {
8110    #[inline]
8111    fn bitor_assign(&mut self, rhs: Self) {
8112        self.0 |= rhs.0;
8113    }
8114}
8115impl core::ops::BitAnd for FormatFeatureFlagBits {
8116    type Output = Self;
8117    #[inline]
8118    fn bitand(self, rhs: Self) -> Self {
8119        Self(self.0 & rhs.0)
8120    }
8121}
8122impl core::ops::BitAndAssign for FormatFeatureFlagBits {
8123    #[inline]
8124    fn bitand_assign(&mut self, rhs: Self) {
8125        self.0 &= rhs.0;
8126    }
8127}
8128impl core::ops::BitXor for FormatFeatureFlagBits {
8129    type Output = Self;
8130    #[inline]
8131    fn bitxor(self, rhs: Self) -> Self {
8132        Self(self.0 ^ rhs.0)
8133    }
8134}
8135impl core::ops::BitXorAssign for FormatFeatureFlagBits {
8136    #[inline]
8137    fn bitxor_assign(&mut self, rhs: Self) {
8138        self.0 ^= rhs.0;
8139    }
8140}
8141impl core::ops::Not for FormatFeatureFlagBits {
8142    type Output = Self;
8143    #[inline]
8144    fn not(self) -> Self {
8145        Self(!self.0)
8146    }
8147}
8148impl core::fmt::Debug for FormatFeatureFlagBits {
8149    #[allow(unused_mut, unused_variables)]
8150    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8151        let mut first = true;
8152        let mut remaining = self.0;
8153        if remaining & Self::SAMPLED_IMAGE.0 != 0 {
8154            if !first {
8155                f.write_str(" | ")?;
8156            }
8157            f.write_str("SAMPLED_IMAGE")?;
8158            remaining &= !Self::SAMPLED_IMAGE.0;
8159            first = false;
8160        }
8161        if remaining & Self::STORAGE_IMAGE.0 != 0 {
8162            if !first {
8163                f.write_str(" | ")?;
8164            }
8165            f.write_str("STORAGE_IMAGE")?;
8166            remaining &= !Self::STORAGE_IMAGE.0;
8167            first = false;
8168        }
8169        if remaining & Self::STORAGE_IMAGE_ATOMIC.0 != 0 {
8170            if !first {
8171                f.write_str(" | ")?;
8172            }
8173            f.write_str("STORAGE_IMAGE_ATOMIC")?;
8174            remaining &= !Self::STORAGE_IMAGE_ATOMIC.0;
8175            first = false;
8176        }
8177        if remaining & Self::UNIFORM_TEXEL_BUFFER.0 != 0 {
8178            if !first {
8179                f.write_str(" | ")?;
8180            }
8181            f.write_str("UNIFORM_TEXEL_BUFFER")?;
8182            remaining &= !Self::UNIFORM_TEXEL_BUFFER.0;
8183            first = false;
8184        }
8185        if remaining & Self::STORAGE_TEXEL_BUFFER.0 != 0 {
8186            if !first {
8187                f.write_str(" | ")?;
8188            }
8189            f.write_str("STORAGE_TEXEL_BUFFER")?;
8190            remaining &= !Self::STORAGE_TEXEL_BUFFER.0;
8191            first = false;
8192        }
8193        if remaining & Self::STORAGE_TEXEL_BUFFER_ATOMIC.0 != 0 {
8194            if !first {
8195                f.write_str(" | ")?;
8196            }
8197            f.write_str("STORAGE_TEXEL_BUFFER_ATOMIC")?;
8198            remaining &= !Self::STORAGE_TEXEL_BUFFER_ATOMIC.0;
8199            first = false;
8200        }
8201        if remaining & Self::VERTEX_BUFFER.0 != 0 {
8202            if !first {
8203                f.write_str(" | ")?;
8204            }
8205            f.write_str("VERTEX_BUFFER")?;
8206            remaining &= !Self::VERTEX_BUFFER.0;
8207            first = false;
8208        }
8209        if remaining & Self::COLOR_ATTACHMENT.0 != 0 {
8210            if !first {
8211                f.write_str(" | ")?;
8212            }
8213            f.write_str("COLOR_ATTACHMENT")?;
8214            remaining &= !Self::COLOR_ATTACHMENT.0;
8215            first = false;
8216        }
8217        if remaining & Self::COLOR_ATTACHMENT_BLEND.0 != 0 {
8218            if !first {
8219                f.write_str(" | ")?;
8220            }
8221            f.write_str("COLOR_ATTACHMENT_BLEND")?;
8222            remaining &= !Self::COLOR_ATTACHMENT_BLEND.0;
8223            first = false;
8224        }
8225        if remaining & Self::DEPTH_STENCIL_ATTACHMENT.0 != 0 {
8226            if !first {
8227                f.write_str(" | ")?;
8228            }
8229            f.write_str("DEPTH_STENCIL_ATTACHMENT")?;
8230            remaining &= !Self::DEPTH_STENCIL_ATTACHMENT.0;
8231            first = false;
8232        }
8233        if remaining & Self::BLIT_SRC.0 != 0 {
8234            if !first {
8235                f.write_str(" | ")?;
8236            }
8237            f.write_str("BLIT_SRC")?;
8238            remaining &= !Self::BLIT_SRC.0;
8239            first = false;
8240        }
8241        if remaining & Self::BLIT_DST.0 != 0 {
8242            if !first {
8243                f.write_str(" | ")?;
8244            }
8245            f.write_str("BLIT_DST")?;
8246            remaining &= !Self::BLIT_DST.0;
8247            first = false;
8248        }
8249        if remaining & Self::SAMPLED_IMAGE_FILTER_LINEAR.0 != 0 {
8250            if !first {
8251                f.write_str(" | ")?;
8252            }
8253            f.write_str("SAMPLED_IMAGE_FILTER_LINEAR")?;
8254            remaining &= !Self::SAMPLED_IMAGE_FILTER_LINEAR.0;
8255            first = false;
8256        }
8257        if remaining & Self::TRANSFER_SRC.0 != 0 {
8258            if !first {
8259                f.write_str(" | ")?;
8260            }
8261            f.write_str("TRANSFER_SRC")?;
8262            remaining &= !Self::TRANSFER_SRC.0;
8263            first = false;
8264        }
8265        if remaining & Self::TRANSFER_DST.0 != 0 {
8266            if !first {
8267                f.write_str(" | ")?;
8268            }
8269            f.write_str("TRANSFER_DST")?;
8270            remaining &= !Self::TRANSFER_DST.0;
8271            first = false;
8272        }
8273        if remaining & Self::MIDPOINT_CHROMA_SAMPLES.0 != 0 {
8274            if !first {
8275                f.write_str(" | ")?;
8276            }
8277            f.write_str("MIDPOINT_CHROMA_SAMPLES")?;
8278            remaining &= !Self::MIDPOINT_CHROMA_SAMPLES.0;
8279            first = false;
8280        }
8281        if remaining & Self::SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER.0 != 0 {
8282            if !first {
8283                f.write_str(" | ")?;
8284            }
8285            f.write_str("SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER")?;
8286            remaining &= !Self::SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER.0;
8287            first = false;
8288        }
8289        if remaining
8290            & Self::SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER.0 != 0
8291        {
8292            if !first {
8293                f.write_str(" | ")?;
8294            }
8295            f.write_str(
8296                "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER",
8297            )?;
8298            remaining
8299                &= !Self::SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER
8300                    .0;
8301            first = false;
8302        }
8303        if remaining
8304            & Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT.0 != 0
8305        {
8306            if !first {
8307                f.write_str(" | ")?;
8308            }
8309            f.write_str(
8310                "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT",
8311            )?;
8312            remaining
8313                &= !Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT
8314                    .0;
8315            first = false;
8316        }
8317        if remaining
8318            & Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE
8319                .0 != 0
8320        {
8321            if !first {
8322                f.write_str(" | ")?;
8323            }
8324            f.write_str(
8325                "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE",
8326            )?;
8327            remaining
8328                &= !Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE
8329                    .0;
8330            first = false;
8331        }
8332        if remaining & Self::DISJOINT.0 != 0 {
8333            if !first {
8334                f.write_str(" | ")?;
8335            }
8336            f.write_str("DISJOINT")?;
8337            remaining &= !Self::DISJOINT.0;
8338            first = false;
8339        }
8340        if remaining & Self::COSITED_CHROMA_SAMPLES.0 != 0 {
8341            if !first {
8342                f.write_str(" | ")?;
8343            }
8344            f.write_str("COSITED_CHROMA_SAMPLES")?;
8345            remaining &= !Self::COSITED_CHROMA_SAMPLES.0;
8346            first = false;
8347        }
8348        if remaining & Self::SAMPLED_IMAGE_FILTER_MINMAX.0 != 0 {
8349            if !first {
8350                f.write_str(" | ")?;
8351            }
8352            f.write_str("SAMPLED_IMAGE_FILTER_MINMAX")?;
8353            remaining &= !Self::SAMPLED_IMAGE_FILTER_MINMAX.0;
8354            first = false;
8355        }
8356        if remaining & Self::VIDEO_DECODE_OUTPUT.0 != 0 {
8357            if !first {
8358                f.write_str(" | ")?;
8359            }
8360            f.write_str("VIDEO_DECODE_OUTPUT")?;
8361            remaining &= !Self::VIDEO_DECODE_OUTPUT.0;
8362            first = false;
8363        }
8364        if remaining & Self::VIDEO_DECODE_DPB.0 != 0 {
8365            if !first {
8366                f.write_str(" | ")?;
8367            }
8368            f.write_str("VIDEO_DECODE_DPB")?;
8369            remaining &= !Self::VIDEO_DECODE_DPB.0;
8370            first = false;
8371        }
8372        if remaining & Self::ACCELERATION_STRUCTURE_VERTEX_BUFFER.0 != 0 {
8373            if !first {
8374                f.write_str(" | ")?;
8375            }
8376            f.write_str("ACCELERATION_STRUCTURE_VERTEX_BUFFER")?;
8377            remaining &= !Self::ACCELERATION_STRUCTURE_VERTEX_BUFFER.0;
8378            first = false;
8379        }
8380        if remaining & Self::SAMPLED_IMAGE_FILTER_CUBIC.0 != 0 {
8381            if !first {
8382                f.write_str(" | ")?;
8383            }
8384            f.write_str("SAMPLED_IMAGE_FILTER_CUBIC")?;
8385            remaining &= !Self::SAMPLED_IMAGE_FILTER_CUBIC.0;
8386            first = false;
8387        }
8388        if remaining & Self::FRAGMENT_DENSITY_MAP.0 != 0 {
8389            if !first {
8390                f.write_str(" | ")?;
8391            }
8392            f.write_str("FRAGMENT_DENSITY_MAP")?;
8393            remaining &= !Self::FRAGMENT_DENSITY_MAP.0;
8394            first = false;
8395        }
8396        if remaining & Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
8397            if !first {
8398                f.write_str(" | ")?;
8399            }
8400            f.write_str("FRAGMENT_SHADING_RATE_ATTACHMENT")?;
8401            remaining &= !Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0;
8402            first = false;
8403        }
8404        if remaining & Self::VIDEO_ENCODE_INPUT.0 != 0 {
8405            if !first {
8406                f.write_str(" | ")?;
8407            }
8408            f.write_str("VIDEO_ENCODE_INPUT")?;
8409            remaining &= !Self::VIDEO_ENCODE_INPUT.0;
8410            first = false;
8411        }
8412        if remaining & Self::VIDEO_ENCODE_DPB.0 != 0 {
8413            if !first {
8414                f.write_str(" | ")?;
8415            }
8416            f.write_str("VIDEO_ENCODE_DPB")?;
8417            remaining &= !Self::VIDEO_ENCODE_DPB.0;
8418            first = false;
8419        }
8420        if remaining != 0u32 {
8421            if !first {
8422                f.write_str(" | ")?;
8423            }
8424            write!(f, "{:#x}", remaining)?;
8425        } else if first {
8426            f.write_str("(empty)")?;
8427        }
8428        Ok(())
8429    }
8430}
8431///[`VkFormatFeatureFlagBits2`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatFeatureFlagBits2.html)
8432#[repr(transparent)]
8433#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
8434#[doc(alias = "VkFormatFeatureFlagBits2")]
8435pub struct FormatFeatureFlagBits2(u64);
8436impl FormatFeatureFlagBits2 {
8437    #[inline]
8438    pub const fn empty() -> Self {
8439        Self(0u64)
8440    }
8441    #[inline]
8442    pub const fn from_raw(value: u64) -> Self {
8443        Self(value)
8444    }
8445    #[inline]
8446    pub const fn as_raw(self) -> u64 {
8447        self.0
8448    }
8449    #[inline]
8450    pub const fn is_empty(self) -> bool {
8451        self.0 == 0u64
8452    }
8453    #[inline]
8454    pub const fn contains(self, other: Self) -> bool {
8455        (self.0 & other.0) == other.0
8456    }
8457    #[inline]
8458    pub const fn all() -> Self {
8459        Self(648324832294862847u64)
8460    }
8461    ///Bit 0.
8462    pub const _2_SAMPLED_IMAGE: Self = Self(1u64);
8463    ///Bit 1.
8464    pub const _2_STORAGE_IMAGE: Self = Self(2u64);
8465    ///Bit 2.
8466    pub const _2_STORAGE_IMAGE_ATOMIC: Self = Self(4u64);
8467    ///Bit 3.
8468    pub const _2_UNIFORM_TEXEL_BUFFER: Self = Self(8u64);
8469    ///Bit 4.
8470    pub const _2_STORAGE_TEXEL_BUFFER: Self = Self(16u64);
8471    ///Bit 5.
8472    pub const _2_STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(32u64);
8473    ///Bit 6.
8474    pub const _2_VERTEX_BUFFER: Self = Self(64u64);
8475    ///Bit 7.
8476    pub const _2_COLOR_ATTACHMENT: Self = Self(128u64);
8477    ///Bit 8.
8478    pub const _2_COLOR_ATTACHMENT_BLEND: Self = Self(256u64);
8479    ///Bit 9.
8480    pub const _2_DEPTH_STENCIL_ATTACHMENT: Self = Self(512u64);
8481    ///Bit 10.
8482    pub const _2_BLIT_SRC: Self = Self(1024u64);
8483    ///Bit 11.
8484    pub const _2_BLIT_DST: Self = Self(2048u64);
8485    ///Bit 12.
8486    pub const _2_SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(4096u64);
8487    ///Bit 14.
8488    pub const _2_TRANSFER_SRC: Self = Self(16384u64);
8489    ///Bit 15.
8490    pub const _2_TRANSFER_DST: Self = Self(32768u64);
8491    ///Bit 16.
8492    pub const _2_SAMPLED_IMAGE_FILTER_MINMAX: Self = Self(65536u64);
8493    ///Bit 17.
8494    pub const _2_MIDPOINT_CHROMA_SAMPLES: Self = Self(131072u64);
8495    ///Bit 18.
8496    pub const _2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER: Self = Self(262144u64);
8497    ///Bit 19.
8498    pub const _2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER: Self = Self(
8499        524288u64,
8500    );
8501    ///Bit 20.
8502    pub const _2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT: Self = Self(
8503        1048576u64,
8504    );
8505    ///Bit 21.
8506    pub const _2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE: Self = Self(
8507        2097152u64,
8508    );
8509    ///Bit 22.
8510    pub const _2_DISJOINT: Self = Self(4194304u64);
8511    ///Bit 23.
8512    pub const _2_COSITED_CHROMA_SAMPLES: Self = Self(8388608u64);
8513    ///Bit 31.
8514    pub const _2_STORAGE_READ_WITHOUT_FORMAT: Self = Self(2147483648u64);
8515    ///Bit 32.
8516    pub const _2_STORAGE_WRITE_WITHOUT_FORMAT: Self = Self(4294967296u64);
8517    ///Bit 33.
8518    pub const _2_SAMPLED_IMAGE_DEPTH_COMPARISON: Self = Self(8589934592u64);
8519    ///Bit 13.
8520    pub const _2_SAMPLED_IMAGE_FILTER_CUBIC: Self = Self(8192u64);
8521    ///Bit 46.
8522    pub const _2_HOST_IMAGE_TRANSFER: Self = Self(70368744177664u64);
8523    ///Bit 25.
8524    pub const _2_VIDEO_DECODE_OUTPUT: Self = Self(33554432u64);
8525    ///Bit 26.
8526    pub const _2_VIDEO_DECODE_DPB: Self = Self(67108864u64);
8527    ///Bit 29.
8528    pub const _2_ACCELERATION_STRUCTURE_VERTEX_BUFFER: Self = Self(536870912u64);
8529    ///Bit 24.
8530    pub const _2_FRAGMENT_DENSITY_MAP: Self = Self(16777216u64);
8531    ///Bit 30.
8532    pub const _2_FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(1073741824u64);
8533    ///Bit 27.
8534    pub const _2_VIDEO_ENCODE_INPUT: Self = Self(134217728u64);
8535    ///Bit 28.
8536    pub const _2_VIDEO_ENCODE_DPB: Self = Self(268435456u64);
8537    ///Bit 51.
8538    pub const _2_ACCELERATION_STRUCTURE_RADIUS_BUFFER: Self = Self(2251799813685248u64);
8539    ///Bit 38.
8540    pub const _2_LINEAR_COLOR_ATTACHMENT: Self = Self(274877906944u64);
8541    ///Bit 34.
8542    pub const _2_WEIGHT_IMAGE_BIT: Self = Self(17179869184u64);
8543    ///Bit 35.
8544    pub const _2_WEIGHT_SAMPLED_IMAGE_BIT: Self = Self(34359738368u64);
8545    ///Bit 36.
8546    pub const _2_BLOCK_MATCHING_BIT: Self = Self(68719476736u64);
8547    ///Bit 37.
8548    pub const _2_BOX_FILTER_SAMPLED_BIT: Self = Self(137438953472u64);
8549    ///Bit 39.
8550    pub const _2_TENSOR_SHADER_BIT: Self = Self(549755813888u64);
8551    ///Bit 43.
8552    pub const _2_TENSOR_IMAGE_ALIASING_BIT: Self = Self(8796093022208u64);
8553    ///Bit 40.
8554    pub const _2_OPTICAL_FLOW_IMAGE: Self = Self(1099511627776u64);
8555    ///Bit 41.
8556    pub const _2_OPTICAL_FLOW_VECTOR: Self = Self(2199023255552u64);
8557    ///Bit 42.
8558    pub const _2_OPTICAL_FLOW_COST: Self = Self(4398046511104u64);
8559    ///Bit 48.
8560    pub const _2_TENSOR_DATA_GRAPH_BIT: Self = Self(281474976710656u64);
8561    ///Bit 59.
8562    pub const _2_COPY_IMAGE_INDIRECT_DST: Self = Self(576460752303423488u64);
8563    ///Bit 49.
8564    pub const _2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP: Self = Self(562949953421312u64);
8565    ///Bit 50.
8566    pub const _2_VIDEO_ENCODE_EMPHASIS_MAP: Self = Self(1125899906842624u64);
8567    ///Bit 52.
8568    pub const _2_DEPTH_COPY_ON_COMPUTE_QUEUE: Self = Self(4503599627370496u64);
8569    ///Bit 53.
8570    pub const _2_DEPTH_COPY_ON_TRANSFER_QUEUE: Self = Self(9007199254740992u64);
8571    ///Bit 54.
8572    pub const _2_STENCIL_COPY_ON_COMPUTE_QUEUE: Self = Self(18014398509481984u64);
8573    ///Bit 55.
8574    pub const _2_STENCIL_COPY_ON_TRANSFER_QUEUE: Self = Self(36028797018963968u64);
8575}
8576impl core::ops::BitOr for FormatFeatureFlagBits2 {
8577    type Output = Self;
8578    #[inline]
8579    fn bitor(self, rhs: Self) -> Self {
8580        Self(self.0 | rhs.0)
8581    }
8582}
8583impl core::ops::BitOrAssign for FormatFeatureFlagBits2 {
8584    #[inline]
8585    fn bitor_assign(&mut self, rhs: Self) {
8586        self.0 |= rhs.0;
8587    }
8588}
8589impl core::ops::BitAnd for FormatFeatureFlagBits2 {
8590    type Output = Self;
8591    #[inline]
8592    fn bitand(self, rhs: Self) -> Self {
8593        Self(self.0 & rhs.0)
8594    }
8595}
8596impl core::ops::BitAndAssign for FormatFeatureFlagBits2 {
8597    #[inline]
8598    fn bitand_assign(&mut self, rhs: Self) {
8599        self.0 &= rhs.0;
8600    }
8601}
8602impl core::ops::BitXor for FormatFeatureFlagBits2 {
8603    type Output = Self;
8604    #[inline]
8605    fn bitxor(self, rhs: Self) -> Self {
8606        Self(self.0 ^ rhs.0)
8607    }
8608}
8609impl core::ops::BitXorAssign for FormatFeatureFlagBits2 {
8610    #[inline]
8611    fn bitxor_assign(&mut self, rhs: Self) {
8612        self.0 ^= rhs.0;
8613    }
8614}
8615impl core::ops::Not for FormatFeatureFlagBits2 {
8616    type Output = Self;
8617    #[inline]
8618    fn not(self) -> Self {
8619        Self(!self.0)
8620    }
8621}
8622impl core::fmt::Debug for FormatFeatureFlagBits2 {
8623    #[allow(unused_mut, unused_variables)]
8624    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8625        let mut first = true;
8626        let mut remaining = self.0;
8627        if remaining & Self::_2_SAMPLED_IMAGE.0 != 0 {
8628            if !first {
8629                f.write_str(" | ")?;
8630            }
8631            f.write_str("_2_SAMPLED_IMAGE")?;
8632            remaining &= !Self::_2_SAMPLED_IMAGE.0;
8633            first = false;
8634        }
8635        if remaining & Self::_2_STORAGE_IMAGE.0 != 0 {
8636            if !first {
8637                f.write_str(" | ")?;
8638            }
8639            f.write_str("_2_STORAGE_IMAGE")?;
8640            remaining &= !Self::_2_STORAGE_IMAGE.0;
8641            first = false;
8642        }
8643        if remaining & Self::_2_STORAGE_IMAGE_ATOMIC.0 != 0 {
8644            if !first {
8645                f.write_str(" | ")?;
8646            }
8647            f.write_str("_2_STORAGE_IMAGE_ATOMIC")?;
8648            remaining &= !Self::_2_STORAGE_IMAGE_ATOMIC.0;
8649            first = false;
8650        }
8651        if remaining & Self::_2_UNIFORM_TEXEL_BUFFER.0 != 0 {
8652            if !first {
8653                f.write_str(" | ")?;
8654            }
8655            f.write_str("_2_UNIFORM_TEXEL_BUFFER")?;
8656            remaining &= !Self::_2_UNIFORM_TEXEL_BUFFER.0;
8657            first = false;
8658        }
8659        if remaining & Self::_2_STORAGE_TEXEL_BUFFER.0 != 0 {
8660            if !first {
8661                f.write_str(" | ")?;
8662            }
8663            f.write_str("_2_STORAGE_TEXEL_BUFFER")?;
8664            remaining &= !Self::_2_STORAGE_TEXEL_BUFFER.0;
8665            first = false;
8666        }
8667        if remaining & Self::_2_STORAGE_TEXEL_BUFFER_ATOMIC.0 != 0 {
8668            if !first {
8669                f.write_str(" | ")?;
8670            }
8671            f.write_str("_2_STORAGE_TEXEL_BUFFER_ATOMIC")?;
8672            remaining &= !Self::_2_STORAGE_TEXEL_BUFFER_ATOMIC.0;
8673            first = false;
8674        }
8675        if remaining & Self::_2_VERTEX_BUFFER.0 != 0 {
8676            if !first {
8677                f.write_str(" | ")?;
8678            }
8679            f.write_str("_2_VERTEX_BUFFER")?;
8680            remaining &= !Self::_2_VERTEX_BUFFER.0;
8681            first = false;
8682        }
8683        if remaining & Self::_2_COLOR_ATTACHMENT.0 != 0 {
8684            if !first {
8685                f.write_str(" | ")?;
8686            }
8687            f.write_str("_2_COLOR_ATTACHMENT")?;
8688            remaining &= !Self::_2_COLOR_ATTACHMENT.0;
8689            first = false;
8690        }
8691        if remaining & Self::_2_COLOR_ATTACHMENT_BLEND.0 != 0 {
8692            if !first {
8693                f.write_str(" | ")?;
8694            }
8695            f.write_str("_2_COLOR_ATTACHMENT_BLEND")?;
8696            remaining &= !Self::_2_COLOR_ATTACHMENT_BLEND.0;
8697            first = false;
8698        }
8699        if remaining & Self::_2_DEPTH_STENCIL_ATTACHMENT.0 != 0 {
8700            if !first {
8701                f.write_str(" | ")?;
8702            }
8703            f.write_str("_2_DEPTH_STENCIL_ATTACHMENT")?;
8704            remaining &= !Self::_2_DEPTH_STENCIL_ATTACHMENT.0;
8705            first = false;
8706        }
8707        if remaining & Self::_2_BLIT_SRC.0 != 0 {
8708            if !first {
8709                f.write_str(" | ")?;
8710            }
8711            f.write_str("_2_BLIT_SRC")?;
8712            remaining &= !Self::_2_BLIT_SRC.0;
8713            first = false;
8714        }
8715        if remaining & Self::_2_BLIT_DST.0 != 0 {
8716            if !first {
8717                f.write_str(" | ")?;
8718            }
8719            f.write_str("_2_BLIT_DST")?;
8720            remaining &= !Self::_2_BLIT_DST.0;
8721            first = false;
8722        }
8723        if remaining & Self::_2_SAMPLED_IMAGE_FILTER_LINEAR.0 != 0 {
8724            if !first {
8725                f.write_str(" | ")?;
8726            }
8727            f.write_str("_2_SAMPLED_IMAGE_FILTER_LINEAR")?;
8728            remaining &= !Self::_2_SAMPLED_IMAGE_FILTER_LINEAR.0;
8729            first = false;
8730        }
8731        if remaining & Self::_2_TRANSFER_SRC.0 != 0 {
8732            if !first {
8733                f.write_str(" | ")?;
8734            }
8735            f.write_str("_2_TRANSFER_SRC")?;
8736            remaining &= !Self::_2_TRANSFER_SRC.0;
8737            first = false;
8738        }
8739        if remaining & Self::_2_TRANSFER_DST.0 != 0 {
8740            if !first {
8741                f.write_str(" | ")?;
8742            }
8743            f.write_str("_2_TRANSFER_DST")?;
8744            remaining &= !Self::_2_TRANSFER_DST.0;
8745            first = false;
8746        }
8747        if remaining & Self::_2_SAMPLED_IMAGE_FILTER_MINMAX.0 != 0 {
8748            if !first {
8749                f.write_str(" | ")?;
8750            }
8751            f.write_str("_2_SAMPLED_IMAGE_FILTER_MINMAX")?;
8752            remaining &= !Self::_2_SAMPLED_IMAGE_FILTER_MINMAX.0;
8753            first = false;
8754        }
8755        if remaining & Self::_2_MIDPOINT_CHROMA_SAMPLES.0 != 0 {
8756            if !first {
8757                f.write_str(" | ")?;
8758            }
8759            f.write_str("_2_MIDPOINT_CHROMA_SAMPLES")?;
8760            remaining &= !Self::_2_MIDPOINT_CHROMA_SAMPLES.0;
8761            first = false;
8762        }
8763        if remaining & Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER.0 != 0 {
8764            if !first {
8765                f.write_str(" | ")?;
8766            }
8767            f.write_str("_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER")?;
8768            remaining &= !Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER.0;
8769            first = false;
8770        }
8771        if remaining
8772            & Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER.0
8773            != 0
8774        {
8775            if !first {
8776                f.write_str(" | ")?;
8777            }
8778            f.write_str(
8779                "_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER",
8780            )?;
8781            remaining
8782                &= !Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER
8783                    .0;
8784            first = false;
8785        }
8786        if remaining
8787            & Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT.0
8788            != 0
8789        {
8790            if !first {
8791                f.write_str(" | ")?;
8792            }
8793            f.write_str(
8794                "_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT",
8795            )?;
8796            remaining
8797                &= !Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT
8798                    .0;
8799            first = false;
8800        }
8801        if remaining
8802            & Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE
8803                .0 != 0
8804        {
8805            if !first {
8806                f.write_str(" | ")?;
8807            }
8808            f.write_str(
8809                "_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE",
8810            )?;
8811            remaining
8812                &= !Self::_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE
8813                    .0;
8814            first = false;
8815        }
8816        if remaining & Self::_2_DISJOINT.0 != 0 {
8817            if !first {
8818                f.write_str(" | ")?;
8819            }
8820            f.write_str("_2_DISJOINT")?;
8821            remaining &= !Self::_2_DISJOINT.0;
8822            first = false;
8823        }
8824        if remaining & Self::_2_COSITED_CHROMA_SAMPLES.0 != 0 {
8825            if !first {
8826                f.write_str(" | ")?;
8827            }
8828            f.write_str("_2_COSITED_CHROMA_SAMPLES")?;
8829            remaining &= !Self::_2_COSITED_CHROMA_SAMPLES.0;
8830            first = false;
8831        }
8832        if remaining & Self::_2_STORAGE_READ_WITHOUT_FORMAT.0 != 0 {
8833            if !first {
8834                f.write_str(" | ")?;
8835            }
8836            f.write_str("_2_STORAGE_READ_WITHOUT_FORMAT")?;
8837            remaining &= !Self::_2_STORAGE_READ_WITHOUT_FORMAT.0;
8838            first = false;
8839        }
8840        if remaining & Self::_2_STORAGE_WRITE_WITHOUT_FORMAT.0 != 0 {
8841            if !first {
8842                f.write_str(" | ")?;
8843            }
8844            f.write_str("_2_STORAGE_WRITE_WITHOUT_FORMAT")?;
8845            remaining &= !Self::_2_STORAGE_WRITE_WITHOUT_FORMAT.0;
8846            first = false;
8847        }
8848        if remaining & Self::_2_SAMPLED_IMAGE_DEPTH_COMPARISON.0 != 0 {
8849            if !first {
8850                f.write_str(" | ")?;
8851            }
8852            f.write_str("_2_SAMPLED_IMAGE_DEPTH_COMPARISON")?;
8853            remaining &= !Self::_2_SAMPLED_IMAGE_DEPTH_COMPARISON.0;
8854            first = false;
8855        }
8856        if remaining & Self::_2_SAMPLED_IMAGE_FILTER_CUBIC.0 != 0 {
8857            if !first {
8858                f.write_str(" | ")?;
8859            }
8860            f.write_str("_2_SAMPLED_IMAGE_FILTER_CUBIC")?;
8861            remaining &= !Self::_2_SAMPLED_IMAGE_FILTER_CUBIC.0;
8862            first = false;
8863        }
8864        if remaining & Self::_2_HOST_IMAGE_TRANSFER.0 != 0 {
8865            if !first {
8866                f.write_str(" | ")?;
8867            }
8868            f.write_str("_2_HOST_IMAGE_TRANSFER")?;
8869            remaining &= !Self::_2_HOST_IMAGE_TRANSFER.0;
8870            first = false;
8871        }
8872        if remaining & Self::_2_VIDEO_DECODE_OUTPUT.0 != 0 {
8873            if !first {
8874                f.write_str(" | ")?;
8875            }
8876            f.write_str("_2_VIDEO_DECODE_OUTPUT")?;
8877            remaining &= !Self::_2_VIDEO_DECODE_OUTPUT.0;
8878            first = false;
8879        }
8880        if remaining & Self::_2_VIDEO_DECODE_DPB.0 != 0 {
8881            if !first {
8882                f.write_str(" | ")?;
8883            }
8884            f.write_str("_2_VIDEO_DECODE_DPB")?;
8885            remaining &= !Self::_2_VIDEO_DECODE_DPB.0;
8886            first = false;
8887        }
8888        if remaining & Self::_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER.0 != 0 {
8889            if !first {
8890                f.write_str(" | ")?;
8891            }
8892            f.write_str("_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER")?;
8893            remaining &= !Self::_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER.0;
8894            first = false;
8895        }
8896        if remaining & Self::_2_FRAGMENT_DENSITY_MAP.0 != 0 {
8897            if !first {
8898                f.write_str(" | ")?;
8899            }
8900            f.write_str("_2_FRAGMENT_DENSITY_MAP")?;
8901            remaining &= !Self::_2_FRAGMENT_DENSITY_MAP.0;
8902            first = false;
8903        }
8904        if remaining & Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
8905            if !first {
8906                f.write_str(" | ")?;
8907            }
8908            f.write_str("_2_FRAGMENT_SHADING_RATE_ATTACHMENT")?;
8909            remaining &= !Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT.0;
8910            first = false;
8911        }
8912        if remaining & Self::_2_VIDEO_ENCODE_INPUT.0 != 0 {
8913            if !first {
8914                f.write_str(" | ")?;
8915            }
8916            f.write_str("_2_VIDEO_ENCODE_INPUT")?;
8917            remaining &= !Self::_2_VIDEO_ENCODE_INPUT.0;
8918            first = false;
8919        }
8920        if remaining & Self::_2_VIDEO_ENCODE_DPB.0 != 0 {
8921            if !first {
8922                f.write_str(" | ")?;
8923            }
8924            f.write_str("_2_VIDEO_ENCODE_DPB")?;
8925            remaining &= !Self::_2_VIDEO_ENCODE_DPB.0;
8926            first = false;
8927        }
8928        if remaining & Self::_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER.0 != 0 {
8929            if !first {
8930                f.write_str(" | ")?;
8931            }
8932            f.write_str("_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER")?;
8933            remaining &= !Self::_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER.0;
8934            first = false;
8935        }
8936        if remaining & Self::_2_LINEAR_COLOR_ATTACHMENT.0 != 0 {
8937            if !first {
8938                f.write_str(" | ")?;
8939            }
8940            f.write_str("_2_LINEAR_COLOR_ATTACHMENT")?;
8941            remaining &= !Self::_2_LINEAR_COLOR_ATTACHMENT.0;
8942            first = false;
8943        }
8944        if remaining & Self::_2_WEIGHT_IMAGE_BIT.0 != 0 {
8945            if !first {
8946                f.write_str(" | ")?;
8947            }
8948            f.write_str("_2_WEIGHT_IMAGE_BIT")?;
8949            remaining &= !Self::_2_WEIGHT_IMAGE_BIT.0;
8950            first = false;
8951        }
8952        if remaining & Self::_2_WEIGHT_SAMPLED_IMAGE_BIT.0 != 0 {
8953            if !first {
8954                f.write_str(" | ")?;
8955            }
8956            f.write_str("_2_WEIGHT_SAMPLED_IMAGE_BIT")?;
8957            remaining &= !Self::_2_WEIGHT_SAMPLED_IMAGE_BIT.0;
8958            first = false;
8959        }
8960        if remaining & Self::_2_BLOCK_MATCHING_BIT.0 != 0 {
8961            if !first {
8962                f.write_str(" | ")?;
8963            }
8964            f.write_str("_2_BLOCK_MATCHING_BIT")?;
8965            remaining &= !Self::_2_BLOCK_MATCHING_BIT.0;
8966            first = false;
8967        }
8968        if remaining & Self::_2_BOX_FILTER_SAMPLED_BIT.0 != 0 {
8969            if !first {
8970                f.write_str(" | ")?;
8971            }
8972            f.write_str("_2_BOX_FILTER_SAMPLED_BIT")?;
8973            remaining &= !Self::_2_BOX_FILTER_SAMPLED_BIT.0;
8974            first = false;
8975        }
8976        if remaining & Self::_2_TENSOR_SHADER_BIT.0 != 0 {
8977            if !first {
8978                f.write_str(" | ")?;
8979            }
8980            f.write_str("_2_TENSOR_SHADER_BIT")?;
8981            remaining &= !Self::_2_TENSOR_SHADER_BIT.0;
8982            first = false;
8983        }
8984        if remaining & Self::_2_TENSOR_IMAGE_ALIASING_BIT.0 != 0 {
8985            if !first {
8986                f.write_str(" | ")?;
8987            }
8988            f.write_str("_2_TENSOR_IMAGE_ALIASING_BIT")?;
8989            remaining &= !Self::_2_TENSOR_IMAGE_ALIASING_BIT.0;
8990            first = false;
8991        }
8992        if remaining & Self::_2_OPTICAL_FLOW_IMAGE.0 != 0 {
8993            if !first {
8994                f.write_str(" | ")?;
8995            }
8996            f.write_str("_2_OPTICAL_FLOW_IMAGE")?;
8997            remaining &= !Self::_2_OPTICAL_FLOW_IMAGE.0;
8998            first = false;
8999        }
9000        if remaining & Self::_2_OPTICAL_FLOW_VECTOR.0 != 0 {
9001            if !first {
9002                f.write_str(" | ")?;
9003            }
9004            f.write_str("_2_OPTICAL_FLOW_VECTOR")?;
9005            remaining &= !Self::_2_OPTICAL_FLOW_VECTOR.0;
9006            first = false;
9007        }
9008        if remaining & Self::_2_OPTICAL_FLOW_COST.0 != 0 {
9009            if !first {
9010                f.write_str(" | ")?;
9011            }
9012            f.write_str("_2_OPTICAL_FLOW_COST")?;
9013            remaining &= !Self::_2_OPTICAL_FLOW_COST.0;
9014            first = false;
9015        }
9016        if remaining & Self::_2_TENSOR_DATA_GRAPH_BIT.0 != 0 {
9017            if !first {
9018                f.write_str(" | ")?;
9019            }
9020            f.write_str("_2_TENSOR_DATA_GRAPH_BIT")?;
9021            remaining &= !Self::_2_TENSOR_DATA_GRAPH_BIT.0;
9022            first = false;
9023        }
9024        if remaining & Self::_2_COPY_IMAGE_INDIRECT_DST.0 != 0 {
9025            if !first {
9026                f.write_str(" | ")?;
9027            }
9028            f.write_str("_2_COPY_IMAGE_INDIRECT_DST")?;
9029            remaining &= !Self::_2_COPY_IMAGE_INDIRECT_DST.0;
9030            first = false;
9031        }
9032        if remaining & Self::_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP.0 != 0 {
9033            if !first {
9034                f.write_str(" | ")?;
9035            }
9036            f.write_str("_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP")?;
9037            remaining &= !Self::_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP.0;
9038            first = false;
9039        }
9040        if remaining & Self::_2_VIDEO_ENCODE_EMPHASIS_MAP.0 != 0 {
9041            if !first {
9042                f.write_str(" | ")?;
9043            }
9044            f.write_str("_2_VIDEO_ENCODE_EMPHASIS_MAP")?;
9045            remaining &= !Self::_2_VIDEO_ENCODE_EMPHASIS_MAP.0;
9046            first = false;
9047        }
9048        if remaining & Self::_2_DEPTH_COPY_ON_COMPUTE_QUEUE.0 != 0 {
9049            if !first {
9050                f.write_str(" | ")?;
9051            }
9052            f.write_str("_2_DEPTH_COPY_ON_COMPUTE_QUEUE")?;
9053            remaining &= !Self::_2_DEPTH_COPY_ON_COMPUTE_QUEUE.0;
9054            first = false;
9055        }
9056        if remaining & Self::_2_DEPTH_COPY_ON_TRANSFER_QUEUE.0 != 0 {
9057            if !first {
9058                f.write_str(" | ")?;
9059            }
9060            f.write_str("_2_DEPTH_COPY_ON_TRANSFER_QUEUE")?;
9061            remaining &= !Self::_2_DEPTH_COPY_ON_TRANSFER_QUEUE.0;
9062            first = false;
9063        }
9064        if remaining & Self::_2_STENCIL_COPY_ON_COMPUTE_QUEUE.0 != 0 {
9065            if !first {
9066                f.write_str(" | ")?;
9067            }
9068            f.write_str("_2_STENCIL_COPY_ON_COMPUTE_QUEUE")?;
9069            remaining &= !Self::_2_STENCIL_COPY_ON_COMPUTE_QUEUE.0;
9070            first = false;
9071        }
9072        if remaining & Self::_2_STENCIL_COPY_ON_TRANSFER_QUEUE.0 != 0 {
9073            if !first {
9074                f.write_str(" | ")?;
9075            }
9076            f.write_str("_2_STENCIL_COPY_ON_TRANSFER_QUEUE")?;
9077            remaining &= !Self::_2_STENCIL_COPY_ON_TRANSFER_QUEUE.0;
9078            first = false;
9079        }
9080        if remaining != 0u64 {
9081            if !first {
9082                f.write_str(" | ")?;
9083            }
9084            write!(f, "{:#x}", remaining)?;
9085        } else if first {
9086            f.write_str("(empty)")?;
9087        }
9088        Ok(())
9089    }
9090}
9091///[`VkFrameBoundaryFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFrameBoundaryFlagBitsEXT.html)
9092#[repr(transparent)]
9093#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9094#[doc(alias = "VkFrameBoundaryFlagBitsEXT")]
9095pub struct FrameBoundaryFlagBitsEXT(u32);
9096impl FrameBoundaryFlagBitsEXT {
9097    #[inline]
9098    pub const fn empty() -> Self {
9099        Self(0u32)
9100    }
9101    #[inline]
9102    pub const fn from_raw(value: u32) -> Self {
9103        Self(value)
9104    }
9105    #[inline]
9106    pub const fn as_raw(self) -> u32 {
9107        self.0
9108    }
9109    #[inline]
9110    pub const fn is_empty(self) -> bool {
9111        self.0 == 0u32
9112    }
9113    #[inline]
9114    pub const fn contains(self, other: Self) -> bool {
9115        (self.0 & other.0) == other.0
9116    }
9117    #[inline]
9118    pub const fn all() -> Self {
9119        Self(1u32)
9120    }
9121    ///Bit 0.
9122    pub const FRAME_END: Self = Self(1u32);
9123}
9124impl core::ops::BitOr for FrameBoundaryFlagBitsEXT {
9125    type Output = Self;
9126    #[inline]
9127    fn bitor(self, rhs: Self) -> Self {
9128        Self(self.0 | rhs.0)
9129    }
9130}
9131impl core::ops::BitOrAssign for FrameBoundaryFlagBitsEXT {
9132    #[inline]
9133    fn bitor_assign(&mut self, rhs: Self) {
9134        self.0 |= rhs.0;
9135    }
9136}
9137impl core::ops::BitAnd for FrameBoundaryFlagBitsEXT {
9138    type Output = Self;
9139    #[inline]
9140    fn bitand(self, rhs: Self) -> Self {
9141        Self(self.0 & rhs.0)
9142    }
9143}
9144impl core::ops::BitAndAssign for FrameBoundaryFlagBitsEXT {
9145    #[inline]
9146    fn bitand_assign(&mut self, rhs: Self) {
9147        self.0 &= rhs.0;
9148    }
9149}
9150impl core::ops::BitXor for FrameBoundaryFlagBitsEXT {
9151    type Output = Self;
9152    #[inline]
9153    fn bitxor(self, rhs: Self) -> Self {
9154        Self(self.0 ^ rhs.0)
9155    }
9156}
9157impl core::ops::BitXorAssign for FrameBoundaryFlagBitsEXT {
9158    #[inline]
9159    fn bitxor_assign(&mut self, rhs: Self) {
9160        self.0 ^= rhs.0;
9161    }
9162}
9163impl core::ops::Not for FrameBoundaryFlagBitsEXT {
9164    type Output = Self;
9165    #[inline]
9166    fn not(self) -> Self {
9167        Self(!self.0)
9168    }
9169}
9170impl core::fmt::Debug for FrameBoundaryFlagBitsEXT {
9171    #[allow(unused_mut, unused_variables)]
9172    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9173        let mut first = true;
9174        let mut remaining = self.0;
9175        if remaining & Self::FRAME_END.0 != 0 {
9176            if !first {
9177                f.write_str(" | ")?;
9178            }
9179            f.write_str("FRAME_END")?;
9180            remaining &= !Self::FRAME_END.0;
9181            first = false;
9182        }
9183        if remaining != 0u32 {
9184            if !first {
9185                f.write_str(" | ")?;
9186            }
9187            write!(f, "{:#x}", remaining)?;
9188        } else if first {
9189            f.write_str("(empty)")?;
9190        }
9191        Ok(())
9192    }
9193}
9194///[`VkFramebufferCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferCreateFlagBits.html)
9195#[repr(transparent)]
9196#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9197#[doc(alias = "VkFramebufferCreateFlagBits")]
9198pub struct FramebufferCreateFlagBits(u32);
9199impl FramebufferCreateFlagBits {
9200    #[inline]
9201    pub const fn empty() -> Self {
9202        Self(0u32)
9203    }
9204    #[inline]
9205    pub const fn from_raw(value: u32) -> Self {
9206        Self(value)
9207    }
9208    #[inline]
9209    pub const fn as_raw(self) -> u32 {
9210        self.0
9211    }
9212    #[inline]
9213    pub const fn is_empty(self) -> bool {
9214        self.0 == 0u32
9215    }
9216    #[inline]
9217    pub const fn contains(self, other: Self) -> bool {
9218        (self.0 & other.0) == other.0
9219    }
9220    #[inline]
9221    pub const fn all() -> Self {
9222        Self(1u32)
9223    }
9224    ///Bit 0.
9225    pub const IMAGELESS: Self = Self(1u32);
9226}
9227impl core::ops::BitOr for FramebufferCreateFlagBits {
9228    type Output = Self;
9229    #[inline]
9230    fn bitor(self, rhs: Self) -> Self {
9231        Self(self.0 | rhs.0)
9232    }
9233}
9234impl core::ops::BitOrAssign for FramebufferCreateFlagBits {
9235    #[inline]
9236    fn bitor_assign(&mut self, rhs: Self) {
9237        self.0 |= rhs.0;
9238    }
9239}
9240impl core::ops::BitAnd for FramebufferCreateFlagBits {
9241    type Output = Self;
9242    #[inline]
9243    fn bitand(self, rhs: Self) -> Self {
9244        Self(self.0 & rhs.0)
9245    }
9246}
9247impl core::ops::BitAndAssign for FramebufferCreateFlagBits {
9248    #[inline]
9249    fn bitand_assign(&mut self, rhs: Self) {
9250        self.0 &= rhs.0;
9251    }
9252}
9253impl core::ops::BitXor for FramebufferCreateFlagBits {
9254    type Output = Self;
9255    #[inline]
9256    fn bitxor(self, rhs: Self) -> Self {
9257        Self(self.0 ^ rhs.0)
9258    }
9259}
9260impl core::ops::BitXorAssign for FramebufferCreateFlagBits {
9261    #[inline]
9262    fn bitxor_assign(&mut self, rhs: Self) {
9263        self.0 ^= rhs.0;
9264    }
9265}
9266impl core::ops::Not for FramebufferCreateFlagBits {
9267    type Output = Self;
9268    #[inline]
9269    fn not(self) -> Self {
9270        Self(!self.0)
9271    }
9272}
9273impl core::fmt::Debug for FramebufferCreateFlagBits {
9274    #[allow(unused_mut, unused_variables)]
9275    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9276        let mut first = true;
9277        let mut remaining = self.0;
9278        if remaining & Self::IMAGELESS.0 != 0 {
9279            if !first {
9280                f.write_str(" | ")?;
9281            }
9282            f.write_str("IMAGELESS")?;
9283            remaining &= !Self::IMAGELESS.0;
9284            first = false;
9285        }
9286        if remaining != 0u32 {
9287            if !first {
9288                f.write_str(" | ")?;
9289            }
9290            write!(f, "{:#x}", remaining)?;
9291        } else if first {
9292            f.write_str("(empty)")?;
9293        }
9294        Ok(())
9295    }
9296}
9297///[`VkGeometryFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryFlagBitsKHR.html)
9298#[repr(transparent)]
9299#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9300#[doc(alias = "VkGeometryFlagBitsKHR")]
9301pub struct GeometryFlagBitsKHR(u32);
9302impl GeometryFlagBitsKHR {
9303    #[inline]
9304    pub const fn empty() -> Self {
9305        Self(0u32)
9306    }
9307    #[inline]
9308    pub const fn from_raw(value: u32) -> Self {
9309        Self(value)
9310    }
9311    #[inline]
9312    pub const fn as_raw(self) -> u32 {
9313        self.0
9314    }
9315    #[inline]
9316    pub const fn is_empty(self) -> bool {
9317        self.0 == 0u32
9318    }
9319    #[inline]
9320    pub const fn contains(self, other: Self) -> bool {
9321        (self.0 & other.0) == other.0
9322    }
9323    #[inline]
9324    pub const fn all() -> Self {
9325        Self(3u32)
9326    }
9327    ///Bit 0.
9328    pub const OPAQUE: Self = Self(1u32);
9329    ///Bit 1.
9330    pub const NO_DUPLICATE_ANY_HIT_INVOCATION: Self = Self(2u32);
9331}
9332impl core::ops::BitOr for GeometryFlagBitsKHR {
9333    type Output = Self;
9334    #[inline]
9335    fn bitor(self, rhs: Self) -> Self {
9336        Self(self.0 | rhs.0)
9337    }
9338}
9339impl core::ops::BitOrAssign for GeometryFlagBitsKHR {
9340    #[inline]
9341    fn bitor_assign(&mut self, rhs: Self) {
9342        self.0 |= rhs.0;
9343    }
9344}
9345impl core::ops::BitAnd for GeometryFlagBitsKHR {
9346    type Output = Self;
9347    #[inline]
9348    fn bitand(self, rhs: Self) -> Self {
9349        Self(self.0 & rhs.0)
9350    }
9351}
9352impl core::ops::BitAndAssign for GeometryFlagBitsKHR {
9353    #[inline]
9354    fn bitand_assign(&mut self, rhs: Self) {
9355        self.0 &= rhs.0;
9356    }
9357}
9358impl core::ops::BitXor for GeometryFlagBitsKHR {
9359    type Output = Self;
9360    #[inline]
9361    fn bitxor(self, rhs: Self) -> Self {
9362        Self(self.0 ^ rhs.0)
9363    }
9364}
9365impl core::ops::BitXorAssign for GeometryFlagBitsKHR {
9366    #[inline]
9367    fn bitxor_assign(&mut self, rhs: Self) {
9368        self.0 ^= rhs.0;
9369    }
9370}
9371impl core::ops::Not for GeometryFlagBitsKHR {
9372    type Output = Self;
9373    #[inline]
9374    fn not(self) -> Self {
9375        Self(!self.0)
9376    }
9377}
9378impl core::fmt::Debug for GeometryFlagBitsKHR {
9379    #[allow(unused_mut, unused_variables)]
9380    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9381        let mut first = true;
9382        let mut remaining = self.0;
9383        if remaining & Self::OPAQUE.0 != 0 {
9384            if !first {
9385                f.write_str(" | ")?;
9386            }
9387            f.write_str("OPAQUE")?;
9388            remaining &= !Self::OPAQUE.0;
9389            first = false;
9390        }
9391        if remaining & Self::NO_DUPLICATE_ANY_HIT_INVOCATION.0 != 0 {
9392            if !first {
9393                f.write_str(" | ")?;
9394            }
9395            f.write_str("NO_DUPLICATE_ANY_HIT_INVOCATION")?;
9396            remaining &= !Self::NO_DUPLICATE_ANY_HIT_INVOCATION.0;
9397            first = false;
9398        }
9399        if remaining != 0u32 {
9400            if !first {
9401                f.write_str(" | ")?;
9402            }
9403            write!(f, "{:#x}", remaining)?;
9404        } else if first {
9405            f.write_str("(empty)")?;
9406        }
9407        Ok(())
9408    }
9409}
9410///[`VkGeometryInstanceFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryInstanceFlagBitsKHR.html)
9411#[repr(transparent)]
9412#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9413#[doc(alias = "VkGeometryInstanceFlagBitsKHR")]
9414pub struct GeometryInstanceFlagBitsKHR(u32);
9415impl GeometryInstanceFlagBitsKHR {
9416    #[inline]
9417    pub const fn empty() -> Self {
9418        Self(0u32)
9419    }
9420    #[inline]
9421    pub const fn from_raw(value: u32) -> Self {
9422        Self(value)
9423    }
9424    #[inline]
9425    pub const fn as_raw(self) -> u32 {
9426        self.0
9427    }
9428    #[inline]
9429    pub const fn is_empty(self) -> bool {
9430        self.0 == 0u32
9431    }
9432    #[inline]
9433    pub const fn contains(self, other: Self) -> bool {
9434        (self.0 & other.0) == other.0
9435    }
9436    #[inline]
9437    pub const fn all() -> Self {
9438        Self(63u32)
9439    }
9440    ///Bit 0.
9441    pub const TRIANGLE_FACING_CULL_DISABLE: Self = Self(1u32);
9442    ///Bit 1.
9443    pub const TRIANGLE_FLIP_FACING: Self = Self(2u32);
9444    ///Bit 2.
9445    pub const FORCE_OPAQUE: Self = Self(4u32);
9446    ///Bit 3.
9447    pub const FORCE_NO_OPAQUE: Self = Self(8u32);
9448    pub const TRIANGLE_FRONT_COUNTERCLOCKWISE: Self = Self::TRIANGLE_FLIP_FACING;
9449    pub const TRIANGLE_CULL_DISABLE: Self = Self::TRIANGLE_FACING_CULL_DISABLE;
9450    ///Bit 4.
9451    pub const FORCE_OPACITY_MICROMAP_2_STATE: Self = Self(16u32);
9452    ///Bit 5.
9453    pub const DISABLE_OPACITY_MICROMAPS: Self = Self(32u32);
9454}
9455impl core::ops::BitOr for GeometryInstanceFlagBitsKHR {
9456    type Output = Self;
9457    #[inline]
9458    fn bitor(self, rhs: Self) -> Self {
9459        Self(self.0 | rhs.0)
9460    }
9461}
9462impl core::ops::BitOrAssign for GeometryInstanceFlagBitsKHR {
9463    #[inline]
9464    fn bitor_assign(&mut self, rhs: Self) {
9465        self.0 |= rhs.0;
9466    }
9467}
9468impl core::ops::BitAnd for GeometryInstanceFlagBitsKHR {
9469    type Output = Self;
9470    #[inline]
9471    fn bitand(self, rhs: Self) -> Self {
9472        Self(self.0 & rhs.0)
9473    }
9474}
9475impl core::ops::BitAndAssign for GeometryInstanceFlagBitsKHR {
9476    #[inline]
9477    fn bitand_assign(&mut self, rhs: Self) {
9478        self.0 &= rhs.0;
9479    }
9480}
9481impl core::ops::BitXor for GeometryInstanceFlagBitsKHR {
9482    type Output = Self;
9483    #[inline]
9484    fn bitxor(self, rhs: Self) -> Self {
9485        Self(self.0 ^ rhs.0)
9486    }
9487}
9488impl core::ops::BitXorAssign for GeometryInstanceFlagBitsKHR {
9489    #[inline]
9490    fn bitxor_assign(&mut self, rhs: Self) {
9491        self.0 ^= rhs.0;
9492    }
9493}
9494impl core::ops::Not for GeometryInstanceFlagBitsKHR {
9495    type Output = Self;
9496    #[inline]
9497    fn not(self) -> Self {
9498        Self(!self.0)
9499    }
9500}
9501impl core::fmt::Debug for GeometryInstanceFlagBitsKHR {
9502    #[allow(unused_mut, unused_variables)]
9503    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9504        let mut first = true;
9505        let mut remaining = self.0;
9506        if remaining & Self::TRIANGLE_FACING_CULL_DISABLE.0 != 0 {
9507            if !first {
9508                f.write_str(" | ")?;
9509            }
9510            f.write_str("TRIANGLE_FACING_CULL_DISABLE")?;
9511            remaining &= !Self::TRIANGLE_FACING_CULL_DISABLE.0;
9512            first = false;
9513        }
9514        if remaining & Self::TRIANGLE_FLIP_FACING.0 != 0 {
9515            if !first {
9516                f.write_str(" | ")?;
9517            }
9518            f.write_str("TRIANGLE_FLIP_FACING")?;
9519            remaining &= !Self::TRIANGLE_FLIP_FACING.0;
9520            first = false;
9521        }
9522        if remaining & Self::FORCE_OPAQUE.0 != 0 {
9523            if !first {
9524                f.write_str(" | ")?;
9525            }
9526            f.write_str("FORCE_OPAQUE")?;
9527            remaining &= !Self::FORCE_OPAQUE.0;
9528            first = false;
9529        }
9530        if remaining & Self::FORCE_NO_OPAQUE.0 != 0 {
9531            if !first {
9532                f.write_str(" | ")?;
9533            }
9534            f.write_str("FORCE_NO_OPAQUE")?;
9535            remaining &= !Self::FORCE_NO_OPAQUE.0;
9536            first = false;
9537        }
9538        if remaining & Self::FORCE_OPACITY_MICROMAP_2_STATE.0 != 0 {
9539            if !first {
9540                f.write_str(" | ")?;
9541            }
9542            f.write_str("FORCE_OPACITY_MICROMAP_2_STATE")?;
9543            remaining &= !Self::FORCE_OPACITY_MICROMAP_2_STATE.0;
9544            first = false;
9545        }
9546        if remaining & Self::DISABLE_OPACITY_MICROMAPS.0 != 0 {
9547            if !first {
9548                f.write_str(" | ")?;
9549            }
9550            f.write_str("DISABLE_OPACITY_MICROMAPS")?;
9551            remaining &= !Self::DISABLE_OPACITY_MICROMAPS.0;
9552            first = false;
9553        }
9554        if remaining != 0u32 {
9555            if !first {
9556                f.write_str(" | ")?;
9557            }
9558            write!(f, "{:#x}", remaining)?;
9559        } else if first {
9560            f.write_str("(empty)")?;
9561        }
9562        Ok(())
9563    }
9564}
9565///[`VkGraphicsPipelineLibraryFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryFlagBitsEXT.html)
9566#[repr(transparent)]
9567#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9568#[doc(alias = "VkGraphicsPipelineLibraryFlagBitsEXT")]
9569pub struct GraphicsPipelineLibraryFlagBitsEXT(u32);
9570impl GraphicsPipelineLibraryFlagBitsEXT {
9571    #[inline]
9572    pub const fn empty() -> Self {
9573        Self(0u32)
9574    }
9575    #[inline]
9576    pub const fn from_raw(value: u32) -> Self {
9577        Self(value)
9578    }
9579    #[inline]
9580    pub const fn as_raw(self) -> u32 {
9581        self.0
9582    }
9583    #[inline]
9584    pub const fn is_empty(self) -> bool {
9585        self.0 == 0u32
9586    }
9587    #[inline]
9588    pub const fn contains(self, other: Self) -> bool {
9589        (self.0 & other.0) == other.0
9590    }
9591    #[inline]
9592    pub const fn all() -> Self {
9593        Self(15u32)
9594    }
9595    ///Bit 0.
9596    pub const VERTEX_INPUT_INTERFACE: Self = Self(1u32);
9597    ///Bit 1.
9598    pub const PRE_RASTERIZATION_SHADERS: Self = Self(2u32);
9599    ///Bit 2.
9600    pub const FRAGMENT_SHADER: Self = Self(4u32);
9601    ///Bit 3.
9602    pub const FRAGMENT_OUTPUT_INTERFACE: Self = Self(8u32);
9603}
9604impl core::ops::BitOr for GraphicsPipelineLibraryFlagBitsEXT {
9605    type Output = Self;
9606    #[inline]
9607    fn bitor(self, rhs: Self) -> Self {
9608        Self(self.0 | rhs.0)
9609    }
9610}
9611impl core::ops::BitOrAssign for GraphicsPipelineLibraryFlagBitsEXT {
9612    #[inline]
9613    fn bitor_assign(&mut self, rhs: Self) {
9614        self.0 |= rhs.0;
9615    }
9616}
9617impl core::ops::BitAnd for GraphicsPipelineLibraryFlagBitsEXT {
9618    type Output = Self;
9619    #[inline]
9620    fn bitand(self, rhs: Self) -> Self {
9621        Self(self.0 & rhs.0)
9622    }
9623}
9624impl core::ops::BitAndAssign for GraphicsPipelineLibraryFlagBitsEXT {
9625    #[inline]
9626    fn bitand_assign(&mut self, rhs: Self) {
9627        self.0 &= rhs.0;
9628    }
9629}
9630impl core::ops::BitXor for GraphicsPipelineLibraryFlagBitsEXT {
9631    type Output = Self;
9632    #[inline]
9633    fn bitxor(self, rhs: Self) -> Self {
9634        Self(self.0 ^ rhs.0)
9635    }
9636}
9637impl core::ops::BitXorAssign for GraphicsPipelineLibraryFlagBitsEXT {
9638    #[inline]
9639    fn bitxor_assign(&mut self, rhs: Self) {
9640        self.0 ^= rhs.0;
9641    }
9642}
9643impl core::ops::Not for GraphicsPipelineLibraryFlagBitsEXT {
9644    type Output = Self;
9645    #[inline]
9646    fn not(self) -> Self {
9647        Self(!self.0)
9648    }
9649}
9650impl core::fmt::Debug for GraphicsPipelineLibraryFlagBitsEXT {
9651    #[allow(unused_mut, unused_variables)]
9652    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9653        let mut first = true;
9654        let mut remaining = self.0;
9655        if remaining & Self::VERTEX_INPUT_INTERFACE.0 != 0 {
9656            if !first {
9657                f.write_str(" | ")?;
9658            }
9659            f.write_str("VERTEX_INPUT_INTERFACE")?;
9660            remaining &= !Self::VERTEX_INPUT_INTERFACE.0;
9661            first = false;
9662        }
9663        if remaining & Self::PRE_RASTERIZATION_SHADERS.0 != 0 {
9664            if !first {
9665                f.write_str(" | ")?;
9666            }
9667            f.write_str("PRE_RASTERIZATION_SHADERS")?;
9668            remaining &= !Self::PRE_RASTERIZATION_SHADERS.0;
9669            first = false;
9670        }
9671        if remaining & Self::FRAGMENT_SHADER.0 != 0 {
9672            if !first {
9673                f.write_str(" | ")?;
9674            }
9675            f.write_str("FRAGMENT_SHADER")?;
9676            remaining &= !Self::FRAGMENT_SHADER.0;
9677            first = false;
9678        }
9679        if remaining & Self::FRAGMENT_OUTPUT_INTERFACE.0 != 0 {
9680            if !first {
9681                f.write_str(" | ")?;
9682            }
9683            f.write_str("FRAGMENT_OUTPUT_INTERFACE")?;
9684            remaining &= !Self::FRAGMENT_OUTPUT_INTERFACE.0;
9685            first = false;
9686        }
9687        if remaining != 0u32 {
9688            if !first {
9689                f.write_str(" | ")?;
9690            }
9691            write!(f, "{:#x}", remaining)?;
9692        } else if first {
9693            f.write_str("(empty)")?;
9694        }
9695        Ok(())
9696    }
9697}
9698///[`VkHostImageCopyFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostImageCopyFlagBits.html)
9699#[repr(transparent)]
9700#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9701#[doc(alias = "VkHostImageCopyFlagBits")]
9702pub struct HostImageCopyFlagBits(u32);
9703impl HostImageCopyFlagBits {
9704    #[inline]
9705    pub const fn empty() -> Self {
9706        Self(0u32)
9707    }
9708    #[inline]
9709    pub const fn from_raw(value: u32) -> Self {
9710        Self(value)
9711    }
9712    #[inline]
9713    pub const fn as_raw(self) -> u32 {
9714        self.0
9715    }
9716    #[inline]
9717    pub const fn is_empty(self) -> bool {
9718        self.0 == 0u32
9719    }
9720    #[inline]
9721    pub const fn contains(self, other: Self) -> bool {
9722        (self.0 & other.0) == other.0
9723    }
9724    #[inline]
9725    pub const fn all() -> Self {
9726        Self(1u32)
9727    }
9728    ///Bit 0.
9729    pub const MEMCPY: Self = Self(1u32);
9730}
9731impl core::ops::BitOr for HostImageCopyFlagBits {
9732    type Output = Self;
9733    #[inline]
9734    fn bitor(self, rhs: Self) -> Self {
9735        Self(self.0 | rhs.0)
9736    }
9737}
9738impl core::ops::BitOrAssign for HostImageCopyFlagBits {
9739    #[inline]
9740    fn bitor_assign(&mut self, rhs: Self) {
9741        self.0 |= rhs.0;
9742    }
9743}
9744impl core::ops::BitAnd for HostImageCopyFlagBits {
9745    type Output = Self;
9746    #[inline]
9747    fn bitand(self, rhs: Self) -> Self {
9748        Self(self.0 & rhs.0)
9749    }
9750}
9751impl core::ops::BitAndAssign for HostImageCopyFlagBits {
9752    #[inline]
9753    fn bitand_assign(&mut self, rhs: Self) {
9754        self.0 &= rhs.0;
9755    }
9756}
9757impl core::ops::BitXor for HostImageCopyFlagBits {
9758    type Output = Self;
9759    #[inline]
9760    fn bitxor(self, rhs: Self) -> Self {
9761        Self(self.0 ^ rhs.0)
9762    }
9763}
9764impl core::ops::BitXorAssign for HostImageCopyFlagBits {
9765    #[inline]
9766    fn bitxor_assign(&mut self, rhs: Self) {
9767        self.0 ^= rhs.0;
9768    }
9769}
9770impl core::ops::Not for HostImageCopyFlagBits {
9771    type Output = Self;
9772    #[inline]
9773    fn not(self) -> Self {
9774        Self(!self.0)
9775    }
9776}
9777impl core::fmt::Debug for HostImageCopyFlagBits {
9778    #[allow(unused_mut, unused_variables)]
9779    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9780        let mut first = true;
9781        let mut remaining = self.0;
9782        if remaining & Self::MEMCPY.0 != 0 {
9783            if !first {
9784                f.write_str(" | ")?;
9785            }
9786            f.write_str("MEMCPY")?;
9787            remaining &= !Self::MEMCPY.0;
9788            first = false;
9789        }
9790        if remaining != 0u32 {
9791            if !first {
9792                f.write_str(" | ")?;
9793            }
9794            write!(f, "{:#x}", remaining)?;
9795        } else if first {
9796            f.write_str("(empty)")?;
9797        }
9798        Ok(())
9799    }
9800}
9801///[`VkImageAspectFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageAspectFlagBits.html)
9802#[repr(transparent)]
9803#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
9804#[doc(alias = "VkImageAspectFlagBits")]
9805pub struct ImageAspectFlagBits(u32);
9806impl ImageAspectFlagBits {
9807    #[inline]
9808    pub const fn empty() -> Self {
9809        Self(0u32)
9810    }
9811    #[inline]
9812    pub const fn from_raw(value: u32) -> Self {
9813        Self(value)
9814    }
9815    #[inline]
9816    pub const fn as_raw(self) -> u32 {
9817        self.0
9818    }
9819    #[inline]
9820    pub const fn is_empty(self) -> bool {
9821        self.0 == 0u32
9822    }
9823    #[inline]
9824    pub const fn contains(self, other: Self) -> bool {
9825        (self.0 & other.0) == other.0
9826    }
9827    #[inline]
9828    pub const fn all() -> Self {
9829        Self(2047u32)
9830    }
9831    ///Bit 0.
9832    pub const COLOR: Self = Self(1u32);
9833    ///Bit 1.
9834    pub const DEPTH: Self = Self(2u32);
9835    ///Bit 2.
9836    pub const STENCIL: Self = Self(4u32);
9837    ///Bit 3.
9838    pub const METADATA: Self = Self(8u32);
9839    ///Bit 4.
9840    pub const PLANE_0: Self = Self(16u32);
9841    ///Bit 5.
9842    pub const PLANE_1: Self = Self(32u32);
9843    ///Bit 6.
9844    pub const PLANE_2: Self = Self(64u32);
9845    pub const NONE: Self = Self(0u32);
9846    ///Bit 7.
9847    pub const MEMORY_PLANE_0: Self = Self(128u32);
9848    ///Bit 8.
9849    pub const MEMORY_PLANE_1: Self = Self(256u32);
9850    ///Bit 9.
9851    pub const MEMORY_PLANE_2: Self = Self(512u32);
9852    ///Bit 10.
9853    pub const MEMORY_PLANE_3: Self = Self(1024u32);
9854}
9855impl core::ops::BitOr for ImageAspectFlagBits {
9856    type Output = Self;
9857    #[inline]
9858    fn bitor(self, rhs: Self) -> Self {
9859        Self(self.0 | rhs.0)
9860    }
9861}
9862impl core::ops::BitOrAssign for ImageAspectFlagBits {
9863    #[inline]
9864    fn bitor_assign(&mut self, rhs: Self) {
9865        self.0 |= rhs.0;
9866    }
9867}
9868impl core::ops::BitAnd for ImageAspectFlagBits {
9869    type Output = Self;
9870    #[inline]
9871    fn bitand(self, rhs: Self) -> Self {
9872        Self(self.0 & rhs.0)
9873    }
9874}
9875impl core::ops::BitAndAssign for ImageAspectFlagBits {
9876    #[inline]
9877    fn bitand_assign(&mut self, rhs: Self) {
9878        self.0 &= rhs.0;
9879    }
9880}
9881impl core::ops::BitXor for ImageAspectFlagBits {
9882    type Output = Self;
9883    #[inline]
9884    fn bitxor(self, rhs: Self) -> Self {
9885        Self(self.0 ^ rhs.0)
9886    }
9887}
9888impl core::ops::BitXorAssign for ImageAspectFlagBits {
9889    #[inline]
9890    fn bitxor_assign(&mut self, rhs: Self) {
9891        self.0 ^= rhs.0;
9892    }
9893}
9894impl core::ops::Not for ImageAspectFlagBits {
9895    type Output = Self;
9896    #[inline]
9897    fn not(self) -> Self {
9898        Self(!self.0)
9899    }
9900}
9901impl core::fmt::Debug for ImageAspectFlagBits {
9902    #[allow(unused_mut, unused_variables)]
9903    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9904        let mut first = true;
9905        let mut remaining = self.0;
9906        if remaining & Self::COLOR.0 != 0 {
9907            if !first {
9908                f.write_str(" | ")?;
9909            }
9910            f.write_str("COLOR")?;
9911            remaining &= !Self::COLOR.0;
9912            first = false;
9913        }
9914        if remaining & Self::DEPTH.0 != 0 {
9915            if !first {
9916                f.write_str(" | ")?;
9917            }
9918            f.write_str("DEPTH")?;
9919            remaining &= !Self::DEPTH.0;
9920            first = false;
9921        }
9922        if remaining & Self::STENCIL.0 != 0 {
9923            if !first {
9924                f.write_str(" | ")?;
9925            }
9926            f.write_str("STENCIL")?;
9927            remaining &= !Self::STENCIL.0;
9928            first = false;
9929        }
9930        if remaining & Self::METADATA.0 != 0 {
9931            if !first {
9932                f.write_str(" | ")?;
9933            }
9934            f.write_str("METADATA")?;
9935            remaining &= !Self::METADATA.0;
9936            first = false;
9937        }
9938        if remaining & Self::PLANE_0.0 != 0 {
9939            if !first {
9940                f.write_str(" | ")?;
9941            }
9942            f.write_str("PLANE_0")?;
9943            remaining &= !Self::PLANE_0.0;
9944            first = false;
9945        }
9946        if remaining & Self::PLANE_1.0 != 0 {
9947            if !first {
9948                f.write_str(" | ")?;
9949            }
9950            f.write_str("PLANE_1")?;
9951            remaining &= !Self::PLANE_1.0;
9952            first = false;
9953        }
9954        if remaining & Self::PLANE_2.0 != 0 {
9955            if !first {
9956                f.write_str(" | ")?;
9957            }
9958            f.write_str("PLANE_2")?;
9959            remaining &= !Self::PLANE_2.0;
9960            first = false;
9961        }
9962        if remaining & Self::MEMORY_PLANE_0.0 != 0 {
9963            if !first {
9964                f.write_str(" | ")?;
9965            }
9966            f.write_str("MEMORY_PLANE_0")?;
9967            remaining &= !Self::MEMORY_PLANE_0.0;
9968            first = false;
9969        }
9970        if remaining & Self::MEMORY_PLANE_1.0 != 0 {
9971            if !first {
9972                f.write_str(" | ")?;
9973            }
9974            f.write_str("MEMORY_PLANE_1")?;
9975            remaining &= !Self::MEMORY_PLANE_1.0;
9976            first = false;
9977        }
9978        if remaining & Self::MEMORY_PLANE_2.0 != 0 {
9979            if !first {
9980                f.write_str(" | ")?;
9981            }
9982            f.write_str("MEMORY_PLANE_2")?;
9983            remaining &= !Self::MEMORY_PLANE_2.0;
9984            first = false;
9985        }
9986        if remaining & Self::MEMORY_PLANE_3.0 != 0 {
9987            if !first {
9988                f.write_str(" | ")?;
9989            }
9990            f.write_str("MEMORY_PLANE_3")?;
9991            remaining &= !Self::MEMORY_PLANE_3.0;
9992            first = false;
9993        }
9994        if remaining != 0u32 {
9995            if !first {
9996                f.write_str(" | ")?;
9997            }
9998            write!(f, "{:#x}", remaining)?;
9999        } else if first {
10000            f.write_str("(empty)")?;
10001        }
10002        Ok(())
10003    }
10004}
10005///[`VkImageCompressionFixedRateFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionFixedRateFlagBitsEXT.html)
10006#[repr(transparent)]
10007#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
10008#[doc(alias = "VkImageCompressionFixedRateFlagBitsEXT")]
10009pub struct ImageCompressionFixedRateFlagBitsEXT(u32);
10010impl ImageCompressionFixedRateFlagBitsEXT {
10011    #[inline]
10012    pub const fn empty() -> Self {
10013        Self(0u32)
10014    }
10015    #[inline]
10016    pub const fn from_raw(value: u32) -> Self {
10017        Self(value)
10018    }
10019    #[inline]
10020    pub const fn as_raw(self) -> u32 {
10021        self.0
10022    }
10023    #[inline]
10024    pub const fn is_empty(self) -> bool {
10025        self.0 == 0u32
10026    }
10027    #[inline]
10028    pub const fn contains(self, other: Self) -> bool {
10029        (self.0 & other.0) == other.0
10030    }
10031    #[inline]
10032    pub const fn all() -> Self {
10033        Self(16777215u32)
10034    }
10035    pub const NONE: Self = Self(0u32);
10036    ///Bit 0.
10037    pub const _1BPC: Self = Self(1u32);
10038    ///Bit 1.
10039    pub const _2BPC: Self = Self(2u32);
10040    ///Bit 2.
10041    pub const _3BPC: Self = Self(4u32);
10042    ///Bit 3.
10043    pub const _4BPC: Self = Self(8u32);
10044    ///Bit 4.
10045    pub const _5BPC: Self = Self(16u32);
10046    ///Bit 5.
10047    pub const _6BPC: Self = Self(32u32);
10048    ///Bit 6.
10049    pub const _7BPC: Self = Self(64u32);
10050    ///Bit 7.
10051    pub const _8BPC: Self = Self(128u32);
10052    ///Bit 8.
10053    pub const _9BPC: Self = Self(256u32);
10054    ///Bit 9.
10055    pub const _10BPC: Self = Self(512u32);
10056    ///Bit 10.
10057    pub const _11BPC: Self = Self(1024u32);
10058    ///Bit 11.
10059    pub const _12BPC: Self = Self(2048u32);
10060    ///Bit 12.
10061    pub const _13BPC: Self = Self(4096u32);
10062    ///Bit 13.
10063    pub const _14BPC: Self = Self(8192u32);
10064    ///Bit 14.
10065    pub const _15BPC: Self = Self(16384u32);
10066    ///Bit 15.
10067    pub const _16BPC: Self = Self(32768u32);
10068    ///Bit 16.
10069    pub const _17BPC: Self = Self(65536u32);
10070    ///Bit 17.
10071    pub const _18BPC: Self = Self(131072u32);
10072    ///Bit 18.
10073    pub const _19BPC: Self = Self(262144u32);
10074    ///Bit 19.
10075    pub const _20BPC: Self = Self(524288u32);
10076    ///Bit 20.
10077    pub const _21BPC: Self = Self(1048576u32);
10078    ///Bit 21.
10079    pub const _22BPC: Self = Self(2097152u32);
10080    ///Bit 22.
10081    pub const _23BPC: Self = Self(4194304u32);
10082    ///Bit 23.
10083    pub const _24BPC: Self = Self(8388608u32);
10084}
10085impl core::ops::BitOr for ImageCompressionFixedRateFlagBitsEXT {
10086    type Output = Self;
10087    #[inline]
10088    fn bitor(self, rhs: Self) -> Self {
10089        Self(self.0 | rhs.0)
10090    }
10091}
10092impl core::ops::BitOrAssign for ImageCompressionFixedRateFlagBitsEXT {
10093    #[inline]
10094    fn bitor_assign(&mut self, rhs: Self) {
10095        self.0 |= rhs.0;
10096    }
10097}
10098impl core::ops::BitAnd for ImageCompressionFixedRateFlagBitsEXT {
10099    type Output = Self;
10100    #[inline]
10101    fn bitand(self, rhs: Self) -> Self {
10102        Self(self.0 & rhs.0)
10103    }
10104}
10105impl core::ops::BitAndAssign for ImageCompressionFixedRateFlagBitsEXT {
10106    #[inline]
10107    fn bitand_assign(&mut self, rhs: Self) {
10108        self.0 &= rhs.0;
10109    }
10110}
10111impl core::ops::BitXor for ImageCompressionFixedRateFlagBitsEXT {
10112    type Output = Self;
10113    #[inline]
10114    fn bitxor(self, rhs: Self) -> Self {
10115        Self(self.0 ^ rhs.0)
10116    }
10117}
10118impl core::ops::BitXorAssign for ImageCompressionFixedRateFlagBitsEXT {
10119    #[inline]
10120    fn bitxor_assign(&mut self, rhs: Self) {
10121        self.0 ^= rhs.0;
10122    }
10123}
10124impl core::ops::Not for ImageCompressionFixedRateFlagBitsEXT {
10125    type Output = Self;
10126    #[inline]
10127    fn not(self) -> Self {
10128        Self(!self.0)
10129    }
10130}
10131impl core::fmt::Debug for ImageCompressionFixedRateFlagBitsEXT {
10132    #[allow(unused_mut, unused_variables)]
10133    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10134        let mut first = true;
10135        let mut remaining = self.0;
10136        if remaining & Self::_1BPC.0 != 0 {
10137            if !first {
10138                f.write_str(" | ")?;
10139            }
10140            f.write_str("_1BPC")?;
10141            remaining &= !Self::_1BPC.0;
10142            first = false;
10143        }
10144        if remaining & Self::_2BPC.0 != 0 {
10145            if !first {
10146                f.write_str(" | ")?;
10147            }
10148            f.write_str("_2BPC")?;
10149            remaining &= !Self::_2BPC.0;
10150            first = false;
10151        }
10152        if remaining & Self::_3BPC.0 != 0 {
10153            if !first {
10154                f.write_str(" | ")?;
10155            }
10156            f.write_str("_3BPC")?;
10157            remaining &= !Self::_3BPC.0;
10158            first = false;
10159        }
10160        if remaining & Self::_4BPC.0 != 0 {
10161            if !first {
10162                f.write_str(" | ")?;
10163            }
10164            f.write_str("_4BPC")?;
10165            remaining &= !Self::_4BPC.0;
10166            first = false;
10167        }
10168        if remaining & Self::_5BPC.0 != 0 {
10169            if !first {
10170                f.write_str(" | ")?;
10171            }
10172            f.write_str("_5BPC")?;
10173            remaining &= !Self::_5BPC.0;
10174            first = false;
10175        }
10176        if remaining & Self::_6BPC.0 != 0 {
10177            if !first {
10178                f.write_str(" | ")?;
10179            }
10180            f.write_str("_6BPC")?;
10181            remaining &= !Self::_6BPC.0;
10182            first = false;
10183        }
10184        if remaining & Self::_7BPC.0 != 0 {
10185            if !first {
10186                f.write_str(" | ")?;
10187            }
10188            f.write_str("_7BPC")?;
10189            remaining &= !Self::_7BPC.0;
10190            first = false;
10191        }
10192        if remaining & Self::_8BPC.0 != 0 {
10193            if !first {
10194                f.write_str(" | ")?;
10195            }
10196            f.write_str("_8BPC")?;
10197            remaining &= !Self::_8BPC.0;
10198            first = false;
10199        }
10200        if remaining & Self::_9BPC.0 != 0 {
10201            if !first {
10202                f.write_str(" | ")?;
10203            }
10204            f.write_str("_9BPC")?;
10205            remaining &= !Self::_9BPC.0;
10206            first = false;
10207        }
10208        if remaining & Self::_10BPC.0 != 0 {
10209            if !first {
10210                f.write_str(" | ")?;
10211            }
10212            f.write_str("_10BPC")?;
10213            remaining &= !Self::_10BPC.0;
10214            first = false;
10215        }
10216        if remaining & Self::_11BPC.0 != 0 {
10217            if !first {
10218                f.write_str(" | ")?;
10219            }
10220            f.write_str("_11BPC")?;
10221            remaining &= !Self::_11BPC.0;
10222            first = false;
10223        }
10224        if remaining & Self::_12BPC.0 != 0 {
10225            if !first {
10226                f.write_str(" | ")?;
10227            }
10228            f.write_str("_12BPC")?;
10229            remaining &= !Self::_12BPC.0;
10230            first = false;
10231        }
10232        if remaining & Self::_13BPC.0 != 0 {
10233            if !first {
10234                f.write_str(" | ")?;
10235            }
10236            f.write_str("_13BPC")?;
10237            remaining &= !Self::_13BPC.0;
10238            first = false;
10239        }
10240        if remaining & Self::_14BPC.0 != 0 {
10241            if !first {
10242                f.write_str(" | ")?;
10243            }
10244            f.write_str("_14BPC")?;
10245            remaining &= !Self::_14BPC.0;
10246            first = false;
10247        }
10248        if remaining & Self::_15BPC.0 != 0 {
10249            if !first {
10250                f.write_str(" | ")?;
10251            }
10252            f.write_str("_15BPC")?;
10253            remaining &= !Self::_15BPC.0;
10254            first = false;
10255        }
10256        if remaining & Self::_16BPC.0 != 0 {
10257            if !first {
10258                f.write_str(" | ")?;
10259            }
10260            f.write_str("_16BPC")?;
10261            remaining &= !Self::_16BPC.0;
10262            first = false;
10263        }
10264        if remaining & Self::_17BPC.0 != 0 {
10265            if !first {
10266                f.write_str(" | ")?;
10267            }
10268            f.write_str("_17BPC")?;
10269            remaining &= !Self::_17BPC.0;
10270            first = false;
10271        }
10272        if remaining & Self::_18BPC.0 != 0 {
10273            if !first {
10274                f.write_str(" | ")?;
10275            }
10276            f.write_str("_18BPC")?;
10277            remaining &= !Self::_18BPC.0;
10278            first = false;
10279        }
10280        if remaining & Self::_19BPC.0 != 0 {
10281            if !first {
10282                f.write_str(" | ")?;
10283            }
10284            f.write_str("_19BPC")?;
10285            remaining &= !Self::_19BPC.0;
10286            first = false;
10287        }
10288        if remaining & Self::_20BPC.0 != 0 {
10289            if !first {
10290                f.write_str(" | ")?;
10291            }
10292            f.write_str("_20BPC")?;
10293            remaining &= !Self::_20BPC.0;
10294            first = false;
10295        }
10296        if remaining & Self::_21BPC.0 != 0 {
10297            if !first {
10298                f.write_str(" | ")?;
10299            }
10300            f.write_str("_21BPC")?;
10301            remaining &= !Self::_21BPC.0;
10302            first = false;
10303        }
10304        if remaining & Self::_22BPC.0 != 0 {
10305            if !first {
10306                f.write_str(" | ")?;
10307            }
10308            f.write_str("_22BPC")?;
10309            remaining &= !Self::_22BPC.0;
10310            first = false;
10311        }
10312        if remaining & Self::_23BPC.0 != 0 {
10313            if !first {
10314                f.write_str(" | ")?;
10315            }
10316            f.write_str("_23BPC")?;
10317            remaining &= !Self::_23BPC.0;
10318            first = false;
10319        }
10320        if remaining & Self::_24BPC.0 != 0 {
10321            if !first {
10322                f.write_str(" | ")?;
10323            }
10324            f.write_str("_24BPC")?;
10325            remaining &= !Self::_24BPC.0;
10326            first = false;
10327        }
10328        if remaining != 0u32 {
10329            if !first {
10330                f.write_str(" | ")?;
10331            }
10332            write!(f, "{:#x}", remaining)?;
10333        } else if first {
10334            f.write_str("(empty)")?;
10335        }
10336        Ok(())
10337    }
10338}
10339///[`VkImageCompressionFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionFlagBitsEXT.html)
10340#[repr(transparent)]
10341#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
10342#[doc(alias = "VkImageCompressionFlagBitsEXT")]
10343pub struct ImageCompressionFlagBitsEXT(u32);
10344impl ImageCompressionFlagBitsEXT {
10345    #[inline]
10346    pub const fn empty() -> Self {
10347        Self(0u32)
10348    }
10349    #[inline]
10350    pub const fn from_raw(value: u32) -> Self {
10351        Self(value)
10352    }
10353    #[inline]
10354    pub const fn as_raw(self) -> u32 {
10355        self.0
10356    }
10357    #[inline]
10358    pub const fn is_empty(self) -> bool {
10359        self.0 == 0u32
10360    }
10361    #[inline]
10362    pub const fn contains(self, other: Self) -> bool {
10363        (self.0 & other.0) == other.0
10364    }
10365    #[inline]
10366    pub const fn all() -> Self {
10367        Self(7u32)
10368    }
10369    pub const DEFAULT: Self = Self(0u32);
10370    ///Bit 0.
10371    pub const FIXED_RATE_DEFAULT: Self = Self(1u32);
10372    ///Bit 1.
10373    pub const FIXED_RATE_EXPLICIT: Self = Self(2u32);
10374    ///Bit 2.
10375    pub const DISABLED: Self = Self(4u32);
10376}
10377impl core::ops::BitOr for ImageCompressionFlagBitsEXT {
10378    type Output = Self;
10379    #[inline]
10380    fn bitor(self, rhs: Self) -> Self {
10381        Self(self.0 | rhs.0)
10382    }
10383}
10384impl core::ops::BitOrAssign for ImageCompressionFlagBitsEXT {
10385    #[inline]
10386    fn bitor_assign(&mut self, rhs: Self) {
10387        self.0 |= rhs.0;
10388    }
10389}
10390impl core::ops::BitAnd for ImageCompressionFlagBitsEXT {
10391    type Output = Self;
10392    #[inline]
10393    fn bitand(self, rhs: Self) -> Self {
10394        Self(self.0 & rhs.0)
10395    }
10396}
10397impl core::ops::BitAndAssign for ImageCompressionFlagBitsEXT {
10398    #[inline]
10399    fn bitand_assign(&mut self, rhs: Self) {
10400        self.0 &= rhs.0;
10401    }
10402}
10403impl core::ops::BitXor for ImageCompressionFlagBitsEXT {
10404    type Output = Self;
10405    #[inline]
10406    fn bitxor(self, rhs: Self) -> Self {
10407        Self(self.0 ^ rhs.0)
10408    }
10409}
10410impl core::ops::BitXorAssign for ImageCompressionFlagBitsEXT {
10411    #[inline]
10412    fn bitxor_assign(&mut self, rhs: Self) {
10413        self.0 ^= rhs.0;
10414    }
10415}
10416impl core::ops::Not for ImageCompressionFlagBitsEXT {
10417    type Output = Self;
10418    #[inline]
10419    fn not(self) -> Self {
10420        Self(!self.0)
10421    }
10422}
10423impl core::fmt::Debug for ImageCompressionFlagBitsEXT {
10424    #[allow(unused_mut, unused_variables)]
10425    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10426        let mut first = true;
10427        let mut remaining = self.0;
10428        if remaining & Self::FIXED_RATE_DEFAULT.0 != 0 {
10429            if !first {
10430                f.write_str(" | ")?;
10431            }
10432            f.write_str("FIXED_RATE_DEFAULT")?;
10433            remaining &= !Self::FIXED_RATE_DEFAULT.0;
10434            first = false;
10435        }
10436        if remaining & Self::FIXED_RATE_EXPLICIT.0 != 0 {
10437            if !first {
10438                f.write_str(" | ")?;
10439            }
10440            f.write_str("FIXED_RATE_EXPLICIT")?;
10441            remaining &= !Self::FIXED_RATE_EXPLICIT.0;
10442            first = false;
10443        }
10444        if remaining & Self::DISABLED.0 != 0 {
10445            if !first {
10446                f.write_str(" | ")?;
10447            }
10448            f.write_str("DISABLED")?;
10449            remaining &= !Self::DISABLED.0;
10450            first = false;
10451        }
10452        if remaining != 0u32 {
10453            if !first {
10454                f.write_str(" | ")?;
10455            }
10456            write!(f, "{:#x}", remaining)?;
10457        } else if first {
10458            f.write_str("(empty)")?;
10459        }
10460        Ok(())
10461    }
10462}
10463///[`VkImageConstraintsInfoFlagBitsFUCHSIA`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageConstraintsInfoFlagBitsFUCHSIA.html)
10464#[repr(transparent)]
10465#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
10466#[doc(alias = "VkImageConstraintsInfoFlagBitsFUCHSIA")]
10467pub struct ImageConstraintsInfoFlagBitsFUCHSIA(u32);
10468impl ImageConstraintsInfoFlagBitsFUCHSIA {
10469    #[inline]
10470    pub const fn empty() -> Self {
10471        Self(0u32)
10472    }
10473    #[inline]
10474    pub const fn from_raw(value: u32) -> Self {
10475        Self(value)
10476    }
10477    #[inline]
10478    pub const fn as_raw(self) -> u32 {
10479        self.0
10480    }
10481    #[inline]
10482    pub const fn is_empty(self) -> bool {
10483        self.0 == 0u32
10484    }
10485    #[inline]
10486    pub const fn contains(self, other: Self) -> bool {
10487        (self.0 & other.0) == other.0
10488    }
10489    #[inline]
10490    pub const fn all() -> Self {
10491        Self(31u32)
10492    }
10493    ///Bit 0.
10494    pub const CPU_READ_RARELY: Self = Self(1u32);
10495    ///Bit 1.
10496    pub const CPU_READ_OFTEN: Self = Self(2u32);
10497    ///Bit 2.
10498    pub const CPU_WRITE_RARELY: Self = Self(4u32);
10499    ///Bit 3.
10500    pub const CPU_WRITE_OFTEN: Self = Self(8u32);
10501    ///Bit 4.
10502    pub const PROTECTED_OPTIONAL: Self = Self(16u32);
10503}
10504impl core::ops::BitOr for ImageConstraintsInfoFlagBitsFUCHSIA {
10505    type Output = Self;
10506    #[inline]
10507    fn bitor(self, rhs: Self) -> Self {
10508        Self(self.0 | rhs.0)
10509    }
10510}
10511impl core::ops::BitOrAssign for ImageConstraintsInfoFlagBitsFUCHSIA {
10512    #[inline]
10513    fn bitor_assign(&mut self, rhs: Self) {
10514        self.0 |= rhs.0;
10515    }
10516}
10517impl core::ops::BitAnd for ImageConstraintsInfoFlagBitsFUCHSIA {
10518    type Output = Self;
10519    #[inline]
10520    fn bitand(self, rhs: Self) -> Self {
10521        Self(self.0 & rhs.0)
10522    }
10523}
10524impl core::ops::BitAndAssign for ImageConstraintsInfoFlagBitsFUCHSIA {
10525    #[inline]
10526    fn bitand_assign(&mut self, rhs: Self) {
10527        self.0 &= rhs.0;
10528    }
10529}
10530impl core::ops::BitXor for ImageConstraintsInfoFlagBitsFUCHSIA {
10531    type Output = Self;
10532    #[inline]
10533    fn bitxor(self, rhs: Self) -> Self {
10534        Self(self.0 ^ rhs.0)
10535    }
10536}
10537impl core::ops::BitXorAssign for ImageConstraintsInfoFlagBitsFUCHSIA {
10538    #[inline]
10539    fn bitxor_assign(&mut self, rhs: Self) {
10540        self.0 ^= rhs.0;
10541    }
10542}
10543impl core::ops::Not for ImageConstraintsInfoFlagBitsFUCHSIA {
10544    type Output = Self;
10545    #[inline]
10546    fn not(self) -> Self {
10547        Self(!self.0)
10548    }
10549}
10550impl core::fmt::Debug for ImageConstraintsInfoFlagBitsFUCHSIA {
10551    #[allow(unused_mut, unused_variables)]
10552    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10553        let mut first = true;
10554        let mut remaining = self.0;
10555        if remaining & Self::CPU_READ_RARELY.0 != 0 {
10556            if !first {
10557                f.write_str(" | ")?;
10558            }
10559            f.write_str("CPU_READ_RARELY")?;
10560            remaining &= !Self::CPU_READ_RARELY.0;
10561            first = false;
10562        }
10563        if remaining & Self::CPU_READ_OFTEN.0 != 0 {
10564            if !first {
10565                f.write_str(" | ")?;
10566            }
10567            f.write_str("CPU_READ_OFTEN")?;
10568            remaining &= !Self::CPU_READ_OFTEN.0;
10569            first = false;
10570        }
10571        if remaining & Self::CPU_WRITE_RARELY.0 != 0 {
10572            if !first {
10573                f.write_str(" | ")?;
10574            }
10575            f.write_str("CPU_WRITE_RARELY")?;
10576            remaining &= !Self::CPU_WRITE_RARELY.0;
10577            first = false;
10578        }
10579        if remaining & Self::CPU_WRITE_OFTEN.0 != 0 {
10580            if !first {
10581                f.write_str(" | ")?;
10582            }
10583            f.write_str("CPU_WRITE_OFTEN")?;
10584            remaining &= !Self::CPU_WRITE_OFTEN.0;
10585            first = false;
10586        }
10587        if remaining & Self::PROTECTED_OPTIONAL.0 != 0 {
10588            if !first {
10589                f.write_str(" | ")?;
10590            }
10591            f.write_str("PROTECTED_OPTIONAL")?;
10592            remaining &= !Self::PROTECTED_OPTIONAL.0;
10593            first = false;
10594        }
10595        if remaining != 0u32 {
10596            if !first {
10597                f.write_str(" | ")?;
10598            }
10599            write!(f, "{:#x}", remaining)?;
10600        } else if first {
10601            f.write_str("(empty)")?;
10602        }
10603        Ok(())
10604    }
10605}
10606///[`VkImageCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCreateFlagBits.html)
10607#[repr(transparent)]
10608#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
10609#[doc(alias = "VkImageCreateFlagBits")]
10610pub struct ImageCreateFlagBits(u32);
10611impl ImageCreateFlagBits {
10612    #[inline]
10613    pub const fn empty() -> Self {
10614        Self(0u32)
10615    }
10616    #[inline]
10617    pub const fn from_raw(value: u32) -> Self {
10618        Self(value)
10619    }
10620    #[inline]
10621    pub const fn as_raw(self) -> u32 {
10622        self.0
10623    }
10624    #[inline]
10625    pub const fn is_empty(self) -> bool {
10626        self.0 == 0u32
10627    }
10628    #[inline]
10629    pub const fn contains(self, other: Self) -> bool {
10630        (self.0 & other.0) == other.0
10631    }
10632    #[inline]
10633    pub const fn all() -> Self {
10634        Self(1572863u32)
10635    }
10636    ///Bit 0.
10637    pub const SPARSE_BINDING: Self = Self(1u32);
10638    ///Bit 1.
10639    pub const SPARSE_RESIDENCY: Self = Self(2u32);
10640    ///Bit 2.
10641    pub const SPARSE_ALIASED: Self = Self(4u32);
10642    ///Bit 3.
10643    pub const MUTABLE_FORMAT: Self = Self(8u32);
10644    ///Bit 4.
10645    pub const CUBE_COMPATIBLE: Self = Self(16u32);
10646    ///Bit 10.
10647    pub const ALIAS: Self = Self(1024u32);
10648    ///Bit 6.
10649    pub const SPLIT_INSTANCE_BIND_REGIONS: Self = Self(64u32);
10650    ///Bit 5.
10651    pub const _2D_ARRAY_COMPATIBLE: Self = Self(32u32);
10652    ///Bit 7.
10653    pub const BLOCK_TEXEL_VIEW_COMPATIBLE: Self = Self(128u32);
10654    ///Bit 8.
10655    pub const EXTENDED_USAGE: Self = Self(256u32);
10656    ///Bit 11.
10657    pub const PROTECTED: Self = Self(2048u32);
10658    ///Bit 9.
10659    pub const DISJOINT: Self = Self(512u32);
10660    ///Bit 13.
10661    pub const CORNER_SAMPLED: Self = Self(8192u32);
10662    ///Bit 16.
10663    pub const DESCRIPTOR_HEAP_CAPTURE_REPLAY: Self = Self(65536u32);
10664    ///Bit 12.
10665    pub const SAMPLE_LOCATIONS_COMPATIBLE_DEPTH: Self = Self(4096u32);
10666    ///Bit 14.
10667    pub const SUBSAMPLED: Self = Self(16384u32);
10668    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY: Self = Self::DESCRIPTOR_HEAP_CAPTURE_REPLAY;
10669    ///Bit 18.
10670    pub const MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED: Self = Self(262144u32);
10671    ///Bit 17.
10672    pub const _2D_VIEW_COMPATIBLE: Self = Self(131072u32);
10673    pub const FRAGMENT_DENSITY_MAP_OFFSET_BIT: Self = Self::FRAGMENT_DENSITY_MAP_OFFSET;
10674    ///Bit 20.
10675    pub const VIDEO_PROFILE_INDEPENDENT: Self = Self(1048576u32);
10676    ///Bit 15.
10677    pub const FRAGMENT_DENSITY_MAP_OFFSET: Self = Self(32768u32);
10678}
10679impl core::ops::BitOr for ImageCreateFlagBits {
10680    type Output = Self;
10681    #[inline]
10682    fn bitor(self, rhs: Self) -> Self {
10683        Self(self.0 | rhs.0)
10684    }
10685}
10686impl core::ops::BitOrAssign for ImageCreateFlagBits {
10687    #[inline]
10688    fn bitor_assign(&mut self, rhs: Self) {
10689        self.0 |= rhs.0;
10690    }
10691}
10692impl core::ops::BitAnd for ImageCreateFlagBits {
10693    type Output = Self;
10694    #[inline]
10695    fn bitand(self, rhs: Self) -> Self {
10696        Self(self.0 & rhs.0)
10697    }
10698}
10699impl core::ops::BitAndAssign for ImageCreateFlagBits {
10700    #[inline]
10701    fn bitand_assign(&mut self, rhs: Self) {
10702        self.0 &= rhs.0;
10703    }
10704}
10705impl core::ops::BitXor for ImageCreateFlagBits {
10706    type Output = Self;
10707    #[inline]
10708    fn bitxor(self, rhs: Self) -> Self {
10709        Self(self.0 ^ rhs.0)
10710    }
10711}
10712impl core::ops::BitXorAssign for ImageCreateFlagBits {
10713    #[inline]
10714    fn bitxor_assign(&mut self, rhs: Self) {
10715        self.0 ^= rhs.0;
10716    }
10717}
10718impl core::ops::Not for ImageCreateFlagBits {
10719    type Output = Self;
10720    #[inline]
10721    fn not(self) -> Self {
10722        Self(!self.0)
10723    }
10724}
10725impl core::fmt::Debug for ImageCreateFlagBits {
10726    #[allow(unused_mut, unused_variables)]
10727    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10728        let mut first = true;
10729        let mut remaining = self.0;
10730        if remaining & Self::SPARSE_BINDING.0 != 0 {
10731            if !first {
10732                f.write_str(" | ")?;
10733            }
10734            f.write_str("SPARSE_BINDING")?;
10735            remaining &= !Self::SPARSE_BINDING.0;
10736            first = false;
10737        }
10738        if remaining & Self::SPARSE_RESIDENCY.0 != 0 {
10739            if !first {
10740                f.write_str(" | ")?;
10741            }
10742            f.write_str("SPARSE_RESIDENCY")?;
10743            remaining &= !Self::SPARSE_RESIDENCY.0;
10744            first = false;
10745        }
10746        if remaining & Self::SPARSE_ALIASED.0 != 0 {
10747            if !first {
10748                f.write_str(" | ")?;
10749            }
10750            f.write_str("SPARSE_ALIASED")?;
10751            remaining &= !Self::SPARSE_ALIASED.0;
10752            first = false;
10753        }
10754        if remaining & Self::MUTABLE_FORMAT.0 != 0 {
10755            if !first {
10756                f.write_str(" | ")?;
10757            }
10758            f.write_str("MUTABLE_FORMAT")?;
10759            remaining &= !Self::MUTABLE_FORMAT.0;
10760            first = false;
10761        }
10762        if remaining & Self::CUBE_COMPATIBLE.0 != 0 {
10763            if !first {
10764                f.write_str(" | ")?;
10765            }
10766            f.write_str("CUBE_COMPATIBLE")?;
10767            remaining &= !Self::CUBE_COMPATIBLE.0;
10768            first = false;
10769        }
10770        if remaining & Self::ALIAS.0 != 0 {
10771            if !first {
10772                f.write_str(" | ")?;
10773            }
10774            f.write_str("ALIAS")?;
10775            remaining &= !Self::ALIAS.0;
10776            first = false;
10777        }
10778        if remaining & Self::SPLIT_INSTANCE_BIND_REGIONS.0 != 0 {
10779            if !first {
10780                f.write_str(" | ")?;
10781            }
10782            f.write_str("SPLIT_INSTANCE_BIND_REGIONS")?;
10783            remaining &= !Self::SPLIT_INSTANCE_BIND_REGIONS.0;
10784            first = false;
10785        }
10786        if remaining & Self::_2D_ARRAY_COMPATIBLE.0 != 0 {
10787            if !first {
10788                f.write_str(" | ")?;
10789            }
10790            f.write_str("_2D_ARRAY_COMPATIBLE")?;
10791            remaining &= !Self::_2D_ARRAY_COMPATIBLE.0;
10792            first = false;
10793        }
10794        if remaining & Self::BLOCK_TEXEL_VIEW_COMPATIBLE.0 != 0 {
10795            if !first {
10796                f.write_str(" | ")?;
10797            }
10798            f.write_str("BLOCK_TEXEL_VIEW_COMPATIBLE")?;
10799            remaining &= !Self::BLOCK_TEXEL_VIEW_COMPATIBLE.0;
10800            first = false;
10801        }
10802        if remaining & Self::EXTENDED_USAGE.0 != 0 {
10803            if !first {
10804                f.write_str(" | ")?;
10805            }
10806            f.write_str("EXTENDED_USAGE")?;
10807            remaining &= !Self::EXTENDED_USAGE.0;
10808            first = false;
10809        }
10810        if remaining & Self::PROTECTED.0 != 0 {
10811            if !first {
10812                f.write_str(" | ")?;
10813            }
10814            f.write_str("PROTECTED")?;
10815            remaining &= !Self::PROTECTED.0;
10816            first = false;
10817        }
10818        if remaining & Self::DISJOINT.0 != 0 {
10819            if !first {
10820                f.write_str(" | ")?;
10821            }
10822            f.write_str("DISJOINT")?;
10823            remaining &= !Self::DISJOINT.0;
10824            first = false;
10825        }
10826        if remaining & Self::CORNER_SAMPLED.0 != 0 {
10827            if !first {
10828                f.write_str(" | ")?;
10829            }
10830            f.write_str("CORNER_SAMPLED")?;
10831            remaining &= !Self::CORNER_SAMPLED.0;
10832            first = false;
10833        }
10834        if remaining & Self::DESCRIPTOR_HEAP_CAPTURE_REPLAY.0 != 0 {
10835            if !first {
10836                f.write_str(" | ")?;
10837            }
10838            f.write_str("DESCRIPTOR_HEAP_CAPTURE_REPLAY")?;
10839            remaining &= !Self::DESCRIPTOR_HEAP_CAPTURE_REPLAY.0;
10840            first = false;
10841        }
10842        if remaining & Self::SAMPLE_LOCATIONS_COMPATIBLE_DEPTH.0 != 0 {
10843            if !first {
10844                f.write_str(" | ")?;
10845            }
10846            f.write_str("SAMPLE_LOCATIONS_COMPATIBLE_DEPTH")?;
10847            remaining &= !Self::SAMPLE_LOCATIONS_COMPATIBLE_DEPTH.0;
10848            first = false;
10849        }
10850        if remaining & Self::SUBSAMPLED.0 != 0 {
10851            if !first {
10852                f.write_str(" | ")?;
10853            }
10854            f.write_str("SUBSAMPLED")?;
10855            remaining &= !Self::SUBSAMPLED.0;
10856            first = false;
10857        }
10858        if remaining & Self::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED.0 != 0 {
10859            if !first {
10860                f.write_str(" | ")?;
10861            }
10862            f.write_str("MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED")?;
10863            remaining &= !Self::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED.0;
10864            first = false;
10865        }
10866        if remaining & Self::_2D_VIEW_COMPATIBLE.0 != 0 {
10867            if !first {
10868                f.write_str(" | ")?;
10869            }
10870            f.write_str("_2D_VIEW_COMPATIBLE")?;
10871            remaining &= !Self::_2D_VIEW_COMPATIBLE.0;
10872            first = false;
10873        }
10874        if remaining & Self::VIDEO_PROFILE_INDEPENDENT.0 != 0 {
10875            if !first {
10876                f.write_str(" | ")?;
10877            }
10878            f.write_str("VIDEO_PROFILE_INDEPENDENT")?;
10879            remaining &= !Self::VIDEO_PROFILE_INDEPENDENT.0;
10880            first = false;
10881        }
10882        if remaining & Self::FRAGMENT_DENSITY_MAP_OFFSET.0 != 0 {
10883            if !first {
10884                f.write_str(" | ")?;
10885            }
10886            f.write_str("FRAGMENT_DENSITY_MAP_OFFSET")?;
10887            remaining &= !Self::FRAGMENT_DENSITY_MAP_OFFSET.0;
10888            first = false;
10889        }
10890        if remaining != 0u32 {
10891            if !first {
10892                f.write_str(" | ")?;
10893            }
10894            write!(f, "{:#x}", remaining)?;
10895        } else if first {
10896            f.write_str("(empty)")?;
10897        }
10898        Ok(())
10899    }
10900}
10901///[`VkImageFormatConstraintsFlagBitsFUCHSIA`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageFormatConstraintsFlagBitsFUCHSIA.html)
10902#[repr(transparent)]
10903#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
10904#[doc(alias = "VkImageFormatConstraintsFlagBitsFUCHSIA")]
10905pub struct ImageFormatConstraintsFlagBitsFUCHSIA(u32);
10906impl ImageFormatConstraintsFlagBitsFUCHSIA {
10907    #[inline]
10908    pub const fn empty() -> Self {
10909        Self(0u32)
10910    }
10911    #[inline]
10912    pub const fn from_raw(value: u32) -> Self {
10913        Self(value)
10914    }
10915    #[inline]
10916    pub const fn as_raw(self) -> u32 {
10917        self.0
10918    }
10919    #[inline]
10920    pub const fn is_empty(self) -> bool {
10921        self.0 == 0u32
10922    }
10923    #[inline]
10924    pub const fn contains(self, other: Self) -> bool {
10925        (self.0 & other.0) == other.0
10926    }
10927    #[inline]
10928    pub const fn all() -> Self {
10929        Self(0u32)
10930    }
10931}
10932impl core::ops::BitOr for ImageFormatConstraintsFlagBitsFUCHSIA {
10933    type Output = Self;
10934    #[inline]
10935    fn bitor(self, rhs: Self) -> Self {
10936        Self(self.0 | rhs.0)
10937    }
10938}
10939impl core::ops::BitOrAssign for ImageFormatConstraintsFlagBitsFUCHSIA {
10940    #[inline]
10941    fn bitor_assign(&mut self, rhs: Self) {
10942        self.0 |= rhs.0;
10943    }
10944}
10945impl core::ops::BitAnd for ImageFormatConstraintsFlagBitsFUCHSIA {
10946    type Output = Self;
10947    #[inline]
10948    fn bitand(self, rhs: Self) -> Self {
10949        Self(self.0 & rhs.0)
10950    }
10951}
10952impl core::ops::BitAndAssign for ImageFormatConstraintsFlagBitsFUCHSIA {
10953    #[inline]
10954    fn bitand_assign(&mut self, rhs: Self) {
10955        self.0 &= rhs.0;
10956    }
10957}
10958impl core::ops::BitXor for ImageFormatConstraintsFlagBitsFUCHSIA {
10959    type Output = Self;
10960    #[inline]
10961    fn bitxor(self, rhs: Self) -> Self {
10962        Self(self.0 ^ rhs.0)
10963    }
10964}
10965impl core::ops::BitXorAssign for ImageFormatConstraintsFlagBitsFUCHSIA {
10966    #[inline]
10967    fn bitxor_assign(&mut self, rhs: Self) {
10968        self.0 ^= rhs.0;
10969    }
10970}
10971impl core::ops::Not for ImageFormatConstraintsFlagBitsFUCHSIA {
10972    type Output = Self;
10973    #[inline]
10974    fn not(self) -> Self {
10975        Self(!self.0)
10976    }
10977}
10978impl core::fmt::Debug for ImageFormatConstraintsFlagBitsFUCHSIA {
10979    #[allow(unused_mut, unused_variables)]
10980    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10981        let mut first = true;
10982        let mut remaining = self.0;
10983        if remaining != 0u32 {
10984            if !first {
10985                f.write_str(" | ")?;
10986            }
10987            write!(f, "{:#x}", remaining)?;
10988        } else if first {
10989            f.write_str("(empty)")?;
10990        }
10991        Ok(())
10992    }
10993}
10994///[`VkImageUsageFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageUsageFlagBits.html)
10995#[repr(transparent)]
10996#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
10997#[doc(alias = "VkImageUsageFlagBits")]
10998pub struct ImageUsageFlagBits(u32);
10999impl ImageUsageFlagBits {
11000    #[inline]
11001    pub const fn empty() -> Self {
11002        Self(0u32)
11003    }
11004    #[inline]
11005    pub const fn from_raw(value: u32) -> Self {
11006        Self(value)
11007    }
11008    #[inline]
11009    pub const fn as_raw(self) -> u32 {
11010        self.0
11011    }
11012    #[inline]
11013    pub const fn is_empty(self) -> bool {
11014        self.0 == 0u32
11015    }
11016    #[inline]
11017    pub const fn contains(self, other: Self) -> bool {
11018        (self.0 & other.0) == other.0
11019    }
11020    #[inline]
11021    pub const fn all() -> Self {
11022        Self(251461631u32)
11023    }
11024    ///Bit 0.
11025    pub const TRANSFER_SRC: Self = Self(1u32);
11026    ///Bit 1.
11027    pub const TRANSFER_DST: Self = Self(2u32);
11028    ///Bit 2.
11029    pub const SAMPLED: Self = Self(4u32);
11030    ///Bit 3.
11031    pub const STORAGE: Self = Self(8u32);
11032    ///Bit 4.
11033    pub const COLOR_ATTACHMENT: Self = Self(16u32);
11034    ///Bit 5.
11035    pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(32u32);
11036    ///Bit 6.
11037    pub const TRANSIENT_ATTACHMENT: Self = Self(64u32);
11038    ///Bit 7.
11039    pub const INPUT_ATTACHMENT: Self = Self(128u32);
11040    ///Bit 22.
11041    pub const HOST_TRANSFER: Self = Self(4194304u32);
11042    ///Bit 10.
11043    pub const VIDEO_DECODE_DST: Self = Self(1024u32);
11044    ///Bit 11.
11045    pub const VIDEO_DECODE_SRC: Self = Self(2048u32);
11046    ///Bit 12.
11047    pub const VIDEO_DECODE_DPB: Self = Self(4096u32);
11048    pub const SHADING_RATE_IMAGE: Self = Self::FRAGMENT_SHADING_RATE_ATTACHMENT;
11049    ///Bit 9.
11050    pub const FRAGMENT_DENSITY_MAP: Self = Self(512u32);
11051    ///Bit 8.
11052    pub const FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(256u32);
11053    ///Bit 13.
11054    pub const VIDEO_ENCODE_DST: Self = Self(8192u32);
11055    ///Bit 14.
11056    pub const VIDEO_ENCODE_SRC: Self = Self(16384u32);
11057    ///Bit 15.
11058    pub const VIDEO_ENCODE_DPB: Self = Self(32768u32);
11059    ///Bit 19.
11060    pub const ATTACHMENT_FEEDBACK_LOOP: Self = Self(524288u32);
11061    ///Bit 18.
11062    pub const INVOCATION_MASK_BIT: Self = Self(262144u32);
11063    ///Bit 20.
11064    pub const SAMPLE_WEIGHT_BIT: Self = Self(1048576u32);
11065    ///Bit 21.
11066    pub const SAMPLE_BLOCK_MATCH_BIT: Self = Self(2097152u32);
11067    ///Bit 23.
11068    pub const TENSOR_ALIASING_BIT: Self = Self(8388608u32);
11069    ///Bit 27.
11070    pub const TILE_MEMORY_BIT: Self = Self(134217728u32);
11071    ///Bit 25.
11072    pub const VIDEO_ENCODE_QUANTIZATION_DELTA_MAP: Self = Self(33554432u32);
11073    ///Bit 26.
11074    pub const VIDEO_ENCODE_EMPHASIS_MAP: Self = Self(67108864u32);
11075}
11076impl core::ops::BitOr for ImageUsageFlagBits {
11077    type Output = Self;
11078    #[inline]
11079    fn bitor(self, rhs: Self) -> Self {
11080        Self(self.0 | rhs.0)
11081    }
11082}
11083impl core::ops::BitOrAssign for ImageUsageFlagBits {
11084    #[inline]
11085    fn bitor_assign(&mut self, rhs: Self) {
11086        self.0 |= rhs.0;
11087    }
11088}
11089impl core::ops::BitAnd for ImageUsageFlagBits {
11090    type Output = Self;
11091    #[inline]
11092    fn bitand(self, rhs: Self) -> Self {
11093        Self(self.0 & rhs.0)
11094    }
11095}
11096impl core::ops::BitAndAssign for ImageUsageFlagBits {
11097    #[inline]
11098    fn bitand_assign(&mut self, rhs: Self) {
11099        self.0 &= rhs.0;
11100    }
11101}
11102impl core::ops::BitXor for ImageUsageFlagBits {
11103    type Output = Self;
11104    #[inline]
11105    fn bitxor(self, rhs: Self) -> Self {
11106        Self(self.0 ^ rhs.0)
11107    }
11108}
11109impl core::ops::BitXorAssign for ImageUsageFlagBits {
11110    #[inline]
11111    fn bitxor_assign(&mut self, rhs: Self) {
11112        self.0 ^= rhs.0;
11113    }
11114}
11115impl core::ops::Not for ImageUsageFlagBits {
11116    type Output = Self;
11117    #[inline]
11118    fn not(self) -> Self {
11119        Self(!self.0)
11120    }
11121}
11122impl core::fmt::Debug for ImageUsageFlagBits {
11123    #[allow(unused_mut, unused_variables)]
11124    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11125        let mut first = true;
11126        let mut remaining = self.0;
11127        if remaining & Self::TRANSFER_SRC.0 != 0 {
11128            if !first {
11129                f.write_str(" | ")?;
11130            }
11131            f.write_str("TRANSFER_SRC")?;
11132            remaining &= !Self::TRANSFER_SRC.0;
11133            first = false;
11134        }
11135        if remaining & Self::TRANSFER_DST.0 != 0 {
11136            if !first {
11137                f.write_str(" | ")?;
11138            }
11139            f.write_str("TRANSFER_DST")?;
11140            remaining &= !Self::TRANSFER_DST.0;
11141            first = false;
11142        }
11143        if remaining & Self::SAMPLED.0 != 0 {
11144            if !first {
11145                f.write_str(" | ")?;
11146            }
11147            f.write_str("SAMPLED")?;
11148            remaining &= !Self::SAMPLED.0;
11149            first = false;
11150        }
11151        if remaining & Self::STORAGE.0 != 0 {
11152            if !first {
11153                f.write_str(" | ")?;
11154            }
11155            f.write_str("STORAGE")?;
11156            remaining &= !Self::STORAGE.0;
11157            first = false;
11158        }
11159        if remaining & Self::COLOR_ATTACHMENT.0 != 0 {
11160            if !first {
11161                f.write_str(" | ")?;
11162            }
11163            f.write_str("COLOR_ATTACHMENT")?;
11164            remaining &= !Self::COLOR_ATTACHMENT.0;
11165            first = false;
11166        }
11167        if remaining & Self::DEPTH_STENCIL_ATTACHMENT.0 != 0 {
11168            if !first {
11169                f.write_str(" | ")?;
11170            }
11171            f.write_str("DEPTH_STENCIL_ATTACHMENT")?;
11172            remaining &= !Self::DEPTH_STENCIL_ATTACHMENT.0;
11173            first = false;
11174        }
11175        if remaining & Self::TRANSIENT_ATTACHMENT.0 != 0 {
11176            if !first {
11177                f.write_str(" | ")?;
11178            }
11179            f.write_str("TRANSIENT_ATTACHMENT")?;
11180            remaining &= !Self::TRANSIENT_ATTACHMENT.0;
11181            first = false;
11182        }
11183        if remaining & Self::INPUT_ATTACHMENT.0 != 0 {
11184            if !first {
11185                f.write_str(" | ")?;
11186            }
11187            f.write_str("INPUT_ATTACHMENT")?;
11188            remaining &= !Self::INPUT_ATTACHMENT.0;
11189            first = false;
11190        }
11191        if remaining & Self::HOST_TRANSFER.0 != 0 {
11192            if !first {
11193                f.write_str(" | ")?;
11194            }
11195            f.write_str("HOST_TRANSFER")?;
11196            remaining &= !Self::HOST_TRANSFER.0;
11197            first = false;
11198        }
11199        if remaining & Self::VIDEO_DECODE_DST.0 != 0 {
11200            if !first {
11201                f.write_str(" | ")?;
11202            }
11203            f.write_str("VIDEO_DECODE_DST")?;
11204            remaining &= !Self::VIDEO_DECODE_DST.0;
11205            first = false;
11206        }
11207        if remaining & Self::VIDEO_DECODE_SRC.0 != 0 {
11208            if !first {
11209                f.write_str(" | ")?;
11210            }
11211            f.write_str("VIDEO_DECODE_SRC")?;
11212            remaining &= !Self::VIDEO_DECODE_SRC.0;
11213            first = false;
11214        }
11215        if remaining & Self::VIDEO_DECODE_DPB.0 != 0 {
11216            if !first {
11217                f.write_str(" | ")?;
11218            }
11219            f.write_str("VIDEO_DECODE_DPB")?;
11220            remaining &= !Self::VIDEO_DECODE_DPB.0;
11221            first = false;
11222        }
11223        if remaining & Self::FRAGMENT_DENSITY_MAP.0 != 0 {
11224            if !first {
11225                f.write_str(" | ")?;
11226            }
11227            f.write_str("FRAGMENT_DENSITY_MAP")?;
11228            remaining &= !Self::FRAGMENT_DENSITY_MAP.0;
11229            first = false;
11230        }
11231        if remaining & Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
11232            if !first {
11233                f.write_str(" | ")?;
11234            }
11235            f.write_str("FRAGMENT_SHADING_RATE_ATTACHMENT")?;
11236            remaining &= !Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0;
11237            first = false;
11238        }
11239        if remaining & Self::VIDEO_ENCODE_DST.0 != 0 {
11240            if !first {
11241                f.write_str(" | ")?;
11242            }
11243            f.write_str("VIDEO_ENCODE_DST")?;
11244            remaining &= !Self::VIDEO_ENCODE_DST.0;
11245            first = false;
11246        }
11247        if remaining & Self::VIDEO_ENCODE_SRC.0 != 0 {
11248            if !first {
11249                f.write_str(" | ")?;
11250            }
11251            f.write_str("VIDEO_ENCODE_SRC")?;
11252            remaining &= !Self::VIDEO_ENCODE_SRC.0;
11253            first = false;
11254        }
11255        if remaining & Self::VIDEO_ENCODE_DPB.0 != 0 {
11256            if !first {
11257                f.write_str(" | ")?;
11258            }
11259            f.write_str("VIDEO_ENCODE_DPB")?;
11260            remaining &= !Self::VIDEO_ENCODE_DPB.0;
11261            first = false;
11262        }
11263        if remaining & Self::ATTACHMENT_FEEDBACK_LOOP.0 != 0 {
11264            if !first {
11265                f.write_str(" | ")?;
11266            }
11267            f.write_str("ATTACHMENT_FEEDBACK_LOOP")?;
11268            remaining &= !Self::ATTACHMENT_FEEDBACK_LOOP.0;
11269            first = false;
11270        }
11271        if remaining & Self::INVOCATION_MASK_BIT.0 != 0 {
11272            if !first {
11273                f.write_str(" | ")?;
11274            }
11275            f.write_str("INVOCATION_MASK_BIT")?;
11276            remaining &= !Self::INVOCATION_MASK_BIT.0;
11277            first = false;
11278        }
11279        if remaining & Self::SAMPLE_WEIGHT_BIT.0 != 0 {
11280            if !first {
11281                f.write_str(" | ")?;
11282            }
11283            f.write_str("SAMPLE_WEIGHT_BIT")?;
11284            remaining &= !Self::SAMPLE_WEIGHT_BIT.0;
11285            first = false;
11286        }
11287        if remaining & Self::SAMPLE_BLOCK_MATCH_BIT.0 != 0 {
11288            if !first {
11289                f.write_str(" | ")?;
11290            }
11291            f.write_str("SAMPLE_BLOCK_MATCH_BIT")?;
11292            remaining &= !Self::SAMPLE_BLOCK_MATCH_BIT.0;
11293            first = false;
11294        }
11295        if remaining & Self::TENSOR_ALIASING_BIT.0 != 0 {
11296            if !first {
11297                f.write_str(" | ")?;
11298            }
11299            f.write_str("TENSOR_ALIASING_BIT")?;
11300            remaining &= !Self::TENSOR_ALIASING_BIT.0;
11301            first = false;
11302        }
11303        if remaining & Self::TILE_MEMORY_BIT.0 != 0 {
11304            if !first {
11305                f.write_str(" | ")?;
11306            }
11307            f.write_str("TILE_MEMORY_BIT")?;
11308            remaining &= !Self::TILE_MEMORY_BIT.0;
11309            first = false;
11310        }
11311        if remaining & Self::VIDEO_ENCODE_QUANTIZATION_DELTA_MAP.0 != 0 {
11312            if !first {
11313                f.write_str(" | ")?;
11314            }
11315            f.write_str("VIDEO_ENCODE_QUANTIZATION_DELTA_MAP")?;
11316            remaining &= !Self::VIDEO_ENCODE_QUANTIZATION_DELTA_MAP.0;
11317            first = false;
11318        }
11319        if remaining & Self::VIDEO_ENCODE_EMPHASIS_MAP.0 != 0 {
11320            if !first {
11321                f.write_str(" | ")?;
11322            }
11323            f.write_str("VIDEO_ENCODE_EMPHASIS_MAP")?;
11324            remaining &= !Self::VIDEO_ENCODE_EMPHASIS_MAP.0;
11325            first = false;
11326        }
11327        if remaining != 0u32 {
11328            if !first {
11329                f.write_str(" | ")?;
11330            }
11331            write!(f, "{:#x}", remaining)?;
11332        } else if first {
11333            f.write_str("(empty)")?;
11334        }
11335        Ok(())
11336    }
11337}
11338///[`VkImageViewCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewCreateFlagBits.html)
11339#[repr(transparent)]
11340#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
11341#[doc(alias = "VkImageViewCreateFlagBits")]
11342pub struct ImageViewCreateFlagBits(u32);
11343impl ImageViewCreateFlagBits {
11344    #[inline]
11345    pub const fn empty() -> Self {
11346        Self(0u32)
11347    }
11348    #[inline]
11349    pub const fn from_raw(value: u32) -> Self {
11350        Self(value)
11351    }
11352    #[inline]
11353    pub const fn as_raw(self) -> u32 {
11354        self.0
11355    }
11356    #[inline]
11357    pub const fn is_empty(self) -> bool {
11358        self.0 == 0u32
11359    }
11360    #[inline]
11361    pub const fn contains(self, other: Self) -> bool {
11362        (self.0 & other.0) == other.0
11363    }
11364    #[inline]
11365    pub const fn all() -> Self {
11366        Self(7u32)
11367    }
11368    ///Bit 0.
11369    pub const FRAGMENT_DENSITY_MAP_DYNAMIC: Self = Self(1u32);
11370    ///Bit 2.
11371    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY: Self = Self(4u32);
11372    ///Bit 1.
11373    pub const FRAGMENT_DENSITY_MAP_DEFERRED: Self = Self(2u32);
11374}
11375impl core::ops::BitOr for ImageViewCreateFlagBits {
11376    type Output = Self;
11377    #[inline]
11378    fn bitor(self, rhs: Self) -> Self {
11379        Self(self.0 | rhs.0)
11380    }
11381}
11382impl core::ops::BitOrAssign for ImageViewCreateFlagBits {
11383    #[inline]
11384    fn bitor_assign(&mut self, rhs: Self) {
11385        self.0 |= rhs.0;
11386    }
11387}
11388impl core::ops::BitAnd for ImageViewCreateFlagBits {
11389    type Output = Self;
11390    #[inline]
11391    fn bitand(self, rhs: Self) -> Self {
11392        Self(self.0 & rhs.0)
11393    }
11394}
11395impl core::ops::BitAndAssign for ImageViewCreateFlagBits {
11396    #[inline]
11397    fn bitand_assign(&mut self, rhs: Self) {
11398        self.0 &= rhs.0;
11399    }
11400}
11401impl core::ops::BitXor for ImageViewCreateFlagBits {
11402    type Output = Self;
11403    #[inline]
11404    fn bitxor(self, rhs: Self) -> Self {
11405        Self(self.0 ^ rhs.0)
11406    }
11407}
11408impl core::ops::BitXorAssign for ImageViewCreateFlagBits {
11409    #[inline]
11410    fn bitxor_assign(&mut self, rhs: Self) {
11411        self.0 ^= rhs.0;
11412    }
11413}
11414impl core::ops::Not for ImageViewCreateFlagBits {
11415    type Output = Self;
11416    #[inline]
11417    fn not(self) -> Self {
11418        Self(!self.0)
11419    }
11420}
11421impl core::fmt::Debug for ImageViewCreateFlagBits {
11422    #[allow(unused_mut, unused_variables)]
11423    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11424        let mut first = true;
11425        let mut remaining = self.0;
11426        if remaining & Self::FRAGMENT_DENSITY_MAP_DYNAMIC.0 != 0 {
11427            if !first {
11428                f.write_str(" | ")?;
11429            }
11430            f.write_str("FRAGMENT_DENSITY_MAP_DYNAMIC")?;
11431            remaining &= !Self::FRAGMENT_DENSITY_MAP_DYNAMIC.0;
11432            first = false;
11433        }
11434        if remaining & Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0 != 0 {
11435            if !first {
11436                f.write_str(" | ")?;
11437            }
11438            f.write_str("DESCRIPTOR_BUFFER_CAPTURE_REPLAY")?;
11439            remaining &= !Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0;
11440            first = false;
11441        }
11442        if remaining & Self::FRAGMENT_DENSITY_MAP_DEFERRED.0 != 0 {
11443            if !first {
11444                f.write_str(" | ")?;
11445            }
11446            f.write_str("FRAGMENT_DENSITY_MAP_DEFERRED")?;
11447            remaining &= !Self::FRAGMENT_DENSITY_MAP_DEFERRED.0;
11448            first = false;
11449        }
11450        if remaining != 0u32 {
11451            if !first {
11452                f.write_str(" | ")?;
11453            }
11454            write!(f, "{:#x}", remaining)?;
11455        } else if first {
11456            f.write_str("(empty)")?;
11457        }
11458        Ok(())
11459    }
11460}
11461///[`VkIndirectCommandsInputModeFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsInputModeFlagBitsEXT.html)
11462#[repr(transparent)]
11463#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
11464#[doc(alias = "VkIndirectCommandsInputModeFlagBitsEXT")]
11465pub struct IndirectCommandsInputModeFlagBitsEXT(u32);
11466impl IndirectCommandsInputModeFlagBitsEXT {
11467    #[inline]
11468    pub const fn empty() -> Self {
11469        Self(0u32)
11470    }
11471    #[inline]
11472    pub const fn from_raw(value: u32) -> Self {
11473        Self(value)
11474    }
11475    #[inline]
11476    pub const fn as_raw(self) -> u32 {
11477        self.0
11478    }
11479    #[inline]
11480    pub const fn is_empty(self) -> bool {
11481        self.0 == 0u32
11482    }
11483    #[inline]
11484    pub const fn contains(self, other: Self) -> bool {
11485        (self.0 & other.0) == other.0
11486    }
11487    #[inline]
11488    pub const fn all() -> Self {
11489        Self(3u32)
11490    }
11491    ///Bit 0.
11492    pub const VULKAN_INDEX_BUFFER: Self = Self(1u32);
11493    ///Bit 1.
11494    pub const DXGI_INDEX_BUFFER: Self = Self(2u32);
11495}
11496impl core::ops::BitOr for IndirectCommandsInputModeFlagBitsEXT {
11497    type Output = Self;
11498    #[inline]
11499    fn bitor(self, rhs: Self) -> Self {
11500        Self(self.0 | rhs.0)
11501    }
11502}
11503impl core::ops::BitOrAssign for IndirectCommandsInputModeFlagBitsEXT {
11504    #[inline]
11505    fn bitor_assign(&mut self, rhs: Self) {
11506        self.0 |= rhs.0;
11507    }
11508}
11509impl core::ops::BitAnd for IndirectCommandsInputModeFlagBitsEXT {
11510    type Output = Self;
11511    #[inline]
11512    fn bitand(self, rhs: Self) -> Self {
11513        Self(self.0 & rhs.0)
11514    }
11515}
11516impl core::ops::BitAndAssign for IndirectCommandsInputModeFlagBitsEXT {
11517    #[inline]
11518    fn bitand_assign(&mut self, rhs: Self) {
11519        self.0 &= rhs.0;
11520    }
11521}
11522impl core::ops::BitXor for IndirectCommandsInputModeFlagBitsEXT {
11523    type Output = Self;
11524    #[inline]
11525    fn bitxor(self, rhs: Self) -> Self {
11526        Self(self.0 ^ rhs.0)
11527    }
11528}
11529impl core::ops::BitXorAssign for IndirectCommandsInputModeFlagBitsEXT {
11530    #[inline]
11531    fn bitxor_assign(&mut self, rhs: Self) {
11532        self.0 ^= rhs.0;
11533    }
11534}
11535impl core::ops::Not for IndirectCommandsInputModeFlagBitsEXT {
11536    type Output = Self;
11537    #[inline]
11538    fn not(self) -> Self {
11539        Self(!self.0)
11540    }
11541}
11542impl core::fmt::Debug for IndirectCommandsInputModeFlagBitsEXT {
11543    #[allow(unused_mut, unused_variables)]
11544    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11545        let mut first = true;
11546        let mut remaining = self.0;
11547        if remaining & Self::VULKAN_INDEX_BUFFER.0 != 0 {
11548            if !first {
11549                f.write_str(" | ")?;
11550            }
11551            f.write_str("VULKAN_INDEX_BUFFER")?;
11552            remaining &= !Self::VULKAN_INDEX_BUFFER.0;
11553            first = false;
11554        }
11555        if remaining & Self::DXGI_INDEX_BUFFER.0 != 0 {
11556            if !first {
11557                f.write_str(" | ")?;
11558            }
11559            f.write_str("DXGI_INDEX_BUFFER")?;
11560            remaining &= !Self::DXGI_INDEX_BUFFER.0;
11561            first = false;
11562        }
11563        if remaining != 0u32 {
11564            if !first {
11565                f.write_str(" | ")?;
11566            }
11567            write!(f, "{:#x}", remaining)?;
11568        } else if first {
11569            f.write_str("(empty)")?;
11570        }
11571        Ok(())
11572    }
11573}
11574///[`VkIndirectCommandsLayoutUsageFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagBitsEXT.html)
11575#[repr(transparent)]
11576#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
11577#[doc(alias = "VkIndirectCommandsLayoutUsageFlagBitsEXT")]
11578pub struct IndirectCommandsLayoutUsageFlagBitsEXT(u32);
11579impl IndirectCommandsLayoutUsageFlagBitsEXT {
11580    #[inline]
11581    pub const fn empty() -> Self {
11582        Self(0u32)
11583    }
11584    #[inline]
11585    pub const fn from_raw(value: u32) -> Self {
11586        Self(value)
11587    }
11588    #[inline]
11589    pub const fn as_raw(self) -> u32 {
11590        self.0
11591    }
11592    #[inline]
11593    pub const fn is_empty(self) -> bool {
11594        self.0 == 0u32
11595    }
11596    #[inline]
11597    pub const fn contains(self, other: Self) -> bool {
11598        (self.0 & other.0) == other.0
11599    }
11600    #[inline]
11601    pub const fn all() -> Self {
11602        Self(3u32)
11603    }
11604    ///Bit 0.
11605    pub const EXPLICIT_PREPROCESS: Self = Self(1u32);
11606    ///Bit 1.
11607    pub const UNORDERED_SEQUENCES: Self = Self(2u32);
11608}
11609impl core::ops::BitOr for IndirectCommandsLayoutUsageFlagBitsEXT {
11610    type Output = Self;
11611    #[inline]
11612    fn bitor(self, rhs: Self) -> Self {
11613        Self(self.0 | rhs.0)
11614    }
11615}
11616impl core::ops::BitOrAssign for IndirectCommandsLayoutUsageFlagBitsEXT {
11617    #[inline]
11618    fn bitor_assign(&mut self, rhs: Self) {
11619        self.0 |= rhs.0;
11620    }
11621}
11622impl core::ops::BitAnd for IndirectCommandsLayoutUsageFlagBitsEXT {
11623    type Output = Self;
11624    #[inline]
11625    fn bitand(self, rhs: Self) -> Self {
11626        Self(self.0 & rhs.0)
11627    }
11628}
11629impl core::ops::BitAndAssign for IndirectCommandsLayoutUsageFlagBitsEXT {
11630    #[inline]
11631    fn bitand_assign(&mut self, rhs: Self) {
11632        self.0 &= rhs.0;
11633    }
11634}
11635impl core::ops::BitXor for IndirectCommandsLayoutUsageFlagBitsEXT {
11636    type Output = Self;
11637    #[inline]
11638    fn bitxor(self, rhs: Self) -> Self {
11639        Self(self.0 ^ rhs.0)
11640    }
11641}
11642impl core::ops::BitXorAssign for IndirectCommandsLayoutUsageFlagBitsEXT {
11643    #[inline]
11644    fn bitxor_assign(&mut self, rhs: Self) {
11645        self.0 ^= rhs.0;
11646    }
11647}
11648impl core::ops::Not for IndirectCommandsLayoutUsageFlagBitsEXT {
11649    type Output = Self;
11650    #[inline]
11651    fn not(self) -> Self {
11652        Self(!self.0)
11653    }
11654}
11655impl core::fmt::Debug for IndirectCommandsLayoutUsageFlagBitsEXT {
11656    #[allow(unused_mut, unused_variables)]
11657    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11658        let mut first = true;
11659        let mut remaining = self.0;
11660        if remaining & Self::EXPLICIT_PREPROCESS.0 != 0 {
11661            if !first {
11662                f.write_str(" | ")?;
11663            }
11664            f.write_str("EXPLICIT_PREPROCESS")?;
11665            remaining &= !Self::EXPLICIT_PREPROCESS.0;
11666            first = false;
11667        }
11668        if remaining & Self::UNORDERED_SEQUENCES.0 != 0 {
11669            if !first {
11670                f.write_str(" | ")?;
11671            }
11672            f.write_str("UNORDERED_SEQUENCES")?;
11673            remaining &= !Self::UNORDERED_SEQUENCES.0;
11674            first = false;
11675        }
11676        if remaining != 0u32 {
11677            if !first {
11678                f.write_str(" | ")?;
11679            }
11680            write!(f, "{:#x}", remaining)?;
11681        } else if first {
11682            f.write_str("(empty)")?;
11683        }
11684        Ok(())
11685    }
11686}
11687///[`VkIndirectCommandsLayoutUsageFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagBitsNV.html)
11688#[repr(transparent)]
11689#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
11690#[doc(alias = "VkIndirectCommandsLayoutUsageFlagBitsNV")]
11691pub struct IndirectCommandsLayoutUsageFlagBitsNV(u32);
11692impl IndirectCommandsLayoutUsageFlagBitsNV {
11693    #[inline]
11694    pub const fn empty() -> Self {
11695        Self(0u32)
11696    }
11697    #[inline]
11698    pub const fn from_raw(value: u32) -> Self {
11699        Self(value)
11700    }
11701    #[inline]
11702    pub const fn as_raw(self) -> u32 {
11703        self.0
11704    }
11705    #[inline]
11706    pub const fn is_empty(self) -> bool {
11707        self.0 == 0u32
11708    }
11709    #[inline]
11710    pub const fn contains(self, other: Self) -> bool {
11711        (self.0 & other.0) == other.0
11712    }
11713    #[inline]
11714    pub const fn all() -> Self {
11715        Self(7u32)
11716    }
11717    ///Bit 0.
11718    pub const EXPLICIT_PREPROCESS: Self = Self(1u32);
11719    ///Bit 1.
11720    pub const INDEXED_SEQUENCES: Self = Self(2u32);
11721    ///Bit 2.
11722    pub const UNORDERED_SEQUENCES: Self = Self(4u32);
11723}
11724impl core::ops::BitOr for IndirectCommandsLayoutUsageFlagBitsNV {
11725    type Output = Self;
11726    #[inline]
11727    fn bitor(self, rhs: Self) -> Self {
11728        Self(self.0 | rhs.0)
11729    }
11730}
11731impl core::ops::BitOrAssign for IndirectCommandsLayoutUsageFlagBitsNV {
11732    #[inline]
11733    fn bitor_assign(&mut self, rhs: Self) {
11734        self.0 |= rhs.0;
11735    }
11736}
11737impl core::ops::BitAnd for IndirectCommandsLayoutUsageFlagBitsNV {
11738    type Output = Self;
11739    #[inline]
11740    fn bitand(self, rhs: Self) -> Self {
11741        Self(self.0 & rhs.0)
11742    }
11743}
11744impl core::ops::BitAndAssign for IndirectCommandsLayoutUsageFlagBitsNV {
11745    #[inline]
11746    fn bitand_assign(&mut self, rhs: Self) {
11747        self.0 &= rhs.0;
11748    }
11749}
11750impl core::ops::BitXor for IndirectCommandsLayoutUsageFlagBitsNV {
11751    type Output = Self;
11752    #[inline]
11753    fn bitxor(self, rhs: Self) -> Self {
11754        Self(self.0 ^ rhs.0)
11755    }
11756}
11757impl core::ops::BitXorAssign for IndirectCommandsLayoutUsageFlagBitsNV {
11758    #[inline]
11759    fn bitxor_assign(&mut self, rhs: Self) {
11760        self.0 ^= rhs.0;
11761    }
11762}
11763impl core::ops::Not for IndirectCommandsLayoutUsageFlagBitsNV {
11764    type Output = Self;
11765    #[inline]
11766    fn not(self) -> Self {
11767        Self(!self.0)
11768    }
11769}
11770impl core::fmt::Debug for IndirectCommandsLayoutUsageFlagBitsNV {
11771    #[allow(unused_mut, unused_variables)]
11772    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11773        let mut first = true;
11774        let mut remaining = self.0;
11775        if remaining & Self::EXPLICIT_PREPROCESS.0 != 0 {
11776            if !first {
11777                f.write_str(" | ")?;
11778            }
11779            f.write_str("EXPLICIT_PREPROCESS")?;
11780            remaining &= !Self::EXPLICIT_PREPROCESS.0;
11781            first = false;
11782        }
11783        if remaining & Self::INDEXED_SEQUENCES.0 != 0 {
11784            if !first {
11785                f.write_str(" | ")?;
11786            }
11787            f.write_str("INDEXED_SEQUENCES")?;
11788            remaining &= !Self::INDEXED_SEQUENCES.0;
11789            first = false;
11790        }
11791        if remaining & Self::UNORDERED_SEQUENCES.0 != 0 {
11792            if !first {
11793                f.write_str(" | ")?;
11794            }
11795            f.write_str("UNORDERED_SEQUENCES")?;
11796            remaining &= !Self::UNORDERED_SEQUENCES.0;
11797            first = false;
11798        }
11799        if remaining != 0u32 {
11800            if !first {
11801                f.write_str(" | ")?;
11802            }
11803            write!(f, "{:#x}", remaining)?;
11804        } else if first {
11805            f.write_str("(empty)")?;
11806        }
11807        Ok(())
11808    }
11809}
11810///[`VkIndirectStateFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectStateFlagBitsNV.html)
11811#[repr(transparent)]
11812#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
11813#[doc(alias = "VkIndirectStateFlagBitsNV")]
11814pub struct IndirectStateFlagBitsNV(u32);
11815impl IndirectStateFlagBitsNV {
11816    #[inline]
11817    pub const fn empty() -> Self {
11818        Self(0u32)
11819    }
11820    #[inline]
11821    pub const fn from_raw(value: u32) -> Self {
11822        Self(value)
11823    }
11824    #[inline]
11825    pub const fn as_raw(self) -> u32 {
11826        self.0
11827    }
11828    #[inline]
11829    pub const fn is_empty(self) -> bool {
11830        self.0 == 0u32
11831    }
11832    #[inline]
11833    pub const fn contains(self, other: Self) -> bool {
11834        (self.0 & other.0) == other.0
11835    }
11836    #[inline]
11837    pub const fn all() -> Self {
11838        Self(1u32)
11839    }
11840    ///Bit 0.
11841    pub const FLAG_FRONTFACE: Self = Self(1u32);
11842}
11843impl core::ops::BitOr for IndirectStateFlagBitsNV {
11844    type Output = Self;
11845    #[inline]
11846    fn bitor(self, rhs: Self) -> Self {
11847        Self(self.0 | rhs.0)
11848    }
11849}
11850impl core::ops::BitOrAssign for IndirectStateFlagBitsNV {
11851    #[inline]
11852    fn bitor_assign(&mut self, rhs: Self) {
11853        self.0 |= rhs.0;
11854    }
11855}
11856impl core::ops::BitAnd for IndirectStateFlagBitsNV {
11857    type Output = Self;
11858    #[inline]
11859    fn bitand(self, rhs: Self) -> Self {
11860        Self(self.0 & rhs.0)
11861    }
11862}
11863impl core::ops::BitAndAssign for IndirectStateFlagBitsNV {
11864    #[inline]
11865    fn bitand_assign(&mut self, rhs: Self) {
11866        self.0 &= rhs.0;
11867    }
11868}
11869impl core::ops::BitXor for IndirectStateFlagBitsNV {
11870    type Output = Self;
11871    #[inline]
11872    fn bitxor(self, rhs: Self) -> Self {
11873        Self(self.0 ^ rhs.0)
11874    }
11875}
11876impl core::ops::BitXorAssign for IndirectStateFlagBitsNV {
11877    #[inline]
11878    fn bitxor_assign(&mut self, rhs: Self) {
11879        self.0 ^= rhs.0;
11880    }
11881}
11882impl core::ops::Not for IndirectStateFlagBitsNV {
11883    type Output = Self;
11884    #[inline]
11885    fn not(self) -> Self {
11886        Self(!self.0)
11887    }
11888}
11889impl core::fmt::Debug for IndirectStateFlagBitsNV {
11890    #[allow(unused_mut, unused_variables)]
11891    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11892        let mut first = true;
11893        let mut remaining = self.0;
11894        if remaining & Self::FLAG_FRONTFACE.0 != 0 {
11895            if !first {
11896                f.write_str(" | ")?;
11897            }
11898            f.write_str("FLAG_FRONTFACE")?;
11899            remaining &= !Self::FLAG_FRONTFACE.0;
11900            first = false;
11901        }
11902        if remaining != 0u32 {
11903            if !first {
11904                f.write_str(" | ")?;
11905            }
11906            write!(f, "{:#x}", remaining)?;
11907        } else if first {
11908            f.write_str("(empty)")?;
11909        }
11910        Ok(())
11911    }
11912}
11913///[`VkInstanceCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstanceCreateFlagBits.html)
11914#[repr(transparent)]
11915#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
11916#[doc(alias = "VkInstanceCreateFlagBits")]
11917pub struct InstanceCreateFlagBits(u32);
11918impl InstanceCreateFlagBits {
11919    #[inline]
11920    pub const fn empty() -> Self {
11921        Self(0u32)
11922    }
11923    #[inline]
11924    pub const fn from_raw(value: u32) -> Self {
11925        Self(value)
11926    }
11927    #[inline]
11928    pub const fn as_raw(self) -> u32 {
11929        self.0
11930    }
11931    #[inline]
11932    pub const fn is_empty(self) -> bool {
11933        self.0 == 0u32
11934    }
11935    #[inline]
11936    pub const fn contains(self, other: Self) -> bool {
11937        (self.0 & other.0) == other.0
11938    }
11939    #[inline]
11940    pub const fn all() -> Self {
11941        Self(1u32)
11942    }
11943    ///Bit 0.
11944    pub const ENUMERATE_PORTABILITY: Self = Self(1u32);
11945}
11946impl core::ops::BitOr for InstanceCreateFlagBits {
11947    type Output = Self;
11948    #[inline]
11949    fn bitor(self, rhs: Self) -> Self {
11950        Self(self.0 | rhs.0)
11951    }
11952}
11953impl core::ops::BitOrAssign for InstanceCreateFlagBits {
11954    #[inline]
11955    fn bitor_assign(&mut self, rhs: Self) {
11956        self.0 |= rhs.0;
11957    }
11958}
11959impl core::ops::BitAnd for InstanceCreateFlagBits {
11960    type Output = Self;
11961    #[inline]
11962    fn bitand(self, rhs: Self) -> Self {
11963        Self(self.0 & rhs.0)
11964    }
11965}
11966impl core::ops::BitAndAssign for InstanceCreateFlagBits {
11967    #[inline]
11968    fn bitand_assign(&mut self, rhs: Self) {
11969        self.0 &= rhs.0;
11970    }
11971}
11972impl core::ops::BitXor for InstanceCreateFlagBits {
11973    type Output = Self;
11974    #[inline]
11975    fn bitxor(self, rhs: Self) -> Self {
11976        Self(self.0 ^ rhs.0)
11977    }
11978}
11979impl core::ops::BitXorAssign for InstanceCreateFlagBits {
11980    #[inline]
11981    fn bitxor_assign(&mut self, rhs: Self) {
11982        self.0 ^= rhs.0;
11983    }
11984}
11985impl core::ops::Not for InstanceCreateFlagBits {
11986    type Output = Self;
11987    #[inline]
11988    fn not(self) -> Self {
11989        Self(!self.0)
11990    }
11991}
11992impl core::fmt::Debug for InstanceCreateFlagBits {
11993    #[allow(unused_mut, unused_variables)]
11994    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11995        let mut first = true;
11996        let mut remaining = self.0;
11997        if remaining & Self::ENUMERATE_PORTABILITY.0 != 0 {
11998            if !first {
11999                f.write_str(" | ")?;
12000            }
12001            f.write_str("ENUMERATE_PORTABILITY")?;
12002            remaining &= !Self::ENUMERATE_PORTABILITY.0;
12003            first = false;
12004        }
12005        if remaining != 0u32 {
12006            if !first {
12007                f.write_str(" | ")?;
12008            }
12009            write!(f, "{:#x}", remaining)?;
12010        } else if first {
12011            f.write_str("(empty)")?;
12012        }
12013        Ok(())
12014    }
12015}
12016///[`VkMemoryAllocateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryAllocateFlagBits.html)
12017#[repr(transparent)]
12018#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12019#[doc(alias = "VkMemoryAllocateFlagBits")]
12020pub struct MemoryAllocateFlagBits(u32);
12021impl MemoryAllocateFlagBits {
12022    #[inline]
12023    pub const fn empty() -> Self {
12024        Self(0u32)
12025    }
12026    #[inline]
12027    pub const fn from_raw(value: u32) -> Self {
12028        Self(value)
12029    }
12030    #[inline]
12031    pub const fn as_raw(self) -> u32 {
12032        self.0
12033    }
12034    #[inline]
12035    pub const fn is_empty(self) -> bool {
12036        self.0 == 0u32
12037    }
12038    #[inline]
12039    pub const fn contains(self, other: Self) -> bool {
12040        (self.0 & other.0) == other.0
12041    }
12042    #[inline]
12043    pub const fn all() -> Self {
12044        Self(15u32)
12045    }
12046    ///Bit 0.
12047    pub const DEVICE_MASK: Self = Self(1u32);
12048    ///Bit 1.
12049    pub const DEVICE_ADDRESS: Self = Self(2u32);
12050    ///Bit 2.
12051    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(4u32);
12052    ///Bit 3.
12053    pub const ZERO_INITIALIZE: Self = Self(8u32);
12054}
12055impl core::ops::BitOr for MemoryAllocateFlagBits {
12056    type Output = Self;
12057    #[inline]
12058    fn bitor(self, rhs: Self) -> Self {
12059        Self(self.0 | rhs.0)
12060    }
12061}
12062impl core::ops::BitOrAssign for MemoryAllocateFlagBits {
12063    #[inline]
12064    fn bitor_assign(&mut self, rhs: Self) {
12065        self.0 |= rhs.0;
12066    }
12067}
12068impl core::ops::BitAnd for MemoryAllocateFlagBits {
12069    type Output = Self;
12070    #[inline]
12071    fn bitand(self, rhs: Self) -> Self {
12072        Self(self.0 & rhs.0)
12073    }
12074}
12075impl core::ops::BitAndAssign for MemoryAllocateFlagBits {
12076    #[inline]
12077    fn bitand_assign(&mut self, rhs: Self) {
12078        self.0 &= rhs.0;
12079    }
12080}
12081impl core::ops::BitXor for MemoryAllocateFlagBits {
12082    type Output = Self;
12083    #[inline]
12084    fn bitxor(self, rhs: Self) -> Self {
12085        Self(self.0 ^ rhs.0)
12086    }
12087}
12088impl core::ops::BitXorAssign for MemoryAllocateFlagBits {
12089    #[inline]
12090    fn bitxor_assign(&mut self, rhs: Self) {
12091        self.0 ^= rhs.0;
12092    }
12093}
12094impl core::ops::Not for MemoryAllocateFlagBits {
12095    type Output = Self;
12096    #[inline]
12097    fn not(self) -> Self {
12098        Self(!self.0)
12099    }
12100}
12101impl core::fmt::Debug for MemoryAllocateFlagBits {
12102    #[allow(unused_mut, unused_variables)]
12103    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12104        let mut first = true;
12105        let mut remaining = self.0;
12106        if remaining & Self::DEVICE_MASK.0 != 0 {
12107            if !first {
12108                f.write_str(" | ")?;
12109            }
12110            f.write_str("DEVICE_MASK")?;
12111            remaining &= !Self::DEVICE_MASK.0;
12112            first = false;
12113        }
12114        if remaining & Self::DEVICE_ADDRESS.0 != 0 {
12115            if !first {
12116                f.write_str(" | ")?;
12117            }
12118            f.write_str("DEVICE_ADDRESS")?;
12119            remaining &= !Self::DEVICE_ADDRESS.0;
12120            first = false;
12121        }
12122        if remaining & Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0 != 0 {
12123            if !first {
12124                f.write_str(" | ")?;
12125            }
12126            f.write_str("DEVICE_ADDRESS_CAPTURE_REPLAY")?;
12127            remaining &= !Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0;
12128            first = false;
12129        }
12130        if remaining & Self::ZERO_INITIALIZE.0 != 0 {
12131            if !first {
12132                f.write_str(" | ")?;
12133            }
12134            f.write_str("ZERO_INITIALIZE")?;
12135            remaining &= !Self::ZERO_INITIALIZE.0;
12136            first = false;
12137        }
12138        if remaining != 0u32 {
12139            if !first {
12140                f.write_str(" | ")?;
12141            }
12142            write!(f, "{:#x}", remaining)?;
12143        } else if first {
12144            f.write_str("(empty)")?;
12145        }
12146        Ok(())
12147    }
12148}
12149///[`VkMemoryDecompressionMethodFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryDecompressionMethodFlagBitsEXT.html)
12150#[repr(transparent)]
12151#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12152#[doc(alias = "VkMemoryDecompressionMethodFlagBitsEXT")]
12153pub struct MemoryDecompressionMethodFlagBitsEXT(u64);
12154impl MemoryDecompressionMethodFlagBitsEXT {
12155    #[inline]
12156    pub const fn empty() -> Self {
12157        Self(0u64)
12158    }
12159    #[inline]
12160    pub const fn from_raw(value: u64) -> Self {
12161        Self(value)
12162    }
12163    #[inline]
12164    pub const fn as_raw(self) -> u64 {
12165        self.0
12166    }
12167    #[inline]
12168    pub const fn is_empty(self) -> bool {
12169        self.0 == 0u64
12170    }
12171    #[inline]
12172    pub const fn contains(self, other: Self) -> bool {
12173        (self.0 & other.0) == other.0
12174    }
12175    #[inline]
12176    pub const fn all() -> Self {
12177        Self(1u64)
12178    }
12179    ///Bit 0.
12180    pub const GDEFLATE_1_0: Self = Self(1u64);
12181}
12182impl core::ops::BitOr for MemoryDecompressionMethodFlagBitsEXT {
12183    type Output = Self;
12184    #[inline]
12185    fn bitor(self, rhs: Self) -> Self {
12186        Self(self.0 | rhs.0)
12187    }
12188}
12189impl core::ops::BitOrAssign for MemoryDecompressionMethodFlagBitsEXT {
12190    #[inline]
12191    fn bitor_assign(&mut self, rhs: Self) {
12192        self.0 |= rhs.0;
12193    }
12194}
12195impl core::ops::BitAnd for MemoryDecompressionMethodFlagBitsEXT {
12196    type Output = Self;
12197    #[inline]
12198    fn bitand(self, rhs: Self) -> Self {
12199        Self(self.0 & rhs.0)
12200    }
12201}
12202impl core::ops::BitAndAssign for MemoryDecompressionMethodFlagBitsEXT {
12203    #[inline]
12204    fn bitand_assign(&mut self, rhs: Self) {
12205        self.0 &= rhs.0;
12206    }
12207}
12208impl core::ops::BitXor for MemoryDecompressionMethodFlagBitsEXT {
12209    type Output = Self;
12210    #[inline]
12211    fn bitxor(self, rhs: Self) -> Self {
12212        Self(self.0 ^ rhs.0)
12213    }
12214}
12215impl core::ops::BitXorAssign for MemoryDecompressionMethodFlagBitsEXT {
12216    #[inline]
12217    fn bitxor_assign(&mut self, rhs: Self) {
12218        self.0 ^= rhs.0;
12219    }
12220}
12221impl core::ops::Not for MemoryDecompressionMethodFlagBitsEXT {
12222    type Output = Self;
12223    #[inline]
12224    fn not(self) -> Self {
12225        Self(!self.0)
12226    }
12227}
12228impl core::fmt::Debug for MemoryDecompressionMethodFlagBitsEXT {
12229    #[allow(unused_mut, unused_variables)]
12230    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12231        let mut first = true;
12232        let mut remaining = self.0;
12233        if remaining & Self::GDEFLATE_1_0.0 != 0 {
12234            if !first {
12235                f.write_str(" | ")?;
12236            }
12237            f.write_str("GDEFLATE_1_0")?;
12238            remaining &= !Self::GDEFLATE_1_0.0;
12239            first = false;
12240        }
12241        if remaining != 0u64 {
12242            if !first {
12243                f.write_str(" | ")?;
12244            }
12245            write!(f, "{:#x}", remaining)?;
12246        } else if first {
12247            f.write_str("(empty)")?;
12248        }
12249        Ok(())
12250    }
12251}
12252///[`VkMemoryHeapFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryHeapFlagBits.html)
12253#[repr(transparent)]
12254#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12255#[doc(alias = "VkMemoryHeapFlagBits")]
12256pub struct MemoryHeapFlagBits(u32);
12257impl MemoryHeapFlagBits {
12258    #[inline]
12259    pub const fn empty() -> Self {
12260        Self(0u32)
12261    }
12262    #[inline]
12263    pub const fn from_raw(value: u32) -> Self {
12264        Self(value)
12265    }
12266    #[inline]
12267    pub const fn as_raw(self) -> u32 {
12268        self.0
12269    }
12270    #[inline]
12271    pub const fn is_empty(self) -> bool {
12272        self.0 == 0u32
12273    }
12274    #[inline]
12275    pub const fn contains(self, other: Self) -> bool {
12276        (self.0 & other.0) == other.0
12277    }
12278    #[inline]
12279    pub const fn all() -> Self {
12280        Self(15u32)
12281    }
12282    ///Bit 0.
12283    pub const DEVICE_LOCAL: Self = Self(1u32);
12284    ///Bit 1.
12285    pub const MULTI_INSTANCE: Self = Self(2u32);
12286    ///Bit 2.
12287    pub const SEU_SAFE: Self = Self(4u32);
12288    ///Bit 3.
12289    pub const TILE_MEMORY_BIT: Self = Self(8u32);
12290}
12291impl core::ops::BitOr for MemoryHeapFlagBits {
12292    type Output = Self;
12293    #[inline]
12294    fn bitor(self, rhs: Self) -> Self {
12295        Self(self.0 | rhs.0)
12296    }
12297}
12298impl core::ops::BitOrAssign for MemoryHeapFlagBits {
12299    #[inline]
12300    fn bitor_assign(&mut self, rhs: Self) {
12301        self.0 |= rhs.0;
12302    }
12303}
12304impl core::ops::BitAnd for MemoryHeapFlagBits {
12305    type Output = Self;
12306    #[inline]
12307    fn bitand(self, rhs: Self) -> Self {
12308        Self(self.0 & rhs.0)
12309    }
12310}
12311impl core::ops::BitAndAssign for MemoryHeapFlagBits {
12312    #[inline]
12313    fn bitand_assign(&mut self, rhs: Self) {
12314        self.0 &= rhs.0;
12315    }
12316}
12317impl core::ops::BitXor for MemoryHeapFlagBits {
12318    type Output = Self;
12319    #[inline]
12320    fn bitxor(self, rhs: Self) -> Self {
12321        Self(self.0 ^ rhs.0)
12322    }
12323}
12324impl core::ops::BitXorAssign for MemoryHeapFlagBits {
12325    #[inline]
12326    fn bitxor_assign(&mut self, rhs: Self) {
12327        self.0 ^= rhs.0;
12328    }
12329}
12330impl core::ops::Not for MemoryHeapFlagBits {
12331    type Output = Self;
12332    #[inline]
12333    fn not(self) -> Self {
12334        Self(!self.0)
12335    }
12336}
12337impl core::fmt::Debug for MemoryHeapFlagBits {
12338    #[allow(unused_mut, unused_variables)]
12339    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12340        let mut first = true;
12341        let mut remaining = self.0;
12342        if remaining & Self::DEVICE_LOCAL.0 != 0 {
12343            if !first {
12344                f.write_str(" | ")?;
12345            }
12346            f.write_str("DEVICE_LOCAL")?;
12347            remaining &= !Self::DEVICE_LOCAL.0;
12348            first = false;
12349        }
12350        if remaining & Self::MULTI_INSTANCE.0 != 0 {
12351            if !first {
12352                f.write_str(" | ")?;
12353            }
12354            f.write_str("MULTI_INSTANCE")?;
12355            remaining &= !Self::MULTI_INSTANCE.0;
12356            first = false;
12357        }
12358        if remaining & Self::SEU_SAFE.0 != 0 {
12359            if !first {
12360                f.write_str(" | ")?;
12361            }
12362            f.write_str("SEU_SAFE")?;
12363            remaining &= !Self::SEU_SAFE.0;
12364            first = false;
12365        }
12366        if remaining & Self::TILE_MEMORY_BIT.0 != 0 {
12367            if !first {
12368                f.write_str(" | ")?;
12369            }
12370            f.write_str("TILE_MEMORY_BIT")?;
12371            remaining &= !Self::TILE_MEMORY_BIT.0;
12372            first = false;
12373        }
12374        if remaining != 0u32 {
12375            if !first {
12376                f.write_str(" | ")?;
12377            }
12378            write!(f, "{:#x}", remaining)?;
12379        } else if first {
12380            f.write_str("(empty)")?;
12381        }
12382        Ok(())
12383    }
12384}
12385///[`VkMemoryMapFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMapFlagBits.html)
12386#[repr(transparent)]
12387#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12388#[doc(alias = "VkMemoryMapFlagBits")]
12389pub struct MemoryMapFlagBits(u32);
12390impl MemoryMapFlagBits {
12391    #[inline]
12392    pub const fn empty() -> Self {
12393        Self(0u32)
12394    }
12395    #[inline]
12396    pub const fn from_raw(value: u32) -> Self {
12397        Self(value)
12398    }
12399    #[inline]
12400    pub const fn as_raw(self) -> u32 {
12401        self.0
12402    }
12403    #[inline]
12404    pub const fn is_empty(self) -> bool {
12405        self.0 == 0u32
12406    }
12407    #[inline]
12408    pub const fn contains(self, other: Self) -> bool {
12409        (self.0 & other.0) == other.0
12410    }
12411    #[inline]
12412    pub const fn all() -> Self {
12413        Self(1u32)
12414    }
12415    ///Bit 0.
12416    pub const PLACED: Self = Self(1u32);
12417}
12418impl core::ops::BitOr for MemoryMapFlagBits {
12419    type Output = Self;
12420    #[inline]
12421    fn bitor(self, rhs: Self) -> Self {
12422        Self(self.0 | rhs.0)
12423    }
12424}
12425impl core::ops::BitOrAssign for MemoryMapFlagBits {
12426    #[inline]
12427    fn bitor_assign(&mut self, rhs: Self) {
12428        self.0 |= rhs.0;
12429    }
12430}
12431impl core::ops::BitAnd for MemoryMapFlagBits {
12432    type Output = Self;
12433    #[inline]
12434    fn bitand(self, rhs: Self) -> Self {
12435        Self(self.0 & rhs.0)
12436    }
12437}
12438impl core::ops::BitAndAssign for MemoryMapFlagBits {
12439    #[inline]
12440    fn bitand_assign(&mut self, rhs: Self) {
12441        self.0 &= rhs.0;
12442    }
12443}
12444impl core::ops::BitXor for MemoryMapFlagBits {
12445    type Output = Self;
12446    #[inline]
12447    fn bitxor(self, rhs: Self) -> Self {
12448        Self(self.0 ^ rhs.0)
12449    }
12450}
12451impl core::ops::BitXorAssign for MemoryMapFlagBits {
12452    #[inline]
12453    fn bitxor_assign(&mut self, rhs: Self) {
12454        self.0 ^= rhs.0;
12455    }
12456}
12457impl core::ops::Not for MemoryMapFlagBits {
12458    type Output = Self;
12459    #[inline]
12460    fn not(self) -> Self {
12461        Self(!self.0)
12462    }
12463}
12464impl core::fmt::Debug for MemoryMapFlagBits {
12465    #[allow(unused_mut, unused_variables)]
12466    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12467        let mut first = true;
12468        let mut remaining = self.0;
12469        if remaining & Self::PLACED.0 != 0 {
12470            if !first {
12471                f.write_str(" | ")?;
12472            }
12473            f.write_str("PLACED")?;
12474            remaining &= !Self::PLACED.0;
12475            first = false;
12476        }
12477        if remaining != 0u32 {
12478            if !first {
12479                f.write_str(" | ")?;
12480            }
12481            write!(f, "{:#x}", remaining)?;
12482        } else if first {
12483            f.write_str("(empty)")?;
12484        }
12485        Ok(())
12486    }
12487}
12488///[`VkMemoryPropertyFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryPropertyFlagBits.html)
12489#[repr(transparent)]
12490#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12491#[doc(alias = "VkMemoryPropertyFlagBits")]
12492pub struct MemoryPropertyFlagBits(u32);
12493impl MemoryPropertyFlagBits {
12494    #[inline]
12495    pub const fn empty() -> Self {
12496        Self(0u32)
12497    }
12498    #[inline]
12499    pub const fn from_raw(value: u32) -> Self {
12500        Self(value)
12501    }
12502    #[inline]
12503    pub const fn as_raw(self) -> u32 {
12504        self.0
12505    }
12506    #[inline]
12507    pub const fn is_empty(self) -> bool {
12508        self.0 == 0u32
12509    }
12510    #[inline]
12511    pub const fn contains(self, other: Self) -> bool {
12512        (self.0 & other.0) == other.0
12513    }
12514    #[inline]
12515    pub const fn all() -> Self {
12516        Self(511u32)
12517    }
12518    ///Bit 0.
12519    pub const DEVICE_LOCAL: Self = Self(1u32);
12520    ///Bit 1.
12521    pub const HOST_VISIBLE: Self = Self(2u32);
12522    ///Bit 2.
12523    pub const HOST_COHERENT: Self = Self(4u32);
12524    ///Bit 3.
12525    pub const HOST_CACHED: Self = Self(8u32);
12526    ///Bit 4.
12527    pub const LAZILY_ALLOCATED: Self = Self(16u32);
12528    ///Bit 5.
12529    pub const PROTECTED: Self = Self(32u32);
12530    ///Bit 6.
12531    pub const DEVICE_COHERENT: Self = Self(64u32);
12532    ///Bit 7.
12533    pub const DEVICE_UNCACHED: Self = Self(128u32);
12534    ///Bit 8.
12535    pub const RDMA_CAPABLE: Self = Self(256u32);
12536}
12537impl core::ops::BitOr for MemoryPropertyFlagBits {
12538    type Output = Self;
12539    #[inline]
12540    fn bitor(self, rhs: Self) -> Self {
12541        Self(self.0 | rhs.0)
12542    }
12543}
12544impl core::ops::BitOrAssign for MemoryPropertyFlagBits {
12545    #[inline]
12546    fn bitor_assign(&mut self, rhs: Self) {
12547        self.0 |= rhs.0;
12548    }
12549}
12550impl core::ops::BitAnd for MemoryPropertyFlagBits {
12551    type Output = Self;
12552    #[inline]
12553    fn bitand(self, rhs: Self) -> Self {
12554        Self(self.0 & rhs.0)
12555    }
12556}
12557impl core::ops::BitAndAssign for MemoryPropertyFlagBits {
12558    #[inline]
12559    fn bitand_assign(&mut self, rhs: Self) {
12560        self.0 &= rhs.0;
12561    }
12562}
12563impl core::ops::BitXor for MemoryPropertyFlagBits {
12564    type Output = Self;
12565    #[inline]
12566    fn bitxor(self, rhs: Self) -> Self {
12567        Self(self.0 ^ rhs.0)
12568    }
12569}
12570impl core::ops::BitXorAssign for MemoryPropertyFlagBits {
12571    #[inline]
12572    fn bitxor_assign(&mut self, rhs: Self) {
12573        self.0 ^= rhs.0;
12574    }
12575}
12576impl core::ops::Not for MemoryPropertyFlagBits {
12577    type Output = Self;
12578    #[inline]
12579    fn not(self) -> Self {
12580        Self(!self.0)
12581    }
12582}
12583impl core::fmt::Debug for MemoryPropertyFlagBits {
12584    #[allow(unused_mut, unused_variables)]
12585    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12586        let mut first = true;
12587        let mut remaining = self.0;
12588        if remaining & Self::DEVICE_LOCAL.0 != 0 {
12589            if !first {
12590                f.write_str(" | ")?;
12591            }
12592            f.write_str("DEVICE_LOCAL")?;
12593            remaining &= !Self::DEVICE_LOCAL.0;
12594            first = false;
12595        }
12596        if remaining & Self::HOST_VISIBLE.0 != 0 {
12597            if !first {
12598                f.write_str(" | ")?;
12599            }
12600            f.write_str("HOST_VISIBLE")?;
12601            remaining &= !Self::HOST_VISIBLE.0;
12602            first = false;
12603        }
12604        if remaining & Self::HOST_COHERENT.0 != 0 {
12605            if !first {
12606                f.write_str(" | ")?;
12607            }
12608            f.write_str("HOST_COHERENT")?;
12609            remaining &= !Self::HOST_COHERENT.0;
12610            first = false;
12611        }
12612        if remaining & Self::HOST_CACHED.0 != 0 {
12613            if !first {
12614                f.write_str(" | ")?;
12615            }
12616            f.write_str("HOST_CACHED")?;
12617            remaining &= !Self::HOST_CACHED.0;
12618            first = false;
12619        }
12620        if remaining & Self::LAZILY_ALLOCATED.0 != 0 {
12621            if !first {
12622                f.write_str(" | ")?;
12623            }
12624            f.write_str("LAZILY_ALLOCATED")?;
12625            remaining &= !Self::LAZILY_ALLOCATED.0;
12626            first = false;
12627        }
12628        if remaining & Self::PROTECTED.0 != 0 {
12629            if !first {
12630                f.write_str(" | ")?;
12631            }
12632            f.write_str("PROTECTED")?;
12633            remaining &= !Self::PROTECTED.0;
12634            first = false;
12635        }
12636        if remaining & Self::DEVICE_COHERENT.0 != 0 {
12637            if !first {
12638                f.write_str(" | ")?;
12639            }
12640            f.write_str("DEVICE_COHERENT")?;
12641            remaining &= !Self::DEVICE_COHERENT.0;
12642            first = false;
12643        }
12644        if remaining & Self::DEVICE_UNCACHED.0 != 0 {
12645            if !first {
12646                f.write_str(" | ")?;
12647            }
12648            f.write_str("DEVICE_UNCACHED")?;
12649            remaining &= !Self::DEVICE_UNCACHED.0;
12650            first = false;
12651        }
12652        if remaining & Self::RDMA_CAPABLE.0 != 0 {
12653            if !first {
12654                f.write_str(" | ")?;
12655            }
12656            f.write_str("RDMA_CAPABLE")?;
12657            remaining &= !Self::RDMA_CAPABLE.0;
12658            first = false;
12659        }
12660        if remaining != 0u32 {
12661            if !first {
12662                f.write_str(" | ")?;
12663            }
12664            write!(f, "{:#x}", remaining)?;
12665        } else if first {
12666            f.write_str("(empty)")?;
12667        }
12668        Ok(())
12669    }
12670}
12671///[`VkMemoryUnmapFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryUnmapFlagBits.html)
12672#[repr(transparent)]
12673#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12674#[doc(alias = "VkMemoryUnmapFlagBits")]
12675pub struct MemoryUnmapFlagBits(u32);
12676impl MemoryUnmapFlagBits {
12677    #[inline]
12678    pub const fn empty() -> Self {
12679        Self(0u32)
12680    }
12681    #[inline]
12682    pub const fn from_raw(value: u32) -> Self {
12683        Self(value)
12684    }
12685    #[inline]
12686    pub const fn as_raw(self) -> u32 {
12687        self.0
12688    }
12689    #[inline]
12690    pub const fn is_empty(self) -> bool {
12691        self.0 == 0u32
12692    }
12693    #[inline]
12694    pub const fn contains(self, other: Self) -> bool {
12695        (self.0 & other.0) == other.0
12696    }
12697    #[inline]
12698    pub const fn all() -> Self {
12699        Self(1u32)
12700    }
12701    ///Bit 0.
12702    pub const RESERVE: Self = Self(1u32);
12703}
12704impl core::ops::BitOr for MemoryUnmapFlagBits {
12705    type Output = Self;
12706    #[inline]
12707    fn bitor(self, rhs: Self) -> Self {
12708        Self(self.0 | rhs.0)
12709    }
12710}
12711impl core::ops::BitOrAssign for MemoryUnmapFlagBits {
12712    #[inline]
12713    fn bitor_assign(&mut self, rhs: Self) {
12714        self.0 |= rhs.0;
12715    }
12716}
12717impl core::ops::BitAnd for MemoryUnmapFlagBits {
12718    type Output = Self;
12719    #[inline]
12720    fn bitand(self, rhs: Self) -> Self {
12721        Self(self.0 & rhs.0)
12722    }
12723}
12724impl core::ops::BitAndAssign for MemoryUnmapFlagBits {
12725    #[inline]
12726    fn bitand_assign(&mut self, rhs: Self) {
12727        self.0 &= rhs.0;
12728    }
12729}
12730impl core::ops::BitXor for MemoryUnmapFlagBits {
12731    type Output = Self;
12732    #[inline]
12733    fn bitxor(self, rhs: Self) -> Self {
12734        Self(self.0 ^ rhs.0)
12735    }
12736}
12737impl core::ops::BitXorAssign for MemoryUnmapFlagBits {
12738    #[inline]
12739    fn bitxor_assign(&mut self, rhs: Self) {
12740        self.0 ^= rhs.0;
12741    }
12742}
12743impl core::ops::Not for MemoryUnmapFlagBits {
12744    type Output = Self;
12745    #[inline]
12746    fn not(self) -> Self {
12747        Self(!self.0)
12748    }
12749}
12750impl core::fmt::Debug for MemoryUnmapFlagBits {
12751    #[allow(unused_mut, unused_variables)]
12752    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12753        let mut first = true;
12754        let mut remaining = self.0;
12755        if remaining & Self::RESERVE.0 != 0 {
12756            if !first {
12757                f.write_str(" | ")?;
12758            }
12759            f.write_str("RESERVE")?;
12760            remaining &= !Self::RESERVE.0;
12761            first = false;
12762        }
12763        if remaining != 0u32 {
12764            if !first {
12765                f.write_str(" | ")?;
12766            }
12767            write!(f, "{:#x}", remaining)?;
12768        } else if first {
12769            f.write_str("(empty)")?;
12770        }
12771        Ok(())
12772    }
12773}
12774///[`VkMicromapCreateFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapCreateFlagBitsEXT.html)
12775#[repr(transparent)]
12776#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12777#[doc(alias = "VkMicromapCreateFlagBitsEXT")]
12778pub struct MicromapCreateFlagBitsEXT(u32);
12779impl MicromapCreateFlagBitsEXT {
12780    #[inline]
12781    pub const fn empty() -> Self {
12782        Self(0u32)
12783    }
12784    #[inline]
12785    pub const fn from_raw(value: u32) -> Self {
12786        Self(value)
12787    }
12788    #[inline]
12789    pub const fn as_raw(self) -> u32 {
12790        self.0
12791    }
12792    #[inline]
12793    pub const fn is_empty(self) -> bool {
12794        self.0 == 0u32
12795    }
12796    #[inline]
12797    pub const fn contains(self, other: Self) -> bool {
12798        (self.0 & other.0) == other.0
12799    }
12800    #[inline]
12801    pub const fn all() -> Self {
12802        Self(1u32)
12803    }
12804    ///Bit 0.
12805    pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(1u32);
12806}
12807impl core::ops::BitOr for MicromapCreateFlagBitsEXT {
12808    type Output = Self;
12809    #[inline]
12810    fn bitor(self, rhs: Self) -> Self {
12811        Self(self.0 | rhs.0)
12812    }
12813}
12814impl core::ops::BitOrAssign for MicromapCreateFlagBitsEXT {
12815    #[inline]
12816    fn bitor_assign(&mut self, rhs: Self) {
12817        self.0 |= rhs.0;
12818    }
12819}
12820impl core::ops::BitAnd for MicromapCreateFlagBitsEXT {
12821    type Output = Self;
12822    #[inline]
12823    fn bitand(self, rhs: Self) -> Self {
12824        Self(self.0 & rhs.0)
12825    }
12826}
12827impl core::ops::BitAndAssign for MicromapCreateFlagBitsEXT {
12828    #[inline]
12829    fn bitand_assign(&mut self, rhs: Self) {
12830        self.0 &= rhs.0;
12831    }
12832}
12833impl core::ops::BitXor for MicromapCreateFlagBitsEXT {
12834    type Output = Self;
12835    #[inline]
12836    fn bitxor(self, rhs: Self) -> Self {
12837        Self(self.0 ^ rhs.0)
12838    }
12839}
12840impl core::ops::BitXorAssign for MicromapCreateFlagBitsEXT {
12841    #[inline]
12842    fn bitxor_assign(&mut self, rhs: Self) {
12843        self.0 ^= rhs.0;
12844    }
12845}
12846impl core::ops::Not for MicromapCreateFlagBitsEXT {
12847    type Output = Self;
12848    #[inline]
12849    fn not(self) -> Self {
12850        Self(!self.0)
12851    }
12852}
12853impl core::fmt::Debug for MicromapCreateFlagBitsEXT {
12854    #[allow(unused_mut, unused_variables)]
12855    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12856        let mut first = true;
12857        let mut remaining = self.0;
12858        if remaining & Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0 != 0 {
12859            if !first {
12860                f.write_str(" | ")?;
12861            }
12862            f.write_str("DEVICE_ADDRESS_CAPTURE_REPLAY")?;
12863            remaining &= !Self::DEVICE_ADDRESS_CAPTURE_REPLAY.0;
12864            first = false;
12865        }
12866        if remaining != 0u32 {
12867            if !first {
12868                f.write_str(" | ")?;
12869            }
12870            write!(f, "{:#x}", remaining)?;
12871        } else if first {
12872            f.write_str("(empty)")?;
12873        }
12874        Ok(())
12875    }
12876}
12877///[`VkOpticalFlowExecuteFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowExecuteFlagBitsNV.html)
12878#[repr(transparent)]
12879#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12880#[doc(alias = "VkOpticalFlowExecuteFlagBitsNV")]
12881pub struct OpticalFlowExecuteFlagBitsNV(u32);
12882impl OpticalFlowExecuteFlagBitsNV {
12883    #[inline]
12884    pub const fn empty() -> Self {
12885        Self(0u32)
12886    }
12887    #[inline]
12888    pub const fn from_raw(value: u32) -> Self {
12889        Self(value)
12890    }
12891    #[inline]
12892    pub const fn as_raw(self) -> u32 {
12893        self.0
12894    }
12895    #[inline]
12896    pub const fn is_empty(self) -> bool {
12897        self.0 == 0u32
12898    }
12899    #[inline]
12900    pub const fn contains(self, other: Self) -> bool {
12901        (self.0 & other.0) == other.0
12902    }
12903    #[inline]
12904    pub const fn all() -> Self {
12905        Self(1u32)
12906    }
12907    ///Bit 0.
12908    pub const DISABLE_TEMPORAL_HINTS: Self = Self(1u32);
12909}
12910impl core::ops::BitOr for OpticalFlowExecuteFlagBitsNV {
12911    type Output = Self;
12912    #[inline]
12913    fn bitor(self, rhs: Self) -> Self {
12914        Self(self.0 | rhs.0)
12915    }
12916}
12917impl core::ops::BitOrAssign for OpticalFlowExecuteFlagBitsNV {
12918    #[inline]
12919    fn bitor_assign(&mut self, rhs: Self) {
12920        self.0 |= rhs.0;
12921    }
12922}
12923impl core::ops::BitAnd for OpticalFlowExecuteFlagBitsNV {
12924    type Output = Self;
12925    #[inline]
12926    fn bitand(self, rhs: Self) -> Self {
12927        Self(self.0 & rhs.0)
12928    }
12929}
12930impl core::ops::BitAndAssign for OpticalFlowExecuteFlagBitsNV {
12931    #[inline]
12932    fn bitand_assign(&mut self, rhs: Self) {
12933        self.0 &= rhs.0;
12934    }
12935}
12936impl core::ops::BitXor for OpticalFlowExecuteFlagBitsNV {
12937    type Output = Self;
12938    #[inline]
12939    fn bitxor(self, rhs: Self) -> Self {
12940        Self(self.0 ^ rhs.0)
12941    }
12942}
12943impl core::ops::BitXorAssign for OpticalFlowExecuteFlagBitsNV {
12944    #[inline]
12945    fn bitxor_assign(&mut self, rhs: Self) {
12946        self.0 ^= rhs.0;
12947    }
12948}
12949impl core::ops::Not for OpticalFlowExecuteFlagBitsNV {
12950    type Output = Self;
12951    #[inline]
12952    fn not(self) -> Self {
12953        Self(!self.0)
12954    }
12955}
12956impl core::fmt::Debug for OpticalFlowExecuteFlagBitsNV {
12957    #[allow(unused_mut, unused_variables)]
12958    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12959        let mut first = true;
12960        let mut remaining = self.0;
12961        if remaining & Self::DISABLE_TEMPORAL_HINTS.0 != 0 {
12962            if !first {
12963                f.write_str(" | ")?;
12964            }
12965            f.write_str("DISABLE_TEMPORAL_HINTS")?;
12966            remaining &= !Self::DISABLE_TEMPORAL_HINTS.0;
12967            first = false;
12968        }
12969        if remaining != 0u32 {
12970            if !first {
12971                f.write_str(" | ")?;
12972            }
12973            write!(f, "{:#x}", remaining)?;
12974        } else if first {
12975            f.write_str("(empty)")?;
12976        }
12977        Ok(())
12978    }
12979}
12980///[`VkOpticalFlowGridSizeFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowGridSizeFlagBitsNV.html)
12981#[repr(transparent)]
12982#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
12983#[doc(alias = "VkOpticalFlowGridSizeFlagBitsNV")]
12984pub struct OpticalFlowGridSizeFlagBitsNV(u32);
12985impl OpticalFlowGridSizeFlagBitsNV {
12986    #[inline]
12987    pub const fn empty() -> Self {
12988        Self(0u32)
12989    }
12990    #[inline]
12991    pub const fn from_raw(value: u32) -> Self {
12992        Self(value)
12993    }
12994    #[inline]
12995    pub const fn as_raw(self) -> u32 {
12996        self.0
12997    }
12998    #[inline]
12999    pub const fn is_empty(self) -> bool {
13000        self.0 == 0u32
13001    }
13002    #[inline]
13003    pub const fn contains(self, other: Self) -> bool {
13004        (self.0 & other.0) == other.0
13005    }
13006    #[inline]
13007    pub const fn all() -> Self {
13008        Self(15u32)
13009    }
13010    pub const UNKNOWN: Self = Self(0u32);
13011    ///Bit 0.
13012    pub const _1X1: Self = Self(1u32);
13013    ///Bit 1.
13014    pub const _2X2: Self = Self(2u32);
13015    ///Bit 2.
13016    pub const _4X4: Self = Self(4u32);
13017    ///Bit 3.
13018    pub const _8X8: Self = Self(8u32);
13019}
13020impl core::ops::BitOr for OpticalFlowGridSizeFlagBitsNV {
13021    type Output = Self;
13022    #[inline]
13023    fn bitor(self, rhs: Self) -> Self {
13024        Self(self.0 | rhs.0)
13025    }
13026}
13027impl core::ops::BitOrAssign for OpticalFlowGridSizeFlagBitsNV {
13028    #[inline]
13029    fn bitor_assign(&mut self, rhs: Self) {
13030        self.0 |= rhs.0;
13031    }
13032}
13033impl core::ops::BitAnd for OpticalFlowGridSizeFlagBitsNV {
13034    type Output = Self;
13035    #[inline]
13036    fn bitand(self, rhs: Self) -> Self {
13037        Self(self.0 & rhs.0)
13038    }
13039}
13040impl core::ops::BitAndAssign for OpticalFlowGridSizeFlagBitsNV {
13041    #[inline]
13042    fn bitand_assign(&mut self, rhs: Self) {
13043        self.0 &= rhs.0;
13044    }
13045}
13046impl core::ops::BitXor for OpticalFlowGridSizeFlagBitsNV {
13047    type Output = Self;
13048    #[inline]
13049    fn bitxor(self, rhs: Self) -> Self {
13050        Self(self.0 ^ rhs.0)
13051    }
13052}
13053impl core::ops::BitXorAssign for OpticalFlowGridSizeFlagBitsNV {
13054    #[inline]
13055    fn bitxor_assign(&mut self, rhs: Self) {
13056        self.0 ^= rhs.0;
13057    }
13058}
13059impl core::ops::Not for OpticalFlowGridSizeFlagBitsNV {
13060    type Output = Self;
13061    #[inline]
13062    fn not(self) -> Self {
13063        Self(!self.0)
13064    }
13065}
13066impl core::fmt::Debug for OpticalFlowGridSizeFlagBitsNV {
13067    #[allow(unused_mut, unused_variables)]
13068    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13069        let mut first = true;
13070        let mut remaining = self.0;
13071        if remaining & Self::_1X1.0 != 0 {
13072            if !first {
13073                f.write_str(" | ")?;
13074            }
13075            f.write_str("_1X1")?;
13076            remaining &= !Self::_1X1.0;
13077            first = false;
13078        }
13079        if remaining & Self::_2X2.0 != 0 {
13080            if !first {
13081                f.write_str(" | ")?;
13082            }
13083            f.write_str("_2X2")?;
13084            remaining &= !Self::_2X2.0;
13085            first = false;
13086        }
13087        if remaining & Self::_4X4.0 != 0 {
13088            if !first {
13089                f.write_str(" | ")?;
13090            }
13091            f.write_str("_4X4")?;
13092            remaining &= !Self::_4X4.0;
13093            first = false;
13094        }
13095        if remaining & Self::_8X8.0 != 0 {
13096            if !first {
13097                f.write_str(" | ")?;
13098            }
13099            f.write_str("_8X8")?;
13100            remaining &= !Self::_8X8.0;
13101            first = false;
13102        }
13103        if remaining != 0u32 {
13104            if !first {
13105                f.write_str(" | ")?;
13106            }
13107            write!(f, "{:#x}", remaining)?;
13108        } else if first {
13109            f.write_str("(empty)")?;
13110        }
13111        Ok(())
13112    }
13113}
13114///[`VkOpticalFlowSessionCreateFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateFlagBitsNV.html)
13115#[repr(transparent)]
13116#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13117#[doc(alias = "VkOpticalFlowSessionCreateFlagBitsNV")]
13118pub struct OpticalFlowSessionCreateFlagBitsNV(u32);
13119impl OpticalFlowSessionCreateFlagBitsNV {
13120    #[inline]
13121    pub const fn empty() -> Self {
13122        Self(0u32)
13123    }
13124    #[inline]
13125    pub const fn from_raw(value: u32) -> Self {
13126        Self(value)
13127    }
13128    #[inline]
13129    pub const fn as_raw(self) -> u32 {
13130        self.0
13131    }
13132    #[inline]
13133    pub const fn is_empty(self) -> bool {
13134        self.0 == 0u32
13135    }
13136    #[inline]
13137    pub const fn contains(self, other: Self) -> bool {
13138        (self.0 & other.0) == other.0
13139    }
13140    #[inline]
13141    pub const fn all() -> Self {
13142        Self(31u32)
13143    }
13144    ///Bit 0.
13145    pub const ENABLE_HINT: Self = Self(1u32);
13146    ///Bit 1.
13147    pub const ENABLE_COST: Self = Self(2u32);
13148    ///Bit 2.
13149    pub const ENABLE_GLOBAL_FLOW: Self = Self(4u32);
13150    ///Bit 3.
13151    pub const ALLOW_REGIONS: Self = Self(8u32);
13152    ///Bit 4.
13153    pub const BOTH_DIRECTIONS: Self = Self(16u32);
13154}
13155impl core::ops::BitOr for OpticalFlowSessionCreateFlagBitsNV {
13156    type Output = Self;
13157    #[inline]
13158    fn bitor(self, rhs: Self) -> Self {
13159        Self(self.0 | rhs.0)
13160    }
13161}
13162impl core::ops::BitOrAssign for OpticalFlowSessionCreateFlagBitsNV {
13163    #[inline]
13164    fn bitor_assign(&mut self, rhs: Self) {
13165        self.0 |= rhs.0;
13166    }
13167}
13168impl core::ops::BitAnd for OpticalFlowSessionCreateFlagBitsNV {
13169    type Output = Self;
13170    #[inline]
13171    fn bitand(self, rhs: Self) -> Self {
13172        Self(self.0 & rhs.0)
13173    }
13174}
13175impl core::ops::BitAndAssign for OpticalFlowSessionCreateFlagBitsNV {
13176    #[inline]
13177    fn bitand_assign(&mut self, rhs: Self) {
13178        self.0 &= rhs.0;
13179    }
13180}
13181impl core::ops::BitXor for OpticalFlowSessionCreateFlagBitsNV {
13182    type Output = Self;
13183    #[inline]
13184    fn bitxor(self, rhs: Self) -> Self {
13185        Self(self.0 ^ rhs.0)
13186    }
13187}
13188impl core::ops::BitXorAssign for OpticalFlowSessionCreateFlagBitsNV {
13189    #[inline]
13190    fn bitxor_assign(&mut self, rhs: Self) {
13191        self.0 ^= rhs.0;
13192    }
13193}
13194impl core::ops::Not for OpticalFlowSessionCreateFlagBitsNV {
13195    type Output = Self;
13196    #[inline]
13197    fn not(self) -> Self {
13198        Self(!self.0)
13199    }
13200}
13201impl core::fmt::Debug for OpticalFlowSessionCreateFlagBitsNV {
13202    #[allow(unused_mut, unused_variables)]
13203    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13204        let mut first = true;
13205        let mut remaining = self.0;
13206        if remaining & Self::ENABLE_HINT.0 != 0 {
13207            if !first {
13208                f.write_str(" | ")?;
13209            }
13210            f.write_str("ENABLE_HINT")?;
13211            remaining &= !Self::ENABLE_HINT.0;
13212            first = false;
13213        }
13214        if remaining & Self::ENABLE_COST.0 != 0 {
13215            if !first {
13216                f.write_str(" | ")?;
13217            }
13218            f.write_str("ENABLE_COST")?;
13219            remaining &= !Self::ENABLE_COST.0;
13220            first = false;
13221        }
13222        if remaining & Self::ENABLE_GLOBAL_FLOW.0 != 0 {
13223            if !first {
13224                f.write_str(" | ")?;
13225            }
13226            f.write_str("ENABLE_GLOBAL_FLOW")?;
13227            remaining &= !Self::ENABLE_GLOBAL_FLOW.0;
13228            first = false;
13229        }
13230        if remaining & Self::ALLOW_REGIONS.0 != 0 {
13231            if !first {
13232                f.write_str(" | ")?;
13233            }
13234            f.write_str("ALLOW_REGIONS")?;
13235            remaining &= !Self::ALLOW_REGIONS.0;
13236            first = false;
13237        }
13238        if remaining & Self::BOTH_DIRECTIONS.0 != 0 {
13239            if !first {
13240                f.write_str(" | ")?;
13241            }
13242            f.write_str("BOTH_DIRECTIONS")?;
13243            remaining &= !Self::BOTH_DIRECTIONS.0;
13244            first = false;
13245        }
13246        if remaining != 0u32 {
13247            if !first {
13248                f.write_str(" | ")?;
13249            }
13250            write!(f, "{:#x}", remaining)?;
13251        } else if first {
13252            f.write_str("(empty)")?;
13253        }
13254        Ok(())
13255    }
13256}
13257///[`VkOpticalFlowUsageFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowUsageFlagBitsNV.html)
13258#[repr(transparent)]
13259#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13260#[doc(alias = "VkOpticalFlowUsageFlagBitsNV")]
13261pub struct OpticalFlowUsageFlagBitsNV(u32);
13262impl OpticalFlowUsageFlagBitsNV {
13263    #[inline]
13264    pub const fn empty() -> Self {
13265        Self(0u32)
13266    }
13267    #[inline]
13268    pub const fn from_raw(value: u32) -> Self {
13269        Self(value)
13270    }
13271    #[inline]
13272    pub const fn as_raw(self) -> u32 {
13273        self.0
13274    }
13275    #[inline]
13276    pub const fn is_empty(self) -> bool {
13277        self.0 == 0u32
13278    }
13279    #[inline]
13280    pub const fn contains(self, other: Self) -> bool {
13281        (self.0 & other.0) == other.0
13282    }
13283    #[inline]
13284    pub const fn all() -> Self {
13285        Self(31u32)
13286    }
13287    pub const UNKNOWN: Self = Self(0u32);
13288    ///Bit 0.
13289    pub const INPUT: Self = Self(1u32);
13290    ///Bit 1.
13291    pub const OUTPUT: Self = Self(2u32);
13292    ///Bit 2.
13293    pub const HINT: Self = Self(4u32);
13294    ///Bit 3.
13295    pub const COST: Self = Self(8u32);
13296    ///Bit 4.
13297    pub const GLOBAL_FLOW: Self = Self(16u32);
13298}
13299impl core::ops::BitOr for OpticalFlowUsageFlagBitsNV {
13300    type Output = Self;
13301    #[inline]
13302    fn bitor(self, rhs: Self) -> Self {
13303        Self(self.0 | rhs.0)
13304    }
13305}
13306impl core::ops::BitOrAssign for OpticalFlowUsageFlagBitsNV {
13307    #[inline]
13308    fn bitor_assign(&mut self, rhs: Self) {
13309        self.0 |= rhs.0;
13310    }
13311}
13312impl core::ops::BitAnd for OpticalFlowUsageFlagBitsNV {
13313    type Output = Self;
13314    #[inline]
13315    fn bitand(self, rhs: Self) -> Self {
13316        Self(self.0 & rhs.0)
13317    }
13318}
13319impl core::ops::BitAndAssign for OpticalFlowUsageFlagBitsNV {
13320    #[inline]
13321    fn bitand_assign(&mut self, rhs: Self) {
13322        self.0 &= rhs.0;
13323    }
13324}
13325impl core::ops::BitXor for OpticalFlowUsageFlagBitsNV {
13326    type Output = Self;
13327    #[inline]
13328    fn bitxor(self, rhs: Self) -> Self {
13329        Self(self.0 ^ rhs.0)
13330    }
13331}
13332impl core::ops::BitXorAssign for OpticalFlowUsageFlagBitsNV {
13333    #[inline]
13334    fn bitxor_assign(&mut self, rhs: Self) {
13335        self.0 ^= rhs.0;
13336    }
13337}
13338impl core::ops::Not for OpticalFlowUsageFlagBitsNV {
13339    type Output = Self;
13340    #[inline]
13341    fn not(self) -> Self {
13342        Self(!self.0)
13343    }
13344}
13345impl core::fmt::Debug for OpticalFlowUsageFlagBitsNV {
13346    #[allow(unused_mut, unused_variables)]
13347    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13348        let mut first = true;
13349        let mut remaining = self.0;
13350        if remaining & Self::INPUT.0 != 0 {
13351            if !first {
13352                f.write_str(" | ")?;
13353            }
13354            f.write_str("INPUT")?;
13355            remaining &= !Self::INPUT.0;
13356            first = false;
13357        }
13358        if remaining & Self::OUTPUT.0 != 0 {
13359            if !first {
13360                f.write_str(" | ")?;
13361            }
13362            f.write_str("OUTPUT")?;
13363            remaining &= !Self::OUTPUT.0;
13364            first = false;
13365        }
13366        if remaining & Self::HINT.0 != 0 {
13367            if !first {
13368                f.write_str(" | ")?;
13369            }
13370            f.write_str("HINT")?;
13371            remaining &= !Self::HINT.0;
13372            first = false;
13373        }
13374        if remaining & Self::COST.0 != 0 {
13375            if !first {
13376                f.write_str(" | ")?;
13377            }
13378            f.write_str("COST")?;
13379            remaining &= !Self::COST.0;
13380            first = false;
13381        }
13382        if remaining & Self::GLOBAL_FLOW.0 != 0 {
13383            if !first {
13384                f.write_str(" | ")?;
13385            }
13386            f.write_str("GLOBAL_FLOW")?;
13387            remaining &= !Self::GLOBAL_FLOW.0;
13388            first = false;
13389        }
13390        if remaining != 0u32 {
13391            if !first {
13392                f.write_str(" | ")?;
13393            }
13394            write!(f, "{:#x}", remaining)?;
13395        } else if first {
13396            f.write_str("(empty)")?;
13397        }
13398        Ok(())
13399    }
13400}
13401///[`VkPartitionedAccelerationStructureInstanceFlagBitsNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstanceFlagBitsNV.html)
13402#[repr(transparent)]
13403#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13404#[doc(alias = "VkPartitionedAccelerationStructureInstanceFlagBitsNV")]
13405pub struct PartitionedAccelerationStructureInstanceFlagBitsNV(u32);
13406impl PartitionedAccelerationStructureInstanceFlagBitsNV {
13407    #[inline]
13408    pub const fn empty() -> Self {
13409        Self(0u32)
13410    }
13411    #[inline]
13412    pub const fn from_raw(value: u32) -> Self {
13413        Self(value)
13414    }
13415    #[inline]
13416    pub const fn as_raw(self) -> u32 {
13417        self.0
13418    }
13419    #[inline]
13420    pub const fn is_empty(self) -> bool {
13421        self.0 == 0u32
13422    }
13423    #[inline]
13424    pub const fn contains(self, other: Self) -> bool {
13425        (self.0 & other.0) == other.0
13426    }
13427    #[inline]
13428    pub const fn all() -> Self {
13429        Self(31u32)
13430    }
13431    ///Bit 0.
13432    pub const FLAG_TRIANGLE_FACING_CULL_DISABLE: Self = Self(1u32);
13433    ///Bit 1.
13434    pub const FLAG_TRIANGLE_FLIP_FACING: Self = Self(2u32);
13435    ///Bit 2.
13436    pub const FLAG_FORCE_OPAQUE: Self = Self(4u32);
13437    ///Bit 3.
13438    pub const FLAG_FORCE_NO_OPAQUE: Self = Self(8u32);
13439    ///Bit 4.
13440    pub const FLAG_ENABLE_EXPLICIT_BOUNDING_BOX: Self = Self(16u32);
13441}
13442impl core::ops::BitOr for PartitionedAccelerationStructureInstanceFlagBitsNV {
13443    type Output = Self;
13444    #[inline]
13445    fn bitor(self, rhs: Self) -> Self {
13446        Self(self.0 | rhs.0)
13447    }
13448}
13449impl core::ops::BitOrAssign for PartitionedAccelerationStructureInstanceFlagBitsNV {
13450    #[inline]
13451    fn bitor_assign(&mut self, rhs: Self) {
13452        self.0 |= rhs.0;
13453    }
13454}
13455impl core::ops::BitAnd for PartitionedAccelerationStructureInstanceFlagBitsNV {
13456    type Output = Self;
13457    #[inline]
13458    fn bitand(self, rhs: Self) -> Self {
13459        Self(self.0 & rhs.0)
13460    }
13461}
13462impl core::ops::BitAndAssign for PartitionedAccelerationStructureInstanceFlagBitsNV {
13463    #[inline]
13464    fn bitand_assign(&mut self, rhs: Self) {
13465        self.0 &= rhs.0;
13466    }
13467}
13468impl core::ops::BitXor for PartitionedAccelerationStructureInstanceFlagBitsNV {
13469    type Output = Self;
13470    #[inline]
13471    fn bitxor(self, rhs: Self) -> Self {
13472        Self(self.0 ^ rhs.0)
13473    }
13474}
13475impl core::ops::BitXorAssign for PartitionedAccelerationStructureInstanceFlagBitsNV {
13476    #[inline]
13477    fn bitxor_assign(&mut self, rhs: Self) {
13478        self.0 ^= rhs.0;
13479    }
13480}
13481impl core::ops::Not for PartitionedAccelerationStructureInstanceFlagBitsNV {
13482    type Output = Self;
13483    #[inline]
13484    fn not(self) -> Self {
13485        Self(!self.0)
13486    }
13487}
13488impl core::fmt::Debug for PartitionedAccelerationStructureInstanceFlagBitsNV {
13489    #[allow(unused_mut, unused_variables)]
13490    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13491        let mut first = true;
13492        let mut remaining = self.0;
13493        if remaining & Self::FLAG_TRIANGLE_FACING_CULL_DISABLE.0 != 0 {
13494            if !first {
13495                f.write_str(" | ")?;
13496            }
13497            f.write_str("FLAG_TRIANGLE_FACING_CULL_DISABLE")?;
13498            remaining &= !Self::FLAG_TRIANGLE_FACING_CULL_DISABLE.0;
13499            first = false;
13500        }
13501        if remaining & Self::FLAG_TRIANGLE_FLIP_FACING.0 != 0 {
13502            if !first {
13503                f.write_str(" | ")?;
13504            }
13505            f.write_str("FLAG_TRIANGLE_FLIP_FACING")?;
13506            remaining &= !Self::FLAG_TRIANGLE_FLIP_FACING.0;
13507            first = false;
13508        }
13509        if remaining & Self::FLAG_FORCE_OPAQUE.0 != 0 {
13510            if !first {
13511                f.write_str(" | ")?;
13512            }
13513            f.write_str("FLAG_FORCE_OPAQUE")?;
13514            remaining &= !Self::FLAG_FORCE_OPAQUE.0;
13515            first = false;
13516        }
13517        if remaining & Self::FLAG_FORCE_NO_OPAQUE.0 != 0 {
13518            if !first {
13519                f.write_str(" | ")?;
13520            }
13521            f.write_str("FLAG_FORCE_NO_OPAQUE")?;
13522            remaining &= !Self::FLAG_FORCE_NO_OPAQUE.0;
13523            first = false;
13524        }
13525        if remaining & Self::FLAG_ENABLE_EXPLICIT_BOUNDING_BOX.0 != 0 {
13526            if !first {
13527                f.write_str(" | ")?;
13528            }
13529            f.write_str("FLAG_ENABLE_EXPLICIT_BOUNDING_BOX")?;
13530            remaining &= !Self::FLAG_ENABLE_EXPLICIT_BOUNDING_BOX.0;
13531            first = false;
13532        }
13533        if remaining != 0u32 {
13534            if !first {
13535                f.write_str(" | ")?;
13536            }
13537            write!(f, "{:#x}", remaining)?;
13538        } else if first {
13539            f.write_str("(empty)")?;
13540        }
13541        Ok(())
13542    }
13543}
13544///[`VkPastPresentationTimingFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingFlagBitsEXT.html)
13545#[repr(transparent)]
13546#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13547#[doc(alias = "VkPastPresentationTimingFlagBitsEXT")]
13548pub struct PastPresentationTimingFlagBitsEXT(u32);
13549impl PastPresentationTimingFlagBitsEXT {
13550    #[inline]
13551    pub const fn empty() -> Self {
13552        Self(0u32)
13553    }
13554    #[inline]
13555    pub const fn from_raw(value: u32) -> Self {
13556        Self(value)
13557    }
13558    #[inline]
13559    pub const fn as_raw(self) -> u32 {
13560        self.0
13561    }
13562    #[inline]
13563    pub const fn is_empty(self) -> bool {
13564        self.0 == 0u32
13565    }
13566    #[inline]
13567    pub const fn contains(self, other: Self) -> bool {
13568        (self.0 & other.0) == other.0
13569    }
13570    #[inline]
13571    pub const fn all() -> Self {
13572        Self(3u32)
13573    }
13574    ///Bit 0.
13575    pub const ALLOW_PARTIAL_RESULTS: Self = Self(1u32);
13576    ///Bit 1.
13577    pub const ALLOW_OUT_OF_ORDER_RESULTS: Self = Self(2u32);
13578}
13579impl core::ops::BitOr for PastPresentationTimingFlagBitsEXT {
13580    type Output = Self;
13581    #[inline]
13582    fn bitor(self, rhs: Self) -> Self {
13583        Self(self.0 | rhs.0)
13584    }
13585}
13586impl core::ops::BitOrAssign for PastPresentationTimingFlagBitsEXT {
13587    #[inline]
13588    fn bitor_assign(&mut self, rhs: Self) {
13589        self.0 |= rhs.0;
13590    }
13591}
13592impl core::ops::BitAnd for PastPresentationTimingFlagBitsEXT {
13593    type Output = Self;
13594    #[inline]
13595    fn bitand(self, rhs: Self) -> Self {
13596        Self(self.0 & rhs.0)
13597    }
13598}
13599impl core::ops::BitAndAssign for PastPresentationTimingFlagBitsEXT {
13600    #[inline]
13601    fn bitand_assign(&mut self, rhs: Self) {
13602        self.0 &= rhs.0;
13603    }
13604}
13605impl core::ops::BitXor for PastPresentationTimingFlagBitsEXT {
13606    type Output = Self;
13607    #[inline]
13608    fn bitxor(self, rhs: Self) -> Self {
13609        Self(self.0 ^ rhs.0)
13610    }
13611}
13612impl core::ops::BitXorAssign for PastPresentationTimingFlagBitsEXT {
13613    #[inline]
13614    fn bitxor_assign(&mut self, rhs: Self) {
13615        self.0 ^= rhs.0;
13616    }
13617}
13618impl core::ops::Not for PastPresentationTimingFlagBitsEXT {
13619    type Output = Self;
13620    #[inline]
13621    fn not(self) -> Self {
13622        Self(!self.0)
13623    }
13624}
13625impl core::fmt::Debug for PastPresentationTimingFlagBitsEXT {
13626    #[allow(unused_mut, unused_variables)]
13627    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13628        let mut first = true;
13629        let mut remaining = self.0;
13630        if remaining & Self::ALLOW_PARTIAL_RESULTS.0 != 0 {
13631            if !first {
13632                f.write_str(" | ")?;
13633            }
13634            f.write_str("ALLOW_PARTIAL_RESULTS")?;
13635            remaining &= !Self::ALLOW_PARTIAL_RESULTS.0;
13636            first = false;
13637        }
13638        if remaining & Self::ALLOW_OUT_OF_ORDER_RESULTS.0 != 0 {
13639            if !first {
13640                f.write_str(" | ")?;
13641            }
13642            f.write_str("ALLOW_OUT_OF_ORDER_RESULTS")?;
13643            remaining &= !Self::ALLOW_OUT_OF_ORDER_RESULTS.0;
13644            first = false;
13645        }
13646        if remaining != 0u32 {
13647            if !first {
13648                f.write_str(" | ")?;
13649            }
13650            write!(f, "{:#x}", remaining)?;
13651        } else if first {
13652            f.write_str("(empty)")?;
13653        }
13654        Ok(())
13655    }
13656}
13657///[`VkPeerMemoryFeatureFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPeerMemoryFeatureFlagBits.html)
13658#[repr(transparent)]
13659#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13660#[doc(alias = "VkPeerMemoryFeatureFlagBits")]
13661pub struct PeerMemoryFeatureFlagBits(u32);
13662impl PeerMemoryFeatureFlagBits {
13663    #[inline]
13664    pub const fn empty() -> Self {
13665        Self(0u32)
13666    }
13667    #[inline]
13668    pub const fn from_raw(value: u32) -> Self {
13669        Self(value)
13670    }
13671    #[inline]
13672    pub const fn as_raw(self) -> u32 {
13673        self.0
13674    }
13675    #[inline]
13676    pub const fn is_empty(self) -> bool {
13677        self.0 == 0u32
13678    }
13679    #[inline]
13680    pub const fn contains(self, other: Self) -> bool {
13681        (self.0 & other.0) == other.0
13682    }
13683    #[inline]
13684    pub const fn all() -> Self {
13685        Self(15u32)
13686    }
13687    ///Bit 0.
13688    pub const COPY_SRC: Self = Self(1u32);
13689    ///Bit 1.
13690    pub const COPY_DST: Self = Self(2u32);
13691    ///Bit 2.
13692    pub const GENERIC_SRC: Self = Self(4u32);
13693    ///Bit 3.
13694    pub const GENERIC_DST: Self = Self(8u32);
13695}
13696impl core::ops::BitOr for PeerMemoryFeatureFlagBits {
13697    type Output = Self;
13698    #[inline]
13699    fn bitor(self, rhs: Self) -> Self {
13700        Self(self.0 | rhs.0)
13701    }
13702}
13703impl core::ops::BitOrAssign for PeerMemoryFeatureFlagBits {
13704    #[inline]
13705    fn bitor_assign(&mut self, rhs: Self) {
13706        self.0 |= rhs.0;
13707    }
13708}
13709impl core::ops::BitAnd for PeerMemoryFeatureFlagBits {
13710    type Output = Self;
13711    #[inline]
13712    fn bitand(self, rhs: Self) -> Self {
13713        Self(self.0 & rhs.0)
13714    }
13715}
13716impl core::ops::BitAndAssign for PeerMemoryFeatureFlagBits {
13717    #[inline]
13718    fn bitand_assign(&mut self, rhs: Self) {
13719        self.0 &= rhs.0;
13720    }
13721}
13722impl core::ops::BitXor for PeerMemoryFeatureFlagBits {
13723    type Output = Self;
13724    #[inline]
13725    fn bitxor(self, rhs: Self) -> Self {
13726        Self(self.0 ^ rhs.0)
13727    }
13728}
13729impl core::ops::BitXorAssign for PeerMemoryFeatureFlagBits {
13730    #[inline]
13731    fn bitxor_assign(&mut self, rhs: Self) {
13732        self.0 ^= rhs.0;
13733    }
13734}
13735impl core::ops::Not for PeerMemoryFeatureFlagBits {
13736    type Output = Self;
13737    #[inline]
13738    fn not(self) -> Self {
13739        Self(!self.0)
13740    }
13741}
13742impl core::fmt::Debug for PeerMemoryFeatureFlagBits {
13743    #[allow(unused_mut, unused_variables)]
13744    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13745        let mut first = true;
13746        let mut remaining = self.0;
13747        if remaining & Self::COPY_SRC.0 != 0 {
13748            if !first {
13749                f.write_str(" | ")?;
13750            }
13751            f.write_str("COPY_SRC")?;
13752            remaining &= !Self::COPY_SRC.0;
13753            first = false;
13754        }
13755        if remaining & Self::COPY_DST.0 != 0 {
13756            if !first {
13757                f.write_str(" | ")?;
13758            }
13759            f.write_str("COPY_DST")?;
13760            remaining &= !Self::COPY_DST.0;
13761            first = false;
13762        }
13763        if remaining & Self::GENERIC_SRC.0 != 0 {
13764            if !first {
13765                f.write_str(" | ")?;
13766            }
13767            f.write_str("GENERIC_SRC")?;
13768            remaining &= !Self::GENERIC_SRC.0;
13769            first = false;
13770        }
13771        if remaining & Self::GENERIC_DST.0 != 0 {
13772            if !first {
13773                f.write_str(" | ")?;
13774            }
13775            f.write_str("GENERIC_DST")?;
13776            remaining &= !Self::GENERIC_DST.0;
13777            first = false;
13778        }
13779        if remaining != 0u32 {
13780            if !first {
13781                f.write_str(" | ")?;
13782            }
13783            write!(f, "{:#x}", remaining)?;
13784        } else if first {
13785            f.write_str("(empty)")?;
13786        }
13787        Ok(())
13788    }
13789}
13790///[`VkPerformanceCounterDescriptionFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionFlagBitsKHR.html)
13791#[repr(transparent)]
13792#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13793#[doc(alias = "VkPerformanceCounterDescriptionFlagBitsKHR")]
13794pub struct PerformanceCounterDescriptionFlagBitsKHR(u32);
13795impl PerformanceCounterDescriptionFlagBitsKHR {
13796    #[inline]
13797    pub const fn empty() -> Self {
13798        Self(0u32)
13799    }
13800    #[inline]
13801    pub const fn from_raw(value: u32) -> Self {
13802        Self(value)
13803    }
13804    #[inline]
13805    pub const fn as_raw(self) -> u32 {
13806        self.0
13807    }
13808    #[inline]
13809    pub const fn is_empty(self) -> bool {
13810        self.0 == 0u32
13811    }
13812    #[inline]
13813    pub const fn contains(self, other: Self) -> bool {
13814        (self.0 & other.0) == other.0
13815    }
13816    #[inline]
13817    pub const fn all() -> Self {
13818        Self(3u32)
13819    }
13820    ///Bit 0.
13821    pub const PERFORMANCE_IMPACTING: Self = Self(1u32);
13822    ///Bit 1.
13823    pub const CONCURRENTLY_IMPACTED: Self = Self(2u32);
13824}
13825impl core::ops::BitOr for PerformanceCounterDescriptionFlagBitsKHR {
13826    type Output = Self;
13827    #[inline]
13828    fn bitor(self, rhs: Self) -> Self {
13829        Self(self.0 | rhs.0)
13830    }
13831}
13832impl core::ops::BitOrAssign for PerformanceCounterDescriptionFlagBitsKHR {
13833    #[inline]
13834    fn bitor_assign(&mut self, rhs: Self) {
13835        self.0 |= rhs.0;
13836    }
13837}
13838impl core::ops::BitAnd for PerformanceCounterDescriptionFlagBitsKHR {
13839    type Output = Self;
13840    #[inline]
13841    fn bitand(self, rhs: Self) -> Self {
13842        Self(self.0 & rhs.0)
13843    }
13844}
13845impl core::ops::BitAndAssign for PerformanceCounterDescriptionFlagBitsKHR {
13846    #[inline]
13847    fn bitand_assign(&mut self, rhs: Self) {
13848        self.0 &= rhs.0;
13849    }
13850}
13851impl core::ops::BitXor for PerformanceCounterDescriptionFlagBitsKHR {
13852    type Output = Self;
13853    #[inline]
13854    fn bitxor(self, rhs: Self) -> Self {
13855        Self(self.0 ^ rhs.0)
13856    }
13857}
13858impl core::ops::BitXorAssign for PerformanceCounterDescriptionFlagBitsKHR {
13859    #[inline]
13860    fn bitxor_assign(&mut self, rhs: Self) {
13861        self.0 ^= rhs.0;
13862    }
13863}
13864impl core::ops::Not for PerformanceCounterDescriptionFlagBitsKHR {
13865    type Output = Self;
13866    #[inline]
13867    fn not(self) -> Self {
13868        Self(!self.0)
13869    }
13870}
13871impl core::fmt::Debug for PerformanceCounterDescriptionFlagBitsKHR {
13872    #[allow(unused_mut, unused_variables)]
13873    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13874        let mut first = true;
13875        let mut remaining = self.0;
13876        if remaining & Self::PERFORMANCE_IMPACTING.0 != 0 {
13877            if !first {
13878                f.write_str(" | ")?;
13879            }
13880            f.write_str("PERFORMANCE_IMPACTING")?;
13881            remaining &= !Self::PERFORMANCE_IMPACTING.0;
13882            first = false;
13883        }
13884        if remaining & Self::CONCURRENTLY_IMPACTED.0 != 0 {
13885            if !first {
13886                f.write_str(" | ")?;
13887            }
13888            f.write_str("CONCURRENTLY_IMPACTED")?;
13889            remaining &= !Self::CONCURRENTLY_IMPACTED.0;
13890            first = false;
13891        }
13892        if remaining != 0u32 {
13893            if !first {
13894                f.write_str(" | ")?;
13895            }
13896            write!(f, "{:#x}", remaining)?;
13897        } else if first {
13898            f.write_str("(empty)")?;
13899        }
13900        Ok(())
13901    }
13902}
13903///[`VkPhysicalDeviceSchedulingControlsFlagBitsARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFlagBitsARM.html)
13904#[repr(transparent)]
13905#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
13906#[doc(alias = "VkPhysicalDeviceSchedulingControlsFlagBitsARM")]
13907pub struct PhysicalDeviceSchedulingControlsFlagBitsARM(u64);
13908impl PhysicalDeviceSchedulingControlsFlagBitsARM {
13909    #[inline]
13910    pub const fn empty() -> Self {
13911        Self(0u64)
13912    }
13913    #[inline]
13914    pub const fn from_raw(value: u64) -> Self {
13915        Self(value)
13916    }
13917    #[inline]
13918    pub const fn as_raw(self) -> u64 {
13919        self.0
13920    }
13921    #[inline]
13922    pub const fn is_empty(self) -> bool {
13923        self.0 == 0u64
13924    }
13925    #[inline]
13926    pub const fn contains(self, other: Self) -> bool {
13927        (self.0 & other.0) == other.0
13928    }
13929    #[inline]
13930    pub const fn all() -> Self {
13931        Self(1u64)
13932    }
13933    ///Bit 0.
13934    pub const SHADER_CORE_COUNT: Self = Self(1u64);
13935}
13936impl core::ops::BitOr for PhysicalDeviceSchedulingControlsFlagBitsARM {
13937    type Output = Self;
13938    #[inline]
13939    fn bitor(self, rhs: Self) -> Self {
13940        Self(self.0 | rhs.0)
13941    }
13942}
13943impl core::ops::BitOrAssign for PhysicalDeviceSchedulingControlsFlagBitsARM {
13944    #[inline]
13945    fn bitor_assign(&mut self, rhs: Self) {
13946        self.0 |= rhs.0;
13947    }
13948}
13949impl core::ops::BitAnd for PhysicalDeviceSchedulingControlsFlagBitsARM {
13950    type Output = Self;
13951    #[inline]
13952    fn bitand(self, rhs: Self) -> Self {
13953        Self(self.0 & rhs.0)
13954    }
13955}
13956impl core::ops::BitAndAssign for PhysicalDeviceSchedulingControlsFlagBitsARM {
13957    #[inline]
13958    fn bitand_assign(&mut self, rhs: Self) {
13959        self.0 &= rhs.0;
13960    }
13961}
13962impl core::ops::BitXor for PhysicalDeviceSchedulingControlsFlagBitsARM {
13963    type Output = Self;
13964    #[inline]
13965    fn bitxor(self, rhs: Self) -> Self {
13966        Self(self.0 ^ rhs.0)
13967    }
13968}
13969impl core::ops::BitXorAssign for PhysicalDeviceSchedulingControlsFlagBitsARM {
13970    #[inline]
13971    fn bitxor_assign(&mut self, rhs: Self) {
13972        self.0 ^= rhs.0;
13973    }
13974}
13975impl core::ops::Not for PhysicalDeviceSchedulingControlsFlagBitsARM {
13976    type Output = Self;
13977    #[inline]
13978    fn not(self) -> Self {
13979        Self(!self.0)
13980    }
13981}
13982impl core::fmt::Debug for PhysicalDeviceSchedulingControlsFlagBitsARM {
13983    #[allow(unused_mut, unused_variables)]
13984    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13985        let mut first = true;
13986        let mut remaining = self.0;
13987        if remaining & Self::SHADER_CORE_COUNT.0 != 0 {
13988            if !first {
13989                f.write_str(" | ")?;
13990            }
13991            f.write_str("SHADER_CORE_COUNT")?;
13992            remaining &= !Self::SHADER_CORE_COUNT.0;
13993            first = false;
13994        }
13995        if remaining != 0u64 {
13996            if !first {
13997                f.write_str(" | ")?;
13998            }
13999            write!(f, "{:#x}", remaining)?;
14000        } else if first {
14001            f.write_str("(empty)")?;
14002        }
14003        Ok(())
14004    }
14005}
14006///[`VkPipelineCacheCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheCreateFlagBits.html)
14007#[repr(transparent)]
14008#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
14009#[doc(alias = "VkPipelineCacheCreateFlagBits")]
14010pub struct PipelineCacheCreateFlagBits(u32);
14011impl PipelineCacheCreateFlagBits {
14012    #[inline]
14013    pub const fn empty() -> Self {
14014        Self(0u32)
14015    }
14016    #[inline]
14017    pub const fn from_raw(value: u32) -> Self {
14018        Self(value)
14019    }
14020    #[inline]
14021    pub const fn as_raw(self) -> u32 {
14022        self.0
14023    }
14024    #[inline]
14025    pub const fn is_empty(self) -> bool {
14026        self.0 == 0u32
14027    }
14028    #[inline]
14029    pub const fn contains(self, other: Self) -> bool {
14030        (self.0 & other.0) == other.0
14031    }
14032    #[inline]
14033    pub const fn all() -> Self {
14034        Self(15u32)
14035    }
14036    ///Bit 0.
14037    pub const EXTERNALLY_SYNCHRONIZED: Self = Self(1u32);
14038    ///Bit 1.
14039    pub const READ_ONLY: Self = Self(2u32);
14040    ///Bit 2.
14041    pub const USE_APPLICATION_STORAGE: Self = Self(4u32);
14042    ///Bit 3.
14043    pub const INTERNALLY_SYNCHRONIZED_MERGE: Self = Self(8u32);
14044}
14045impl core::ops::BitOr for PipelineCacheCreateFlagBits {
14046    type Output = Self;
14047    #[inline]
14048    fn bitor(self, rhs: Self) -> Self {
14049        Self(self.0 | rhs.0)
14050    }
14051}
14052impl core::ops::BitOrAssign for PipelineCacheCreateFlagBits {
14053    #[inline]
14054    fn bitor_assign(&mut self, rhs: Self) {
14055        self.0 |= rhs.0;
14056    }
14057}
14058impl core::ops::BitAnd for PipelineCacheCreateFlagBits {
14059    type Output = Self;
14060    #[inline]
14061    fn bitand(self, rhs: Self) -> Self {
14062        Self(self.0 & rhs.0)
14063    }
14064}
14065impl core::ops::BitAndAssign for PipelineCacheCreateFlagBits {
14066    #[inline]
14067    fn bitand_assign(&mut self, rhs: Self) {
14068        self.0 &= rhs.0;
14069    }
14070}
14071impl core::ops::BitXor for PipelineCacheCreateFlagBits {
14072    type Output = Self;
14073    #[inline]
14074    fn bitxor(self, rhs: Self) -> Self {
14075        Self(self.0 ^ rhs.0)
14076    }
14077}
14078impl core::ops::BitXorAssign for PipelineCacheCreateFlagBits {
14079    #[inline]
14080    fn bitxor_assign(&mut self, rhs: Self) {
14081        self.0 ^= rhs.0;
14082    }
14083}
14084impl core::ops::Not for PipelineCacheCreateFlagBits {
14085    type Output = Self;
14086    #[inline]
14087    fn not(self) -> Self {
14088        Self(!self.0)
14089    }
14090}
14091impl core::fmt::Debug for PipelineCacheCreateFlagBits {
14092    #[allow(unused_mut, unused_variables)]
14093    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14094        let mut first = true;
14095        let mut remaining = self.0;
14096        if remaining & Self::EXTERNALLY_SYNCHRONIZED.0 != 0 {
14097            if !first {
14098                f.write_str(" | ")?;
14099            }
14100            f.write_str("EXTERNALLY_SYNCHRONIZED")?;
14101            remaining &= !Self::EXTERNALLY_SYNCHRONIZED.0;
14102            first = false;
14103        }
14104        if remaining & Self::READ_ONLY.0 != 0 {
14105            if !first {
14106                f.write_str(" | ")?;
14107            }
14108            f.write_str("READ_ONLY")?;
14109            remaining &= !Self::READ_ONLY.0;
14110            first = false;
14111        }
14112        if remaining & Self::USE_APPLICATION_STORAGE.0 != 0 {
14113            if !first {
14114                f.write_str(" | ")?;
14115            }
14116            f.write_str("USE_APPLICATION_STORAGE")?;
14117            remaining &= !Self::USE_APPLICATION_STORAGE.0;
14118            first = false;
14119        }
14120        if remaining & Self::INTERNALLY_SYNCHRONIZED_MERGE.0 != 0 {
14121            if !first {
14122                f.write_str(" | ")?;
14123            }
14124            f.write_str("INTERNALLY_SYNCHRONIZED_MERGE")?;
14125            remaining &= !Self::INTERNALLY_SYNCHRONIZED_MERGE.0;
14126            first = false;
14127        }
14128        if remaining != 0u32 {
14129            if !first {
14130                f.write_str(" | ")?;
14131            }
14132            write!(f, "{:#x}", remaining)?;
14133        } else if first {
14134            f.write_str("(empty)")?;
14135        }
14136        Ok(())
14137    }
14138}
14139///[`VkPipelineColorBlendStateCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateFlagBits.html)
14140#[repr(transparent)]
14141#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
14142#[doc(alias = "VkPipelineColorBlendStateCreateFlagBits")]
14143pub struct PipelineColorBlendStateCreateFlagBits(u32);
14144impl PipelineColorBlendStateCreateFlagBits {
14145    #[inline]
14146    pub const fn empty() -> Self {
14147        Self(0u32)
14148    }
14149    #[inline]
14150    pub const fn from_raw(value: u32) -> Self {
14151        Self(value)
14152    }
14153    #[inline]
14154    pub const fn as_raw(self) -> u32 {
14155        self.0
14156    }
14157    #[inline]
14158    pub const fn is_empty(self) -> bool {
14159        self.0 == 0u32
14160    }
14161    #[inline]
14162    pub const fn contains(self, other: Self) -> bool {
14163        (self.0 & other.0) == other.0
14164    }
14165    #[inline]
14166    pub const fn all() -> Self {
14167        Self(1u32)
14168    }
14169    pub const RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT: Self = Self::RASTERIZATION_ORDER_ATTACHMENT_ACCESS;
14170    ///Bit 0.
14171    pub const RASTERIZATION_ORDER_ATTACHMENT_ACCESS: Self = Self(1u32);
14172}
14173impl core::ops::BitOr for PipelineColorBlendStateCreateFlagBits {
14174    type Output = Self;
14175    #[inline]
14176    fn bitor(self, rhs: Self) -> Self {
14177        Self(self.0 | rhs.0)
14178    }
14179}
14180impl core::ops::BitOrAssign for PipelineColorBlendStateCreateFlagBits {
14181    #[inline]
14182    fn bitor_assign(&mut self, rhs: Self) {
14183        self.0 |= rhs.0;
14184    }
14185}
14186impl core::ops::BitAnd for PipelineColorBlendStateCreateFlagBits {
14187    type Output = Self;
14188    #[inline]
14189    fn bitand(self, rhs: Self) -> Self {
14190        Self(self.0 & rhs.0)
14191    }
14192}
14193impl core::ops::BitAndAssign for PipelineColorBlendStateCreateFlagBits {
14194    #[inline]
14195    fn bitand_assign(&mut self, rhs: Self) {
14196        self.0 &= rhs.0;
14197    }
14198}
14199impl core::ops::BitXor for PipelineColorBlendStateCreateFlagBits {
14200    type Output = Self;
14201    #[inline]
14202    fn bitxor(self, rhs: Self) -> Self {
14203        Self(self.0 ^ rhs.0)
14204    }
14205}
14206impl core::ops::BitXorAssign for PipelineColorBlendStateCreateFlagBits {
14207    #[inline]
14208    fn bitxor_assign(&mut self, rhs: Self) {
14209        self.0 ^= rhs.0;
14210    }
14211}
14212impl core::ops::Not for PipelineColorBlendStateCreateFlagBits {
14213    type Output = Self;
14214    #[inline]
14215    fn not(self) -> Self {
14216        Self(!self.0)
14217    }
14218}
14219impl core::fmt::Debug for PipelineColorBlendStateCreateFlagBits {
14220    #[allow(unused_mut, unused_variables)]
14221    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14222        let mut first = true;
14223        let mut remaining = self.0;
14224        if remaining & Self::RASTERIZATION_ORDER_ATTACHMENT_ACCESS.0 != 0 {
14225            if !first {
14226                f.write_str(" | ")?;
14227            }
14228            f.write_str("RASTERIZATION_ORDER_ATTACHMENT_ACCESS")?;
14229            remaining &= !Self::RASTERIZATION_ORDER_ATTACHMENT_ACCESS.0;
14230            first = false;
14231        }
14232        if remaining != 0u32 {
14233            if !first {
14234                f.write_str(" | ")?;
14235            }
14236            write!(f, "{:#x}", remaining)?;
14237        } else if first {
14238            f.write_str("(empty)")?;
14239        }
14240        Ok(())
14241    }
14242}
14243///[`VkPipelineCompilerControlFlagBitsAMD`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCompilerControlFlagBitsAMD.html)
14244#[repr(transparent)]
14245#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
14246#[doc(alias = "VkPipelineCompilerControlFlagBitsAMD")]
14247pub struct PipelineCompilerControlFlagBitsAMD(u32);
14248impl PipelineCompilerControlFlagBitsAMD {
14249    #[inline]
14250    pub const fn empty() -> Self {
14251        Self(0u32)
14252    }
14253    #[inline]
14254    pub const fn from_raw(value: u32) -> Self {
14255        Self(value)
14256    }
14257    #[inline]
14258    pub const fn as_raw(self) -> u32 {
14259        self.0
14260    }
14261    #[inline]
14262    pub const fn is_empty(self) -> bool {
14263        self.0 == 0u32
14264    }
14265    #[inline]
14266    pub const fn contains(self, other: Self) -> bool {
14267        (self.0 & other.0) == other.0
14268    }
14269    #[inline]
14270    pub const fn all() -> Self {
14271        Self(0u32)
14272    }
14273}
14274impl core::ops::BitOr for PipelineCompilerControlFlagBitsAMD {
14275    type Output = Self;
14276    #[inline]
14277    fn bitor(self, rhs: Self) -> Self {
14278        Self(self.0 | rhs.0)
14279    }
14280}
14281impl core::ops::BitOrAssign for PipelineCompilerControlFlagBitsAMD {
14282    #[inline]
14283    fn bitor_assign(&mut self, rhs: Self) {
14284        self.0 |= rhs.0;
14285    }
14286}
14287impl core::ops::BitAnd for PipelineCompilerControlFlagBitsAMD {
14288    type Output = Self;
14289    #[inline]
14290    fn bitand(self, rhs: Self) -> Self {
14291        Self(self.0 & rhs.0)
14292    }
14293}
14294impl core::ops::BitAndAssign for PipelineCompilerControlFlagBitsAMD {
14295    #[inline]
14296    fn bitand_assign(&mut self, rhs: Self) {
14297        self.0 &= rhs.0;
14298    }
14299}
14300impl core::ops::BitXor for PipelineCompilerControlFlagBitsAMD {
14301    type Output = Self;
14302    #[inline]
14303    fn bitxor(self, rhs: Self) -> Self {
14304        Self(self.0 ^ rhs.0)
14305    }
14306}
14307impl core::ops::BitXorAssign for PipelineCompilerControlFlagBitsAMD {
14308    #[inline]
14309    fn bitxor_assign(&mut self, rhs: Self) {
14310        self.0 ^= rhs.0;
14311    }
14312}
14313impl core::ops::Not for PipelineCompilerControlFlagBitsAMD {
14314    type Output = Self;
14315    #[inline]
14316    fn not(self) -> Self {
14317        Self(!self.0)
14318    }
14319}
14320impl core::fmt::Debug for PipelineCompilerControlFlagBitsAMD {
14321    #[allow(unused_mut, unused_variables)]
14322    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14323        let mut first = true;
14324        let mut remaining = self.0;
14325        if remaining != 0u32 {
14326            if !first {
14327                f.write_str(" | ")?;
14328            }
14329            write!(f, "{:#x}", remaining)?;
14330        } else if first {
14331            f.write_str("(empty)")?;
14332        }
14333        Ok(())
14334    }
14335}
14336///[`VkPipelineCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlagBits.html)
14337#[repr(transparent)]
14338#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
14339#[doc(alias = "VkPipelineCreateFlagBits")]
14340pub struct PipelineCreateFlagBits(u32);
14341impl PipelineCreateFlagBits {
14342    #[inline]
14343    pub const fn empty() -> Self {
14344        Self(0u32)
14345    }
14346    #[inline]
14347    pub const fn from_raw(value: u32) -> Self {
14348        Self(value)
14349    }
14350    #[inline]
14351    pub const fn as_raw(self) -> u32 {
14352        self.0
14353    }
14354    #[inline]
14355    pub const fn is_empty(self) -> bool {
14356        self.0 == 0u32
14357    }
14358    #[inline]
14359    pub const fn contains(self, other: Self) -> bool {
14360        (self.0 & other.0) == other.0
14361    }
14362    #[inline]
14363    pub const fn all() -> Self {
14364        Self(2147483647u32)
14365    }
14366    ///Bit 0.
14367    pub const DISABLE_OPTIMIZATION: Self = Self(1u32);
14368    ///Bit 1.
14369    pub const ALLOW_DERIVATIVES: Self = Self(2u32);
14370    ///Bit 2.
14371    pub const DERIVATIVE: Self = Self(4u32);
14372    ///Bit 4.
14373    pub const DISPATCH_BASE: Self = Self(16u32);
14374    ///Bit 3.
14375    pub const VIEW_INDEX_FROM_DEVICE_INDEX: Self = Self(8u32);
14376    ///Bit 8.
14377    pub const FAIL_ON_PIPELINE_COMPILE_REQUIRED: Self = Self(256u32);
14378    ///Bit 9.
14379    pub const EARLY_RETURN_ON_FAILURE: Self = Self(512u32);
14380    ///Bit 27.
14381    pub const NO_PROTECTED_ACCESS: Self = Self(134217728u32);
14382    ///Bit 30.
14383    pub const PROTECTED_ACCESS_ONLY: Self = Self(1073741824u32);
14384    ///Bit 14.
14385    pub const RAY_TRACING_NO_NULL_ANY_HIT_SHADERS: Self = Self(16384u32);
14386    ///Bit 15.
14387    pub const RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS: Self = Self(32768u32);
14388    ///Bit 16.
14389    pub const RAY_TRACING_NO_NULL_MISS_SHADERS: Self = Self(65536u32);
14390    ///Bit 17.
14391    pub const RAY_TRACING_NO_NULL_INTERSECTION_SHADERS: Self = Self(131072u32);
14392    ///Bit 12.
14393    pub const RAY_TRACING_SKIP_TRIANGLES: Self = Self(4096u32);
14394    ///Bit 13.
14395    pub const RAY_TRACING_SKIP_AABBS: Self = Self(8192u32);
14396    ///Bit 19.
14397    pub const RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY: Self = Self(524288u32);
14398    ///Bit 5.
14399    pub const DEFER_COMPILE: Self = Self(32u32);
14400    ///Bit 22.
14401    pub const RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT: Self = Self(4194304u32);
14402    pub const PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT: Self = Self::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT;
14403    ///Bit 21.
14404    pub const RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(2097152u32);
14405    pub const PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT;
14406    ///Bit 6.
14407    pub const CAPTURE_STATISTICS: Self = Self(64u32);
14408    ///Bit 7.
14409    pub const CAPTURE_INTERNAL_REPRESENTATIONS: Self = Self(128u32);
14410    ///Bit 18.
14411    pub const INDIRECT_BINDABLE: Self = Self(262144u32);
14412    ///Bit 11.
14413    pub const LIBRARY: Self = Self(2048u32);
14414    ///Bit 29.
14415    pub const DESCRIPTOR_BUFFER: Self = Self(536870912u32);
14416    ///Bit 23.
14417    pub const RETAIN_LINK_TIME_OPTIMIZATION_INFO: Self = Self(8388608u32);
14418    ///Bit 10.
14419    pub const LINK_TIME_OPTIMIZATION: Self = Self(1024u32);
14420    ///Bit 20.
14421    pub const RAY_TRACING_ALLOW_MOTION: Self = Self(1048576u32);
14422    ///Bit 25.
14423    pub const COLOR_ATTACHMENT_FEEDBACK_LOOP: Self = Self(33554432u32);
14424    ///Bit 26.
14425    pub const DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP: Self = Self(67108864u32);
14426    ///Bit 24.
14427    pub const RAY_TRACING_OPACITY_MICROMAP: Self = Self(16777216u32);
14428    ///Bit 28.
14429    pub const RAY_TRACING_DISPLACEMENT_MICROMAP: Self = Self(268435456u32);
14430}
14431impl core::ops::BitOr for PipelineCreateFlagBits {
14432    type Output = Self;
14433    #[inline]
14434    fn bitor(self, rhs: Self) -> Self {
14435        Self(self.0 | rhs.0)
14436    }
14437}
14438impl core::ops::BitOrAssign for PipelineCreateFlagBits {
14439    #[inline]
14440    fn bitor_assign(&mut self, rhs: Self) {
14441        self.0 |= rhs.0;
14442    }
14443}
14444impl core::ops::BitAnd for PipelineCreateFlagBits {
14445    type Output = Self;
14446    #[inline]
14447    fn bitand(self, rhs: Self) -> Self {
14448        Self(self.0 & rhs.0)
14449    }
14450}
14451impl core::ops::BitAndAssign for PipelineCreateFlagBits {
14452    #[inline]
14453    fn bitand_assign(&mut self, rhs: Self) {
14454        self.0 &= rhs.0;
14455    }
14456}
14457impl core::ops::BitXor for PipelineCreateFlagBits {
14458    type Output = Self;
14459    #[inline]
14460    fn bitxor(self, rhs: Self) -> Self {
14461        Self(self.0 ^ rhs.0)
14462    }
14463}
14464impl core::ops::BitXorAssign for PipelineCreateFlagBits {
14465    #[inline]
14466    fn bitxor_assign(&mut self, rhs: Self) {
14467        self.0 ^= rhs.0;
14468    }
14469}
14470impl core::ops::Not for PipelineCreateFlagBits {
14471    type Output = Self;
14472    #[inline]
14473    fn not(self) -> Self {
14474        Self(!self.0)
14475    }
14476}
14477impl core::fmt::Debug for PipelineCreateFlagBits {
14478    #[allow(unused_mut, unused_variables)]
14479    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14480        let mut first = true;
14481        let mut remaining = self.0;
14482        if remaining & Self::DISABLE_OPTIMIZATION.0 != 0 {
14483            if !first {
14484                f.write_str(" | ")?;
14485            }
14486            f.write_str("DISABLE_OPTIMIZATION")?;
14487            remaining &= !Self::DISABLE_OPTIMIZATION.0;
14488            first = false;
14489        }
14490        if remaining & Self::ALLOW_DERIVATIVES.0 != 0 {
14491            if !first {
14492                f.write_str(" | ")?;
14493            }
14494            f.write_str("ALLOW_DERIVATIVES")?;
14495            remaining &= !Self::ALLOW_DERIVATIVES.0;
14496            first = false;
14497        }
14498        if remaining & Self::DERIVATIVE.0 != 0 {
14499            if !first {
14500                f.write_str(" | ")?;
14501            }
14502            f.write_str("DERIVATIVE")?;
14503            remaining &= !Self::DERIVATIVE.0;
14504            first = false;
14505        }
14506        if remaining & Self::DISPATCH_BASE.0 != 0 {
14507            if !first {
14508                f.write_str(" | ")?;
14509            }
14510            f.write_str("DISPATCH_BASE")?;
14511            remaining &= !Self::DISPATCH_BASE.0;
14512            first = false;
14513        }
14514        if remaining & Self::VIEW_INDEX_FROM_DEVICE_INDEX.0 != 0 {
14515            if !first {
14516                f.write_str(" | ")?;
14517            }
14518            f.write_str("VIEW_INDEX_FROM_DEVICE_INDEX")?;
14519            remaining &= !Self::VIEW_INDEX_FROM_DEVICE_INDEX.0;
14520            first = false;
14521        }
14522        if remaining & Self::FAIL_ON_PIPELINE_COMPILE_REQUIRED.0 != 0 {
14523            if !first {
14524                f.write_str(" | ")?;
14525            }
14526            f.write_str("FAIL_ON_PIPELINE_COMPILE_REQUIRED")?;
14527            remaining &= !Self::FAIL_ON_PIPELINE_COMPILE_REQUIRED.0;
14528            first = false;
14529        }
14530        if remaining & Self::EARLY_RETURN_ON_FAILURE.0 != 0 {
14531            if !first {
14532                f.write_str(" | ")?;
14533            }
14534            f.write_str("EARLY_RETURN_ON_FAILURE")?;
14535            remaining &= !Self::EARLY_RETURN_ON_FAILURE.0;
14536            first = false;
14537        }
14538        if remaining & Self::NO_PROTECTED_ACCESS.0 != 0 {
14539            if !first {
14540                f.write_str(" | ")?;
14541            }
14542            f.write_str("NO_PROTECTED_ACCESS")?;
14543            remaining &= !Self::NO_PROTECTED_ACCESS.0;
14544            first = false;
14545        }
14546        if remaining & Self::PROTECTED_ACCESS_ONLY.0 != 0 {
14547            if !first {
14548                f.write_str(" | ")?;
14549            }
14550            f.write_str("PROTECTED_ACCESS_ONLY")?;
14551            remaining &= !Self::PROTECTED_ACCESS_ONLY.0;
14552            first = false;
14553        }
14554        if remaining & Self::RAY_TRACING_NO_NULL_ANY_HIT_SHADERS.0 != 0 {
14555            if !first {
14556                f.write_str(" | ")?;
14557            }
14558            f.write_str("RAY_TRACING_NO_NULL_ANY_HIT_SHADERS")?;
14559            remaining &= !Self::RAY_TRACING_NO_NULL_ANY_HIT_SHADERS.0;
14560            first = false;
14561        }
14562        if remaining & Self::RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS.0 != 0 {
14563            if !first {
14564                f.write_str(" | ")?;
14565            }
14566            f.write_str("RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS")?;
14567            remaining &= !Self::RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS.0;
14568            first = false;
14569        }
14570        if remaining & Self::RAY_TRACING_NO_NULL_MISS_SHADERS.0 != 0 {
14571            if !first {
14572                f.write_str(" | ")?;
14573            }
14574            f.write_str("RAY_TRACING_NO_NULL_MISS_SHADERS")?;
14575            remaining &= !Self::RAY_TRACING_NO_NULL_MISS_SHADERS.0;
14576            first = false;
14577        }
14578        if remaining & Self::RAY_TRACING_NO_NULL_INTERSECTION_SHADERS.0 != 0 {
14579            if !first {
14580                f.write_str(" | ")?;
14581            }
14582            f.write_str("RAY_TRACING_NO_NULL_INTERSECTION_SHADERS")?;
14583            remaining &= !Self::RAY_TRACING_NO_NULL_INTERSECTION_SHADERS.0;
14584            first = false;
14585        }
14586        if remaining & Self::RAY_TRACING_SKIP_TRIANGLES.0 != 0 {
14587            if !first {
14588                f.write_str(" | ")?;
14589            }
14590            f.write_str("RAY_TRACING_SKIP_TRIANGLES")?;
14591            remaining &= !Self::RAY_TRACING_SKIP_TRIANGLES.0;
14592            first = false;
14593        }
14594        if remaining & Self::RAY_TRACING_SKIP_AABBS.0 != 0 {
14595            if !first {
14596                f.write_str(" | ")?;
14597            }
14598            f.write_str("RAY_TRACING_SKIP_AABBS")?;
14599            remaining &= !Self::RAY_TRACING_SKIP_AABBS.0;
14600            first = false;
14601        }
14602        if remaining & Self::RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY.0 != 0 {
14603            if !first {
14604                f.write_str(" | ")?;
14605            }
14606            f.write_str("RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY")?;
14607            remaining &= !Self::RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY.0;
14608            first = false;
14609        }
14610        if remaining & Self::DEFER_COMPILE.0 != 0 {
14611            if !first {
14612                f.write_str(" | ")?;
14613            }
14614            f.write_str("DEFER_COMPILE")?;
14615            remaining &= !Self::DEFER_COMPILE.0;
14616            first = false;
14617        }
14618        if remaining & Self::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT.0 != 0 {
14619            if !first {
14620                f.write_str(" | ")?;
14621            }
14622            f.write_str("RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT")?;
14623            remaining &= !Self::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT.0;
14624            first = false;
14625        }
14626        if remaining & Self::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
14627            if !first {
14628                f.write_str(" | ")?;
14629            }
14630            f.write_str("RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT")?;
14631            remaining &= !Self::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT.0;
14632            first = false;
14633        }
14634        if remaining & Self::CAPTURE_STATISTICS.0 != 0 {
14635            if !first {
14636                f.write_str(" | ")?;
14637            }
14638            f.write_str("CAPTURE_STATISTICS")?;
14639            remaining &= !Self::CAPTURE_STATISTICS.0;
14640            first = false;
14641        }
14642        if remaining & Self::CAPTURE_INTERNAL_REPRESENTATIONS.0 != 0 {
14643            if !first {
14644                f.write_str(" | ")?;
14645            }
14646            f.write_str("CAPTURE_INTERNAL_REPRESENTATIONS")?;
14647            remaining &= !Self::CAPTURE_INTERNAL_REPRESENTATIONS.0;
14648            first = false;
14649        }
14650        if remaining & Self::INDIRECT_BINDABLE.0 != 0 {
14651            if !first {
14652                f.write_str(" | ")?;
14653            }
14654            f.write_str("INDIRECT_BINDABLE")?;
14655            remaining &= !Self::INDIRECT_BINDABLE.0;
14656            first = false;
14657        }
14658        if remaining & Self::LIBRARY.0 != 0 {
14659            if !first {
14660                f.write_str(" | ")?;
14661            }
14662            f.write_str("LIBRARY")?;
14663            remaining &= !Self::LIBRARY.0;
14664            first = false;
14665        }
14666        if remaining & Self::DESCRIPTOR_BUFFER.0 != 0 {
14667            if !first {
14668                f.write_str(" | ")?;
14669            }
14670            f.write_str("DESCRIPTOR_BUFFER")?;
14671            remaining &= !Self::DESCRIPTOR_BUFFER.0;
14672            first = false;
14673        }
14674        if remaining & Self::RETAIN_LINK_TIME_OPTIMIZATION_INFO.0 != 0 {
14675            if !first {
14676                f.write_str(" | ")?;
14677            }
14678            f.write_str("RETAIN_LINK_TIME_OPTIMIZATION_INFO")?;
14679            remaining &= !Self::RETAIN_LINK_TIME_OPTIMIZATION_INFO.0;
14680            first = false;
14681        }
14682        if remaining & Self::LINK_TIME_OPTIMIZATION.0 != 0 {
14683            if !first {
14684                f.write_str(" | ")?;
14685            }
14686            f.write_str("LINK_TIME_OPTIMIZATION")?;
14687            remaining &= !Self::LINK_TIME_OPTIMIZATION.0;
14688            first = false;
14689        }
14690        if remaining & Self::RAY_TRACING_ALLOW_MOTION.0 != 0 {
14691            if !first {
14692                f.write_str(" | ")?;
14693            }
14694            f.write_str("RAY_TRACING_ALLOW_MOTION")?;
14695            remaining &= !Self::RAY_TRACING_ALLOW_MOTION.0;
14696            first = false;
14697        }
14698        if remaining & Self::COLOR_ATTACHMENT_FEEDBACK_LOOP.0 != 0 {
14699            if !first {
14700                f.write_str(" | ")?;
14701            }
14702            f.write_str("COLOR_ATTACHMENT_FEEDBACK_LOOP")?;
14703            remaining &= !Self::COLOR_ATTACHMENT_FEEDBACK_LOOP.0;
14704            first = false;
14705        }
14706        if remaining & Self::DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP.0 != 0 {
14707            if !first {
14708                f.write_str(" | ")?;
14709            }
14710            f.write_str("DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP")?;
14711            remaining &= !Self::DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP.0;
14712            first = false;
14713        }
14714        if remaining & Self::RAY_TRACING_OPACITY_MICROMAP.0 != 0 {
14715            if !first {
14716                f.write_str(" | ")?;
14717            }
14718            f.write_str("RAY_TRACING_OPACITY_MICROMAP")?;
14719            remaining &= !Self::RAY_TRACING_OPACITY_MICROMAP.0;
14720            first = false;
14721        }
14722        if remaining & Self::RAY_TRACING_DISPLACEMENT_MICROMAP.0 != 0 {
14723            if !first {
14724                f.write_str(" | ")?;
14725            }
14726            f.write_str("RAY_TRACING_DISPLACEMENT_MICROMAP")?;
14727            remaining &= !Self::RAY_TRACING_DISPLACEMENT_MICROMAP.0;
14728            first = false;
14729        }
14730        if remaining != 0u32 {
14731            if !first {
14732                f.write_str(" | ")?;
14733            }
14734            write!(f, "{:#x}", remaining)?;
14735        } else if first {
14736            f.write_str("(empty)")?;
14737        }
14738        Ok(())
14739    }
14740}
14741///[`VkPipelineCreateFlagBits2`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlagBits2.html)
14742#[repr(transparent)]
14743#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
14744#[doc(alias = "VkPipelineCreateFlagBits2")]
14745pub struct PipelineCreateFlagBits2(u64);
14746impl PipelineCreateFlagBits2 {
14747    #[inline]
14748    pub const fn empty() -> Self {
14749        Self(0u64)
14750    }
14751    #[inline]
14752    pub const fn from_raw(value: u64) -> Self {
14753        Self(value)
14754    }
14755    #[inline]
14756    pub const fn as_raw(self) -> u64 {
14757        self.0
14758    }
14759    #[inline]
14760    pub const fn is_empty(self) -> bool {
14761        self.0 == 0u64
14762    }
14763    #[inline]
14764    pub const fn contains(self, other: Self) -> bool {
14765        (self.0 & other.0) == other.0
14766    }
14767    #[inline]
14768    pub const fn all() -> Self {
14769        Self(10685878632447u64)
14770    }
14771    ///Bit 0.
14772    pub const _2_DISABLE_OPTIMIZATION: Self = Self(1u64);
14773    ///Bit 1.
14774    pub const _2_ALLOW_DERIVATIVES: Self = Self(2u64);
14775    ///Bit 2.
14776    pub const _2_DERIVATIVE: Self = Self(4u64);
14777    ///Bit 3.
14778    pub const _2_VIEW_INDEX_FROM_DEVICE_INDEX: Self = Self(8u64);
14779    ///Bit 4.
14780    pub const _2_DISPATCH_BASE: Self = Self(16u64);
14781    ///Bit 8.
14782    pub const _2_FAIL_ON_PIPELINE_COMPILE_REQUIRED: Self = Self(256u64);
14783    ///Bit 9.
14784    pub const _2_EARLY_RETURN_ON_FAILURE: Self = Self(512u64);
14785    ///Bit 27.
14786    pub const _2_NO_PROTECTED_ACCESS: Self = Self(134217728u64);
14787    ///Bit 30.
14788    pub const _2_PROTECTED_ACCESS_ONLY: Self = Self(1073741824u64);
14789    ///Bit 32.
14790    pub const _2_EXECUTION_GRAPH_BIT: Self = Self(4294967296u64);
14791    ///Bit 36.
14792    pub const _2_DESCRIPTOR_HEAP: Self = Self(68719476736u64);
14793    pub const _2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES: Self = Self::_2_RAY_TRACING_SKIP_TRIANGLES;
14794    ///Bit 33.
14795    pub const _2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES: Self = Self(
14796        8589934592u64,
14797    );
14798    ///Bit 34.
14799    pub const _2_ENABLE_LEGACY_DITHERING: Self = Self(17179869184u64);
14800    ///Bit 5.
14801    pub const _2_DEFER_COMPILE: Self = Self(32u64);
14802    ///Bit 6.
14803    pub const _2_CAPTURE_STATISTICS: Self = Self(64u64);
14804    ///Bit 7.
14805    pub const _2_CAPTURE_INTERNAL_REPRESENTATIONS: Self = Self(128u64);
14806    ///Bit 10.
14807    pub const _2_LINK_TIME_OPTIMIZATION: Self = Self(1024u64);
14808    ///Bit 23.
14809    pub const _2_RETAIN_LINK_TIME_OPTIMIZATION_INFO: Self = Self(8388608u64);
14810    ///Bit 11.
14811    pub const _2_LIBRARY: Self = Self(2048u64);
14812    ///Bit 12.
14813    pub const _2_RAY_TRACING_SKIP_TRIANGLES: Self = Self(4096u64);
14814    ///Bit 13.
14815    pub const _2_RAY_TRACING_SKIP_AABBS: Self = Self(8192u64);
14816    ///Bit 14.
14817    pub const _2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS: Self = Self(16384u64);
14818    ///Bit 15.
14819    pub const _2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS: Self = Self(32768u64);
14820    ///Bit 16.
14821    pub const _2_RAY_TRACING_NO_NULL_MISS_SHADERS: Self = Self(65536u64);
14822    ///Bit 17.
14823    pub const _2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS: Self = Self(131072u64);
14824    ///Bit 19.
14825    pub const _2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY: Self = Self(524288u64);
14826    ///Bit 18.
14827    pub const _2_INDIRECT_BINDABLE: Self = Self(262144u64);
14828    ///Bit 20.
14829    pub const _2_RAY_TRACING_ALLOW_MOTION: Self = Self(1048576u64);
14830    ///Bit 21.
14831    pub const _2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(2097152u64);
14832    ///Bit 22.
14833    pub const _2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT: Self = Self(4194304u64);
14834    ///Bit 24.
14835    pub const _2_RAY_TRACING_OPACITY_MICROMAP: Self = Self(16777216u64);
14836    ///Bit 25.
14837    pub const _2_COLOR_ATTACHMENT_FEEDBACK_LOOP: Self = Self(33554432u64);
14838    ///Bit 26.
14839    pub const _2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP: Self = Self(67108864u64);
14840    ///Bit 28.
14841    pub const _2_RAY_TRACING_DISPLACEMENT_MICROMAP: Self = Self(268435456u64);
14842    ///Bit 29.
14843    pub const _2_DESCRIPTOR_BUFFER: Self = Self(536870912u64);
14844    ///Bit 37.
14845    pub const _2_DISALLOW_OPACITY_MICROMAP_BIT: Self = Self(137438953472u64);
14846    ///Bit 39.
14847    pub const _2_INSTRUMENT_SHADERS_BIT: Self = Self(549755813888u64);
14848    ///Bit 31.
14849    pub const _2_CAPTURE_DATA: Self = Self(2147483648u64);
14850    ///Bit 40.
14851    pub const _2_PER_LAYER_FRAGMENT_DENSITY_BIT: Self = Self(1099511627776u64);
14852    ///Bit 43.
14853    pub const _2_64_BIT_INDEXING: Self = Self(8796093022208u64);
14854}
14855impl core::ops::BitOr for PipelineCreateFlagBits2 {
14856    type Output = Self;
14857    #[inline]
14858    fn bitor(self, rhs: Self) -> Self {
14859        Self(self.0 | rhs.0)
14860    }
14861}
14862impl core::ops::BitOrAssign for PipelineCreateFlagBits2 {
14863    #[inline]
14864    fn bitor_assign(&mut self, rhs: Self) {
14865        self.0 |= rhs.0;
14866    }
14867}
14868impl core::ops::BitAnd for PipelineCreateFlagBits2 {
14869    type Output = Self;
14870    #[inline]
14871    fn bitand(self, rhs: Self) -> Self {
14872        Self(self.0 & rhs.0)
14873    }
14874}
14875impl core::ops::BitAndAssign for PipelineCreateFlagBits2 {
14876    #[inline]
14877    fn bitand_assign(&mut self, rhs: Self) {
14878        self.0 &= rhs.0;
14879    }
14880}
14881impl core::ops::BitXor for PipelineCreateFlagBits2 {
14882    type Output = Self;
14883    #[inline]
14884    fn bitxor(self, rhs: Self) -> Self {
14885        Self(self.0 ^ rhs.0)
14886    }
14887}
14888impl core::ops::BitXorAssign for PipelineCreateFlagBits2 {
14889    #[inline]
14890    fn bitxor_assign(&mut self, rhs: Self) {
14891        self.0 ^= rhs.0;
14892    }
14893}
14894impl core::ops::Not for PipelineCreateFlagBits2 {
14895    type Output = Self;
14896    #[inline]
14897    fn not(self) -> Self {
14898        Self(!self.0)
14899    }
14900}
14901impl core::fmt::Debug for PipelineCreateFlagBits2 {
14902    #[allow(unused_mut, unused_variables)]
14903    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14904        let mut first = true;
14905        let mut remaining = self.0;
14906        if remaining & Self::_2_DISABLE_OPTIMIZATION.0 != 0 {
14907            if !first {
14908                f.write_str(" | ")?;
14909            }
14910            f.write_str("_2_DISABLE_OPTIMIZATION")?;
14911            remaining &= !Self::_2_DISABLE_OPTIMIZATION.0;
14912            first = false;
14913        }
14914        if remaining & Self::_2_ALLOW_DERIVATIVES.0 != 0 {
14915            if !first {
14916                f.write_str(" | ")?;
14917            }
14918            f.write_str("_2_ALLOW_DERIVATIVES")?;
14919            remaining &= !Self::_2_ALLOW_DERIVATIVES.0;
14920            first = false;
14921        }
14922        if remaining & Self::_2_DERIVATIVE.0 != 0 {
14923            if !first {
14924                f.write_str(" | ")?;
14925            }
14926            f.write_str("_2_DERIVATIVE")?;
14927            remaining &= !Self::_2_DERIVATIVE.0;
14928            first = false;
14929        }
14930        if remaining & Self::_2_VIEW_INDEX_FROM_DEVICE_INDEX.0 != 0 {
14931            if !first {
14932                f.write_str(" | ")?;
14933            }
14934            f.write_str("_2_VIEW_INDEX_FROM_DEVICE_INDEX")?;
14935            remaining &= !Self::_2_VIEW_INDEX_FROM_DEVICE_INDEX.0;
14936            first = false;
14937        }
14938        if remaining & Self::_2_DISPATCH_BASE.0 != 0 {
14939            if !first {
14940                f.write_str(" | ")?;
14941            }
14942            f.write_str("_2_DISPATCH_BASE")?;
14943            remaining &= !Self::_2_DISPATCH_BASE.0;
14944            first = false;
14945        }
14946        if remaining & Self::_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED.0 != 0 {
14947            if !first {
14948                f.write_str(" | ")?;
14949            }
14950            f.write_str("_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED")?;
14951            remaining &= !Self::_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED.0;
14952            first = false;
14953        }
14954        if remaining & Self::_2_EARLY_RETURN_ON_FAILURE.0 != 0 {
14955            if !first {
14956                f.write_str(" | ")?;
14957            }
14958            f.write_str("_2_EARLY_RETURN_ON_FAILURE")?;
14959            remaining &= !Self::_2_EARLY_RETURN_ON_FAILURE.0;
14960            first = false;
14961        }
14962        if remaining & Self::_2_NO_PROTECTED_ACCESS.0 != 0 {
14963            if !first {
14964                f.write_str(" | ")?;
14965            }
14966            f.write_str("_2_NO_PROTECTED_ACCESS")?;
14967            remaining &= !Self::_2_NO_PROTECTED_ACCESS.0;
14968            first = false;
14969        }
14970        if remaining & Self::_2_PROTECTED_ACCESS_ONLY.0 != 0 {
14971            if !first {
14972                f.write_str(" | ")?;
14973            }
14974            f.write_str("_2_PROTECTED_ACCESS_ONLY")?;
14975            remaining &= !Self::_2_PROTECTED_ACCESS_ONLY.0;
14976            first = false;
14977        }
14978        if remaining & Self::_2_EXECUTION_GRAPH_BIT.0 != 0 {
14979            if !first {
14980                f.write_str(" | ")?;
14981            }
14982            f.write_str("_2_EXECUTION_GRAPH_BIT")?;
14983            remaining &= !Self::_2_EXECUTION_GRAPH_BIT.0;
14984            first = false;
14985        }
14986        if remaining & Self::_2_DESCRIPTOR_HEAP.0 != 0 {
14987            if !first {
14988                f.write_str(" | ")?;
14989            }
14990            f.write_str("_2_DESCRIPTOR_HEAP")?;
14991            remaining &= !Self::_2_DESCRIPTOR_HEAP.0;
14992            first = false;
14993        }
14994        if remaining & Self::_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES.0 != 0
14995        {
14996            if !first {
14997                f.write_str(" | ")?;
14998            }
14999            f.write_str("_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES")?;
15000            remaining &= !Self::_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES.0;
15001            first = false;
15002        }
15003        if remaining & Self::_2_ENABLE_LEGACY_DITHERING.0 != 0 {
15004            if !first {
15005                f.write_str(" | ")?;
15006            }
15007            f.write_str("_2_ENABLE_LEGACY_DITHERING")?;
15008            remaining &= !Self::_2_ENABLE_LEGACY_DITHERING.0;
15009            first = false;
15010        }
15011        if remaining & Self::_2_DEFER_COMPILE.0 != 0 {
15012            if !first {
15013                f.write_str(" | ")?;
15014            }
15015            f.write_str("_2_DEFER_COMPILE")?;
15016            remaining &= !Self::_2_DEFER_COMPILE.0;
15017            first = false;
15018        }
15019        if remaining & Self::_2_CAPTURE_STATISTICS.0 != 0 {
15020            if !first {
15021                f.write_str(" | ")?;
15022            }
15023            f.write_str("_2_CAPTURE_STATISTICS")?;
15024            remaining &= !Self::_2_CAPTURE_STATISTICS.0;
15025            first = false;
15026        }
15027        if remaining & Self::_2_CAPTURE_INTERNAL_REPRESENTATIONS.0 != 0 {
15028            if !first {
15029                f.write_str(" | ")?;
15030            }
15031            f.write_str("_2_CAPTURE_INTERNAL_REPRESENTATIONS")?;
15032            remaining &= !Self::_2_CAPTURE_INTERNAL_REPRESENTATIONS.0;
15033            first = false;
15034        }
15035        if remaining & Self::_2_LINK_TIME_OPTIMIZATION.0 != 0 {
15036            if !first {
15037                f.write_str(" | ")?;
15038            }
15039            f.write_str("_2_LINK_TIME_OPTIMIZATION")?;
15040            remaining &= !Self::_2_LINK_TIME_OPTIMIZATION.0;
15041            first = false;
15042        }
15043        if remaining & Self::_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO.0 != 0 {
15044            if !first {
15045                f.write_str(" | ")?;
15046            }
15047            f.write_str("_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO")?;
15048            remaining &= !Self::_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO.0;
15049            first = false;
15050        }
15051        if remaining & Self::_2_LIBRARY.0 != 0 {
15052            if !first {
15053                f.write_str(" | ")?;
15054            }
15055            f.write_str("_2_LIBRARY")?;
15056            remaining &= !Self::_2_LIBRARY.0;
15057            first = false;
15058        }
15059        if remaining & Self::_2_RAY_TRACING_SKIP_TRIANGLES.0 != 0 {
15060            if !first {
15061                f.write_str(" | ")?;
15062            }
15063            f.write_str("_2_RAY_TRACING_SKIP_TRIANGLES")?;
15064            remaining &= !Self::_2_RAY_TRACING_SKIP_TRIANGLES.0;
15065            first = false;
15066        }
15067        if remaining & Self::_2_RAY_TRACING_SKIP_AABBS.0 != 0 {
15068            if !first {
15069                f.write_str(" | ")?;
15070            }
15071            f.write_str("_2_RAY_TRACING_SKIP_AABBS")?;
15072            remaining &= !Self::_2_RAY_TRACING_SKIP_AABBS.0;
15073            first = false;
15074        }
15075        if remaining & Self::_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS.0 != 0 {
15076            if !first {
15077                f.write_str(" | ")?;
15078            }
15079            f.write_str("_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS")?;
15080            remaining &= !Self::_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS.0;
15081            first = false;
15082        }
15083        if remaining & Self::_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS.0 != 0 {
15084            if !first {
15085                f.write_str(" | ")?;
15086            }
15087            f.write_str("_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS")?;
15088            remaining &= !Self::_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS.0;
15089            first = false;
15090        }
15091        if remaining & Self::_2_RAY_TRACING_NO_NULL_MISS_SHADERS.0 != 0 {
15092            if !first {
15093                f.write_str(" | ")?;
15094            }
15095            f.write_str("_2_RAY_TRACING_NO_NULL_MISS_SHADERS")?;
15096            remaining &= !Self::_2_RAY_TRACING_NO_NULL_MISS_SHADERS.0;
15097            first = false;
15098        }
15099        if remaining & Self::_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS.0 != 0 {
15100            if !first {
15101                f.write_str(" | ")?;
15102            }
15103            f.write_str("_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS")?;
15104            remaining &= !Self::_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS.0;
15105            first = false;
15106        }
15107        if remaining & Self::_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY.0 != 0 {
15108            if !first {
15109                f.write_str(" | ")?;
15110            }
15111            f.write_str("_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY")?;
15112            remaining &= !Self::_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY.0;
15113            first = false;
15114        }
15115        if remaining & Self::_2_INDIRECT_BINDABLE.0 != 0 {
15116            if !first {
15117                f.write_str(" | ")?;
15118            }
15119            f.write_str("_2_INDIRECT_BINDABLE")?;
15120            remaining &= !Self::_2_INDIRECT_BINDABLE.0;
15121            first = false;
15122        }
15123        if remaining & Self::_2_RAY_TRACING_ALLOW_MOTION.0 != 0 {
15124            if !first {
15125                f.write_str(" | ")?;
15126            }
15127            f.write_str("_2_RAY_TRACING_ALLOW_MOTION")?;
15128            remaining &= !Self::_2_RAY_TRACING_ALLOW_MOTION.0;
15129            first = false;
15130        }
15131        if remaining & Self::_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
15132            if !first {
15133                f.write_str(" | ")?;
15134            }
15135            f.write_str("_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT")?;
15136            remaining &= !Self::_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT.0;
15137            first = false;
15138        }
15139        if remaining & Self::_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT.0 != 0 {
15140            if !first {
15141                f.write_str(" | ")?;
15142            }
15143            f.write_str("_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT")?;
15144            remaining &= !Self::_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT.0;
15145            first = false;
15146        }
15147        if remaining & Self::_2_RAY_TRACING_OPACITY_MICROMAP.0 != 0 {
15148            if !first {
15149                f.write_str(" | ")?;
15150            }
15151            f.write_str("_2_RAY_TRACING_OPACITY_MICROMAP")?;
15152            remaining &= !Self::_2_RAY_TRACING_OPACITY_MICROMAP.0;
15153            first = false;
15154        }
15155        if remaining & Self::_2_COLOR_ATTACHMENT_FEEDBACK_LOOP.0 != 0 {
15156            if !first {
15157                f.write_str(" | ")?;
15158            }
15159            f.write_str("_2_COLOR_ATTACHMENT_FEEDBACK_LOOP")?;
15160            remaining &= !Self::_2_COLOR_ATTACHMENT_FEEDBACK_LOOP.0;
15161            first = false;
15162        }
15163        if remaining & Self::_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP.0 != 0 {
15164            if !first {
15165                f.write_str(" | ")?;
15166            }
15167            f.write_str("_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP")?;
15168            remaining &= !Self::_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP.0;
15169            first = false;
15170        }
15171        if remaining & Self::_2_RAY_TRACING_DISPLACEMENT_MICROMAP.0 != 0 {
15172            if !first {
15173                f.write_str(" | ")?;
15174            }
15175            f.write_str("_2_RAY_TRACING_DISPLACEMENT_MICROMAP")?;
15176            remaining &= !Self::_2_RAY_TRACING_DISPLACEMENT_MICROMAP.0;
15177            first = false;
15178        }
15179        if remaining & Self::_2_DESCRIPTOR_BUFFER.0 != 0 {
15180            if !first {
15181                f.write_str(" | ")?;
15182            }
15183            f.write_str("_2_DESCRIPTOR_BUFFER")?;
15184            remaining &= !Self::_2_DESCRIPTOR_BUFFER.0;
15185            first = false;
15186        }
15187        if remaining & Self::_2_DISALLOW_OPACITY_MICROMAP_BIT.0 != 0 {
15188            if !first {
15189                f.write_str(" | ")?;
15190            }
15191            f.write_str("_2_DISALLOW_OPACITY_MICROMAP_BIT")?;
15192            remaining &= !Self::_2_DISALLOW_OPACITY_MICROMAP_BIT.0;
15193            first = false;
15194        }
15195        if remaining & Self::_2_INSTRUMENT_SHADERS_BIT.0 != 0 {
15196            if !first {
15197                f.write_str(" | ")?;
15198            }
15199            f.write_str("_2_INSTRUMENT_SHADERS_BIT")?;
15200            remaining &= !Self::_2_INSTRUMENT_SHADERS_BIT.0;
15201            first = false;
15202        }
15203        if remaining & Self::_2_CAPTURE_DATA.0 != 0 {
15204            if !first {
15205                f.write_str(" | ")?;
15206            }
15207            f.write_str("_2_CAPTURE_DATA")?;
15208            remaining &= !Self::_2_CAPTURE_DATA.0;
15209            first = false;
15210        }
15211        if remaining & Self::_2_PER_LAYER_FRAGMENT_DENSITY_BIT.0 != 0 {
15212            if !first {
15213                f.write_str(" | ")?;
15214            }
15215            f.write_str("_2_PER_LAYER_FRAGMENT_DENSITY_BIT")?;
15216            remaining &= !Self::_2_PER_LAYER_FRAGMENT_DENSITY_BIT.0;
15217            first = false;
15218        }
15219        if remaining & Self::_2_64_BIT_INDEXING.0 != 0 {
15220            if !first {
15221                f.write_str(" | ")?;
15222            }
15223            f.write_str("_2_64_BIT_INDEXING")?;
15224            remaining &= !Self::_2_64_BIT_INDEXING.0;
15225            first = false;
15226        }
15227        if remaining != 0u64 {
15228            if !first {
15229                f.write_str(" | ")?;
15230            }
15231            write!(f, "{:#x}", remaining)?;
15232        } else if first {
15233            f.write_str("(empty)")?;
15234        }
15235        Ok(())
15236    }
15237}
15238///[`VkPipelineCreationFeedbackFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackFlagBits.html)
15239#[repr(transparent)]
15240#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
15241#[doc(alias = "VkPipelineCreationFeedbackFlagBits")]
15242pub struct PipelineCreationFeedbackFlagBits(u32);
15243impl PipelineCreationFeedbackFlagBits {
15244    #[inline]
15245    pub const fn empty() -> Self {
15246        Self(0u32)
15247    }
15248    #[inline]
15249    pub const fn from_raw(value: u32) -> Self {
15250        Self(value)
15251    }
15252    #[inline]
15253    pub const fn as_raw(self) -> u32 {
15254        self.0
15255    }
15256    #[inline]
15257    pub const fn is_empty(self) -> bool {
15258        self.0 == 0u32
15259    }
15260    #[inline]
15261    pub const fn contains(self, other: Self) -> bool {
15262        (self.0 & other.0) == other.0
15263    }
15264    #[inline]
15265    pub const fn all() -> Self {
15266        Self(7u32)
15267    }
15268    ///Bit 0.
15269    pub const VALID: Self = Self(1u32);
15270    ///Bit 1.
15271    pub const APPLICATION_PIPELINE_CACHE_HIT: Self = Self(2u32);
15272    ///Bit 2.
15273    pub const BASE_PIPELINE_ACCELERATION: Self = Self(4u32);
15274}
15275impl core::ops::BitOr for PipelineCreationFeedbackFlagBits {
15276    type Output = Self;
15277    #[inline]
15278    fn bitor(self, rhs: Self) -> Self {
15279        Self(self.0 | rhs.0)
15280    }
15281}
15282impl core::ops::BitOrAssign for PipelineCreationFeedbackFlagBits {
15283    #[inline]
15284    fn bitor_assign(&mut self, rhs: Self) {
15285        self.0 |= rhs.0;
15286    }
15287}
15288impl core::ops::BitAnd for PipelineCreationFeedbackFlagBits {
15289    type Output = Self;
15290    #[inline]
15291    fn bitand(self, rhs: Self) -> Self {
15292        Self(self.0 & rhs.0)
15293    }
15294}
15295impl core::ops::BitAndAssign for PipelineCreationFeedbackFlagBits {
15296    #[inline]
15297    fn bitand_assign(&mut self, rhs: Self) {
15298        self.0 &= rhs.0;
15299    }
15300}
15301impl core::ops::BitXor for PipelineCreationFeedbackFlagBits {
15302    type Output = Self;
15303    #[inline]
15304    fn bitxor(self, rhs: Self) -> Self {
15305        Self(self.0 ^ rhs.0)
15306    }
15307}
15308impl core::ops::BitXorAssign for PipelineCreationFeedbackFlagBits {
15309    #[inline]
15310    fn bitxor_assign(&mut self, rhs: Self) {
15311        self.0 ^= rhs.0;
15312    }
15313}
15314impl core::ops::Not for PipelineCreationFeedbackFlagBits {
15315    type Output = Self;
15316    #[inline]
15317    fn not(self) -> Self {
15318        Self(!self.0)
15319    }
15320}
15321impl core::fmt::Debug for PipelineCreationFeedbackFlagBits {
15322    #[allow(unused_mut, unused_variables)]
15323    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15324        let mut first = true;
15325        let mut remaining = self.0;
15326        if remaining & Self::VALID.0 != 0 {
15327            if !first {
15328                f.write_str(" | ")?;
15329            }
15330            f.write_str("VALID")?;
15331            remaining &= !Self::VALID.0;
15332            first = false;
15333        }
15334        if remaining & Self::APPLICATION_PIPELINE_CACHE_HIT.0 != 0 {
15335            if !first {
15336                f.write_str(" | ")?;
15337            }
15338            f.write_str("APPLICATION_PIPELINE_CACHE_HIT")?;
15339            remaining &= !Self::APPLICATION_PIPELINE_CACHE_HIT.0;
15340            first = false;
15341        }
15342        if remaining & Self::BASE_PIPELINE_ACCELERATION.0 != 0 {
15343            if !first {
15344                f.write_str(" | ")?;
15345            }
15346            f.write_str("BASE_PIPELINE_ACCELERATION")?;
15347            remaining &= !Self::BASE_PIPELINE_ACCELERATION.0;
15348            first = false;
15349        }
15350        if remaining != 0u32 {
15351            if !first {
15352                f.write_str(" | ")?;
15353            }
15354            write!(f, "{:#x}", remaining)?;
15355        } else if first {
15356            f.write_str("(empty)")?;
15357        }
15358        Ok(())
15359    }
15360}
15361///[`VkPipelineDepthStencilStateCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateFlagBits.html)
15362#[repr(transparent)]
15363#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
15364#[doc(alias = "VkPipelineDepthStencilStateCreateFlagBits")]
15365pub struct PipelineDepthStencilStateCreateFlagBits(u32);
15366impl PipelineDepthStencilStateCreateFlagBits {
15367    #[inline]
15368    pub const fn empty() -> Self {
15369        Self(0u32)
15370    }
15371    #[inline]
15372    pub const fn from_raw(value: u32) -> Self {
15373        Self(value)
15374    }
15375    #[inline]
15376    pub const fn as_raw(self) -> u32 {
15377        self.0
15378    }
15379    #[inline]
15380    pub const fn is_empty(self) -> bool {
15381        self.0 == 0u32
15382    }
15383    #[inline]
15384    pub const fn contains(self, other: Self) -> bool {
15385        (self.0 & other.0) == other.0
15386    }
15387    #[inline]
15388    pub const fn all() -> Self {
15389        Self(3u32)
15390    }
15391    pub const RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT: Self = Self::RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS;
15392    pub const RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT: Self = Self::RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS;
15393    ///Bit 0.
15394    pub const RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS: Self = Self(1u32);
15395    ///Bit 1.
15396    pub const RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS: Self = Self(2u32);
15397}
15398impl core::ops::BitOr for PipelineDepthStencilStateCreateFlagBits {
15399    type Output = Self;
15400    #[inline]
15401    fn bitor(self, rhs: Self) -> Self {
15402        Self(self.0 | rhs.0)
15403    }
15404}
15405impl core::ops::BitOrAssign for PipelineDepthStencilStateCreateFlagBits {
15406    #[inline]
15407    fn bitor_assign(&mut self, rhs: Self) {
15408        self.0 |= rhs.0;
15409    }
15410}
15411impl core::ops::BitAnd for PipelineDepthStencilStateCreateFlagBits {
15412    type Output = Self;
15413    #[inline]
15414    fn bitand(self, rhs: Self) -> Self {
15415        Self(self.0 & rhs.0)
15416    }
15417}
15418impl core::ops::BitAndAssign for PipelineDepthStencilStateCreateFlagBits {
15419    #[inline]
15420    fn bitand_assign(&mut self, rhs: Self) {
15421        self.0 &= rhs.0;
15422    }
15423}
15424impl core::ops::BitXor for PipelineDepthStencilStateCreateFlagBits {
15425    type Output = Self;
15426    #[inline]
15427    fn bitxor(self, rhs: Self) -> Self {
15428        Self(self.0 ^ rhs.0)
15429    }
15430}
15431impl core::ops::BitXorAssign for PipelineDepthStencilStateCreateFlagBits {
15432    #[inline]
15433    fn bitxor_assign(&mut self, rhs: Self) {
15434        self.0 ^= rhs.0;
15435    }
15436}
15437impl core::ops::Not for PipelineDepthStencilStateCreateFlagBits {
15438    type Output = Self;
15439    #[inline]
15440    fn not(self) -> Self {
15441        Self(!self.0)
15442    }
15443}
15444impl core::fmt::Debug for PipelineDepthStencilStateCreateFlagBits {
15445    #[allow(unused_mut, unused_variables)]
15446    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15447        let mut first = true;
15448        let mut remaining = self.0;
15449        if remaining & Self::RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS.0 != 0 {
15450            if !first {
15451                f.write_str(" | ")?;
15452            }
15453            f.write_str("RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS")?;
15454            remaining &= !Self::RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS.0;
15455            first = false;
15456        }
15457        if remaining & Self::RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS.0 != 0 {
15458            if !first {
15459                f.write_str(" | ")?;
15460            }
15461            f.write_str("RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS")?;
15462            remaining &= !Self::RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS.0;
15463            first = false;
15464        }
15465        if remaining != 0u32 {
15466            if !first {
15467                f.write_str(" | ")?;
15468            }
15469            write!(f, "{:#x}", remaining)?;
15470        } else if first {
15471            f.write_str("(empty)")?;
15472        }
15473        Ok(())
15474    }
15475}
15476///[`VkPipelineLayoutCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayoutCreateFlagBits.html)
15477#[repr(transparent)]
15478#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
15479#[doc(alias = "VkPipelineLayoutCreateFlagBits")]
15480pub struct PipelineLayoutCreateFlagBits(u32);
15481impl PipelineLayoutCreateFlagBits {
15482    #[inline]
15483    pub const fn empty() -> Self {
15484        Self(0u32)
15485    }
15486    #[inline]
15487    pub const fn from_raw(value: u32) -> Self {
15488        Self(value)
15489    }
15490    #[inline]
15491    pub const fn as_raw(self) -> u32 {
15492        self.0
15493    }
15494    #[inline]
15495    pub const fn is_empty(self) -> bool {
15496        self.0 == 0u32
15497    }
15498    #[inline]
15499    pub const fn contains(self, other: Self) -> bool {
15500        (self.0 & other.0) == other.0
15501    }
15502    #[inline]
15503    pub const fn all() -> Self {
15504        Self(2u32)
15505    }
15506    ///Bit 1.
15507    pub const INDEPENDENT_SETS: Self = Self(2u32);
15508}
15509impl core::ops::BitOr for PipelineLayoutCreateFlagBits {
15510    type Output = Self;
15511    #[inline]
15512    fn bitor(self, rhs: Self) -> Self {
15513        Self(self.0 | rhs.0)
15514    }
15515}
15516impl core::ops::BitOrAssign for PipelineLayoutCreateFlagBits {
15517    #[inline]
15518    fn bitor_assign(&mut self, rhs: Self) {
15519        self.0 |= rhs.0;
15520    }
15521}
15522impl core::ops::BitAnd for PipelineLayoutCreateFlagBits {
15523    type Output = Self;
15524    #[inline]
15525    fn bitand(self, rhs: Self) -> Self {
15526        Self(self.0 & rhs.0)
15527    }
15528}
15529impl core::ops::BitAndAssign for PipelineLayoutCreateFlagBits {
15530    #[inline]
15531    fn bitand_assign(&mut self, rhs: Self) {
15532        self.0 &= rhs.0;
15533    }
15534}
15535impl core::ops::BitXor for PipelineLayoutCreateFlagBits {
15536    type Output = Self;
15537    #[inline]
15538    fn bitxor(self, rhs: Self) -> Self {
15539        Self(self.0 ^ rhs.0)
15540    }
15541}
15542impl core::ops::BitXorAssign for PipelineLayoutCreateFlagBits {
15543    #[inline]
15544    fn bitxor_assign(&mut self, rhs: Self) {
15545        self.0 ^= rhs.0;
15546    }
15547}
15548impl core::ops::Not for PipelineLayoutCreateFlagBits {
15549    type Output = Self;
15550    #[inline]
15551    fn not(self) -> Self {
15552        Self(!self.0)
15553    }
15554}
15555impl core::fmt::Debug for PipelineLayoutCreateFlagBits {
15556    #[allow(unused_mut, unused_variables)]
15557    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15558        let mut first = true;
15559        let mut remaining = self.0;
15560        if remaining & Self::INDEPENDENT_SETS.0 != 0 {
15561            if !first {
15562                f.write_str(" | ")?;
15563            }
15564            f.write_str("INDEPENDENT_SETS")?;
15565            remaining &= !Self::INDEPENDENT_SETS.0;
15566            first = false;
15567        }
15568        if remaining != 0u32 {
15569            if !first {
15570                f.write_str(" | ")?;
15571            }
15572            write!(f, "{:#x}", remaining)?;
15573        } else if first {
15574            f.write_str("(empty)")?;
15575        }
15576        Ok(())
15577    }
15578}
15579///[`VkPipelineShaderStageCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateFlagBits.html)
15580#[repr(transparent)]
15581#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
15582#[doc(alias = "VkPipelineShaderStageCreateFlagBits")]
15583pub struct PipelineShaderStageCreateFlagBits(u32);
15584impl PipelineShaderStageCreateFlagBits {
15585    #[inline]
15586    pub const fn empty() -> Self {
15587        Self(0u32)
15588    }
15589    #[inline]
15590    pub const fn from_raw(value: u32) -> Self {
15591        Self(value)
15592    }
15593    #[inline]
15594    pub const fn as_raw(self) -> u32 {
15595        self.0
15596    }
15597    #[inline]
15598    pub const fn is_empty(self) -> bool {
15599        self.0 == 0u32
15600    }
15601    #[inline]
15602    pub const fn contains(self, other: Self) -> bool {
15603        (self.0 & other.0) == other.0
15604    }
15605    #[inline]
15606    pub const fn all() -> Self {
15607        Self(3u32)
15608    }
15609    ///Bit 0.
15610    pub const ALLOW_VARYING_SUBGROUP_SIZE: Self = Self(1u32);
15611    ///Bit 1.
15612    pub const REQUIRE_FULL_SUBGROUPS: Self = Self(2u32);
15613}
15614impl core::ops::BitOr for PipelineShaderStageCreateFlagBits {
15615    type Output = Self;
15616    #[inline]
15617    fn bitor(self, rhs: Self) -> Self {
15618        Self(self.0 | rhs.0)
15619    }
15620}
15621impl core::ops::BitOrAssign for PipelineShaderStageCreateFlagBits {
15622    #[inline]
15623    fn bitor_assign(&mut self, rhs: Self) {
15624        self.0 |= rhs.0;
15625    }
15626}
15627impl core::ops::BitAnd for PipelineShaderStageCreateFlagBits {
15628    type Output = Self;
15629    #[inline]
15630    fn bitand(self, rhs: Self) -> Self {
15631        Self(self.0 & rhs.0)
15632    }
15633}
15634impl core::ops::BitAndAssign for PipelineShaderStageCreateFlagBits {
15635    #[inline]
15636    fn bitand_assign(&mut self, rhs: Self) {
15637        self.0 &= rhs.0;
15638    }
15639}
15640impl core::ops::BitXor for PipelineShaderStageCreateFlagBits {
15641    type Output = Self;
15642    #[inline]
15643    fn bitxor(self, rhs: Self) -> Self {
15644        Self(self.0 ^ rhs.0)
15645    }
15646}
15647impl core::ops::BitXorAssign for PipelineShaderStageCreateFlagBits {
15648    #[inline]
15649    fn bitxor_assign(&mut self, rhs: Self) {
15650        self.0 ^= rhs.0;
15651    }
15652}
15653impl core::ops::Not for PipelineShaderStageCreateFlagBits {
15654    type Output = Self;
15655    #[inline]
15656    fn not(self) -> Self {
15657        Self(!self.0)
15658    }
15659}
15660impl core::fmt::Debug for PipelineShaderStageCreateFlagBits {
15661    #[allow(unused_mut, unused_variables)]
15662    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15663        let mut first = true;
15664        let mut remaining = self.0;
15665        if remaining & Self::ALLOW_VARYING_SUBGROUP_SIZE.0 != 0 {
15666            if !first {
15667                f.write_str(" | ")?;
15668            }
15669            f.write_str("ALLOW_VARYING_SUBGROUP_SIZE")?;
15670            remaining &= !Self::ALLOW_VARYING_SUBGROUP_SIZE.0;
15671            first = false;
15672        }
15673        if remaining & Self::REQUIRE_FULL_SUBGROUPS.0 != 0 {
15674            if !first {
15675                f.write_str(" | ")?;
15676            }
15677            f.write_str("REQUIRE_FULL_SUBGROUPS")?;
15678            remaining &= !Self::REQUIRE_FULL_SUBGROUPS.0;
15679            first = false;
15680        }
15681        if remaining != 0u32 {
15682            if !first {
15683                f.write_str(" | ")?;
15684            }
15685            write!(f, "{:#x}", remaining)?;
15686        } else if first {
15687            f.write_str("(empty)")?;
15688        }
15689        Ok(())
15690    }
15691}
15692///[`VkPipelineStageFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineStageFlagBits.html)
15693#[repr(transparent)]
15694#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
15695#[doc(alias = "VkPipelineStageFlagBits")]
15696pub struct PipelineStageFlagBits(u32);
15697impl PipelineStageFlagBits {
15698    #[inline]
15699    pub const fn empty() -> Self {
15700        Self(0u32)
15701    }
15702    #[inline]
15703    pub const fn from_raw(value: u32) -> Self {
15704        Self(value)
15705    }
15706    #[inline]
15707    pub const fn as_raw(self) -> u32 {
15708        self.0
15709    }
15710    #[inline]
15711    pub const fn is_empty(self) -> bool {
15712        self.0 == 0u32
15713    }
15714    #[inline]
15715    pub const fn contains(self, other: Self) -> bool {
15716        (self.0 & other.0) == other.0
15717    }
15718    #[inline]
15719    pub const fn all() -> Self {
15720        Self(67108863u32)
15721    }
15722    ///Bit 0.
15723    pub const TOP_OF_PIPE: Self = Self(1u32);
15724    ///Bit 1.
15725    pub const DRAW_INDIRECT: Self = Self(2u32);
15726    ///Bit 2.
15727    pub const VERTEX_INPUT: Self = Self(4u32);
15728    ///Bit 3.
15729    pub const VERTEX_SHADER: Self = Self(8u32);
15730    ///Bit 4.
15731    pub const TESSELLATION_CONTROL_SHADER: Self = Self(16u32);
15732    ///Bit 5.
15733    pub const TESSELLATION_EVALUATION_SHADER: Self = Self(32u32);
15734    ///Bit 6.
15735    pub const GEOMETRY_SHADER: Self = Self(64u32);
15736    ///Bit 7.
15737    pub const FRAGMENT_SHADER: Self = Self(128u32);
15738    ///Bit 8.
15739    pub const EARLY_FRAGMENT_TESTS: Self = Self(256u32);
15740    ///Bit 9.
15741    pub const LATE_FRAGMENT_TESTS: Self = Self(512u32);
15742    ///Bit 10.
15743    pub const COLOR_ATTACHMENT_OUTPUT: Self = Self(1024u32);
15744    ///Bit 11.
15745    pub const COMPUTE_SHADER: Self = Self(2048u32);
15746    ///Bit 12.
15747    pub const TRANSFER: Self = Self(4096u32);
15748    ///Bit 13.
15749    pub const BOTTOM_OF_PIPE: Self = Self(8192u32);
15750    ///Bit 14.
15751    pub const HOST: Self = Self(16384u32);
15752    ///Bit 15.
15753    pub const ALL_GRAPHICS: Self = Self(32768u32);
15754    ///Bit 16.
15755    pub const ALL_COMMANDS: Self = Self(65536u32);
15756    pub const NONE: Self = Self(0u32);
15757    ///Bit 24.
15758    pub const TRANSFORM_FEEDBACK: Self = Self(16777216u32);
15759    ///Bit 18.
15760    pub const CONDITIONAL_RENDERING: Self = Self(262144u32);
15761    ///Bit 25.
15762    pub const ACCELERATION_STRUCTURE_BUILD: Self = Self(33554432u32);
15763    ///Bit 21.
15764    pub const RAY_TRACING_SHADER: Self = Self(2097152u32);
15765    pub const SHADING_RATE_IMAGE: Self = Self::FRAGMENT_SHADING_RATE_ATTACHMENT;
15766    ///Bit 23.
15767    pub const FRAGMENT_DENSITY_PROCESS: Self = Self(8388608u32);
15768    ///Bit 22.
15769    pub const FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(4194304u32);
15770    ///Bit 19.
15771    pub const TASK_SHADER: Self = Self(524288u32);
15772    ///Bit 20.
15773    pub const MESH_SHADER: Self = Self(1048576u32);
15774    ///Bit 17.
15775    pub const COMMAND_PREPROCESS: Self = Self(131072u32);
15776}
15777impl core::ops::BitOr for PipelineStageFlagBits {
15778    type Output = Self;
15779    #[inline]
15780    fn bitor(self, rhs: Self) -> Self {
15781        Self(self.0 | rhs.0)
15782    }
15783}
15784impl core::ops::BitOrAssign for PipelineStageFlagBits {
15785    #[inline]
15786    fn bitor_assign(&mut self, rhs: Self) {
15787        self.0 |= rhs.0;
15788    }
15789}
15790impl core::ops::BitAnd for PipelineStageFlagBits {
15791    type Output = Self;
15792    #[inline]
15793    fn bitand(self, rhs: Self) -> Self {
15794        Self(self.0 & rhs.0)
15795    }
15796}
15797impl core::ops::BitAndAssign for PipelineStageFlagBits {
15798    #[inline]
15799    fn bitand_assign(&mut self, rhs: Self) {
15800        self.0 &= rhs.0;
15801    }
15802}
15803impl core::ops::BitXor for PipelineStageFlagBits {
15804    type Output = Self;
15805    #[inline]
15806    fn bitxor(self, rhs: Self) -> Self {
15807        Self(self.0 ^ rhs.0)
15808    }
15809}
15810impl core::ops::BitXorAssign for PipelineStageFlagBits {
15811    #[inline]
15812    fn bitxor_assign(&mut self, rhs: Self) {
15813        self.0 ^= rhs.0;
15814    }
15815}
15816impl core::ops::Not for PipelineStageFlagBits {
15817    type Output = Self;
15818    #[inline]
15819    fn not(self) -> Self {
15820        Self(!self.0)
15821    }
15822}
15823impl core::fmt::Debug for PipelineStageFlagBits {
15824    #[allow(unused_mut, unused_variables)]
15825    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15826        let mut first = true;
15827        let mut remaining = self.0;
15828        if remaining & Self::TOP_OF_PIPE.0 != 0 {
15829            if !first {
15830                f.write_str(" | ")?;
15831            }
15832            f.write_str("TOP_OF_PIPE")?;
15833            remaining &= !Self::TOP_OF_PIPE.0;
15834            first = false;
15835        }
15836        if remaining & Self::DRAW_INDIRECT.0 != 0 {
15837            if !first {
15838                f.write_str(" | ")?;
15839            }
15840            f.write_str("DRAW_INDIRECT")?;
15841            remaining &= !Self::DRAW_INDIRECT.0;
15842            first = false;
15843        }
15844        if remaining & Self::VERTEX_INPUT.0 != 0 {
15845            if !first {
15846                f.write_str(" | ")?;
15847            }
15848            f.write_str("VERTEX_INPUT")?;
15849            remaining &= !Self::VERTEX_INPUT.0;
15850            first = false;
15851        }
15852        if remaining & Self::VERTEX_SHADER.0 != 0 {
15853            if !first {
15854                f.write_str(" | ")?;
15855            }
15856            f.write_str("VERTEX_SHADER")?;
15857            remaining &= !Self::VERTEX_SHADER.0;
15858            first = false;
15859        }
15860        if remaining & Self::TESSELLATION_CONTROL_SHADER.0 != 0 {
15861            if !first {
15862                f.write_str(" | ")?;
15863            }
15864            f.write_str("TESSELLATION_CONTROL_SHADER")?;
15865            remaining &= !Self::TESSELLATION_CONTROL_SHADER.0;
15866            first = false;
15867        }
15868        if remaining & Self::TESSELLATION_EVALUATION_SHADER.0 != 0 {
15869            if !first {
15870                f.write_str(" | ")?;
15871            }
15872            f.write_str("TESSELLATION_EVALUATION_SHADER")?;
15873            remaining &= !Self::TESSELLATION_EVALUATION_SHADER.0;
15874            first = false;
15875        }
15876        if remaining & Self::GEOMETRY_SHADER.0 != 0 {
15877            if !first {
15878                f.write_str(" | ")?;
15879            }
15880            f.write_str("GEOMETRY_SHADER")?;
15881            remaining &= !Self::GEOMETRY_SHADER.0;
15882            first = false;
15883        }
15884        if remaining & Self::FRAGMENT_SHADER.0 != 0 {
15885            if !first {
15886                f.write_str(" | ")?;
15887            }
15888            f.write_str("FRAGMENT_SHADER")?;
15889            remaining &= !Self::FRAGMENT_SHADER.0;
15890            first = false;
15891        }
15892        if remaining & Self::EARLY_FRAGMENT_TESTS.0 != 0 {
15893            if !first {
15894                f.write_str(" | ")?;
15895            }
15896            f.write_str("EARLY_FRAGMENT_TESTS")?;
15897            remaining &= !Self::EARLY_FRAGMENT_TESTS.0;
15898            first = false;
15899        }
15900        if remaining & Self::LATE_FRAGMENT_TESTS.0 != 0 {
15901            if !first {
15902                f.write_str(" | ")?;
15903            }
15904            f.write_str("LATE_FRAGMENT_TESTS")?;
15905            remaining &= !Self::LATE_FRAGMENT_TESTS.0;
15906            first = false;
15907        }
15908        if remaining & Self::COLOR_ATTACHMENT_OUTPUT.0 != 0 {
15909            if !first {
15910                f.write_str(" | ")?;
15911            }
15912            f.write_str("COLOR_ATTACHMENT_OUTPUT")?;
15913            remaining &= !Self::COLOR_ATTACHMENT_OUTPUT.0;
15914            first = false;
15915        }
15916        if remaining & Self::COMPUTE_SHADER.0 != 0 {
15917            if !first {
15918                f.write_str(" | ")?;
15919            }
15920            f.write_str("COMPUTE_SHADER")?;
15921            remaining &= !Self::COMPUTE_SHADER.0;
15922            first = false;
15923        }
15924        if remaining & Self::TRANSFER.0 != 0 {
15925            if !first {
15926                f.write_str(" | ")?;
15927            }
15928            f.write_str("TRANSFER")?;
15929            remaining &= !Self::TRANSFER.0;
15930            first = false;
15931        }
15932        if remaining & Self::BOTTOM_OF_PIPE.0 != 0 {
15933            if !first {
15934                f.write_str(" | ")?;
15935            }
15936            f.write_str("BOTTOM_OF_PIPE")?;
15937            remaining &= !Self::BOTTOM_OF_PIPE.0;
15938            first = false;
15939        }
15940        if remaining & Self::HOST.0 != 0 {
15941            if !first {
15942                f.write_str(" | ")?;
15943            }
15944            f.write_str("HOST")?;
15945            remaining &= !Self::HOST.0;
15946            first = false;
15947        }
15948        if remaining & Self::ALL_GRAPHICS.0 != 0 {
15949            if !first {
15950                f.write_str(" | ")?;
15951            }
15952            f.write_str("ALL_GRAPHICS")?;
15953            remaining &= !Self::ALL_GRAPHICS.0;
15954            first = false;
15955        }
15956        if remaining & Self::ALL_COMMANDS.0 != 0 {
15957            if !first {
15958                f.write_str(" | ")?;
15959            }
15960            f.write_str("ALL_COMMANDS")?;
15961            remaining &= !Self::ALL_COMMANDS.0;
15962            first = false;
15963        }
15964        if remaining & Self::TRANSFORM_FEEDBACK.0 != 0 {
15965            if !first {
15966                f.write_str(" | ")?;
15967            }
15968            f.write_str("TRANSFORM_FEEDBACK")?;
15969            remaining &= !Self::TRANSFORM_FEEDBACK.0;
15970            first = false;
15971        }
15972        if remaining & Self::CONDITIONAL_RENDERING.0 != 0 {
15973            if !first {
15974                f.write_str(" | ")?;
15975            }
15976            f.write_str("CONDITIONAL_RENDERING")?;
15977            remaining &= !Self::CONDITIONAL_RENDERING.0;
15978            first = false;
15979        }
15980        if remaining & Self::ACCELERATION_STRUCTURE_BUILD.0 != 0 {
15981            if !first {
15982                f.write_str(" | ")?;
15983            }
15984            f.write_str("ACCELERATION_STRUCTURE_BUILD")?;
15985            remaining &= !Self::ACCELERATION_STRUCTURE_BUILD.0;
15986            first = false;
15987        }
15988        if remaining & Self::RAY_TRACING_SHADER.0 != 0 {
15989            if !first {
15990                f.write_str(" | ")?;
15991            }
15992            f.write_str("RAY_TRACING_SHADER")?;
15993            remaining &= !Self::RAY_TRACING_SHADER.0;
15994            first = false;
15995        }
15996        if remaining & Self::FRAGMENT_DENSITY_PROCESS.0 != 0 {
15997            if !first {
15998                f.write_str(" | ")?;
15999            }
16000            f.write_str("FRAGMENT_DENSITY_PROCESS")?;
16001            remaining &= !Self::FRAGMENT_DENSITY_PROCESS.0;
16002            first = false;
16003        }
16004        if remaining & Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
16005            if !first {
16006                f.write_str(" | ")?;
16007            }
16008            f.write_str("FRAGMENT_SHADING_RATE_ATTACHMENT")?;
16009            remaining &= !Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0;
16010            first = false;
16011        }
16012        if remaining & Self::TASK_SHADER.0 != 0 {
16013            if !first {
16014                f.write_str(" | ")?;
16015            }
16016            f.write_str("TASK_SHADER")?;
16017            remaining &= !Self::TASK_SHADER.0;
16018            first = false;
16019        }
16020        if remaining & Self::MESH_SHADER.0 != 0 {
16021            if !first {
16022                f.write_str(" | ")?;
16023            }
16024            f.write_str("MESH_SHADER")?;
16025            remaining &= !Self::MESH_SHADER.0;
16026            first = false;
16027        }
16028        if remaining & Self::COMMAND_PREPROCESS.0 != 0 {
16029            if !first {
16030                f.write_str(" | ")?;
16031            }
16032            f.write_str("COMMAND_PREPROCESS")?;
16033            remaining &= !Self::COMMAND_PREPROCESS.0;
16034            first = false;
16035        }
16036        if remaining != 0u32 {
16037            if !first {
16038                f.write_str(" | ")?;
16039            }
16040            write!(f, "{:#x}", remaining)?;
16041        } else if first {
16042            f.write_str("(empty)")?;
16043        }
16044        Ok(())
16045    }
16046}
16047///[`VkPipelineStageFlagBits2`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineStageFlagBits2.html)
16048#[repr(transparent)]
16049#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
16050#[doc(alias = "VkPipelineStageFlagBits2")]
16051pub struct PipelineStageFlagBits2(u64);
16052impl PipelineStageFlagBits2 {
16053    #[inline]
16054    pub const fn empty() -> Self {
16055        Self(0u64)
16056    }
16057    #[inline]
16058    pub const fn from_raw(value: u64) -> Self {
16059        Self(value)
16060    }
16061    #[inline]
16062    pub const fn as_raw(self) -> u64 {
16063        self.0
16064    }
16065    #[inline]
16066    pub const fn is_empty(self) -> bool {
16067        self.0 == 0u64
16068    }
16069    #[inline]
16070    pub const fn contains(self, other: Self) -> bool {
16071        (self.0 & other.0) == other.0
16072    }
16073    #[inline]
16074    pub const fn all() -> Self {
16075        Self(131939247849471u64)
16076    }
16077    pub const _2_NONE: Self = Self(0u64);
16078    ///Bit 0.
16079    pub const _2_TOP_OF_PIPE: Self = Self(1u64);
16080    ///Bit 1.
16081    pub const _2_DRAW_INDIRECT: Self = Self(2u64);
16082    ///Bit 2.
16083    pub const _2_VERTEX_INPUT: Self = Self(4u64);
16084    ///Bit 3.
16085    pub const _2_VERTEX_SHADER: Self = Self(8u64);
16086    ///Bit 4.
16087    pub const _2_TESSELLATION_CONTROL_SHADER: Self = Self(16u64);
16088    ///Bit 5.
16089    pub const _2_TESSELLATION_EVALUATION_SHADER: Self = Self(32u64);
16090    ///Bit 6.
16091    pub const _2_GEOMETRY_SHADER: Self = Self(64u64);
16092    ///Bit 7.
16093    pub const _2_FRAGMENT_SHADER: Self = Self(128u64);
16094    ///Bit 8.
16095    pub const _2_EARLY_FRAGMENT_TESTS: Self = Self(256u64);
16096    ///Bit 9.
16097    pub const _2_LATE_FRAGMENT_TESTS: Self = Self(512u64);
16098    ///Bit 10.
16099    pub const _2_COLOR_ATTACHMENT_OUTPUT: Self = Self(1024u64);
16100    ///Bit 11.
16101    pub const _2_COMPUTE_SHADER: Self = Self(2048u64);
16102    ///Bit 12.
16103    pub const _2_ALL_TRANSFER: Self = Self(4096u64);
16104    pub const _2_TRANSFER: Self = Self::_2_ALL_TRANSFER;
16105    ///Bit 13.
16106    pub const _2_BOTTOM_OF_PIPE: Self = Self(8192u64);
16107    ///Bit 14.
16108    pub const _2_HOST: Self = Self(16384u64);
16109    ///Bit 15.
16110    pub const _2_ALL_GRAPHICS: Self = Self(32768u64);
16111    ///Bit 16.
16112    pub const _2_ALL_COMMANDS: Self = Self(65536u64);
16113    ///Bit 32.
16114    pub const _2_COPY: Self = Self(4294967296u64);
16115    ///Bit 33.
16116    pub const _2_RESOLVE: Self = Self(8589934592u64);
16117    ///Bit 34.
16118    pub const _2_BLIT: Self = Self(17179869184u64);
16119    ///Bit 35.
16120    pub const _2_CLEAR: Self = Self(34359738368u64);
16121    ///Bit 36.
16122    pub const _2_INDEX_INPUT: Self = Self(68719476736u64);
16123    ///Bit 37.
16124    pub const _2_VERTEX_ATTRIBUTE_INPUT: Self = Self(137438953472u64);
16125    ///Bit 38.
16126    pub const _2_PRE_RASTERIZATION_SHADERS: Self = Self(274877906944u64);
16127    ///Bit 26.
16128    pub const _2_VIDEO_DECODE: Self = Self(67108864u64);
16129    ///Bit 27.
16130    pub const _2_VIDEO_ENCODE: Self = Self(134217728u64);
16131    ///Bit 24.
16132    pub const _2_TRANSFORM_FEEDBACK: Self = Self(16777216u64);
16133    ///Bit 18.
16134    pub const _2_CONDITIONAL_RENDERING: Self = Self(262144u64);
16135    ///Bit 17.
16136    pub const _2_COMMAND_PREPROCESS: Self = Self(131072u64);
16137    ///Bit 22.
16138    pub const _2_FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(4194304u64);
16139    pub const _2_SHADING_RATE_IMAGE: Self = Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT;
16140    ///Bit 25.
16141    pub const _2_ACCELERATION_STRUCTURE_BUILD: Self = Self(33554432u64);
16142    ///Bit 21.
16143    pub const _2_RAY_TRACING_SHADER: Self = Self(2097152u64);
16144    ///Bit 23.
16145    pub const _2_FRAGMENT_DENSITY_PROCESS: Self = Self(8388608u64);
16146    ///Bit 19.
16147    pub const _2_TASK_SHADER: Self = Self(524288u64);
16148    ///Bit 20.
16149    pub const _2_MESH_SHADER: Self = Self(1048576u64);
16150    ///Bit 39.
16151    pub const _2_SUBPASS_SHADER_BIT: Self = Self(549755813888u64);
16152    pub const _2_SUBPASS_SHADING_BIT: Self = Self::_2_SUBPASS_SHADER_BIT;
16153    ///Bit 40.
16154    pub const _2_INVOCATION_MASK_BIT: Self = Self(1099511627776u64);
16155    ///Bit 28.
16156    pub const _2_ACCELERATION_STRUCTURE_COPY: Self = Self(268435456u64);
16157    ///Bit 30.
16158    pub const _2_MICROMAP_BUILD: Self = Self(1073741824u64);
16159    ///Bit 41.
16160    pub const _2_CLUSTER_CULLING_SHADER_BIT: Self = Self(2199023255552u64);
16161    ///Bit 29.
16162    pub const _2_OPTICAL_FLOW: Self = Self(536870912u64);
16163    ///Bit 44.
16164    pub const _2_CONVERT_COOPERATIVE_VECTOR_MATRIX: Self = Self(17592186044416u64);
16165    ///Bit 42.
16166    pub const _2_DATA_GRAPH_BIT: Self = Self(4398046511104u64);
16167    ///Bit 46.
16168    pub const _2_COPY_INDIRECT: Self = Self(70368744177664u64);
16169    ///Bit 45.
16170    pub const _2_MEMORY_DECOMPRESSION: Self = Self(35184372088832u64);
16171}
16172impl core::ops::BitOr for PipelineStageFlagBits2 {
16173    type Output = Self;
16174    #[inline]
16175    fn bitor(self, rhs: Self) -> Self {
16176        Self(self.0 | rhs.0)
16177    }
16178}
16179impl core::ops::BitOrAssign for PipelineStageFlagBits2 {
16180    #[inline]
16181    fn bitor_assign(&mut self, rhs: Self) {
16182        self.0 |= rhs.0;
16183    }
16184}
16185impl core::ops::BitAnd for PipelineStageFlagBits2 {
16186    type Output = Self;
16187    #[inline]
16188    fn bitand(self, rhs: Self) -> Self {
16189        Self(self.0 & rhs.0)
16190    }
16191}
16192impl core::ops::BitAndAssign for PipelineStageFlagBits2 {
16193    #[inline]
16194    fn bitand_assign(&mut self, rhs: Self) {
16195        self.0 &= rhs.0;
16196    }
16197}
16198impl core::ops::BitXor for PipelineStageFlagBits2 {
16199    type Output = Self;
16200    #[inline]
16201    fn bitxor(self, rhs: Self) -> Self {
16202        Self(self.0 ^ rhs.0)
16203    }
16204}
16205impl core::ops::BitXorAssign for PipelineStageFlagBits2 {
16206    #[inline]
16207    fn bitxor_assign(&mut self, rhs: Self) {
16208        self.0 ^= rhs.0;
16209    }
16210}
16211impl core::ops::Not for PipelineStageFlagBits2 {
16212    type Output = Self;
16213    #[inline]
16214    fn not(self) -> Self {
16215        Self(!self.0)
16216    }
16217}
16218impl core::fmt::Debug for PipelineStageFlagBits2 {
16219    #[allow(unused_mut, unused_variables)]
16220    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16221        let mut first = true;
16222        let mut remaining = self.0;
16223        if remaining & Self::_2_TOP_OF_PIPE.0 != 0 {
16224            if !first {
16225                f.write_str(" | ")?;
16226            }
16227            f.write_str("_2_TOP_OF_PIPE")?;
16228            remaining &= !Self::_2_TOP_OF_PIPE.0;
16229            first = false;
16230        }
16231        if remaining & Self::_2_DRAW_INDIRECT.0 != 0 {
16232            if !first {
16233                f.write_str(" | ")?;
16234            }
16235            f.write_str("_2_DRAW_INDIRECT")?;
16236            remaining &= !Self::_2_DRAW_INDIRECT.0;
16237            first = false;
16238        }
16239        if remaining & Self::_2_VERTEX_INPUT.0 != 0 {
16240            if !first {
16241                f.write_str(" | ")?;
16242            }
16243            f.write_str("_2_VERTEX_INPUT")?;
16244            remaining &= !Self::_2_VERTEX_INPUT.0;
16245            first = false;
16246        }
16247        if remaining & Self::_2_VERTEX_SHADER.0 != 0 {
16248            if !first {
16249                f.write_str(" | ")?;
16250            }
16251            f.write_str("_2_VERTEX_SHADER")?;
16252            remaining &= !Self::_2_VERTEX_SHADER.0;
16253            first = false;
16254        }
16255        if remaining & Self::_2_TESSELLATION_CONTROL_SHADER.0 != 0 {
16256            if !first {
16257                f.write_str(" | ")?;
16258            }
16259            f.write_str("_2_TESSELLATION_CONTROL_SHADER")?;
16260            remaining &= !Self::_2_TESSELLATION_CONTROL_SHADER.0;
16261            first = false;
16262        }
16263        if remaining & Self::_2_TESSELLATION_EVALUATION_SHADER.0 != 0 {
16264            if !first {
16265                f.write_str(" | ")?;
16266            }
16267            f.write_str("_2_TESSELLATION_EVALUATION_SHADER")?;
16268            remaining &= !Self::_2_TESSELLATION_EVALUATION_SHADER.0;
16269            first = false;
16270        }
16271        if remaining & Self::_2_GEOMETRY_SHADER.0 != 0 {
16272            if !first {
16273                f.write_str(" | ")?;
16274            }
16275            f.write_str("_2_GEOMETRY_SHADER")?;
16276            remaining &= !Self::_2_GEOMETRY_SHADER.0;
16277            first = false;
16278        }
16279        if remaining & Self::_2_FRAGMENT_SHADER.0 != 0 {
16280            if !first {
16281                f.write_str(" | ")?;
16282            }
16283            f.write_str("_2_FRAGMENT_SHADER")?;
16284            remaining &= !Self::_2_FRAGMENT_SHADER.0;
16285            first = false;
16286        }
16287        if remaining & Self::_2_EARLY_FRAGMENT_TESTS.0 != 0 {
16288            if !first {
16289                f.write_str(" | ")?;
16290            }
16291            f.write_str("_2_EARLY_FRAGMENT_TESTS")?;
16292            remaining &= !Self::_2_EARLY_FRAGMENT_TESTS.0;
16293            first = false;
16294        }
16295        if remaining & Self::_2_LATE_FRAGMENT_TESTS.0 != 0 {
16296            if !first {
16297                f.write_str(" | ")?;
16298            }
16299            f.write_str("_2_LATE_FRAGMENT_TESTS")?;
16300            remaining &= !Self::_2_LATE_FRAGMENT_TESTS.0;
16301            first = false;
16302        }
16303        if remaining & Self::_2_COLOR_ATTACHMENT_OUTPUT.0 != 0 {
16304            if !first {
16305                f.write_str(" | ")?;
16306            }
16307            f.write_str("_2_COLOR_ATTACHMENT_OUTPUT")?;
16308            remaining &= !Self::_2_COLOR_ATTACHMENT_OUTPUT.0;
16309            first = false;
16310        }
16311        if remaining & Self::_2_COMPUTE_SHADER.0 != 0 {
16312            if !first {
16313                f.write_str(" | ")?;
16314            }
16315            f.write_str("_2_COMPUTE_SHADER")?;
16316            remaining &= !Self::_2_COMPUTE_SHADER.0;
16317            first = false;
16318        }
16319        if remaining & Self::_2_ALL_TRANSFER.0 != 0 {
16320            if !first {
16321                f.write_str(" | ")?;
16322            }
16323            f.write_str("_2_ALL_TRANSFER")?;
16324            remaining &= !Self::_2_ALL_TRANSFER.0;
16325            first = false;
16326        }
16327        if remaining & Self::_2_BOTTOM_OF_PIPE.0 != 0 {
16328            if !first {
16329                f.write_str(" | ")?;
16330            }
16331            f.write_str("_2_BOTTOM_OF_PIPE")?;
16332            remaining &= !Self::_2_BOTTOM_OF_PIPE.0;
16333            first = false;
16334        }
16335        if remaining & Self::_2_HOST.0 != 0 {
16336            if !first {
16337                f.write_str(" | ")?;
16338            }
16339            f.write_str("_2_HOST")?;
16340            remaining &= !Self::_2_HOST.0;
16341            first = false;
16342        }
16343        if remaining & Self::_2_ALL_GRAPHICS.0 != 0 {
16344            if !first {
16345                f.write_str(" | ")?;
16346            }
16347            f.write_str("_2_ALL_GRAPHICS")?;
16348            remaining &= !Self::_2_ALL_GRAPHICS.0;
16349            first = false;
16350        }
16351        if remaining & Self::_2_ALL_COMMANDS.0 != 0 {
16352            if !first {
16353                f.write_str(" | ")?;
16354            }
16355            f.write_str("_2_ALL_COMMANDS")?;
16356            remaining &= !Self::_2_ALL_COMMANDS.0;
16357            first = false;
16358        }
16359        if remaining & Self::_2_COPY.0 != 0 {
16360            if !first {
16361                f.write_str(" | ")?;
16362            }
16363            f.write_str("_2_COPY")?;
16364            remaining &= !Self::_2_COPY.0;
16365            first = false;
16366        }
16367        if remaining & Self::_2_RESOLVE.0 != 0 {
16368            if !first {
16369                f.write_str(" | ")?;
16370            }
16371            f.write_str("_2_RESOLVE")?;
16372            remaining &= !Self::_2_RESOLVE.0;
16373            first = false;
16374        }
16375        if remaining & Self::_2_BLIT.0 != 0 {
16376            if !first {
16377                f.write_str(" | ")?;
16378            }
16379            f.write_str("_2_BLIT")?;
16380            remaining &= !Self::_2_BLIT.0;
16381            first = false;
16382        }
16383        if remaining & Self::_2_CLEAR.0 != 0 {
16384            if !first {
16385                f.write_str(" | ")?;
16386            }
16387            f.write_str("_2_CLEAR")?;
16388            remaining &= !Self::_2_CLEAR.0;
16389            first = false;
16390        }
16391        if remaining & Self::_2_INDEX_INPUT.0 != 0 {
16392            if !first {
16393                f.write_str(" | ")?;
16394            }
16395            f.write_str("_2_INDEX_INPUT")?;
16396            remaining &= !Self::_2_INDEX_INPUT.0;
16397            first = false;
16398        }
16399        if remaining & Self::_2_VERTEX_ATTRIBUTE_INPUT.0 != 0 {
16400            if !first {
16401                f.write_str(" | ")?;
16402            }
16403            f.write_str("_2_VERTEX_ATTRIBUTE_INPUT")?;
16404            remaining &= !Self::_2_VERTEX_ATTRIBUTE_INPUT.0;
16405            first = false;
16406        }
16407        if remaining & Self::_2_PRE_RASTERIZATION_SHADERS.0 != 0 {
16408            if !first {
16409                f.write_str(" | ")?;
16410            }
16411            f.write_str("_2_PRE_RASTERIZATION_SHADERS")?;
16412            remaining &= !Self::_2_PRE_RASTERIZATION_SHADERS.0;
16413            first = false;
16414        }
16415        if remaining & Self::_2_VIDEO_DECODE.0 != 0 {
16416            if !first {
16417                f.write_str(" | ")?;
16418            }
16419            f.write_str("_2_VIDEO_DECODE")?;
16420            remaining &= !Self::_2_VIDEO_DECODE.0;
16421            first = false;
16422        }
16423        if remaining & Self::_2_VIDEO_ENCODE.0 != 0 {
16424            if !first {
16425                f.write_str(" | ")?;
16426            }
16427            f.write_str("_2_VIDEO_ENCODE")?;
16428            remaining &= !Self::_2_VIDEO_ENCODE.0;
16429            first = false;
16430        }
16431        if remaining & Self::_2_TRANSFORM_FEEDBACK.0 != 0 {
16432            if !first {
16433                f.write_str(" | ")?;
16434            }
16435            f.write_str("_2_TRANSFORM_FEEDBACK")?;
16436            remaining &= !Self::_2_TRANSFORM_FEEDBACK.0;
16437            first = false;
16438        }
16439        if remaining & Self::_2_CONDITIONAL_RENDERING.0 != 0 {
16440            if !first {
16441                f.write_str(" | ")?;
16442            }
16443            f.write_str("_2_CONDITIONAL_RENDERING")?;
16444            remaining &= !Self::_2_CONDITIONAL_RENDERING.0;
16445            first = false;
16446        }
16447        if remaining & Self::_2_COMMAND_PREPROCESS.0 != 0 {
16448            if !first {
16449                f.write_str(" | ")?;
16450            }
16451            f.write_str("_2_COMMAND_PREPROCESS")?;
16452            remaining &= !Self::_2_COMMAND_PREPROCESS.0;
16453            first = false;
16454        }
16455        if remaining & Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
16456            if !first {
16457                f.write_str(" | ")?;
16458            }
16459            f.write_str("_2_FRAGMENT_SHADING_RATE_ATTACHMENT")?;
16460            remaining &= !Self::_2_FRAGMENT_SHADING_RATE_ATTACHMENT.0;
16461            first = false;
16462        }
16463        if remaining & Self::_2_ACCELERATION_STRUCTURE_BUILD.0 != 0 {
16464            if !first {
16465                f.write_str(" | ")?;
16466            }
16467            f.write_str("_2_ACCELERATION_STRUCTURE_BUILD")?;
16468            remaining &= !Self::_2_ACCELERATION_STRUCTURE_BUILD.0;
16469            first = false;
16470        }
16471        if remaining & Self::_2_RAY_TRACING_SHADER.0 != 0 {
16472            if !first {
16473                f.write_str(" | ")?;
16474            }
16475            f.write_str("_2_RAY_TRACING_SHADER")?;
16476            remaining &= !Self::_2_RAY_TRACING_SHADER.0;
16477            first = false;
16478        }
16479        if remaining & Self::_2_FRAGMENT_DENSITY_PROCESS.0 != 0 {
16480            if !first {
16481                f.write_str(" | ")?;
16482            }
16483            f.write_str("_2_FRAGMENT_DENSITY_PROCESS")?;
16484            remaining &= !Self::_2_FRAGMENT_DENSITY_PROCESS.0;
16485            first = false;
16486        }
16487        if remaining & Self::_2_TASK_SHADER.0 != 0 {
16488            if !first {
16489                f.write_str(" | ")?;
16490            }
16491            f.write_str("_2_TASK_SHADER")?;
16492            remaining &= !Self::_2_TASK_SHADER.0;
16493            first = false;
16494        }
16495        if remaining & Self::_2_MESH_SHADER.0 != 0 {
16496            if !first {
16497                f.write_str(" | ")?;
16498            }
16499            f.write_str("_2_MESH_SHADER")?;
16500            remaining &= !Self::_2_MESH_SHADER.0;
16501            first = false;
16502        }
16503        if remaining & Self::_2_SUBPASS_SHADER_BIT.0 != 0 {
16504            if !first {
16505                f.write_str(" | ")?;
16506            }
16507            f.write_str("_2_SUBPASS_SHADER_BIT")?;
16508            remaining &= !Self::_2_SUBPASS_SHADER_BIT.0;
16509            first = false;
16510        }
16511        if remaining & Self::_2_INVOCATION_MASK_BIT.0 != 0 {
16512            if !first {
16513                f.write_str(" | ")?;
16514            }
16515            f.write_str("_2_INVOCATION_MASK_BIT")?;
16516            remaining &= !Self::_2_INVOCATION_MASK_BIT.0;
16517            first = false;
16518        }
16519        if remaining & Self::_2_ACCELERATION_STRUCTURE_COPY.0 != 0 {
16520            if !first {
16521                f.write_str(" | ")?;
16522            }
16523            f.write_str("_2_ACCELERATION_STRUCTURE_COPY")?;
16524            remaining &= !Self::_2_ACCELERATION_STRUCTURE_COPY.0;
16525            first = false;
16526        }
16527        if remaining & Self::_2_MICROMAP_BUILD.0 != 0 {
16528            if !first {
16529                f.write_str(" | ")?;
16530            }
16531            f.write_str("_2_MICROMAP_BUILD")?;
16532            remaining &= !Self::_2_MICROMAP_BUILD.0;
16533            first = false;
16534        }
16535        if remaining & Self::_2_CLUSTER_CULLING_SHADER_BIT.0 != 0 {
16536            if !first {
16537                f.write_str(" | ")?;
16538            }
16539            f.write_str("_2_CLUSTER_CULLING_SHADER_BIT")?;
16540            remaining &= !Self::_2_CLUSTER_CULLING_SHADER_BIT.0;
16541            first = false;
16542        }
16543        if remaining & Self::_2_OPTICAL_FLOW.0 != 0 {
16544            if !first {
16545                f.write_str(" | ")?;
16546            }
16547            f.write_str("_2_OPTICAL_FLOW")?;
16548            remaining &= !Self::_2_OPTICAL_FLOW.0;
16549            first = false;
16550        }
16551        if remaining & Self::_2_CONVERT_COOPERATIVE_VECTOR_MATRIX.0 != 0 {
16552            if !first {
16553                f.write_str(" | ")?;
16554            }
16555            f.write_str("_2_CONVERT_COOPERATIVE_VECTOR_MATRIX")?;
16556            remaining &= !Self::_2_CONVERT_COOPERATIVE_VECTOR_MATRIX.0;
16557            first = false;
16558        }
16559        if remaining & Self::_2_DATA_GRAPH_BIT.0 != 0 {
16560            if !first {
16561                f.write_str(" | ")?;
16562            }
16563            f.write_str("_2_DATA_GRAPH_BIT")?;
16564            remaining &= !Self::_2_DATA_GRAPH_BIT.0;
16565            first = false;
16566        }
16567        if remaining & Self::_2_COPY_INDIRECT.0 != 0 {
16568            if !first {
16569                f.write_str(" | ")?;
16570            }
16571            f.write_str("_2_COPY_INDIRECT")?;
16572            remaining &= !Self::_2_COPY_INDIRECT.0;
16573            first = false;
16574        }
16575        if remaining & Self::_2_MEMORY_DECOMPRESSION.0 != 0 {
16576            if !first {
16577                f.write_str(" | ")?;
16578            }
16579            f.write_str("_2_MEMORY_DECOMPRESSION")?;
16580            remaining &= !Self::_2_MEMORY_DECOMPRESSION.0;
16581            first = false;
16582        }
16583        if remaining != 0u64 {
16584            if !first {
16585                f.write_str(" | ")?;
16586            }
16587            write!(f, "{:#x}", remaining)?;
16588        } else if first {
16589            f.write_str("(empty)")?;
16590        }
16591        Ok(())
16592    }
16593}
16594///[`VkPresentGravityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentGravityFlagBitsKHR.html)
16595#[repr(transparent)]
16596#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
16597#[doc(alias = "VkPresentGravityFlagBitsKHR")]
16598pub struct PresentGravityFlagBitsKHR(u32);
16599impl PresentGravityFlagBitsKHR {
16600    #[inline]
16601    pub const fn empty() -> Self {
16602        Self(0u32)
16603    }
16604    #[inline]
16605    pub const fn from_raw(value: u32) -> Self {
16606        Self(value)
16607    }
16608    #[inline]
16609    pub const fn as_raw(self) -> u32 {
16610        self.0
16611    }
16612    #[inline]
16613    pub const fn is_empty(self) -> bool {
16614        self.0 == 0u32
16615    }
16616    #[inline]
16617    pub const fn contains(self, other: Self) -> bool {
16618        (self.0 & other.0) == other.0
16619    }
16620    #[inline]
16621    pub const fn all() -> Self {
16622        Self(7u32)
16623    }
16624    ///Bit 0.
16625    pub const MIN: Self = Self(1u32);
16626    ///Bit 1.
16627    pub const MAX: Self = Self(2u32);
16628    ///Bit 2.
16629    pub const CENTERED: Self = Self(4u32);
16630}
16631impl core::ops::BitOr for PresentGravityFlagBitsKHR {
16632    type Output = Self;
16633    #[inline]
16634    fn bitor(self, rhs: Self) -> Self {
16635        Self(self.0 | rhs.0)
16636    }
16637}
16638impl core::ops::BitOrAssign for PresentGravityFlagBitsKHR {
16639    #[inline]
16640    fn bitor_assign(&mut self, rhs: Self) {
16641        self.0 |= rhs.0;
16642    }
16643}
16644impl core::ops::BitAnd for PresentGravityFlagBitsKHR {
16645    type Output = Self;
16646    #[inline]
16647    fn bitand(self, rhs: Self) -> Self {
16648        Self(self.0 & rhs.0)
16649    }
16650}
16651impl core::ops::BitAndAssign for PresentGravityFlagBitsKHR {
16652    #[inline]
16653    fn bitand_assign(&mut self, rhs: Self) {
16654        self.0 &= rhs.0;
16655    }
16656}
16657impl core::ops::BitXor for PresentGravityFlagBitsKHR {
16658    type Output = Self;
16659    #[inline]
16660    fn bitxor(self, rhs: Self) -> Self {
16661        Self(self.0 ^ rhs.0)
16662    }
16663}
16664impl core::ops::BitXorAssign for PresentGravityFlagBitsKHR {
16665    #[inline]
16666    fn bitxor_assign(&mut self, rhs: Self) {
16667        self.0 ^= rhs.0;
16668    }
16669}
16670impl core::ops::Not for PresentGravityFlagBitsKHR {
16671    type Output = Self;
16672    #[inline]
16673    fn not(self) -> Self {
16674        Self(!self.0)
16675    }
16676}
16677impl core::fmt::Debug for PresentGravityFlagBitsKHR {
16678    #[allow(unused_mut, unused_variables)]
16679    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16680        let mut first = true;
16681        let mut remaining = self.0;
16682        if remaining & Self::MIN.0 != 0 {
16683            if !first {
16684                f.write_str(" | ")?;
16685            }
16686            f.write_str("MIN")?;
16687            remaining &= !Self::MIN.0;
16688            first = false;
16689        }
16690        if remaining & Self::MAX.0 != 0 {
16691            if !first {
16692                f.write_str(" | ")?;
16693            }
16694            f.write_str("MAX")?;
16695            remaining &= !Self::MAX.0;
16696            first = false;
16697        }
16698        if remaining & Self::CENTERED.0 != 0 {
16699            if !first {
16700                f.write_str(" | ")?;
16701            }
16702            f.write_str("CENTERED")?;
16703            remaining &= !Self::CENTERED.0;
16704            first = false;
16705        }
16706        if remaining != 0u32 {
16707            if !first {
16708                f.write_str(" | ")?;
16709            }
16710            write!(f, "{:#x}", remaining)?;
16711        } else if first {
16712            f.write_str("(empty)")?;
16713        }
16714        Ok(())
16715    }
16716}
16717///[`VkPresentScalingFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentScalingFlagBitsKHR.html)
16718#[repr(transparent)]
16719#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
16720#[doc(alias = "VkPresentScalingFlagBitsKHR")]
16721pub struct PresentScalingFlagBitsKHR(u32);
16722impl PresentScalingFlagBitsKHR {
16723    #[inline]
16724    pub const fn empty() -> Self {
16725        Self(0u32)
16726    }
16727    #[inline]
16728    pub const fn from_raw(value: u32) -> Self {
16729        Self(value)
16730    }
16731    #[inline]
16732    pub const fn as_raw(self) -> u32 {
16733        self.0
16734    }
16735    #[inline]
16736    pub const fn is_empty(self) -> bool {
16737        self.0 == 0u32
16738    }
16739    #[inline]
16740    pub const fn contains(self, other: Self) -> bool {
16741        (self.0 & other.0) == other.0
16742    }
16743    #[inline]
16744    pub const fn all() -> Self {
16745        Self(7u32)
16746    }
16747    ///Bit 0.
16748    pub const ONE_TO_ONE: Self = Self(1u32);
16749    ///Bit 1.
16750    pub const ASPECT_RATIO_STRETCH: Self = Self(2u32);
16751    ///Bit 2.
16752    pub const STRETCH: Self = Self(4u32);
16753}
16754impl core::ops::BitOr for PresentScalingFlagBitsKHR {
16755    type Output = Self;
16756    #[inline]
16757    fn bitor(self, rhs: Self) -> Self {
16758        Self(self.0 | rhs.0)
16759    }
16760}
16761impl core::ops::BitOrAssign for PresentScalingFlagBitsKHR {
16762    #[inline]
16763    fn bitor_assign(&mut self, rhs: Self) {
16764        self.0 |= rhs.0;
16765    }
16766}
16767impl core::ops::BitAnd for PresentScalingFlagBitsKHR {
16768    type Output = Self;
16769    #[inline]
16770    fn bitand(self, rhs: Self) -> Self {
16771        Self(self.0 & rhs.0)
16772    }
16773}
16774impl core::ops::BitAndAssign for PresentScalingFlagBitsKHR {
16775    #[inline]
16776    fn bitand_assign(&mut self, rhs: Self) {
16777        self.0 &= rhs.0;
16778    }
16779}
16780impl core::ops::BitXor for PresentScalingFlagBitsKHR {
16781    type Output = Self;
16782    #[inline]
16783    fn bitxor(self, rhs: Self) -> Self {
16784        Self(self.0 ^ rhs.0)
16785    }
16786}
16787impl core::ops::BitXorAssign for PresentScalingFlagBitsKHR {
16788    #[inline]
16789    fn bitxor_assign(&mut self, rhs: Self) {
16790        self.0 ^= rhs.0;
16791    }
16792}
16793impl core::ops::Not for PresentScalingFlagBitsKHR {
16794    type Output = Self;
16795    #[inline]
16796    fn not(self) -> Self {
16797        Self(!self.0)
16798    }
16799}
16800impl core::fmt::Debug for PresentScalingFlagBitsKHR {
16801    #[allow(unused_mut, unused_variables)]
16802    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16803        let mut first = true;
16804        let mut remaining = self.0;
16805        if remaining & Self::ONE_TO_ONE.0 != 0 {
16806            if !first {
16807                f.write_str(" | ")?;
16808            }
16809            f.write_str("ONE_TO_ONE")?;
16810            remaining &= !Self::ONE_TO_ONE.0;
16811            first = false;
16812        }
16813        if remaining & Self::ASPECT_RATIO_STRETCH.0 != 0 {
16814            if !first {
16815                f.write_str(" | ")?;
16816            }
16817            f.write_str("ASPECT_RATIO_STRETCH")?;
16818            remaining &= !Self::ASPECT_RATIO_STRETCH.0;
16819            first = false;
16820        }
16821        if remaining & Self::STRETCH.0 != 0 {
16822            if !first {
16823                f.write_str(" | ")?;
16824            }
16825            f.write_str("STRETCH")?;
16826            remaining &= !Self::STRETCH.0;
16827            first = false;
16828        }
16829        if remaining != 0u32 {
16830            if !first {
16831                f.write_str(" | ")?;
16832            }
16833            write!(f, "{:#x}", remaining)?;
16834        } else if first {
16835            f.write_str("(empty)")?;
16836        }
16837        Ok(())
16838    }
16839}
16840///[`VkPresentStageFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentStageFlagBitsEXT.html)
16841#[repr(transparent)]
16842#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
16843#[doc(alias = "VkPresentStageFlagBitsEXT")]
16844pub struct PresentStageFlagBitsEXT(u32);
16845impl PresentStageFlagBitsEXT {
16846    #[inline]
16847    pub const fn empty() -> Self {
16848        Self(0u32)
16849    }
16850    #[inline]
16851    pub const fn from_raw(value: u32) -> Self {
16852        Self(value)
16853    }
16854    #[inline]
16855    pub const fn as_raw(self) -> u32 {
16856        self.0
16857    }
16858    #[inline]
16859    pub const fn is_empty(self) -> bool {
16860        self.0 == 0u32
16861    }
16862    #[inline]
16863    pub const fn contains(self, other: Self) -> bool {
16864        (self.0 & other.0) == other.0
16865    }
16866    #[inline]
16867    pub const fn all() -> Self {
16868        Self(15u32)
16869    }
16870    ///Bit 0.
16871    pub const QUEUE_OPERATIONS_END: Self = Self(1u32);
16872    ///Bit 1.
16873    pub const REQUEST_DEQUEUED: Self = Self(2u32);
16874    ///Bit 2.
16875    pub const IMAGE_FIRST_PIXEL_OUT: Self = Self(4u32);
16876    ///Bit 3.
16877    pub const IMAGE_FIRST_PIXEL_VISIBLE: Self = Self(8u32);
16878}
16879impl core::ops::BitOr for PresentStageFlagBitsEXT {
16880    type Output = Self;
16881    #[inline]
16882    fn bitor(self, rhs: Self) -> Self {
16883        Self(self.0 | rhs.0)
16884    }
16885}
16886impl core::ops::BitOrAssign for PresentStageFlagBitsEXT {
16887    #[inline]
16888    fn bitor_assign(&mut self, rhs: Self) {
16889        self.0 |= rhs.0;
16890    }
16891}
16892impl core::ops::BitAnd for PresentStageFlagBitsEXT {
16893    type Output = Self;
16894    #[inline]
16895    fn bitand(self, rhs: Self) -> Self {
16896        Self(self.0 & rhs.0)
16897    }
16898}
16899impl core::ops::BitAndAssign for PresentStageFlagBitsEXT {
16900    #[inline]
16901    fn bitand_assign(&mut self, rhs: Self) {
16902        self.0 &= rhs.0;
16903    }
16904}
16905impl core::ops::BitXor for PresentStageFlagBitsEXT {
16906    type Output = Self;
16907    #[inline]
16908    fn bitxor(self, rhs: Self) -> Self {
16909        Self(self.0 ^ rhs.0)
16910    }
16911}
16912impl core::ops::BitXorAssign for PresentStageFlagBitsEXT {
16913    #[inline]
16914    fn bitxor_assign(&mut self, rhs: Self) {
16915        self.0 ^= rhs.0;
16916    }
16917}
16918impl core::ops::Not for PresentStageFlagBitsEXT {
16919    type Output = Self;
16920    #[inline]
16921    fn not(self) -> Self {
16922        Self(!self.0)
16923    }
16924}
16925impl core::fmt::Debug for PresentStageFlagBitsEXT {
16926    #[allow(unused_mut, unused_variables)]
16927    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16928        let mut first = true;
16929        let mut remaining = self.0;
16930        if remaining & Self::QUEUE_OPERATIONS_END.0 != 0 {
16931            if !first {
16932                f.write_str(" | ")?;
16933            }
16934            f.write_str("QUEUE_OPERATIONS_END")?;
16935            remaining &= !Self::QUEUE_OPERATIONS_END.0;
16936            first = false;
16937        }
16938        if remaining & Self::REQUEST_DEQUEUED.0 != 0 {
16939            if !first {
16940                f.write_str(" | ")?;
16941            }
16942            f.write_str("REQUEST_DEQUEUED")?;
16943            remaining &= !Self::REQUEST_DEQUEUED.0;
16944            first = false;
16945        }
16946        if remaining & Self::IMAGE_FIRST_PIXEL_OUT.0 != 0 {
16947            if !first {
16948                f.write_str(" | ")?;
16949            }
16950            f.write_str("IMAGE_FIRST_PIXEL_OUT")?;
16951            remaining &= !Self::IMAGE_FIRST_PIXEL_OUT.0;
16952            first = false;
16953        }
16954        if remaining & Self::IMAGE_FIRST_PIXEL_VISIBLE.0 != 0 {
16955            if !first {
16956                f.write_str(" | ")?;
16957            }
16958            f.write_str("IMAGE_FIRST_PIXEL_VISIBLE")?;
16959            remaining &= !Self::IMAGE_FIRST_PIXEL_VISIBLE.0;
16960            first = false;
16961        }
16962        if remaining != 0u32 {
16963            if !first {
16964                f.write_str(" | ")?;
16965            }
16966            write!(f, "{:#x}", remaining)?;
16967        } else if first {
16968            f.write_str("(empty)")?;
16969        }
16970        Ok(())
16971    }
16972}
16973///[`VkPresentTimingInfoFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimingInfoFlagBitsEXT.html)
16974#[repr(transparent)]
16975#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
16976#[doc(alias = "VkPresentTimingInfoFlagBitsEXT")]
16977pub struct PresentTimingInfoFlagBitsEXT(u32);
16978impl PresentTimingInfoFlagBitsEXT {
16979    #[inline]
16980    pub const fn empty() -> Self {
16981        Self(0u32)
16982    }
16983    #[inline]
16984    pub const fn from_raw(value: u32) -> Self {
16985        Self(value)
16986    }
16987    #[inline]
16988    pub const fn as_raw(self) -> u32 {
16989        self.0
16990    }
16991    #[inline]
16992    pub const fn is_empty(self) -> bool {
16993        self.0 == 0u32
16994    }
16995    #[inline]
16996    pub const fn contains(self, other: Self) -> bool {
16997        (self.0 & other.0) == other.0
16998    }
16999    #[inline]
17000    pub const fn all() -> Self {
17001        Self(3u32)
17002    }
17003    ///Bit 0.
17004    pub const PRESENT_AT_RELATIVE_TIME: Self = Self(1u32);
17005    ///Bit 1.
17006    pub const PRESENT_AT_NEAREST_REFRESH_CYCLE: Self = Self(2u32);
17007}
17008impl core::ops::BitOr for PresentTimingInfoFlagBitsEXT {
17009    type Output = Self;
17010    #[inline]
17011    fn bitor(self, rhs: Self) -> Self {
17012        Self(self.0 | rhs.0)
17013    }
17014}
17015impl core::ops::BitOrAssign for PresentTimingInfoFlagBitsEXT {
17016    #[inline]
17017    fn bitor_assign(&mut self, rhs: Self) {
17018        self.0 |= rhs.0;
17019    }
17020}
17021impl core::ops::BitAnd for PresentTimingInfoFlagBitsEXT {
17022    type Output = Self;
17023    #[inline]
17024    fn bitand(self, rhs: Self) -> Self {
17025        Self(self.0 & rhs.0)
17026    }
17027}
17028impl core::ops::BitAndAssign for PresentTimingInfoFlagBitsEXT {
17029    #[inline]
17030    fn bitand_assign(&mut self, rhs: Self) {
17031        self.0 &= rhs.0;
17032    }
17033}
17034impl core::ops::BitXor for PresentTimingInfoFlagBitsEXT {
17035    type Output = Self;
17036    #[inline]
17037    fn bitxor(self, rhs: Self) -> Self {
17038        Self(self.0 ^ rhs.0)
17039    }
17040}
17041impl core::ops::BitXorAssign for PresentTimingInfoFlagBitsEXT {
17042    #[inline]
17043    fn bitxor_assign(&mut self, rhs: Self) {
17044        self.0 ^= rhs.0;
17045    }
17046}
17047impl core::ops::Not for PresentTimingInfoFlagBitsEXT {
17048    type Output = Self;
17049    #[inline]
17050    fn not(self) -> Self {
17051        Self(!self.0)
17052    }
17053}
17054impl core::fmt::Debug for PresentTimingInfoFlagBitsEXT {
17055    #[allow(unused_mut, unused_variables)]
17056    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17057        let mut first = true;
17058        let mut remaining = self.0;
17059        if remaining & Self::PRESENT_AT_RELATIVE_TIME.0 != 0 {
17060            if !first {
17061                f.write_str(" | ")?;
17062            }
17063            f.write_str("PRESENT_AT_RELATIVE_TIME")?;
17064            remaining &= !Self::PRESENT_AT_RELATIVE_TIME.0;
17065            first = false;
17066        }
17067        if remaining & Self::PRESENT_AT_NEAREST_REFRESH_CYCLE.0 != 0 {
17068            if !first {
17069                f.write_str(" | ")?;
17070            }
17071            f.write_str("PRESENT_AT_NEAREST_REFRESH_CYCLE")?;
17072            remaining &= !Self::PRESENT_AT_NEAREST_REFRESH_CYCLE.0;
17073            first = false;
17074        }
17075        if remaining != 0u32 {
17076            if !first {
17077                f.write_str(" | ")?;
17078            }
17079            write!(f, "{:#x}", remaining)?;
17080        } else if first {
17081            f.write_str("(empty)")?;
17082        }
17083        Ok(())
17084    }
17085}
17086///[`VkPrivateDataSlotCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateFlagBits.html)
17087#[repr(transparent)]
17088#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17089#[doc(alias = "VkPrivateDataSlotCreateFlagBits")]
17090pub struct PrivateDataSlotCreateFlagBits(u32);
17091impl PrivateDataSlotCreateFlagBits {
17092    #[inline]
17093    pub const fn empty() -> Self {
17094        Self(0u32)
17095    }
17096    #[inline]
17097    pub const fn from_raw(value: u32) -> Self {
17098        Self(value)
17099    }
17100    #[inline]
17101    pub const fn as_raw(self) -> u32 {
17102        self.0
17103    }
17104    #[inline]
17105    pub const fn is_empty(self) -> bool {
17106        self.0 == 0u32
17107    }
17108    #[inline]
17109    pub const fn contains(self, other: Self) -> bool {
17110        (self.0 & other.0) == other.0
17111    }
17112    #[inline]
17113    pub const fn all() -> Self {
17114        Self(0u32)
17115    }
17116}
17117impl core::ops::BitOr for PrivateDataSlotCreateFlagBits {
17118    type Output = Self;
17119    #[inline]
17120    fn bitor(self, rhs: Self) -> Self {
17121        Self(self.0 | rhs.0)
17122    }
17123}
17124impl core::ops::BitOrAssign for PrivateDataSlotCreateFlagBits {
17125    #[inline]
17126    fn bitor_assign(&mut self, rhs: Self) {
17127        self.0 |= rhs.0;
17128    }
17129}
17130impl core::ops::BitAnd for PrivateDataSlotCreateFlagBits {
17131    type Output = Self;
17132    #[inline]
17133    fn bitand(self, rhs: Self) -> Self {
17134        Self(self.0 & rhs.0)
17135    }
17136}
17137impl core::ops::BitAndAssign for PrivateDataSlotCreateFlagBits {
17138    #[inline]
17139    fn bitand_assign(&mut self, rhs: Self) {
17140        self.0 &= rhs.0;
17141    }
17142}
17143impl core::ops::BitXor for PrivateDataSlotCreateFlagBits {
17144    type Output = Self;
17145    #[inline]
17146    fn bitxor(self, rhs: Self) -> Self {
17147        Self(self.0 ^ rhs.0)
17148    }
17149}
17150impl core::ops::BitXorAssign for PrivateDataSlotCreateFlagBits {
17151    #[inline]
17152    fn bitxor_assign(&mut self, rhs: Self) {
17153        self.0 ^= rhs.0;
17154    }
17155}
17156impl core::ops::Not for PrivateDataSlotCreateFlagBits {
17157    type Output = Self;
17158    #[inline]
17159    fn not(self) -> Self {
17160        Self(!self.0)
17161    }
17162}
17163impl core::fmt::Debug for PrivateDataSlotCreateFlagBits {
17164    #[allow(unused_mut, unused_variables)]
17165    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17166        let mut first = true;
17167        let mut remaining = self.0;
17168        if remaining != 0u32 {
17169            if !first {
17170                f.write_str(" | ")?;
17171            }
17172            write!(f, "{:#x}", remaining)?;
17173        } else if first {
17174            f.write_str("(empty)")?;
17175        }
17176        Ok(())
17177    }
17178}
17179///[`VkQueryControlFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryControlFlagBits.html)
17180#[repr(transparent)]
17181#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17182#[doc(alias = "VkQueryControlFlagBits")]
17183pub struct QueryControlFlagBits(u32);
17184impl QueryControlFlagBits {
17185    #[inline]
17186    pub const fn empty() -> Self {
17187        Self(0u32)
17188    }
17189    #[inline]
17190    pub const fn from_raw(value: u32) -> Self {
17191        Self(value)
17192    }
17193    #[inline]
17194    pub const fn as_raw(self) -> u32 {
17195        self.0
17196    }
17197    #[inline]
17198    pub const fn is_empty(self) -> bool {
17199        self.0 == 0u32
17200    }
17201    #[inline]
17202    pub const fn contains(self, other: Self) -> bool {
17203        (self.0 & other.0) == other.0
17204    }
17205    #[inline]
17206    pub const fn all() -> Self {
17207        Self(1u32)
17208    }
17209    ///Bit 0.
17210    pub const PRECISE: Self = Self(1u32);
17211}
17212impl core::ops::BitOr for QueryControlFlagBits {
17213    type Output = Self;
17214    #[inline]
17215    fn bitor(self, rhs: Self) -> Self {
17216        Self(self.0 | rhs.0)
17217    }
17218}
17219impl core::ops::BitOrAssign for QueryControlFlagBits {
17220    #[inline]
17221    fn bitor_assign(&mut self, rhs: Self) {
17222        self.0 |= rhs.0;
17223    }
17224}
17225impl core::ops::BitAnd for QueryControlFlagBits {
17226    type Output = Self;
17227    #[inline]
17228    fn bitand(self, rhs: Self) -> Self {
17229        Self(self.0 & rhs.0)
17230    }
17231}
17232impl core::ops::BitAndAssign for QueryControlFlagBits {
17233    #[inline]
17234    fn bitand_assign(&mut self, rhs: Self) {
17235        self.0 &= rhs.0;
17236    }
17237}
17238impl core::ops::BitXor for QueryControlFlagBits {
17239    type Output = Self;
17240    #[inline]
17241    fn bitxor(self, rhs: Self) -> Self {
17242        Self(self.0 ^ rhs.0)
17243    }
17244}
17245impl core::ops::BitXorAssign for QueryControlFlagBits {
17246    #[inline]
17247    fn bitxor_assign(&mut self, rhs: Self) {
17248        self.0 ^= rhs.0;
17249    }
17250}
17251impl core::ops::Not for QueryControlFlagBits {
17252    type Output = Self;
17253    #[inline]
17254    fn not(self) -> Self {
17255        Self(!self.0)
17256    }
17257}
17258impl core::fmt::Debug for QueryControlFlagBits {
17259    #[allow(unused_mut, unused_variables)]
17260    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17261        let mut first = true;
17262        let mut remaining = self.0;
17263        if remaining & Self::PRECISE.0 != 0 {
17264            if !first {
17265                f.write_str(" | ")?;
17266            }
17267            f.write_str("PRECISE")?;
17268            remaining &= !Self::PRECISE.0;
17269            first = false;
17270        }
17271        if remaining != 0u32 {
17272            if !first {
17273                f.write_str(" | ")?;
17274            }
17275            write!(f, "{:#x}", remaining)?;
17276        } else if first {
17277            f.write_str("(empty)")?;
17278        }
17279        Ok(())
17280    }
17281}
17282///[`VkQueryPipelineStatisticFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPipelineStatisticFlagBits.html)
17283#[repr(transparent)]
17284#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17285#[doc(alias = "VkQueryPipelineStatisticFlagBits")]
17286pub struct QueryPipelineStatisticFlagBits(u32);
17287impl QueryPipelineStatisticFlagBits {
17288    #[inline]
17289    pub const fn empty() -> Self {
17290        Self(0u32)
17291    }
17292    #[inline]
17293    pub const fn from_raw(value: u32) -> Self {
17294        Self(value)
17295    }
17296    #[inline]
17297    pub const fn as_raw(self) -> u32 {
17298        self.0
17299    }
17300    #[inline]
17301    pub const fn is_empty(self) -> bool {
17302        self.0 == 0u32
17303    }
17304    #[inline]
17305    pub const fn contains(self, other: Self) -> bool {
17306        (self.0 & other.0) == other.0
17307    }
17308    #[inline]
17309    pub const fn all() -> Self {
17310        Self(16383u32)
17311    }
17312    ///Bit 0.
17313    pub const INPUT_ASSEMBLY_VERTICES: Self = Self(1u32);
17314    ///Bit 1.
17315    pub const INPUT_ASSEMBLY_PRIMITIVES: Self = Self(2u32);
17316    ///Bit 2.
17317    pub const VERTEX_SHADER_INVOCATIONS: Self = Self(4u32);
17318    ///Bit 3.
17319    pub const GEOMETRY_SHADER_INVOCATIONS: Self = Self(8u32);
17320    ///Bit 4.
17321    pub const GEOMETRY_SHADER_PRIMITIVES: Self = Self(16u32);
17322    ///Bit 5.
17323    pub const CLIPPING_INVOCATIONS: Self = Self(32u32);
17324    ///Bit 6.
17325    pub const CLIPPING_PRIMITIVES: Self = Self(64u32);
17326    ///Bit 7.
17327    pub const FRAGMENT_SHADER_INVOCATIONS: Self = Self(128u32);
17328    ///Bit 8.
17329    pub const TESSELLATION_CONTROL_SHADER_PATCHES: Self = Self(256u32);
17330    ///Bit 9.
17331    pub const TESSELLATION_EVALUATION_SHADER_INVOCATIONS: Self = Self(512u32);
17332    ///Bit 10.
17333    pub const COMPUTE_SHADER_INVOCATIONS: Self = Self(1024u32);
17334    ///Bit 11.
17335    pub const TASK_SHADER_INVOCATIONS: Self = Self(2048u32);
17336    ///Bit 12.
17337    pub const MESH_SHADER_INVOCATIONS: Self = Self(4096u32);
17338    ///Bit 13.
17339    pub const CLUSTER_CULLING_SHADER_INVOCATIONS_BIT: Self = Self(8192u32);
17340}
17341impl core::ops::BitOr for QueryPipelineStatisticFlagBits {
17342    type Output = Self;
17343    #[inline]
17344    fn bitor(self, rhs: Self) -> Self {
17345        Self(self.0 | rhs.0)
17346    }
17347}
17348impl core::ops::BitOrAssign for QueryPipelineStatisticFlagBits {
17349    #[inline]
17350    fn bitor_assign(&mut self, rhs: Self) {
17351        self.0 |= rhs.0;
17352    }
17353}
17354impl core::ops::BitAnd for QueryPipelineStatisticFlagBits {
17355    type Output = Self;
17356    #[inline]
17357    fn bitand(self, rhs: Self) -> Self {
17358        Self(self.0 & rhs.0)
17359    }
17360}
17361impl core::ops::BitAndAssign for QueryPipelineStatisticFlagBits {
17362    #[inline]
17363    fn bitand_assign(&mut self, rhs: Self) {
17364        self.0 &= rhs.0;
17365    }
17366}
17367impl core::ops::BitXor for QueryPipelineStatisticFlagBits {
17368    type Output = Self;
17369    #[inline]
17370    fn bitxor(self, rhs: Self) -> Self {
17371        Self(self.0 ^ rhs.0)
17372    }
17373}
17374impl core::ops::BitXorAssign for QueryPipelineStatisticFlagBits {
17375    #[inline]
17376    fn bitxor_assign(&mut self, rhs: Self) {
17377        self.0 ^= rhs.0;
17378    }
17379}
17380impl core::ops::Not for QueryPipelineStatisticFlagBits {
17381    type Output = Self;
17382    #[inline]
17383    fn not(self) -> Self {
17384        Self(!self.0)
17385    }
17386}
17387impl core::fmt::Debug for QueryPipelineStatisticFlagBits {
17388    #[allow(unused_mut, unused_variables)]
17389    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17390        let mut first = true;
17391        let mut remaining = self.0;
17392        if remaining & Self::INPUT_ASSEMBLY_VERTICES.0 != 0 {
17393            if !first {
17394                f.write_str(" | ")?;
17395            }
17396            f.write_str("INPUT_ASSEMBLY_VERTICES")?;
17397            remaining &= !Self::INPUT_ASSEMBLY_VERTICES.0;
17398            first = false;
17399        }
17400        if remaining & Self::INPUT_ASSEMBLY_PRIMITIVES.0 != 0 {
17401            if !first {
17402                f.write_str(" | ")?;
17403            }
17404            f.write_str("INPUT_ASSEMBLY_PRIMITIVES")?;
17405            remaining &= !Self::INPUT_ASSEMBLY_PRIMITIVES.0;
17406            first = false;
17407        }
17408        if remaining & Self::VERTEX_SHADER_INVOCATIONS.0 != 0 {
17409            if !first {
17410                f.write_str(" | ")?;
17411            }
17412            f.write_str("VERTEX_SHADER_INVOCATIONS")?;
17413            remaining &= !Self::VERTEX_SHADER_INVOCATIONS.0;
17414            first = false;
17415        }
17416        if remaining & Self::GEOMETRY_SHADER_INVOCATIONS.0 != 0 {
17417            if !first {
17418                f.write_str(" | ")?;
17419            }
17420            f.write_str("GEOMETRY_SHADER_INVOCATIONS")?;
17421            remaining &= !Self::GEOMETRY_SHADER_INVOCATIONS.0;
17422            first = false;
17423        }
17424        if remaining & Self::GEOMETRY_SHADER_PRIMITIVES.0 != 0 {
17425            if !first {
17426                f.write_str(" | ")?;
17427            }
17428            f.write_str("GEOMETRY_SHADER_PRIMITIVES")?;
17429            remaining &= !Self::GEOMETRY_SHADER_PRIMITIVES.0;
17430            first = false;
17431        }
17432        if remaining & Self::CLIPPING_INVOCATIONS.0 != 0 {
17433            if !first {
17434                f.write_str(" | ")?;
17435            }
17436            f.write_str("CLIPPING_INVOCATIONS")?;
17437            remaining &= !Self::CLIPPING_INVOCATIONS.0;
17438            first = false;
17439        }
17440        if remaining & Self::CLIPPING_PRIMITIVES.0 != 0 {
17441            if !first {
17442                f.write_str(" | ")?;
17443            }
17444            f.write_str("CLIPPING_PRIMITIVES")?;
17445            remaining &= !Self::CLIPPING_PRIMITIVES.0;
17446            first = false;
17447        }
17448        if remaining & Self::FRAGMENT_SHADER_INVOCATIONS.0 != 0 {
17449            if !first {
17450                f.write_str(" | ")?;
17451            }
17452            f.write_str("FRAGMENT_SHADER_INVOCATIONS")?;
17453            remaining &= !Self::FRAGMENT_SHADER_INVOCATIONS.0;
17454            first = false;
17455        }
17456        if remaining & Self::TESSELLATION_CONTROL_SHADER_PATCHES.0 != 0 {
17457            if !first {
17458                f.write_str(" | ")?;
17459            }
17460            f.write_str("TESSELLATION_CONTROL_SHADER_PATCHES")?;
17461            remaining &= !Self::TESSELLATION_CONTROL_SHADER_PATCHES.0;
17462            first = false;
17463        }
17464        if remaining & Self::TESSELLATION_EVALUATION_SHADER_INVOCATIONS.0 != 0 {
17465            if !first {
17466                f.write_str(" | ")?;
17467            }
17468            f.write_str("TESSELLATION_EVALUATION_SHADER_INVOCATIONS")?;
17469            remaining &= !Self::TESSELLATION_EVALUATION_SHADER_INVOCATIONS.0;
17470            first = false;
17471        }
17472        if remaining & Self::COMPUTE_SHADER_INVOCATIONS.0 != 0 {
17473            if !first {
17474                f.write_str(" | ")?;
17475            }
17476            f.write_str("COMPUTE_SHADER_INVOCATIONS")?;
17477            remaining &= !Self::COMPUTE_SHADER_INVOCATIONS.0;
17478            first = false;
17479        }
17480        if remaining & Self::TASK_SHADER_INVOCATIONS.0 != 0 {
17481            if !first {
17482                f.write_str(" | ")?;
17483            }
17484            f.write_str("TASK_SHADER_INVOCATIONS")?;
17485            remaining &= !Self::TASK_SHADER_INVOCATIONS.0;
17486            first = false;
17487        }
17488        if remaining & Self::MESH_SHADER_INVOCATIONS.0 != 0 {
17489            if !first {
17490                f.write_str(" | ")?;
17491            }
17492            f.write_str("MESH_SHADER_INVOCATIONS")?;
17493            remaining &= !Self::MESH_SHADER_INVOCATIONS.0;
17494            first = false;
17495        }
17496        if remaining & Self::CLUSTER_CULLING_SHADER_INVOCATIONS_BIT.0 != 0 {
17497            if !first {
17498                f.write_str(" | ")?;
17499            }
17500            f.write_str("CLUSTER_CULLING_SHADER_INVOCATIONS_BIT")?;
17501            remaining &= !Self::CLUSTER_CULLING_SHADER_INVOCATIONS_BIT.0;
17502            first = false;
17503        }
17504        if remaining != 0u32 {
17505            if !first {
17506                f.write_str(" | ")?;
17507            }
17508            write!(f, "{:#x}", remaining)?;
17509        } else if first {
17510            f.write_str("(empty)")?;
17511        }
17512        Ok(())
17513    }
17514}
17515///[`VkQueryPoolCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolCreateFlagBits.html)
17516#[repr(transparent)]
17517#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17518#[doc(alias = "VkQueryPoolCreateFlagBits")]
17519pub struct QueryPoolCreateFlagBits(u32);
17520impl QueryPoolCreateFlagBits {
17521    #[inline]
17522    pub const fn empty() -> Self {
17523        Self(0u32)
17524    }
17525    #[inline]
17526    pub const fn from_raw(value: u32) -> Self {
17527        Self(value)
17528    }
17529    #[inline]
17530    pub const fn as_raw(self) -> u32 {
17531        self.0
17532    }
17533    #[inline]
17534    pub const fn is_empty(self) -> bool {
17535        self.0 == 0u32
17536    }
17537    #[inline]
17538    pub const fn contains(self, other: Self) -> bool {
17539        (self.0 & other.0) == other.0
17540    }
17541    #[inline]
17542    pub const fn all() -> Self {
17543        Self(1u32)
17544    }
17545    ///Bit 0.
17546    pub const RESET: Self = Self(1u32);
17547}
17548impl core::ops::BitOr for QueryPoolCreateFlagBits {
17549    type Output = Self;
17550    #[inline]
17551    fn bitor(self, rhs: Self) -> Self {
17552        Self(self.0 | rhs.0)
17553    }
17554}
17555impl core::ops::BitOrAssign for QueryPoolCreateFlagBits {
17556    #[inline]
17557    fn bitor_assign(&mut self, rhs: Self) {
17558        self.0 |= rhs.0;
17559    }
17560}
17561impl core::ops::BitAnd for QueryPoolCreateFlagBits {
17562    type Output = Self;
17563    #[inline]
17564    fn bitand(self, rhs: Self) -> Self {
17565        Self(self.0 & rhs.0)
17566    }
17567}
17568impl core::ops::BitAndAssign for QueryPoolCreateFlagBits {
17569    #[inline]
17570    fn bitand_assign(&mut self, rhs: Self) {
17571        self.0 &= rhs.0;
17572    }
17573}
17574impl core::ops::BitXor for QueryPoolCreateFlagBits {
17575    type Output = Self;
17576    #[inline]
17577    fn bitxor(self, rhs: Self) -> Self {
17578        Self(self.0 ^ rhs.0)
17579    }
17580}
17581impl core::ops::BitXorAssign for QueryPoolCreateFlagBits {
17582    #[inline]
17583    fn bitxor_assign(&mut self, rhs: Self) {
17584        self.0 ^= rhs.0;
17585    }
17586}
17587impl core::ops::Not for QueryPoolCreateFlagBits {
17588    type Output = Self;
17589    #[inline]
17590    fn not(self) -> Self {
17591        Self(!self.0)
17592    }
17593}
17594impl core::fmt::Debug for QueryPoolCreateFlagBits {
17595    #[allow(unused_mut, unused_variables)]
17596    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17597        let mut first = true;
17598        let mut remaining = self.0;
17599        if remaining & Self::RESET.0 != 0 {
17600            if !first {
17601                f.write_str(" | ")?;
17602            }
17603            f.write_str("RESET")?;
17604            remaining &= !Self::RESET.0;
17605            first = false;
17606        }
17607        if remaining != 0u32 {
17608            if !first {
17609                f.write_str(" | ")?;
17610            }
17611            write!(f, "{:#x}", remaining)?;
17612        } else if first {
17613            f.write_str("(empty)")?;
17614        }
17615        Ok(())
17616    }
17617}
17618///[`VkQueryResultFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryResultFlagBits.html)
17619#[repr(transparent)]
17620#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17621#[doc(alias = "VkQueryResultFlagBits")]
17622pub struct QueryResultFlagBits(u32);
17623impl QueryResultFlagBits {
17624    #[inline]
17625    pub const fn empty() -> Self {
17626        Self(0u32)
17627    }
17628    #[inline]
17629    pub const fn from_raw(value: u32) -> Self {
17630        Self(value)
17631    }
17632    #[inline]
17633    pub const fn as_raw(self) -> u32 {
17634        self.0
17635    }
17636    #[inline]
17637    pub const fn is_empty(self) -> bool {
17638        self.0 == 0u32
17639    }
17640    #[inline]
17641    pub const fn contains(self, other: Self) -> bool {
17642        (self.0 & other.0) == other.0
17643    }
17644    #[inline]
17645    pub const fn all() -> Self {
17646        Self(31u32)
17647    }
17648    ///Bit 0.
17649    pub const _64: Self = Self(1u32);
17650    ///Bit 1.
17651    pub const WAIT: Self = Self(2u32);
17652    ///Bit 2.
17653    pub const WITH_AVAILABILITY: Self = Self(4u32);
17654    ///Bit 3.
17655    pub const PARTIAL: Self = Self(8u32);
17656    ///Bit 4.
17657    pub const WITH_STATUS: Self = Self(16u32);
17658}
17659impl core::ops::BitOr for QueryResultFlagBits {
17660    type Output = Self;
17661    #[inline]
17662    fn bitor(self, rhs: Self) -> Self {
17663        Self(self.0 | rhs.0)
17664    }
17665}
17666impl core::ops::BitOrAssign for QueryResultFlagBits {
17667    #[inline]
17668    fn bitor_assign(&mut self, rhs: Self) {
17669        self.0 |= rhs.0;
17670    }
17671}
17672impl core::ops::BitAnd for QueryResultFlagBits {
17673    type Output = Self;
17674    #[inline]
17675    fn bitand(self, rhs: Self) -> Self {
17676        Self(self.0 & rhs.0)
17677    }
17678}
17679impl core::ops::BitAndAssign for QueryResultFlagBits {
17680    #[inline]
17681    fn bitand_assign(&mut self, rhs: Self) {
17682        self.0 &= rhs.0;
17683    }
17684}
17685impl core::ops::BitXor for QueryResultFlagBits {
17686    type Output = Self;
17687    #[inline]
17688    fn bitxor(self, rhs: Self) -> Self {
17689        Self(self.0 ^ rhs.0)
17690    }
17691}
17692impl core::ops::BitXorAssign for QueryResultFlagBits {
17693    #[inline]
17694    fn bitxor_assign(&mut self, rhs: Self) {
17695        self.0 ^= rhs.0;
17696    }
17697}
17698impl core::ops::Not for QueryResultFlagBits {
17699    type Output = Self;
17700    #[inline]
17701    fn not(self) -> Self {
17702        Self(!self.0)
17703    }
17704}
17705impl core::fmt::Debug for QueryResultFlagBits {
17706    #[allow(unused_mut, unused_variables)]
17707    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17708        let mut first = true;
17709        let mut remaining = self.0;
17710        if remaining & Self::_64.0 != 0 {
17711            if !first {
17712                f.write_str(" | ")?;
17713            }
17714            f.write_str("_64")?;
17715            remaining &= !Self::_64.0;
17716            first = false;
17717        }
17718        if remaining & Self::WAIT.0 != 0 {
17719            if !first {
17720                f.write_str(" | ")?;
17721            }
17722            f.write_str("WAIT")?;
17723            remaining &= !Self::WAIT.0;
17724            first = false;
17725        }
17726        if remaining & Self::WITH_AVAILABILITY.0 != 0 {
17727            if !first {
17728                f.write_str(" | ")?;
17729            }
17730            f.write_str("WITH_AVAILABILITY")?;
17731            remaining &= !Self::WITH_AVAILABILITY.0;
17732            first = false;
17733        }
17734        if remaining & Self::PARTIAL.0 != 0 {
17735            if !first {
17736                f.write_str(" | ")?;
17737            }
17738            f.write_str("PARTIAL")?;
17739            remaining &= !Self::PARTIAL.0;
17740            first = false;
17741        }
17742        if remaining & Self::WITH_STATUS.0 != 0 {
17743            if !first {
17744                f.write_str(" | ")?;
17745            }
17746            f.write_str("WITH_STATUS")?;
17747            remaining &= !Self::WITH_STATUS.0;
17748            first = false;
17749        }
17750        if remaining != 0u32 {
17751            if !first {
17752                f.write_str(" | ")?;
17753            }
17754            write!(f, "{:#x}", remaining)?;
17755        } else if first {
17756            f.write_str("(empty)")?;
17757        }
17758        Ok(())
17759    }
17760}
17761///[`VkQueueFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFlagBits.html)
17762#[repr(transparent)]
17763#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17764#[doc(alias = "VkQueueFlagBits")]
17765pub struct QueueFlagBits(u32);
17766impl QueueFlagBits {
17767    #[inline]
17768    pub const fn empty() -> Self {
17769        Self(0u32)
17770    }
17771    #[inline]
17772    pub const fn from_raw(value: u32) -> Self {
17773        Self(value)
17774    }
17775    #[inline]
17776    pub const fn as_raw(self) -> u32 {
17777        self.0
17778    }
17779    #[inline]
17780    pub const fn is_empty(self) -> bool {
17781        self.0 == 0u32
17782    }
17783    #[inline]
17784    pub const fn contains(self, other: Self) -> bool {
17785        (self.0 & other.0) == other.0
17786    }
17787    #[inline]
17788    pub const fn all() -> Self {
17789        Self(1407u32)
17790    }
17791    ///Bit 0.
17792    pub const GRAPHICS: Self = Self(1u32);
17793    ///Bit 1.
17794    pub const COMPUTE: Self = Self(2u32);
17795    ///Bit 2.
17796    pub const TRANSFER: Self = Self(4u32);
17797    ///Bit 3.
17798    pub const SPARSE_BINDING: Self = Self(8u32);
17799    ///Bit 4.
17800    pub const PROTECTED: Self = Self(16u32);
17801    ///Bit 5.
17802    pub const VIDEO_DECODE: Self = Self(32u32);
17803    ///Bit 6.
17804    pub const VIDEO_ENCODE: Self = Self(64u32);
17805    ///Bit 8.
17806    pub const OPTICAL_FLOW: Self = Self(256u32);
17807    ///Bit 10.
17808    pub const DATA_GRAPH_BIT: Self = Self(1024u32);
17809}
17810impl core::ops::BitOr for QueueFlagBits {
17811    type Output = Self;
17812    #[inline]
17813    fn bitor(self, rhs: Self) -> Self {
17814        Self(self.0 | rhs.0)
17815    }
17816}
17817impl core::ops::BitOrAssign for QueueFlagBits {
17818    #[inline]
17819    fn bitor_assign(&mut self, rhs: Self) {
17820        self.0 |= rhs.0;
17821    }
17822}
17823impl core::ops::BitAnd for QueueFlagBits {
17824    type Output = Self;
17825    #[inline]
17826    fn bitand(self, rhs: Self) -> Self {
17827        Self(self.0 & rhs.0)
17828    }
17829}
17830impl core::ops::BitAndAssign for QueueFlagBits {
17831    #[inline]
17832    fn bitand_assign(&mut self, rhs: Self) {
17833        self.0 &= rhs.0;
17834    }
17835}
17836impl core::ops::BitXor for QueueFlagBits {
17837    type Output = Self;
17838    #[inline]
17839    fn bitxor(self, rhs: Self) -> Self {
17840        Self(self.0 ^ rhs.0)
17841    }
17842}
17843impl core::ops::BitXorAssign for QueueFlagBits {
17844    #[inline]
17845    fn bitxor_assign(&mut self, rhs: Self) {
17846        self.0 ^= rhs.0;
17847    }
17848}
17849impl core::ops::Not for QueueFlagBits {
17850    type Output = Self;
17851    #[inline]
17852    fn not(self) -> Self {
17853        Self(!self.0)
17854    }
17855}
17856impl core::fmt::Debug for QueueFlagBits {
17857    #[allow(unused_mut, unused_variables)]
17858    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17859        let mut first = true;
17860        let mut remaining = self.0;
17861        if remaining & Self::GRAPHICS.0 != 0 {
17862            if !first {
17863                f.write_str(" | ")?;
17864            }
17865            f.write_str("GRAPHICS")?;
17866            remaining &= !Self::GRAPHICS.0;
17867            first = false;
17868        }
17869        if remaining & Self::COMPUTE.0 != 0 {
17870            if !first {
17871                f.write_str(" | ")?;
17872            }
17873            f.write_str("COMPUTE")?;
17874            remaining &= !Self::COMPUTE.0;
17875            first = false;
17876        }
17877        if remaining & Self::TRANSFER.0 != 0 {
17878            if !first {
17879                f.write_str(" | ")?;
17880            }
17881            f.write_str("TRANSFER")?;
17882            remaining &= !Self::TRANSFER.0;
17883            first = false;
17884        }
17885        if remaining & Self::SPARSE_BINDING.0 != 0 {
17886            if !first {
17887                f.write_str(" | ")?;
17888            }
17889            f.write_str("SPARSE_BINDING")?;
17890            remaining &= !Self::SPARSE_BINDING.0;
17891            first = false;
17892        }
17893        if remaining & Self::PROTECTED.0 != 0 {
17894            if !first {
17895                f.write_str(" | ")?;
17896            }
17897            f.write_str("PROTECTED")?;
17898            remaining &= !Self::PROTECTED.0;
17899            first = false;
17900        }
17901        if remaining & Self::VIDEO_DECODE.0 != 0 {
17902            if !first {
17903                f.write_str(" | ")?;
17904            }
17905            f.write_str("VIDEO_DECODE")?;
17906            remaining &= !Self::VIDEO_DECODE.0;
17907            first = false;
17908        }
17909        if remaining & Self::VIDEO_ENCODE.0 != 0 {
17910            if !first {
17911                f.write_str(" | ")?;
17912            }
17913            f.write_str("VIDEO_ENCODE")?;
17914            remaining &= !Self::VIDEO_ENCODE.0;
17915            first = false;
17916        }
17917        if remaining & Self::OPTICAL_FLOW.0 != 0 {
17918            if !first {
17919                f.write_str(" | ")?;
17920            }
17921            f.write_str("OPTICAL_FLOW")?;
17922            remaining &= !Self::OPTICAL_FLOW.0;
17923            first = false;
17924        }
17925        if remaining & Self::DATA_GRAPH_BIT.0 != 0 {
17926            if !first {
17927                f.write_str(" | ")?;
17928            }
17929            f.write_str("DATA_GRAPH_BIT")?;
17930            remaining &= !Self::DATA_GRAPH_BIT.0;
17931            first = false;
17932        }
17933        if remaining != 0u32 {
17934            if !first {
17935                f.write_str(" | ")?;
17936            }
17937            write!(f, "{:#x}", remaining)?;
17938        } else if first {
17939            f.write_str("(empty)")?;
17940        }
17941        Ok(())
17942    }
17943}
17944///[`VkRefreshObjectFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRefreshObjectFlagBitsKHR.html)
17945#[repr(transparent)]
17946#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
17947#[doc(alias = "VkRefreshObjectFlagBitsKHR")]
17948pub struct RefreshObjectFlagBitsKHR(u32);
17949impl RefreshObjectFlagBitsKHR {
17950    #[inline]
17951    pub const fn empty() -> Self {
17952        Self(0u32)
17953    }
17954    #[inline]
17955    pub const fn from_raw(value: u32) -> Self {
17956        Self(value)
17957    }
17958    #[inline]
17959    pub const fn as_raw(self) -> u32 {
17960        self.0
17961    }
17962    #[inline]
17963    pub const fn is_empty(self) -> bool {
17964        self.0 == 0u32
17965    }
17966    #[inline]
17967    pub const fn contains(self, other: Self) -> bool {
17968        (self.0 & other.0) == other.0
17969    }
17970    #[inline]
17971    pub const fn all() -> Self {
17972        Self(0u32)
17973    }
17974}
17975impl core::ops::BitOr for RefreshObjectFlagBitsKHR {
17976    type Output = Self;
17977    #[inline]
17978    fn bitor(self, rhs: Self) -> Self {
17979        Self(self.0 | rhs.0)
17980    }
17981}
17982impl core::ops::BitOrAssign for RefreshObjectFlagBitsKHR {
17983    #[inline]
17984    fn bitor_assign(&mut self, rhs: Self) {
17985        self.0 |= rhs.0;
17986    }
17987}
17988impl core::ops::BitAnd for RefreshObjectFlagBitsKHR {
17989    type Output = Self;
17990    #[inline]
17991    fn bitand(self, rhs: Self) -> Self {
17992        Self(self.0 & rhs.0)
17993    }
17994}
17995impl core::ops::BitAndAssign for RefreshObjectFlagBitsKHR {
17996    #[inline]
17997    fn bitand_assign(&mut self, rhs: Self) {
17998        self.0 &= rhs.0;
17999    }
18000}
18001impl core::ops::BitXor for RefreshObjectFlagBitsKHR {
18002    type Output = Self;
18003    #[inline]
18004    fn bitxor(self, rhs: Self) -> Self {
18005        Self(self.0 ^ rhs.0)
18006    }
18007}
18008impl core::ops::BitXorAssign for RefreshObjectFlagBitsKHR {
18009    #[inline]
18010    fn bitxor_assign(&mut self, rhs: Self) {
18011        self.0 ^= rhs.0;
18012    }
18013}
18014impl core::ops::Not for RefreshObjectFlagBitsKHR {
18015    type Output = Self;
18016    #[inline]
18017    fn not(self) -> Self {
18018        Self(!self.0)
18019    }
18020}
18021impl core::fmt::Debug for RefreshObjectFlagBitsKHR {
18022    #[allow(unused_mut, unused_variables)]
18023    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18024        let mut first = true;
18025        let mut remaining = self.0;
18026        if remaining != 0u32 {
18027            if !first {
18028                f.write_str(" | ")?;
18029            }
18030            write!(f, "{:#x}", remaining)?;
18031        } else if first {
18032            f.write_str("(empty)")?;
18033        }
18034        Ok(())
18035    }
18036}
18037///[`VkRenderPassCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreateFlagBits.html)
18038#[repr(transparent)]
18039#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18040#[doc(alias = "VkRenderPassCreateFlagBits")]
18041pub struct RenderPassCreateFlagBits(u32);
18042impl RenderPassCreateFlagBits {
18043    #[inline]
18044    pub const fn empty() -> Self {
18045        Self(0u32)
18046    }
18047    #[inline]
18048    pub const fn from_raw(value: u32) -> Self {
18049        Self(value)
18050    }
18051    #[inline]
18052    pub const fn as_raw(self) -> u32 {
18053        self.0
18054    }
18055    #[inline]
18056    pub const fn is_empty(self) -> bool {
18057        self.0 == 0u32
18058    }
18059    #[inline]
18060    pub const fn contains(self, other: Self) -> bool {
18061        (self.0 & other.0) == other.0
18062    }
18063    #[inline]
18064    pub const fn all() -> Self {
18065        Self(6u32)
18066    }
18067    ///Bit 1.
18068    pub const TRANSFORM_BIT: Self = Self(2u32);
18069    ///Bit 2.
18070    pub const PER_LAYER_FRAGMENT_DENSITY_BIT: Self = Self(4u32);
18071}
18072impl core::ops::BitOr for RenderPassCreateFlagBits {
18073    type Output = Self;
18074    #[inline]
18075    fn bitor(self, rhs: Self) -> Self {
18076        Self(self.0 | rhs.0)
18077    }
18078}
18079impl core::ops::BitOrAssign for RenderPassCreateFlagBits {
18080    #[inline]
18081    fn bitor_assign(&mut self, rhs: Self) {
18082        self.0 |= rhs.0;
18083    }
18084}
18085impl core::ops::BitAnd for RenderPassCreateFlagBits {
18086    type Output = Self;
18087    #[inline]
18088    fn bitand(self, rhs: Self) -> Self {
18089        Self(self.0 & rhs.0)
18090    }
18091}
18092impl core::ops::BitAndAssign for RenderPassCreateFlagBits {
18093    #[inline]
18094    fn bitand_assign(&mut self, rhs: Self) {
18095        self.0 &= rhs.0;
18096    }
18097}
18098impl core::ops::BitXor for RenderPassCreateFlagBits {
18099    type Output = Self;
18100    #[inline]
18101    fn bitxor(self, rhs: Self) -> Self {
18102        Self(self.0 ^ rhs.0)
18103    }
18104}
18105impl core::ops::BitXorAssign for RenderPassCreateFlagBits {
18106    #[inline]
18107    fn bitxor_assign(&mut self, rhs: Self) {
18108        self.0 ^= rhs.0;
18109    }
18110}
18111impl core::ops::Not for RenderPassCreateFlagBits {
18112    type Output = Self;
18113    #[inline]
18114    fn not(self) -> Self {
18115        Self(!self.0)
18116    }
18117}
18118impl core::fmt::Debug for RenderPassCreateFlagBits {
18119    #[allow(unused_mut, unused_variables)]
18120    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18121        let mut first = true;
18122        let mut remaining = self.0;
18123        if remaining & Self::TRANSFORM_BIT.0 != 0 {
18124            if !first {
18125                f.write_str(" | ")?;
18126            }
18127            f.write_str("TRANSFORM_BIT")?;
18128            remaining &= !Self::TRANSFORM_BIT.0;
18129            first = false;
18130        }
18131        if remaining & Self::PER_LAYER_FRAGMENT_DENSITY_BIT.0 != 0 {
18132            if !first {
18133                f.write_str(" | ")?;
18134            }
18135            f.write_str("PER_LAYER_FRAGMENT_DENSITY_BIT")?;
18136            remaining &= !Self::PER_LAYER_FRAGMENT_DENSITY_BIT.0;
18137            first = false;
18138        }
18139        if remaining != 0u32 {
18140            if !first {
18141                f.write_str(" | ")?;
18142            }
18143            write!(f, "{:#x}", remaining)?;
18144        } else if first {
18145            f.write_str("(empty)")?;
18146        }
18147        Ok(())
18148    }
18149}
18150///[`VkRenderingAttachmentFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagBitsKHR.html)
18151#[repr(transparent)]
18152#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18153#[doc(alias = "VkRenderingAttachmentFlagBitsKHR")]
18154pub struct RenderingAttachmentFlagBitsKHR(u32);
18155impl RenderingAttachmentFlagBitsKHR {
18156    #[inline]
18157    pub const fn empty() -> Self {
18158        Self(0u32)
18159    }
18160    #[inline]
18161    pub const fn from_raw(value: u32) -> Self {
18162        Self(value)
18163    }
18164    #[inline]
18165    pub const fn as_raw(self) -> u32 {
18166        self.0
18167    }
18168    #[inline]
18169    pub const fn is_empty(self) -> bool {
18170        self.0 == 0u32
18171    }
18172    #[inline]
18173    pub const fn contains(self, other: Self) -> bool {
18174        (self.0 & other.0) == other.0
18175    }
18176    #[inline]
18177    pub const fn all() -> Self {
18178        Self(7u32)
18179    }
18180    ///Bit 0.
18181    pub const INPUT_ATTACHMENT_FEEDBACK: Self = Self(1u32);
18182    ///Bit 1.
18183    pub const RESOLVE_SKIP_TRANSFER_FUNCTION: Self = Self(2u32);
18184    ///Bit 2.
18185    pub const RESOLVE_ENABLE_TRANSFER_FUNCTION: Self = Self(4u32);
18186}
18187impl core::ops::BitOr for RenderingAttachmentFlagBitsKHR {
18188    type Output = Self;
18189    #[inline]
18190    fn bitor(self, rhs: Self) -> Self {
18191        Self(self.0 | rhs.0)
18192    }
18193}
18194impl core::ops::BitOrAssign for RenderingAttachmentFlagBitsKHR {
18195    #[inline]
18196    fn bitor_assign(&mut self, rhs: Self) {
18197        self.0 |= rhs.0;
18198    }
18199}
18200impl core::ops::BitAnd for RenderingAttachmentFlagBitsKHR {
18201    type Output = Self;
18202    #[inline]
18203    fn bitand(self, rhs: Self) -> Self {
18204        Self(self.0 & rhs.0)
18205    }
18206}
18207impl core::ops::BitAndAssign for RenderingAttachmentFlagBitsKHR {
18208    #[inline]
18209    fn bitand_assign(&mut self, rhs: Self) {
18210        self.0 &= rhs.0;
18211    }
18212}
18213impl core::ops::BitXor for RenderingAttachmentFlagBitsKHR {
18214    type Output = Self;
18215    #[inline]
18216    fn bitxor(self, rhs: Self) -> Self {
18217        Self(self.0 ^ rhs.0)
18218    }
18219}
18220impl core::ops::BitXorAssign for RenderingAttachmentFlagBitsKHR {
18221    #[inline]
18222    fn bitxor_assign(&mut self, rhs: Self) {
18223        self.0 ^= rhs.0;
18224    }
18225}
18226impl core::ops::Not for RenderingAttachmentFlagBitsKHR {
18227    type Output = Self;
18228    #[inline]
18229    fn not(self) -> Self {
18230        Self(!self.0)
18231    }
18232}
18233impl core::fmt::Debug for RenderingAttachmentFlagBitsKHR {
18234    #[allow(unused_mut, unused_variables)]
18235    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18236        let mut first = true;
18237        let mut remaining = self.0;
18238        if remaining & Self::INPUT_ATTACHMENT_FEEDBACK.0 != 0 {
18239            if !first {
18240                f.write_str(" | ")?;
18241            }
18242            f.write_str("INPUT_ATTACHMENT_FEEDBACK")?;
18243            remaining &= !Self::INPUT_ATTACHMENT_FEEDBACK.0;
18244            first = false;
18245        }
18246        if remaining & Self::RESOLVE_SKIP_TRANSFER_FUNCTION.0 != 0 {
18247            if !first {
18248                f.write_str(" | ")?;
18249            }
18250            f.write_str("RESOLVE_SKIP_TRANSFER_FUNCTION")?;
18251            remaining &= !Self::RESOLVE_SKIP_TRANSFER_FUNCTION.0;
18252            first = false;
18253        }
18254        if remaining & Self::RESOLVE_ENABLE_TRANSFER_FUNCTION.0 != 0 {
18255            if !first {
18256                f.write_str(" | ")?;
18257            }
18258            f.write_str("RESOLVE_ENABLE_TRANSFER_FUNCTION")?;
18259            remaining &= !Self::RESOLVE_ENABLE_TRANSFER_FUNCTION.0;
18260            first = false;
18261        }
18262        if remaining != 0u32 {
18263            if !first {
18264                f.write_str(" | ")?;
18265            }
18266            write!(f, "{:#x}", remaining)?;
18267        } else if first {
18268            f.write_str("(empty)")?;
18269        }
18270        Ok(())
18271    }
18272}
18273///[`VkRenderingFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFlagBits.html)
18274#[repr(transparent)]
18275#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18276#[doc(alias = "VkRenderingFlagBits")]
18277pub struct RenderingFlagBits(u32);
18278impl RenderingFlagBits {
18279    #[inline]
18280    pub const fn empty() -> Self {
18281        Self(0u32)
18282    }
18283    #[inline]
18284    pub const fn from_raw(value: u32) -> Self {
18285        Self(value)
18286    }
18287    #[inline]
18288    pub const fn as_raw(self) -> u32 {
18289        self.0
18290    }
18291    #[inline]
18292    pub const fn is_empty(self) -> bool {
18293        self.0 == 0u32
18294    }
18295    #[inline]
18296    pub const fn contains(self, other: Self) -> bool {
18297        (self.0 & other.0) == other.0
18298    }
18299    #[inline]
18300    pub const fn all() -> Self {
18301        Self(511u32)
18302    }
18303    ///Bit 0.
18304    pub const CONTENTS_SECONDARY_COMMAND_BUFFERS: Self = Self(1u32);
18305    ///Bit 1.
18306    pub const SUSPENDING: Self = Self(2u32);
18307    ///Bit 2.
18308    pub const RESUMING: Self = Self(4u32);
18309    ///Bit 3.
18310    pub const ENABLE_LEGACY_DITHERING: Self = Self(8u32);
18311    ///Bit 4.
18312    pub const CONTENTS_INLINE: Self = Self(16u32);
18313    ///Bit 5.
18314    pub const PER_LAYER_FRAGMENT_DENSITY_BIT: Self = Self(32u32);
18315    ///Bit 6.
18316    pub const FRAGMENT_REGION: Self = Self(64u32);
18317    ///Bit 7.
18318    pub const CUSTOM_RESOLVE: Self = Self(128u32);
18319    ///Bit 8.
18320    pub const LOCAL_READ_CONCURRENT_ACCESS_CONTROL: Self = Self(256u32);
18321}
18322impl core::ops::BitOr for RenderingFlagBits {
18323    type Output = Self;
18324    #[inline]
18325    fn bitor(self, rhs: Self) -> Self {
18326        Self(self.0 | rhs.0)
18327    }
18328}
18329impl core::ops::BitOrAssign for RenderingFlagBits {
18330    #[inline]
18331    fn bitor_assign(&mut self, rhs: Self) {
18332        self.0 |= rhs.0;
18333    }
18334}
18335impl core::ops::BitAnd for RenderingFlagBits {
18336    type Output = Self;
18337    #[inline]
18338    fn bitand(self, rhs: Self) -> Self {
18339        Self(self.0 & rhs.0)
18340    }
18341}
18342impl core::ops::BitAndAssign for RenderingFlagBits {
18343    #[inline]
18344    fn bitand_assign(&mut self, rhs: Self) {
18345        self.0 &= rhs.0;
18346    }
18347}
18348impl core::ops::BitXor for RenderingFlagBits {
18349    type Output = Self;
18350    #[inline]
18351    fn bitxor(self, rhs: Self) -> Self {
18352        Self(self.0 ^ rhs.0)
18353    }
18354}
18355impl core::ops::BitXorAssign for RenderingFlagBits {
18356    #[inline]
18357    fn bitxor_assign(&mut self, rhs: Self) {
18358        self.0 ^= rhs.0;
18359    }
18360}
18361impl core::ops::Not for RenderingFlagBits {
18362    type Output = Self;
18363    #[inline]
18364    fn not(self) -> Self {
18365        Self(!self.0)
18366    }
18367}
18368impl core::fmt::Debug for RenderingFlagBits {
18369    #[allow(unused_mut, unused_variables)]
18370    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18371        let mut first = true;
18372        let mut remaining = self.0;
18373        if remaining & Self::CONTENTS_SECONDARY_COMMAND_BUFFERS.0 != 0 {
18374            if !first {
18375                f.write_str(" | ")?;
18376            }
18377            f.write_str("CONTENTS_SECONDARY_COMMAND_BUFFERS")?;
18378            remaining &= !Self::CONTENTS_SECONDARY_COMMAND_BUFFERS.0;
18379            first = false;
18380        }
18381        if remaining & Self::SUSPENDING.0 != 0 {
18382            if !first {
18383                f.write_str(" | ")?;
18384            }
18385            f.write_str("SUSPENDING")?;
18386            remaining &= !Self::SUSPENDING.0;
18387            first = false;
18388        }
18389        if remaining & Self::RESUMING.0 != 0 {
18390            if !first {
18391                f.write_str(" | ")?;
18392            }
18393            f.write_str("RESUMING")?;
18394            remaining &= !Self::RESUMING.0;
18395            first = false;
18396        }
18397        if remaining & Self::ENABLE_LEGACY_DITHERING.0 != 0 {
18398            if !first {
18399                f.write_str(" | ")?;
18400            }
18401            f.write_str("ENABLE_LEGACY_DITHERING")?;
18402            remaining &= !Self::ENABLE_LEGACY_DITHERING.0;
18403            first = false;
18404        }
18405        if remaining & Self::CONTENTS_INLINE.0 != 0 {
18406            if !first {
18407                f.write_str(" | ")?;
18408            }
18409            f.write_str("CONTENTS_INLINE")?;
18410            remaining &= !Self::CONTENTS_INLINE.0;
18411            first = false;
18412        }
18413        if remaining & Self::PER_LAYER_FRAGMENT_DENSITY_BIT.0 != 0 {
18414            if !first {
18415                f.write_str(" | ")?;
18416            }
18417            f.write_str("PER_LAYER_FRAGMENT_DENSITY_BIT")?;
18418            remaining &= !Self::PER_LAYER_FRAGMENT_DENSITY_BIT.0;
18419            first = false;
18420        }
18421        if remaining & Self::FRAGMENT_REGION.0 != 0 {
18422            if !first {
18423                f.write_str(" | ")?;
18424            }
18425            f.write_str("FRAGMENT_REGION")?;
18426            remaining &= !Self::FRAGMENT_REGION.0;
18427            first = false;
18428        }
18429        if remaining & Self::CUSTOM_RESOLVE.0 != 0 {
18430            if !first {
18431                f.write_str(" | ")?;
18432            }
18433            f.write_str("CUSTOM_RESOLVE")?;
18434            remaining &= !Self::CUSTOM_RESOLVE.0;
18435            first = false;
18436        }
18437        if remaining & Self::LOCAL_READ_CONCURRENT_ACCESS_CONTROL.0 != 0 {
18438            if !first {
18439                f.write_str(" | ")?;
18440            }
18441            f.write_str("LOCAL_READ_CONCURRENT_ACCESS_CONTROL")?;
18442            remaining &= !Self::LOCAL_READ_CONCURRENT_ACCESS_CONTROL.0;
18443            first = false;
18444        }
18445        if remaining != 0u32 {
18446            if !first {
18447                f.write_str(" | ")?;
18448            }
18449            write!(f, "{:#x}", remaining)?;
18450        } else if first {
18451            f.write_str("(empty)")?;
18452        }
18453        Ok(())
18454    }
18455}
18456///[`VkResolveImageFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveImageFlagBitsKHR.html)
18457#[repr(transparent)]
18458#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18459#[doc(alias = "VkResolveImageFlagBitsKHR")]
18460pub struct ResolveImageFlagBitsKHR(u32);
18461impl ResolveImageFlagBitsKHR {
18462    #[inline]
18463    pub const fn empty() -> Self {
18464        Self(0u32)
18465    }
18466    #[inline]
18467    pub const fn from_raw(value: u32) -> Self {
18468        Self(value)
18469    }
18470    #[inline]
18471    pub const fn as_raw(self) -> u32 {
18472        self.0
18473    }
18474    #[inline]
18475    pub const fn is_empty(self) -> bool {
18476        self.0 == 0u32
18477    }
18478    #[inline]
18479    pub const fn contains(self, other: Self) -> bool {
18480        (self.0 & other.0) == other.0
18481    }
18482    #[inline]
18483    pub const fn all() -> Self {
18484        Self(3u32)
18485    }
18486    ///Bit 0.
18487    pub const SKIP_TRANSFER_FUNCTION: Self = Self(1u32);
18488    ///Bit 1.
18489    pub const ENABLE_TRANSFER_FUNCTION: Self = Self(2u32);
18490}
18491impl core::ops::BitOr for ResolveImageFlagBitsKHR {
18492    type Output = Self;
18493    #[inline]
18494    fn bitor(self, rhs: Self) -> Self {
18495        Self(self.0 | rhs.0)
18496    }
18497}
18498impl core::ops::BitOrAssign for ResolveImageFlagBitsKHR {
18499    #[inline]
18500    fn bitor_assign(&mut self, rhs: Self) {
18501        self.0 |= rhs.0;
18502    }
18503}
18504impl core::ops::BitAnd for ResolveImageFlagBitsKHR {
18505    type Output = Self;
18506    #[inline]
18507    fn bitand(self, rhs: Self) -> Self {
18508        Self(self.0 & rhs.0)
18509    }
18510}
18511impl core::ops::BitAndAssign for ResolveImageFlagBitsKHR {
18512    #[inline]
18513    fn bitand_assign(&mut self, rhs: Self) {
18514        self.0 &= rhs.0;
18515    }
18516}
18517impl core::ops::BitXor for ResolveImageFlagBitsKHR {
18518    type Output = Self;
18519    #[inline]
18520    fn bitxor(self, rhs: Self) -> Self {
18521        Self(self.0 ^ rhs.0)
18522    }
18523}
18524impl core::ops::BitXorAssign for ResolveImageFlagBitsKHR {
18525    #[inline]
18526    fn bitxor_assign(&mut self, rhs: Self) {
18527        self.0 ^= rhs.0;
18528    }
18529}
18530impl core::ops::Not for ResolveImageFlagBitsKHR {
18531    type Output = Self;
18532    #[inline]
18533    fn not(self) -> Self {
18534        Self(!self.0)
18535    }
18536}
18537impl core::fmt::Debug for ResolveImageFlagBitsKHR {
18538    #[allow(unused_mut, unused_variables)]
18539    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18540        let mut first = true;
18541        let mut remaining = self.0;
18542        if remaining & Self::SKIP_TRANSFER_FUNCTION.0 != 0 {
18543            if !first {
18544                f.write_str(" | ")?;
18545            }
18546            f.write_str("SKIP_TRANSFER_FUNCTION")?;
18547            remaining &= !Self::SKIP_TRANSFER_FUNCTION.0;
18548            first = false;
18549        }
18550        if remaining & Self::ENABLE_TRANSFER_FUNCTION.0 != 0 {
18551            if !first {
18552                f.write_str(" | ")?;
18553            }
18554            f.write_str("ENABLE_TRANSFER_FUNCTION")?;
18555            remaining &= !Self::ENABLE_TRANSFER_FUNCTION.0;
18556            first = false;
18557        }
18558        if remaining != 0u32 {
18559            if !first {
18560                f.write_str(" | ")?;
18561            }
18562            write!(f, "{:#x}", remaining)?;
18563        } else if first {
18564            f.write_str("(empty)")?;
18565        }
18566        Ok(())
18567    }
18568}
18569///[`VkResolveModeFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveModeFlagBits.html)
18570#[repr(transparent)]
18571#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18572#[doc(alias = "VkResolveModeFlagBits")]
18573pub struct ResolveModeFlagBits(u32);
18574impl ResolveModeFlagBits {
18575    #[inline]
18576    pub const fn empty() -> Self {
18577        Self(0u32)
18578    }
18579    #[inline]
18580    pub const fn from_raw(value: u32) -> Self {
18581        Self(value)
18582    }
18583    #[inline]
18584    pub const fn as_raw(self) -> u32 {
18585        self.0
18586    }
18587    #[inline]
18588    pub const fn is_empty(self) -> bool {
18589        self.0 == 0u32
18590    }
18591    #[inline]
18592    pub const fn contains(self, other: Self) -> bool {
18593        (self.0 & other.0) == other.0
18594    }
18595    #[inline]
18596    pub const fn all() -> Self {
18597        Self(63u32)
18598    }
18599    pub const NONE: Self = Self(0u32);
18600    ///Bit 0.
18601    pub const SAMPLE_ZERO: Self = Self(1u32);
18602    ///Bit 1.
18603    pub const AVERAGE: Self = Self(2u32);
18604    ///Bit 2.
18605    pub const MIN: Self = Self(4u32);
18606    ///Bit 3.
18607    pub const MAX: Self = Self(8u32);
18608    ///Bit 4.
18609    pub const EXTERNAL_FORMAT_DOWNSAMPLE_BIT: Self = Self(16u32);
18610    pub const EXTERNAL_FORMAT_DOWNSAMPLE: Self = Self::EXTERNAL_FORMAT_DOWNSAMPLE_BIT;
18611    ///Bit 5.
18612    pub const CUSTOM: Self = Self(32u32);
18613}
18614impl core::ops::BitOr for ResolveModeFlagBits {
18615    type Output = Self;
18616    #[inline]
18617    fn bitor(self, rhs: Self) -> Self {
18618        Self(self.0 | rhs.0)
18619    }
18620}
18621impl core::ops::BitOrAssign for ResolveModeFlagBits {
18622    #[inline]
18623    fn bitor_assign(&mut self, rhs: Self) {
18624        self.0 |= rhs.0;
18625    }
18626}
18627impl core::ops::BitAnd for ResolveModeFlagBits {
18628    type Output = Self;
18629    #[inline]
18630    fn bitand(self, rhs: Self) -> Self {
18631        Self(self.0 & rhs.0)
18632    }
18633}
18634impl core::ops::BitAndAssign for ResolveModeFlagBits {
18635    #[inline]
18636    fn bitand_assign(&mut self, rhs: Self) {
18637        self.0 &= rhs.0;
18638    }
18639}
18640impl core::ops::BitXor for ResolveModeFlagBits {
18641    type Output = Self;
18642    #[inline]
18643    fn bitxor(self, rhs: Self) -> Self {
18644        Self(self.0 ^ rhs.0)
18645    }
18646}
18647impl core::ops::BitXorAssign for ResolveModeFlagBits {
18648    #[inline]
18649    fn bitxor_assign(&mut self, rhs: Self) {
18650        self.0 ^= rhs.0;
18651    }
18652}
18653impl core::ops::Not for ResolveModeFlagBits {
18654    type Output = Self;
18655    #[inline]
18656    fn not(self) -> Self {
18657        Self(!self.0)
18658    }
18659}
18660impl core::fmt::Debug for ResolveModeFlagBits {
18661    #[allow(unused_mut, unused_variables)]
18662    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18663        let mut first = true;
18664        let mut remaining = self.0;
18665        if remaining & Self::SAMPLE_ZERO.0 != 0 {
18666            if !first {
18667                f.write_str(" | ")?;
18668            }
18669            f.write_str("SAMPLE_ZERO")?;
18670            remaining &= !Self::SAMPLE_ZERO.0;
18671            first = false;
18672        }
18673        if remaining & Self::AVERAGE.0 != 0 {
18674            if !first {
18675                f.write_str(" | ")?;
18676            }
18677            f.write_str("AVERAGE")?;
18678            remaining &= !Self::AVERAGE.0;
18679            first = false;
18680        }
18681        if remaining & Self::MIN.0 != 0 {
18682            if !first {
18683                f.write_str(" | ")?;
18684            }
18685            f.write_str("MIN")?;
18686            remaining &= !Self::MIN.0;
18687            first = false;
18688        }
18689        if remaining & Self::MAX.0 != 0 {
18690            if !first {
18691                f.write_str(" | ")?;
18692            }
18693            f.write_str("MAX")?;
18694            remaining &= !Self::MAX.0;
18695            first = false;
18696        }
18697        if remaining & Self::EXTERNAL_FORMAT_DOWNSAMPLE_BIT.0 != 0 {
18698            if !first {
18699                f.write_str(" | ")?;
18700            }
18701            f.write_str("EXTERNAL_FORMAT_DOWNSAMPLE_BIT")?;
18702            remaining &= !Self::EXTERNAL_FORMAT_DOWNSAMPLE_BIT.0;
18703            first = false;
18704        }
18705        if remaining & Self::CUSTOM.0 != 0 {
18706            if !first {
18707                f.write_str(" | ")?;
18708            }
18709            f.write_str("CUSTOM")?;
18710            remaining &= !Self::CUSTOM.0;
18711            first = false;
18712        }
18713        if remaining != 0u32 {
18714            if !first {
18715                f.write_str(" | ")?;
18716            }
18717            write!(f, "{:#x}", remaining)?;
18718        } else if first {
18719            f.write_str("(empty)")?;
18720        }
18721        Ok(())
18722    }
18723}
18724///[`VkSampleCountFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampleCountFlagBits.html)
18725#[repr(transparent)]
18726#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18727#[doc(alias = "VkSampleCountFlagBits")]
18728pub struct SampleCountFlagBits(u32);
18729impl SampleCountFlagBits {
18730    #[inline]
18731    pub const fn empty() -> Self {
18732        Self(0u32)
18733    }
18734    #[inline]
18735    pub const fn from_raw(value: u32) -> Self {
18736        Self(value)
18737    }
18738    #[inline]
18739    pub const fn as_raw(self) -> u32 {
18740        self.0
18741    }
18742    #[inline]
18743    pub const fn is_empty(self) -> bool {
18744        self.0 == 0u32
18745    }
18746    #[inline]
18747    pub const fn contains(self, other: Self) -> bool {
18748        (self.0 & other.0) == other.0
18749    }
18750    #[inline]
18751    pub const fn all() -> Self {
18752        Self(127u32)
18753    }
18754    ///Bit 0.
18755    pub const _1: Self = Self(1u32);
18756    ///Bit 1.
18757    pub const _2: Self = Self(2u32);
18758    ///Bit 2.
18759    pub const _4: Self = Self(4u32);
18760    ///Bit 3.
18761    pub const _8: Self = Self(8u32);
18762    ///Bit 4.
18763    pub const _16: Self = Self(16u32);
18764    ///Bit 5.
18765    pub const _32: Self = Self(32u32);
18766    ///Bit 6.
18767    pub const _64: Self = Self(64u32);
18768}
18769impl core::ops::BitOr for SampleCountFlagBits {
18770    type Output = Self;
18771    #[inline]
18772    fn bitor(self, rhs: Self) -> Self {
18773        Self(self.0 | rhs.0)
18774    }
18775}
18776impl core::ops::BitOrAssign for SampleCountFlagBits {
18777    #[inline]
18778    fn bitor_assign(&mut self, rhs: Self) {
18779        self.0 |= rhs.0;
18780    }
18781}
18782impl core::ops::BitAnd for SampleCountFlagBits {
18783    type Output = Self;
18784    #[inline]
18785    fn bitand(self, rhs: Self) -> Self {
18786        Self(self.0 & rhs.0)
18787    }
18788}
18789impl core::ops::BitAndAssign for SampleCountFlagBits {
18790    #[inline]
18791    fn bitand_assign(&mut self, rhs: Self) {
18792        self.0 &= rhs.0;
18793    }
18794}
18795impl core::ops::BitXor for SampleCountFlagBits {
18796    type Output = Self;
18797    #[inline]
18798    fn bitxor(self, rhs: Self) -> Self {
18799        Self(self.0 ^ rhs.0)
18800    }
18801}
18802impl core::ops::BitXorAssign for SampleCountFlagBits {
18803    #[inline]
18804    fn bitxor_assign(&mut self, rhs: Self) {
18805        self.0 ^= rhs.0;
18806    }
18807}
18808impl core::ops::Not for SampleCountFlagBits {
18809    type Output = Self;
18810    #[inline]
18811    fn not(self) -> Self {
18812        Self(!self.0)
18813    }
18814}
18815impl core::fmt::Debug for SampleCountFlagBits {
18816    #[allow(unused_mut, unused_variables)]
18817    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18818        let mut first = true;
18819        let mut remaining = self.0;
18820        if remaining & Self::_1.0 != 0 {
18821            if !first {
18822                f.write_str(" | ")?;
18823            }
18824            f.write_str("_1")?;
18825            remaining &= !Self::_1.0;
18826            first = false;
18827        }
18828        if remaining & Self::_2.0 != 0 {
18829            if !first {
18830                f.write_str(" | ")?;
18831            }
18832            f.write_str("_2")?;
18833            remaining &= !Self::_2.0;
18834            first = false;
18835        }
18836        if remaining & Self::_4.0 != 0 {
18837            if !first {
18838                f.write_str(" | ")?;
18839            }
18840            f.write_str("_4")?;
18841            remaining &= !Self::_4.0;
18842            first = false;
18843        }
18844        if remaining & Self::_8.0 != 0 {
18845            if !first {
18846                f.write_str(" | ")?;
18847            }
18848            f.write_str("_8")?;
18849            remaining &= !Self::_8.0;
18850            first = false;
18851        }
18852        if remaining & Self::_16.0 != 0 {
18853            if !first {
18854                f.write_str(" | ")?;
18855            }
18856            f.write_str("_16")?;
18857            remaining &= !Self::_16.0;
18858            first = false;
18859        }
18860        if remaining & Self::_32.0 != 0 {
18861            if !first {
18862                f.write_str(" | ")?;
18863            }
18864            f.write_str("_32")?;
18865            remaining &= !Self::_32.0;
18866            first = false;
18867        }
18868        if remaining & Self::_64.0 != 0 {
18869            if !first {
18870                f.write_str(" | ")?;
18871            }
18872            f.write_str("_64")?;
18873            remaining &= !Self::_64.0;
18874            first = false;
18875        }
18876        if remaining != 0u32 {
18877            if !first {
18878                f.write_str(" | ")?;
18879            }
18880            write!(f, "{:#x}", remaining)?;
18881        } else if first {
18882            f.write_str("(empty)")?;
18883        }
18884        Ok(())
18885    }
18886}
18887///[`VkSamplerCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCreateFlagBits.html)
18888#[repr(transparent)]
18889#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
18890#[doc(alias = "VkSamplerCreateFlagBits")]
18891pub struct SamplerCreateFlagBits(u32);
18892impl SamplerCreateFlagBits {
18893    #[inline]
18894    pub const fn empty() -> Self {
18895        Self(0u32)
18896    }
18897    #[inline]
18898    pub const fn from_raw(value: u32) -> Self {
18899        Self(value)
18900    }
18901    #[inline]
18902    pub const fn as_raw(self) -> u32 {
18903        self.0
18904    }
18905    #[inline]
18906    pub const fn is_empty(self) -> bool {
18907        self.0 == 0u32
18908    }
18909    #[inline]
18910    pub const fn contains(self, other: Self) -> bool {
18911        (self.0 & other.0) == other.0
18912    }
18913    #[inline]
18914    pub const fn all() -> Self {
18915        Self(31u32)
18916    }
18917    ///Bit 0.
18918    pub const SUBSAMPLED: Self = Self(1u32);
18919    ///Bit 1.
18920    pub const SUBSAMPLED_COARSE_RECONSTRUCTION: Self = Self(2u32);
18921    ///Bit 3.
18922    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY: Self = Self(8u32);
18923    ///Bit 2.
18924    pub const NON_SEAMLESS_CUBE_MAP: Self = Self(4u32);
18925    ///Bit 4.
18926    pub const IMAGE_PROCESSING_BIT: Self = Self(16u32);
18927}
18928impl core::ops::BitOr for SamplerCreateFlagBits {
18929    type Output = Self;
18930    #[inline]
18931    fn bitor(self, rhs: Self) -> Self {
18932        Self(self.0 | rhs.0)
18933    }
18934}
18935impl core::ops::BitOrAssign for SamplerCreateFlagBits {
18936    #[inline]
18937    fn bitor_assign(&mut self, rhs: Self) {
18938        self.0 |= rhs.0;
18939    }
18940}
18941impl core::ops::BitAnd for SamplerCreateFlagBits {
18942    type Output = Self;
18943    #[inline]
18944    fn bitand(self, rhs: Self) -> Self {
18945        Self(self.0 & rhs.0)
18946    }
18947}
18948impl core::ops::BitAndAssign for SamplerCreateFlagBits {
18949    #[inline]
18950    fn bitand_assign(&mut self, rhs: Self) {
18951        self.0 &= rhs.0;
18952    }
18953}
18954impl core::ops::BitXor for SamplerCreateFlagBits {
18955    type Output = Self;
18956    #[inline]
18957    fn bitxor(self, rhs: Self) -> Self {
18958        Self(self.0 ^ rhs.0)
18959    }
18960}
18961impl core::ops::BitXorAssign for SamplerCreateFlagBits {
18962    #[inline]
18963    fn bitxor_assign(&mut self, rhs: Self) {
18964        self.0 ^= rhs.0;
18965    }
18966}
18967impl core::ops::Not for SamplerCreateFlagBits {
18968    type Output = Self;
18969    #[inline]
18970    fn not(self) -> Self {
18971        Self(!self.0)
18972    }
18973}
18974impl core::fmt::Debug for SamplerCreateFlagBits {
18975    #[allow(unused_mut, unused_variables)]
18976    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18977        let mut first = true;
18978        let mut remaining = self.0;
18979        if remaining & Self::SUBSAMPLED.0 != 0 {
18980            if !first {
18981                f.write_str(" | ")?;
18982            }
18983            f.write_str("SUBSAMPLED")?;
18984            remaining &= !Self::SUBSAMPLED.0;
18985            first = false;
18986        }
18987        if remaining & Self::SUBSAMPLED_COARSE_RECONSTRUCTION.0 != 0 {
18988            if !first {
18989                f.write_str(" | ")?;
18990            }
18991            f.write_str("SUBSAMPLED_COARSE_RECONSTRUCTION")?;
18992            remaining &= !Self::SUBSAMPLED_COARSE_RECONSTRUCTION.0;
18993            first = false;
18994        }
18995        if remaining & Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0 != 0 {
18996            if !first {
18997                f.write_str(" | ")?;
18998            }
18999            f.write_str("DESCRIPTOR_BUFFER_CAPTURE_REPLAY")?;
19000            remaining &= !Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY.0;
19001            first = false;
19002        }
19003        if remaining & Self::NON_SEAMLESS_CUBE_MAP.0 != 0 {
19004            if !first {
19005                f.write_str(" | ")?;
19006            }
19007            f.write_str("NON_SEAMLESS_CUBE_MAP")?;
19008            remaining &= !Self::NON_SEAMLESS_CUBE_MAP.0;
19009            first = false;
19010        }
19011        if remaining & Self::IMAGE_PROCESSING_BIT.0 != 0 {
19012            if !first {
19013                f.write_str(" | ")?;
19014            }
19015            f.write_str("IMAGE_PROCESSING_BIT")?;
19016            remaining &= !Self::IMAGE_PROCESSING_BIT.0;
19017            first = false;
19018        }
19019        if remaining != 0u32 {
19020            if !first {
19021                f.write_str(" | ")?;
19022            }
19023            write!(f, "{:#x}", remaining)?;
19024        } else if first {
19025            f.write_str("(empty)")?;
19026        }
19027        Ok(())
19028    }
19029}
19030///[`VkSemaphoreCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreCreateFlagBits.html)
19031#[repr(transparent)]
19032#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19033#[doc(alias = "VkSemaphoreCreateFlagBits")]
19034pub struct SemaphoreCreateFlagBits(u32);
19035impl SemaphoreCreateFlagBits {
19036    #[inline]
19037    pub const fn empty() -> Self {
19038        Self(0u32)
19039    }
19040    #[inline]
19041    pub const fn from_raw(value: u32) -> Self {
19042        Self(value)
19043    }
19044    #[inline]
19045    pub const fn as_raw(self) -> u32 {
19046        self.0
19047    }
19048    #[inline]
19049    pub const fn is_empty(self) -> bool {
19050        self.0 == 0u32
19051    }
19052    #[inline]
19053    pub const fn contains(self, other: Self) -> bool {
19054        (self.0 & other.0) == other.0
19055    }
19056    #[inline]
19057    pub const fn all() -> Self {
19058        Self(0u32)
19059    }
19060}
19061impl core::ops::BitOr for SemaphoreCreateFlagBits {
19062    type Output = Self;
19063    #[inline]
19064    fn bitor(self, rhs: Self) -> Self {
19065        Self(self.0 | rhs.0)
19066    }
19067}
19068impl core::ops::BitOrAssign for SemaphoreCreateFlagBits {
19069    #[inline]
19070    fn bitor_assign(&mut self, rhs: Self) {
19071        self.0 |= rhs.0;
19072    }
19073}
19074impl core::ops::BitAnd for SemaphoreCreateFlagBits {
19075    type Output = Self;
19076    #[inline]
19077    fn bitand(self, rhs: Self) -> Self {
19078        Self(self.0 & rhs.0)
19079    }
19080}
19081impl core::ops::BitAndAssign for SemaphoreCreateFlagBits {
19082    #[inline]
19083    fn bitand_assign(&mut self, rhs: Self) {
19084        self.0 &= rhs.0;
19085    }
19086}
19087impl core::ops::BitXor for SemaphoreCreateFlagBits {
19088    type Output = Self;
19089    #[inline]
19090    fn bitxor(self, rhs: Self) -> Self {
19091        Self(self.0 ^ rhs.0)
19092    }
19093}
19094impl core::ops::BitXorAssign for SemaphoreCreateFlagBits {
19095    #[inline]
19096    fn bitxor_assign(&mut self, rhs: Self) {
19097        self.0 ^= rhs.0;
19098    }
19099}
19100impl core::ops::Not for SemaphoreCreateFlagBits {
19101    type Output = Self;
19102    #[inline]
19103    fn not(self) -> Self {
19104        Self(!self.0)
19105    }
19106}
19107impl core::fmt::Debug for SemaphoreCreateFlagBits {
19108    #[allow(unused_mut, unused_variables)]
19109    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19110        let mut first = true;
19111        let mut remaining = self.0;
19112        if remaining != 0u32 {
19113            if !first {
19114                f.write_str(" | ")?;
19115            }
19116            write!(f, "{:#x}", remaining)?;
19117        } else if first {
19118            f.write_str("(empty)")?;
19119        }
19120        Ok(())
19121    }
19122}
19123///[`VkSemaphoreImportFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreImportFlagBits.html)
19124#[repr(transparent)]
19125#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19126#[doc(alias = "VkSemaphoreImportFlagBits")]
19127pub struct SemaphoreImportFlagBits(u32);
19128impl SemaphoreImportFlagBits {
19129    #[inline]
19130    pub const fn empty() -> Self {
19131        Self(0u32)
19132    }
19133    #[inline]
19134    pub const fn from_raw(value: u32) -> Self {
19135        Self(value)
19136    }
19137    #[inline]
19138    pub const fn as_raw(self) -> u32 {
19139        self.0
19140    }
19141    #[inline]
19142    pub const fn is_empty(self) -> bool {
19143        self.0 == 0u32
19144    }
19145    #[inline]
19146    pub const fn contains(self, other: Self) -> bool {
19147        (self.0 & other.0) == other.0
19148    }
19149    #[inline]
19150    pub const fn all() -> Self {
19151        Self(1u32)
19152    }
19153    ///Bit 0.
19154    pub const TEMPORARY: Self = Self(1u32);
19155}
19156impl core::ops::BitOr for SemaphoreImportFlagBits {
19157    type Output = Self;
19158    #[inline]
19159    fn bitor(self, rhs: Self) -> Self {
19160        Self(self.0 | rhs.0)
19161    }
19162}
19163impl core::ops::BitOrAssign for SemaphoreImportFlagBits {
19164    #[inline]
19165    fn bitor_assign(&mut self, rhs: Self) {
19166        self.0 |= rhs.0;
19167    }
19168}
19169impl core::ops::BitAnd for SemaphoreImportFlagBits {
19170    type Output = Self;
19171    #[inline]
19172    fn bitand(self, rhs: Self) -> Self {
19173        Self(self.0 & rhs.0)
19174    }
19175}
19176impl core::ops::BitAndAssign for SemaphoreImportFlagBits {
19177    #[inline]
19178    fn bitand_assign(&mut self, rhs: Self) {
19179        self.0 &= rhs.0;
19180    }
19181}
19182impl core::ops::BitXor for SemaphoreImportFlagBits {
19183    type Output = Self;
19184    #[inline]
19185    fn bitxor(self, rhs: Self) -> Self {
19186        Self(self.0 ^ rhs.0)
19187    }
19188}
19189impl core::ops::BitXorAssign for SemaphoreImportFlagBits {
19190    #[inline]
19191    fn bitxor_assign(&mut self, rhs: Self) {
19192        self.0 ^= rhs.0;
19193    }
19194}
19195impl core::ops::Not for SemaphoreImportFlagBits {
19196    type Output = Self;
19197    #[inline]
19198    fn not(self) -> Self {
19199        Self(!self.0)
19200    }
19201}
19202impl core::fmt::Debug for SemaphoreImportFlagBits {
19203    #[allow(unused_mut, unused_variables)]
19204    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19205        let mut first = true;
19206        let mut remaining = self.0;
19207        if remaining & Self::TEMPORARY.0 != 0 {
19208            if !first {
19209                f.write_str(" | ")?;
19210            }
19211            f.write_str("TEMPORARY")?;
19212            remaining &= !Self::TEMPORARY.0;
19213            first = false;
19214        }
19215        if remaining != 0u32 {
19216            if !first {
19217                f.write_str(" | ")?;
19218            }
19219            write!(f, "{:#x}", remaining)?;
19220        } else if first {
19221            f.write_str("(empty)")?;
19222        }
19223        Ok(())
19224    }
19225}
19226///[`VkSemaphoreWaitFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreWaitFlagBits.html)
19227#[repr(transparent)]
19228#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19229#[doc(alias = "VkSemaphoreWaitFlagBits")]
19230pub struct SemaphoreWaitFlagBits(u32);
19231impl SemaphoreWaitFlagBits {
19232    #[inline]
19233    pub const fn empty() -> Self {
19234        Self(0u32)
19235    }
19236    #[inline]
19237    pub const fn from_raw(value: u32) -> Self {
19238        Self(value)
19239    }
19240    #[inline]
19241    pub const fn as_raw(self) -> u32 {
19242        self.0
19243    }
19244    #[inline]
19245    pub const fn is_empty(self) -> bool {
19246        self.0 == 0u32
19247    }
19248    #[inline]
19249    pub const fn contains(self, other: Self) -> bool {
19250        (self.0 & other.0) == other.0
19251    }
19252    #[inline]
19253    pub const fn all() -> Self {
19254        Self(1u32)
19255    }
19256    ///Bit 0.
19257    pub const ANY: Self = Self(1u32);
19258}
19259impl core::ops::BitOr for SemaphoreWaitFlagBits {
19260    type Output = Self;
19261    #[inline]
19262    fn bitor(self, rhs: Self) -> Self {
19263        Self(self.0 | rhs.0)
19264    }
19265}
19266impl core::ops::BitOrAssign for SemaphoreWaitFlagBits {
19267    #[inline]
19268    fn bitor_assign(&mut self, rhs: Self) {
19269        self.0 |= rhs.0;
19270    }
19271}
19272impl core::ops::BitAnd for SemaphoreWaitFlagBits {
19273    type Output = Self;
19274    #[inline]
19275    fn bitand(self, rhs: Self) -> Self {
19276        Self(self.0 & rhs.0)
19277    }
19278}
19279impl core::ops::BitAndAssign for SemaphoreWaitFlagBits {
19280    #[inline]
19281    fn bitand_assign(&mut self, rhs: Self) {
19282        self.0 &= rhs.0;
19283    }
19284}
19285impl core::ops::BitXor for SemaphoreWaitFlagBits {
19286    type Output = Self;
19287    #[inline]
19288    fn bitxor(self, rhs: Self) -> Self {
19289        Self(self.0 ^ rhs.0)
19290    }
19291}
19292impl core::ops::BitXorAssign for SemaphoreWaitFlagBits {
19293    #[inline]
19294    fn bitxor_assign(&mut self, rhs: Self) {
19295        self.0 ^= rhs.0;
19296    }
19297}
19298impl core::ops::Not for SemaphoreWaitFlagBits {
19299    type Output = Self;
19300    #[inline]
19301    fn not(self) -> Self {
19302        Self(!self.0)
19303    }
19304}
19305impl core::fmt::Debug for SemaphoreWaitFlagBits {
19306    #[allow(unused_mut, unused_variables)]
19307    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19308        let mut first = true;
19309        let mut remaining = self.0;
19310        if remaining & Self::ANY.0 != 0 {
19311            if !first {
19312                f.write_str(" | ")?;
19313            }
19314            f.write_str("ANY")?;
19315            remaining &= !Self::ANY.0;
19316            first = false;
19317        }
19318        if remaining != 0u32 {
19319            if !first {
19320                f.write_str(" | ")?;
19321            }
19322            write!(f, "{:#x}", remaining)?;
19323        } else if first {
19324            f.write_str("(empty)")?;
19325        }
19326        Ok(())
19327    }
19328}
19329///[`VkShaderCorePropertiesFlagBitsAMD`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCorePropertiesFlagBitsAMD.html)
19330#[repr(transparent)]
19331#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19332#[doc(alias = "VkShaderCorePropertiesFlagBitsAMD")]
19333pub struct ShaderCorePropertiesFlagBitsAMD(u32);
19334impl ShaderCorePropertiesFlagBitsAMD {
19335    #[inline]
19336    pub const fn empty() -> Self {
19337        Self(0u32)
19338    }
19339    #[inline]
19340    pub const fn from_raw(value: u32) -> Self {
19341        Self(value)
19342    }
19343    #[inline]
19344    pub const fn as_raw(self) -> u32 {
19345        self.0
19346    }
19347    #[inline]
19348    pub const fn is_empty(self) -> bool {
19349        self.0 == 0u32
19350    }
19351    #[inline]
19352    pub const fn contains(self, other: Self) -> bool {
19353        (self.0 & other.0) == other.0
19354    }
19355    #[inline]
19356    pub const fn all() -> Self {
19357        Self(0u32)
19358    }
19359}
19360impl core::ops::BitOr for ShaderCorePropertiesFlagBitsAMD {
19361    type Output = Self;
19362    #[inline]
19363    fn bitor(self, rhs: Self) -> Self {
19364        Self(self.0 | rhs.0)
19365    }
19366}
19367impl core::ops::BitOrAssign for ShaderCorePropertiesFlagBitsAMD {
19368    #[inline]
19369    fn bitor_assign(&mut self, rhs: Self) {
19370        self.0 |= rhs.0;
19371    }
19372}
19373impl core::ops::BitAnd for ShaderCorePropertiesFlagBitsAMD {
19374    type Output = Self;
19375    #[inline]
19376    fn bitand(self, rhs: Self) -> Self {
19377        Self(self.0 & rhs.0)
19378    }
19379}
19380impl core::ops::BitAndAssign for ShaderCorePropertiesFlagBitsAMD {
19381    #[inline]
19382    fn bitand_assign(&mut self, rhs: Self) {
19383        self.0 &= rhs.0;
19384    }
19385}
19386impl core::ops::BitXor for ShaderCorePropertiesFlagBitsAMD {
19387    type Output = Self;
19388    #[inline]
19389    fn bitxor(self, rhs: Self) -> Self {
19390        Self(self.0 ^ rhs.0)
19391    }
19392}
19393impl core::ops::BitXorAssign for ShaderCorePropertiesFlagBitsAMD {
19394    #[inline]
19395    fn bitxor_assign(&mut self, rhs: Self) {
19396        self.0 ^= rhs.0;
19397    }
19398}
19399impl core::ops::Not for ShaderCorePropertiesFlagBitsAMD {
19400    type Output = Self;
19401    #[inline]
19402    fn not(self) -> Self {
19403        Self(!self.0)
19404    }
19405}
19406impl core::fmt::Debug for ShaderCorePropertiesFlagBitsAMD {
19407    #[allow(unused_mut, unused_variables)]
19408    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19409        let mut first = true;
19410        let mut remaining = self.0;
19411        if remaining != 0u32 {
19412            if !first {
19413                f.write_str(" | ")?;
19414            }
19415            write!(f, "{:#x}", remaining)?;
19416        } else if first {
19417            f.write_str("(empty)")?;
19418        }
19419        Ok(())
19420    }
19421}
19422///[`VkShaderCreateFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCreateFlagBitsEXT.html)
19423#[repr(transparent)]
19424#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19425#[doc(alias = "VkShaderCreateFlagBitsEXT")]
19426pub struct ShaderCreateFlagBitsEXT(u32);
19427impl ShaderCreateFlagBitsEXT {
19428    #[inline]
19429    pub const fn empty() -> Self {
19430        Self(0u32)
19431    }
19432    #[inline]
19433    pub const fn from_raw(value: u32) -> Self {
19434        Self(value)
19435    }
19436    #[inline]
19437    pub const fn as_raw(self) -> u32 {
19438        self.0
19439    }
19440    #[inline]
19441    pub const fn is_empty(self) -> bool {
19442        self.0 == 0u32
19443    }
19444    #[inline]
19445    pub const fn contains(self, other: Self) -> bool {
19446        (self.0 & other.0) == other.0
19447    }
19448    #[inline]
19449    pub const fn all() -> Self {
19450        Self(36095u32)
19451    }
19452    ///Bit 0.
19453    pub const LINK_STAGE: Self = Self(1u32);
19454    ///Bit 10.
19455    pub const DESCRIPTOR_HEAP: Self = Self(1024u32);
19456    ///Bit 11.
19457    pub const INSTRUMENT_SHADER_BIT: Self = Self(2048u32);
19458    ///Bit 1.
19459    pub const ALLOW_VARYING_SUBGROUP_SIZE: Self = Self(2u32);
19460    ///Bit 2.
19461    pub const REQUIRE_FULL_SUBGROUPS: Self = Self(4u32);
19462    ///Bit 3.
19463    pub const NO_TASK_SHADER: Self = Self(8u32);
19464    ///Bit 4.
19465    pub const DISPATCH_BASE: Self = Self(16u32);
19466    ///Bit 5.
19467    pub const FRAGMENT_SHADING_RATE_ATTACHMENT: Self = Self(32u32);
19468    ///Bit 6.
19469    pub const FRAGMENT_DENSITY_MAP_ATTACHMENT: Self = Self(64u32);
19470    ///Bit 7.
19471    pub const INDIRECT_BINDABLE: Self = Self(128u32);
19472    ///Bit 15.
19473    pub const _64_BIT_INDEXING: Self = Self(32768u32);
19474}
19475impl core::ops::BitOr for ShaderCreateFlagBitsEXT {
19476    type Output = Self;
19477    #[inline]
19478    fn bitor(self, rhs: Self) -> Self {
19479        Self(self.0 | rhs.0)
19480    }
19481}
19482impl core::ops::BitOrAssign for ShaderCreateFlagBitsEXT {
19483    #[inline]
19484    fn bitor_assign(&mut self, rhs: Self) {
19485        self.0 |= rhs.0;
19486    }
19487}
19488impl core::ops::BitAnd for ShaderCreateFlagBitsEXT {
19489    type Output = Self;
19490    #[inline]
19491    fn bitand(self, rhs: Self) -> Self {
19492        Self(self.0 & rhs.0)
19493    }
19494}
19495impl core::ops::BitAndAssign for ShaderCreateFlagBitsEXT {
19496    #[inline]
19497    fn bitand_assign(&mut self, rhs: Self) {
19498        self.0 &= rhs.0;
19499    }
19500}
19501impl core::ops::BitXor for ShaderCreateFlagBitsEXT {
19502    type Output = Self;
19503    #[inline]
19504    fn bitxor(self, rhs: Self) -> Self {
19505        Self(self.0 ^ rhs.0)
19506    }
19507}
19508impl core::ops::BitXorAssign for ShaderCreateFlagBitsEXT {
19509    #[inline]
19510    fn bitxor_assign(&mut self, rhs: Self) {
19511        self.0 ^= rhs.0;
19512    }
19513}
19514impl core::ops::Not for ShaderCreateFlagBitsEXT {
19515    type Output = Self;
19516    #[inline]
19517    fn not(self) -> Self {
19518        Self(!self.0)
19519    }
19520}
19521impl core::fmt::Debug for ShaderCreateFlagBitsEXT {
19522    #[allow(unused_mut, unused_variables)]
19523    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19524        let mut first = true;
19525        let mut remaining = self.0;
19526        if remaining & Self::LINK_STAGE.0 != 0 {
19527            if !first {
19528                f.write_str(" | ")?;
19529            }
19530            f.write_str("LINK_STAGE")?;
19531            remaining &= !Self::LINK_STAGE.0;
19532            first = false;
19533        }
19534        if remaining & Self::DESCRIPTOR_HEAP.0 != 0 {
19535            if !first {
19536                f.write_str(" | ")?;
19537            }
19538            f.write_str("DESCRIPTOR_HEAP")?;
19539            remaining &= !Self::DESCRIPTOR_HEAP.0;
19540            first = false;
19541        }
19542        if remaining & Self::INSTRUMENT_SHADER_BIT.0 != 0 {
19543            if !first {
19544                f.write_str(" | ")?;
19545            }
19546            f.write_str("INSTRUMENT_SHADER_BIT")?;
19547            remaining &= !Self::INSTRUMENT_SHADER_BIT.0;
19548            first = false;
19549        }
19550        if remaining & Self::ALLOW_VARYING_SUBGROUP_SIZE.0 != 0 {
19551            if !first {
19552                f.write_str(" | ")?;
19553            }
19554            f.write_str("ALLOW_VARYING_SUBGROUP_SIZE")?;
19555            remaining &= !Self::ALLOW_VARYING_SUBGROUP_SIZE.0;
19556            first = false;
19557        }
19558        if remaining & Self::REQUIRE_FULL_SUBGROUPS.0 != 0 {
19559            if !first {
19560                f.write_str(" | ")?;
19561            }
19562            f.write_str("REQUIRE_FULL_SUBGROUPS")?;
19563            remaining &= !Self::REQUIRE_FULL_SUBGROUPS.0;
19564            first = false;
19565        }
19566        if remaining & Self::NO_TASK_SHADER.0 != 0 {
19567            if !first {
19568                f.write_str(" | ")?;
19569            }
19570            f.write_str("NO_TASK_SHADER")?;
19571            remaining &= !Self::NO_TASK_SHADER.0;
19572            first = false;
19573        }
19574        if remaining & Self::DISPATCH_BASE.0 != 0 {
19575            if !first {
19576                f.write_str(" | ")?;
19577            }
19578            f.write_str("DISPATCH_BASE")?;
19579            remaining &= !Self::DISPATCH_BASE.0;
19580            first = false;
19581        }
19582        if remaining & Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0 != 0 {
19583            if !first {
19584                f.write_str(" | ")?;
19585            }
19586            f.write_str("FRAGMENT_SHADING_RATE_ATTACHMENT")?;
19587            remaining &= !Self::FRAGMENT_SHADING_RATE_ATTACHMENT.0;
19588            first = false;
19589        }
19590        if remaining & Self::FRAGMENT_DENSITY_MAP_ATTACHMENT.0 != 0 {
19591            if !first {
19592                f.write_str(" | ")?;
19593            }
19594            f.write_str("FRAGMENT_DENSITY_MAP_ATTACHMENT")?;
19595            remaining &= !Self::FRAGMENT_DENSITY_MAP_ATTACHMENT.0;
19596            first = false;
19597        }
19598        if remaining & Self::INDIRECT_BINDABLE.0 != 0 {
19599            if !first {
19600                f.write_str(" | ")?;
19601            }
19602            f.write_str("INDIRECT_BINDABLE")?;
19603            remaining &= !Self::INDIRECT_BINDABLE.0;
19604            first = false;
19605        }
19606        if remaining & Self::_64_BIT_INDEXING.0 != 0 {
19607            if !first {
19608                f.write_str(" | ")?;
19609            }
19610            f.write_str("_64_BIT_INDEXING")?;
19611            remaining &= !Self::_64_BIT_INDEXING.0;
19612            first = false;
19613        }
19614        if remaining != 0u32 {
19615            if !first {
19616                f.write_str(" | ")?;
19617            }
19618            write!(f, "{:#x}", remaining)?;
19619        } else if first {
19620            f.write_str("(empty)")?;
19621        }
19622        Ok(())
19623    }
19624}
19625///[`VkShaderModuleCreateFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModuleCreateFlagBits.html)
19626#[repr(transparent)]
19627#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19628#[doc(alias = "VkShaderModuleCreateFlagBits")]
19629pub struct ShaderModuleCreateFlagBits(u32);
19630impl ShaderModuleCreateFlagBits {
19631    #[inline]
19632    pub const fn empty() -> Self {
19633        Self(0u32)
19634    }
19635    #[inline]
19636    pub const fn from_raw(value: u32) -> Self {
19637        Self(value)
19638    }
19639    #[inline]
19640    pub const fn as_raw(self) -> u32 {
19641        self.0
19642    }
19643    #[inline]
19644    pub const fn is_empty(self) -> bool {
19645        self.0 == 0u32
19646    }
19647    #[inline]
19648    pub const fn contains(self, other: Self) -> bool {
19649        (self.0 & other.0) == other.0
19650    }
19651    #[inline]
19652    pub const fn all() -> Self {
19653        Self(0u32)
19654    }
19655}
19656impl core::ops::BitOr for ShaderModuleCreateFlagBits {
19657    type Output = Self;
19658    #[inline]
19659    fn bitor(self, rhs: Self) -> Self {
19660        Self(self.0 | rhs.0)
19661    }
19662}
19663impl core::ops::BitOrAssign for ShaderModuleCreateFlagBits {
19664    #[inline]
19665    fn bitor_assign(&mut self, rhs: Self) {
19666        self.0 |= rhs.0;
19667    }
19668}
19669impl core::ops::BitAnd for ShaderModuleCreateFlagBits {
19670    type Output = Self;
19671    #[inline]
19672    fn bitand(self, rhs: Self) -> Self {
19673        Self(self.0 & rhs.0)
19674    }
19675}
19676impl core::ops::BitAndAssign for ShaderModuleCreateFlagBits {
19677    #[inline]
19678    fn bitand_assign(&mut self, rhs: Self) {
19679        self.0 &= rhs.0;
19680    }
19681}
19682impl core::ops::BitXor for ShaderModuleCreateFlagBits {
19683    type Output = Self;
19684    #[inline]
19685    fn bitxor(self, rhs: Self) -> Self {
19686        Self(self.0 ^ rhs.0)
19687    }
19688}
19689impl core::ops::BitXorAssign for ShaderModuleCreateFlagBits {
19690    #[inline]
19691    fn bitxor_assign(&mut self, rhs: Self) {
19692        self.0 ^= rhs.0;
19693    }
19694}
19695impl core::ops::Not for ShaderModuleCreateFlagBits {
19696    type Output = Self;
19697    #[inline]
19698    fn not(self) -> Self {
19699        Self(!self.0)
19700    }
19701}
19702impl core::fmt::Debug for ShaderModuleCreateFlagBits {
19703    #[allow(unused_mut, unused_variables)]
19704    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19705        let mut first = true;
19706        let mut remaining = self.0;
19707        if remaining != 0u32 {
19708            if !first {
19709                f.write_str(" | ")?;
19710            }
19711            write!(f, "{:#x}", remaining)?;
19712        } else if first {
19713            f.write_str("(empty)")?;
19714        }
19715        Ok(())
19716    }
19717}
19718///[`VkShaderStageFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderStageFlagBits.html)
19719#[repr(transparent)]
19720#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19721#[doc(alias = "VkShaderStageFlagBits")]
19722pub struct ShaderStageFlagBits(u32);
19723impl ShaderStageFlagBits {
19724    #[inline]
19725    pub const fn empty() -> Self {
19726        Self(0u32)
19727    }
19728    #[inline]
19729    pub const fn from_raw(value: u32) -> Self {
19730        Self(value)
19731    }
19732    #[inline]
19733    pub const fn as_raw(self) -> u32 {
19734        self.0
19735    }
19736    #[inline]
19737    pub const fn is_empty(self) -> bool {
19738        self.0 == 0u32
19739    }
19740    #[inline]
19741    pub const fn contains(self, other: Self) -> bool {
19742        (self.0 & other.0) == other.0
19743    }
19744    #[inline]
19745    pub const fn all() -> Self {
19746        Self(2147483647u32)
19747    }
19748    ///Bit 0.
19749    pub const VERTEX: Self = Self(1u32);
19750    ///Bit 1.
19751    pub const TESSELLATION_CONTROL: Self = Self(2u32);
19752    ///Bit 2.
19753    pub const TESSELLATION_EVALUATION: Self = Self(4u32);
19754    ///Bit 3.
19755    pub const GEOMETRY: Self = Self(8u32);
19756    ///Bit 4.
19757    pub const FRAGMENT: Self = Self(16u32);
19758    ///Bit 5.
19759    pub const COMPUTE: Self = Self(32u32);
19760    pub const ALL_GRAPHICS: Self = Self(31u32);
19761    pub const ALL: Self = Self(2147483647u32);
19762    ///Bit 8.
19763    pub const RAYGEN: Self = Self(256u32);
19764    ///Bit 9.
19765    pub const ANY_HIT: Self = Self(512u32);
19766    ///Bit 10.
19767    pub const CLOSEST_HIT: Self = Self(1024u32);
19768    ///Bit 11.
19769    pub const MISS: Self = Self(2048u32);
19770    ///Bit 12.
19771    pub const INTERSECTION: Self = Self(4096u32);
19772    ///Bit 13.
19773    pub const CALLABLE: Self = Self(8192u32);
19774    ///Bit 6.
19775    pub const TASK: Self = Self(64u32);
19776    ///Bit 7.
19777    pub const MESH: Self = Self(128u32);
19778    ///Bit 14.
19779    pub const SUBPASS_SHADING_BIT: Self = Self(16384u32);
19780    ///Bit 19.
19781    pub const CLUSTER_CULLING_BIT: Self = Self(524288u32);
19782}
19783impl core::ops::BitOr for ShaderStageFlagBits {
19784    type Output = Self;
19785    #[inline]
19786    fn bitor(self, rhs: Self) -> Self {
19787        Self(self.0 | rhs.0)
19788    }
19789}
19790impl core::ops::BitOrAssign for ShaderStageFlagBits {
19791    #[inline]
19792    fn bitor_assign(&mut self, rhs: Self) {
19793        self.0 |= rhs.0;
19794    }
19795}
19796impl core::ops::BitAnd for ShaderStageFlagBits {
19797    type Output = Self;
19798    #[inline]
19799    fn bitand(self, rhs: Self) -> Self {
19800        Self(self.0 & rhs.0)
19801    }
19802}
19803impl core::ops::BitAndAssign for ShaderStageFlagBits {
19804    #[inline]
19805    fn bitand_assign(&mut self, rhs: Self) {
19806        self.0 &= rhs.0;
19807    }
19808}
19809impl core::ops::BitXor for ShaderStageFlagBits {
19810    type Output = Self;
19811    #[inline]
19812    fn bitxor(self, rhs: Self) -> Self {
19813        Self(self.0 ^ rhs.0)
19814    }
19815}
19816impl core::ops::BitXorAssign for ShaderStageFlagBits {
19817    #[inline]
19818    fn bitxor_assign(&mut self, rhs: Self) {
19819        self.0 ^= rhs.0;
19820    }
19821}
19822impl core::ops::Not for ShaderStageFlagBits {
19823    type Output = Self;
19824    #[inline]
19825    fn not(self) -> Self {
19826        Self(!self.0)
19827    }
19828}
19829impl core::fmt::Debug for ShaderStageFlagBits {
19830    #[allow(unused_mut, unused_variables)]
19831    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19832        let mut first = true;
19833        let mut remaining = self.0;
19834        if remaining & Self::VERTEX.0 != 0 {
19835            if !first {
19836                f.write_str(" | ")?;
19837            }
19838            f.write_str("VERTEX")?;
19839            remaining &= !Self::VERTEX.0;
19840            first = false;
19841        }
19842        if remaining & Self::TESSELLATION_CONTROL.0 != 0 {
19843            if !first {
19844                f.write_str(" | ")?;
19845            }
19846            f.write_str("TESSELLATION_CONTROL")?;
19847            remaining &= !Self::TESSELLATION_CONTROL.0;
19848            first = false;
19849        }
19850        if remaining & Self::TESSELLATION_EVALUATION.0 != 0 {
19851            if !first {
19852                f.write_str(" | ")?;
19853            }
19854            f.write_str("TESSELLATION_EVALUATION")?;
19855            remaining &= !Self::TESSELLATION_EVALUATION.0;
19856            first = false;
19857        }
19858        if remaining & Self::GEOMETRY.0 != 0 {
19859            if !first {
19860                f.write_str(" | ")?;
19861            }
19862            f.write_str("GEOMETRY")?;
19863            remaining &= !Self::GEOMETRY.0;
19864            first = false;
19865        }
19866        if remaining & Self::FRAGMENT.0 != 0 {
19867            if !first {
19868                f.write_str(" | ")?;
19869            }
19870            f.write_str("FRAGMENT")?;
19871            remaining &= !Self::FRAGMENT.0;
19872            first = false;
19873        }
19874        if remaining & Self::COMPUTE.0 != 0 {
19875            if !first {
19876                f.write_str(" | ")?;
19877            }
19878            f.write_str("COMPUTE")?;
19879            remaining &= !Self::COMPUTE.0;
19880            first = false;
19881        }
19882        if remaining & Self::RAYGEN.0 != 0 {
19883            if !first {
19884                f.write_str(" | ")?;
19885            }
19886            f.write_str("RAYGEN")?;
19887            remaining &= !Self::RAYGEN.0;
19888            first = false;
19889        }
19890        if remaining & Self::ANY_HIT.0 != 0 {
19891            if !first {
19892                f.write_str(" | ")?;
19893            }
19894            f.write_str("ANY_HIT")?;
19895            remaining &= !Self::ANY_HIT.0;
19896            first = false;
19897        }
19898        if remaining & Self::CLOSEST_HIT.0 != 0 {
19899            if !first {
19900                f.write_str(" | ")?;
19901            }
19902            f.write_str("CLOSEST_HIT")?;
19903            remaining &= !Self::CLOSEST_HIT.0;
19904            first = false;
19905        }
19906        if remaining & Self::MISS.0 != 0 {
19907            if !first {
19908                f.write_str(" | ")?;
19909            }
19910            f.write_str("MISS")?;
19911            remaining &= !Self::MISS.0;
19912            first = false;
19913        }
19914        if remaining & Self::INTERSECTION.0 != 0 {
19915            if !first {
19916                f.write_str(" | ")?;
19917            }
19918            f.write_str("INTERSECTION")?;
19919            remaining &= !Self::INTERSECTION.0;
19920            first = false;
19921        }
19922        if remaining & Self::CALLABLE.0 != 0 {
19923            if !first {
19924                f.write_str(" | ")?;
19925            }
19926            f.write_str("CALLABLE")?;
19927            remaining &= !Self::CALLABLE.0;
19928            first = false;
19929        }
19930        if remaining & Self::TASK.0 != 0 {
19931            if !first {
19932                f.write_str(" | ")?;
19933            }
19934            f.write_str("TASK")?;
19935            remaining &= !Self::TASK.0;
19936            first = false;
19937        }
19938        if remaining & Self::MESH.0 != 0 {
19939            if !first {
19940                f.write_str(" | ")?;
19941            }
19942            f.write_str("MESH")?;
19943            remaining &= !Self::MESH.0;
19944            first = false;
19945        }
19946        if remaining & Self::SUBPASS_SHADING_BIT.0 != 0 {
19947            if !first {
19948                f.write_str(" | ")?;
19949            }
19950            f.write_str("SUBPASS_SHADING_BIT")?;
19951            remaining &= !Self::SUBPASS_SHADING_BIT.0;
19952            first = false;
19953        }
19954        if remaining & Self::CLUSTER_CULLING_BIT.0 != 0 {
19955            if !first {
19956                f.write_str(" | ")?;
19957            }
19958            f.write_str("CLUSTER_CULLING_BIT")?;
19959            remaining &= !Self::CLUSTER_CULLING_BIT.0;
19960            first = false;
19961        }
19962        if remaining != 0u32 {
19963            if !first {
19964                f.write_str(" | ")?;
19965            }
19966            write!(f, "{:#x}", remaining)?;
19967        } else if first {
19968            f.write_str("(empty)")?;
19969        }
19970        Ok(())
19971    }
19972}
19973///[`VkSparseImageFormatFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageFormatFlagBits.html)
19974#[repr(transparent)]
19975#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
19976#[doc(alias = "VkSparseImageFormatFlagBits")]
19977pub struct SparseImageFormatFlagBits(u32);
19978impl SparseImageFormatFlagBits {
19979    #[inline]
19980    pub const fn empty() -> Self {
19981        Self(0u32)
19982    }
19983    #[inline]
19984    pub const fn from_raw(value: u32) -> Self {
19985        Self(value)
19986    }
19987    #[inline]
19988    pub const fn as_raw(self) -> u32 {
19989        self.0
19990    }
19991    #[inline]
19992    pub const fn is_empty(self) -> bool {
19993        self.0 == 0u32
19994    }
19995    #[inline]
19996    pub const fn contains(self, other: Self) -> bool {
19997        (self.0 & other.0) == other.0
19998    }
19999    #[inline]
20000    pub const fn all() -> Self {
20001        Self(7u32)
20002    }
20003    ///Bit 0.
20004    pub const SINGLE_MIPTAIL: Self = Self(1u32);
20005    ///Bit 1.
20006    pub const ALIGNED_MIP_SIZE: Self = Self(2u32);
20007    ///Bit 2.
20008    pub const NONSTANDARD_BLOCK_SIZE: Self = Self(4u32);
20009}
20010impl core::ops::BitOr for SparseImageFormatFlagBits {
20011    type Output = Self;
20012    #[inline]
20013    fn bitor(self, rhs: Self) -> Self {
20014        Self(self.0 | rhs.0)
20015    }
20016}
20017impl core::ops::BitOrAssign for SparseImageFormatFlagBits {
20018    #[inline]
20019    fn bitor_assign(&mut self, rhs: Self) {
20020        self.0 |= rhs.0;
20021    }
20022}
20023impl core::ops::BitAnd for SparseImageFormatFlagBits {
20024    type Output = Self;
20025    #[inline]
20026    fn bitand(self, rhs: Self) -> Self {
20027        Self(self.0 & rhs.0)
20028    }
20029}
20030impl core::ops::BitAndAssign for SparseImageFormatFlagBits {
20031    #[inline]
20032    fn bitand_assign(&mut self, rhs: Self) {
20033        self.0 &= rhs.0;
20034    }
20035}
20036impl core::ops::BitXor for SparseImageFormatFlagBits {
20037    type Output = Self;
20038    #[inline]
20039    fn bitxor(self, rhs: Self) -> Self {
20040        Self(self.0 ^ rhs.0)
20041    }
20042}
20043impl core::ops::BitXorAssign for SparseImageFormatFlagBits {
20044    #[inline]
20045    fn bitxor_assign(&mut self, rhs: Self) {
20046        self.0 ^= rhs.0;
20047    }
20048}
20049impl core::ops::Not for SparseImageFormatFlagBits {
20050    type Output = Self;
20051    #[inline]
20052    fn not(self) -> Self {
20053        Self(!self.0)
20054    }
20055}
20056impl core::fmt::Debug for SparseImageFormatFlagBits {
20057    #[allow(unused_mut, unused_variables)]
20058    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20059        let mut first = true;
20060        let mut remaining = self.0;
20061        if remaining & Self::SINGLE_MIPTAIL.0 != 0 {
20062            if !first {
20063                f.write_str(" | ")?;
20064            }
20065            f.write_str("SINGLE_MIPTAIL")?;
20066            remaining &= !Self::SINGLE_MIPTAIL.0;
20067            first = false;
20068        }
20069        if remaining & Self::ALIGNED_MIP_SIZE.0 != 0 {
20070            if !first {
20071                f.write_str(" | ")?;
20072            }
20073            f.write_str("ALIGNED_MIP_SIZE")?;
20074            remaining &= !Self::ALIGNED_MIP_SIZE.0;
20075            first = false;
20076        }
20077        if remaining & Self::NONSTANDARD_BLOCK_SIZE.0 != 0 {
20078            if !first {
20079                f.write_str(" | ")?;
20080            }
20081            f.write_str("NONSTANDARD_BLOCK_SIZE")?;
20082            remaining &= !Self::NONSTANDARD_BLOCK_SIZE.0;
20083            first = false;
20084        }
20085        if remaining != 0u32 {
20086            if !first {
20087                f.write_str(" | ")?;
20088            }
20089            write!(f, "{:#x}", remaining)?;
20090        } else if first {
20091            f.write_str("(empty)")?;
20092        }
20093        Ok(())
20094    }
20095}
20096///[`VkSparseMemoryBindFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseMemoryBindFlagBits.html)
20097#[repr(transparent)]
20098#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
20099#[doc(alias = "VkSparseMemoryBindFlagBits")]
20100pub struct SparseMemoryBindFlagBits(u32);
20101impl SparseMemoryBindFlagBits {
20102    #[inline]
20103    pub const fn empty() -> Self {
20104        Self(0u32)
20105    }
20106    #[inline]
20107    pub const fn from_raw(value: u32) -> Self {
20108        Self(value)
20109    }
20110    #[inline]
20111    pub const fn as_raw(self) -> u32 {
20112        self.0
20113    }
20114    #[inline]
20115    pub const fn is_empty(self) -> bool {
20116        self.0 == 0u32
20117    }
20118    #[inline]
20119    pub const fn contains(self, other: Self) -> bool {
20120        (self.0 & other.0) == other.0
20121    }
20122    #[inline]
20123    pub const fn all() -> Self {
20124        Self(1u32)
20125    }
20126    ///Bit 0.
20127    pub const METADATA: Self = Self(1u32);
20128}
20129impl core::ops::BitOr for SparseMemoryBindFlagBits {
20130    type Output = Self;
20131    #[inline]
20132    fn bitor(self, rhs: Self) -> Self {
20133        Self(self.0 | rhs.0)
20134    }
20135}
20136impl core::ops::BitOrAssign for SparseMemoryBindFlagBits {
20137    #[inline]
20138    fn bitor_assign(&mut self, rhs: Self) {
20139        self.0 |= rhs.0;
20140    }
20141}
20142impl core::ops::BitAnd for SparseMemoryBindFlagBits {
20143    type Output = Self;
20144    #[inline]
20145    fn bitand(self, rhs: Self) -> Self {
20146        Self(self.0 & rhs.0)
20147    }
20148}
20149impl core::ops::BitAndAssign for SparseMemoryBindFlagBits {
20150    #[inline]
20151    fn bitand_assign(&mut self, rhs: Self) {
20152        self.0 &= rhs.0;
20153    }
20154}
20155impl core::ops::BitXor for SparseMemoryBindFlagBits {
20156    type Output = Self;
20157    #[inline]
20158    fn bitxor(self, rhs: Self) -> Self {
20159        Self(self.0 ^ rhs.0)
20160    }
20161}
20162impl core::ops::BitXorAssign for SparseMemoryBindFlagBits {
20163    #[inline]
20164    fn bitxor_assign(&mut self, rhs: Self) {
20165        self.0 ^= rhs.0;
20166    }
20167}
20168impl core::ops::Not for SparseMemoryBindFlagBits {
20169    type Output = Self;
20170    #[inline]
20171    fn not(self) -> Self {
20172        Self(!self.0)
20173    }
20174}
20175impl core::fmt::Debug for SparseMemoryBindFlagBits {
20176    #[allow(unused_mut, unused_variables)]
20177    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20178        let mut first = true;
20179        let mut remaining = self.0;
20180        if remaining & Self::METADATA.0 != 0 {
20181            if !first {
20182                f.write_str(" | ")?;
20183            }
20184            f.write_str("METADATA")?;
20185            remaining &= !Self::METADATA.0;
20186            first = false;
20187        }
20188        if remaining != 0u32 {
20189            if !first {
20190                f.write_str(" | ")?;
20191            }
20192            write!(f, "{:#x}", remaining)?;
20193        } else if first {
20194            f.write_str("(empty)")?;
20195        }
20196        Ok(())
20197    }
20198}
20199///[`VkSpirvResourceTypeFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSpirvResourceTypeFlagBitsEXT.html)
20200#[repr(transparent)]
20201#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
20202#[doc(alias = "VkSpirvResourceTypeFlagBitsEXT")]
20203pub struct SpirvResourceTypeFlagBitsEXT(u32);
20204impl SpirvResourceTypeFlagBitsEXT {
20205    #[inline]
20206    pub const fn empty() -> Self {
20207        Self(0u32)
20208    }
20209    #[inline]
20210    pub const fn from_raw(value: u32) -> Self {
20211        Self(value)
20212    }
20213    #[inline]
20214    pub const fn as_raw(self) -> u32 {
20215        self.0
20216    }
20217    #[inline]
20218    pub const fn is_empty(self) -> bool {
20219        self.0 == 0u32
20220    }
20221    #[inline]
20222    pub const fn contains(self, other: Self) -> bool {
20223        (self.0 & other.0) == other.0
20224    }
20225    #[inline]
20226    pub const fn all() -> Self {
20227        Self(2147483647u32)
20228    }
20229    pub const ALL: Self = Self(2147483647u32);
20230    ///Bit 0.
20231    pub const SAMPLER: Self = Self(1u32);
20232    ///Bit 1.
20233    pub const SAMPLED_IMAGE: Self = Self(2u32);
20234    ///Bit 2.
20235    pub const READ_ONLY_IMAGE: Self = Self(4u32);
20236    ///Bit 3.
20237    pub const READ_WRITE_IMAGE: Self = Self(8u32);
20238    ///Bit 4.
20239    pub const COMBINED_SAMPLED_IMAGE: Self = Self(16u32);
20240    ///Bit 5.
20241    pub const UNIFORM_BUFFER: Self = Self(32u32);
20242    ///Bit 6.
20243    pub const READ_ONLY_STORAGE_BUFFER: Self = Self(64u32);
20244    ///Bit 7.
20245    pub const READ_WRITE_STORAGE_BUFFER: Self = Self(128u32);
20246    ///Bit 8.
20247    pub const ACCELERATION_STRUCTURE: Self = Self(256u32);
20248    ///Bit 9.
20249    pub const TENSOR_BIT: Self = Self(512u32);
20250}
20251impl core::ops::BitOr for SpirvResourceTypeFlagBitsEXT {
20252    type Output = Self;
20253    #[inline]
20254    fn bitor(self, rhs: Self) -> Self {
20255        Self(self.0 | rhs.0)
20256    }
20257}
20258impl core::ops::BitOrAssign for SpirvResourceTypeFlagBitsEXT {
20259    #[inline]
20260    fn bitor_assign(&mut self, rhs: Self) {
20261        self.0 |= rhs.0;
20262    }
20263}
20264impl core::ops::BitAnd for SpirvResourceTypeFlagBitsEXT {
20265    type Output = Self;
20266    #[inline]
20267    fn bitand(self, rhs: Self) -> Self {
20268        Self(self.0 & rhs.0)
20269    }
20270}
20271impl core::ops::BitAndAssign for SpirvResourceTypeFlagBitsEXT {
20272    #[inline]
20273    fn bitand_assign(&mut self, rhs: Self) {
20274        self.0 &= rhs.0;
20275    }
20276}
20277impl core::ops::BitXor for SpirvResourceTypeFlagBitsEXT {
20278    type Output = Self;
20279    #[inline]
20280    fn bitxor(self, rhs: Self) -> Self {
20281        Self(self.0 ^ rhs.0)
20282    }
20283}
20284impl core::ops::BitXorAssign for SpirvResourceTypeFlagBitsEXT {
20285    #[inline]
20286    fn bitxor_assign(&mut self, rhs: Self) {
20287        self.0 ^= rhs.0;
20288    }
20289}
20290impl core::ops::Not for SpirvResourceTypeFlagBitsEXT {
20291    type Output = Self;
20292    #[inline]
20293    fn not(self) -> Self {
20294        Self(!self.0)
20295    }
20296}
20297impl core::fmt::Debug for SpirvResourceTypeFlagBitsEXT {
20298    #[allow(unused_mut, unused_variables)]
20299    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20300        let mut first = true;
20301        let mut remaining = self.0;
20302        if remaining & Self::SAMPLER.0 != 0 {
20303            if !first {
20304                f.write_str(" | ")?;
20305            }
20306            f.write_str("SAMPLER")?;
20307            remaining &= !Self::SAMPLER.0;
20308            first = false;
20309        }
20310        if remaining & Self::SAMPLED_IMAGE.0 != 0 {
20311            if !first {
20312                f.write_str(" | ")?;
20313            }
20314            f.write_str("SAMPLED_IMAGE")?;
20315            remaining &= !Self::SAMPLED_IMAGE.0;
20316            first = false;
20317        }
20318        if remaining & Self::READ_ONLY_IMAGE.0 != 0 {
20319            if !first {
20320                f.write_str(" | ")?;
20321            }
20322            f.write_str("READ_ONLY_IMAGE")?;
20323            remaining &= !Self::READ_ONLY_IMAGE.0;
20324            first = false;
20325        }
20326        if remaining & Self::READ_WRITE_IMAGE.0 != 0 {
20327            if !first {
20328                f.write_str(" | ")?;
20329            }
20330            f.write_str("READ_WRITE_IMAGE")?;
20331            remaining &= !Self::READ_WRITE_IMAGE.0;
20332            first = false;
20333        }
20334        if remaining & Self::COMBINED_SAMPLED_IMAGE.0 != 0 {
20335            if !first {
20336                f.write_str(" | ")?;
20337            }
20338            f.write_str("COMBINED_SAMPLED_IMAGE")?;
20339            remaining &= !Self::COMBINED_SAMPLED_IMAGE.0;
20340            first = false;
20341        }
20342        if remaining & Self::UNIFORM_BUFFER.0 != 0 {
20343            if !first {
20344                f.write_str(" | ")?;
20345            }
20346            f.write_str("UNIFORM_BUFFER")?;
20347            remaining &= !Self::UNIFORM_BUFFER.0;
20348            first = false;
20349        }
20350        if remaining & Self::READ_ONLY_STORAGE_BUFFER.0 != 0 {
20351            if !first {
20352                f.write_str(" | ")?;
20353            }
20354            f.write_str("READ_ONLY_STORAGE_BUFFER")?;
20355            remaining &= !Self::READ_ONLY_STORAGE_BUFFER.0;
20356            first = false;
20357        }
20358        if remaining & Self::READ_WRITE_STORAGE_BUFFER.0 != 0 {
20359            if !first {
20360                f.write_str(" | ")?;
20361            }
20362            f.write_str("READ_WRITE_STORAGE_BUFFER")?;
20363            remaining &= !Self::READ_WRITE_STORAGE_BUFFER.0;
20364            first = false;
20365        }
20366        if remaining & Self::ACCELERATION_STRUCTURE.0 != 0 {
20367            if !first {
20368                f.write_str(" | ")?;
20369            }
20370            f.write_str("ACCELERATION_STRUCTURE")?;
20371            remaining &= !Self::ACCELERATION_STRUCTURE.0;
20372            first = false;
20373        }
20374        if remaining & Self::TENSOR_BIT.0 != 0 {
20375            if !first {
20376                f.write_str(" | ")?;
20377            }
20378            f.write_str("TENSOR_BIT")?;
20379            remaining &= !Self::TENSOR_BIT.0;
20380            first = false;
20381        }
20382        if remaining != 0u32 {
20383            if !first {
20384                f.write_str(" | ")?;
20385            }
20386            write!(f, "{:#x}", remaining)?;
20387        } else if first {
20388            f.write_str("(empty)")?;
20389        }
20390        Ok(())
20391    }
20392}
20393///[`VkStencilFaceFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkStencilFaceFlagBits.html)
20394#[repr(transparent)]
20395#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
20396#[doc(alias = "VkStencilFaceFlagBits")]
20397pub struct StencilFaceFlagBits(u32);
20398impl StencilFaceFlagBits {
20399    #[inline]
20400    pub const fn empty() -> Self {
20401        Self(0u32)
20402    }
20403    #[inline]
20404    pub const fn from_raw(value: u32) -> Self {
20405        Self(value)
20406    }
20407    #[inline]
20408    pub const fn as_raw(self) -> u32 {
20409        self.0
20410    }
20411    #[inline]
20412    pub const fn is_empty(self) -> bool {
20413        self.0 == 0u32
20414    }
20415    #[inline]
20416    pub const fn contains(self, other: Self) -> bool {
20417        (self.0 & other.0) == other.0
20418    }
20419    #[inline]
20420    pub const fn all() -> Self {
20421        Self(3u32)
20422    }
20423    ///Bit 0.
20424    pub const FRONT: Self = Self(1u32);
20425    ///Bit 1.
20426    pub const BACK: Self = Self(2u32);
20427    pub const FRONT_AND_BACK: Self = Self(3u32);
20428    pub const STENCIL_FRONT_AND_BACK: Self = Self::FRONT_AND_BACK;
20429}
20430impl core::ops::BitOr for StencilFaceFlagBits {
20431    type Output = Self;
20432    #[inline]
20433    fn bitor(self, rhs: Self) -> Self {
20434        Self(self.0 | rhs.0)
20435    }
20436}
20437impl core::ops::BitOrAssign for StencilFaceFlagBits {
20438    #[inline]
20439    fn bitor_assign(&mut self, rhs: Self) {
20440        self.0 |= rhs.0;
20441    }
20442}
20443impl core::ops::BitAnd for StencilFaceFlagBits {
20444    type Output = Self;
20445    #[inline]
20446    fn bitand(self, rhs: Self) -> Self {
20447        Self(self.0 & rhs.0)
20448    }
20449}
20450impl core::ops::BitAndAssign for StencilFaceFlagBits {
20451    #[inline]
20452    fn bitand_assign(&mut self, rhs: Self) {
20453        self.0 &= rhs.0;
20454    }
20455}
20456impl core::ops::BitXor for StencilFaceFlagBits {
20457    type Output = Self;
20458    #[inline]
20459    fn bitxor(self, rhs: Self) -> Self {
20460        Self(self.0 ^ rhs.0)
20461    }
20462}
20463impl core::ops::BitXorAssign for StencilFaceFlagBits {
20464    #[inline]
20465    fn bitxor_assign(&mut self, rhs: Self) {
20466        self.0 ^= rhs.0;
20467    }
20468}
20469impl core::ops::Not for StencilFaceFlagBits {
20470    type Output = Self;
20471    #[inline]
20472    fn not(self) -> Self {
20473        Self(!self.0)
20474    }
20475}
20476impl core::fmt::Debug for StencilFaceFlagBits {
20477    #[allow(unused_mut, unused_variables)]
20478    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20479        let mut first = true;
20480        let mut remaining = self.0;
20481        if remaining & Self::FRONT.0 != 0 {
20482            if !first {
20483                f.write_str(" | ")?;
20484            }
20485            f.write_str("FRONT")?;
20486            remaining &= !Self::FRONT.0;
20487            first = false;
20488        }
20489        if remaining & Self::BACK.0 != 0 {
20490            if !first {
20491                f.write_str(" | ")?;
20492            }
20493            f.write_str("BACK")?;
20494            remaining &= !Self::BACK.0;
20495            first = false;
20496        }
20497        if remaining != 0u32 {
20498            if !first {
20499                f.write_str(" | ")?;
20500            }
20501            write!(f, "{:#x}", remaining)?;
20502        } else if first {
20503            f.write_str("(empty)")?;
20504        }
20505        Ok(())
20506    }
20507}
20508///[`VkSubgroupFeatureFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubgroupFeatureFlagBits.html)
20509#[repr(transparent)]
20510#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
20511#[doc(alias = "VkSubgroupFeatureFlagBits")]
20512pub struct SubgroupFeatureFlagBits(u32);
20513impl SubgroupFeatureFlagBits {
20514    #[inline]
20515    pub const fn empty() -> Self {
20516        Self(0u32)
20517    }
20518    #[inline]
20519    pub const fn from_raw(value: u32) -> Self {
20520        Self(value)
20521    }
20522    #[inline]
20523    pub const fn as_raw(self) -> u32 {
20524        self.0
20525    }
20526    #[inline]
20527    pub const fn is_empty(self) -> bool {
20528        self.0 == 0u32
20529    }
20530    #[inline]
20531    pub const fn contains(self, other: Self) -> bool {
20532        (self.0 & other.0) == other.0
20533    }
20534    #[inline]
20535    pub const fn all() -> Self {
20536        Self(2047u32)
20537    }
20538    ///Bit 0.
20539    pub const BASIC: Self = Self(1u32);
20540    ///Bit 1.
20541    pub const VOTE: Self = Self(2u32);
20542    ///Bit 2.
20543    pub const ARITHMETIC: Self = Self(4u32);
20544    ///Bit 3.
20545    pub const BALLOT: Self = Self(8u32);
20546    ///Bit 4.
20547    pub const SHUFFLE: Self = Self(16u32);
20548    ///Bit 5.
20549    pub const SHUFFLE_RELATIVE: Self = Self(32u32);
20550    ///Bit 6.
20551    pub const CLUSTERED: Self = Self(64u32);
20552    ///Bit 7.
20553    pub const QUAD: Self = Self(128u32);
20554    ///Bit 9.
20555    pub const ROTATE: Self = Self(512u32);
20556    ///Bit 10.
20557    pub const ROTATE_CLUSTERED: Self = Self(1024u32);
20558    ///Bit 8.
20559    pub const PARTITIONED: Self = Self(256u32);
20560}
20561impl core::ops::BitOr for SubgroupFeatureFlagBits {
20562    type Output = Self;
20563    #[inline]
20564    fn bitor(self, rhs: Self) -> Self {
20565        Self(self.0 | rhs.0)
20566    }
20567}
20568impl core::ops::BitOrAssign for SubgroupFeatureFlagBits {
20569    #[inline]
20570    fn bitor_assign(&mut self, rhs: Self) {
20571        self.0 |= rhs.0;
20572    }
20573}
20574impl core::ops::BitAnd for SubgroupFeatureFlagBits {
20575    type Output = Self;
20576    #[inline]
20577    fn bitand(self, rhs: Self) -> Self {
20578        Self(self.0 & rhs.0)
20579    }
20580}
20581impl core::ops::BitAndAssign for SubgroupFeatureFlagBits {
20582    #[inline]
20583    fn bitand_assign(&mut self, rhs: Self) {
20584        self.0 &= rhs.0;
20585    }
20586}
20587impl core::ops::BitXor for SubgroupFeatureFlagBits {
20588    type Output = Self;
20589    #[inline]
20590    fn bitxor(self, rhs: Self) -> Self {
20591        Self(self.0 ^ rhs.0)
20592    }
20593}
20594impl core::ops::BitXorAssign for SubgroupFeatureFlagBits {
20595    #[inline]
20596    fn bitxor_assign(&mut self, rhs: Self) {
20597        self.0 ^= rhs.0;
20598    }
20599}
20600impl core::ops::Not for SubgroupFeatureFlagBits {
20601    type Output = Self;
20602    #[inline]
20603    fn not(self) -> Self {
20604        Self(!self.0)
20605    }
20606}
20607impl core::fmt::Debug for SubgroupFeatureFlagBits {
20608    #[allow(unused_mut, unused_variables)]
20609    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20610        let mut first = true;
20611        let mut remaining = self.0;
20612        if remaining & Self::BASIC.0 != 0 {
20613            if !first {
20614                f.write_str(" | ")?;
20615            }
20616            f.write_str("BASIC")?;
20617            remaining &= !Self::BASIC.0;
20618            first = false;
20619        }
20620        if remaining & Self::VOTE.0 != 0 {
20621            if !first {
20622                f.write_str(" | ")?;
20623            }
20624            f.write_str("VOTE")?;
20625            remaining &= !Self::VOTE.0;
20626            first = false;
20627        }
20628        if remaining & Self::ARITHMETIC.0 != 0 {
20629            if !first {
20630                f.write_str(" | ")?;
20631            }
20632            f.write_str("ARITHMETIC")?;
20633            remaining &= !Self::ARITHMETIC.0;
20634            first = false;
20635        }
20636        if remaining & Self::BALLOT.0 != 0 {
20637            if !first {
20638                f.write_str(" | ")?;
20639            }
20640            f.write_str("BALLOT")?;
20641            remaining &= !Self::BALLOT.0;
20642            first = false;
20643        }
20644        if remaining & Self::SHUFFLE.0 != 0 {
20645            if !first {
20646                f.write_str(" | ")?;
20647            }
20648            f.write_str("SHUFFLE")?;
20649            remaining &= !Self::SHUFFLE.0;
20650            first = false;
20651        }
20652        if remaining & Self::SHUFFLE_RELATIVE.0 != 0 {
20653            if !first {
20654                f.write_str(" | ")?;
20655            }
20656            f.write_str("SHUFFLE_RELATIVE")?;
20657            remaining &= !Self::SHUFFLE_RELATIVE.0;
20658            first = false;
20659        }
20660        if remaining & Self::CLUSTERED.0 != 0 {
20661            if !first {
20662                f.write_str(" | ")?;
20663            }
20664            f.write_str("CLUSTERED")?;
20665            remaining &= !Self::CLUSTERED.0;
20666            first = false;
20667        }
20668        if remaining & Self::QUAD.0 != 0 {
20669            if !first {
20670                f.write_str(" | ")?;
20671            }
20672            f.write_str("QUAD")?;
20673            remaining &= !Self::QUAD.0;
20674            first = false;
20675        }
20676        if remaining & Self::ROTATE.0 != 0 {
20677            if !first {
20678                f.write_str(" | ")?;
20679            }
20680            f.write_str("ROTATE")?;
20681            remaining &= !Self::ROTATE.0;
20682            first = false;
20683        }
20684        if remaining & Self::ROTATE_CLUSTERED.0 != 0 {
20685            if !first {
20686                f.write_str(" | ")?;
20687            }
20688            f.write_str("ROTATE_CLUSTERED")?;
20689            remaining &= !Self::ROTATE_CLUSTERED.0;
20690            first = false;
20691        }
20692        if remaining & Self::PARTITIONED.0 != 0 {
20693            if !first {
20694                f.write_str(" | ")?;
20695            }
20696            f.write_str("PARTITIONED")?;
20697            remaining &= !Self::PARTITIONED.0;
20698            first = false;
20699        }
20700        if remaining != 0u32 {
20701            if !first {
20702                f.write_str(" | ")?;
20703            }
20704            write!(f, "{:#x}", remaining)?;
20705        } else if first {
20706            f.write_str("(empty)")?;
20707        }
20708        Ok(())
20709    }
20710}
20711///[`VkSubmitFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubmitFlagBits.html)
20712#[repr(transparent)]
20713#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
20714#[doc(alias = "VkSubmitFlagBits")]
20715pub struct SubmitFlagBits(u32);
20716impl SubmitFlagBits {
20717    #[inline]
20718    pub const fn empty() -> Self {
20719        Self(0u32)
20720    }
20721    #[inline]
20722    pub const fn from_raw(value: u32) -> Self {
20723        Self(value)
20724    }
20725    #[inline]
20726    pub const fn as_raw(self) -> u32 {
20727        self.0
20728    }
20729    #[inline]
20730    pub const fn is_empty(self) -> bool {
20731        self.0 == 0u32
20732    }
20733    #[inline]
20734    pub const fn contains(self, other: Self) -> bool {
20735        (self.0 & other.0) == other.0
20736    }
20737    #[inline]
20738    pub const fn all() -> Self {
20739        Self(1u32)
20740    }
20741    ///Bit 0.
20742    pub const PROTECTED: Self = Self(1u32);
20743}
20744impl core::ops::BitOr for SubmitFlagBits {
20745    type Output = Self;
20746    #[inline]
20747    fn bitor(self, rhs: Self) -> Self {
20748        Self(self.0 | rhs.0)
20749    }
20750}
20751impl core::ops::BitOrAssign for SubmitFlagBits {
20752    #[inline]
20753    fn bitor_assign(&mut self, rhs: Self) {
20754        self.0 |= rhs.0;
20755    }
20756}
20757impl core::ops::BitAnd for SubmitFlagBits {
20758    type Output = Self;
20759    #[inline]
20760    fn bitand(self, rhs: Self) -> Self {
20761        Self(self.0 & rhs.0)
20762    }
20763}
20764impl core::ops::BitAndAssign for SubmitFlagBits {
20765    #[inline]
20766    fn bitand_assign(&mut self, rhs: Self) {
20767        self.0 &= rhs.0;
20768    }
20769}
20770impl core::ops::BitXor for SubmitFlagBits {
20771    type Output = Self;
20772    #[inline]
20773    fn bitxor(self, rhs: Self) -> Self {
20774        Self(self.0 ^ rhs.0)
20775    }
20776}
20777impl core::ops::BitXorAssign for SubmitFlagBits {
20778    #[inline]
20779    fn bitxor_assign(&mut self, rhs: Self) {
20780        self.0 ^= rhs.0;
20781    }
20782}
20783impl core::ops::Not for SubmitFlagBits {
20784    type Output = Self;
20785    #[inline]
20786    fn not(self) -> Self {
20787        Self(!self.0)
20788    }
20789}
20790impl core::fmt::Debug for SubmitFlagBits {
20791    #[allow(unused_mut, unused_variables)]
20792    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20793        let mut first = true;
20794        let mut remaining = self.0;
20795        if remaining & Self::PROTECTED.0 != 0 {
20796            if !first {
20797                f.write_str(" | ")?;
20798            }
20799            f.write_str("PROTECTED")?;
20800            remaining &= !Self::PROTECTED.0;
20801            first = false;
20802        }
20803        if remaining != 0u32 {
20804            if !first {
20805                f.write_str(" | ")?;
20806            }
20807            write!(f, "{:#x}", remaining)?;
20808        } else if first {
20809            f.write_str("(empty)")?;
20810        }
20811        Ok(())
20812    }
20813}
20814///[`VkSubpassDescriptionFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDescriptionFlagBits.html)
20815#[repr(transparent)]
20816#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
20817#[doc(alias = "VkSubpassDescriptionFlagBits")]
20818pub struct SubpassDescriptionFlagBits(u32);
20819impl SubpassDescriptionFlagBits {
20820    #[inline]
20821    pub const fn empty() -> Self {
20822        Self(0u32)
20823    }
20824    #[inline]
20825    pub const fn from_raw(value: u32) -> Self {
20826        Self(value)
20827    }
20828    #[inline]
20829    pub const fn as_raw(self) -> u32 {
20830        self.0
20831    }
20832    #[inline]
20833    pub const fn is_empty(self) -> bool {
20834        self.0 == 0u32
20835    }
20836    #[inline]
20837    pub const fn contains(self, other: Self) -> bool {
20838        (self.0 & other.0) == other.0
20839    }
20840    #[inline]
20841    pub const fn all() -> Self {
20842        Self(511u32)
20843    }
20844    ///Bit 0.
20845    pub const PER_VIEW_ATTRIBUTES_BIT: Self = Self(1u32);
20846    ///Bit 1.
20847    pub const PER_VIEW_POSITION_X_ONLY_BIT: Self = Self(2u32);
20848    pub const FRAGMENT_REGION_BIT: Self = Self::FRAGMENT_REGION;
20849    pub const SHADER_RESOLVE_BIT: Self = Self::CUSTOM_RESOLVE;
20850    ///Bit 8.
20851    pub const TILE_SHADING_APRON_BIT: Self = Self(256u32);
20852    pub const RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT: Self = Self::RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS;
20853    pub const RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT: Self = Self::RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS;
20854    pub const RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT: Self = Self::RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS;
20855    ///Bit 4.
20856    pub const RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS: Self = Self(16u32);
20857    ///Bit 5.
20858    pub const RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS: Self = Self(32u32);
20859    ///Bit 6.
20860    pub const RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS: Self = Self(64u32);
20861    ///Bit 7.
20862    pub const ENABLE_LEGACY_DITHERING: Self = Self(128u32);
20863    ///Bit 2.
20864    pub const FRAGMENT_REGION: Self = Self(4u32);
20865    ///Bit 3.
20866    pub const CUSTOM_RESOLVE: Self = Self(8u32);
20867}
20868impl core::ops::BitOr for SubpassDescriptionFlagBits {
20869    type Output = Self;
20870    #[inline]
20871    fn bitor(self, rhs: Self) -> Self {
20872        Self(self.0 | rhs.0)
20873    }
20874}
20875impl core::ops::BitOrAssign for SubpassDescriptionFlagBits {
20876    #[inline]
20877    fn bitor_assign(&mut self, rhs: Self) {
20878        self.0 |= rhs.0;
20879    }
20880}
20881impl core::ops::BitAnd for SubpassDescriptionFlagBits {
20882    type Output = Self;
20883    #[inline]
20884    fn bitand(self, rhs: Self) -> Self {
20885        Self(self.0 & rhs.0)
20886    }
20887}
20888impl core::ops::BitAndAssign for SubpassDescriptionFlagBits {
20889    #[inline]
20890    fn bitand_assign(&mut self, rhs: Self) {
20891        self.0 &= rhs.0;
20892    }
20893}
20894impl core::ops::BitXor for SubpassDescriptionFlagBits {
20895    type Output = Self;
20896    #[inline]
20897    fn bitxor(self, rhs: Self) -> Self {
20898        Self(self.0 ^ rhs.0)
20899    }
20900}
20901impl core::ops::BitXorAssign for SubpassDescriptionFlagBits {
20902    #[inline]
20903    fn bitxor_assign(&mut self, rhs: Self) {
20904        self.0 ^= rhs.0;
20905    }
20906}
20907impl core::ops::Not for SubpassDescriptionFlagBits {
20908    type Output = Self;
20909    #[inline]
20910    fn not(self) -> Self {
20911        Self(!self.0)
20912    }
20913}
20914impl core::fmt::Debug for SubpassDescriptionFlagBits {
20915    #[allow(unused_mut, unused_variables)]
20916    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20917        let mut first = true;
20918        let mut remaining = self.0;
20919        if remaining & Self::PER_VIEW_ATTRIBUTES_BIT.0 != 0 {
20920            if !first {
20921                f.write_str(" | ")?;
20922            }
20923            f.write_str("PER_VIEW_ATTRIBUTES_BIT")?;
20924            remaining &= !Self::PER_VIEW_ATTRIBUTES_BIT.0;
20925            first = false;
20926        }
20927        if remaining & Self::PER_VIEW_POSITION_X_ONLY_BIT.0 != 0 {
20928            if !first {
20929                f.write_str(" | ")?;
20930            }
20931            f.write_str("PER_VIEW_POSITION_X_ONLY_BIT")?;
20932            remaining &= !Self::PER_VIEW_POSITION_X_ONLY_BIT.0;
20933            first = false;
20934        }
20935        if remaining & Self::TILE_SHADING_APRON_BIT.0 != 0 {
20936            if !first {
20937                f.write_str(" | ")?;
20938            }
20939            f.write_str("TILE_SHADING_APRON_BIT")?;
20940            remaining &= !Self::TILE_SHADING_APRON_BIT.0;
20941            first = false;
20942        }
20943        if remaining & Self::RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS.0 != 0 {
20944            if !first {
20945                f.write_str(" | ")?;
20946            }
20947            f.write_str("RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS")?;
20948            remaining &= !Self::RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS.0;
20949            first = false;
20950        }
20951        if remaining & Self::RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS.0 != 0 {
20952            if !first {
20953                f.write_str(" | ")?;
20954            }
20955            f.write_str("RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS")?;
20956            remaining &= !Self::RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS.0;
20957            first = false;
20958        }
20959        if remaining & Self::RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS.0 != 0 {
20960            if !first {
20961                f.write_str(" | ")?;
20962            }
20963            f.write_str("RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS")?;
20964            remaining &= !Self::RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS.0;
20965            first = false;
20966        }
20967        if remaining & Self::ENABLE_LEGACY_DITHERING.0 != 0 {
20968            if !first {
20969                f.write_str(" | ")?;
20970            }
20971            f.write_str("ENABLE_LEGACY_DITHERING")?;
20972            remaining &= !Self::ENABLE_LEGACY_DITHERING.0;
20973            first = false;
20974        }
20975        if remaining & Self::FRAGMENT_REGION.0 != 0 {
20976            if !first {
20977                f.write_str(" | ")?;
20978            }
20979            f.write_str("FRAGMENT_REGION")?;
20980            remaining &= !Self::FRAGMENT_REGION.0;
20981            first = false;
20982        }
20983        if remaining & Self::CUSTOM_RESOLVE.0 != 0 {
20984            if !first {
20985                f.write_str(" | ")?;
20986            }
20987            f.write_str("CUSTOM_RESOLVE")?;
20988            remaining &= !Self::CUSTOM_RESOLVE.0;
20989            first = false;
20990        }
20991        if remaining != 0u32 {
20992            if !first {
20993                f.write_str(" | ")?;
20994            }
20995            write!(f, "{:#x}", remaining)?;
20996        } else if first {
20997            f.write_str("(empty)")?;
20998        }
20999        Ok(())
21000    }
21001}
21002///[`VkSurfaceCounterFlagBitsEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCounterFlagBitsEXT.html)
21003#[repr(transparent)]
21004#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21005#[doc(alias = "VkSurfaceCounterFlagBitsEXT")]
21006pub struct SurfaceCounterFlagBitsEXT(u32);
21007impl SurfaceCounterFlagBitsEXT {
21008    #[inline]
21009    pub const fn empty() -> Self {
21010        Self(0u32)
21011    }
21012    #[inline]
21013    pub const fn from_raw(value: u32) -> Self {
21014        Self(value)
21015    }
21016    #[inline]
21017    pub const fn as_raw(self) -> u32 {
21018        self.0
21019    }
21020    #[inline]
21021    pub const fn is_empty(self) -> bool {
21022        self.0 == 0u32
21023    }
21024    #[inline]
21025    pub const fn contains(self, other: Self) -> bool {
21026        (self.0 & other.0) == other.0
21027    }
21028    #[inline]
21029    pub const fn all() -> Self {
21030        Self(1u32)
21031    }
21032    ///Bit 0.
21033    pub const VBLANK: Self = Self(1u32);
21034}
21035impl core::ops::BitOr for SurfaceCounterFlagBitsEXT {
21036    type Output = Self;
21037    #[inline]
21038    fn bitor(self, rhs: Self) -> Self {
21039        Self(self.0 | rhs.0)
21040    }
21041}
21042impl core::ops::BitOrAssign for SurfaceCounterFlagBitsEXT {
21043    #[inline]
21044    fn bitor_assign(&mut self, rhs: Self) {
21045        self.0 |= rhs.0;
21046    }
21047}
21048impl core::ops::BitAnd for SurfaceCounterFlagBitsEXT {
21049    type Output = Self;
21050    #[inline]
21051    fn bitand(self, rhs: Self) -> Self {
21052        Self(self.0 & rhs.0)
21053    }
21054}
21055impl core::ops::BitAndAssign for SurfaceCounterFlagBitsEXT {
21056    #[inline]
21057    fn bitand_assign(&mut self, rhs: Self) {
21058        self.0 &= rhs.0;
21059    }
21060}
21061impl core::ops::BitXor for SurfaceCounterFlagBitsEXT {
21062    type Output = Self;
21063    #[inline]
21064    fn bitxor(self, rhs: Self) -> Self {
21065        Self(self.0 ^ rhs.0)
21066    }
21067}
21068impl core::ops::BitXorAssign for SurfaceCounterFlagBitsEXT {
21069    #[inline]
21070    fn bitxor_assign(&mut self, rhs: Self) {
21071        self.0 ^= rhs.0;
21072    }
21073}
21074impl core::ops::Not for SurfaceCounterFlagBitsEXT {
21075    type Output = Self;
21076    #[inline]
21077    fn not(self) -> Self {
21078        Self(!self.0)
21079    }
21080}
21081impl core::fmt::Debug for SurfaceCounterFlagBitsEXT {
21082    #[allow(unused_mut, unused_variables)]
21083    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21084        let mut first = true;
21085        let mut remaining = self.0;
21086        if remaining & Self::VBLANK.0 != 0 {
21087            if !first {
21088                f.write_str(" | ")?;
21089            }
21090            f.write_str("VBLANK")?;
21091            remaining &= !Self::VBLANK.0;
21092            first = false;
21093        }
21094        if remaining != 0u32 {
21095            if !first {
21096                f.write_str(" | ")?;
21097            }
21098            write!(f, "{:#x}", remaining)?;
21099        } else if first {
21100            f.write_str("(empty)")?;
21101        }
21102        Ok(())
21103    }
21104}
21105///[`VkSurfaceTransformFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceTransformFlagBitsKHR.html)
21106#[repr(transparent)]
21107#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21108#[doc(alias = "VkSurfaceTransformFlagBitsKHR")]
21109pub struct SurfaceTransformFlagBitsKHR(u32);
21110impl SurfaceTransformFlagBitsKHR {
21111    #[inline]
21112    pub const fn empty() -> Self {
21113        Self(0u32)
21114    }
21115    #[inline]
21116    pub const fn from_raw(value: u32) -> Self {
21117        Self(value)
21118    }
21119    #[inline]
21120    pub const fn as_raw(self) -> u32 {
21121        self.0
21122    }
21123    #[inline]
21124    pub const fn is_empty(self) -> bool {
21125        self.0 == 0u32
21126    }
21127    #[inline]
21128    pub const fn contains(self, other: Self) -> bool {
21129        (self.0 & other.0) == other.0
21130    }
21131    #[inline]
21132    pub const fn all() -> Self {
21133        Self(511u32)
21134    }
21135    ///Bit 0.
21136    pub const IDENTITY: Self = Self(1u32);
21137    ///Bit 1.
21138    pub const ROTATE_90: Self = Self(2u32);
21139    ///Bit 2.
21140    pub const ROTATE_180: Self = Self(4u32);
21141    ///Bit 3.
21142    pub const ROTATE_270: Self = Self(8u32);
21143    ///Bit 4.
21144    pub const HORIZONTAL_MIRROR: Self = Self(16u32);
21145    ///Bit 5.
21146    pub const HORIZONTAL_MIRROR_ROTATE_90: Self = Self(32u32);
21147    ///Bit 6.
21148    pub const HORIZONTAL_MIRROR_ROTATE_180: Self = Self(64u32);
21149    ///Bit 7.
21150    pub const HORIZONTAL_MIRROR_ROTATE_270: Self = Self(128u32);
21151    ///Bit 8.
21152    pub const INHERIT: Self = Self(256u32);
21153}
21154impl core::ops::BitOr for SurfaceTransformFlagBitsKHR {
21155    type Output = Self;
21156    #[inline]
21157    fn bitor(self, rhs: Self) -> Self {
21158        Self(self.0 | rhs.0)
21159    }
21160}
21161impl core::ops::BitOrAssign for SurfaceTransformFlagBitsKHR {
21162    #[inline]
21163    fn bitor_assign(&mut self, rhs: Self) {
21164        self.0 |= rhs.0;
21165    }
21166}
21167impl core::ops::BitAnd for SurfaceTransformFlagBitsKHR {
21168    type Output = Self;
21169    #[inline]
21170    fn bitand(self, rhs: Self) -> Self {
21171        Self(self.0 & rhs.0)
21172    }
21173}
21174impl core::ops::BitAndAssign for SurfaceTransformFlagBitsKHR {
21175    #[inline]
21176    fn bitand_assign(&mut self, rhs: Self) {
21177        self.0 &= rhs.0;
21178    }
21179}
21180impl core::ops::BitXor for SurfaceTransformFlagBitsKHR {
21181    type Output = Self;
21182    #[inline]
21183    fn bitxor(self, rhs: Self) -> Self {
21184        Self(self.0 ^ rhs.0)
21185    }
21186}
21187impl core::ops::BitXorAssign for SurfaceTransformFlagBitsKHR {
21188    #[inline]
21189    fn bitxor_assign(&mut self, rhs: Self) {
21190        self.0 ^= rhs.0;
21191    }
21192}
21193impl core::ops::Not for SurfaceTransformFlagBitsKHR {
21194    type Output = Self;
21195    #[inline]
21196    fn not(self) -> Self {
21197        Self(!self.0)
21198    }
21199}
21200impl core::fmt::Debug for SurfaceTransformFlagBitsKHR {
21201    #[allow(unused_mut, unused_variables)]
21202    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21203        let mut first = true;
21204        let mut remaining = self.0;
21205        if remaining & Self::IDENTITY.0 != 0 {
21206            if !first {
21207                f.write_str(" | ")?;
21208            }
21209            f.write_str("IDENTITY")?;
21210            remaining &= !Self::IDENTITY.0;
21211            first = false;
21212        }
21213        if remaining & Self::ROTATE_90.0 != 0 {
21214            if !first {
21215                f.write_str(" | ")?;
21216            }
21217            f.write_str("ROTATE_90")?;
21218            remaining &= !Self::ROTATE_90.0;
21219            first = false;
21220        }
21221        if remaining & Self::ROTATE_180.0 != 0 {
21222            if !first {
21223                f.write_str(" | ")?;
21224            }
21225            f.write_str("ROTATE_180")?;
21226            remaining &= !Self::ROTATE_180.0;
21227            first = false;
21228        }
21229        if remaining & Self::ROTATE_270.0 != 0 {
21230            if !first {
21231                f.write_str(" | ")?;
21232            }
21233            f.write_str("ROTATE_270")?;
21234            remaining &= !Self::ROTATE_270.0;
21235            first = false;
21236        }
21237        if remaining & Self::HORIZONTAL_MIRROR.0 != 0 {
21238            if !first {
21239                f.write_str(" | ")?;
21240            }
21241            f.write_str("HORIZONTAL_MIRROR")?;
21242            remaining &= !Self::HORIZONTAL_MIRROR.0;
21243            first = false;
21244        }
21245        if remaining & Self::HORIZONTAL_MIRROR_ROTATE_90.0 != 0 {
21246            if !first {
21247                f.write_str(" | ")?;
21248            }
21249            f.write_str("HORIZONTAL_MIRROR_ROTATE_90")?;
21250            remaining &= !Self::HORIZONTAL_MIRROR_ROTATE_90.0;
21251            first = false;
21252        }
21253        if remaining & Self::HORIZONTAL_MIRROR_ROTATE_180.0 != 0 {
21254            if !first {
21255                f.write_str(" | ")?;
21256            }
21257            f.write_str("HORIZONTAL_MIRROR_ROTATE_180")?;
21258            remaining &= !Self::HORIZONTAL_MIRROR_ROTATE_180.0;
21259            first = false;
21260        }
21261        if remaining & Self::HORIZONTAL_MIRROR_ROTATE_270.0 != 0 {
21262            if !first {
21263                f.write_str(" | ")?;
21264            }
21265            f.write_str("HORIZONTAL_MIRROR_ROTATE_270")?;
21266            remaining &= !Self::HORIZONTAL_MIRROR_ROTATE_270.0;
21267            first = false;
21268        }
21269        if remaining & Self::INHERIT.0 != 0 {
21270            if !first {
21271                f.write_str(" | ")?;
21272            }
21273            f.write_str("INHERIT")?;
21274            remaining &= !Self::INHERIT.0;
21275            first = false;
21276        }
21277        if remaining != 0u32 {
21278            if !first {
21279                f.write_str(" | ")?;
21280            }
21281            write!(f, "{:#x}", remaining)?;
21282        } else if first {
21283            f.write_str("(empty)")?;
21284        }
21285        Ok(())
21286    }
21287}
21288///[`VkSwapchainCreateFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainCreateFlagBitsKHR.html)
21289#[repr(transparent)]
21290#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21291#[doc(alias = "VkSwapchainCreateFlagBitsKHR")]
21292pub struct SwapchainCreateFlagBitsKHR(u32);
21293impl SwapchainCreateFlagBitsKHR {
21294    #[inline]
21295    pub const fn empty() -> Self {
21296        Self(0u32)
21297    }
21298    #[inline]
21299    pub const fn from_raw(value: u32) -> Self {
21300        Self(value)
21301    }
21302    #[inline]
21303    pub const fn as_raw(self) -> u32 {
21304        self.0
21305    }
21306    #[inline]
21307    pub const fn is_empty(self) -> bool {
21308        self.0 == 0u32
21309    }
21310    #[inline]
21311    pub const fn contains(self, other: Self) -> bool {
21312        (self.0 & other.0) == other.0
21313    }
21314    #[inline]
21315    pub const fn all() -> Self {
21316        Self(719u32)
21317    }
21318    ///Bit 0.
21319    pub const SPLIT_INSTANCE_BIND_REGIONS: Self = Self(1u32);
21320    ///Bit 1.
21321    pub const PROTECTED: Self = Self(2u32);
21322    ///Bit 2.
21323    pub const MUTABLE_FORMAT: Self = Self(4u32);
21324    ///Bit 9.
21325    pub const PRESENT_TIMING: Self = Self(512u32);
21326    ///Bit 6.
21327    pub const PRESENT_ID_2: Self = Self(64u32);
21328    ///Bit 7.
21329    pub const PRESENT_WAIT_2: Self = Self(128u32);
21330    ///Bit 3.
21331    pub const DEFERRED_MEMORY_ALLOCATION: Self = Self(8u32);
21332}
21333impl core::ops::BitOr for SwapchainCreateFlagBitsKHR {
21334    type Output = Self;
21335    #[inline]
21336    fn bitor(self, rhs: Self) -> Self {
21337        Self(self.0 | rhs.0)
21338    }
21339}
21340impl core::ops::BitOrAssign for SwapchainCreateFlagBitsKHR {
21341    #[inline]
21342    fn bitor_assign(&mut self, rhs: Self) {
21343        self.0 |= rhs.0;
21344    }
21345}
21346impl core::ops::BitAnd for SwapchainCreateFlagBitsKHR {
21347    type Output = Self;
21348    #[inline]
21349    fn bitand(self, rhs: Self) -> Self {
21350        Self(self.0 & rhs.0)
21351    }
21352}
21353impl core::ops::BitAndAssign for SwapchainCreateFlagBitsKHR {
21354    #[inline]
21355    fn bitand_assign(&mut self, rhs: Self) {
21356        self.0 &= rhs.0;
21357    }
21358}
21359impl core::ops::BitXor for SwapchainCreateFlagBitsKHR {
21360    type Output = Self;
21361    #[inline]
21362    fn bitxor(self, rhs: Self) -> Self {
21363        Self(self.0 ^ rhs.0)
21364    }
21365}
21366impl core::ops::BitXorAssign for SwapchainCreateFlagBitsKHR {
21367    #[inline]
21368    fn bitxor_assign(&mut self, rhs: Self) {
21369        self.0 ^= rhs.0;
21370    }
21371}
21372impl core::ops::Not for SwapchainCreateFlagBitsKHR {
21373    type Output = Self;
21374    #[inline]
21375    fn not(self) -> Self {
21376        Self(!self.0)
21377    }
21378}
21379impl core::fmt::Debug for SwapchainCreateFlagBitsKHR {
21380    #[allow(unused_mut, unused_variables)]
21381    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21382        let mut first = true;
21383        let mut remaining = self.0;
21384        if remaining & Self::SPLIT_INSTANCE_BIND_REGIONS.0 != 0 {
21385            if !first {
21386                f.write_str(" | ")?;
21387            }
21388            f.write_str("SPLIT_INSTANCE_BIND_REGIONS")?;
21389            remaining &= !Self::SPLIT_INSTANCE_BIND_REGIONS.0;
21390            first = false;
21391        }
21392        if remaining & Self::PROTECTED.0 != 0 {
21393            if !first {
21394                f.write_str(" | ")?;
21395            }
21396            f.write_str("PROTECTED")?;
21397            remaining &= !Self::PROTECTED.0;
21398            first = false;
21399        }
21400        if remaining & Self::MUTABLE_FORMAT.0 != 0 {
21401            if !first {
21402                f.write_str(" | ")?;
21403            }
21404            f.write_str("MUTABLE_FORMAT")?;
21405            remaining &= !Self::MUTABLE_FORMAT.0;
21406            first = false;
21407        }
21408        if remaining & Self::PRESENT_TIMING.0 != 0 {
21409            if !first {
21410                f.write_str(" | ")?;
21411            }
21412            f.write_str("PRESENT_TIMING")?;
21413            remaining &= !Self::PRESENT_TIMING.0;
21414            first = false;
21415        }
21416        if remaining & Self::PRESENT_ID_2.0 != 0 {
21417            if !first {
21418                f.write_str(" | ")?;
21419            }
21420            f.write_str("PRESENT_ID_2")?;
21421            remaining &= !Self::PRESENT_ID_2.0;
21422            first = false;
21423        }
21424        if remaining & Self::PRESENT_WAIT_2.0 != 0 {
21425            if !first {
21426                f.write_str(" | ")?;
21427            }
21428            f.write_str("PRESENT_WAIT_2")?;
21429            remaining &= !Self::PRESENT_WAIT_2.0;
21430            first = false;
21431        }
21432        if remaining & Self::DEFERRED_MEMORY_ALLOCATION.0 != 0 {
21433            if !first {
21434                f.write_str(" | ")?;
21435            }
21436            f.write_str("DEFERRED_MEMORY_ALLOCATION")?;
21437            remaining &= !Self::DEFERRED_MEMORY_ALLOCATION.0;
21438            first = false;
21439        }
21440        if remaining != 0u32 {
21441            if !first {
21442                f.write_str(" | ")?;
21443            }
21444            write!(f, "{:#x}", remaining)?;
21445        } else if first {
21446            f.write_str("(empty)")?;
21447        }
21448        Ok(())
21449    }
21450}
21451///[`VkSwapchainImageUsageFlagBitsANDROID`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainImageUsageFlagBitsANDROID.html)
21452#[repr(transparent)]
21453#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21454#[doc(alias = "VkSwapchainImageUsageFlagBitsANDROID")]
21455pub struct SwapchainImageUsageFlagBitsANDROID(u32);
21456impl SwapchainImageUsageFlagBitsANDROID {
21457    #[inline]
21458    pub const fn empty() -> Self {
21459        Self(0u32)
21460    }
21461    #[inline]
21462    pub const fn from_raw(value: u32) -> Self {
21463        Self(value)
21464    }
21465    #[inline]
21466    pub const fn as_raw(self) -> u32 {
21467        self.0
21468    }
21469    #[inline]
21470    pub const fn is_empty(self) -> bool {
21471        self.0 == 0u32
21472    }
21473    #[inline]
21474    pub const fn contains(self, other: Self) -> bool {
21475        (self.0 & other.0) == other.0
21476    }
21477    #[inline]
21478    pub const fn all() -> Self {
21479        Self(1u32)
21480    }
21481    ///Bit 0.
21482    pub const SHARED_BIT: Self = Self(1u32);
21483}
21484impl core::ops::BitOr for SwapchainImageUsageFlagBitsANDROID {
21485    type Output = Self;
21486    #[inline]
21487    fn bitor(self, rhs: Self) -> Self {
21488        Self(self.0 | rhs.0)
21489    }
21490}
21491impl core::ops::BitOrAssign for SwapchainImageUsageFlagBitsANDROID {
21492    #[inline]
21493    fn bitor_assign(&mut self, rhs: Self) {
21494        self.0 |= rhs.0;
21495    }
21496}
21497impl core::ops::BitAnd for SwapchainImageUsageFlagBitsANDROID {
21498    type Output = Self;
21499    #[inline]
21500    fn bitand(self, rhs: Self) -> Self {
21501        Self(self.0 & rhs.0)
21502    }
21503}
21504impl core::ops::BitAndAssign for SwapchainImageUsageFlagBitsANDROID {
21505    #[inline]
21506    fn bitand_assign(&mut self, rhs: Self) {
21507        self.0 &= rhs.0;
21508    }
21509}
21510impl core::ops::BitXor for SwapchainImageUsageFlagBitsANDROID {
21511    type Output = Self;
21512    #[inline]
21513    fn bitxor(self, rhs: Self) -> Self {
21514        Self(self.0 ^ rhs.0)
21515    }
21516}
21517impl core::ops::BitXorAssign for SwapchainImageUsageFlagBitsANDROID {
21518    #[inline]
21519    fn bitxor_assign(&mut self, rhs: Self) {
21520        self.0 ^= rhs.0;
21521    }
21522}
21523impl core::ops::Not for SwapchainImageUsageFlagBitsANDROID {
21524    type Output = Self;
21525    #[inline]
21526    fn not(self) -> Self {
21527        Self(!self.0)
21528    }
21529}
21530impl core::fmt::Debug for SwapchainImageUsageFlagBitsANDROID {
21531    #[allow(unused_mut, unused_variables)]
21532    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21533        let mut first = true;
21534        let mut remaining = self.0;
21535        if remaining & Self::SHARED_BIT.0 != 0 {
21536            if !first {
21537                f.write_str(" | ")?;
21538            }
21539            f.write_str("SHARED_BIT")?;
21540            remaining &= !Self::SHARED_BIT.0;
21541            first = false;
21542        }
21543        if remaining != 0u32 {
21544            if !first {
21545                f.write_str(" | ")?;
21546            }
21547            write!(f, "{:#x}", remaining)?;
21548        } else if first {
21549            f.write_str("(empty)")?;
21550        }
21551        Ok(())
21552    }
21553}
21554///[`VkSwapchainImageUsageFlagBitsOHOS`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainImageUsageFlagBitsOHOS.html)
21555#[repr(transparent)]
21556#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21557#[doc(alias = "VkSwapchainImageUsageFlagBitsOHOS")]
21558pub struct SwapchainImageUsageFlagBitsOHOS(u32);
21559impl SwapchainImageUsageFlagBitsOHOS {
21560    #[inline]
21561    pub const fn empty() -> Self {
21562        Self(0u32)
21563    }
21564    #[inline]
21565    pub const fn from_raw(value: u32) -> Self {
21566        Self(value)
21567    }
21568    #[inline]
21569    pub const fn as_raw(self) -> u32 {
21570        self.0
21571    }
21572    #[inline]
21573    pub const fn is_empty(self) -> bool {
21574        self.0 == 0u32
21575    }
21576    #[inline]
21577    pub const fn contains(self, other: Self) -> bool {
21578        (self.0 & other.0) == other.0
21579    }
21580    #[inline]
21581    pub const fn all() -> Self {
21582        Self(1u32)
21583    }
21584    ///Bit 0.
21585    pub const SHARED_BIT: Self = Self(1u32);
21586}
21587impl core::ops::BitOr for SwapchainImageUsageFlagBitsOHOS {
21588    type Output = Self;
21589    #[inline]
21590    fn bitor(self, rhs: Self) -> Self {
21591        Self(self.0 | rhs.0)
21592    }
21593}
21594impl core::ops::BitOrAssign for SwapchainImageUsageFlagBitsOHOS {
21595    #[inline]
21596    fn bitor_assign(&mut self, rhs: Self) {
21597        self.0 |= rhs.0;
21598    }
21599}
21600impl core::ops::BitAnd for SwapchainImageUsageFlagBitsOHOS {
21601    type Output = Self;
21602    #[inline]
21603    fn bitand(self, rhs: Self) -> Self {
21604        Self(self.0 & rhs.0)
21605    }
21606}
21607impl core::ops::BitAndAssign for SwapchainImageUsageFlagBitsOHOS {
21608    #[inline]
21609    fn bitand_assign(&mut self, rhs: Self) {
21610        self.0 &= rhs.0;
21611    }
21612}
21613impl core::ops::BitXor for SwapchainImageUsageFlagBitsOHOS {
21614    type Output = Self;
21615    #[inline]
21616    fn bitxor(self, rhs: Self) -> Self {
21617        Self(self.0 ^ rhs.0)
21618    }
21619}
21620impl core::ops::BitXorAssign for SwapchainImageUsageFlagBitsOHOS {
21621    #[inline]
21622    fn bitxor_assign(&mut self, rhs: Self) {
21623        self.0 ^= rhs.0;
21624    }
21625}
21626impl core::ops::Not for SwapchainImageUsageFlagBitsOHOS {
21627    type Output = Self;
21628    #[inline]
21629    fn not(self) -> Self {
21630        Self(!self.0)
21631    }
21632}
21633impl core::fmt::Debug for SwapchainImageUsageFlagBitsOHOS {
21634    #[allow(unused_mut, unused_variables)]
21635    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21636        let mut first = true;
21637        let mut remaining = self.0;
21638        if remaining & Self::SHARED_BIT.0 != 0 {
21639            if !first {
21640                f.write_str(" | ")?;
21641            }
21642            f.write_str("SHARED_BIT")?;
21643            remaining &= !Self::SHARED_BIT.0;
21644            first = false;
21645        }
21646        if remaining != 0u32 {
21647            if !first {
21648                f.write_str(" | ")?;
21649            }
21650            write!(f, "{:#x}", remaining)?;
21651        } else if first {
21652            f.write_str("(empty)")?;
21653        }
21654        Ok(())
21655    }
21656}
21657///[`VkTensorCreateFlagBitsARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorCreateFlagBitsARM.html)
21658#[repr(transparent)]
21659#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21660#[doc(alias = "VkTensorCreateFlagBitsARM")]
21661pub struct TensorCreateFlagBitsARM(u64);
21662impl TensorCreateFlagBitsARM {
21663    #[inline]
21664    pub const fn empty() -> Self {
21665        Self(0u64)
21666    }
21667    #[inline]
21668    pub const fn from_raw(value: u64) -> Self {
21669        Self(value)
21670    }
21671    #[inline]
21672    pub const fn as_raw(self) -> u64 {
21673        self.0
21674    }
21675    #[inline]
21676    pub const fn is_empty(self) -> bool {
21677        self.0 == 0u64
21678    }
21679    #[inline]
21680    pub const fn contains(self, other: Self) -> bool {
21681        (self.0 & other.0) == other.0
21682    }
21683    #[inline]
21684    pub const fn all() -> Self {
21685        Self(15u64)
21686    }
21687    ///Bit 0.
21688    pub const MUTABLE_FORMAT_BIT: Self = Self(1u64);
21689    ///Bit 1.
21690    pub const PROTECTED_BIT: Self = Self(2u64);
21691    ///Bit 3.
21692    pub const DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT: Self = Self(8u64);
21693    ///Bit 2.
21694    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT: Self = Self(4u64);
21695}
21696impl core::ops::BitOr for TensorCreateFlagBitsARM {
21697    type Output = Self;
21698    #[inline]
21699    fn bitor(self, rhs: Self) -> Self {
21700        Self(self.0 | rhs.0)
21701    }
21702}
21703impl core::ops::BitOrAssign for TensorCreateFlagBitsARM {
21704    #[inline]
21705    fn bitor_assign(&mut self, rhs: Self) {
21706        self.0 |= rhs.0;
21707    }
21708}
21709impl core::ops::BitAnd for TensorCreateFlagBitsARM {
21710    type Output = Self;
21711    #[inline]
21712    fn bitand(self, rhs: Self) -> Self {
21713        Self(self.0 & rhs.0)
21714    }
21715}
21716impl core::ops::BitAndAssign for TensorCreateFlagBitsARM {
21717    #[inline]
21718    fn bitand_assign(&mut self, rhs: Self) {
21719        self.0 &= rhs.0;
21720    }
21721}
21722impl core::ops::BitXor for TensorCreateFlagBitsARM {
21723    type Output = Self;
21724    #[inline]
21725    fn bitxor(self, rhs: Self) -> Self {
21726        Self(self.0 ^ rhs.0)
21727    }
21728}
21729impl core::ops::BitXorAssign for TensorCreateFlagBitsARM {
21730    #[inline]
21731    fn bitxor_assign(&mut self, rhs: Self) {
21732        self.0 ^= rhs.0;
21733    }
21734}
21735impl core::ops::Not for TensorCreateFlagBitsARM {
21736    type Output = Self;
21737    #[inline]
21738    fn not(self) -> Self {
21739        Self(!self.0)
21740    }
21741}
21742impl core::fmt::Debug for TensorCreateFlagBitsARM {
21743    #[allow(unused_mut, unused_variables)]
21744    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21745        let mut first = true;
21746        let mut remaining = self.0;
21747        if remaining & Self::MUTABLE_FORMAT_BIT.0 != 0 {
21748            if !first {
21749                f.write_str(" | ")?;
21750            }
21751            f.write_str("MUTABLE_FORMAT_BIT")?;
21752            remaining &= !Self::MUTABLE_FORMAT_BIT.0;
21753            first = false;
21754        }
21755        if remaining & Self::PROTECTED_BIT.0 != 0 {
21756            if !first {
21757                f.write_str(" | ")?;
21758            }
21759            f.write_str("PROTECTED_BIT")?;
21760            remaining &= !Self::PROTECTED_BIT.0;
21761            first = false;
21762        }
21763        if remaining & Self::DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT.0 != 0 {
21764            if !first {
21765                f.write_str(" | ")?;
21766            }
21767            f.write_str("DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT")?;
21768            remaining &= !Self::DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT.0;
21769            first = false;
21770        }
21771        if remaining & Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT.0 != 0 {
21772            if !first {
21773                f.write_str(" | ")?;
21774            }
21775            f.write_str("DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT")?;
21776            remaining &= !Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT.0;
21777            first = false;
21778        }
21779        if remaining != 0u64 {
21780            if !first {
21781                f.write_str(" | ")?;
21782            }
21783            write!(f, "{:#x}", remaining)?;
21784        } else if first {
21785            f.write_str("(empty)")?;
21786        }
21787        Ok(())
21788    }
21789}
21790///[`VkTensorUsageFlagBitsARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorUsageFlagBitsARM.html)
21791#[repr(transparent)]
21792#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21793#[doc(alias = "VkTensorUsageFlagBitsARM")]
21794pub struct TensorUsageFlagBitsARM(u64);
21795impl TensorUsageFlagBitsARM {
21796    #[inline]
21797    pub const fn empty() -> Self {
21798        Self(0u64)
21799    }
21800    #[inline]
21801    pub const fn from_raw(value: u64) -> Self {
21802        Self(value)
21803    }
21804    #[inline]
21805    pub const fn as_raw(self) -> u64 {
21806        self.0
21807    }
21808    #[inline]
21809    pub const fn is_empty(self) -> bool {
21810        self.0 == 0u64
21811    }
21812    #[inline]
21813    pub const fn contains(self, other: Self) -> bool {
21814        (self.0 & other.0) == other.0
21815    }
21816    #[inline]
21817    pub const fn all() -> Self {
21818        Self(62u64)
21819    }
21820    ///Bit 1.
21821    pub const SHADER_BIT: Self = Self(2u64);
21822    ///Bit 2.
21823    pub const TRANSFER_SRC_BIT: Self = Self(4u64);
21824    ///Bit 3.
21825    pub const TRANSFER_DST_BIT: Self = Self(8u64);
21826    ///Bit 4.
21827    pub const IMAGE_ALIASING_BIT: Self = Self(16u64);
21828    ///Bit 5.
21829    pub const DATA_GRAPH_BIT: Self = Self(32u64);
21830}
21831impl core::ops::BitOr for TensorUsageFlagBitsARM {
21832    type Output = Self;
21833    #[inline]
21834    fn bitor(self, rhs: Self) -> Self {
21835        Self(self.0 | rhs.0)
21836    }
21837}
21838impl core::ops::BitOrAssign for TensorUsageFlagBitsARM {
21839    #[inline]
21840    fn bitor_assign(&mut self, rhs: Self) {
21841        self.0 |= rhs.0;
21842    }
21843}
21844impl core::ops::BitAnd for TensorUsageFlagBitsARM {
21845    type Output = Self;
21846    #[inline]
21847    fn bitand(self, rhs: Self) -> Self {
21848        Self(self.0 & rhs.0)
21849    }
21850}
21851impl core::ops::BitAndAssign for TensorUsageFlagBitsARM {
21852    #[inline]
21853    fn bitand_assign(&mut self, rhs: Self) {
21854        self.0 &= rhs.0;
21855    }
21856}
21857impl core::ops::BitXor for TensorUsageFlagBitsARM {
21858    type Output = Self;
21859    #[inline]
21860    fn bitxor(self, rhs: Self) -> Self {
21861        Self(self.0 ^ rhs.0)
21862    }
21863}
21864impl core::ops::BitXorAssign for TensorUsageFlagBitsARM {
21865    #[inline]
21866    fn bitxor_assign(&mut self, rhs: Self) {
21867        self.0 ^= rhs.0;
21868    }
21869}
21870impl core::ops::Not for TensorUsageFlagBitsARM {
21871    type Output = Self;
21872    #[inline]
21873    fn not(self) -> Self {
21874        Self(!self.0)
21875    }
21876}
21877impl core::fmt::Debug for TensorUsageFlagBitsARM {
21878    #[allow(unused_mut, unused_variables)]
21879    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21880        let mut first = true;
21881        let mut remaining = self.0;
21882        if remaining & Self::SHADER_BIT.0 != 0 {
21883            if !first {
21884                f.write_str(" | ")?;
21885            }
21886            f.write_str("SHADER_BIT")?;
21887            remaining &= !Self::SHADER_BIT.0;
21888            first = false;
21889        }
21890        if remaining & Self::TRANSFER_SRC_BIT.0 != 0 {
21891            if !first {
21892                f.write_str(" | ")?;
21893            }
21894            f.write_str("TRANSFER_SRC_BIT")?;
21895            remaining &= !Self::TRANSFER_SRC_BIT.0;
21896            first = false;
21897        }
21898        if remaining & Self::TRANSFER_DST_BIT.0 != 0 {
21899            if !first {
21900                f.write_str(" | ")?;
21901            }
21902            f.write_str("TRANSFER_DST_BIT")?;
21903            remaining &= !Self::TRANSFER_DST_BIT.0;
21904            first = false;
21905        }
21906        if remaining & Self::IMAGE_ALIASING_BIT.0 != 0 {
21907            if !first {
21908                f.write_str(" | ")?;
21909            }
21910            f.write_str("IMAGE_ALIASING_BIT")?;
21911            remaining &= !Self::IMAGE_ALIASING_BIT.0;
21912            first = false;
21913        }
21914        if remaining & Self::DATA_GRAPH_BIT.0 != 0 {
21915            if !first {
21916                f.write_str(" | ")?;
21917            }
21918            f.write_str("DATA_GRAPH_BIT")?;
21919            remaining &= !Self::DATA_GRAPH_BIT.0;
21920            first = false;
21921        }
21922        if remaining != 0u64 {
21923            if !first {
21924                f.write_str(" | ")?;
21925            }
21926            write!(f, "{:#x}", remaining)?;
21927        } else if first {
21928            f.write_str("(empty)")?;
21929        }
21930        Ok(())
21931    }
21932}
21933///[`VkTensorViewCreateFlagBitsARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewCreateFlagBitsARM.html)
21934#[repr(transparent)]
21935#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
21936#[doc(alias = "VkTensorViewCreateFlagBitsARM")]
21937pub struct TensorViewCreateFlagBitsARM(u64);
21938impl TensorViewCreateFlagBitsARM {
21939    #[inline]
21940    pub const fn empty() -> Self {
21941        Self(0u64)
21942    }
21943    #[inline]
21944    pub const fn from_raw(value: u64) -> Self {
21945        Self(value)
21946    }
21947    #[inline]
21948    pub const fn as_raw(self) -> u64 {
21949        self.0
21950    }
21951    #[inline]
21952    pub const fn is_empty(self) -> bool {
21953        self.0 == 0u64
21954    }
21955    #[inline]
21956    pub const fn contains(self, other: Self) -> bool {
21957        (self.0 & other.0) == other.0
21958    }
21959    #[inline]
21960    pub const fn all() -> Self {
21961        Self(1u64)
21962    }
21963    ///Bit 0.
21964    pub const DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT: Self = Self(1u64);
21965}
21966impl core::ops::BitOr for TensorViewCreateFlagBitsARM {
21967    type Output = Self;
21968    #[inline]
21969    fn bitor(self, rhs: Self) -> Self {
21970        Self(self.0 | rhs.0)
21971    }
21972}
21973impl core::ops::BitOrAssign for TensorViewCreateFlagBitsARM {
21974    #[inline]
21975    fn bitor_assign(&mut self, rhs: Self) {
21976        self.0 |= rhs.0;
21977    }
21978}
21979impl core::ops::BitAnd for TensorViewCreateFlagBitsARM {
21980    type Output = Self;
21981    #[inline]
21982    fn bitand(self, rhs: Self) -> Self {
21983        Self(self.0 & rhs.0)
21984    }
21985}
21986impl core::ops::BitAndAssign for TensorViewCreateFlagBitsARM {
21987    #[inline]
21988    fn bitand_assign(&mut self, rhs: Self) {
21989        self.0 &= rhs.0;
21990    }
21991}
21992impl core::ops::BitXor for TensorViewCreateFlagBitsARM {
21993    type Output = Self;
21994    #[inline]
21995    fn bitxor(self, rhs: Self) -> Self {
21996        Self(self.0 ^ rhs.0)
21997    }
21998}
21999impl core::ops::BitXorAssign for TensorViewCreateFlagBitsARM {
22000    #[inline]
22001    fn bitxor_assign(&mut self, rhs: Self) {
22002        self.0 ^= rhs.0;
22003    }
22004}
22005impl core::ops::Not for TensorViewCreateFlagBitsARM {
22006    type Output = Self;
22007    #[inline]
22008    fn not(self) -> Self {
22009        Self(!self.0)
22010    }
22011}
22012impl core::fmt::Debug for TensorViewCreateFlagBitsARM {
22013    #[allow(unused_mut, unused_variables)]
22014    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22015        let mut first = true;
22016        let mut remaining = self.0;
22017        if remaining & Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT.0 != 0 {
22018            if !first {
22019                f.write_str(" | ")?;
22020            }
22021            f.write_str("DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT")?;
22022            remaining &= !Self::DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT.0;
22023            first = false;
22024        }
22025        if remaining != 0u64 {
22026            if !first {
22027                f.write_str(" | ")?;
22028            }
22029            write!(f, "{:#x}", remaining)?;
22030        } else if first {
22031            f.write_str("(empty)")?;
22032        }
22033        Ok(())
22034    }
22035}
22036///[`VkTileShadingRenderPassFlagBitsQCOM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkTileShadingRenderPassFlagBitsQCOM.html)
22037#[repr(transparent)]
22038#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22039#[doc(alias = "VkTileShadingRenderPassFlagBitsQCOM")]
22040pub struct TileShadingRenderPassFlagBitsQCOM(u32);
22041impl TileShadingRenderPassFlagBitsQCOM {
22042    #[inline]
22043    pub const fn empty() -> Self {
22044        Self(0u32)
22045    }
22046    #[inline]
22047    pub const fn from_raw(value: u32) -> Self {
22048        Self(value)
22049    }
22050    #[inline]
22051    pub const fn as_raw(self) -> u32 {
22052        self.0
22053    }
22054    #[inline]
22055    pub const fn is_empty(self) -> bool {
22056        self.0 == 0u32
22057    }
22058    #[inline]
22059    pub const fn contains(self, other: Self) -> bool {
22060        (self.0 & other.0) == other.0
22061    }
22062    #[inline]
22063    pub const fn all() -> Self {
22064        Self(3u32)
22065    }
22066    ///Bit 0.
22067    pub const ENABLE_BIT: Self = Self(1u32);
22068    ///Bit 1.
22069    pub const PER_TILE_EXECUTION_BIT: Self = Self(2u32);
22070}
22071impl core::ops::BitOr for TileShadingRenderPassFlagBitsQCOM {
22072    type Output = Self;
22073    #[inline]
22074    fn bitor(self, rhs: Self) -> Self {
22075        Self(self.0 | rhs.0)
22076    }
22077}
22078impl core::ops::BitOrAssign for TileShadingRenderPassFlagBitsQCOM {
22079    #[inline]
22080    fn bitor_assign(&mut self, rhs: Self) {
22081        self.0 |= rhs.0;
22082    }
22083}
22084impl core::ops::BitAnd for TileShadingRenderPassFlagBitsQCOM {
22085    type Output = Self;
22086    #[inline]
22087    fn bitand(self, rhs: Self) -> Self {
22088        Self(self.0 & rhs.0)
22089    }
22090}
22091impl core::ops::BitAndAssign for TileShadingRenderPassFlagBitsQCOM {
22092    #[inline]
22093    fn bitand_assign(&mut self, rhs: Self) {
22094        self.0 &= rhs.0;
22095    }
22096}
22097impl core::ops::BitXor for TileShadingRenderPassFlagBitsQCOM {
22098    type Output = Self;
22099    #[inline]
22100    fn bitxor(self, rhs: Self) -> Self {
22101        Self(self.0 ^ rhs.0)
22102    }
22103}
22104impl core::ops::BitXorAssign for TileShadingRenderPassFlagBitsQCOM {
22105    #[inline]
22106    fn bitxor_assign(&mut self, rhs: Self) {
22107        self.0 ^= rhs.0;
22108    }
22109}
22110impl core::ops::Not for TileShadingRenderPassFlagBitsQCOM {
22111    type Output = Self;
22112    #[inline]
22113    fn not(self) -> Self {
22114        Self(!self.0)
22115    }
22116}
22117impl core::fmt::Debug for TileShadingRenderPassFlagBitsQCOM {
22118    #[allow(unused_mut, unused_variables)]
22119    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22120        let mut first = true;
22121        let mut remaining = self.0;
22122        if remaining & Self::ENABLE_BIT.0 != 0 {
22123            if !first {
22124                f.write_str(" | ")?;
22125            }
22126            f.write_str("ENABLE_BIT")?;
22127            remaining &= !Self::ENABLE_BIT.0;
22128            first = false;
22129        }
22130        if remaining & Self::PER_TILE_EXECUTION_BIT.0 != 0 {
22131            if !first {
22132                f.write_str(" | ")?;
22133            }
22134            f.write_str("PER_TILE_EXECUTION_BIT")?;
22135            remaining &= !Self::PER_TILE_EXECUTION_BIT.0;
22136            first = false;
22137        }
22138        if remaining != 0u32 {
22139            if !first {
22140                f.write_str(" | ")?;
22141            }
22142            write!(f, "{:#x}", remaining)?;
22143        } else if first {
22144            f.write_str("(empty)")?;
22145        }
22146        Ok(())
22147    }
22148}
22149///[`VkToolPurposeFlagBits`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkToolPurposeFlagBits.html)
22150#[repr(transparent)]
22151#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22152#[doc(alias = "VkToolPurposeFlagBits")]
22153pub struct ToolPurposeFlagBits(u32);
22154impl ToolPurposeFlagBits {
22155    #[inline]
22156    pub const fn empty() -> Self {
22157        Self(0u32)
22158    }
22159    #[inline]
22160    pub const fn from_raw(value: u32) -> Self {
22161        Self(value)
22162    }
22163    #[inline]
22164    pub const fn as_raw(self) -> u32 {
22165        self.0
22166    }
22167    #[inline]
22168    pub const fn is_empty(self) -> bool {
22169        self.0 == 0u32
22170    }
22171    #[inline]
22172    pub const fn contains(self, other: Self) -> bool {
22173        (self.0 & other.0) == other.0
22174    }
22175    #[inline]
22176    pub const fn all() -> Self {
22177        Self(127u32)
22178    }
22179    ///Bit 0.
22180    pub const VALIDATION: Self = Self(1u32);
22181    ///Bit 1.
22182    pub const PROFILING: Self = Self(2u32);
22183    ///Bit 2.
22184    pub const TRACING: Self = Self(4u32);
22185    ///Bit 3.
22186    pub const ADDITIONAL_FEATURES: Self = Self(8u32);
22187    ///Bit 4.
22188    pub const MODIFYING_FEATURES: Self = Self(16u32);
22189    ///Bit 5.
22190    pub const DEBUG_REPORTING: Self = Self(32u32);
22191    ///Bit 6.
22192    pub const DEBUG_MARKERS: Self = Self(64u32);
22193}
22194impl core::ops::BitOr for ToolPurposeFlagBits {
22195    type Output = Self;
22196    #[inline]
22197    fn bitor(self, rhs: Self) -> Self {
22198        Self(self.0 | rhs.0)
22199    }
22200}
22201impl core::ops::BitOrAssign for ToolPurposeFlagBits {
22202    #[inline]
22203    fn bitor_assign(&mut self, rhs: Self) {
22204        self.0 |= rhs.0;
22205    }
22206}
22207impl core::ops::BitAnd for ToolPurposeFlagBits {
22208    type Output = Self;
22209    #[inline]
22210    fn bitand(self, rhs: Self) -> Self {
22211        Self(self.0 & rhs.0)
22212    }
22213}
22214impl core::ops::BitAndAssign for ToolPurposeFlagBits {
22215    #[inline]
22216    fn bitand_assign(&mut self, rhs: Self) {
22217        self.0 &= rhs.0;
22218    }
22219}
22220impl core::ops::BitXor for ToolPurposeFlagBits {
22221    type Output = Self;
22222    #[inline]
22223    fn bitxor(self, rhs: Self) -> Self {
22224        Self(self.0 ^ rhs.0)
22225    }
22226}
22227impl core::ops::BitXorAssign for ToolPurposeFlagBits {
22228    #[inline]
22229    fn bitxor_assign(&mut self, rhs: Self) {
22230        self.0 ^= rhs.0;
22231    }
22232}
22233impl core::ops::Not for ToolPurposeFlagBits {
22234    type Output = Self;
22235    #[inline]
22236    fn not(self) -> Self {
22237        Self(!self.0)
22238    }
22239}
22240impl core::fmt::Debug for ToolPurposeFlagBits {
22241    #[allow(unused_mut, unused_variables)]
22242    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22243        let mut first = true;
22244        let mut remaining = self.0;
22245        if remaining & Self::VALIDATION.0 != 0 {
22246            if !first {
22247                f.write_str(" | ")?;
22248            }
22249            f.write_str("VALIDATION")?;
22250            remaining &= !Self::VALIDATION.0;
22251            first = false;
22252        }
22253        if remaining & Self::PROFILING.0 != 0 {
22254            if !first {
22255                f.write_str(" | ")?;
22256            }
22257            f.write_str("PROFILING")?;
22258            remaining &= !Self::PROFILING.0;
22259            first = false;
22260        }
22261        if remaining & Self::TRACING.0 != 0 {
22262            if !first {
22263                f.write_str(" | ")?;
22264            }
22265            f.write_str("TRACING")?;
22266            remaining &= !Self::TRACING.0;
22267            first = false;
22268        }
22269        if remaining & Self::ADDITIONAL_FEATURES.0 != 0 {
22270            if !first {
22271                f.write_str(" | ")?;
22272            }
22273            f.write_str("ADDITIONAL_FEATURES")?;
22274            remaining &= !Self::ADDITIONAL_FEATURES.0;
22275            first = false;
22276        }
22277        if remaining & Self::MODIFYING_FEATURES.0 != 0 {
22278            if !first {
22279                f.write_str(" | ")?;
22280            }
22281            f.write_str("MODIFYING_FEATURES")?;
22282            remaining &= !Self::MODIFYING_FEATURES.0;
22283            first = false;
22284        }
22285        if remaining & Self::DEBUG_REPORTING.0 != 0 {
22286            if !first {
22287                f.write_str(" | ")?;
22288            }
22289            f.write_str("DEBUG_REPORTING")?;
22290            remaining &= !Self::DEBUG_REPORTING.0;
22291            first = false;
22292        }
22293        if remaining & Self::DEBUG_MARKERS.0 != 0 {
22294            if !first {
22295                f.write_str(" | ")?;
22296            }
22297            f.write_str("DEBUG_MARKERS")?;
22298            remaining &= !Self::DEBUG_MARKERS.0;
22299            first = false;
22300        }
22301        if remaining != 0u32 {
22302            if !first {
22303                f.write_str(" | ")?;
22304            }
22305            write!(f, "{:#x}", remaining)?;
22306        } else if first {
22307            f.write_str("(empty)")?;
22308        }
22309        Ok(())
22310    }
22311}
22312///[`VkVideoCapabilityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCapabilityFlagBitsKHR.html)
22313#[repr(transparent)]
22314#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22315#[doc(alias = "VkVideoCapabilityFlagBitsKHR")]
22316pub struct VideoCapabilityFlagBitsKHR(u32);
22317impl VideoCapabilityFlagBitsKHR {
22318    #[inline]
22319    pub const fn empty() -> Self {
22320        Self(0u32)
22321    }
22322    #[inline]
22323    pub const fn from_raw(value: u32) -> Self {
22324        Self(value)
22325    }
22326    #[inline]
22327    pub const fn as_raw(self) -> u32 {
22328        self.0
22329    }
22330    #[inline]
22331    pub const fn is_empty(self) -> bool {
22332        self.0 == 0u32
22333    }
22334    #[inline]
22335    pub const fn contains(self, other: Self) -> bool {
22336        (self.0 & other.0) == other.0
22337    }
22338    #[inline]
22339    pub const fn all() -> Self {
22340        Self(3u32)
22341    }
22342    ///Bit 0.
22343    pub const PROTECTED_CONTENT: Self = Self(1u32);
22344    ///Bit 1.
22345    pub const SEPARATE_REFERENCE_IMAGES: Self = Self(2u32);
22346}
22347impl core::ops::BitOr for VideoCapabilityFlagBitsKHR {
22348    type Output = Self;
22349    #[inline]
22350    fn bitor(self, rhs: Self) -> Self {
22351        Self(self.0 | rhs.0)
22352    }
22353}
22354impl core::ops::BitOrAssign for VideoCapabilityFlagBitsKHR {
22355    #[inline]
22356    fn bitor_assign(&mut self, rhs: Self) {
22357        self.0 |= rhs.0;
22358    }
22359}
22360impl core::ops::BitAnd for VideoCapabilityFlagBitsKHR {
22361    type Output = Self;
22362    #[inline]
22363    fn bitand(self, rhs: Self) -> Self {
22364        Self(self.0 & rhs.0)
22365    }
22366}
22367impl core::ops::BitAndAssign for VideoCapabilityFlagBitsKHR {
22368    #[inline]
22369    fn bitand_assign(&mut self, rhs: Self) {
22370        self.0 &= rhs.0;
22371    }
22372}
22373impl core::ops::BitXor for VideoCapabilityFlagBitsKHR {
22374    type Output = Self;
22375    #[inline]
22376    fn bitxor(self, rhs: Self) -> Self {
22377        Self(self.0 ^ rhs.0)
22378    }
22379}
22380impl core::ops::BitXorAssign for VideoCapabilityFlagBitsKHR {
22381    #[inline]
22382    fn bitxor_assign(&mut self, rhs: Self) {
22383        self.0 ^= rhs.0;
22384    }
22385}
22386impl core::ops::Not for VideoCapabilityFlagBitsKHR {
22387    type Output = Self;
22388    #[inline]
22389    fn not(self) -> Self {
22390        Self(!self.0)
22391    }
22392}
22393impl core::fmt::Debug for VideoCapabilityFlagBitsKHR {
22394    #[allow(unused_mut, unused_variables)]
22395    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22396        let mut first = true;
22397        let mut remaining = self.0;
22398        if remaining & Self::PROTECTED_CONTENT.0 != 0 {
22399            if !first {
22400                f.write_str(" | ")?;
22401            }
22402            f.write_str("PROTECTED_CONTENT")?;
22403            remaining &= !Self::PROTECTED_CONTENT.0;
22404            first = false;
22405        }
22406        if remaining & Self::SEPARATE_REFERENCE_IMAGES.0 != 0 {
22407            if !first {
22408                f.write_str(" | ")?;
22409            }
22410            f.write_str("SEPARATE_REFERENCE_IMAGES")?;
22411            remaining &= !Self::SEPARATE_REFERENCE_IMAGES.0;
22412            first = false;
22413        }
22414        if remaining != 0u32 {
22415            if !first {
22416                f.write_str(" | ")?;
22417            }
22418            write!(f, "{:#x}", remaining)?;
22419        } else if first {
22420            f.write_str("(empty)")?;
22421        }
22422        Ok(())
22423    }
22424}
22425///[`VkVideoChromaSubsamplingFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoChromaSubsamplingFlagBitsKHR.html)
22426#[repr(transparent)]
22427#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22428#[doc(alias = "VkVideoChromaSubsamplingFlagBitsKHR")]
22429pub struct VideoChromaSubsamplingFlagBitsKHR(u32);
22430impl VideoChromaSubsamplingFlagBitsKHR {
22431    #[inline]
22432    pub const fn empty() -> Self {
22433        Self(0u32)
22434    }
22435    #[inline]
22436    pub const fn from_raw(value: u32) -> Self {
22437        Self(value)
22438    }
22439    #[inline]
22440    pub const fn as_raw(self) -> u32 {
22441        self.0
22442    }
22443    #[inline]
22444    pub const fn is_empty(self) -> bool {
22445        self.0 == 0u32
22446    }
22447    #[inline]
22448    pub const fn contains(self, other: Self) -> bool {
22449        (self.0 & other.0) == other.0
22450    }
22451    #[inline]
22452    pub const fn all() -> Self {
22453        Self(15u32)
22454    }
22455    pub const INVALID: Self = Self(0u32);
22456    ///Bit 0.
22457    pub const MONOCHROME: Self = Self(1u32);
22458    ///Bit 1.
22459    pub const _420: Self = Self(2u32);
22460    ///Bit 2.
22461    pub const _422: Self = Self(4u32);
22462    ///Bit 3.
22463    pub const _444: Self = Self(8u32);
22464}
22465impl core::ops::BitOr for VideoChromaSubsamplingFlagBitsKHR {
22466    type Output = Self;
22467    #[inline]
22468    fn bitor(self, rhs: Self) -> Self {
22469        Self(self.0 | rhs.0)
22470    }
22471}
22472impl core::ops::BitOrAssign for VideoChromaSubsamplingFlagBitsKHR {
22473    #[inline]
22474    fn bitor_assign(&mut self, rhs: Self) {
22475        self.0 |= rhs.0;
22476    }
22477}
22478impl core::ops::BitAnd for VideoChromaSubsamplingFlagBitsKHR {
22479    type Output = Self;
22480    #[inline]
22481    fn bitand(self, rhs: Self) -> Self {
22482        Self(self.0 & rhs.0)
22483    }
22484}
22485impl core::ops::BitAndAssign for VideoChromaSubsamplingFlagBitsKHR {
22486    #[inline]
22487    fn bitand_assign(&mut self, rhs: Self) {
22488        self.0 &= rhs.0;
22489    }
22490}
22491impl core::ops::BitXor for VideoChromaSubsamplingFlagBitsKHR {
22492    type Output = Self;
22493    #[inline]
22494    fn bitxor(self, rhs: Self) -> Self {
22495        Self(self.0 ^ rhs.0)
22496    }
22497}
22498impl core::ops::BitXorAssign for VideoChromaSubsamplingFlagBitsKHR {
22499    #[inline]
22500    fn bitxor_assign(&mut self, rhs: Self) {
22501        self.0 ^= rhs.0;
22502    }
22503}
22504impl core::ops::Not for VideoChromaSubsamplingFlagBitsKHR {
22505    type Output = Self;
22506    #[inline]
22507    fn not(self) -> Self {
22508        Self(!self.0)
22509    }
22510}
22511impl core::fmt::Debug for VideoChromaSubsamplingFlagBitsKHR {
22512    #[allow(unused_mut, unused_variables)]
22513    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22514        let mut first = true;
22515        let mut remaining = self.0;
22516        if remaining & Self::MONOCHROME.0 != 0 {
22517            if !first {
22518                f.write_str(" | ")?;
22519            }
22520            f.write_str("MONOCHROME")?;
22521            remaining &= !Self::MONOCHROME.0;
22522            first = false;
22523        }
22524        if remaining & Self::_420.0 != 0 {
22525            if !first {
22526                f.write_str(" | ")?;
22527            }
22528            f.write_str("_420")?;
22529            remaining &= !Self::_420.0;
22530            first = false;
22531        }
22532        if remaining & Self::_422.0 != 0 {
22533            if !first {
22534                f.write_str(" | ")?;
22535            }
22536            f.write_str("_422")?;
22537            remaining &= !Self::_422.0;
22538            first = false;
22539        }
22540        if remaining & Self::_444.0 != 0 {
22541            if !first {
22542                f.write_str(" | ")?;
22543            }
22544            f.write_str("_444")?;
22545            remaining &= !Self::_444.0;
22546            first = false;
22547        }
22548        if remaining != 0u32 {
22549            if !first {
22550                f.write_str(" | ")?;
22551            }
22552            write!(f, "{:#x}", remaining)?;
22553        } else if first {
22554            f.write_str("(empty)")?;
22555        }
22556        Ok(())
22557    }
22558}
22559///[`VkVideoCodecOperationFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodecOperationFlagBitsKHR.html)
22560#[repr(transparent)]
22561#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22562#[doc(alias = "VkVideoCodecOperationFlagBitsKHR")]
22563pub struct VideoCodecOperationFlagBitsKHR(u32);
22564impl VideoCodecOperationFlagBitsKHR {
22565    #[inline]
22566    pub const fn empty() -> Self {
22567        Self(0u32)
22568    }
22569    #[inline]
22570    pub const fn from_raw(value: u32) -> Self {
22571        Self(value)
22572    }
22573    #[inline]
22574    pub const fn as_raw(self) -> u32 {
22575        self.0
22576    }
22577    #[inline]
22578    pub const fn is_empty(self) -> bool {
22579        self.0 == 0u32
22580    }
22581    #[inline]
22582    pub const fn contains(self, other: Self) -> bool {
22583        (self.0 & other.0) == other.0
22584    }
22585    #[inline]
22586    pub const fn all() -> Self {
22587        Self(458767u32)
22588    }
22589    pub const NONE: Self = Self(0u32);
22590    ///Bit 16.
22591    pub const ENCODE_H264: Self = Self(65536u32);
22592    ///Bit 17.
22593    pub const ENCODE_H265: Self = Self(131072u32);
22594    ///Bit 0.
22595    pub const DECODE_H264: Self = Self(1u32);
22596    ///Bit 1.
22597    pub const DECODE_H265: Self = Self(2u32);
22598    ///Bit 2.
22599    pub const DECODE_AV1: Self = Self(4u32);
22600    ///Bit 18.
22601    pub const ENCODE_AV1: Self = Self(262144u32);
22602    ///Bit 3.
22603    pub const DECODE_VP9: Self = Self(8u32);
22604}
22605impl core::ops::BitOr for VideoCodecOperationFlagBitsKHR {
22606    type Output = Self;
22607    #[inline]
22608    fn bitor(self, rhs: Self) -> Self {
22609        Self(self.0 | rhs.0)
22610    }
22611}
22612impl core::ops::BitOrAssign for VideoCodecOperationFlagBitsKHR {
22613    #[inline]
22614    fn bitor_assign(&mut self, rhs: Self) {
22615        self.0 |= rhs.0;
22616    }
22617}
22618impl core::ops::BitAnd for VideoCodecOperationFlagBitsKHR {
22619    type Output = Self;
22620    #[inline]
22621    fn bitand(self, rhs: Self) -> Self {
22622        Self(self.0 & rhs.0)
22623    }
22624}
22625impl core::ops::BitAndAssign for VideoCodecOperationFlagBitsKHR {
22626    #[inline]
22627    fn bitand_assign(&mut self, rhs: Self) {
22628        self.0 &= rhs.0;
22629    }
22630}
22631impl core::ops::BitXor for VideoCodecOperationFlagBitsKHR {
22632    type Output = Self;
22633    #[inline]
22634    fn bitxor(self, rhs: Self) -> Self {
22635        Self(self.0 ^ rhs.0)
22636    }
22637}
22638impl core::ops::BitXorAssign for VideoCodecOperationFlagBitsKHR {
22639    #[inline]
22640    fn bitxor_assign(&mut self, rhs: Self) {
22641        self.0 ^= rhs.0;
22642    }
22643}
22644impl core::ops::Not for VideoCodecOperationFlagBitsKHR {
22645    type Output = Self;
22646    #[inline]
22647    fn not(self) -> Self {
22648        Self(!self.0)
22649    }
22650}
22651impl core::fmt::Debug for VideoCodecOperationFlagBitsKHR {
22652    #[allow(unused_mut, unused_variables)]
22653    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22654        let mut first = true;
22655        let mut remaining = self.0;
22656        if remaining & Self::ENCODE_H264.0 != 0 {
22657            if !first {
22658                f.write_str(" | ")?;
22659            }
22660            f.write_str("ENCODE_H264")?;
22661            remaining &= !Self::ENCODE_H264.0;
22662            first = false;
22663        }
22664        if remaining & Self::ENCODE_H265.0 != 0 {
22665            if !first {
22666                f.write_str(" | ")?;
22667            }
22668            f.write_str("ENCODE_H265")?;
22669            remaining &= !Self::ENCODE_H265.0;
22670            first = false;
22671        }
22672        if remaining & Self::DECODE_H264.0 != 0 {
22673            if !first {
22674                f.write_str(" | ")?;
22675            }
22676            f.write_str("DECODE_H264")?;
22677            remaining &= !Self::DECODE_H264.0;
22678            first = false;
22679        }
22680        if remaining & Self::DECODE_H265.0 != 0 {
22681            if !first {
22682                f.write_str(" | ")?;
22683            }
22684            f.write_str("DECODE_H265")?;
22685            remaining &= !Self::DECODE_H265.0;
22686            first = false;
22687        }
22688        if remaining & Self::DECODE_AV1.0 != 0 {
22689            if !first {
22690                f.write_str(" | ")?;
22691            }
22692            f.write_str("DECODE_AV1")?;
22693            remaining &= !Self::DECODE_AV1.0;
22694            first = false;
22695        }
22696        if remaining & Self::ENCODE_AV1.0 != 0 {
22697            if !first {
22698                f.write_str(" | ")?;
22699            }
22700            f.write_str("ENCODE_AV1")?;
22701            remaining &= !Self::ENCODE_AV1.0;
22702            first = false;
22703        }
22704        if remaining & Self::DECODE_VP9.0 != 0 {
22705            if !first {
22706                f.write_str(" | ")?;
22707            }
22708            f.write_str("DECODE_VP9")?;
22709            remaining &= !Self::DECODE_VP9.0;
22710            first = false;
22711        }
22712        if remaining != 0u32 {
22713            if !first {
22714                f.write_str(" | ")?;
22715            }
22716            write!(f, "{:#x}", remaining)?;
22717        } else if first {
22718            f.write_str("(empty)")?;
22719        }
22720        Ok(())
22721    }
22722}
22723///[`VkVideoCodingControlFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodingControlFlagBitsKHR.html)
22724#[repr(transparent)]
22725#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22726#[doc(alias = "VkVideoCodingControlFlagBitsKHR")]
22727pub struct VideoCodingControlFlagBitsKHR(u32);
22728impl VideoCodingControlFlagBitsKHR {
22729    #[inline]
22730    pub const fn empty() -> Self {
22731        Self(0u32)
22732    }
22733    #[inline]
22734    pub const fn from_raw(value: u32) -> Self {
22735        Self(value)
22736    }
22737    #[inline]
22738    pub const fn as_raw(self) -> u32 {
22739        self.0
22740    }
22741    #[inline]
22742    pub const fn is_empty(self) -> bool {
22743        self.0 == 0u32
22744    }
22745    #[inline]
22746    pub const fn contains(self, other: Self) -> bool {
22747        (self.0 & other.0) == other.0
22748    }
22749    #[inline]
22750    pub const fn all() -> Self {
22751        Self(7u32)
22752    }
22753    ///Bit 0.
22754    pub const RESET: Self = Self(1u32);
22755    ///Bit 1.
22756    pub const ENCODE_RATE_CONTROL: Self = Self(2u32);
22757    ///Bit 2.
22758    pub const ENCODE_QUALITY_LEVEL: Self = Self(4u32);
22759}
22760impl core::ops::BitOr for VideoCodingControlFlagBitsKHR {
22761    type Output = Self;
22762    #[inline]
22763    fn bitor(self, rhs: Self) -> Self {
22764        Self(self.0 | rhs.0)
22765    }
22766}
22767impl core::ops::BitOrAssign for VideoCodingControlFlagBitsKHR {
22768    #[inline]
22769    fn bitor_assign(&mut self, rhs: Self) {
22770        self.0 |= rhs.0;
22771    }
22772}
22773impl core::ops::BitAnd for VideoCodingControlFlagBitsKHR {
22774    type Output = Self;
22775    #[inline]
22776    fn bitand(self, rhs: Self) -> Self {
22777        Self(self.0 & rhs.0)
22778    }
22779}
22780impl core::ops::BitAndAssign for VideoCodingControlFlagBitsKHR {
22781    #[inline]
22782    fn bitand_assign(&mut self, rhs: Self) {
22783        self.0 &= rhs.0;
22784    }
22785}
22786impl core::ops::BitXor for VideoCodingControlFlagBitsKHR {
22787    type Output = Self;
22788    #[inline]
22789    fn bitxor(self, rhs: Self) -> Self {
22790        Self(self.0 ^ rhs.0)
22791    }
22792}
22793impl core::ops::BitXorAssign for VideoCodingControlFlagBitsKHR {
22794    #[inline]
22795    fn bitxor_assign(&mut self, rhs: Self) {
22796        self.0 ^= rhs.0;
22797    }
22798}
22799impl core::ops::Not for VideoCodingControlFlagBitsKHR {
22800    type Output = Self;
22801    #[inline]
22802    fn not(self) -> Self {
22803        Self(!self.0)
22804    }
22805}
22806impl core::fmt::Debug for VideoCodingControlFlagBitsKHR {
22807    #[allow(unused_mut, unused_variables)]
22808    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22809        let mut first = true;
22810        let mut remaining = self.0;
22811        if remaining & Self::RESET.0 != 0 {
22812            if !first {
22813                f.write_str(" | ")?;
22814            }
22815            f.write_str("RESET")?;
22816            remaining &= !Self::RESET.0;
22817            first = false;
22818        }
22819        if remaining & Self::ENCODE_RATE_CONTROL.0 != 0 {
22820            if !first {
22821                f.write_str(" | ")?;
22822            }
22823            f.write_str("ENCODE_RATE_CONTROL")?;
22824            remaining &= !Self::ENCODE_RATE_CONTROL.0;
22825            first = false;
22826        }
22827        if remaining & Self::ENCODE_QUALITY_LEVEL.0 != 0 {
22828            if !first {
22829                f.write_str(" | ")?;
22830            }
22831            f.write_str("ENCODE_QUALITY_LEVEL")?;
22832            remaining &= !Self::ENCODE_QUALITY_LEVEL.0;
22833            first = false;
22834        }
22835        if remaining != 0u32 {
22836            if !first {
22837                f.write_str(" | ")?;
22838            }
22839            write!(f, "{:#x}", remaining)?;
22840        } else if first {
22841            f.write_str("(empty)")?;
22842        }
22843        Ok(())
22844    }
22845}
22846///[`VkVideoComponentBitDepthFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoComponentBitDepthFlagBitsKHR.html)
22847#[repr(transparent)]
22848#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22849#[doc(alias = "VkVideoComponentBitDepthFlagBitsKHR")]
22850pub struct VideoComponentBitDepthFlagBitsKHR(u32);
22851impl VideoComponentBitDepthFlagBitsKHR {
22852    #[inline]
22853    pub const fn empty() -> Self {
22854        Self(0u32)
22855    }
22856    #[inline]
22857    pub const fn from_raw(value: u32) -> Self {
22858        Self(value)
22859    }
22860    #[inline]
22861    pub const fn as_raw(self) -> u32 {
22862        self.0
22863    }
22864    #[inline]
22865    pub const fn is_empty(self) -> bool {
22866        self.0 == 0u32
22867    }
22868    #[inline]
22869    pub const fn contains(self, other: Self) -> bool {
22870        (self.0 & other.0) == other.0
22871    }
22872    #[inline]
22873    pub const fn all() -> Self {
22874        Self(21u32)
22875    }
22876    pub const INVALID: Self = Self(0u32);
22877    ///Bit 0.
22878    pub const _8: Self = Self(1u32);
22879    ///Bit 2.
22880    pub const _10: Self = Self(4u32);
22881    ///Bit 4.
22882    pub const _12: Self = Self(16u32);
22883}
22884impl core::ops::BitOr for VideoComponentBitDepthFlagBitsKHR {
22885    type Output = Self;
22886    #[inline]
22887    fn bitor(self, rhs: Self) -> Self {
22888        Self(self.0 | rhs.0)
22889    }
22890}
22891impl core::ops::BitOrAssign for VideoComponentBitDepthFlagBitsKHR {
22892    #[inline]
22893    fn bitor_assign(&mut self, rhs: Self) {
22894        self.0 |= rhs.0;
22895    }
22896}
22897impl core::ops::BitAnd for VideoComponentBitDepthFlagBitsKHR {
22898    type Output = Self;
22899    #[inline]
22900    fn bitand(self, rhs: Self) -> Self {
22901        Self(self.0 & rhs.0)
22902    }
22903}
22904impl core::ops::BitAndAssign for VideoComponentBitDepthFlagBitsKHR {
22905    #[inline]
22906    fn bitand_assign(&mut self, rhs: Self) {
22907        self.0 &= rhs.0;
22908    }
22909}
22910impl core::ops::BitXor for VideoComponentBitDepthFlagBitsKHR {
22911    type Output = Self;
22912    #[inline]
22913    fn bitxor(self, rhs: Self) -> Self {
22914        Self(self.0 ^ rhs.0)
22915    }
22916}
22917impl core::ops::BitXorAssign for VideoComponentBitDepthFlagBitsKHR {
22918    #[inline]
22919    fn bitxor_assign(&mut self, rhs: Self) {
22920        self.0 ^= rhs.0;
22921    }
22922}
22923impl core::ops::Not for VideoComponentBitDepthFlagBitsKHR {
22924    type Output = Self;
22925    #[inline]
22926    fn not(self) -> Self {
22927        Self(!self.0)
22928    }
22929}
22930impl core::fmt::Debug for VideoComponentBitDepthFlagBitsKHR {
22931    #[allow(unused_mut, unused_variables)]
22932    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22933        let mut first = true;
22934        let mut remaining = self.0;
22935        if remaining & Self::_8.0 != 0 {
22936            if !first {
22937                f.write_str(" | ")?;
22938            }
22939            f.write_str("_8")?;
22940            remaining &= !Self::_8.0;
22941            first = false;
22942        }
22943        if remaining & Self::_10.0 != 0 {
22944            if !first {
22945                f.write_str(" | ")?;
22946            }
22947            f.write_str("_10")?;
22948            remaining &= !Self::_10.0;
22949            first = false;
22950        }
22951        if remaining & Self::_12.0 != 0 {
22952            if !first {
22953                f.write_str(" | ")?;
22954            }
22955            f.write_str("_12")?;
22956            remaining &= !Self::_12.0;
22957            first = false;
22958        }
22959        if remaining != 0u32 {
22960            if !first {
22961                f.write_str(" | ")?;
22962            }
22963            write!(f, "{:#x}", remaining)?;
22964        } else if first {
22965            f.write_str("(empty)")?;
22966        }
22967        Ok(())
22968    }
22969}
22970///[`VkVideoDecodeCapabilityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeCapabilityFlagBitsKHR.html)
22971#[repr(transparent)]
22972#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
22973#[doc(alias = "VkVideoDecodeCapabilityFlagBitsKHR")]
22974pub struct VideoDecodeCapabilityFlagBitsKHR(u32);
22975impl VideoDecodeCapabilityFlagBitsKHR {
22976    #[inline]
22977    pub const fn empty() -> Self {
22978        Self(0u32)
22979    }
22980    #[inline]
22981    pub const fn from_raw(value: u32) -> Self {
22982        Self(value)
22983    }
22984    #[inline]
22985    pub const fn as_raw(self) -> u32 {
22986        self.0
22987    }
22988    #[inline]
22989    pub const fn is_empty(self) -> bool {
22990        self.0 == 0u32
22991    }
22992    #[inline]
22993    pub const fn contains(self, other: Self) -> bool {
22994        (self.0 & other.0) == other.0
22995    }
22996    #[inline]
22997    pub const fn all() -> Self {
22998        Self(3u32)
22999    }
23000    ///Bit 0.
23001    pub const DPB_AND_OUTPUT_COINCIDE: Self = Self(1u32);
23002    ///Bit 1.
23003    pub const DPB_AND_OUTPUT_DISTINCT: Self = Self(2u32);
23004}
23005impl core::ops::BitOr for VideoDecodeCapabilityFlagBitsKHR {
23006    type Output = Self;
23007    #[inline]
23008    fn bitor(self, rhs: Self) -> Self {
23009        Self(self.0 | rhs.0)
23010    }
23011}
23012impl core::ops::BitOrAssign for VideoDecodeCapabilityFlagBitsKHR {
23013    #[inline]
23014    fn bitor_assign(&mut self, rhs: Self) {
23015        self.0 |= rhs.0;
23016    }
23017}
23018impl core::ops::BitAnd for VideoDecodeCapabilityFlagBitsKHR {
23019    type Output = Self;
23020    #[inline]
23021    fn bitand(self, rhs: Self) -> Self {
23022        Self(self.0 & rhs.0)
23023    }
23024}
23025impl core::ops::BitAndAssign for VideoDecodeCapabilityFlagBitsKHR {
23026    #[inline]
23027    fn bitand_assign(&mut self, rhs: Self) {
23028        self.0 &= rhs.0;
23029    }
23030}
23031impl core::ops::BitXor for VideoDecodeCapabilityFlagBitsKHR {
23032    type Output = Self;
23033    #[inline]
23034    fn bitxor(self, rhs: Self) -> Self {
23035        Self(self.0 ^ rhs.0)
23036    }
23037}
23038impl core::ops::BitXorAssign for VideoDecodeCapabilityFlagBitsKHR {
23039    #[inline]
23040    fn bitxor_assign(&mut self, rhs: Self) {
23041        self.0 ^= rhs.0;
23042    }
23043}
23044impl core::ops::Not for VideoDecodeCapabilityFlagBitsKHR {
23045    type Output = Self;
23046    #[inline]
23047    fn not(self) -> Self {
23048        Self(!self.0)
23049    }
23050}
23051impl core::fmt::Debug for VideoDecodeCapabilityFlagBitsKHR {
23052    #[allow(unused_mut, unused_variables)]
23053    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23054        let mut first = true;
23055        let mut remaining = self.0;
23056        if remaining & Self::DPB_AND_OUTPUT_COINCIDE.0 != 0 {
23057            if !first {
23058                f.write_str(" | ")?;
23059            }
23060            f.write_str("DPB_AND_OUTPUT_COINCIDE")?;
23061            remaining &= !Self::DPB_AND_OUTPUT_COINCIDE.0;
23062            first = false;
23063        }
23064        if remaining & Self::DPB_AND_OUTPUT_DISTINCT.0 != 0 {
23065            if !first {
23066                f.write_str(" | ")?;
23067            }
23068            f.write_str("DPB_AND_OUTPUT_DISTINCT")?;
23069            remaining &= !Self::DPB_AND_OUTPUT_DISTINCT.0;
23070            first = false;
23071        }
23072        if remaining != 0u32 {
23073            if !first {
23074                f.write_str(" | ")?;
23075            }
23076            write!(f, "{:#x}", remaining)?;
23077        } else if first {
23078            f.write_str("(empty)")?;
23079        }
23080        Ok(())
23081    }
23082}
23083///[`VkVideoDecodeH264PictureLayoutFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureLayoutFlagBitsKHR.html)
23084#[repr(transparent)]
23085#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23086#[doc(alias = "VkVideoDecodeH264PictureLayoutFlagBitsKHR")]
23087pub struct VideoDecodeH264PictureLayoutFlagBitsKHR(u32);
23088impl VideoDecodeH264PictureLayoutFlagBitsKHR {
23089    #[inline]
23090    pub const fn empty() -> Self {
23091        Self(0u32)
23092    }
23093    #[inline]
23094    pub const fn from_raw(value: u32) -> Self {
23095        Self(value)
23096    }
23097    #[inline]
23098    pub const fn as_raw(self) -> u32 {
23099        self.0
23100    }
23101    #[inline]
23102    pub const fn is_empty(self) -> bool {
23103        self.0 == 0u32
23104    }
23105    #[inline]
23106    pub const fn contains(self, other: Self) -> bool {
23107        (self.0 & other.0) == other.0
23108    }
23109    #[inline]
23110    pub const fn all() -> Self {
23111        Self(3u32)
23112    }
23113    pub const PROGRESSIVE: Self = Self(0u32);
23114    ///Bit 0.
23115    pub const INTERLACED_INTERLEAVED_LINES: Self = Self(1u32);
23116    ///Bit 1.
23117    pub const INTERLACED_SEPARATE_PLANES: Self = Self(2u32);
23118}
23119impl core::ops::BitOr for VideoDecodeH264PictureLayoutFlagBitsKHR {
23120    type Output = Self;
23121    #[inline]
23122    fn bitor(self, rhs: Self) -> Self {
23123        Self(self.0 | rhs.0)
23124    }
23125}
23126impl core::ops::BitOrAssign for VideoDecodeH264PictureLayoutFlagBitsKHR {
23127    #[inline]
23128    fn bitor_assign(&mut self, rhs: Self) {
23129        self.0 |= rhs.0;
23130    }
23131}
23132impl core::ops::BitAnd for VideoDecodeH264PictureLayoutFlagBitsKHR {
23133    type Output = Self;
23134    #[inline]
23135    fn bitand(self, rhs: Self) -> Self {
23136        Self(self.0 & rhs.0)
23137    }
23138}
23139impl core::ops::BitAndAssign for VideoDecodeH264PictureLayoutFlagBitsKHR {
23140    #[inline]
23141    fn bitand_assign(&mut self, rhs: Self) {
23142        self.0 &= rhs.0;
23143    }
23144}
23145impl core::ops::BitXor for VideoDecodeH264PictureLayoutFlagBitsKHR {
23146    type Output = Self;
23147    #[inline]
23148    fn bitxor(self, rhs: Self) -> Self {
23149        Self(self.0 ^ rhs.0)
23150    }
23151}
23152impl core::ops::BitXorAssign for VideoDecodeH264PictureLayoutFlagBitsKHR {
23153    #[inline]
23154    fn bitxor_assign(&mut self, rhs: Self) {
23155        self.0 ^= rhs.0;
23156    }
23157}
23158impl core::ops::Not for VideoDecodeH264PictureLayoutFlagBitsKHR {
23159    type Output = Self;
23160    #[inline]
23161    fn not(self) -> Self {
23162        Self(!self.0)
23163    }
23164}
23165impl core::fmt::Debug for VideoDecodeH264PictureLayoutFlagBitsKHR {
23166    #[allow(unused_mut, unused_variables)]
23167    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23168        let mut first = true;
23169        let mut remaining = self.0;
23170        if remaining & Self::INTERLACED_INTERLEAVED_LINES.0 != 0 {
23171            if !first {
23172                f.write_str(" | ")?;
23173            }
23174            f.write_str("INTERLACED_INTERLEAVED_LINES")?;
23175            remaining &= !Self::INTERLACED_INTERLEAVED_LINES.0;
23176            first = false;
23177        }
23178        if remaining & Self::INTERLACED_SEPARATE_PLANES.0 != 0 {
23179            if !first {
23180                f.write_str(" | ")?;
23181            }
23182            f.write_str("INTERLACED_SEPARATE_PLANES")?;
23183            remaining &= !Self::INTERLACED_SEPARATE_PLANES.0;
23184            first = false;
23185        }
23186        if remaining != 0u32 {
23187            if !first {
23188                f.write_str(" | ")?;
23189            }
23190            write!(f, "{:#x}", remaining)?;
23191        } else if first {
23192            f.write_str("(empty)")?;
23193        }
23194        Ok(())
23195    }
23196}
23197///[`VkVideoDecodeUsageFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeUsageFlagBitsKHR.html)
23198#[repr(transparent)]
23199#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23200#[doc(alias = "VkVideoDecodeUsageFlagBitsKHR")]
23201pub struct VideoDecodeUsageFlagBitsKHR(u32);
23202impl VideoDecodeUsageFlagBitsKHR {
23203    #[inline]
23204    pub const fn empty() -> Self {
23205        Self(0u32)
23206    }
23207    #[inline]
23208    pub const fn from_raw(value: u32) -> Self {
23209        Self(value)
23210    }
23211    #[inline]
23212    pub const fn as_raw(self) -> u32 {
23213        self.0
23214    }
23215    #[inline]
23216    pub const fn is_empty(self) -> bool {
23217        self.0 == 0u32
23218    }
23219    #[inline]
23220    pub const fn contains(self, other: Self) -> bool {
23221        (self.0 & other.0) == other.0
23222    }
23223    #[inline]
23224    pub const fn all() -> Self {
23225        Self(7u32)
23226    }
23227    pub const DEFAULT: Self = Self(0u32);
23228    ///Bit 0.
23229    pub const TRANSCODING: Self = Self(1u32);
23230    ///Bit 1.
23231    pub const OFFLINE: Self = Self(2u32);
23232    ///Bit 2.
23233    pub const STREAMING: Self = Self(4u32);
23234}
23235impl core::ops::BitOr for VideoDecodeUsageFlagBitsKHR {
23236    type Output = Self;
23237    #[inline]
23238    fn bitor(self, rhs: Self) -> Self {
23239        Self(self.0 | rhs.0)
23240    }
23241}
23242impl core::ops::BitOrAssign for VideoDecodeUsageFlagBitsKHR {
23243    #[inline]
23244    fn bitor_assign(&mut self, rhs: Self) {
23245        self.0 |= rhs.0;
23246    }
23247}
23248impl core::ops::BitAnd for VideoDecodeUsageFlagBitsKHR {
23249    type Output = Self;
23250    #[inline]
23251    fn bitand(self, rhs: Self) -> Self {
23252        Self(self.0 & rhs.0)
23253    }
23254}
23255impl core::ops::BitAndAssign for VideoDecodeUsageFlagBitsKHR {
23256    #[inline]
23257    fn bitand_assign(&mut self, rhs: Self) {
23258        self.0 &= rhs.0;
23259    }
23260}
23261impl core::ops::BitXor for VideoDecodeUsageFlagBitsKHR {
23262    type Output = Self;
23263    #[inline]
23264    fn bitxor(self, rhs: Self) -> Self {
23265        Self(self.0 ^ rhs.0)
23266    }
23267}
23268impl core::ops::BitXorAssign for VideoDecodeUsageFlagBitsKHR {
23269    #[inline]
23270    fn bitxor_assign(&mut self, rhs: Self) {
23271        self.0 ^= rhs.0;
23272    }
23273}
23274impl core::ops::Not for VideoDecodeUsageFlagBitsKHR {
23275    type Output = Self;
23276    #[inline]
23277    fn not(self) -> Self {
23278        Self(!self.0)
23279    }
23280}
23281impl core::fmt::Debug for VideoDecodeUsageFlagBitsKHR {
23282    #[allow(unused_mut, unused_variables)]
23283    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23284        let mut first = true;
23285        let mut remaining = self.0;
23286        if remaining & Self::TRANSCODING.0 != 0 {
23287            if !first {
23288                f.write_str(" | ")?;
23289            }
23290            f.write_str("TRANSCODING")?;
23291            remaining &= !Self::TRANSCODING.0;
23292            first = false;
23293        }
23294        if remaining & Self::OFFLINE.0 != 0 {
23295            if !first {
23296                f.write_str(" | ")?;
23297            }
23298            f.write_str("OFFLINE")?;
23299            remaining &= !Self::OFFLINE.0;
23300            first = false;
23301        }
23302        if remaining & Self::STREAMING.0 != 0 {
23303            if !first {
23304                f.write_str(" | ")?;
23305            }
23306            f.write_str("STREAMING")?;
23307            remaining &= !Self::STREAMING.0;
23308            first = false;
23309        }
23310        if remaining != 0u32 {
23311            if !first {
23312                f.write_str(" | ")?;
23313            }
23314            write!(f, "{:#x}", remaining)?;
23315        } else if first {
23316            f.write_str("(empty)")?;
23317        }
23318        Ok(())
23319    }
23320}
23321///[`VkVideoEncodeAV1CapabilityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilityFlagBitsKHR.html)
23322#[repr(transparent)]
23323#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23324#[doc(alias = "VkVideoEncodeAV1CapabilityFlagBitsKHR")]
23325pub struct VideoEncodeAV1CapabilityFlagBitsKHR(u32);
23326impl VideoEncodeAV1CapabilityFlagBitsKHR {
23327    #[inline]
23328    pub const fn empty() -> Self {
23329        Self(0u32)
23330    }
23331    #[inline]
23332    pub const fn from_raw(value: u32) -> Self {
23333        Self(value)
23334    }
23335    #[inline]
23336    pub const fn as_raw(self) -> u32 {
23337        self.0
23338    }
23339    #[inline]
23340    pub const fn is_empty(self) -> bool {
23341        self.0 == 0u32
23342    }
23343    #[inline]
23344    pub const fn contains(self, other: Self) -> bool {
23345        (self.0 & other.0) == other.0
23346    }
23347    #[inline]
23348    pub const fn all() -> Self {
23349        Self(63u32)
23350    }
23351    ///Bit 0.
23352    pub const PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX: Self = Self(1u32);
23353    ///Bit 1.
23354    pub const GENERATE_OBU_EXTENSION_HEADER: Self = Self(2u32);
23355    ///Bit 2.
23356    pub const PRIMARY_REFERENCE_CDF_ONLY: Self = Self(4u32);
23357    ///Bit 3.
23358    pub const FRAME_SIZE_OVERRIDE: Self = Self(8u32);
23359    ///Bit 4.
23360    pub const MOTION_VECTOR_SCALING: Self = Self(16u32);
23361    ///Bit 5.
23362    pub const COMPOUND_PREDICTION_INTRA_REFRESH: Self = Self(32u32);
23363}
23364impl core::ops::BitOr for VideoEncodeAV1CapabilityFlagBitsKHR {
23365    type Output = Self;
23366    #[inline]
23367    fn bitor(self, rhs: Self) -> Self {
23368        Self(self.0 | rhs.0)
23369    }
23370}
23371impl core::ops::BitOrAssign for VideoEncodeAV1CapabilityFlagBitsKHR {
23372    #[inline]
23373    fn bitor_assign(&mut self, rhs: Self) {
23374        self.0 |= rhs.0;
23375    }
23376}
23377impl core::ops::BitAnd for VideoEncodeAV1CapabilityFlagBitsKHR {
23378    type Output = Self;
23379    #[inline]
23380    fn bitand(self, rhs: Self) -> Self {
23381        Self(self.0 & rhs.0)
23382    }
23383}
23384impl core::ops::BitAndAssign for VideoEncodeAV1CapabilityFlagBitsKHR {
23385    #[inline]
23386    fn bitand_assign(&mut self, rhs: Self) {
23387        self.0 &= rhs.0;
23388    }
23389}
23390impl core::ops::BitXor for VideoEncodeAV1CapabilityFlagBitsKHR {
23391    type Output = Self;
23392    #[inline]
23393    fn bitxor(self, rhs: Self) -> Self {
23394        Self(self.0 ^ rhs.0)
23395    }
23396}
23397impl core::ops::BitXorAssign for VideoEncodeAV1CapabilityFlagBitsKHR {
23398    #[inline]
23399    fn bitxor_assign(&mut self, rhs: Self) {
23400        self.0 ^= rhs.0;
23401    }
23402}
23403impl core::ops::Not for VideoEncodeAV1CapabilityFlagBitsKHR {
23404    type Output = Self;
23405    #[inline]
23406    fn not(self) -> Self {
23407        Self(!self.0)
23408    }
23409}
23410impl core::fmt::Debug for VideoEncodeAV1CapabilityFlagBitsKHR {
23411    #[allow(unused_mut, unused_variables)]
23412    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23413        let mut first = true;
23414        let mut remaining = self.0;
23415        if remaining & Self::PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX.0 != 0 {
23416            if !first {
23417                f.write_str(" | ")?;
23418            }
23419            f.write_str("PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX")?;
23420            remaining &= !Self::PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX.0;
23421            first = false;
23422        }
23423        if remaining & Self::GENERATE_OBU_EXTENSION_HEADER.0 != 0 {
23424            if !first {
23425                f.write_str(" | ")?;
23426            }
23427            f.write_str("GENERATE_OBU_EXTENSION_HEADER")?;
23428            remaining &= !Self::GENERATE_OBU_EXTENSION_HEADER.0;
23429            first = false;
23430        }
23431        if remaining & Self::PRIMARY_REFERENCE_CDF_ONLY.0 != 0 {
23432            if !first {
23433                f.write_str(" | ")?;
23434            }
23435            f.write_str("PRIMARY_REFERENCE_CDF_ONLY")?;
23436            remaining &= !Self::PRIMARY_REFERENCE_CDF_ONLY.0;
23437            first = false;
23438        }
23439        if remaining & Self::FRAME_SIZE_OVERRIDE.0 != 0 {
23440            if !first {
23441                f.write_str(" | ")?;
23442            }
23443            f.write_str("FRAME_SIZE_OVERRIDE")?;
23444            remaining &= !Self::FRAME_SIZE_OVERRIDE.0;
23445            first = false;
23446        }
23447        if remaining & Self::MOTION_VECTOR_SCALING.0 != 0 {
23448            if !first {
23449                f.write_str(" | ")?;
23450            }
23451            f.write_str("MOTION_VECTOR_SCALING")?;
23452            remaining &= !Self::MOTION_VECTOR_SCALING.0;
23453            first = false;
23454        }
23455        if remaining & Self::COMPOUND_PREDICTION_INTRA_REFRESH.0 != 0 {
23456            if !first {
23457                f.write_str(" | ")?;
23458            }
23459            f.write_str("COMPOUND_PREDICTION_INTRA_REFRESH")?;
23460            remaining &= !Self::COMPOUND_PREDICTION_INTRA_REFRESH.0;
23461            first = false;
23462        }
23463        if remaining != 0u32 {
23464            if !first {
23465                f.write_str(" | ")?;
23466            }
23467            write!(f, "{:#x}", remaining)?;
23468        } else if first {
23469            f.write_str("(empty)")?;
23470        }
23471        Ok(())
23472    }
23473}
23474///[`VkVideoEncodeAV1RateControlFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlFlagBitsKHR.html)
23475#[repr(transparent)]
23476#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23477#[doc(alias = "VkVideoEncodeAV1RateControlFlagBitsKHR")]
23478pub struct VideoEncodeAV1RateControlFlagBitsKHR(u32);
23479impl VideoEncodeAV1RateControlFlagBitsKHR {
23480    #[inline]
23481    pub const fn empty() -> Self {
23482        Self(0u32)
23483    }
23484    #[inline]
23485    pub const fn from_raw(value: u32) -> Self {
23486        Self(value)
23487    }
23488    #[inline]
23489    pub const fn as_raw(self) -> u32 {
23490        self.0
23491    }
23492    #[inline]
23493    pub const fn is_empty(self) -> bool {
23494        self.0 == 0u32
23495    }
23496    #[inline]
23497    pub const fn contains(self, other: Self) -> bool {
23498        (self.0 & other.0) == other.0
23499    }
23500    #[inline]
23501    pub const fn all() -> Self {
23502        Self(15u32)
23503    }
23504    ///Bit 0.
23505    pub const REGULAR_GOP: Self = Self(1u32);
23506    ///Bit 1.
23507    pub const TEMPORAL_LAYER_PATTERN_DYADIC: Self = Self(2u32);
23508    ///Bit 2.
23509    pub const REFERENCE_PATTERN_FLAT: Self = Self(4u32);
23510    ///Bit 3.
23511    pub const REFERENCE_PATTERN_DYADIC: Self = Self(8u32);
23512}
23513impl core::ops::BitOr for VideoEncodeAV1RateControlFlagBitsKHR {
23514    type Output = Self;
23515    #[inline]
23516    fn bitor(self, rhs: Self) -> Self {
23517        Self(self.0 | rhs.0)
23518    }
23519}
23520impl core::ops::BitOrAssign for VideoEncodeAV1RateControlFlagBitsKHR {
23521    #[inline]
23522    fn bitor_assign(&mut self, rhs: Self) {
23523        self.0 |= rhs.0;
23524    }
23525}
23526impl core::ops::BitAnd for VideoEncodeAV1RateControlFlagBitsKHR {
23527    type Output = Self;
23528    #[inline]
23529    fn bitand(self, rhs: Self) -> Self {
23530        Self(self.0 & rhs.0)
23531    }
23532}
23533impl core::ops::BitAndAssign for VideoEncodeAV1RateControlFlagBitsKHR {
23534    #[inline]
23535    fn bitand_assign(&mut self, rhs: Self) {
23536        self.0 &= rhs.0;
23537    }
23538}
23539impl core::ops::BitXor for VideoEncodeAV1RateControlFlagBitsKHR {
23540    type Output = Self;
23541    #[inline]
23542    fn bitxor(self, rhs: Self) -> Self {
23543        Self(self.0 ^ rhs.0)
23544    }
23545}
23546impl core::ops::BitXorAssign for VideoEncodeAV1RateControlFlagBitsKHR {
23547    #[inline]
23548    fn bitxor_assign(&mut self, rhs: Self) {
23549        self.0 ^= rhs.0;
23550    }
23551}
23552impl core::ops::Not for VideoEncodeAV1RateControlFlagBitsKHR {
23553    type Output = Self;
23554    #[inline]
23555    fn not(self) -> Self {
23556        Self(!self.0)
23557    }
23558}
23559impl core::fmt::Debug for VideoEncodeAV1RateControlFlagBitsKHR {
23560    #[allow(unused_mut, unused_variables)]
23561    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23562        let mut first = true;
23563        let mut remaining = self.0;
23564        if remaining & Self::REGULAR_GOP.0 != 0 {
23565            if !first {
23566                f.write_str(" | ")?;
23567            }
23568            f.write_str("REGULAR_GOP")?;
23569            remaining &= !Self::REGULAR_GOP.0;
23570            first = false;
23571        }
23572        if remaining & Self::TEMPORAL_LAYER_PATTERN_DYADIC.0 != 0 {
23573            if !first {
23574                f.write_str(" | ")?;
23575            }
23576            f.write_str("TEMPORAL_LAYER_PATTERN_DYADIC")?;
23577            remaining &= !Self::TEMPORAL_LAYER_PATTERN_DYADIC.0;
23578            first = false;
23579        }
23580        if remaining & Self::REFERENCE_PATTERN_FLAT.0 != 0 {
23581            if !first {
23582                f.write_str(" | ")?;
23583            }
23584            f.write_str("REFERENCE_PATTERN_FLAT")?;
23585            remaining &= !Self::REFERENCE_PATTERN_FLAT.0;
23586            first = false;
23587        }
23588        if remaining & Self::REFERENCE_PATTERN_DYADIC.0 != 0 {
23589            if !first {
23590                f.write_str(" | ")?;
23591            }
23592            f.write_str("REFERENCE_PATTERN_DYADIC")?;
23593            remaining &= !Self::REFERENCE_PATTERN_DYADIC.0;
23594            first = false;
23595        }
23596        if remaining != 0u32 {
23597            if !first {
23598                f.write_str(" | ")?;
23599            }
23600            write!(f, "{:#x}", remaining)?;
23601        } else if first {
23602            f.write_str("(empty)")?;
23603        }
23604        Ok(())
23605    }
23606}
23607///[`VkVideoEncodeAV1StdFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1StdFlagBitsKHR.html)
23608#[repr(transparent)]
23609#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23610#[doc(alias = "VkVideoEncodeAV1StdFlagBitsKHR")]
23611pub struct VideoEncodeAV1StdFlagBitsKHR(u32);
23612impl VideoEncodeAV1StdFlagBitsKHR {
23613    #[inline]
23614    pub const fn empty() -> Self {
23615        Self(0u32)
23616    }
23617    #[inline]
23618    pub const fn from_raw(value: u32) -> Self {
23619        Self(value)
23620    }
23621    #[inline]
23622    pub const fn as_raw(self) -> u32 {
23623        self.0
23624    }
23625    #[inline]
23626    pub const fn is_empty(self) -> bool {
23627        self.0 == 0u32
23628    }
23629    #[inline]
23630    pub const fn contains(self, other: Self) -> bool {
23631        (self.0 & other.0) == other.0
23632    }
23633    #[inline]
23634    pub const fn all() -> Self {
23635        Self(15u32)
23636    }
23637    ///Bit 0.
23638    pub const UNIFORM_TILE_SPACING_FLAG_SET: Self = Self(1u32);
23639    ///Bit 1.
23640    pub const SKIP_MODE_PRESENT_UNSET: Self = Self(2u32);
23641    ///Bit 2.
23642    pub const PRIMARY_REF_FRAME: Self = Self(4u32);
23643    ///Bit 3.
23644    pub const DELTA_Q: Self = Self(8u32);
23645}
23646impl core::ops::BitOr for VideoEncodeAV1StdFlagBitsKHR {
23647    type Output = Self;
23648    #[inline]
23649    fn bitor(self, rhs: Self) -> Self {
23650        Self(self.0 | rhs.0)
23651    }
23652}
23653impl core::ops::BitOrAssign for VideoEncodeAV1StdFlagBitsKHR {
23654    #[inline]
23655    fn bitor_assign(&mut self, rhs: Self) {
23656        self.0 |= rhs.0;
23657    }
23658}
23659impl core::ops::BitAnd for VideoEncodeAV1StdFlagBitsKHR {
23660    type Output = Self;
23661    #[inline]
23662    fn bitand(self, rhs: Self) -> Self {
23663        Self(self.0 & rhs.0)
23664    }
23665}
23666impl core::ops::BitAndAssign for VideoEncodeAV1StdFlagBitsKHR {
23667    #[inline]
23668    fn bitand_assign(&mut self, rhs: Self) {
23669        self.0 &= rhs.0;
23670    }
23671}
23672impl core::ops::BitXor for VideoEncodeAV1StdFlagBitsKHR {
23673    type Output = Self;
23674    #[inline]
23675    fn bitxor(self, rhs: Self) -> Self {
23676        Self(self.0 ^ rhs.0)
23677    }
23678}
23679impl core::ops::BitXorAssign for VideoEncodeAV1StdFlagBitsKHR {
23680    #[inline]
23681    fn bitxor_assign(&mut self, rhs: Self) {
23682        self.0 ^= rhs.0;
23683    }
23684}
23685impl core::ops::Not for VideoEncodeAV1StdFlagBitsKHR {
23686    type Output = Self;
23687    #[inline]
23688    fn not(self) -> Self {
23689        Self(!self.0)
23690    }
23691}
23692impl core::fmt::Debug for VideoEncodeAV1StdFlagBitsKHR {
23693    #[allow(unused_mut, unused_variables)]
23694    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23695        let mut first = true;
23696        let mut remaining = self.0;
23697        if remaining & Self::UNIFORM_TILE_SPACING_FLAG_SET.0 != 0 {
23698            if !first {
23699                f.write_str(" | ")?;
23700            }
23701            f.write_str("UNIFORM_TILE_SPACING_FLAG_SET")?;
23702            remaining &= !Self::UNIFORM_TILE_SPACING_FLAG_SET.0;
23703            first = false;
23704        }
23705        if remaining & Self::SKIP_MODE_PRESENT_UNSET.0 != 0 {
23706            if !first {
23707                f.write_str(" | ")?;
23708            }
23709            f.write_str("SKIP_MODE_PRESENT_UNSET")?;
23710            remaining &= !Self::SKIP_MODE_PRESENT_UNSET.0;
23711            first = false;
23712        }
23713        if remaining & Self::PRIMARY_REF_FRAME.0 != 0 {
23714            if !first {
23715                f.write_str(" | ")?;
23716            }
23717            f.write_str("PRIMARY_REF_FRAME")?;
23718            remaining &= !Self::PRIMARY_REF_FRAME.0;
23719            first = false;
23720        }
23721        if remaining & Self::DELTA_Q.0 != 0 {
23722            if !first {
23723                f.write_str(" | ")?;
23724            }
23725            f.write_str("DELTA_Q")?;
23726            remaining &= !Self::DELTA_Q.0;
23727            first = false;
23728        }
23729        if remaining != 0u32 {
23730            if !first {
23731                f.write_str(" | ")?;
23732            }
23733            write!(f, "{:#x}", remaining)?;
23734        } else if first {
23735            f.write_str("(empty)")?;
23736        }
23737        Ok(())
23738    }
23739}
23740///[`VkVideoEncodeAV1SuperblockSizeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1SuperblockSizeFlagBitsKHR.html)
23741#[repr(transparent)]
23742#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23743#[doc(alias = "VkVideoEncodeAV1SuperblockSizeFlagBitsKHR")]
23744pub struct VideoEncodeAV1SuperblockSizeFlagBitsKHR(u32);
23745impl VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23746    #[inline]
23747    pub const fn empty() -> Self {
23748        Self(0u32)
23749    }
23750    #[inline]
23751    pub const fn from_raw(value: u32) -> Self {
23752        Self(value)
23753    }
23754    #[inline]
23755    pub const fn as_raw(self) -> u32 {
23756        self.0
23757    }
23758    #[inline]
23759    pub const fn is_empty(self) -> bool {
23760        self.0 == 0u32
23761    }
23762    #[inline]
23763    pub const fn contains(self, other: Self) -> bool {
23764        (self.0 & other.0) == other.0
23765    }
23766    #[inline]
23767    pub const fn all() -> Self {
23768        Self(3u32)
23769    }
23770    ///Bit 0.
23771    pub const _64: Self = Self(1u32);
23772    ///Bit 1.
23773    pub const _128: Self = Self(2u32);
23774}
23775impl core::ops::BitOr for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23776    type Output = Self;
23777    #[inline]
23778    fn bitor(self, rhs: Self) -> Self {
23779        Self(self.0 | rhs.0)
23780    }
23781}
23782impl core::ops::BitOrAssign for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23783    #[inline]
23784    fn bitor_assign(&mut self, rhs: Self) {
23785        self.0 |= rhs.0;
23786    }
23787}
23788impl core::ops::BitAnd for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23789    type Output = Self;
23790    #[inline]
23791    fn bitand(self, rhs: Self) -> Self {
23792        Self(self.0 & rhs.0)
23793    }
23794}
23795impl core::ops::BitAndAssign for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23796    #[inline]
23797    fn bitand_assign(&mut self, rhs: Self) {
23798        self.0 &= rhs.0;
23799    }
23800}
23801impl core::ops::BitXor for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23802    type Output = Self;
23803    #[inline]
23804    fn bitxor(self, rhs: Self) -> Self {
23805        Self(self.0 ^ rhs.0)
23806    }
23807}
23808impl core::ops::BitXorAssign for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23809    #[inline]
23810    fn bitxor_assign(&mut self, rhs: Self) {
23811        self.0 ^= rhs.0;
23812    }
23813}
23814impl core::ops::Not for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23815    type Output = Self;
23816    #[inline]
23817    fn not(self) -> Self {
23818        Self(!self.0)
23819    }
23820}
23821impl core::fmt::Debug for VideoEncodeAV1SuperblockSizeFlagBitsKHR {
23822    #[allow(unused_mut, unused_variables)]
23823    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23824        let mut first = true;
23825        let mut remaining = self.0;
23826        if remaining & Self::_64.0 != 0 {
23827            if !first {
23828                f.write_str(" | ")?;
23829            }
23830            f.write_str("_64")?;
23831            remaining &= !Self::_64.0;
23832            first = false;
23833        }
23834        if remaining & Self::_128.0 != 0 {
23835            if !first {
23836                f.write_str(" | ")?;
23837            }
23838            f.write_str("_128")?;
23839            remaining &= !Self::_128.0;
23840            first = false;
23841        }
23842        if remaining != 0u32 {
23843            if !first {
23844                f.write_str(" | ")?;
23845            }
23846            write!(f, "{:#x}", remaining)?;
23847        } else if first {
23848            f.write_str("(empty)")?;
23849        }
23850        Ok(())
23851    }
23852}
23853///[`VkVideoEncodeCapabilityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeCapabilityFlagBitsKHR.html)
23854#[repr(transparent)]
23855#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23856#[doc(alias = "VkVideoEncodeCapabilityFlagBitsKHR")]
23857pub struct VideoEncodeCapabilityFlagBitsKHR(u32);
23858impl VideoEncodeCapabilityFlagBitsKHR {
23859    #[inline]
23860    pub const fn empty() -> Self {
23861        Self(0u32)
23862    }
23863    #[inline]
23864    pub const fn from_raw(value: u32) -> Self {
23865        Self(value)
23866    }
23867    #[inline]
23868    pub const fn as_raw(self) -> u32 {
23869        self.0
23870    }
23871    #[inline]
23872    pub const fn is_empty(self) -> bool {
23873        self.0 == 0u32
23874    }
23875    #[inline]
23876    pub const fn contains(self, other: Self) -> bool {
23877        (self.0 & other.0) == other.0
23878    }
23879    #[inline]
23880    pub const fn all() -> Self {
23881        Self(15u32)
23882    }
23883    ///Bit 0.
23884    pub const PRECEDING_EXTERNALLY_ENCODED_BYTES: Self = Self(1u32);
23885    ///Bit 1.
23886    pub const INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION: Self = Self(2u32);
23887    ///Bit 2.
23888    pub const QUANTIZATION_DELTA_MAP: Self = Self(4u32);
23889    ///Bit 3.
23890    pub const EMPHASIS_MAP: Self = Self(8u32);
23891}
23892impl core::ops::BitOr for VideoEncodeCapabilityFlagBitsKHR {
23893    type Output = Self;
23894    #[inline]
23895    fn bitor(self, rhs: Self) -> Self {
23896        Self(self.0 | rhs.0)
23897    }
23898}
23899impl core::ops::BitOrAssign for VideoEncodeCapabilityFlagBitsKHR {
23900    #[inline]
23901    fn bitor_assign(&mut self, rhs: Self) {
23902        self.0 |= rhs.0;
23903    }
23904}
23905impl core::ops::BitAnd for VideoEncodeCapabilityFlagBitsKHR {
23906    type Output = Self;
23907    #[inline]
23908    fn bitand(self, rhs: Self) -> Self {
23909        Self(self.0 & rhs.0)
23910    }
23911}
23912impl core::ops::BitAndAssign for VideoEncodeCapabilityFlagBitsKHR {
23913    #[inline]
23914    fn bitand_assign(&mut self, rhs: Self) {
23915        self.0 &= rhs.0;
23916    }
23917}
23918impl core::ops::BitXor for VideoEncodeCapabilityFlagBitsKHR {
23919    type Output = Self;
23920    #[inline]
23921    fn bitxor(self, rhs: Self) -> Self {
23922        Self(self.0 ^ rhs.0)
23923    }
23924}
23925impl core::ops::BitXorAssign for VideoEncodeCapabilityFlagBitsKHR {
23926    #[inline]
23927    fn bitxor_assign(&mut self, rhs: Self) {
23928        self.0 ^= rhs.0;
23929    }
23930}
23931impl core::ops::Not for VideoEncodeCapabilityFlagBitsKHR {
23932    type Output = Self;
23933    #[inline]
23934    fn not(self) -> Self {
23935        Self(!self.0)
23936    }
23937}
23938impl core::fmt::Debug for VideoEncodeCapabilityFlagBitsKHR {
23939    #[allow(unused_mut, unused_variables)]
23940    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23941        let mut first = true;
23942        let mut remaining = self.0;
23943        if remaining & Self::PRECEDING_EXTERNALLY_ENCODED_BYTES.0 != 0 {
23944            if !first {
23945                f.write_str(" | ")?;
23946            }
23947            f.write_str("PRECEDING_EXTERNALLY_ENCODED_BYTES")?;
23948            remaining &= !Self::PRECEDING_EXTERNALLY_ENCODED_BYTES.0;
23949            first = false;
23950        }
23951        if remaining & Self::INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION.0 != 0 {
23952            if !first {
23953                f.write_str(" | ")?;
23954            }
23955            f.write_str("INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION")?;
23956            remaining &= !Self::INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION.0;
23957            first = false;
23958        }
23959        if remaining & Self::QUANTIZATION_DELTA_MAP.0 != 0 {
23960            if !first {
23961                f.write_str(" | ")?;
23962            }
23963            f.write_str("QUANTIZATION_DELTA_MAP")?;
23964            remaining &= !Self::QUANTIZATION_DELTA_MAP.0;
23965            first = false;
23966        }
23967        if remaining & Self::EMPHASIS_MAP.0 != 0 {
23968            if !first {
23969                f.write_str(" | ")?;
23970            }
23971            f.write_str("EMPHASIS_MAP")?;
23972            remaining &= !Self::EMPHASIS_MAP.0;
23973            first = false;
23974        }
23975        if remaining != 0u32 {
23976            if !first {
23977                f.write_str(" | ")?;
23978            }
23979            write!(f, "{:#x}", remaining)?;
23980        } else if first {
23981            f.write_str("(empty)")?;
23982        }
23983        Ok(())
23984    }
23985}
23986///[`VkVideoEncodeContentFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeContentFlagBitsKHR.html)
23987#[repr(transparent)]
23988#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
23989#[doc(alias = "VkVideoEncodeContentFlagBitsKHR")]
23990pub struct VideoEncodeContentFlagBitsKHR(u32);
23991impl VideoEncodeContentFlagBitsKHR {
23992    #[inline]
23993    pub const fn empty() -> Self {
23994        Self(0u32)
23995    }
23996    #[inline]
23997    pub const fn from_raw(value: u32) -> Self {
23998        Self(value)
23999    }
24000    #[inline]
24001    pub const fn as_raw(self) -> u32 {
24002        self.0
24003    }
24004    #[inline]
24005    pub const fn is_empty(self) -> bool {
24006        self.0 == 0u32
24007    }
24008    #[inline]
24009    pub const fn contains(self, other: Self) -> bool {
24010        (self.0 & other.0) == other.0
24011    }
24012    #[inline]
24013    pub const fn all() -> Self {
24014        Self(7u32)
24015    }
24016    pub const DEFAULT: Self = Self(0u32);
24017    ///Bit 0.
24018    pub const CAMERA: Self = Self(1u32);
24019    ///Bit 1.
24020    pub const DESKTOP: Self = Self(2u32);
24021    ///Bit 2.
24022    pub const RENDERED: Self = Self(4u32);
24023}
24024impl core::ops::BitOr for VideoEncodeContentFlagBitsKHR {
24025    type Output = Self;
24026    #[inline]
24027    fn bitor(self, rhs: Self) -> Self {
24028        Self(self.0 | rhs.0)
24029    }
24030}
24031impl core::ops::BitOrAssign for VideoEncodeContentFlagBitsKHR {
24032    #[inline]
24033    fn bitor_assign(&mut self, rhs: Self) {
24034        self.0 |= rhs.0;
24035    }
24036}
24037impl core::ops::BitAnd for VideoEncodeContentFlagBitsKHR {
24038    type Output = Self;
24039    #[inline]
24040    fn bitand(self, rhs: Self) -> Self {
24041        Self(self.0 & rhs.0)
24042    }
24043}
24044impl core::ops::BitAndAssign for VideoEncodeContentFlagBitsKHR {
24045    #[inline]
24046    fn bitand_assign(&mut self, rhs: Self) {
24047        self.0 &= rhs.0;
24048    }
24049}
24050impl core::ops::BitXor for VideoEncodeContentFlagBitsKHR {
24051    type Output = Self;
24052    #[inline]
24053    fn bitxor(self, rhs: Self) -> Self {
24054        Self(self.0 ^ rhs.0)
24055    }
24056}
24057impl core::ops::BitXorAssign for VideoEncodeContentFlagBitsKHR {
24058    #[inline]
24059    fn bitxor_assign(&mut self, rhs: Self) {
24060        self.0 ^= rhs.0;
24061    }
24062}
24063impl core::ops::Not for VideoEncodeContentFlagBitsKHR {
24064    type Output = Self;
24065    #[inline]
24066    fn not(self) -> Self {
24067        Self(!self.0)
24068    }
24069}
24070impl core::fmt::Debug for VideoEncodeContentFlagBitsKHR {
24071    #[allow(unused_mut, unused_variables)]
24072    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24073        let mut first = true;
24074        let mut remaining = self.0;
24075        if remaining & Self::CAMERA.0 != 0 {
24076            if !first {
24077                f.write_str(" | ")?;
24078            }
24079            f.write_str("CAMERA")?;
24080            remaining &= !Self::CAMERA.0;
24081            first = false;
24082        }
24083        if remaining & Self::DESKTOP.0 != 0 {
24084            if !first {
24085                f.write_str(" | ")?;
24086            }
24087            f.write_str("DESKTOP")?;
24088            remaining &= !Self::DESKTOP.0;
24089            first = false;
24090        }
24091        if remaining & Self::RENDERED.0 != 0 {
24092            if !first {
24093                f.write_str(" | ")?;
24094            }
24095            f.write_str("RENDERED")?;
24096            remaining &= !Self::RENDERED.0;
24097            first = false;
24098        }
24099        if remaining != 0u32 {
24100            if !first {
24101                f.write_str(" | ")?;
24102            }
24103            write!(f, "{:#x}", remaining)?;
24104        } else if first {
24105            f.write_str("(empty)")?;
24106        }
24107        Ok(())
24108    }
24109}
24110///[`VkVideoEncodeFeedbackFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeFeedbackFlagBitsKHR.html)
24111#[repr(transparent)]
24112#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
24113#[doc(alias = "VkVideoEncodeFeedbackFlagBitsKHR")]
24114pub struct VideoEncodeFeedbackFlagBitsKHR(u32);
24115impl VideoEncodeFeedbackFlagBitsKHR {
24116    #[inline]
24117    pub const fn empty() -> Self {
24118        Self(0u32)
24119    }
24120    #[inline]
24121    pub const fn from_raw(value: u32) -> Self {
24122        Self(value)
24123    }
24124    #[inline]
24125    pub const fn as_raw(self) -> u32 {
24126        self.0
24127    }
24128    #[inline]
24129    pub const fn is_empty(self) -> bool {
24130        self.0 == 0u32
24131    }
24132    #[inline]
24133    pub const fn contains(self, other: Self) -> bool {
24134        (self.0 & other.0) == other.0
24135    }
24136    #[inline]
24137    pub const fn all() -> Self {
24138        Self(7u32)
24139    }
24140    ///Bit 0.
24141    pub const BITSTREAM_BUFFER_OFFSET: Self = Self(1u32);
24142    ///Bit 1.
24143    pub const BITSTREAM_BYTES_WRITTEN: Self = Self(2u32);
24144    ///Bit 2.
24145    pub const BITSTREAM_HAS_OVERRIDES: Self = Self(4u32);
24146}
24147impl core::ops::BitOr for VideoEncodeFeedbackFlagBitsKHR {
24148    type Output = Self;
24149    #[inline]
24150    fn bitor(self, rhs: Self) -> Self {
24151        Self(self.0 | rhs.0)
24152    }
24153}
24154impl core::ops::BitOrAssign for VideoEncodeFeedbackFlagBitsKHR {
24155    #[inline]
24156    fn bitor_assign(&mut self, rhs: Self) {
24157        self.0 |= rhs.0;
24158    }
24159}
24160impl core::ops::BitAnd for VideoEncodeFeedbackFlagBitsKHR {
24161    type Output = Self;
24162    #[inline]
24163    fn bitand(self, rhs: Self) -> Self {
24164        Self(self.0 & rhs.0)
24165    }
24166}
24167impl core::ops::BitAndAssign for VideoEncodeFeedbackFlagBitsKHR {
24168    #[inline]
24169    fn bitand_assign(&mut self, rhs: Self) {
24170        self.0 &= rhs.0;
24171    }
24172}
24173impl core::ops::BitXor for VideoEncodeFeedbackFlagBitsKHR {
24174    type Output = Self;
24175    #[inline]
24176    fn bitxor(self, rhs: Self) -> Self {
24177        Self(self.0 ^ rhs.0)
24178    }
24179}
24180impl core::ops::BitXorAssign for VideoEncodeFeedbackFlagBitsKHR {
24181    #[inline]
24182    fn bitxor_assign(&mut self, rhs: Self) {
24183        self.0 ^= rhs.0;
24184    }
24185}
24186impl core::ops::Not for VideoEncodeFeedbackFlagBitsKHR {
24187    type Output = Self;
24188    #[inline]
24189    fn not(self) -> Self {
24190        Self(!self.0)
24191    }
24192}
24193impl core::fmt::Debug for VideoEncodeFeedbackFlagBitsKHR {
24194    #[allow(unused_mut, unused_variables)]
24195    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24196        let mut first = true;
24197        let mut remaining = self.0;
24198        if remaining & Self::BITSTREAM_BUFFER_OFFSET.0 != 0 {
24199            if !first {
24200                f.write_str(" | ")?;
24201            }
24202            f.write_str("BITSTREAM_BUFFER_OFFSET")?;
24203            remaining &= !Self::BITSTREAM_BUFFER_OFFSET.0;
24204            first = false;
24205        }
24206        if remaining & Self::BITSTREAM_BYTES_WRITTEN.0 != 0 {
24207            if !first {
24208                f.write_str(" | ")?;
24209            }
24210            f.write_str("BITSTREAM_BYTES_WRITTEN")?;
24211            remaining &= !Self::BITSTREAM_BYTES_WRITTEN.0;
24212            first = false;
24213        }
24214        if remaining & Self::BITSTREAM_HAS_OVERRIDES.0 != 0 {
24215            if !first {
24216                f.write_str(" | ")?;
24217            }
24218            f.write_str("BITSTREAM_HAS_OVERRIDES")?;
24219            remaining &= !Self::BITSTREAM_HAS_OVERRIDES.0;
24220            first = false;
24221        }
24222        if remaining != 0u32 {
24223            if !first {
24224                f.write_str(" | ")?;
24225            }
24226            write!(f, "{:#x}", remaining)?;
24227        } else if first {
24228            f.write_str("(empty)")?;
24229        }
24230        Ok(())
24231    }
24232}
24233///[`VkVideoEncodeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeFlagBitsKHR.html)
24234#[repr(transparent)]
24235#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
24236#[doc(alias = "VkVideoEncodeFlagBitsKHR")]
24237pub struct VideoEncodeFlagBitsKHR(u32);
24238impl VideoEncodeFlagBitsKHR {
24239    #[inline]
24240    pub const fn empty() -> Self {
24241        Self(0u32)
24242    }
24243    #[inline]
24244    pub const fn from_raw(value: u32) -> Self {
24245        Self(value)
24246    }
24247    #[inline]
24248    pub const fn as_raw(self) -> u32 {
24249        self.0
24250    }
24251    #[inline]
24252    pub const fn is_empty(self) -> bool {
24253        self.0 == 0u32
24254    }
24255    #[inline]
24256    pub const fn contains(self, other: Self) -> bool {
24257        (self.0 & other.0) == other.0
24258    }
24259    #[inline]
24260    pub const fn all() -> Self {
24261        Self(7u32)
24262    }
24263    ///Bit 2.
24264    pub const INTRA_REFRESH: Self = Self(4u32);
24265    ///Bit 0.
24266    pub const WITH_QUANTIZATION_DELTA_MAP: Self = Self(1u32);
24267    ///Bit 1.
24268    pub const WITH_EMPHASIS_MAP: Self = Self(2u32);
24269}
24270impl core::ops::BitOr for VideoEncodeFlagBitsKHR {
24271    type Output = Self;
24272    #[inline]
24273    fn bitor(self, rhs: Self) -> Self {
24274        Self(self.0 | rhs.0)
24275    }
24276}
24277impl core::ops::BitOrAssign for VideoEncodeFlagBitsKHR {
24278    #[inline]
24279    fn bitor_assign(&mut self, rhs: Self) {
24280        self.0 |= rhs.0;
24281    }
24282}
24283impl core::ops::BitAnd for VideoEncodeFlagBitsKHR {
24284    type Output = Self;
24285    #[inline]
24286    fn bitand(self, rhs: Self) -> Self {
24287        Self(self.0 & rhs.0)
24288    }
24289}
24290impl core::ops::BitAndAssign for VideoEncodeFlagBitsKHR {
24291    #[inline]
24292    fn bitand_assign(&mut self, rhs: Self) {
24293        self.0 &= rhs.0;
24294    }
24295}
24296impl core::ops::BitXor for VideoEncodeFlagBitsKHR {
24297    type Output = Self;
24298    #[inline]
24299    fn bitxor(self, rhs: Self) -> Self {
24300        Self(self.0 ^ rhs.0)
24301    }
24302}
24303impl core::ops::BitXorAssign for VideoEncodeFlagBitsKHR {
24304    #[inline]
24305    fn bitxor_assign(&mut self, rhs: Self) {
24306        self.0 ^= rhs.0;
24307    }
24308}
24309impl core::ops::Not for VideoEncodeFlagBitsKHR {
24310    type Output = Self;
24311    #[inline]
24312    fn not(self) -> Self {
24313        Self(!self.0)
24314    }
24315}
24316impl core::fmt::Debug for VideoEncodeFlagBitsKHR {
24317    #[allow(unused_mut, unused_variables)]
24318    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24319        let mut first = true;
24320        let mut remaining = self.0;
24321        if remaining & Self::INTRA_REFRESH.0 != 0 {
24322            if !first {
24323                f.write_str(" | ")?;
24324            }
24325            f.write_str("INTRA_REFRESH")?;
24326            remaining &= !Self::INTRA_REFRESH.0;
24327            first = false;
24328        }
24329        if remaining & Self::WITH_QUANTIZATION_DELTA_MAP.0 != 0 {
24330            if !first {
24331                f.write_str(" | ")?;
24332            }
24333            f.write_str("WITH_QUANTIZATION_DELTA_MAP")?;
24334            remaining &= !Self::WITH_QUANTIZATION_DELTA_MAP.0;
24335            first = false;
24336        }
24337        if remaining & Self::WITH_EMPHASIS_MAP.0 != 0 {
24338            if !first {
24339                f.write_str(" | ")?;
24340            }
24341            f.write_str("WITH_EMPHASIS_MAP")?;
24342            remaining &= !Self::WITH_EMPHASIS_MAP.0;
24343            first = false;
24344        }
24345        if remaining != 0u32 {
24346            if !first {
24347                f.write_str(" | ")?;
24348            }
24349            write!(f, "{:#x}", remaining)?;
24350        } else if first {
24351            f.write_str("(empty)")?;
24352        }
24353        Ok(())
24354    }
24355}
24356///[`VkVideoEncodeH264CapabilityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilityFlagBitsKHR.html)
24357#[repr(transparent)]
24358#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
24359#[doc(alias = "VkVideoEncodeH264CapabilityFlagBitsKHR")]
24360pub struct VideoEncodeH264CapabilityFlagBitsKHR(u32);
24361impl VideoEncodeH264CapabilityFlagBitsKHR {
24362    #[inline]
24363    pub const fn empty() -> Self {
24364        Self(0u32)
24365    }
24366    #[inline]
24367    pub const fn from_raw(value: u32) -> Self {
24368        Self(value)
24369    }
24370    #[inline]
24371    pub const fn as_raw(self) -> u32 {
24372        self.0
24373    }
24374    #[inline]
24375    pub const fn is_empty(self) -> bool {
24376        self.0 == 0u32
24377    }
24378    #[inline]
24379    pub const fn contains(self, other: Self) -> bool {
24380        (self.0 & other.0) == other.0
24381    }
24382    #[inline]
24383    pub const fn all() -> Self {
24384        Self(2047u32)
24385    }
24386    ///Bit 0.
24387    pub const HRD_COMPLIANCE: Self = Self(1u32);
24388    ///Bit 1.
24389    pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = Self(2u32);
24390    ///Bit 2.
24391    pub const ROW_UNALIGNED_SLICE: Self = Self(4u32);
24392    ///Bit 3.
24393    pub const DIFFERENT_SLICE_TYPE: Self = Self(8u32);
24394    ///Bit 4.
24395    pub const B_FRAME_IN_L0_LIST: Self = Self(16u32);
24396    ///Bit 5.
24397    pub const B_FRAME_IN_L1_LIST: Self = Self(32u32);
24398    ///Bit 6.
24399    pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = Self(64u32);
24400    ///Bit 7.
24401    pub const PER_SLICE_CONSTANT_QP: Self = Self(128u32);
24402    ///Bit 8.
24403    pub const GENERATE_PREFIX_NALU: Self = Self(256u32);
24404    ///Bit 10.
24405    pub const B_PICTURE_INTRA_REFRESH: Self = Self(1024u32);
24406    ///Bit 9.
24407    pub const MB_QP_DIFF_WRAPAROUND: Self = Self(512u32);
24408}
24409impl core::ops::BitOr for VideoEncodeH264CapabilityFlagBitsKHR {
24410    type Output = Self;
24411    #[inline]
24412    fn bitor(self, rhs: Self) -> Self {
24413        Self(self.0 | rhs.0)
24414    }
24415}
24416impl core::ops::BitOrAssign for VideoEncodeH264CapabilityFlagBitsKHR {
24417    #[inline]
24418    fn bitor_assign(&mut self, rhs: Self) {
24419        self.0 |= rhs.0;
24420    }
24421}
24422impl core::ops::BitAnd for VideoEncodeH264CapabilityFlagBitsKHR {
24423    type Output = Self;
24424    #[inline]
24425    fn bitand(self, rhs: Self) -> Self {
24426        Self(self.0 & rhs.0)
24427    }
24428}
24429impl core::ops::BitAndAssign for VideoEncodeH264CapabilityFlagBitsKHR {
24430    #[inline]
24431    fn bitand_assign(&mut self, rhs: Self) {
24432        self.0 &= rhs.0;
24433    }
24434}
24435impl core::ops::BitXor for VideoEncodeH264CapabilityFlagBitsKHR {
24436    type Output = Self;
24437    #[inline]
24438    fn bitxor(self, rhs: Self) -> Self {
24439        Self(self.0 ^ rhs.0)
24440    }
24441}
24442impl core::ops::BitXorAssign for VideoEncodeH264CapabilityFlagBitsKHR {
24443    #[inline]
24444    fn bitxor_assign(&mut self, rhs: Self) {
24445        self.0 ^= rhs.0;
24446    }
24447}
24448impl core::ops::Not for VideoEncodeH264CapabilityFlagBitsKHR {
24449    type Output = Self;
24450    #[inline]
24451    fn not(self) -> Self {
24452        Self(!self.0)
24453    }
24454}
24455impl core::fmt::Debug for VideoEncodeH264CapabilityFlagBitsKHR {
24456    #[allow(unused_mut, unused_variables)]
24457    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24458        let mut first = true;
24459        let mut remaining = self.0;
24460        if remaining & Self::HRD_COMPLIANCE.0 != 0 {
24461            if !first {
24462                f.write_str(" | ")?;
24463            }
24464            f.write_str("HRD_COMPLIANCE")?;
24465            remaining &= !Self::HRD_COMPLIANCE.0;
24466            first = false;
24467        }
24468        if remaining & Self::PREDICTION_WEIGHT_TABLE_GENERATED.0 != 0 {
24469            if !first {
24470                f.write_str(" | ")?;
24471            }
24472            f.write_str("PREDICTION_WEIGHT_TABLE_GENERATED")?;
24473            remaining &= !Self::PREDICTION_WEIGHT_TABLE_GENERATED.0;
24474            first = false;
24475        }
24476        if remaining & Self::ROW_UNALIGNED_SLICE.0 != 0 {
24477            if !first {
24478                f.write_str(" | ")?;
24479            }
24480            f.write_str("ROW_UNALIGNED_SLICE")?;
24481            remaining &= !Self::ROW_UNALIGNED_SLICE.0;
24482            first = false;
24483        }
24484        if remaining & Self::DIFFERENT_SLICE_TYPE.0 != 0 {
24485            if !first {
24486                f.write_str(" | ")?;
24487            }
24488            f.write_str("DIFFERENT_SLICE_TYPE")?;
24489            remaining &= !Self::DIFFERENT_SLICE_TYPE.0;
24490            first = false;
24491        }
24492        if remaining & Self::B_FRAME_IN_L0_LIST.0 != 0 {
24493            if !first {
24494                f.write_str(" | ")?;
24495            }
24496            f.write_str("B_FRAME_IN_L0_LIST")?;
24497            remaining &= !Self::B_FRAME_IN_L0_LIST.0;
24498            first = false;
24499        }
24500        if remaining & Self::B_FRAME_IN_L1_LIST.0 != 0 {
24501            if !first {
24502                f.write_str(" | ")?;
24503            }
24504            f.write_str("B_FRAME_IN_L1_LIST")?;
24505            remaining &= !Self::B_FRAME_IN_L1_LIST.0;
24506            first = false;
24507        }
24508        if remaining & Self::PER_PICTURE_TYPE_MIN_MAX_QP.0 != 0 {
24509            if !first {
24510                f.write_str(" | ")?;
24511            }
24512            f.write_str("PER_PICTURE_TYPE_MIN_MAX_QP")?;
24513            remaining &= !Self::PER_PICTURE_TYPE_MIN_MAX_QP.0;
24514            first = false;
24515        }
24516        if remaining & Self::PER_SLICE_CONSTANT_QP.0 != 0 {
24517            if !first {
24518                f.write_str(" | ")?;
24519            }
24520            f.write_str("PER_SLICE_CONSTANT_QP")?;
24521            remaining &= !Self::PER_SLICE_CONSTANT_QP.0;
24522            first = false;
24523        }
24524        if remaining & Self::GENERATE_PREFIX_NALU.0 != 0 {
24525            if !first {
24526                f.write_str(" | ")?;
24527            }
24528            f.write_str("GENERATE_PREFIX_NALU")?;
24529            remaining &= !Self::GENERATE_PREFIX_NALU.0;
24530            first = false;
24531        }
24532        if remaining & Self::B_PICTURE_INTRA_REFRESH.0 != 0 {
24533            if !first {
24534                f.write_str(" | ")?;
24535            }
24536            f.write_str("B_PICTURE_INTRA_REFRESH")?;
24537            remaining &= !Self::B_PICTURE_INTRA_REFRESH.0;
24538            first = false;
24539        }
24540        if remaining & Self::MB_QP_DIFF_WRAPAROUND.0 != 0 {
24541            if !first {
24542                f.write_str(" | ")?;
24543            }
24544            f.write_str("MB_QP_DIFF_WRAPAROUND")?;
24545            remaining &= !Self::MB_QP_DIFF_WRAPAROUND.0;
24546            first = false;
24547        }
24548        if remaining != 0u32 {
24549            if !first {
24550                f.write_str(" | ")?;
24551            }
24552            write!(f, "{:#x}", remaining)?;
24553        } else if first {
24554            f.write_str("(empty)")?;
24555        }
24556        Ok(())
24557    }
24558}
24559///[`VkVideoEncodeH264RateControlFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlFlagBitsKHR.html)
24560#[repr(transparent)]
24561#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
24562#[doc(alias = "VkVideoEncodeH264RateControlFlagBitsKHR")]
24563pub struct VideoEncodeH264RateControlFlagBitsKHR(u32);
24564impl VideoEncodeH264RateControlFlagBitsKHR {
24565    #[inline]
24566    pub const fn empty() -> Self {
24567        Self(0u32)
24568    }
24569    #[inline]
24570    pub const fn from_raw(value: u32) -> Self {
24571        Self(value)
24572    }
24573    #[inline]
24574    pub const fn as_raw(self) -> u32 {
24575        self.0
24576    }
24577    #[inline]
24578    pub const fn is_empty(self) -> bool {
24579        self.0 == 0u32
24580    }
24581    #[inline]
24582    pub const fn contains(self, other: Self) -> bool {
24583        (self.0 & other.0) == other.0
24584    }
24585    #[inline]
24586    pub const fn all() -> Self {
24587        Self(31u32)
24588    }
24589    ///Bit 0.
24590    pub const ATTEMPT_HRD_COMPLIANCE: Self = Self(1u32);
24591    ///Bit 1.
24592    pub const REGULAR_GOP: Self = Self(2u32);
24593    ///Bit 2.
24594    pub const REFERENCE_PATTERN_FLAT: Self = Self(4u32);
24595    ///Bit 3.
24596    pub const REFERENCE_PATTERN_DYADIC: Self = Self(8u32);
24597    ///Bit 4.
24598    pub const TEMPORAL_LAYER_PATTERN_DYADIC: Self = Self(16u32);
24599}
24600impl core::ops::BitOr for VideoEncodeH264RateControlFlagBitsKHR {
24601    type Output = Self;
24602    #[inline]
24603    fn bitor(self, rhs: Self) -> Self {
24604        Self(self.0 | rhs.0)
24605    }
24606}
24607impl core::ops::BitOrAssign for VideoEncodeH264RateControlFlagBitsKHR {
24608    #[inline]
24609    fn bitor_assign(&mut self, rhs: Self) {
24610        self.0 |= rhs.0;
24611    }
24612}
24613impl core::ops::BitAnd for VideoEncodeH264RateControlFlagBitsKHR {
24614    type Output = Self;
24615    #[inline]
24616    fn bitand(self, rhs: Self) -> Self {
24617        Self(self.0 & rhs.0)
24618    }
24619}
24620impl core::ops::BitAndAssign for VideoEncodeH264RateControlFlagBitsKHR {
24621    #[inline]
24622    fn bitand_assign(&mut self, rhs: Self) {
24623        self.0 &= rhs.0;
24624    }
24625}
24626impl core::ops::BitXor for VideoEncodeH264RateControlFlagBitsKHR {
24627    type Output = Self;
24628    #[inline]
24629    fn bitxor(self, rhs: Self) -> Self {
24630        Self(self.0 ^ rhs.0)
24631    }
24632}
24633impl core::ops::BitXorAssign for VideoEncodeH264RateControlFlagBitsKHR {
24634    #[inline]
24635    fn bitxor_assign(&mut self, rhs: Self) {
24636        self.0 ^= rhs.0;
24637    }
24638}
24639impl core::ops::Not for VideoEncodeH264RateControlFlagBitsKHR {
24640    type Output = Self;
24641    #[inline]
24642    fn not(self) -> Self {
24643        Self(!self.0)
24644    }
24645}
24646impl core::fmt::Debug for VideoEncodeH264RateControlFlagBitsKHR {
24647    #[allow(unused_mut, unused_variables)]
24648    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24649        let mut first = true;
24650        let mut remaining = self.0;
24651        if remaining & Self::ATTEMPT_HRD_COMPLIANCE.0 != 0 {
24652            if !first {
24653                f.write_str(" | ")?;
24654            }
24655            f.write_str("ATTEMPT_HRD_COMPLIANCE")?;
24656            remaining &= !Self::ATTEMPT_HRD_COMPLIANCE.0;
24657            first = false;
24658        }
24659        if remaining & Self::REGULAR_GOP.0 != 0 {
24660            if !first {
24661                f.write_str(" | ")?;
24662            }
24663            f.write_str("REGULAR_GOP")?;
24664            remaining &= !Self::REGULAR_GOP.0;
24665            first = false;
24666        }
24667        if remaining & Self::REFERENCE_PATTERN_FLAT.0 != 0 {
24668            if !first {
24669                f.write_str(" | ")?;
24670            }
24671            f.write_str("REFERENCE_PATTERN_FLAT")?;
24672            remaining &= !Self::REFERENCE_PATTERN_FLAT.0;
24673            first = false;
24674        }
24675        if remaining & Self::REFERENCE_PATTERN_DYADIC.0 != 0 {
24676            if !first {
24677                f.write_str(" | ")?;
24678            }
24679            f.write_str("REFERENCE_PATTERN_DYADIC")?;
24680            remaining &= !Self::REFERENCE_PATTERN_DYADIC.0;
24681            first = false;
24682        }
24683        if remaining & Self::TEMPORAL_LAYER_PATTERN_DYADIC.0 != 0 {
24684            if !first {
24685                f.write_str(" | ")?;
24686            }
24687            f.write_str("TEMPORAL_LAYER_PATTERN_DYADIC")?;
24688            remaining &= !Self::TEMPORAL_LAYER_PATTERN_DYADIC.0;
24689            first = false;
24690        }
24691        if remaining != 0u32 {
24692            if !first {
24693                f.write_str(" | ")?;
24694            }
24695            write!(f, "{:#x}", remaining)?;
24696        } else if first {
24697            f.write_str("(empty)")?;
24698        }
24699        Ok(())
24700    }
24701}
24702///[`VkVideoEncodeH264StdFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264StdFlagBitsKHR.html)
24703#[repr(transparent)]
24704#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
24705#[doc(alias = "VkVideoEncodeH264StdFlagBitsKHR")]
24706pub struct VideoEncodeH264StdFlagBitsKHR(u32);
24707impl VideoEncodeH264StdFlagBitsKHR {
24708    #[inline]
24709    pub const fn empty() -> Self {
24710        Self(0u32)
24711    }
24712    #[inline]
24713    pub const fn from_raw(value: u32) -> Self {
24714        Self(value)
24715    }
24716    #[inline]
24717    pub const fn as_raw(self) -> u32 {
24718        self.0
24719    }
24720    #[inline]
24721    pub const fn is_empty(self) -> bool {
24722        self.0 == 0u32
24723    }
24724    #[inline]
24725    pub const fn contains(self, other: Self) -> bool {
24726        (self.0 & other.0) == other.0
24727    }
24728    #[inline]
24729    pub const fn all() -> Self {
24730        Self(1835007u32)
24731    }
24732    ///Bit 0.
24733    pub const SEPARATE_COLOR_PLANE_FLAG_SET: Self = Self(1u32);
24734    ///Bit 1.
24735    pub const QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET: Self = Self(2u32);
24736    ///Bit 2.
24737    pub const SCALING_MATRIX_PRESENT_FLAG_SET: Self = Self(4u32);
24738    ///Bit 3.
24739    pub const CHROMA_QP_INDEX_OFFSET: Self = Self(8u32);
24740    ///Bit 4.
24741    pub const SECOND_CHROMA_QP_INDEX_OFFSET: Self = Self(16u32);
24742    ///Bit 5.
24743    pub const PIC_INIT_QP_MINUS26: Self = Self(32u32);
24744    ///Bit 6.
24745    pub const WEIGHTED_PRED_FLAG_SET: Self = Self(64u32);
24746    ///Bit 7.
24747    pub const WEIGHTED_BIPRED_IDC_EXPLICIT: Self = Self(128u32);
24748    ///Bit 8.
24749    pub const WEIGHTED_BIPRED_IDC_IMPLICIT: Self = Self(256u32);
24750    ///Bit 9.
24751    pub const TRANSFORM_8X8_MODE_FLAG_SET: Self = Self(512u32);
24752    ///Bit 10.
24753    pub const DIRECT_SPATIAL_MV_PRED_FLAG_UNSET: Self = Self(1024u32);
24754    ///Bit 11.
24755    pub const ENTROPY_CODING_MODE_FLAG_UNSET: Self = Self(2048u32);
24756    ///Bit 12.
24757    pub const ENTROPY_CODING_MODE_FLAG_SET: Self = Self(4096u32);
24758    ///Bit 13.
24759    pub const DIRECT_8X8_INFERENCE_FLAG_UNSET: Self = Self(8192u32);
24760    ///Bit 14.
24761    pub const CONSTRAINED_INTRA_PRED_FLAG_SET: Self = Self(16384u32);
24762    ///Bit 15.
24763    pub const DEBLOCKING_FILTER_DISABLED: Self = Self(32768u32);
24764    ///Bit 16.
24765    pub const DEBLOCKING_FILTER_ENABLED: Self = Self(65536u32);
24766    ///Bit 17.
24767    pub const DEBLOCKING_FILTER_PARTIAL: Self = Self(131072u32);
24768    ///Bit 19.
24769    pub const SLICE_QP_DELTA: Self = Self(524288u32);
24770    ///Bit 20.
24771    pub const DIFFERENT_SLICE_QP_DELTA: Self = Self(1048576u32);
24772}
24773impl core::ops::BitOr for VideoEncodeH264StdFlagBitsKHR {
24774    type Output = Self;
24775    #[inline]
24776    fn bitor(self, rhs: Self) -> Self {
24777        Self(self.0 | rhs.0)
24778    }
24779}
24780impl core::ops::BitOrAssign for VideoEncodeH264StdFlagBitsKHR {
24781    #[inline]
24782    fn bitor_assign(&mut self, rhs: Self) {
24783        self.0 |= rhs.0;
24784    }
24785}
24786impl core::ops::BitAnd for VideoEncodeH264StdFlagBitsKHR {
24787    type Output = Self;
24788    #[inline]
24789    fn bitand(self, rhs: Self) -> Self {
24790        Self(self.0 & rhs.0)
24791    }
24792}
24793impl core::ops::BitAndAssign for VideoEncodeH264StdFlagBitsKHR {
24794    #[inline]
24795    fn bitand_assign(&mut self, rhs: Self) {
24796        self.0 &= rhs.0;
24797    }
24798}
24799impl core::ops::BitXor for VideoEncodeH264StdFlagBitsKHR {
24800    type Output = Self;
24801    #[inline]
24802    fn bitxor(self, rhs: Self) -> Self {
24803        Self(self.0 ^ rhs.0)
24804    }
24805}
24806impl core::ops::BitXorAssign for VideoEncodeH264StdFlagBitsKHR {
24807    #[inline]
24808    fn bitxor_assign(&mut self, rhs: Self) {
24809        self.0 ^= rhs.0;
24810    }
24811}
24812impl core::ops::Not for VideoEncodeH264StdFlagBitsKHR {
24813    type Output = Self;
24814    #[inline]
24815    fn not(self) -> Self {
24816        Self(!self.0)
24817    }
24818}
24819impl core::fmt::Debug for VideoEncodeH264StdFlagBitsKHR {
24820    #[allow(unused_mut, unused_variables)]
24821    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24822        let mut first = true;
24823        let mut remaining = self.0;
24824        if remaining & Self::SEPARATE_COLOR_PLANE_FLAG_SET.0 != 0 {
24825            if !first {
24826                f.write_str(" | ")?;
24827            }
24828            f.write_str("SEPARATE_COLOR_PLANE_FLAG_SET")?;
24829            remaining &= !Self::SEPARATE_COLOR_PLANE_FLAG_SET.0;
24830            first = false;
24831        }
24832        if remaining & Self::QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET.0 != 0 {
24833            if !first {
24834                f.write_str(" | ")?;
24835            }
24836            f.write_str("QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET")?;
24837            remaining &= !Self::QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET.0;
24838            first = false;
24839        }
24840        if remaining & Self::SCALING_MATRIX_PRESENT_FLAG_SET.0 != 0 {
24841            if !first {
24842                f.write_str(" | ")?;
24843            }
24844            f.write_str("SCALING_MATRIX_PRESENT_FLAG_SET")?;
24845            remaining &= !Self::SCALING_MATRIX_PRESENT_FLAG_SET.0;
24846            first = false;
24847        }
24848        if remaining & Self::CHROMA_QP_INDEX_OFFSET.0 != 0 {
24849            if !first {
24850                f.write_str(" | ")?;
24851            }
24852            f.write_str("CHROMA_QP_INDEX_OFFSET")?;
24853            remaining &= !Self::CHROMA_QP_INDEX_OFFSET.0;
24854            first = false;
24855        }
24856        if remaining & Self::SECOND_CHROMA_QP_INDEX_OFFSET.0 != 0 {
24857            if !first {
24858                f.write_str(" | ")?;
24859            }
24860            f.write_str("SECOND_CHROMA_QP_INDEX_OFFSET")?;
24861            remaining &= !Self::SECOND_CHROMA_QP_INDEX_OFFSET.0;
24862            first = false;
24863        }
24864        if remaining & Self::PIC_INIT_QP_MINUS26.0 != 0 {
24865            if !first {
24866                f.write_str(" | ")?;
24867            }
24868            f.write_str("PIC_INIT_QP_MINUS26")?;
24869            remaining &= !Self::PIC_INIT_QP_MINUS26.0;
24870            first = false;
24871        }
24872        if remaining & Self::WEIGHTED_PRED_FLAG_SET.0 != 0 {
24873            if !first {
24874                f.write_str(" | ")?;
24875            }
24876            f.write_str("WEIGHTED_PRED_FLAG_SET")?;
24877            remaining &= !Self::WEIGHTED_PRED_FLAG_SET.0;
24878            first = false;
24879        }
24880        if remaining & Self::WEIGHTED_BIPRED_IDC_EXPLICIT.0 != 0 {
24881            if !first {
24882                f.write_str(" | ")?;
24883            }
24884            f.write_str("WEIGHTED_BIPRED_IDC_EXPLICIT")?;
24885            remaining &= !Self::WEIGHTED_BIPRED_IDC_EXPLICIT.0;
24886            first = false;
24887        }
24888        if remaining & Self::WEIGHTED_BIPRED_IDC_IMPLICIT.0 != 0 {
24889            if !first {
24890                f.write_str(" | ")?;
24891            }
24892            f.write_str("WEIGHTED_BIPRED_IDC_IMPLICIT")?;
24893            remaining &= !Self::WEIGHTED_BIPRED_IDC_IMPLICIT.0;
24894            first = false;
24895        }
24896        if remaining & Self::TRANSFORM_8X8_MODE_FLAG_SET.0 != 0 {
24897            if !first {
24898                f.write_str(" | ")?;
24899            }
24900            f.write_str("TRANSFORM_8X8_MODE_FLAG_SET")?;
24901            remaining &= !Self::TRANSFORM_8X8_MODE_FLAG_SET.0;
24902            first = false;
24903        }
24904        if remaining & Self::DIRECT_SPATIAL_MV_PRED_FLAG_UNSET.0 != 0 {
24905            if !first {
24906                f.write_str(" | ")?;
24907            }
24908            f.write_str("DIRECT_SPATIAL_MV_PRED_FLAG_UNSET")?;
24909            remaining &= !Self::DIRECT_SPATIAL_MV_PRED_FLAG_UNSET.0;
24910            first = false;
24911        }
24912        if remaining & Self::ENTROPY_CODING_MODE_FLAG_UNSET.0 != 0 {
24913            if !first {
24914                f.write_str(" | ")?;
24915            }
24916            f.write_str("ENTROPY_CODING_MODE_FLAG_UNSET")?;
24917            remaining &= !Self::ENTROPY_CODING_MODE_FLAG_UNSET.0;
24918            first = false;
24919        }
24920        if remaining & Self::ENTROPY_CODING_MODE_FLAG_SET.0 != 0 {
24921            if !first {
24922                f.write_str(" | ")?;
24923            }
24924            f.write_str("ENTROPY_CODING_MODE_FLAG_SET")?;
24925            remaining &= !Self::ENTROPY_CODING_MODE_FLAG_SET.0;
24926            first = false;
24927        }
24928        if remaining & Self::DIRECT_8X8_INFERENCE_FLAG_UNSET.0 != 0 {
24929            if !first {
24930                f.write_str(" | ")?;
24931            }
24932            f.write_str("DIRECT_8X8_INFERENCE_FLAG_UNSET")?;
24933            remaining &= !Self::DIRECT_8X8_INFERENCE_FLAG_UNSET.0;
24934            first = false;
24935        }
24936        if remaining & Self::CONSTRAINED_INTRA_PRED_FLAG_SET.0 != 0 {
24937            if !first {
24938                f.write_str(" | ")?;
24939            }
24940            f.write_str("CONSTRAINED_INTRA_PRED_FLAG_SET")?;
24941            remaining &= !Self::CONSTRAINED_INTRA_PRED_FLAG_SET.0;
24942            first = false;
24943        }
24944        if remaining & Self::DEBLOCKING_FILTER_DISABLED.0 != 0 {
24945            if !first {
24946                f.write_str(" | ")?;
24947            }
24948            f.write_str("DEBLOCKING_FILTER_DISABLED")?;
24949            remaining &= !Self::DEBLOCKING_FILTER_DISABLED.0;
24950            first = false;
24951        }
24952        if remaining & Self::DEBLOCKING_FILTER_ENABLED.0 != 0 {
24953            if !first {
24954                f.write_str(" | ")?;
24955            }
24956            f.write_str("DEBLOCKING_FILTER_ENABLED")?;
24957            remaining &= !Self::DEBLOCKING_FILTER_ENABLED.0;
24958            first = false;
24959        }
24960        if remaining & Self::DEBLOCKING_FILTER_PARTIAL.0 != 0 {
24961            if !first {
24962                f.write_str(" | ")?;
24963            }
24964            f.write_str("DEBLOCKING_FILTER_PARTIAL")?;
24965            remaining &= !Self::DEBLOCKING_FILTER_PARTIAL.0;
24966            first = false;
24967        }
24968        if remaining & Self::SLICE_QP_DELTA.0 != 0 {
24969            if !first {
24970                f.write_str(" | ")?;
24971            }
24972            f.write_str("SLICE_QP_DELTA")?;
24973            remaining &= !Self::SLICE_QP_DELTA.0;
24974            first = false;
24975        }
24976        if remaining & Self::DIFFERENT_SLICE_QP_DELTA.0 != 0 {
24977            if !first {
24978                f.write_str(" | ")?;
24979            }
24980            f.write_str("DIFFERENT_SLICE_QP_DELTA")?;
24981            remaining &= !Self::DIFFERENT_SLICE_QP_DELTA.0;
24982            first = false;
24983        }
24984        if remaining != 0u32 {
24985            if !first {
24986                f.write_str(" | ")?;
24987            }
24988            write!(f, "{:#x}", remaining)?;
24989        } else if first {
24990            f.write_str("(empty)")?;
24991        }
24992        Ok(())
24993    }
24994}
24995///[`VkVideoEncodeH265CapabilityFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilityFlagBitsKHR.html)
24996#[repr(transparent)]
24997#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
24998#[doc(alias = "VkVideoEncodeH265CapabilityFlagBitsKHR")]
24999pub struct VideoEncodeH265CapabilityFlagBitsKHR(u32);
25000impl VideoEncodeH265CapabilityFlagBitsKHR {
25001    #[inline]
25002    pub const fn empty() -> Self {
25003        Self(0u32)
25004    }
25005    #[inline]
25006    pub const fn from_raw(value: u32) -> Self {
25007        Self(value)
25008    }
25009    #[inline]
25010    pub const fn as_raw(self) -> u32 {
25011        self.0
25012    }
25013    #[inline]
25014    pub const fn is_empty(self) -> bool {
25015        self.0 == 0u32
25016    }
25017    #[inline]
25018    pub const fn contains(self, other: Self) -> bool {
25019        (self.0 & other.0) == other.0
25020    }
25021    #[inline]
25022    pub const fn all() -> Self {
25023        Self(4095u32)
25024    }
25025    ///Bit 0.
25026    pub const HRD_COMPLIANCE: Self = Self(1u32);
25027    ///Bit 1.
25028    pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = Self(2u32);
25029    ///Bit 2.
25030    pub const ROW_UNALIGNED_SLICE_SEGMENT: Self = Self(4u32);
25031    ///Bit 3.
25032    pub const DIFFERENT_SLICE_SEGMENT_TYPE: Self = Self(8u32);
25033    ///Bit 4.
25034    pub const B_FRAME_IN_L0_LIST: Self = Self(16u32);
25035    ///Bit 5.
25036    pub const B_FRAME_IN_L1_LIST: Self = Self(32u32);
25037    ///Bit 6.
25038    pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = Self(64u32);
25039    ///Bit 7.
25040    pub const PER_SLICE_SEGMENT_CONSTANT_QP: Self = Self(128u32);
25041    ///Bit 8.
25042    pub const MULTIPLE_TILES_PER_SLICE_SEGMENT: Self = Self(256u32);
25043    ///Bit 9.
25044    pub const MULTIPLE_SLICE_SEGMENTS_PER_TILE: Self = Self(512u32);
25045    ///Bit 11.
25046    pub const B_PICTURE_INTRA_REFRESH: Self = Self(2048u32);
25047    ///Bit 10.
25048    pub const CU_QP_DIFF_WRAPAROUND: Self = Self(1024u32);
25049}
25050impl core::ops::BitOr for VideoEncodeH265CapabilityFlagBitsKHR {
25051    type Output = Self;
25052    #[inline]
25053    fn bitor(self, rhs: Self) -> Self {
25054        Self(self.0 | rhs.0)
25055    }
25056}
25057impl core::ops::BitOrAssign for VideoEncodeH265CapabilityFlagBitsKHR {
25058    #[inline]
25059    fn bitor_assign(&mut self, rhs: Self) {
25060        self.0 |= rhs.0;
25061    }
25062}
25063impl core::ops::BitAnd for VideoEncodeH265CapabilityFlagBitsKHR {
25064    type Output = Self;
25065    #[inline]
25066    fn bitand(self, rhs: Self) -> Self {
25067        Self(self.0 & rhs.0)
25068    }
25069}
25070impl core::ops::BitAndAssign for VideoEncodeH265CapabilityFlagBitsKHR {
25071    #[inline]
25072    fn bitand_assign(&mut self, rhs: Self) {
25073        self.0 &= rhs.0;
25074    }
25075}
25076impl core::ops::BitXor for VideoEncodeH265CapabilityFlagBitsKHR {
25077    type Output = Self;
25078    #[inline]
25079    fn bitxor(self, rhs: Self) -> Self {
25080        Self(self.0 ^ rhs.0)
25081    }
25082}
25083impl core::ops::BitXorAssign for VideoEncodeH265CapabilityFlagBitsKHR {
25084    #[inline]
25085    fn bitxor_assign(&mut self, rhs: Self) {
25086        self.0 ^= rhs.0;
25087    }
25088}
25089impl core::ops::Not for VideoEncodeH265CapabilityFlagBitsKHR {
25090    type Output = Self;
25091    #[inline]
25092    fn not(self) -> Self {
25093        Self(!self.0)
25094    }
25095}
25096impl core::fmt::Debug for VideoEncodeH265CapabilityFlagBitsKHR {
25097    #[allow(unused_mut, unused_variables)]
25098    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25099        let mut first = true;
25100        let mut remaining = self.0;
25101        if remaining & Self::HRD_COMPLIANCE.0 != 0 {
25102            if !first {
25103                f.write_str(" | ")?;
25104            }
25105            f.write_str("HRD_COMPLIANCE")?;
25106            remaining &= !Self::HRD_COMPLIANCE.0;
25107            first = false;
25108        }
25109        if remaining & Self::PREDICTION_WEIGHT_TABLE_GENERATED.0 != 0 {
25110            if !first {
25111                f.write_str(" | ")?;
25112            }
25113            f.write_str("PREDICTION_WEIGHT_TABLE_GENERATED")?;
25114            remaining &= !Self::PREDICTION_WEIGHT_TABLE_GENERATED.0;
25115            first = false;
25116        }
25117        if remaining & Self::ROW_UNALIGNED_SLICE_SEGMENT.0 != 0 {
25118            if !first {
25119                f.write_str(" | ")?;
25120            }
25121            f.write_str("ROW_UNALIGNED_SLICE_SEGMENT")?;
25122            remaining &= !Self::ROW_UNALIGNED_SLICE_SEGMENT.0;
25123            first = false;
25124        }
25125        if remaining & Self::DIFFERENT_SLICE_SEGMENT_TYPE.0 != 0 {
25126            if !first {
25127                f.write_str(" | ")?;
25128            }
25129            f.write_str("DIFFERENT_SLICE_SEGMENT_TYPE")?;
25130            remaining &= !Self::DIFFERENT_SLICE_SEGMENT_TYPE.0;
25131            first = false;
25132        }
25133        if remaining & Self::B_FRAME_IN_L0_LIST.0 != 0 {
25134            if !first {
25135                f.write_str(" | ")?;
25136            }
25137            f.write_str("B_FRAME_IN_L0_LIST")?;
25138            remaining &= !Self::B_FRAME_IN_L0_LIST.0;
25139            first = false;
25140        }
25141        if remaining & Self::B_FRAME_IN_L1_LIST.0 != 0 {
25142            if !first {
25143                f.write_str(" | ")?;
25144            }
25145            f.write_str("B_FRAME_IN_L1_LIST")?;
25146            remaining &= !Self::B_FRAME_IN_L1_LIST.0;
25147            first = false;
25148        }
25149        if remaining & Self::PER_PICTURE_TYPE_MIN_MAX_QP.0 != 0 {
25150            if !first {
25151                f.write_str(" | ")?;
25152            }
25153            f.write_str("PER_PICTURE_TYPE_MIN_MAX_QP")?;
25154            remaining &= !Self::PER_PICTURE_TYPE_MIN_MAX_QP.0;
25155            first = false;
25156        }
25157        if remaining & Self::PER_SLICE_SEGMENT_CONSTANT_QP.0 != 0 {
25158            if !first {
25159                f.write_str(" | ")?;
25160            }
25161            f.write_str("PER_SLICE_SEGMENT_CONSTANT_QP")?;
25162            remaining &= !Self::PER_SLICE_SEGMENT_CONSTANT_QP.0;
25163            first = false;
25164        }
25165        if remaining & Self::MULTIPLE_TILES_PER_SLICE_SEGMENT.0 != 0 {
25166            if !first {
25167                f.write_str(" | ")?;
25168            }
25169            f.write_str("MULTIPLE_TILES_PER_SLICE_SEGMENT")?;
25170            remaining &= !Self::MULTIPLE_TILES_PER_SLICE_SEGMENT.0;
25171            first = false;
25172        }
25173        if remaining & Self::MULTIPLE_SLICE_SEGMENTS_PER_TILE.0 != 0 {
25174            if !first {
25175                f.write_str(" | ")?;
25176            }
25177            f.write_str("MULTIPLE_SLICE_SEGMENTS_PER_TILE")?;
25178            remaining &= !Self::MULTIPLE_SLICE_SEGMENTS_PER_TILE.0;
25179            first = false;
25180        }
25181        if remaining & Self::B_PICTURE_INTRA_REFRESH.0 != 0 {
25182            if !first {
25183                f.write_str(" | ")?;
25184            }
25185            f.write_str("B_PICTURE_INTRA_REFRESH")?;
25186            remaining &= !Self::B_PICTURE_INTRA_REFRESH.0;
25187            first = false;
25188        }
25189        if remaining & Self::CU_QP_DIFF_WRAPAROUND.0 != 0 {
25190            if !first {
25191                f.write_str(" | ")?;
25192            }
25193            f.write_str("CU_QP_DIFF_WRAPAROUND")?;
25194            remaining &= !Self::CU_QP_DIFF_WRAPAROUND.0;
25195            first = false;
25196        }
25197        if remaining != 0u32 {
25198            if !first {
25199                f.write_str(" | ")?;
25200            }
25201            write!(f, "{:#x}", remaining)?;
25202        } else if first {
25203            f.write_str("(empty)")?;
25204        }
25205        Ok(())
25206    }
25207}
25208///[`VkVideoEncodeH265CtbSizeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CtbSizeFlagBitsKHR.html)
25209#[repr(transparent)]
25210#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
25211#[doc(alias = "VkVideoEncodeH265CtbSizeFlagBitsKHR")]
25212pub struct VideoEncodeH265CtbSizeFlagBitsKHR(u32);
25213impl VideoEncodeH265CtbSizeFlagBitsKHR {
25214    #[inline]
25215    pub const fn empty() -> Self {
25216        Self(0u32)
25217    }
25218    #[inline]
25219    pub const fn from_raw(value: u32) -> Self {
25220        Self(value)
25221    }
25222    #[inline]
25223    pub const fn as_raw(self) -> u32 {
25224        self.0
25225    }
25226    #[inline]
25227    pub const fn is_empty(self) -> bool {
25228        self.0 == 0u32
25229    }
25230    #[inline]
25231    pub const fn contains(self, other: Self) -> bool {
25232        (self.0 & other.0) == other.0
25233    }
25234    #[inline]
25235    pub const fn all() -> Self {
25236        Self(7u32)
25237    }
25238    ///Bit 0.
25239    pub const _16: Self = Self(1u32);
25240    ///Bit 1.
25241    pub const _32: Self = Self(2u32);
25242    ///Bit 2.
25243    pub const _64: Self = Self(4u32);
25244}
25245impl core::ops::BitOr for VideoEncodeH265CtbSizeFlagBitsKHR {
25246    type Output = Self;
25247    #[inline]
25248    fn bitor(self, rhs: Self) -> Self {
25249        Self(self.0 | rhs.0)
25250    }
25251}
25252impl core::ops::BitOrAssign for VideoEncodeH265CtbSizeFlagBitsKHR {
25253    #[inline]
25254    fn bitor_assign(&mut self, rhs: Self) {
25255        self.0 |= rhs.0;
25256    }
25257}
25258impl core::ops::BitAnd for VideoEncodeH265CtbSizeFlagBitsKHR {
25259    type Output = Self;
25260    #[inline]
25261    fn bitand(self, rhs: Self) -> Self {
25262        Self(self.0 & rhs.0)
25263    }
25264}
25265impl core::ops::BitAndAssign for VideoEncodeH265CtbSizeFlagBitsKHR {
25266    #[inline]
25267    fn bitand_assign(&mut self, rhs: Self) {
25268        self.0 &= rhs.0;
25269    }
25270}
25271impl core::ops::BitXor for VideoEncodeH265CtbSizeFlagBitsKHR {
25272    type Output = Self;
25273    #[inline]
25274    fn bitxor(self, rhs: Self) -> Self {
25275        Self(self.0 ^ rhs.0)
25276    }
25277}
25278impl core::ops::BitXorAssign for VideoEncodeH265CtbSizeFlagBitsKHR {
25279    #[inline]
25280    fn bitxor_assign(&mut self, rhs: Self) {
25281        self.0 ^= rhs.0;
25282    }
25283}
25284impl core::ops::Not for VideoEncodeH265CtbSizeFlagBitsKHR {
25285    type Output = Self;
25286    #[inline]
25287    fn not(self) -> Self {
25288        Self(!self.0)
25289    }
25290}
25291impl core::fmt::Debug for VideoEncodeH265CtbSizeFlagBitsKHR {
25292    #[allow(unused_mut, unused_variables)]
25293    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25294        let mut first = true;
25295        let mut remaining = self.0;
25296        if remaining & Self::_16.0 != 0 {
25297            if !first {
25298                f.write_str(" | ")?;
25299            }
25300            f.write_str("_16")?;
25301            remaining &= !Self::_16.0;
25302            first = false;
25303        }
25304        if remaining & Self::_32.0 != 0 {
25305            if !first {
25306                f.write_str(" | ")?;
25307            }
25308            f.write_str("_32")?;
25309            remaining &= !Self::_32.0;
25310            first = false;
25311        }
25312        if remaining & Self::_64.0 != 0 {
25313            if !first {
25314                f.write_str(" | ")?;
25315            }
25316            f.write_str("_64")?;
25317            remaining &= !Self::_64.0;
25318            first = false;
25319        }
25320        if remaining != 0u32 {
25321            if !first {
25322                f.write_str(" | ")?;
25323            }
25324            write!(f, "{:#x}", remaining)?;
25325        } else if first {
25326            f.write_str("(empty)")?;
25327        }
25328        Ok(())
25329    }
25330}
25331///[`VkVideoEncodeH265RateControlFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlFlagBitsKHR.html)
25332#[repr(transparent)]
25333#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
25334#[doc(alias = "VkVideoEncodeH265RateControlFlagBitsKHR")]
25335pub struct VideoEncodeH265RateControlFlagBitsKHR(u32);
25336impl VideoEncodeH265RateControlFlagBitsKHR {
25337    #[inline]
25338    pub const fn empty() -> Self {
25339        Self(0u32)
25340    }
25341    #[inline]
25342    pub const fn from_raw(value: u32) -> Self {
25343        Self(value)
25344    }
25345    #[inline]
25346    pub const fn as_raw(self) -> u32 {
25347        self.0
25348    }
25349    #[inline]
25350    pub const fn is_empty(self) -> bool {
25351        self.0 == 0u32
25352    }
25353    #[inline]
25354    pub const fn contains(self, other: Self) -> bool {
25355        (self.0 & other.0) == other.0
25356    }
25357    #[inline]
25358    pub const fn all() -> Self {
25359        Self(31u32)
25360    }
25361    ///Bit 0.
25362    pub const ATTEMPT_HRD_COMPLIANCE: Self = Self(1u32);
25363    ///Bit 1.
25364    pub const REGULAR_GOP: Self = Self(2u32);
25365    ///Bit 2.
25366    pub const REFERENCE_PATTERN_FLAT: Self = Self(4u32);
25367    ///Bit 3.
25368    pub const REFERENCE_PATTERN_DYADIC: Self = Self(8u32);
25369    ///Bit 4.
25370    pub const TEMPORAL_SUB_LAYER_PATTERN_DYADIC: Self = Self(16u32);
25371}
25372impl core::ops::BitOr for VideoEncodeH265RateControlFlagBitsKHR {
25373    type Output = Self;
25374    #[inline]
25375    fn bitor(self, rhs: Self) -> Self {
25376        Self(self.0 | rhs.0)
25377    }
25378}
25379impl core::ops::BitOrAssign for VideoEncodeH265RateControlFlagBitsKHR {
25380    #[inline]
25381    fn bitor_assign(&mut self, rhs: Self) {
25382        self.0 |= rhs.0;
25383    }
25384}
25385impl core::ops::BitAnd for VideoEncodeH265RateControlFlagBitsKHR {
25386    type Output = Self;
25387    #[inline]
25388    fn bitand(self, rhs: Self) -> Self {
25389        Self(self.0 & rhs.0)
25390    }
25391}
25392impl core::ops::BitAndAssign for VideoEncodeH265RateControlFlagBitsKHR {
25393    #[inline]
25394    fn bitand_assign(&mut self, rhs: Self) {
25395        self.0 &= rhs.0;
25396    }
25397}
25398impl core::ops::BitXor for VideoEncodeH265RateControlFlagBitsKHR {
25399    type Output = Self;
25400    #[inline]
25401    fn bitxor(self, rhs: Self) -> Self {
25402        Self(self.0 ^ rhs.0)
25403    }
25404}
25405impl core::ops::BitXorAssign for VideoEncodeH265RateControlFlagBitsKHR {
25406    #[inline]
25407    fn bitxor_assign(&mut self, rhs: Self) {
25408        self.0 ^= rhs.0;
25409    }
25410}
25411impl core::ops::Not for VideoEncodeH265RateControlFlagBitsKHR {
25412    type Output = Self;
25413    #[inline]
25414    fn not(self) -> Self {
25415        Self(!self.0)
25416    }
25417}
25418impl core::fmt::Debug for VideoEncodeH265RateControlFlagBitsKHR {
25419    #[allow(unused_mut, unused_variables)]
25420    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25421        let mut first = true;
25422        let mut remaining = self.0;
25423        if remaining & Self::ATTEMPT_HRD_COMPLIANCE.0 != 0 {
25424            if !first {
25425                f.write_str(" | ")?;
25426            }
25427            f.write_str("ATTEMPT_HRD_COMPLIANCE")?;
25428            remaining &= !Self::ATTEMPT_HRD_COMPLIANCE.0;
25429            first = false;
25430        }
25431        if remaining & Self::REGULAR_GOP.0 != 0 {
25432            if !first {
25433                f.write_str(" | ")?;
25434            }
25435            f.write_str("REGULAR_GOP")?;
25436            remaining &= !Self::REGULAR_GOP.0;
25437            first = false;
25438        }
25439        if remaining & Self::REFERENCE_PATTERN_FLAT.0 != 0 {
25440            if !first {
25441                f.write_str(" | ")?;
25442            }
25443            f.write_str("REFERENCE_PATTERN_FLAT")?;
25444            remaining &= !Self::REFERENCE_PATTERN_FLAT.0;
25445            first = false;
25446        }
25447        if remaining & Self::REFERENCE_PATTERN_DYADIC.0 != 0 {
25448            if !first {
25449                f.write_str(" | ")?;
25450            }
25451            f.write_str("REFERENCE_PATTERN_DYADIC")?;
25452            remaining &= !Self::REFERENCE_PATTERN_DYADIC.0;
25453            first = false;
25454        }
25455        if remaining & Self::TEMPORAL_SUB_LAYER_PATTERN_DYADIC.0 != 0 {
25456            if !first {
25457                f.write_str(" | ")?;
25458            }
25459            f.write_str("TEMPORAL_SUB_LAYER_PATTERN_DYADIC")?;
25460            remaining &= !Self::TEMPORAL_SUB_LAYER_PATTERN_DYADIC.0;
25461            first = false;
25462        }
25463        if remaining != 0u32 {
25464            if !first {
25465                f.write_str(" | ")?;
25466            }
25467            write!(f, "{:#x}", remaining)?;
25468        } else if first {
25469            f.write_str("(empty)")?;
25470        }
25471        Ok(())
25472    }
25473}
25474///[`VkVideoEncodeH265StdFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265StdFlagBitsKHR.html)
25475#[repr(transparent)]
25476#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
25477#[doc(alias = "VkVideoEncodeH265StdFlagBitsKHR")]
25478pub struct VideoEncodeH265StdFlagBitsKHR(u32);
25479impl VideoEncodeH265StdFlagBitsKHR {
25480    #[inline]
25481    pub const fn empty() -> Self {
25482        Self(0u32)
25483    }
25484    #[inline]
25485    pub const fn from_raw(value: u32) -> Self {
25486        Self(value)
25487    }
25488    #[inline]
25489    pub const fn as_raw(self) -> u32 {
25490        self.0
25491    }
25492    #[inline]
25493    pub const fn is_empty(self) -> bool {
25494        self.0 == 0u32
25495    }
25496    #[inline]
25497    pub const fn contains(self, other: Self) -> bool {
25498        (self.0 & other.0) == other.0
25499    }
25500    #[inline]
25501    pub const fn all() -> Self {
25502        Self(2097151u32)
25503    }
25504    ///Bit 0.
25505    pub const SEPARATE_COLOR_PLANE_FLAG_SET: Self = Self(1u32);
25506    ///Bit 1.
25507    pub const SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET: Self = Self(2u32);
25508    ///Bit 2.
25509    pub const SCALING_LIST_DATA_PRESENT_FLAG_SET: Self = Self(4u32);
25510    ///Bit 3.
25511    pub const PCM_ENABLED_FLAG_SET: Self = Self(8u32);
25512    ///Bit 4.
25513    pub const SPS_TEMPORAL_MVP_ENABLED_FLAG_SET: Self = Self(16u32);
25514    ///Bit 5.
25515    pub const INIT_QP_MINUS26: Self = Self(32u32);
25516    ///Bit 6.
25517    pub const WEIGHTED_PRED_FLAG_SET: Self = Self(64u32);
25518    ///Bit 7.
25519    pub const WEIGHTED_BIPRED_FLAG_SET: Self = Self(128u32);
25520    ///Bit 8.
25521    pub const LOG2_PARALLEL_MERGE_LEVEL_MINUS2: Self = Self(256u32);
25522    ///Bit 9.
25523    pub const SIGN_DATA_HIDING_ENABLED_FLAG_SET: Self = Self(512u32);
25524    ///Bit 10.
25525    pub const TRANSFORM_SKIP_ENABLED_FLAG_SET: Self = Self(1024u32);
25526    ///Bit 11.
25527    pub const TRANSFORM_SKIP_ENABLED_FLAG_UNSET: Self = Self(2048u32);
25528    ///Bit 12.
25529    pub const PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET: Self = Self(4096u32);
25530    ///Bit 13.
25531    pub const TRANSQUANT_BYPASS_ENABLED_FLAG_SET: Self = Self(8192u32);
25532    ///Bit 14.
25533    pub const CONSTRAINED_INTRA_PRED_FLAG_SET: Self = Self(16384u32);
25534    ///Bit 15.
25535    pub const ENTROPY_CODING_SYNC_ENABLED_FLAG_SET: Self = Self(32768u32);
25536    ///Bit 16.
25537    pub const DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET: Self = Self(65536u32);
25538    ///Bit 17.
25539    pub const DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET: Self = Self(131072u32);
25540    ///Bit 18.
25541    pub const DEPENDENT_SLICE_SEGMENT_FLAG_SET: Self = Self(262144u32);
25542    ///Bit 19.
25543    pub const SLICE_QP_DELTA: Self = Self(524288u32);
25544    ///Bit 20.
25545    pub const DIFFERENT_SLICE_QP_DELTA: Self = Self(1048576u32);
25546}
25547impl core::ops::BitOr for VideoEncodeH265StdFlagBitsKHR {
25548    type Output = Self;
25549    #[inline]
25550    fn bitor(self, rhs: Self) -> Self {
25551        Self(self.0 | rhs.0)
25552    }
25553}
25554impl core::ops::BitOrAssign for VideoEncodeH265StdFlagBitsKHR {
25555    #[inline]
25556    fn bitor_assign(&mut self, rhs: Self) {
25557        self.0 |= rhs.0;
25558    }
25559}
25560impl core::ops::BitAnd for VideoEncodeH265StdFlagBitsKHR {
25561    type Output = Self;
25562    #[inline]
25563    fn bitand(self, rhs: Self) -> Self {
25564        Self(self.0 & rhs.0)
25565    }
25566}
25567impl core::ops::BitAndAssign for VideoEncodeH265StdFlagBitsKHR {
25568    #[inline]
25569    fn bitand_assign(&mut self, rhs: Self) {
25570        self.0 &= rhs.0;
25571    }
25572}
25573impl core::ops::BitXor for VideoEncodeH265StdFlagBitsKHR {
25574    type Output = Self;
25575    #[inline]
25576    fn bitxor(self, rhs: Self) -> Self {
25577        Self(self.0 ^ rhs.0)
25578    }
25579}
25580impl core::ops::BitXorAssign for VideoEncodeH265StdFlagBitsKHR {
25581    #[inline]
25582    fn bitxor_assign(&mut self, rhs: Self) {
25583        self.0 ^= rhs.0;
25584    }
25585}
25586impl core::ops::Not for VideoEncodeH265StdFlagBitsKHR {
25587    type Output = Self;
25588    #[inline]
25589    fn not(self) -> Self {
25590        Self(!self.0)
25591    }
25592}
25593impl core::fmt::Debug for VideoEncodeH265StdFlagBitsKHR {
25594    #[allow(unused_mut, unused_variables)]
25595    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25596        let mut first = true;
25597        let mut remaining = self.0;
25598        if remaining & Self::SEPARATE_COLOR_PLANE_FLAG_SET.0 != 0 {
25599            if !first {
25600                f.write_str(" | ")?;
25601            }
25602            f.write_str("SEPARATE_COLOR_PLANE_FLAG_SET")?;
25603            remaining &= !Self::SEPARATE_COLOR_PLANE_FLAG_SET.0;
25604            first = false;
25605        }
25606        if remaining & Self::SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET.0 != 0 {
25607            if !first {
25608                f.write_str(" | ")?;
25609            }
25610            f.write_str("SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET")?;
25611            remaining &= !Self::SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET.0;
25612            first = false;
25613        }
25614        if remaining & Self::SCALING_LIST_DATA_PRESENT_FLAG_SET.0 != 0 {
25615            if !first {
25616                f.write_str(" | ")?;
25617            }
25618            f.write_str("SCALING_LIST_DATA_PRESENT_FLAG_SET")?;
25619            remaining &= !Self::SCALING_LIST_DATA_PRESENT_FLAG_SET.0;
25620            first = false;
25621        }
25622        if remaining & Self::PCM_ENABLED_FLAG_SET.0 != 0 {
25623            if !first {
25624                f.write_str(" | ")?;
25625            }
25626            f.write_str("PCM_ENABLED_FLAG_SET")?;
25627            remaining &= !Self::PCM_ENABLED_FLAG_SET.0;
25628            first = false;
25629        }
25630        if remaining & Self::SPS_TEMPORAL_MVP_ENABLED_FLAG_SET.0 != 0 {
25631            if !first {
25632                f.write_str(" | ")?;
25633            }
25634            f.write_str("SPS_TEMPORAL_MVP_ENABLED_FLAG_SET")?;
25635            remaining &= !Self::SPS_TEMPORAL_MVP_ENABLED_FLAG_SET.0;
25636            first = false;
25637        }
25638        if remaining & Self::INIT_QP_MINUS26.0 != 0 {
25639            if !first {
25640                f.write_str(" | ")?;
25641            }
25642            f.write_str("INIT_QP_MINUS26")?;
25643            remaining &= !Self::INIT_QP_MINUS26.0;
25644            first = false;
25645        }
25646        if remaining & Self::WEIGHTED_PRED_FLAG_SET.0 != 0 {
25647            if !first {
25648                f.write_str(" | ")?;
25649            }
25650            f.write_str("WEIGHTED_PRED_FLAG_SET")?;
25651            remaining &= !Self::WEIGHTED_PRED_FLAG_SET.0;
25652            first = false;
25653        }
25654        if remaining & Self::WEIGHTED_BIPRED_FLAG_SET.0 != 0 {
25655            if !first {
25656                f.write_str(" | ")?;
25657            }
25658            f.write_str("WEIGHTED_BIPRED_FLAG_SET")?;
25659            remaining &= !Self::WEIGHTED_BIPRED_FLAG_SET.0;
25660            first = false;
25661        }
25662        if remaining & Self::LOG2_PARALLEL_MERGE_LEVEL_MINUS2.0 != 0 {
25663            if !first {
25664                f.write_str(" | ")?;
25665            }
25666            f.write_str("LOG2_PARALLEL_MERGE_LEVEL_MINUS2")?;
25667            remaining &= !Self::LOG2_PARALLEL_MERGE_LEVEL_MINUS2.0;
25668            first = false;
25669        }
25670        if remaining & Self::SIGN_DATA_HIDING_ENABLED_FLAG_SET.0 != 0 {
25671            if !first {
25672                f.write_str(" | ")?;
25673            }
25674            f.write_str("SIGN_DATA_HIDING_ENABLED_FLAG_SET")?;
25675            remaining &= !Self::SIGN_DATA_HIDING_ENABLED_FLAG_SET.0;
25676            first = false;
25677        }
25678        if remaining & Self::TRANSFORM_SKIP_ENABLED_FLAG_SET.0 != 0 {
25679            if !first {
25680                f.write_str(" | ")?;
25681            }
25682            f.write_str("TRANSFORM_SKIP_ENABLED_FLAG_SET")?;
25683            remaining &= !Self::TRANSFORM_SKIP_ENABLED_FLAG_SET.0;
25684            first = false;
25685        }
25686        if remaining & Self::TRANSFORM_SKIP_ENABLED_FLAG_UNSET.0 != 0 {
25687            if !first {
25688                f.write_str(" | ")?;
25689            }
25690            f.write_str("TRANSFORM_SKIP_ENABLED_FLAG_UNSET")?;
25691            remaining &= !Self::TRANSFORM_SKIP_ENABLED_FLAG_UNSET.0;
25692            first = false;
25693        }
25694        if remaining & Self::PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET.0 != 0 {
25695            if !first {
25696                f.write_str(" | ")?;
25697            }
25698            f.write_str("PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET")?;
25699            remaining &= !Self::PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET.0;
25700            first = false;
25701        }
25702        if remaining & Self::TRANSQUANT_BYPASS_ENABLED_FLAG_SET.0 != 0 {
25703            if !first {
25704                f.write_str(" | ")?;
25705            }
25706            f.write_str("TRANSQUANT_BYPASS_ENABLED_FLAG_SET")?;
25707            remaining &= !Self::TRANSQUANT_BYPASS_ENABLED_FLAG_SET.0;
25708            first = false;
25709        }
25710        if remaining & Self::CONSTRAINED_INTRA_PRED_FLAG_SET.0 != 0 {
25711            if !first {
25712                f.write_str(" | ")?;
25713            }
25714            f.write_str("CONSTRAINED_INTRA_PRED_FLAG_SET")?;
25715            remaining &= !Self::CONSTRAINED_INTRA_PRED_FLAG_SET.0;
25716            first = false;
25717        }
25718        if remaining & Self::ENTROPY_CODING_SYNC_ENABLED_FLAG_SET.0 != 0 {
25719            if !first {
25720                f.write_str(" | ")?;
25721            }
25722            f.write_str("ENTROPY_CODING_SYNC_ENABLED_FLAG_SET")?;
25723            remaining &= !Self::ENTROPY_CODING_SYNC_ENABLED_FLAG_SET.0;
25724            first = false;
25725        }
25726        if remaining & Self::DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET.0 != 0 {
25727            if !first {
25728                f.write_str(" | ")?;
25729            }
25730            f.write_str("DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET")?;
25731            remaining &= !Self::DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET.0;
25732            first = false;
25733        }
25734        if remaining & Self::DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET.0 != 0 {
25735            if !first {
25736                f.write_str(" | ")?;
25737            }
25738            f.write_str("DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET")?;
25739            remaining &= !Self::DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET.0;
25740            first = false;
25741        }
25742        if remaining & Self::DEPENDENT_SLICE_SEGMENT_FLAG_SET.0 != 0 {
25743            if !first {
25744                f.write_str(" | ")?;
25745            }
25746            f.write_str("DEPENDENT_SLICE_SEGMENT_FLAG_SET")?;
25747            remaining &= !Self::DEPENDENT_SLICE_SEGMENT_FLAG_SET.0;
25748            first = false;
25749        }
25750        if remaining & Self::SLICE_QP_DELTA.0 != 0 {
25751            if !first {
25752                f.write_str(" | ")?;
25753            }
25754            f.write_str("SLICE_QP_DELTA")?;
25755            remaining &= !Self::SLICE_QP_DELTA.0;
25756            first = false;
25757        }
25758        if remaining & Self::DIFFERENT_SLICE_QP_DELTA.0 != 0 {
25759            if !first {
25760                f.write_str(" | ")?;
25761            }
25762            f.write_str("DIFFERENT_SLICE_QP_DELTA")?;
25763            remaining &= !Self::DIFFERENT_SLICE_QP_DELTA.0;
25764            first = false;
25765        }
25766        if remaining != 0u32 {
25767            if !first {
25768                f.write_str(" | ")?;
25769            }
25770            write!(f, "{:#x}", remaining)?;
25771        } else if first {
25772            f.write_str("(empty)")?;
25773        }
25774        Ok(())
25775    }
25776}
25777///[`VkVideoEncodeH265TransformBlockSizeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265TransformBlockSizeFlagBitsKHR.html)
25778#[repr(transparent)]
25779#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
25780#[doc(alias = "VkVideoEncodeH265TransformBlockSizeFlagBitsKHR")]
25781pub struct VideoEncodeH265TransformBlockSizeFlagBitsKHR(u32);
25782impl VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25783    #[inline]
25784    pub const fn empty() -> Self {
25785        Self(0u32)
25786    }
25787    #[inline]
25788    pub const fn from_raw(value: u32) -> Self {
25789        Self(value)
25790    }
25791    #[inline]
25792    pub const fn as_raw(self) -> u32 {
25793        self.0
25794    }
25795    #[inline]
25796    pub const fn is_empty(self) -> bool {
25797        self.0 == 0u32
25798    }
25799    #[inline]
25800    pub const fn contains(self, other: Self) -> bool {
25801        (self.0 & other.0) == other.0
25802    }
25803    #[inline]
25804    pub const fn all() -> Self {
25805        Self(15u32)
25806    }
25807    ///Bit 0.
25808    pub const _4: Self = Self(1u32);
25809    ///Bit 1.
25810    pub const _8: Self = Self(2u32);
25811    ///Bit 2.
25812    pub const _16: Self = Self(4u32);
25813    ///Bit 3.
25814    pub const _32: Self = Self(8u32);
25815}
25816impl core::ops::BitOr for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25817    type Output = Self;
25818    #[inline]
25819    fn bitor(self, rhs: Self) -> Self {
25820        Self(self.0 | rhs.0)
25821    }
25822}
25823impl core::ops::BitOrAssign for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25824    #[inline]
25825    fn bitor_assign(&mut self, rhs: Self) {
25826        self.0 |= rhs.0;
25827    }
25828}
25829impl core::ops::BitAnd for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25830    type Output = Self;
25831    #[inline]
25832    fn bitand(self, rhs: Self) -> Self {
25833        Self(self.0 & rhs.0)
25834    }
25835}
25836impl core::ops::BitAndAssign for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25837    #[inline]
25838    fn bitand_assign(&mut self, rhs: Self) {
25839        self.0 &= rhs.0;
25840    }
25841}
25842impl core::ops::BitXor for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25843    type Output = Self;
25844    #[inline]
25845    fn bitxor(self, rhs: Self) -> Self {
25846        Self(self.0 ^ rhs.0)
25847    }
25848}
25849impl core::ops::BitXorAssign for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25850    #[inline]
25851    fn bitxor_assign(&mut self, rhs: Self) {
25852        self.0 ^= rhs.0;
25853    }
25854}
25855impl core::ops::Not for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25856    type Output = Self;
25857    #[inline]
25858    fn not(self) -> Self {
25859        Self(!self.0)
25860    }
25861}
25862impl core::fmt::Debug for VideoEncodeH265TransformBlockSizeFlagBitsKHR {
25863    #[allow(unused_mut, unused_variables)]
25864    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25865        let mut first = true;
25866        let mut remaining = self.0;
25867        if remaining & Self::_4.0 != 0 {
25868            if !first {
25869                f.write_str(" | ")?;
25870            }
25871            f.write_str("_4")?;
25872            remaining &= !Self::_4.0;
25873            first = false;
25874        }
25875        if remaining & Self::_8.0 != 0 {
25876            if !first {
25877                f.write_str(" | ")?;
25878            }
25879            f.write_str("_8")?;
25880            remaining &= !Self::_8.0;
25881            first = false;
25882        }
25883        if remaining & Self::_16.0 != 0 {
25884            if !first {
25885                f.write_str(" | ")?;
25886            }
25887            f.write_str("_16")?;
25888            remaining &= !Self::_16.0;
25889            first = false;
25890        }
25891        if remaining & Self::_32.0 != 0 {
25892            if !first {
25893                f.write_str(" | ")?;
25894            }
25895            f.write_str("_32")?;
25896            remaining &= !Self::_32.0;
25897            first = false;
25898        }
25899        if remaining != 0u32 {
25900            if !first {
25901                f.write_str(" | ")?;
25902            }
25903            write!(f, "{:#x}", remaining)?;
25904        } else if first {
25905            f.write_str("(empty)")?;
25906        }
25907        Ok(())
25908    }
25909}
25910///[`VkVideoEncodeIntraRefreshModeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshModeFlagBitsKHR.html)
25911#[repr(transparent)]
25912#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
25913#[doc(alias = "VkVideoEncodeIntraRefreshModeFlagBitsKHR")]
25914pub struct VideoEncodeIntraRefreshModeFlagBitsKHR(u32);
25915impl VideoEncodeIntraRefreshModeFlagBitsKHR {
25916    #[inline]
25917    pub const fn empty() -> Self {
25918        Self(0u32)
25919    }
25920    #[inline]
25921    pub const fn from_raw(value: u32) -> Self {
25922        Self(value)
25923    }
25924    #[inline]
25925    pub const fn as_raw(self) -> u32 {
25926        self.0
25927    }
25928    #[inline]
25929    pub const fn is_empty(self) -> bool {
25930        self.0 == 0u32
25931    }
25932    #[inline]
25933    pub const fn contains(self, other: Self) -> bool {
25934        (self.0 & other.0) == other.0
25935    }
25936    #[inline]
25937    pub const fn all() -> Self {
25938        Self(15u32)
25939    }
25940    pub const NONE: Self = Self(0u32);
25941    ///Bit 0.
25942    pub const PER_PICTURE_PARTITION: Self = Self(1u32);
25943    ///Bit 1.
25944    pub const BLOCK_BASED: Self = Self(2u32);
25945    ///Bit 2.
25946    pub const BLOCK_ROW_BASED: Self = Self(4u32);
25947    ///Bit 3.
25948    pub const BLOCK_COLUMN_BASED: Self = Self(8u32);
25949}
25950impl core::ops::BitOr for VideoEncodeIntraRefreshModeFlagBitsKHR {
25951    type Output = Self;
25952    #[inline]
25953    fn bitor(self, rhs: Self) -> Self {
25954        Self(self.0 | rhs.0)
25955    }
25956}
25957impl core::ops::BitOrAssign for VideoEncodeIntraRefreshModeFlagBitsKHR {
25958    #[inline]
25959    fn bitor_assign(&mut self, rhs: Self) {
25960        self.0 |= rhs.0;
25961    }
25962}
25963impl core::ops::BitAnd for VideoEncodeIntraRefreshModeFlagBitsKHR {
25964    type Output = Self;
25965    #[inline]
25966    fn bitand(self, rhs: Self) -> Self {
25967        Self(self.0 & rhs.0)
25968    }
25969}
25970impl core::ops::BitAndAssign for VideoEncodeIntraRefreshModeFlagBitsKHR {
25971    #[inline]
25972    fn bitand_assign(&mut self, rhs: Self) {
25973        self.0 &= rhs.0;
25974    }
25975}
25976impl core::ops::BitXor for VideoEncodeIntraRefreshModeFlagBitsKHR {
25977    type Output = Self;
25978    #[inline]
25979    fn bitxor(self, rhs: Self) -> Self {
25980        Self(self.0 ^ rhs.0)
25981    }
25982}
25983impl core::ops::BitXorAssign for VideoEncodeIntraRefreshModeFlagBitsKHR {
25984    #[inline]
25985    fn bitxor_assign(&mut self, rhs: Self) {
25986        self.0 ^= rhs.0;
25987    }
25988}
25989impl core::ops::Not for VideoEncodeIntraRefreshModeFlagBitsKHR {
25990    type Output = Self;
25991    #[inline]
25992    fn not(self) -> Self {
25993        Self(!self.0)
25994    }
25995}
25996impl core::fmt::Debug for VideoEncodeIntraRefreshModeFlagBitsKHR {
25997    #[allow(unused_mut, unused_variables)]
25998    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25999        let mut first = true;
26000        let mut remaining = self.0;
26001        if remaining & Self::PER_PICTURE_PARTITION.0 != 0 {
26002            if !first {
26003                f.write_str(" | ")?;
26004            }
26005            f.write_str("PER_PICTURE_PARTITION")?;
26006            remaining &= !Self::PER_PICTURE_PARTITION.0;
26007            first = false;
26008        }
26009        if remaining & Self::BLOCK_BASED.0 != 0 {
26010            if !first {
26011                f.write_str(" | ")?;
26012            }
26013            f.write_str("BLOCK_BASED")?;
26014            remaining &= !Self::BLOCK_BASED.0;
26015            first = false;
26016        }
26017        if remaining & Self::BLOCK_ROW_BASED.0 != 0 {
26018            if !first {
26019                f.write_str(" | ")?;
26020            }
26021            f.write_str("BLOCK_ROW_BASED")?;
26022            remaining &= !Self::BLOCK_ROW_BASED.0;
26023            first = false;
26024        }
26025        if remaining & Self::BLOCK_COLUMN_BASED.0 != 0 {
26026            if !first {
26027                f.write_str(" | ")?;
26028            }
26029            f.write_str("BLOCK_COLUMN_BASED")?;
26030            remaining &= !Self::BLOCK_COLUMN_BASED.0;
26031            first = false;
26032        }
26033        if remaining != 0u32 {
26034            if !first {
26035                f.write_str(" | ")?;
26036            }
26037            write!(f, "{:#x}", remaining)?;
26038        } else if first {
26039            f.write_str("(empty)")?;
26040        }
26041        Ok(())
26042    }
26043}
26044///[`VkVideoEncodeRateControlModeFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRateControlModeFlagBitsKHR.html)
26045#[repr(transparent)]
26046#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26047#[doc(alias = "VkVideoEncodeRateControlModeFlagBitsKHR")]
26048pub struct VideoEncodeRateControlModeFlagBitsKHR(u32);
26049impl VideoEncodeRateControlModeFlagBitsKHR {
26050    #[inline]
26051    pub const fn empty() -> Self {
26052        Self(0u32)
26053    }
26054    #[inline]
26055    pub const fn from_raw(value: u32) -> Self {
26056        Self(value)
26057    }
26058    #[inline]
26059    pub const fn as_raw(self) -> u32 {
26060        self.0
26061    }
26062    #[inline]
26063    pub const fn is_empty(self) -> bool {
26064        self.0 == 0u32
26065    }
26066    #[inline]
26067    pub const fn contains(self, other: Self) -> bool {
26068        (self.0 & other.0) == other.0
26069    }
26070    #[inline]
26071    pub const fn all() -> Self {
26072        Self(7u32)
26073    }
26074    pub const DEFAULT: Self = Self(0u32);
26075    ///Bit 0.
26076    pub const DISABLED: Self = Self(1u32);
26077    ///Bit 1.
26078    pub const CBR: Self = Self(2u32);
26079    ///Bit 2.
26080    pub const VBR: Self = Self(4u32);
26081}
26082impl core::ops::BitOr for VideoEncodeRateControlModeFlagBitsKHR {
26083    type Output = Self;
26084    #[inline]
26085    fn bitor(self, rhs: Self) -> Self {
26086        Self(self.0 | rhs.0)
26087    }
26088}
26089impl core::ops::BitOrAssign for VideoEncodeRateControlModeFlagBitsKHR {
26090    #[inline]
26091    fn bitor_assign(&mut self, rhs: Self) {
26092        self.0 |= rhs.0;
26093    }
26094}
26095impl core::ops::BitAnd for VideoEncodeRateControlModeFlagBitsKHR {
26096    type Output = Self;
26097    #[inline]
26098    fn bitand(self, rhs: Self) -> Self {
26099        Self(self.0 & rhs.0)
26100    }
26101}
26102impl core::ops::BitAndAssign for VideoEncodeRateControlModeFlagBitsKHR {
26103    #[inline]
26104    fn bitand_assign(&mut self, rhs: Self) {
26105        self.0 &= rhs.0;
26106    }
26107}
26108impl core::ops::BitXor for VideoEncodeRateControlModeFlagBitsKHR {
26109    type Output = Self;
26110    #[inline]
26111    fn bitxor(self, rhs: Self) -> Self {
26112        Self(self.0 ^ rhs.0)
26113    }
26114}
26115impl core::ops::BitXorAssign for VideoEncodeRateControlModeFlagBitsKHR {
26116    #[inline]
26117    fn bitxor_assign(&mut self, rhs: Self) {
26118        self.0 ^= rhs.0;
26119    }
26120}
26121impl core::ops::Not for VideoEncodeRateControlModeFlagBitsKHR {
26122    type Output = Self;
26123    #[inline]
26124    fn not(self) -> Self {
26125        Self(!self.0)
26126    }
26127}
26128impl core::fmt::Debug for VideoEncodeRateControlModeFlagBitsKHR {
26129    #[allow(unused_mut, unused_variables)]
26130    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26131        let mut first = true;
26132        let mut remaining = self.0;
26133        if remaining & Self::DISABLED.0 != 0 {
26134            if !first {
26135                f.write_str(" | ")?;
26136            }
26137            f.write_str("DISABLED")?;
26138            remaining &= !Self::DISABLED.0;
26139            first = false;
26140        }
26141        if remaining & Self::CBR.0 != 0 {
26142            if !first {
26143                f.write_str(" | ")?;
26144            }
26145            f.write_str("CBR")?;
26146            remaining &= !Self::CBR.0;
26147            first = false;
26148        }
26149        if remaining & Self::VBR.0 != 0 {
26150            if !first {
26151                f.write_str(" | ")?;
26152            }
26153            f.write_str("VBR")?;
26154            remaining &= !Self::VBR.0;
26155            first = false;
26156        }
26157        if remaining != 0u32 {
26158            if !first {
26159                f.write_str(" | ")?;
26160            }
26161            write!(f, "{:#x}", remaining)?;
26162        } else if first {
26163            f.write_str("(empty)")?;
26164        }
26165        Ok(())
26166    }
26167}
26168///[`VkVideoEncodeRgbChromaOffsetFlagBitsVALVE`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbChromaOffsetFlagBitsVALVE.html)
26169#[repr(transparent)]
26170#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26171#[doc(alias = "VkVideoEncodeRgbChromaOffsetFlagBitsVALVE")]
26172pub struct VideoEncodeRgbChromaOffsetFlagBitsVALVE(u32);
26173impl VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26174    #[inline]
26175    pub const fn empty() -> Self {
26176        Self(0u32)
26177    }
26178    #[inline]
26179    pub const fn from_raw(value: u32) -> Self {
26180        Self(value)
26181    }
26182    #[inline]
26183    pub const fn as_raw(self) -> u32 {
26184        self.0
26185    }
26186    #[inline]
26187    pub const fn is_empty(self) -> bool {
26188        self.0 == 0u32
26189    }
26190    #[inline]
26191    pub const fn contains(self, other: Self) -> bool {
26192        (self.0 & other.0) == other.0
26193    }
26194    #[inline]
26195    pub const fn all() -> Self {
26196        Self(3u32)
26197    }
26198    ///Bit 0.
26199    pub const COSITED_EVEN_BIT: Self = Self(1u32);
26200    ///Bit 1.
26201    pub const MIDPOINT_BIT: Self = Self(2u32);
26202}
26203impl core::ops::BitOr for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26204    type Output = Self;
26205    #[inline]
26206    fn bitor(self, rhs: Self) -> Self {
26207        Self(self.0 | rhs.0)
26208    }
26209}
26210impl core::ops::BitOrAssign for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26211    #[inline]
26212    fn bitor_assign(&mut self, rhs: Self) {
26213        self.0 |= rhs.0;
26214    }
26215}
26216impl core::ops::BitAnd for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26217    type Output = Self;
26218    #[inline]
26219    fn bitand(self, rhs: Self) -> Self {
26220        Self(self.0 & rhs.0)
26221    }
26222}
26223impl core::ops::BitAndAssign for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26224    #[inline]
26225    fn bitand_assign(&mut self, rhs: Self) {
26226        self.0 &= rhs.0;
26227    }
26228}
26229impl core::ops::BitXor for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26230    type Output = Self;
26231    #[inline]
26232    fn bitxor(self, rhs: Self) -> Self {
26233        Self(self.0 ^ rhs.0)
26234    }
26235}
26236impl core::ops::BitXorAssign for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26237    #[inline]
26238    fn bitxor_assign(&mut self, rhs: Self) {
26239        self.0 ^= rhs.0;
26240    }
26241}
26242impl core::ops::Not for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26243    type Output = Self;
26244    #[inline]
26245    fn not(self) -> Self {
26246        Self(!self.0)
26247    }
26248}
26249impl core::fmt::Debug for VideoEncodeRgbChromaOffsetFlagBitsVALVE {
26250    #[allow(unused_mut, unused_variables)]
26251    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26252        let mut first = true;
26253        let mut remaining = self.0;
26254        if remaining & Self::COSITED_EVEN_BIT.0 != 0 {
26255            if !first {
26256                f.write_str(" | ")?;
26257            }
26258            f.write_str("COSITED_EVEN_BIT")?;
26259            remaining &= !Self::COSITED_EVEN_BIT.0;
26260            first = false;
26261        }
26262        if remaining & Self::MIDPOINT_BIT.0 != 0 {
26263            if !first {
26264                f.write_str(" | ")?;
26265            }
26266            f.write_str("MIDPOINT_BIT")?;
26267            remaining &= !Self::MIDPOINT_BIT.0;
26268            first = false;
26269        }
26270        if remaining != 0u32 {
26271            if !first {
26272                f.write_str(" | ")?;
26273            }
26274            write!(f, "{:#x}", remaining)?;
26275        } else if first {
26276            f.write_str("(empty)")?;
26277        }
26278        Ok(())
26279    }
26280}
26281///[`VkVideoEncodeRgbModelConversionFlagBitsVALVE`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbModelConversionFlagBitsVALVE.html)
26282#[repr(transparent)]
26283#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26284#[doc(alias = "VkVideoEncodeRgbModelConversionFlagBitsVALVE")]
26285pub struct VideoEncodeRgbModelConversionFlagBitsVALVE(u32);
26286impl VideoEncodeRgbModelConversionFlagBitsVALVE {
26287    #[inline]
26288    pub const fn empty() -> Self {
26289        Self(0u32)
26290    }
26291    #[inline]
26292    pub const fn from_raw(value: u32) -> Self {
26293        Self(value)
26294    }
26295    #[inline]
26296    pub const fn as_raw(self) -> u32 {
26297        self.0
26298    }
26299    #[inline]
26300    pub const fn is_empty(self) -> bool {
26301        self.0 == 0u32
26302    }
26303    #[inline]
26304    pub const fn contains(self, other: Self) -> bool {
26305        (self.0 & other.0) == other.0
26306    }
26307    #[inline]
26308    pub const fn all() -> Self {
26309        Self(31u32)
26310    }
26311    ///Bit 0.
26312    pub const RGB_IDENTITY_BIT: Self = Self(1u32);
26313    ///Bit 1.
26314    pub const YCBCR_IDENTITY_BIT: Self = Self(2u32);
26315    ///Bit 2.
26316    pub const YCBCR_709_BIT: Self = Self(4u32);
26317    ///Bit 3.
26318    pub const YCBCR_601_BIT: Self = Self(8u32);
26319    ///Bit 4.
26320    pub const YCBCR_2020_BIT: Self = Self(16u32);
26321}
26322impl core::ops::BitOr for VideoEncodeRgbModelConversionFlagBitsVALVE {
26323    type Output = Self;
26324    #[inline]
26325    fn bitor(self, rhs: Self) -> Self {
26326        Self(self.0 | rhs.0)
26327    }
26328}
26329impl core::ops::BitOrAssign for VideoEncodeRgbModelConversionFlagBitsVALVE {
26330    #[inline]
26331    fn bitor_assign(&mut self, rhs: Self) {
26332        self.0 |= rhs.0;
26333    }
26334}
26335impl core::ops::BitAnd for VideoEncodeRgbModelConversionFlagBitsVALVE {
26336    type Output = Self;
26337    #[inline]
26338    fn bitand(self, rhs: Self) -> Self {
26339        Self(self.0 & rhs.0)
26340    }
26341}
26342impl core::ops::BitAndAssign for VideoEncodeRgbModelConversionFlagBitsVALVE {
26343    #[inline]
26344    fn bitand_assign(&mut self, rhs: Self) {
26345        self.0 &= rhs.0;
26346    }
26347}
26348impl core::ops::BitXor for VideoEncodeRgbModelConversionFlagBitsVALVE {
26349    type Output = Self;
26350    #[inline]
26351    fn bitxor(self, rhs: Self) -> Self {
26352        Self(self.0 ^ rhs.0)
26353    }
26354}
26355impl core::ops::BitXorAssign for VideoEncodeRgbModelConversionFlagBitsVALVE {
26356    #[inline]
26357    fn bitxor_assign(&mut self, rhs: Self) {
26358        self.0 ^= rhs.0;
26359    }
26360}
26361impl core::ops::Not for VideoEncodeRgbModelConversionFlagBitsVALVE {
26362    type Output = Self;
26363    #[inline]
26364    fn not(self) -> Self {
26365        Self(!self.0)
26366    }
26367}
26368impl core::fmt::Debug for VideoEncodeRgbModelConversionFlagBitsVALVE {
26369    #[allow(unused_mut, unused_variables)]
26370    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26371        let mut first = true;
26372        let mut remaining = self.0;
26373        if remaining & Self::RGB_IDENTITY_BIT.0 != 0 {
26374            if !first {
26375                f.write_str(" | ")?;
26376            }
26377            f.write_str("RGB_IDENTITY_BIT")?;
26378            remaining &= !Self::RGB_IDENTITY_BIT.0;
26379            first = false;
26380        }
26381        if remaining & Self::YCBCR_IDENTITY_BIT.0 != 0 {
26382            if !first {
26383                f.write_str(" | ")?;
26384            }
26385            f.write_str("YCBCR_IDENTITY_BIT")?;
26386            remaining &= !Self::YCBCR_IDENTITY_BIT.0;
26387            first = false;
26388        }
26389        if remaining & Self::YCBCR_709_BIT.0 != 0 {
26390            if !first {
26391                f.write_str(" | ")?;
26392            }
26393            f.write_str("YCBCR_709_BIT")?;
26394            remaining &= !Self::YCBCR_709_BIT.0;
26395            first = false;
26396        }
26397        if remaining & Self::YCBCR_601_BIT.0 != 0 {
26398            if !first {
26399                f.write_str(" | ")?;
26400            }
26401            f.write_str("YCBCR_601_BIT")?;
26402            remaining &= !Self::YCBCR_601_BIT.0;
26403            first = false;
26404        }
26405        if remaining & Self::YCBCR_2020_BIT.0 != 0 {
26406            if !first {
26407                f.write_str(" | ")?;
26408            }
26409            f.write_str("YCBCR_2020_BIT")?;
26410            remaining &= !Self::YCBCR_2020_BIT.0;
26411            first = false;
26412        }
26413        if remaining != 0u32 {
26414            if !first {
26415                f.write_str(" | ")?;
26416            }
26417            write!(f, "{:#x}", remaining)?;
26418        } else if first {
26419            f.write_str("(empty)")?;
26420        }
26421        Ok(())
26422    }
26423}
26424///[`VkVideoEncodeRgbRangeCompressionFlagBitsVALVE`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbRangeCompressionFlagBitsVALVE.html)
26425#[repr(transparent)]
26426#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26427#[doc(alias = "VkVideoEncodeRgbRangeCompressionFlagBitsVALVE")]
26428pub struct VideoEncodeRgbRangeCompressionFlagBitsVALVE(u32);
26429impl VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26430    #[inline]
26431    pub const fn empty() -> Self {
26432        Self(0u32)
26433    }
26434    #[inline]
26435    pub const fn from_raw(value: u32) -> Self {
26436        Self(value)
26437    }
26438    #[inline]
26439    pub const fn as_raw(self) -> u32 {
26440        self.0
26441    }
26442    #[inline]
26443    pub const fn is_empty(self) -> bool {
26444        self.0 == 0u32
26445    }
26446    #[inline]
26447    pub const fn contains(self, other: Self) -> bool {
26448        (self.0 & other.0) == other.0
26449    }
26450    #[inline]
26451    pub const fn all() -> Self {
26452        Self(3u32)
26453    }
26454    ///Bit 0.
26455    pub const FULL_RANGE_BIT: Self = Self(1u32);
26456    ///Bit 1.
26457    pub const NARROW_RANGE_BIT: Self = Self(2u32);
26458}
26459impl core::ops::BitOr for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26460    type Output = Self;
26461    #[inline]
26462    fn bitor(self, rhs: Self) -> Self {
26463        Self(self.0 | rhs.0)
26464    }
26465}
26466impl core::ops::BitOrAssign for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26467    #[inline]
26468    fn bitor_assign(&mut self, rhs: Self) {
26469        self.0 |= rhs.0;
26470    }
26471}
26472impl core::ops::BitAnd for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26473    type Output = Self;
26474    #[inline]
26475    fn bitand(self, rhs: Self) -> Self {
26476        Self(self.0 & rhs.0)
26477    }
26478}
26479impl core::ops::BitAndAssign for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26480    #[inline]
26481    fn bitand_assign(&mut self, rhs: Self) {
26482        self.0 &= rhs.0;
26483    }
26484}
26485impl core::ops::BitXor for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26486    type Output = Self;
26487    #[inline]
26488    fn bitxor(self, rhs: Self) -> Self {
26489        Self(self.0 ^ rhs.0)
26490    }
26491}
26492impl core::ops::BitXorAssign for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26493    #[inline]
26494    fn bitxor_assign(&mut self, rhs: Self) {
26495        self.0 ^= rhs.0;
26496    }
26497}
26498impl core::ops::Not for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26499    type Output = Self;
26500    #[inline]
26501    fn not(self) -> Self {
26502        Self(!self.0)
26503    }
26504}
26505impl core::fmt::Debug for VideoEncodeRgbRangeCompressionFlagBitsVALVE {
26506    #[allow(unused_mut, unused_variables)]
26507    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26508        let mut first = true;
26509        let mut remaining = self.0;
26510        if remaining & Self::FULL_RANGE_BIT.0 != 0 {
26511            if !first {
26512                f.write_str(" | ")?;
26513            }
26514            f.write_str("FULL_RANGE_BIT")?;
26515            remaining &= !Self::FULL_RANGE_BIT.0;
26516            first = false;
26517        }
26518        if remaining & Self::NARROW_RANGE_BIT.0 != 0 {
26519            if !first {
26520                f.write_str(" | ")?;
26521            }
26522            f.write_str("NARROW_RANGE_BIT")?;
26523            remaining &= !Self::NARROW_RANGE_BIT.0;
26524            first = false;
26525        }
26526        if remaining != 0u32 {
26527            if !first {
26528                f.write_str(" | ")?;
26529            }
26530            write!(f, "{:#x}", remaining)?;
26531        } else if first {
26532            f.write_str("(empty)")?;
26533        }
26534        Ok(())
26535    }
26536}
26537///[`VkVideoEncodeUsageFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeUsageFlagBitsKHR.html)
26538#[repr(transparent)]
26539#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26540#[doc(alias = "VkVideoEncodeUsageFlagBitsKHR")]
26541pub struct VideoEncodeUsageFlagBitsKHR(u32);
26542impl VideoEncodeUsageFlagBitsKHR {
26543    #[inline]
26544    pub const fn empty() -> Self {
26545        Self(0u32)
26546    }
26547    #[inline]
26548    pub const fn from_raw(value: u32) -> Self {
26549        Self(value)
26550    }
26551    #[inline]
26552    pub const fn as_raw(self) -> u32 {
26553        self.0
26554    }
26555    #[inline]
26556    pub const fn is_empty(self) -> bool {
26557        self.0 == 0u32
26558    }
26559    #[inline]
26560    pub const fn contains(self, other: Self) -> bool {
26561        (self.0 & other.0) == other.0
26562    }
26563    #[inline]
26564    pub const fn all() -> Self {
26565        Self(15u32)
26566    }
26567    pub const DEFAULT: Self = Self(0u32);
26568    ///Bit 0.
26569    pub const TRANSCODING: Self = Self(1u32);
26570    ///Bit 1.
26571    pub const STREAMING: Self = Self(2u32);
26572    ///Bit 2.
26573    pub const RECORDING: Self = Self(4u32);
26574    ///Bit 3.
26575    pub const CONFERENCING: Self = Self(8u32);
26576}
26577impl core::ops::BitOr for VideoEncodeUsageFlagBitsKHR {
26578    type Output = Self;
26579    #[inline]
26580    fn bitor(self, rhs: Self) -> Self {
26581        Self(self.0 | rhs.0)
26582    }
26583}
26584impl core::ops::BitOrAssign for VideoEncodeUsageFlagBitsKHR {
26585    #[inline]
26586    fn bitor_assign(&mut self, rhs: Self) {
26587        self.0 |= rhs.0;
26588    }
26589}
26590impl core::ops::BitAnd for VideoEncodeUsageFlagBitsKHR {
26591    type Output = Self;
26592    #[inline]
26593    fn bitand(self, rhs: Self) -> Self {
26594        Self(self.0 & rhs.0)
26595    }
26596}
26597impl core::ops::BitAndAssign for VideoEncodeUsageFlagBitsKHR {
26598    #[inline]
26599    fn bitand_assign(&mut self, rhs: Self) {
26600        self.0 &= rhs.0;
26601    }
26602}
26603impl core::ops::BitXor for VideoEncodeUsageFlagBitsKHR {
26604    type Output = Self;
26605    #[inline]
26606    fn bitxor(self, rhs: Self) -> Self {
26607        Self(self.0 ^ rhs.0)
26608    }
26609}
26610impl core::ops::BitXorAssign for VideoEncodeUsageFlagBitsKHR {
26611    #[inline]
26612    fn bitxor_assign(&mut self, rhs: Self) {
26613        self.0 ^= rhs.0;
26614    }
26615}
26616impl core::ops::Not for VideoEncodeUsageFlagBitsKHR {
26617    type Output = Self;
26618    #[inline]
26619    fn not(self) -> Self {
26620        Self(!self.0)
26621    }
26622}
26623impl core::fmt::Debug for VideoEncodeUsageFlagBitsKHR {
26624    #[allow(unused_mut, unused_variables)]
26625    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26626        let mut first = true;
26627        let mut remaining = self.0;
26628        if remaining & Self::TRANSCODING.0 != 0 {
26629            if !first {
26630                f.write_str(" | ")?;
26631            }
26632            f.write_str("TRANSCODING")?;
26633            remaining &= !Self::TRANSCODING.0;
26634            first = false;
26635        }
26636        if remaining & Self::STREAMING.0 != 0 {
26637            if !first {
26638                f.write_str(" | ")?;
26639            }
26640            f.write_str("STREAMING")?;
26641            remaining &= !Self::STREAMING.0;
26642            first = false;
26643        }
26644        if remaining & Self::RECORDING.0 != 0 {
26645            if !first {
26646                f.write_str(" | ")?;
26647            }
26648            f.write_str("RECORDING")?;
26649            remaining &= !Self::RECORDING.0;
26650            first = false;
26651        }
26652        if remaining & Self::CONFERENCING.0 != 0 {
26653            if !first {
26654                f.write_str(" | ")?;
26655            }
26656            f.write_str("CONFERENCING")?;
26657            remaining &= !Self::CONFERENCING.0;
26658            first = false;
26659        }
26660        if remaining != 0u32 {
26661            if !first {
26662                f.write_str(" | ")?;
26663            }
26664            write!(f, "{:#x}", remaining)?;
26665        } else if first {
26666            f.write_str("(empty)")?;
26667        }
26668        Ok(())
26669    }
26670}
26671///[`VkVideoSessionCreateFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionCreateFlagBitsKHR.html)
26672#[repr(transparent)]
26673#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26674#[doc(alias = "VkVideoSessionCreateFlagBitsKHR")]
26675pub struct VideoSessionCreateFlagBitsKHR(u32);
26676impl VideoSessionCreateFlagBitsKHR {
26677    #[inline]
26678    pub const fn empty() -> Self {
26679        Self(0u32)
26680    }
26681    #[inline]
26682    pub const fn from_raw(value: u32) -> Self {
26683        Self(value)
26684    }
26685    #[inline]
26686    pub const fn as_raw(self) -> u32 {
26687        self.0
26688    }
26689    #[inline]
26690    pub const fn is_empty(self) -> bool {
26691        self.0 == 0u32
26692    }
26693    #[inline]
26694    pub const fn contains(self, other: Self) -> bool {
26695        (self.0 & other.0) == other.0
26696    }
26697    #[inline]
26698    pub const fn all() -> Self {
26699        Self(63u32)
26700    }
26701    ///Bit 0.
26702    pub const PROTECTED_CONTENT: Self = Self(1u32);
26703    ///Bit 1.
26704    pub const ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS: Self = Self(2u32);
26705    ///Bit 2.
26706    pub const INLINE_QUERIES: Self = Self(4u32);
26707    ///Bit 3.
26708    pub const ALLOW_ENCODE_QUANTIZATION_DELTA_MAP: Self = Self(8u32);
26709    ///Bit 4.
26710    pub const ALLOW_ENCODE_EMPHASIS_MAP: Self = Self(16u32);
26711    ///Bit 5.
26712    pub const INLINE_SESSION_PARAMETERS: Self = Self(32u32);
26713}
26714impl core::ops::BitOr for VideoSessionCreateFlagBitsKHR {
26715    type Output = Self;
26716    #[inline]
26717    fn bitor(self, rhs: Self) -> Self {
26718        Self(self.0 | rhs.0)
26719    }
26720}
26721impl core::ops::BitOrAssign for VideoSessionCreateFlagBitsKHR {
26722    #[inline]
26723    fn bitor_assign(&mut self, rhs: Self) {
26724        self.0 |= rhs.0;
26725    }
26726}
26727impl core::ops::BitAnd for VideoSessionCreateFlagBitsKHR {
26728    type Output = Self;
26729    #[inline]
26730    fn bitand(self, rhs: Self) -> Self {
26731        Self(self.0 & rhs.0)
26732    }
26733}
26734impl core::ops::BitAndAssign for VideoSessionCreateFlagBitsKHR {
26735    #[inline]
26736    fn bitand_assign(&mut self, rhs: Self) {
26737        self.0 &= rhs.0;
26738    }
26739}
26740impl core::ops::BitXor for VideoSessionCreateFlagBitsKHR {
26741    type Output = Self;
26742    #[inline]
26743    fn bitxor(self, rhs: Self) -> Self {
26744        Self(self.0 ^ rhs.0)
26745    }
26746}
26747impl core::ops::BitXorAssign for VideoSessionCreateFlagBitsKHR {
26748    #[inline]
26749    fn bitxor_assign(&mut self, rhs: Self) {
26750        self.0 ^= rhs.0;
26751    }
26752}
26753impl core::ops::Not for VideoSessionCreateFlagBitsKHR {
26754    type Output = Self;
26755    #[inline]
26756    fn not(self) -> Self {
26757        Self(!self.0)
26758    }
26759}
26760impl core::fmt::Debug for VideoSessionCreateFlagBitsKHR {
26761    #[allow(unused_mut, unused_variables)]
26762    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26763        let mut first = true;
26764        let mut remaining = self.0;
26765        if remaining & Self::PROTECTED_CONTENT.0 != 0 {
26766            if !first {
26767                f.write_str(" | ")?;
26768            }
26769            f.write_str("PROTECTED_CONTENT")?;
26770            remaining &= !Self::PROTECTED_CONTENT.0;
26771            first = false;
26772        }
26773        if remaining & Self::ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS.0 != 0 {
26774            if !first {
26775                f.write_str(" | ")?;
26776            }
26777            f.write_str("ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS")?;
26778            remaining &= !Self::ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS.0;
26779            first = false;
26780        }
26781        if remaining & Self::INLINE_QUERIES.0 != 0 {
26782            if !first {
26783                f.write_str(" | ")?;
26784            }
26785            f.write_str("INLINE_QUERIES")?;
26786            remaining &= !Self::INLINE_QUERIES.0;
26787            first = false;
26788        }
26789        if remaining & Self::ALLOW_ENCODE_QUANTIZATION_DELTA_MAP.0 != 0 {
26790            if !first {
26791                f.write_str(" | ")?;
26792            }
26793            f.write_str("ALLOW_ENCODE_QUANTIZATION_DELTA_MAP")?;
26794            remaining &= !Self::ALLOW_ENCODE_QUANTIZATION_DELTA_MAP.0;
26795            first = false;
26796        }
26797        if remaining & Self::ALLOW_ENCODE_EMPHASIS_MAP.0 != 0 {
26798            if !first {
26799                f.write_str(" | ")?;
26800            }
26801            f.write_str("ALLOW_ENCODE_EMPHASIS_MAP")?;
26802            remaining &= !Self::ALLOW_ENCODE_EMPHASIS_MAP.0;
26803            first = false;
26804        }
26805        if remaining & Self::INLINE_SESSION_PARAMETERS.0 != 0 {
26806            if !first {
26807                f.write_str(" | ")?;
26808            }
26809            f.write_str("INLINE_SESSION_PARAMETERS")?;
26810            remaining &= !Self::INLINE_SESSION_PARAMETERS.0;
26811            first = false;
26812        }
26813        if remaining != 0u32 {
26814            if !first {
26815                f.write_str(" | ")?;
26816            }
26817            write!(f, "{:#x}", remaining)?;
26818        } else if first {
26819            f.write_str("(empty)")?;
26820        }
26821        Ok(())
26822    }
26823}
26824///[`VkVideoSessionParametersCreateFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateFlagBitsKHR.html)
26825#[repr(transparent)]
26826#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26827#[doc(alias = "VkVideoSessionParametersCreateFlagBitsKHR")]
26828pub struct VideoSessionParametersCreateFlagBitsKHR(u32);
26829impl VideoSessionParametersCreateFlagBitsKHR {
26830    #[inline]
26831    pub const fn empty() -> Self {
26832        Self(0u32)
26833    }
26834    #[inline]
26835    pub const fn from_raw(value: u32) -> Self {
26836        Self(value)
26837    }
26838    #[inline]
26839    pub const fn as_raw(self) -> u32 {
26840        self.0
26841    }
26842    #[inline]
26843    pub const fn is_empty(self) -> bool {
26844        self.0 == 0u32
26845    }
26846    #[inline]
26847    pub const fn contains(self, other: Self) -> bool {
26848        (self.0 & other.0) == other.0
26849    }
26850    #[inline]
26851    pub const fn all() -> Self {
26852        Self(1u32)
26853    }
26854    ///Bit 0.
26855    pub const QUANTIZATION_MAP_COMPATIBLE: Self = Self(1u32);
26856}
26857impl core::ops::BitOr for VideoSessionParametersCreateFlagBitsKHR {
26858    type Output = Self;
26859    #[inline]
26860    fn bitor(self, rhs: Self) -> Self {
26861        Self(self.0 | rhs.0)
26862    }
26863}
26864impl core::ops::BitOrAssign for VideoSessionParametersCreateFlagBitsKHR {
26865    #[inline]
26866    fn bitor_assign(&mut self, rhs: Self) {
26867        self.0 |= rhs.0;
26868    }
26869}
26870impl core::ops::BitAnd for VideoSessionParametersCreateFlagBitsKHR {
26871    type Output = Self;
26872    #[inline]
26873    fn bitand(self, rhs: Self) -> Self {
26874        Self(self.0 & rhs.0)
26875    }
26876}
26877impl core::ops::BitAndAssign for VideoSessionParametersCreateFlagBitsKHR {
26878    #[inline]
26879    fn bitand_assign(&mut self, rhs: Self) {
26880        self.0 &= rhs.0;
26881    }
26882}
26883impl core::ops::BitXor for VideoSessionParametersCreateFlagBitsKHR {
26884    type Output = Self;
26885    #[inline]
26886    fn bitxor(self, rhs: Self) -> Self {
26887        Self(self.0 ^ rhs.0)
26888    }
26889}
26890impl core::ops::BitXorAssign for VideoSessionParametersCreateFlagBitsKHR {
26891    #[inline]
26892    fn bitxor_assign(&mut self, rhs: Self) {
26893        self.0 ^= rhs.0;
26894    }
26895}
26896impl core::ops::Not for VideoSessionParametersCreateFlagBitsKHR {
26897    type Output = Self;
26898    #[inline]
26899    fn not(self) -> Self {
26900        Self(!self.0)
26901    }
26902}
26903impl core::fmt::Debug for VideoSessionParametersCreateFlagBitsKHR {
26904    #[allow(unused_mut, unused_variables)]
26905    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26906        let mut first = true;
26907        let mut remaining = self.0;
26908        if remaining & Self::QUANTIZATION_MAP_COMPATIBLE.0 != 0 {
26909            if !first {
26910                f.write_str(" | ")?;
26911            }
26912            f.write_str("QUANTIZATION_MAP_COMPATIBLE")?;
26913            remaining &= !Self::QUANTIZATION_MAP_COMPATIBLE.0;
26914            first = false;
26915        }
26916        if remaining != 0u32 {
26917            if !first {
26918                f.write_str(" | ")?;
26919            }
26920            write!(f, "{:#x}", remaining)?;
26921        } else if first {
26922            f.write_str("(empty)")?;
26923        }
26924        Ok(())
26925    }
26926}
26927///[`VkWaylandSurfaceCreateFlagBitsKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateFlagBitsKHR.html)
26928#[repr(transparent)]
26929#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
26930#[doc(alias = "VkWaylandSurfaceCreateFlagBitsKHR")]
26931pub struct WaylandSurfaceCreateFlagBitsKHR(u32);
26932impl WaylandSurfaceCreateFlagBitsKHR {
26933    #[inline]
26934    pub const fn empty() -> Self {
26935        Self(0u32)
26936    }
26937    #[inline]
26938    pub const fn from_raw(value: u32) -> Self {
26939        Self(value)
26940    }
26941    #[inline]
26942    pub const fn as_raw(self) -> u32 {
26943        self.0
26944    }
26945    #[inline]
26946    pub const fn is_empty(self) -> bool {
26947        self.0 == 0u32
26948    }
26949    #[inline]
26950    pub const fn contains(self, other: Self) -> bool {
26951        (self.0 & other.0) == other.0
26952    }
26953    #[inline]
26954    pub const fn all() -> Self {
26955        Self(0u32)
26956    }
26957}
26958impl core::ops::BitOr for WaylandSurfaceCreateFlagBitsKHR {
26959    type Output = Self;
26960    #[inline]
26961    fn bitor(self, rhs: Self) -> Self {
26962        Self(self.0 | rhs.0)
26963    }
26964}
26965impl core::ops::BitOrAssign for WaylandSurfaceCreateFlagBitsKHR {
26966    #[inline]
26967    fn bitor_assign(&mut self, rhs: Self) {
26968        self.0 |= rhs.0;
26969    }
26970}
26971impl core::ops::BitAnd for WaylandSurfaceCreateFlagBitsKHR {
26972    type Output = Self;
26973    #[inline]
26974    fn bitand(self, rhs: Self) -> Self {
26975        Self(self.0 & rhs.0)
26976    }
26977}
26978impl core::ops::BitAndAssign for WaylandSurfaceCreateFlagBitsKHR {
26979    #[inline]
26980    fn bitand_assign(&mut self, rhs: Self) {
26981        self.0 &= rhs.0;
26982    }
26983}
26984impl core::ops::BitXor for WaylandSurfaceCreateFlagBitsKHR {
26985    type Output = Self;
26986    #[inline]
26987    fn bitxor(self, rhs: Self) -> Self {
26988        Self(self.0 ^ rhs.0)
26989    }
26990}
26991impl core::ops::BitXorAssign for WaylandSurfaceCreateFlagBitsKHR {
26992    #[inline]
26993    fn bitxor_assign(&mut self, rhs: Self) {
26994        self.0 ^= rhs.0;
26995    }
26996}
26997impl core::ops::Not for WaylandSurfaceCreateFlagBitsKHR {
26998    type Output = Self;
26999    #[inline]
27000    fn not(self) -> Self {
27001        Self(!self.0)
27002    }
27003}
27004impl core::fmt::Debug for WaylandSurfaceCreateFlagBitsKHR {
27005    #[allow(unused_mut, unused_variables)]
27006    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27007        let mut first = true;
27008        let mut remaining = self.0;
27009        if remaining != 0u32 {
27010            if !first {
27011                f.write_str(" | ")?;
27012            }
27013            write!(f, "{:#x}", remaining)?;
27014        } else if first {
27015            f.write_str("(empty)")?;
27016        }
27017        Ok(())
27018    }
27019}