ash/vk/
enums.rs

1use std::fmt;
2#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3#[repr(transparent)]
4#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html>"]
5pub struct ImageLayout(pub(crate) i32);
6impl ImageLayout {
7    #[inline]
8    pub const fn from_raw(x: i32) -> Self {
9        Self(x)
10    }
11    #[inline]
12    pub const fn as_raw(self) -> i32 {
13        self.0
14    }
15}
16impl ImageLayout {
17    #[doc = "Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)"]
18    pub const UNDEFINED: Self = Self(0);
19    #[doc = "General layout when image can be used for any kind of access"]
20    pub const GENERAL: Self = Self(1);
21    #[doc = "Optimal layout when image is only used for color attachment read/write"]
22    pub const COLOR_ATTACHMENT_OPTIMAL: Self = Self(2);
23    #[doc = "Optimal layout when image is only used for depth/stencil attachment read/write"]
24    pub const DEPTH_STENCIL_ATTACHMENT_OPTIMAL: Self = Self(3);
25    #[doc = "Optimal layout when image is used for read only depth/stencil attachment and shader access"]
26    pub const DEPTH_STENCIL_READ_ONLY_OPTIMAL: Self = Self(4);
27    #[doc = "Optimal layout when image is used for read only shader access"]
28    pub const SHADER_READ_ONLY_OPTIMAL: Self = Self(5);
29    #[doc = "Optimal layout when image is used only as source of transfer operations"]
30    pub const TRANSFER_SRC_OPTIMAL: Self = Self(6);
31    #[doc = "Optimal layout when image is used only as destination of transfer operations"]
32    pub const TRANSFER_DST_OPTIMAL: Self = Self(7);
33    #[doc = "Initial layout used when the data is populated by the CPU"]
34    pub const PREINITIALIZED: Self = Self(8);
35}
36#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
37#[repr(transparent)]
38#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html>"]
39pub struct AttachmentLoadOp(pub(crate) i32);
40impl AttachmentLoadOp {
41    #[inline]
42    pub const fn from_raw(x: i32) -> Self {
43        Self(x)
44    }
45    #[inline]
46    pub const fn as_raw(self) -> i32 {
47        self.0
48    }
49}
50impl AttachmentLoadOp {
51    pub const LOAD: Self = Self(0);
52    pub const CLEAR: Self = Self(1);
53    pub const DONT_CARE: Self = Self(2);
54}
55#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
56#[repr(transparent)]
57#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentStoreOp.html>"]
58pub struct AttachmentStoreOp(pub(crate) i32);
59impl AttachmentStoreOp {
60    #[inline]
61    pub const fn from_raw(x: i32) -> Self {
62        Self(x)
63    }
64    #[inline]
65    pub const fn as_raw(self) -> i32 {
66        self.0
67    }
68}
69impl AttachmentStoreOp {
70    pub const STORE: Self = Self(0);
71    pub const DONT_CARE: Self = Self(1);
72}
73#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
74#[repr(transparent)]
75#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageType.html>"]
76pub struct ImageType(pub(crate) i32);
77impl ImageType {
78    #[inline]
79    pub const fn from_raw(x: i32) -> Self {
80        Self(x)
81    }
82    #[inline]
83    pub const fn as_raw(self) -> i32 {
84        self.0
85    }
86}
87impl ImageType {
88    pub const TYPE_1D: Self = Self(0);
89    pub const TYPE_2D: Self = Self(1);
90    pub const TYPE_3D: Self = Self(2);
91}
92#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
93#[repr(transparent)]
94#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageTiling.html>"]
95pub struct ImageTiling(pub(crate) i32);
96impl ImageTiling {
97    #[inline]
98    pub const fn from_raw(x: i32) -> Self {
99        Self(x)
100    }
101    #[inline]
102    pub const fn as_raw(self) -> i32 {
103        self.0
104    }
105}
106impl ImageTiling {
107    pub const OPTIMAL: Self = Self(0);
108    pub const LINEAR: Self = Self(1);
109}
110#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
111#[repr(transparent)]
112#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html>"]
113pub struct ImageViewType(pub(crate) i32);
114impl ImageViewType {
115    #[inline]
116    pub const fn from_raw(x: i32) -> Self {
117        Self(x)
118    }
119    #[inline]
120    pub const fn as_raw(self) -> i32 {
121        self.0
122    }
123}
124impl ImageViewType {
125    pub const TYPE_1D: Self = Self(0);
126    pub const TYPE_2D: Self = Self(1);
127    pub const TYPE_3D: Self = Self(2);
128    pub const CUBE: Self = Self(3);
129    pub const TYPE_1D_ARRAY: Self = Self(4);
130    pub const TYPE_2D_ARRAY: Self = Self(5);
131    pub const CUBE_ARRAY: Self = Self(6);
132}
133#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
134#[repr(transparent)]
135#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferLevel.html>"]
136pub struct CommandBufferLevel(pub(crate) i32);
137impl CommandBufferLevel {
138    #[inline]
139    pub const fn from_raw(x: i32) -> Self {
140        Self(x)
141    }
142    #[inline]
143    pub const fn as_raw(self) -> i32 {
144        self.0
145    }
146}
147impl CommandBufferLevel {
148    pub const PRIMARY: Self = Self(0);
149    pub const SECONDARY: Self = Self(1);
150}
151#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
152#[repr(transparent)]
153#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html>"]
154pub struct ComponentSwizzle(pub(crate) i32);
155impl ComponentSwizzle {
156    #[inline]
157    pub const fn from_raw(x: i32) -> Self {
158        Self(x)
159    }
160    #[inline]
161    pub const fn as_raw(self) -> i32 {
162        self.0
163    }
164}
165impl ComponentSwizzle {
166    pub const IDENTITY: Self = Self(0);
167    pub const ZERO: Self = Self(1);
168    pub const ONE: Self = Self(2);
169    pub const R: Self = Self(3);
170    pub const G: Self = Self(4);
171    pub const B: Self = Self(5);
172    pub const A: Self = Self(6);
173}
174#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
175#[repr(transparent)]
176#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html>"]
177pub struct DescriptorType(pub(crate) i32);
178impl DescriptorType {
179    #[inline]
180    pub const fn from_raw(x: i32) -> Self {
181        Self(x)
182    }
183    #[inline]
184    pub const fn as_raw(self) -> i32 {
185        self.0
186    }
187}
188impl DescriptorType {
189    pub const SAMPLER: Self = Self(0);
190    pub const COMBINED_IMAGE_SAMPLER: Self = Self(1);
191    pub const SAMPLED_IMAGE: Self = Self(2);
192    pub const STORAGE_IMAGE: Self = Self(3);
193    pub const UNIFORM_TEXEL_BUFFER: Self = Self(4);
194    pub const STORAGE_TEXEL_BUFFER: Self = Self(5);
195    pub const UNIFORM_BUFFER: Self = Self(6);
196    pub const STORAGE_BUFFER: Self = Self(7);
197    pub const UNIFORM_BUFFER_DYNAMIC: Self = Self(8);
198    pub const STORAGE_BUFFER_DYNAMIC: Self = Self(9);
199    pub const INPUT_ATTACHMENT: Self = Self(10);
200}
201#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
202#[repr(transparent)]
203#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryType.html>"]
204pub struct QueryType(pub(crate) i32);
205impl QueryType {
206    #[inline]
207    pub const fn from_raw(x: i32) -> Self {
208        Self(x)
209    }
210    #[inline]
211    pub const fn as_raw(self) -> i32 {
212        self.0
213    }
214}
215impl QueryType {
216    pub const OCCLUSION: Self = Self(0);
217    #[doc = "Optional"]
218    pub const PIPELINE_STATISTICS: Self = Self(1);
219    pub const TIMESTAMP: Self = Self(2);
220}
221#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
222#[repr(transparent)]
223#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html>"]
224pub struct BorderColor(pub(crate) i32);
225impl BorderColor {
226    #[inline]
227    pub const fn from_raw(x: i32) -> Self {
228        Self(x)
229    }
230    #[inline]
231    pub const fn as_raw(self) -> i32 {
232        self.0
233    }
234}
235impl BorderColor {
236    pub const FLOAT_TRANSPARENT_BLACK: Self = Self(0);
237    pub const INT_TRANSPARENT_BLACK: Self = Self(1);
238    pub const FLOAT_OPAQUE_BLACK: Self = Self(2);
239    pub const INT_OPAQUE_BLACK: Self = Self(3);
240    pub const FLOAT_OPAQUE_WHITE: Self = Self(4);
241    pub const INT_OPAQUE_WHITE: Self = Self(5);
242}
243#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
244#[repr(transparent)]
245#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineBindPoint.html>"]
246pub struct PipelineBindPoint(pub(crate) i32);
247impl PipelineBindPoint {
248    #[inline]
249    pub const fn from_raw(x: i32) -> Self {
250        Self(x)
251    }
252    #[inline]
253    pub const fn as_raw(self) -> i32 {
254        self.0
255    }
256}
257impl PipelineBindPoint {
258    pub const GRAPHICS: Self = Self(0);
259    pub const COMPUTE: Self = Self(1);
260}
261#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
262#[repr(transparent)]
263#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheHeaderVersion.html>"]
264pub struct PipelineCacheHeaderVersion(pub(crate) i32);
265impl PipelineCacheHeaderVersion {
266    #[inline]
267    pub const fn from_raw(x: i32) -> Self {
268        Self(x)
269    }
270    #[inline]
271    pub const fn as_raw(self) -> i32 {
272        self.0
273    }
274}
275impl PipelineCacheHeaderVersion {
276    pub const ONE: Self = Self(1);
277}
278#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
279#[repr(transparent)]
280#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html>"]
281pub struct PrimitiveTopology(pub(crate) i32);
282impl PrimitiveTopology {
283    #[inline]
284    pub const fn from_raw(x: i32) -> Self {
285        Self(x)
286    }
287    #[inline]
288    pub const fn as_raw(self) -> i32 {
289        self.0
290    }
291}
292impl PrimitiveTopology {
293    pub const POINT_LIST: Self = Self(0);
294    pub const LINE_LIST: Self = Self(1);
295    pub const LINE_STRIP: Self = Self(2);
296    pub const TRIANGLE_LIST: Self = Self(3);
297    pub const TRIANGLE_STRIP: Self = Self(4);
298    pub const TRIANGLE_FAN: Self = Self(5);
299    pub const LINE_LIST_WITH_ADJACENCY: Self = Self(6);
300    pub const LINE_STRIP_WITH_ADJACENCY: Self = Self(7);
301    pub const TRIANGLE_LIST_WITH_ADJACENCY: Self = Self(8);
302    pub const TRIANGLE_STRIP_WITH_ADJACENCY: Self = Self(9);
303    pub const PATCH_LIST: Self = Self(10);
304}
305#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
306#[repr(transparent)]
307#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSharingMode.html>"]
308pub struct SharingMode(pub(crate) i32);
309impl SharingMode {
310    #[inline]
311    pub const fn from_raw(x: i32) -> Self {
312        Self(x)
313    }
314    #[inline]
315    pub const fn as_raw(self) -> i32 {
316        self.0
317    }
318}
319impl SharingMode {
320    pub const EXCLUSIVE: Self = Self(0);
321    pub const CONCURRENT: Self = Self(1);
322}
323#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
324#[repr(transparent)]
325#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndexType.html>"]
326pub struct IndexType(pub(crate) i32);
327impl IndexType {
328    #[inline]
329    pub const fn from_raw(x: i32) -> Self {
330        Self(x)
331    }
332    #[inline]
333    pub const fn as_raw(self) -> i32 {
334        self.0
335    }
336}
337impl IndexType {
338    pub const UINT16: Self = Self(0);
339    pub const UINT32: Self = Self(1);
340}
341#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
342#[repr(transparent)]
343#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFilter.html>"]
344pub struct Filter(pub(crate) i32);
345impl Filter {
346    #[inline]
347    pub const fn from_raw(x: i32) -> Self {
348        Self(x)
349    }
350    #[inline]
351    pub const fn as_raw(self) -> i32 {
352        self.0
353    }
354}
355impl Filter {
356    pub const NEAREST: Self = Self(0);
357    pub const LINEAR: Self = Self(1);
358}
359#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
360#[repr(transparent)]
361#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerMipmapMode.html>"]
362pub struct SamplerMipmapMode(pub(crate) i32);
363impl SamplerMipmapMode {
364    #[inline]
365    pub const fn from_raw(x: i32) -> Self {
366        Self(x)
367    }
368    #[inline]
369    pub const fn as_raw(self) -> i32 {
370        self.0
371    }
372}
373impl SamplerMipmapMode {
374    #[doc = "Choose nearest mip level"]
375    pub const NEAREST: Self = Self(0);
376    #[doc = "Linear filter between mip levels"]
377    pub const LINEAR: Self = Self(1);
378}
379#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
380#[repr(transparent)]
381#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html>"]
382pub struct SamplerAddressMode(pub(crate) i32);
383impl SamplerAddressMode {
384    #[inline]
385    pub const fn from_raw(x: i32) -> Self {
386        Self(x)
387    }
388    #[inline]
389    pub const fn as_raw(self) -> i32 {
390        self.0
391    }
392}
393impl SamplerAddressMode {
394    pub const REPEAT: Self = Self(0);
395    pub const MIRRORED_REPEAT: Self = Self(1);
396    pub const CLAMP_TO_EDGE: Self = Self(2);
397    pub const CLAMP_TO_BORDER: Self = Self(3);
398}
399#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
400#[repr(transparent)]
401#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html>"]
402pub struct CompareOp(pub(crate) i32);
403impl CompareOp {
404    #[inline]
405    pub const fn from_raw(x: i32) -> Self {
406        Self(x)
407    }
408    #[inline]
409    pub const fn as_raw(self) -> i32 {
410        self.0
411    }
412}
413impl CompareOp {
414    pub const NEVER: Self = Self(0);
415    pub const LESS: Self = Self(1);
416    pub const EQUAL: Self = Self(2);
417    pub const LESS_OR_EQUAL: Self = Self(3);
418    pub const GREATER: Self = Self(4);
419    pub const NOT_EQUAL: Self = Self(5);
420    pub const GREATER_OR_EQUAL: Self = Self(6);
421    pub const ALWAYS: Self = Self(7);
422}
423#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
424#[repr(transparent)]
425#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPolygonMode.html>"]
426pub struct PolygonMode(pub(crate) i32);
427impl PolygonMode {
428    #[inline]
429    pub const fn from_raw(x: i32) -> Self {
430        Self(x)
431    }
432    #[inline]
433    pub const fn as_raw(self) -> i32 {
434        self.0
435    }
436}
437impl PolygonMode {
438    pub const FILL: Self = Self(0);
439    pub const LINE: Self = Self(1);
440    pub const POINT: Self = Self(2);
441}
442#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
443#[repr(transparent)]
444#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFrontFace.html>"]
445pub struct FrontFace(pub(crate) i32);
446impl FrontFace {
447    #[inline]
448    pub const fn from_raw(x: i32) -> Self {
449        Self(x)
450    }
451    #[inline]
452    pub const fn as_raw(self) -> i32 {
453        self.0
454    }
455}
456impl FrontFace {
457    pub const COUNTER_CLOCKWISE: Self = Self(0);
458    pub const CLOCKWISE: Self = Self(1);
459}
460#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
461#[repr(transparent)]
462#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html>"]
463pub struct BlendFactor(pub(crate) i32);
464impl BlendFactor {
465    #[inline]
466    pub const fn from_raw(x: i32) -> Self {
467        Self(x)
468    }
469    #[inline]
470    pub const fn as_raw(self) -> i32 {
471        self.0
472    }
473}
474impl BlendFactor {
475    pub const ZERO: Self = Self(0);
476    pub const ONE: Self = Self(1);
477    pub const SRC_COLOR: Self = Self(2);
478    pub const ONE_MINUS_SRC_COLOR: Self = Self(3);
479    pub const DST_COLOR: Self = Self(4);
480    pub const ONE_MINUS_DST_COLOR: Self = Self(5);
481    pub const SRC_ALPHA: Self = Self(6);
482    pub const ONE_MINUS_SRC_ALPHA: Self = Self(7);
483    pub const DST_ALPHA: Self = Self(8);
484    pub const ONE_MINUS_DST_ALPHA: Self = Self(9);
485    pub const CONSTANT_COLOR: Self = Self(10);
486    pub const ONE_MINUS_CONSTANT_COLOR: Self = Self(11);
487    pub const CONSTANT_ALPHA: Self = Self(12);
488    pub const ONE_MINUS_CONSTANT_ALPHA: Self = Self(13);
489    pub const SRC_ALPHA_SATURATE: Self = Self(14);
490    pub const SRC1_COLOR: Self = Self(15);
491    pub const ONE_MINUS_SRC1_COLOR: Self = Self(16);
492    pub const SRC1_ALPHA: Self = Self(17);
493    pub const ONE_MINUS_SRC1_ALPHA: Self = Self(18);
494}
495#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
496#[repr(transparent)]
497#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html>"]
498pub struct BlendOp(pub(crate) i32);
499impl BlendOp {
500    #[inline]
501    pub const fn from_raw(x: i32) -> Self {
502        Self(x)
503    }
504    #[inline]
505    pub const fn as_raw(self) -> i32 {
506        self.0
507    }
508}
509impl BlendOp {
510    pub const ADD: Self = Self(0);
511    pub const SUBTRACT: Self = Self(1);
512    pub const REVERSE_SUBTRACT: Self = Self(2);
513    pub const MIN: Self = Self(3);
514    pub const MAX: Self = Self(4);
515}
516#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
517#[repr(transparent)]
518#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html>"]
519pub struct StencilOp(pub(crate) i32);
520impl StencilOp {
521    #[inline]
522    pub const fn from_raw(x: i32) -> Self {
523        Self(x)
524    }
525    #[inline]
526    pub const fn as_raw(self) -> i32 {
527        self.0
528    }
529}
530impl StencilOp {
531    pub const KEEP: Self = Self(0);
532    pub const ZERO: Self = Self(1);
533    pub const REPLACE: Self = Self(2);
534    pub const INCREMENT_AND_CLAMP: Self = Self(3);
535    pub const DECREMENT_AND_CLAMP: Self = Self(4);
536    pub const INVERT: Self = Self(5);
537    pub const INCREMENT_AND_WRAP: Self = Self(6);
538    pub const DECREMENT_AND_WRAP: Self = Self(7);
539}
540#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
541#[repr(transparent)]
542#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html>"]
543pub struct LogicOp(pub(crate) i32);
544impl LogicOp {
545    #[inline]
546    pub const fn from_raw(x: i32) -> Self {
547        Self(x)
548    }
549    #[inline]
550    pub const fn as_raw(self) -> i32 {
551        self.0
552    }
553}
554impl LogicOp {
555    pub const CLEAR: Self = Self(0);
556    pub const AND: Self = Self(1);
557    pub const AND_REVERSE: Self = Self(2);
558    pub const COPY: Self = Self(3);
559    pub const AND_INVERTED: Self = Self(4);
560    pub const NO_OP: Self = Self(5);
561    pub const XOR: Self = Self(6);
562    pub const OR: Self = Self(7);
563    pub const NOR: Self = Self(8);
564    pub const EQUIVALENT: Self = Self(9);
565    pub const INVERT: Self = Self(10);
566    pub const OR_REVERSE: Self = Self(11);
567    pub const COPY_INVERTED: Self = Self(12);
568    pub const OR_INVERTED: Self = Self(13);
569    pub const NAND: Self = Self(14);
570    pub const SET: Self = Self(15);
571}
572#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
573#[repr(transparent)]
574#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInternalAllocationType.html>"]
575pub struct InternalAllocationType(pub(crate) i32);
576impl InternalAllocationType {
577    #[inline]
578    pub const fn from_raw(x: i32) -> Self {
579        Self(x)
580    }
581    #[inline]
582    pub const fn as_raw(self) -> i32 {
583        self.0
584    }
585}
586impl InternalAllocationType {
587    pub const EXECUTABLE: Self = Self(0);
588}
589#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
590#[repr(transparent)]
591#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSystemAllocationScope.html>"]
592pub struct SystemAllocationScope(pub(crate) i32);
593impl SystemAllocationScope {
594    #[inline]
595    pub const fn from_raw(x: i32) -> Self {
596        Self(x)
597    }
598    #[inline]
599    pub const fn as_raw(self) -> i32 {
600        self.0
601    }
602}
603impl SystemAllocationScope {
604    pub const COMMAND: Self = Self(0);
605    pub const OBJECT: Self = Self(1);
606    pub const CACHE: Self = Self(2);
607    pub const DEVICE: Self = Self(3);
608    pub const INSTANCE: Self = Self(4);
609}
610#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
611#[repr(transparent)]
612#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html>"]
613pub struct PhysicalDeviceType(pub(crate) i32);
614impl PhysicalDeviceType {
615    #[inline]
616    pub const fn from_raw(x: i32) -> Self {
617        Self(x)
618    }
619    #[inline]
620    pub const fn as_raw(self) -> i32 {
621        self.0
622    }
623}
624impl PhysicalDeviceType {
625    pub const OTHER: Self = Self(0);
626    pub const INTEGRATED_GPU: Self = Self(1);
627    pub const DISCRETE_GPU: Self = Self(2);
628    pub const VIRTUAL_GPU: Self = Self(3);
629    pub const CPU: Self = Self(4);
630}
631#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
632#[repr(transparent)]
633#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVertexInputRate.html>"]
634pub struct VertexInputRate(pub(crate) i32);
635impl VertexInputRate {
636    #[inline]
637    pub const fn from_raw(x: i32) -> Self {
638        Self(x)
639    }
640    #[inline]
641    pub const fn as_raw(self) -> i32 {
642        self.0
643    }
644}
645impl VertexInputRate {
646    pub const VERTEX: Self = Self(0);
647    pub const INSTANCE: Self = Self(1);
648}
649#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
650#[repr(transparent)]
651#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFormat.html>"]
652pub struct Format(pub(crate) i32);
653impl Format {
654    #[inline]
655    pub const fn from_raw(x: i32) -> Self {
656        Self(x)
657    }
658    #[inline]
659    pub const fn as_raw(self) -> i32 {
660        self.0
661    }
662}
663impl Format {
664    pub const UNDEFINED: Self = Self(0);
665    pub const R4G4_UNORM_PACK8: Self = Self(1);
666    pub const R4G4B4A4_UNORM_PACK16: Self = Self(2);
667    pub const B4G4R4A4_UNORM_PACK16: Self = Self(3);
668    pub const R5G6B5_UNORM_PACK16: Self = Self(4);
669    pub const B5G6R5_UNORM_PACK16: Self = Self(5);
670    pub const R5G5B5A1_UNORM_PACK16: Self = Self(6);
671    pub const B5G5R5A1_UNORM_PACK16: Self = Self(7);
672    pub const A1R5G5B5_UNORM_PACK16: Self = Self(8);
673    pub const R8_UNORM: Self = Self(9);
674    pub const R8_SNORM: Self = Self(10);
675    pub const R8_USCALED: Self = Self(11);
676    pub const R8_SSCALED: Self = Self(12);
677    pub const R8_UINT: Self = Self(13);
678    pub const R8_SINT: Self = Self(14);
679    pub const R8_SRGB: Self = Self(15);
680    pub const R8G8_UNORM: Self = Self(16);
681    pub const R8G8_SNORM: Self = Self(17);
682    pub const R8G8_USCALED: Self = Self(18);
683    pub const R8G8_SSCALED: Self = Self(19);
684    pub const R8G8_UINT: Self = Self(20);
685    pub const R8G8_SINT: Self = Self(21);
686    pub const R8G8_SRGB: Self = Self(22);
687    pub const R8G8B8_UNORM: Self = Self(23);
688    pub const R8G8B8_SNORM: Self = Self(24);
689    pub const R8G8B8_USCALED: Self = Self(25);
690    pub const R8G8B8_SSCALED: Self = Self(26);
691    pub const R8G8B8_UINT: Self = Self(27);
692    pub const R8G8B8_SINT: Self = Self(28);
693    pub const R8G8B8_SRGB: Self = Self(29);
694    pub const B8G8R8_UNORM: Self = Self(30);
695    pub const B8G8R8_SNORM: Self = Self(31);
696    pub const B8G8R8_USCALED: Self = Self(32);
697    pub const B8G8R8_SSCALED: Self = Self(33);
698    pub const B8G8R8_UINT: Self = Self(34);
699    pub const B8G8R8_SINT: Self = Self(35);
700    pub const B8G8R8_SRGB: Self = Self(36);
701    pub const R8G8B8A8_UNORM: Self = Self(37);
702    pub const R8G8B8A8_SNORM: Self = Self(38);
703    pub const R8G8B8A8_USCALED: Self = Self(39);
704    pub const R8G8B8A8_SSCALED: Self = Self(40);
705    pub const R8G8B8A8_UINT: Self = Self(41);
706    pub const R8G8B8A8_SINT: Self = Self(42);
707    pub const R8G8B8A8_SRGB: Self = Self(43);
708    pub const B8G8R8A8_UNORM: Self = Self(44);
709    pub const B8G8R8A8_SNORM: Self = Self(45);
710    pub const B8G8R8A8_USCALED: Self = Self(46);
711    pub const B8G8R8A8_SSCALED: Self = Self(47);
712    pub const B8G8R8A8_UINT: Self = Self(48);
713    pub const B8G8R8A8_SINT: Self = Self(49);
714    pub const B8G8R8A8_SRGB: Self = Self(50);
715    pub const A8B8G8R8_UNORM_PACK32: Self = Self(51);
716    pub const A8B8G8R8_SNORM_PACK32: Self = Self(52);
717    pub const A8B8G8R8_USCALED_PACK32: Self = Self(53);
718    pub const A8B8G8R8_SSCALED_PACK32: Self = Self(54);
719    pub const A8B8G8R8_UINT_PACK32: Self = Self(55);
720    pub const A8B8G8R8_SINT_PACK32: Self = Self(56);
721    pub const A8B8G8R8_SRGB_PACK32: Self = Self(57);
722    pub const A2R10G10B10_UNORM_PACK32: Self = Self(58);
723    pub const A2R10G10B10_SNORM_PACK32: Self = Self(59);
724    pub const A2R10G10B10_USCALED_PACK32: Self = Self(60);
725    pub const A2R10G10B10_SSCALED_PACK32: Self = Self(61);
726    pub const A2R10G10B10_UINT_PACK32: Self = Self(62);
727    pub const A2R10G10B10_SINT_PACK32: Self = Self(63);
728    pub const A2B10G10R10_UNORM_PACK32: Self = Self(64);
729    pub const A2B10G10R10_SNORM_PACK32: Self = Self(65);
730    pub const A2B10G10R10_USCALED_PACK32: Self = Self(66);
731    pub const A2B10G10R10_SSCALED_PACK32: Self = Self(67);
732    pub const A2B10G10R10_UINT_PACK32: Self = Self(68);
733    pub const A2B10G10R10_SINT_PACK32: Self = Self(69);
734    pub const R16_UNORM: Self = Self(70);
735    pub const R16_SNORM: Self = Self(71);
736    pub const R16_USCALED: Self = Self(72);
737    pub const R16_SSCALED: Self = Self(73);
738    pub const R16_UINT: Self = Self(74);
739    pub const R16_SINT: Self = Self(75);
740    pub const R16_SFLOAT: Self = Self(76);
741    pub const R16G16_UNORM: Self = Self(77);
742    pub const R16G16_SNORM: Self = Self(78);
743    pub const R16G16_USCALED: Self = Self(79);
744    pub const R16G16_SSCALED: Self = Self(80);
745    pub const R16G16_UINT: Self = Self(81);
746    pub const R16G16_SINT: Self = Self(82);
747    pub const R16G16_SFLOAT: Self = Self(83);
748    pub const R16G16B16_UNORM: Self = Self(84);
749    pub const R16G16B16_SNORM: Self = Self(85);
750    pub const R16G16B16_USCALED: Self = Self(86);
751    pub const R16G16B16_SSCALED: Self = Self(87);
752    pub const R16G16B16_UINT: Self = Self(88);
753    pub const R16G16B16_SINT: Self = Self(89);
754    pub const R16G16B16_SFLOAT: Self = Self(90);
755    pub const R16G16B16A16_UNORM: Self = Self(91);
756    pub const R16G16B16A16_SNORM: Self = Self(92);
757    pub const R16G16B16A16_USCALED: Self = Self(93);
758    pub const R16G16B16A16_SSCALED: Self = Self(94);
759    pub const R16G16B16A16_UINT: Self = Self(95);
760    pub const R16G16B16A16_SINT: Self = Self(96);
761    pub const R16G16B16A16_SFLOAT: Self = Self(97);
762    pub const R32_UINT: Self = Self(98);
763    pub const R32_SINT: Self = Self(99);
764    pub const R32_SFLOAT: Self = Self(100);
765    pub const R32G32_UINT: Self = Self(101);
766    pub const R32G32_SINT: Self = Self(102);
767    pub const R32G32_SFLOAT: Self = Self(103);
768    pub const R32G32B32_UINT: Self = Self(104);
769    pub const R32G32B32_SINT: Self = Self(105);
770    pub const R32G32B32_SFLOAT: Self = Self(106);
771    pub const R32G32B32A32_UINT: Self = Self(107);
772    pub const R32G32B32A32_SINT: Self = Self(108);
773    pub const R32G32B32A32_SFLOAT: Self = Self(109);
774    pub const R64_UINT: Self = Self(110);
775    pub const R64_SINT: Self = Self(111);
776    pub const R64_SFLOAT: Self = Self(112);
777    pub const R64G64_UINT: Self = Self(113);
778    pub const R64G64_SINT: Self = Self(114);
779    pub const R64G64_SFLOAT: Self = Self(115);
780    pub const R64G64B64_UINT: Self = Self(116);
781    pub const R64G64B64_SINT: Self = Self(117);
782    pub const R64G64B64_SFLOAT: Self = Self(118);
783    pub const R64G64B64A64_UINT: Self = Self(119);
784    pub const R64G64B64A64_SINT: Self = Self(120);
785    pub const R64G64B64A64_SFLOAT: Self = Self(121);
786    pub const B10G11R11_UFLOAT_PACK32: Self = Self(122);
787    pub const E5B9G9R9_UFLOAT_PACK32: Self = Self(123);
788    pub const D16_UNORM: Self = Self(124);
789    pub const X8_D24_UNORM_PACK32: Self = Self(125);
790    pub const D32_SFLOAT: Self = Self(126);
791    pub const S8_UINT: Self = Self(127);
792    pub const D16_UNORM_S8_UINT: Self = Self(128);
793    pub const D24_UNORM_S8_UINT: Self = Self(129);
794    pub const D32_SFLOAT_S8_UINT: Self = Self(130);
795    pub const BC1_RGB_UNORM_BLOCK: Self = Self(131);
796    pub const BC1_RGB_SRGB_BLOCK: Self = Self(132);
797    pub const BC1_RGBA_UNORM_BLOCK: Self = Self(133);
798    pub const BC1_RGBA_SRGB_BLOCK: Self = Self(134);
799    pub const BC2_UNORM_BLOCK: Self = Self(135);
800    pub const BC2_SRGB_BLOCK: Self = Self(136);
801    pub const BC3_UNORM_BLOCK: Self = Self(137);
802    pub const BC3_SRGB_BLOCK: Self = Self(138);
803    pub const BC4_UNORM_BLOCK: Self = Self(139);
804    pub const BC4_SNORM_BLOCK: Self = Self(140);
805    pub const BC5_UNORM_BLOCK: Self = Self(141);
806    pub const BC5_SNORM_BLOCK: Self = Self(142);
807    pub const BC6H_UFLOAT_BLOCK: Self = Self(143);
808    pub const BC6H_SFLOAT_BLOCK: Self = Self(144);
809    pub const BC7_UNORM_BLOCK: Self = Self(145);
810    pub const BC7_SRGB_BLOCK: Self = Self(146);
811    pub const ETC2_R8G8B8_UNORM_BLOCK: Self = Self(147);
812    pub const ETC2_R8G8B8_SRGB_BLOCK: Self = Self(148);
813    pub const ETC2_R8G8B8A1_UNORM_BLOCK: Self = Self(149);
814    pub const ETC2_R8G8B8A1_SRGB_BLOCK: Self = Self(150);
815    pub const ETC2_R8G8B8A8_UNORM_BLOCK: Self = Self(151);
816    pub const ETC2_R8G8B8A8_SRGB_BLOCK: Self = Self(152);
817    pub const EAC_R11_UNORM_BLOCK: Self = Self(153);
818    pub const EAC_R11_SNORM_BLOCK: Self = Self(154);
819    pub const EAC_R11G11_UNORM_BLOCK: Self = Self(155);
820    pub const EAC_R11G11_SNORM_BLOCK: Self = Self(156);
821    pub const ASTC_4X4_UNORM_BLOCK: Self = Self(157);
822    pub const ASTC_4X4_SRGB_BLOCK: Self = Self(158);
823    pub const ASTC_5X4_UNORM_BLOCK: Self = Self(159);
824    pub const ASTC_5X4_SRGB_BLOCK: Self = Self(160);
825    pub const ASTC_5X5_UNORM_BLOCK: Self = Self(161);
826    pub const ASTC_5X5_SRGB_BLOCK: Self = Self(162);
827    pub const ASTC_6X5_UNORM_BLOCK: Self = Self(163);
828    pub const ASTC_6X5_SRGB_BLOCK: Self = Self(164);
829    pub const ASTC_6X6_UNORM_BLOCK: Self = Self(165);
830    pub const ASTC_6X6_SRGB_BLOCK: Self = Self(166);
831    pub const ASTC_8X5_UNORM_BLOCK: Self = Self(167);
832    pub const ASTC_8X5_SRGB_BLOCK: Self = Self(168);
833    pub const ASTC_8X6_UNORM_BLOCK: Self = Self(169);
834    pub const ASTC_8X6_SRGB_BLOCK: Self = Self(170);
835    pub const ASTC_8X8_UNORM_BLOCK: Self = Self(171);
836    pub const ASTC_8X8_SRGB_BLOCK: Self = Self(172);
837    pub const ASTC_10X5_UNORM_BLOCK: Self = Self(173);
838    pub const ASTC_10X5_SRGB_BLOCK: Self = Self(174);
839    pub const ASTC_10X6_UNORM_BLOCK: Self = Self(175);
840    pub const ASTC_10X6_SRGB_BLOCK: Self = Self(176);
841    pub const ASTC_10X8_UNORM_BLOCK: Self = Self(177);
842    pub const ASTC_10X8_SRGB_BLOCK: Self = Self(178);
843    pub const ASTC_10X10_UNORM_BLOCK: Self = Self(179);
844    pub const ASTC_10X10_SRGB_BLOCK: Self = Self(180);
845    pub const ASTC_12X10_UNORM_BLOCK: Self = Self(181);
846    pub const ASTC_12X10_SRGB_BLOCK: Self = Self(182);
847    pub const ASTC_12X12_UNORM_BLOCK: Self = Self(183);
848    pub const ASTC_12X12_SRGB_BLOCK: Self = Self(184);
849}
850#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
851#[repr(transparent)]
852#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkStructureType.html>"]
853pub struct StructureType(pub(crate) i32);
854impl StructureType {
855    #[inline]
856    pub const fn from_raw(x: i32) -> Self {
857        Self(x)
858    }
859    #[inline]
860    pub const fn as_raw(self) -> i32 {
861        self.0
862    }
863}
864impl StructureType {
865    pub const APPLICATION_INFO: Self = Self(0);
866    pub const INSTANCE_CREATE_INFO: Self = Self(1);
867    pub const DEVICE_QUEUE_CREATE_INFO: Self = Self(2);
868    pub const DEVICE_CREATE_INFO: Self = Self(3);
869    pub const SUBMIT_INFO: Self = Self(4);
870    pub const MEMORY_ALLOCATE_INFO: Self = Self(5);
871    pub const MAPPED_MEMORY_RANGE: Self = Self(6);
872    pub const BIND_SPARSE_INFO: Self = Self(7);
873    pub const FENCE_CREATE_INFO: Self = Self(8);
874    pub const SEMAPHORE_CREATE_INFO: Self = Self(9);
875    pub const EVENT_CREATE_INFO: Self = Self(10);
876    pub const QUERY_POOL_CREATE_INFO: Self = Self(11);
877    pub const BUFFER_CREATE_INFO: Self = Self(12);
878    pub const BUFFER_VIEW_CREATE_INFO: Self = Self(13);
879    pub const IMAGE_CREATE_INFO: Self = Self(14);
880    pub const IMAGE_VIEW_CREATE_INFO: Self = Self(15);
881    pub const SHADER_MODULE_CREATE_INFO: Self = Self(16);
882    pub const PIPELINE_CACHE_CREATE_INFO: Self = Self(17);
883    pub const PIPELINE_SHADER_STAGE_CREATE_INFO: Self = Self(18);
884    pub const PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: Self = Self(19);
885    pub const PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: Self = Self(20);
886    pub const PIPELINE_TESSELLATION_STATE_CREATE_INFO: Self = Self(21);
887    pub const PIPELINE_VIEWPORT_STATE_CREATE_INFO: Self = Self(22);
888    pub const PIPELINE_RASTERIZATION_STATE_CREATE_INFO: Self = Self(23);
889    pub const PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: Self = Self(24);
890    pub const PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: Self = Self(25);
891    pub const PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: Self = Self(26);
892    pub const PIPELINE_DYNAMIC_STATE_CREATE_INFO: Self = Self(27);
893    pub const GRAPHICS_PIPELINE_CREATE_INFO: Self = Self(28);
894    pub const COMPUTE_PIPELINE_CREATE_INFO: Self = Self(29);
895    pub const PIPELINE_LAYOUT_CREATE_INFO: Self = Self(30);
896    pub const SAMPLER_CREATE_INFO: Self = Self(31);
897    pub const DESCRIPTOR_SET_LAYOUT_CREATE_INFO: Self = Self(32);
898    pub const DESCRIPTOR_POOL_CREATE_INFO: Self = Self(33);
899    pub const DESCRIPTOR_SET_ALLOCATE_INFO: Self = Self(34);
900    pub const WRITE_DESCRIPTOR_SET: Self = Self(35);
901    pub const COPY_DESCRIPTOR_SET: Self = Self(36);
902    pub const FRAMEBUFFER_CREATE_INFO: Self = Self(37);
903    pub const RENDER_PASS_CREATE_INFO: Self = Self(38);
904    pub const COMMAND_POOL_CREATE_INFO: Self = Self(39);
905    pub const COMMAND_BUFFER_ALLOCATE_INFO: Self = Self(40);
906    pub const COMMAND_BUFFER_INHERITANCE_INFO: Self = Self(41);
907    pub const COMMAND_BUFFER_BEGIN_INFO: Self = Self(42);
908    pub const RENDER_PASS_BEGIN_INFO: Self = Self(43);
909    pub const BUFFER_MEMORY_BARRIER: Self = Self(44);
910    pub const IMAGE_MEMORY_BARRIER: Self = Self(45);
911    pub const MEMORY_BARRIER: Self = Self(46);
912    #[doc = "Reserved for internal use by the loader, layers, and ICDs"]
913    pub const LOADER_INSTANCE_CREATE_INFO: Self = Self(47);
914    #[doc = "Reserved for internal use by the loader, layers, and ICDs"]
915    pub const LOADER_DEVICE_CREATE_INFO: Self = Self(48);
916}
917#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
918#[repr(transparent)]
919#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubpassContents.html>"]
920pub struct SubpassContents(pub(crate) i32);
921impl SubpassContents {
922    #[inline]
923    pub const fn from_raw(x: i32) -> Self {
924        Self(x)
925    }
926    #[inline]
927    pub const fn as_raw(self) -> i32 {
928        self.0
929    }
930}
931impl SubpassContents {
932    pub const INLINE: Self = Self(0);
933    pub const SECONDARY_COMMAND_BUFFERS: Self = Self(1);
934}
935#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
936#[repr(transparent)]
937#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkResult.html>"]
938#[must_use]
939pub struct Result(pub(crate) i32);
940impl Result {
941    #[inline]
942    pub const fn from_raw(x: i32) -> Self {
943        Self(x)
944    }
945    #[inline]
946    pub const fn as_raw(self) -> i32 {
947        self.0
948    }
949}
950impl Result {
951    #[doc = "Command completed successfully"]
952    pub const SUCCESS: Self = Self(0);
953    #[doc = "A fence or query has not yet completed"]
954    pub const NOT_READY: Self = Self(1);
955    #[doc = "A wait operation has not completed in the specified time"]
956    pub const TIMEOUT: Self = Self(2);
957    #[doc = "An event is signaled"]
958    pub const EVENT_SET: Self = Self(3);
959    #[doc = "An event is unsignaled"]
960    pub const EVENT_RESET: Self = Self(4);
961    #[doc = "A return array was too small for the result"]
962    pub const INCOMPLETE: Self = Self(5);
963    #[doc = "A host memory allocation has failed"]
964    pub const ERROR_OUT_OF_HOST_MEMORY: Self = Self(-1);
965    #[doc = "A device memory allocation has failed"]
966    pub const ERROR_OUT_OF_DEVICE_MEMORY: Self = Self(-2);
967    #[doc = "Initialization of an object has failed"]
968    pub const ERROR_INITIALIZATION_FAILED: Self = Self(-3);
969    #[doc = "The logical device has been lost. See <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device>"]
970    pub const ERROR_DEVICE_LOST: Self = Self(-4);
971    #[doc = "Mapping of a memory object has failed"]
972    pub const ERROR_MEMORY_MAP_FAILED: Self = Self(-5);
973    #[doc = "Layer specified does not exist"]
974    pub const ERROR_LAYER_NOT_PRESENT: Self = Self(-6);
975    #[doc = "Extension specified does not exist"]
976    pub const ERROR_EXTENSION_NOT_PRESENT: Self = Self(-7);
977    #[doc = "Requested feature is not available on this device"]
978    pub const ERROR_FEATURE_NOT_PRESENT: Self = Self(-8);
979    #[doc = "Unable to find a Vulkan driver"]
980    pub const ERROR_INCOMPATIBLE_DRIVER: Self = Self(-9);
981    #[doc = "Too many objects of the type have already been created"]
982    pub const ERROR_TOO_MANY_OBJECTS: Self = Self(-10);
983    #[doc = "Requested format is not supported on this device"]
984    pub const ERROR_FORMAT_NOT_SUPPORTED: Self = Self(-11);
985    #[doc = "A requested pool allocation has failed due to fragmentation of the pool's memory"]
986    pub const ERROR_FRAGMENTED_POOL: Self = Self(-12);
987    #[doc = "An unknown error has occurred, due to an implementation or application bug"]
988    pub const ERROR_UNKNOWN: Self = Self(-13);
989}
990impl ::std::error::Error for Result {}
991impl fmt::Display for Result {
992    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
993        let name = match * self { Self :: SUCCESS => Some ("Command completed successfully") , Self :: NOT_READY => Some ("A fence or query has not yet completed") , Self :: TIMEOUT => Some ("A wait operation has not completed in the specified time") , Self :: EVENT_SET => Some ("An event is signaled") , Self :: EVENT_RESET => Some ("An event is unsignaled") , Self :: INCOMPLETE => Some ("A return array was too small for the result") , Self :: ERROR_OUT_OF_HOST_MEMORY => Some ("A host memory allocation has failed") , Self :: ERROR_OUT_OF_DEVICE_MEMORY => Some ("A device memory allocation has failed") , Self :: ERROR_INITIALIZATION_FAILED => Some ("Initialization of an object has failed") , Self :: ERROR_DEVICE_LOST => Some ("The logical device has been lost. See <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device>") , Self :: ERROR_MEMORY_MAP_FAILED => Some ("Mapping of a memory object has failed") , Self :: ERROR_LAYER_NOT_PRESENT => Some ("Layer specified does not exist") , Self :: ERROR_EXTENSION_NOT_PRESENT => Some ("Extension specified does not exist") , Self :: ERROR_FEATURE_NOT_PRESENT => Some ("Requested feature is not available on this device") , Self :: ERROR_INCOMPATIBLE_DRIVER => Some ("Unable to find a Vulkan driver") , Self :: ERROR_TOO_MANY_OBJECTS => Some ("Too many objects of the type have already been created") , Self :: ERROR_FORMAT_NOT_SUPPORTED => Some ("Requested format is not supported on this device") , Self :: ERROR_FRAGMENTED_POOL => Some ("A requested pool allocation has failed due to fragmentation of the pool's memory") , Self :: ERROR_UNKNOWN => Some ("An unknown error has occurred, due to an implementation or application bug") , _ => None , } ;
994        if let Some(x) = name {
995            fmt.write_str(x)
996        } else {
997            <Self as fmt::Debug>::fmt(self, fmt)
998        }
999    }
1000}
1001#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1002#[repr(transparent)]
1003#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html>"]
1004pub struct DynamicState(pub(crate) i32);
1005impl DynamicState {
1006    #[inline]
1007    pub const fn from_raw(x: i32) -> Self {
1008        Self(x)
1009    }
1010    #[inline]
1011    pub const fn as_raw(self) -> i32 {
1012        self.0
1013    }
1014}
1015impl DynamicState {
1016    pub const VIEWPORT: Self = Self(0);
1017    pub const SCISSOR: Self = Self(1);
1018    pub const LINE_WIDTH: Self = Self(2);
1019    pub const DEPTH_BIAS: Self = Self(3);
1020    pub const BLEND_CONSTANTS: Self = Self(4);
1021    pub const DEPTH_BOUNDS: Self = Self(5);
1022    pub const STENCIL_COMPARE_MASK: Self = Self(6);
1023    pub const STENCIL_WRITE_MASK: Self = Self(7);
1024    pub const STENCIL_REFERENCE: Self = Self(8);
1025}
1026#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1027#[repr(transparent)]
1028#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorUpdateTemplateType.html>"]
1029pub struct DescriptorUpdateTemplateType(pub(crate) i32);
1030impl DescriptorUpdateTemplateType {
1031    #[inline]
1032    pub const fn from_raw(x: i32) -> Self {
1033        Self(x)
1034    }
1035    #[inline]
1036    pub const fn as_raw(self) -> i32 {
1037        self.0
1038    }
1039}
1040impl DescriptorUpdateTemplateType {
1041    #[doc = "Create descriptor update template for descriptor set updates"]
1042    pub const DESCRIPTOR_SET: Self = Self(0);
1043}
1044#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1045#[repr(transparent)]
1046#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkObjectType.html>"]
1047pub struct ObjectType(pub(crate) i32);
1048impl ObjectType {
1049    #[inline]
1050    pub const fn from_raw(x: i32) -> Self {
1051        Self(x)
1052    }
1053    #[inline]
1054    pub const fn as_raw(self) -> i32 {
1055        self.0
1056    }
1057}
1058impl ObjectType {
1059    pub const UNKNOWN: Self = Self(0);
1060    pub const INSTANCE: Self = Self(1);
1061    pub const PHYSICAL_DEVICE: Self = Self(2);
1062    pub const DEVICE: Self = Self(3);
1063    pub const QUEUE: Self = Self(4);
1064    pub const SEMAPHORE: Self = Self(5);
1065    pub const COMMAND_BUFFER: Self = Self(6);
1066    pub const FENCE: Self = Self(7);
1067    pub const DEVICE_MEMORY: Self = Self(8);
1068    pub const BUFFER: Self = Self(9);
1069    pub const IMAGE: Self = Self(10);
1070    pub const EVENT: Self = Self(11);
1071    pub const QUERY_POOL: Self = Self(12);
1072    pub const BUFFER_VIEW: Self = Self(13);
1073    pub const IMAGE_VIEW: Self = Self(14);
1074    pub const SHADER_MODULE: Self = Self(15);
1075    pub const PIPELINE_CACHE: Self = Self(16);
1076    pub const PIPELINE_LAYOUT: Self = Self(17);
1077    pub const RENDER_PASS: Self = Self(18);
1078    pub const PIPELINE: Self = Self(19);
1079    pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1080    pub const SAMPLER: Self = Self(21);
1081    pub const DESCRIPTOR_POOL: Self = Self(22);
1082    pub const DESCRIPTOR_SET: Self = Self(23);
1083    pub const FRAMEBUFFER: Self = Self(24);
1084    pub const COMMAND_POOL: Self = Self(25);
1085}
1086#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1087#[repr(transparent)]
1088#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRayTracingInvocationReorderModeNV.html>"]
1089pub struct RayTracingInvocationReorderModeNV(pub(crate) i32);
1090impl RayTracingInvocationReorderModeNV {
1091    #[inline]
1092    pub const fn from_raw(x: i32) -> Self {
1093        Self(x)
1094    }
1095    #[inline]
1096    pub const fn as_raw(self) -> i32 {
1097        self.0
1098    }
1099}
1100impl RayTracingInvocationReorderModeNV {
1101    pub const NONE: Self = Self(0);
1102    pub const REORDER: Self = Self(1);
1103}
1104#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1105#[repr(transparent)]
1106#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDirectDriverLoadingModeLUNARG.html>"]
1107pub struct DirectDriverLoadingModeLUNARG(pub(crate) i32);
1108impl DirectDriverLoadingModeLUNARG {
1109    #[inline]
1110    pub const fn from_raw(x: i32) -> Self {
1111        Self(x)
1112    }
1113    #[inline]
1114    pub const fn as_raw(self) -> i32 {
1115        self.0
1116    }
1117}
1118impl DirectDriverLoadingModeLUNARG {
1119    pub const EXCLUSIVE: Self = Self(0);
1120    pub const INCLUSIVE: Self = Self(1);
1121}
1122#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1123#[repr(transparent)]
1124#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphoreType.html>"]
1125pub struct SemaphoreType(pub(crate) i32);
1126impl SemaphoreType {
1127    #[inline]
1128    pub const fn from_raw(x: i32) -> Self {
1129        Self(x)
1130    }
1131    #[inline]
1132    pub const fn as_raw(self) -> i32 {
1133        self.0
1134    }
1135}
1136impl SemaphoreType {
1137    pub const BINARY: Self = Self(0);
1138    pub const TIMELINE: Self = Self(1);
1139}
1140#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1141#[repr(transparent)]
1142#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPresentModeKHR.html>"]
1143pub struct PresentModeKHR(pub(crate) i32);
1144impl PresentModeKHR {
1145    #[inline]
1146    pub const fn from_raw(x: i32) -> Self {
1147        Self(x)
1148    }
1149    #[inline]
1150    pub const fn as_raw(self) -> i32 {
1151        self.0
1152    }
1153}
1154impl PresentModeKHR {
1155    pub const IMMEDIATE: Self = Self(0);
1156    pub const MAILBOX: Self = Self(1);
1157    pub const FIFO: Self = Self(2);
1158    pub const FIFO_RELAXED: Self = Self(3);
1159}
1160#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1161#[repr(transparent)]
1162#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkColorSpaceKHR.html>"]
1163pub struct ColorSpaceKHR(pub(crate) i32);
1164impl ColorSpaceKHR {
1165    #[inline]
1166    pub const fn from_raw(x: i32) -> Self {
1167        Self(x)
1168    }
1169    #[inline]
1170    pub const fn as_raw(self) -> i32 {
1171        self.0
1172    }
1173}
1174impl ColorSpaceKHR {
1175    pub const SRGB_NONLINEAR: Self = Self(0);
1176}
1177#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1178#[repr(transparent)]
1179#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkTimeDomainEXT.html>"]
1180pub struct TimeDomainEXT(pub(crate) i32);
1181impl TimeDomainEXT {
1182    #[inline]
1183    pub const fn from_raw(x: i32) -> Self {
1184        Self(x)
1185    }
1186    #[inline]
1187    pub const fn as_raw(self) -> i32 {
1188        self.0
1189    }
1190}
1191impl TimeDomainEXT {
1192    pub const DEVICE: Self = Self(0);
1193    pub const CLOCK_MONOTONIC: Self = Self(1);
1194    pub const CLOCK_MONOTONIC_RAW: Self = Self(2);
1195    pub const QUERY_PERFORMANCE_COUNTER: Self = Self(3);
1196}
1197#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1198#[repr(transparent)]
1199#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDebugReportObjectTypeEXT.html>"]
1200pub struct DebugReportObjectTypeEXT(pub(crate) i32);
1201impl DebugReportObjectTypeEXT {
1202    #[inline]
1203    pub const fn from_raw(x: i32) -> Self {
1204        Self(x)
1205    }
1206    #[inline]
1207    pub const fn as_raw(self) -> i32 {
1208        self.0
1209    }
1210}
1211impl DebugReportObjectTypeEXT {
1212    pub const UNKNOWN: Self = Self(0);
1213    pub const INSTANCE: Self = Self(1);
1214    pub const PHYSICAL_DEVICE: Self = Self(2);
1215    pub const DEVICE: Self = Self(3);
1216    pub const QUEUE: Self = Self(4);
1217    pub const SEMAPHORE: Self = Self(5);
1218    pub const COMMAND_BUFFER: Self = Self(6);
1219    pub const FENCE: Self = Self(7);
1220    pub const DEVICE_MEMORY: Self = Self(8);
1221    pub const BUFFER: Self = Self(9);
1222    pub const IMAGE: Self = Self(10);
1223    pub const EVENT: Self = Self(11);
1224    pub const QUERY_POOL: Self = Self(12);
1225    pub const BUFFER_VIEW: Self = Self(13);
1226    pub const IMAGE_VIEW: Self = Self(14);
1227    pub const SHADER_MODULE: Self = Self(15);
1228    pub const PIPELINE_CACHE: Self = Self(16);
1229    pub const PIPELINE_LAYOUT: Self = Self(17);
1230    pub const RENDER_PASS: Self = Self(18);
1231    pub const PIPELINE: Self = Self(19);
1232    pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1233    pub const SAMPLER: Self = Self(21);
1234    pub const DESCRIPTOR_POOL: Self = Self(22);
1235    pub const DESCRIPTOR_SET: Self = Self(23);
1236    pub const FRAMEBUFFER: Self = Self(24);
1237    pub const COMMAND_POOL: Self = Self(25);
1238    pub const SURFACE_KHR: Self = Self(26);
1239    pub const SWAPCHAIN_KHR: Self = Self(27);
1240    pub const DEBUG_REPORT_CALLBACK_EXT: Self = Self(28);
1241    pub const DISPLAY_KHR: Self = Self(29);
1242    pub const DISPLAY_MODE_KHR: Self = Self(30);
1243    pub const VALIDATION_CACHE_EXT: Self = Self(33);
1244}
1245#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1246#[repr(transparent)]
1247#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceMemoryReportEventTypeEXT.html>"]
1248pub struct DeviceMemoryReportEventTypeEXT(pub(crate) i32);
1249impl DeviceMemoryReportEventTypeEXT {
1250    #[inline]
1251    pub const fn from_raw(x: i32) -> Self {
1252        Self(x)
1253    }
1254    #[inline]
1255    pub const fn as_raw(self) -> i32 {
1256        self.0
1257    }
1258}
1259impl DeviceMemoryReportEventTypeEXT {
1260    pub const ALLOCATE: Self = Self(0);
1261    pub const FREE: Self = Self(1);
1262    pub const IMPORT: Self = Self(2);
1263    pub const UNIMPORT: Self = Self(3);
1264    pub const ALLOCATION_FAILED: Self = Self(4);
1265}
1266#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1267#[repr(transparent)]
1268#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRasterizationOrderAMD.html>"]
1269pub struct RasterizationOrderAMD(pub(crate) i32);
1270impl RasterizationOrderAMD {
1271    #[inline]
1272    pub const fn from_raw(x: i32) -> Self {
1273        Self(x)
1274    }
1275    #[inline]
1276    pub const fn as_raw(self) -> i32 {
1277        self.0
1278    }
1279}
1280impl RasterizationOrderAMD {
1281    pub const STRICT: Self = Self(0);
1282    pub const RELAXED: Self = Self(1);
1283}
1284#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1285#[repr(transparent)]
1286#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationCheckEXT.html>"]
1287pub struct ValidationCheckEXT(pub(crate) i32);
1288impl ValidationCheckEXT {
1289    #[inline]
1290    pub const fn from_raw(x: i32) -> Self {
1291        Self(x)
1292    }
1293    #[inline]
1294    pub const fn as_raw(self) -> i32 {
1295        self.0
1296    }
1297}
1298impl ValidationCheckEXT {
1299    pub const ALL: Self = Self(0);
1300    pub const SHADERS: Self = Self(1);
1301}
1302#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1303#[repr(transparent)]
1304#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationFeatureEnableEXT.html>"]
1305pub struct ValidationFeatureEnableEXT(pub(crate) i32);
1306impl ValidationFeatureEnableEXT {
1307    #[inline]
1308    pub const fn from_raw(x: i32) -> Self {
1309        Self(x)
1310    }
1311    #[inline]
1312    pub const fn as_raw(self) -> i32 {
1313        self.0
1314    }
1315}
1316impl ValidationFeatureEnableEXT {
1317    pub const GPU_ASSISTED: Self = Self(0);
1318    pub const GPU_ASSISTED_RESERVE_BINDING_SLOT: Self = Self(1);
1319    pub const BEST_PRACTICES: Self = Self(2);
1320    pub const DEBUG_PRINTF: Self = Self(3);
1321    pub const SYNCHRONIZATION_VALIDATION: Self = Self(4);
1322}
1323#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1324#[repr(transparent)]
1325#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationFeatureDisableEXT.html>"]
1326pub struct ValidationFeatureDisableEXT(pub(crate) i32);
1327impl ValidationFeatureDisableEXT {
1328    #[inline]
1329    pub const fn from_raw(x: i32) -> Self {
1330        Self(x)
1331    }
1332    #[inline]
1333    pub const fn as_raw(self) -> i32 {
1334        self.0
1335    }
1336}
1337impl ValidationFeatureDisableEXT {
1338    pub const ALL: Self = Self(0);
1339    pub const SHADERS: Self = Self(1);
1340    pub const THREAD_SAFETY: Self = Self(2);
1341    pub const API_PARAMETERS: Self = Self(3);
1342    pub const OBJECT_LIFETIMES: Self = Self(4);
1343    pub const CORE_CHECKS: Self = Self(5);
1344    pub const UNIQUE_HANDLES: Self = Self(6);
1345    pub const SHADER_VALIDATION_CACHE: Self = Self(7);
1346}
1347#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1348#[repr(transparent)]
1349#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsTokenTypeNV.html>"]
1350pub struct IndirectCommandsTokenTypeNV(pub(crate) i32);
1351impl IndirectCommandsTokenTypeNV {
1352    #[inline]
1353    pub const fn from_raw(x: i32) -> Self {
1354        Self(x)
1355    }
1356    #[inline]
1357    pub const fn as_raw(self) -> i32 {
1358        self.0
1359    }
1360}
1361impl IndirectCommandsTokenTypeNV {
1362    pub const SHADER_GROUP: Self = Self(0);
1363    pub const STATE_FLAGS: Self = Self(1);
1364    pub const INDEX_BUFFER: Self = Self(2);
1365    pub const VERTEX_BUFFER: Self = Self(3);
1366    pub const PUSH_CONSTANT: Self = Self(4);
1367    pub const DRAW_INDEXED: Self = Self(5);
1368    pub const DRAW: Self = Self(6);
1369    pub const DRAW_TASKS: Self = Self(7);
1370}
1371#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1372#[repr(transparent)]
1373#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPowerStateEXT.html>"]
1374pub struct DisplayPowerStateEXT(pub(crate) i32);
1375impl DisplayPowerStateEXT {
1376    #[inline]
1377    pub const fn from_raw(x: i32) -> Self {
1378        Self(x)
1379    }
1380    #[inline]
1381    pub const fn as_raw(self) -> i32 {
1382        self.0
1383    }
1384}
1385impl DisplayPowerStateEXT {
1386    pub const OFF: Self = Self(0);
1387    pub const SUSPEND: Self = Self(1);
1388    pub const ON: Self = Self(2);
1389}
1390#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1391#[repr(transparent)]
1392#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceEventTypeEXT.html>"]
1393pub struct DeviceEventTypeEXT(pub(crate) i32);
1394impl DeviceEventTypeEXT {
1395    #[inline]
1396    pub const fn from_raw(x: i32) -> Self {
1397        Self(x)
1398    }
1399    #[inline]
1400    pub const fn as_raw(self) -> i32 {
1401        self.0
1402    }
1403}
1404impl DeviceEventTypeEXT {
1405    pub const DISPLAY_HOTPLUG: Self = Self(0);
1406}
1407#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1408#[repr(transparent)]
1409#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayEventTypeEXT.html>"]
1410pub struct DisplayEventTypeEXT(pub(crate) i32);
1411impl DisplayEventTypeEXT {
1412    #[inline]
1413    pub const fn from_raw(x: i32) -> Self {
1414        Self(x)
1415    }
1416    #[inline]
1417    pub const fn as_raw(self) -> i32 {
1418        self.0
1419    }
1420}
1421impl DisplayEventTypeEXT {
1422    pub const FIRST_PIXEL_OUT: Self = Self(0);
1423}
1424#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1425#[repr(transparent)]
1426#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkViewportCoordinateSwizzleNV.html>"]
1427pub struct ViewportCoordinateSwizzleNV(pub(crate) i32);
1428impl ViewportCoordinateSwizzleNV {
1429    #[inline]
1430    pub const fn from_raw(x: i32) -> Self {
1431        Self(x)
1432    }
1433    #[inline]
1434    pub const fn as_raw(self) -> i32 {
1435        self.0
1436    }
1437}
1438impl ViewportCoordinateSwizzleNV {
1439    pub const POSITIVE_X: Self = Self(0);
1440    pub const NEGATIVE_X: Self = Self(1);
1441    pub const POSITIVE_Y: Self = Self(2);
1442    pub const NEGATIVE_Y: Self = Self(3);
1443    pub const POSITIVE_Z: Self = Self(4);
1444    pub const NEGATIVE_Z: Self = Self(5);
1445    pub const POSITIVE_W: Self = Self(6);
1446    pub const NEGATIVE_W: Self = Self(7);
1447}
1448#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1449#[repr(transparent)]
1450#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDiscardRectangleModeEXT.html>"]
1451pub struct DiscardRectangleModeEXT(pub(crate) i32);
1452impl DiscardRectangleModeEXT {
1453    #[inline]
1454    pub const fn from_raw(x: i32) -> Self {
1455        Self(x)
1456    }
1457    #[inline]
1458    pub const fn as_raw(self) -> i32 {
1459        self.0
1460    }
1461}
1462impl DiscardRectangleModeEXT {
1463    pub const INCLUSIVE: Self = Self(0);
1464    pub const EXCLUSIVE: Self = Self(1);
1465}
1466#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1467#[repr(transparent)]
1468#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPointClippingBehavior.html>"]
1469pub struct PointClippingBehavior(pub(crate) i32);
1470impl PointClippingBehavior {
1471    #[inline]
1472    pub const fn from_raw(x: i32) -> Self {
1473        Self(x)
1474    }
1475    #[inline]
1476    pub const fn as_raw(self) -> i32 {
1477        self.0
1478    }
1479}
1480impl PointClippingBehavior {
1481    pub const ALL_CLIP_PLANES: Self = Self(0);
1482    pub const USER_CLIP_PLANES_ONLY: Self = Self(1);
1483}
1484#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1485#[repr(transparent)]
1486#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerReductionMode.html>"]
1487pub struct SamplerReductionMode(pub(crate) i32);
1488impl SamplerReductionMode {
1489    #[inline]
1490    pub const fn from_raw(x: i32) -> Self {
1491        Self(x)
1492    }
1493    #[inline]
1494    pub const fn as_raw(self) -> i32 {
1495        self.0
1496    }
1497}
1498impl SamplerReductionMode {
1499    pub const WEIGHTED_AVERAGE: Self = Self(0);
1500    pub const MIN: Self = Self(1);
1501    pub const MAX: Self = Self(2);
1502}
1503#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1504#[repr(transparent)]
1505#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkTessellationDomainOrigin.html>"]
1506pub struct TessellationDomainOrigin(pub(crate) i32);
1507impl TessellationDomainOrigin {
1508    #[inline]
1509    pub const fn from_raw(x: i32) -> Self {
1510        Self(x)
1511    }
1512    #[inline]
1513    pub const fn as_raw(self) -> i32 {
1514        self.0
1515    }
1516}
1517impl TessellationDomainOrigin {
1518    pub const UPPER_LEFT: Self = Self(0);
1519    pub const LOWER_LEFT: Self = Self(1);
1520}
1521#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1522#[repr(transparent)]
1523#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerYcbcrModelConversion.html>"]
1524pub struct SamplerYcbcrModelConversion(pub(crate) i32);
1525impl SamplerYcbcrModelConversion {
1526    #[inline]
1527    pub const fn from_raw(x: i32) -> Self {
1528        Self(x)
1529    }
1530    #[inline]
1531    pub const fn as_raw(self) -> i32 {
1532        self.0
1533    }
1534}
1535impl SamplerYcbcrModelConversion {
1536    pub const RGB_IDENTITY: Self = Self(0);
1537    #[doc = "just range expansion"]
1538    pub const YCBCR_IDENTITY: Self = Self(1);
1539    #[doc = "aka HD YUV"]
1540    pub const YCBCR_709: Self = Self(2);
1541    #[doc = "aka SD YUV"]
1542    pub const YCBCR_601: Self = Self(3);
1543    #[doc = "aka UHD YUV"]
1544    pub const YCBCR_2020: Self = Self(4);
1545}
1546#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1547#[repr(transparent)]
1548#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerYcbcrRange.html>"]
1549pub struct SamplerYcbcrRange(pub(crate) i32);
1550impl SamplerYcbcrRange {
1551    #[inline]
1552    pub const fn from_raw(x: i32) -> Self {
1553        Self(x)
1554    }
1555    #[inline]
1556    pub const fn as_raw(self) -> i32 {
1557        self.0
1558    }
1559}
1560impl SamplerYcbcrRange {
1561    #[doc = "Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"]
1562    pub const ITU_FULL: Self = Self(0);
1563    #[doc = "Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"]
1564    pub const ITU_NARROW: Self = Self(1);
1565}
1566#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1567#[repr(transparent)]
1568#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkChromaLocation.html>"]
1569pub struct ChromaLocation(pub(crate) i32);
1570impl ChromaLocation {
1571    #[inline]
1572    pub const fn from_raw(x: i32) -> Self {
1573        Self(x)
1574    }
1575    #[inline]
1576    pub const fn as_raw(self) -> i32 {
1577        self.0
1578    }
1579}
1580impl ChromaLocation {
1581    pub const COSITED_EVEN: Self = Self(0);
1582    pub const MIDPOINT: Self = Self(1);
1583}
1584#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1585#[repr(transparent)]
1586#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendOverlapEXT.html>"]
1587pub struct BlendOverlapEXT(pub(crate) i32);
1588impl BlendOverlapEXT {
1589    #[inline]
1590    pub const fn from_raw(x: i32) -> Self {
1591        Self(x)
1592    }
1593    #[inline]
1594    pub const fn as_raw(self) -> i32 {
1595        self.0
1596    }
1597}
1598impl BlendOverlapEXT {
1599    pub const UNCORRELATED: Self = Self(0);
1600    pub const DISJOINT: Self = Self(1);
1601    pub const CONJOINT: Self = Self(2);
1602}
1603#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1604#[repr(transparent)]
1605#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCoverageModulationModeNV.html>"]
1606pub struct CoverageModulationModeNV(pub(crate) i32);
1607impl CoverageModulationModeNV {
1608    #[inline]
1609    pub const fn from_raw(x: i32) -> Self {
1610        Self(x)
1611    }
1612    #[inline]
1613    pub const fn as_raw(self) -> i32 {
1614        self.0
1615    }
1616}
1617impl CoverageModulationModeNV {
1618    pub const NONE: Self = Self(0);
1619    pub const RGB: Self = Self(1);
1620    pub const ALPHA: Self = Self(2);
1621    pub const RGBA: Self = Self(3);
1622}
1623#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1624#[repr(transparent)]
1625#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCoverageReductionModeNV.html>"]
1626pub struct CoverageReductionModeNV(pub(crate) i32);
1627impl CoverageReductionModeNV {
1628    #[inline]
1629    pub const fn from_raw(x: i32) -> Self {
1630        Self(x)
1631    }
1632    #[inline]
1633    pub const fn as_raw(self) -> i32 {
1634        self.0
1635    }
1636}
1637impl CoverageReductionModeNV {
1638    pub const MERGE: Self = Self(0);
1639    pub const TRUNCATE: Self = Self(1);
1640}
1641#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1642#[repr(transparent)]
1643#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkValidationCacheHeaderVersionEXT.html>"]
1644pub struct ValidationCacheHeaderVersionEXT(pub(crate) i32);
1645impl ValidationCacheHeaderVersionEXT {
1646    #[inline]
1647    pub const fn from_raw(x: i32) -> Self {
1648        Self(x)
1649    }
1650    #[inline]
1651    pub const fn as_raw(self) -> i32 {
1652        self.0
1653    }
1654}
1655impl ValidationCacheHeaderVersionEXT {
1656    pub const ONE: Self = Self(1);
1657}
1658#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1659#[repr(transparent)]
1660#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderInfoTypeAMD.html>"]
1661pub struct ShaderInfoTypeAMD(pub(crate) i32);
1662impl ShaderInfoTypeAMD {
1663    #[inline]
1664    pub const fn from_raw(x: i32) -> Self {
1665        Self(x)
1666    }
1667    #[inline]
1668    pub const fn as_raw(self) -> i32 {
1669        self.0
1670    }
1671}
1672impl ShaderInfoTypeAMD {
1673    pub const STATISTICS: Self = Self(0);
1674    pub const BINARY: Self = Self(1);
1675    pub const DISASSEMBLY: Self = Self(2);
1676}
1677#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1678#[repr(transparent)]
1679#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueueGlobalPriorityKHR.html>"]
1680pub struct QueueGlobalPriorityKHR(pub(crate) i32);
1681impl QueueGlobalPriorityKHR {
1682    #[inline]
1683    pub const fn from_raw(x: i32) -> Self {
1684        Self(x)
1685    }
1686    #[inline]
1687    pub const fn as_raw(self) -> i32 {
1688        self.0
1689    }
1690}
1691impl QueueGlobalPriorityKHR {
1692    pub const LOW: Self = Self(128);
1693    pub const MEDIUM: Self = Self(256);
1694    pub const HIGH: Self = Self(512);
1695    pub const REALTIME: Self = Self(1_024);
1696    pub const LOW_EXT: Self = Self::LOW;
1697    pub const MEDIUM_EXT: Self = Self::MEDIUM;
1698    pub const HIGH_EXT: Self = Self::HIGH;
1699    pub const REALTIME_EXT: Self = Self::REALTIME;
1700}
1701#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1702#[repr(transparent)]
1703#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkConservativeRasterizationModeEXT.html>"]
1704pub struct ConservativeRasterizationModeEXT(pub(crate) i32);
1705impl ConservativeRasterizationModeEXT {
1706    #[inline]
1707    pub const fn from_raw(x: i32) -> Self {
1708        Self(x)
1709    }
1710    #[inline]
1711    pub const fn as_raw(self) -> i32 {
1712        self.0
1713    }
1714}
1715impl ConservativeRasterizationModeEXT {
1716    pub const DISABLED: Self = Self(0);
1717    pub const OVERESTIMATE: Self = Self(1);
1718    pub const UNDERESTIMATE: Self = Self(2);
1719}
1720#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1721#[repr(transparent)]
1722#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVendorId.html>"]
1723pub struct VendorId(pub(crate) i32);
1724impl VendorId {
1725    #[inline]
1726    pub const fn from_raw(x: i32) -> Self {
1727        Self(x)
1728    }
1729    #[inline]
1730    pub const fn as_raw(self) -> i32 {
1731        self.0
1732    }
1733}
1734impl VendorId {
1735    #[doc = "Vivante vendor ID"]
1736    pub const VIV: Self = Self(0x1_0001);
1737    #[doc = "VeriSilicon vendor ID"]
1738    pub const VSI: Self = Self(0x1_0002);
1739    #[doc = "Kazan Software Renderer"]
1740    pub const KAZAN: Self = Self(0x1_0003);
1741    #[doc = "Codeplay Software Ltd. vendor ID"]
1742    pub const CODEPLAY: Self = Self(0x1_0004);
1743    #[doc = "Mesa vendor ID"]
1744    pub const MESA: Self = Self(0x1_0005);
1745    #[doc = "PoCL vendor ID"]
1746    pub const POCL: Self = Self(0x1_0006);
1747    #[doc = "Mobileye vendor ID"]
1748    pub const MOBILEYE: Self = Self(0x1_0007);
1749}
1750#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1751#[repr(transparent)]
1752#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDriverId.html>"]
1753pub struct DriverId(pub(crate) i32);
1754impl DriverId {
1755    #[inline]
1756    pub const fn from_raw(x: i32) -> Self {
1757        Self(x)
1758    }
1759    #[inline]
1760    pub const fn as_raw(self) -> i32 {
1761        self.0
1762    }
1763}
1764impl DriverId {
1765    #[doc = "Advanced Micro Devices, Inc."]
1766    pub const AMD_PROPRIETARY: Self = Self(1);
1767    #[doc = "Advanced Micro Devices, Inc."]
1768    pub const AMD_OPEN_SOURCE: Self = Self(2);
1769    #[doc = "Mesa open source project"]
1770    pub const MESA_RADV: Self = Self(3);
1771    #[doc = "NVIDIA Corporation"]
1772    pub const NVIDIA_PROPRIETARY: Self = Self(4);
1773    #[doc = "Intel Corporation"]
1774    pub const INTEL_PROPRIETARY_WINDOWS: Self = Self(5);
1775    #[doc = "Intel Corporation"]
1776    pub const INTEL_OPEN_SOURCE_MESA: Self = Self(6);
1777    #[doc = "Imagination Technologies"]
1778    pub const IMAGINATION_PROPRIETARY: Self = Self(7);
1779    #[doc = "Qualcomm Technologies, Inc."]
1780    pub const QUALCOMM_PROPRIETARY: Self = Self(8);
1781    #[doc = "Arm Limited"]
1782    pub const ARM_PROPRIETARY: Self = Self(9);
1783    #[doc = "Google LLC"]
1784    pub const GOOGLE_SWIFTSHADER: Self = Self(10);
1785    #[doc = "Google LLC"]
1786    pub const GGP_PROPRIETARY: Self = Self(11);
1787    #[doc = "Broadcom Inc."]
1788    pub const BROADCOM_PROPRIETARY: Self = Self(12);
1789    #[doc = "Mesa"]
1790    pub const MESA_LLVMPIPE: Self = Self(13);
1791    #[doc = "MoltenVK"]
1792    pub const MOLTENVK: Self = Self(14);
1793    #[doc = "Core Avionics & Industrial Inc."]
1794    pub const COREAVI_PROPRIETARY: Self = Self(15);
1795    #[doc = "Juice Technologies, Inc."]
1796    pub const JUICE_PROPRIETARY: Self = Self(16);
1797    #[doc = "Verisilicon, Inc."]
1798    pub const VERISILICON_PROPRIETARY: Self = Self(17);
1799    #[doc = "Mesa open source project"]
1800    pub const MESA_TURNIP: Self = Self(18);
1801    #[doc = "Mesa open source project"]
1802    pub const MESA_V3DV: Self = Self(19);
1803    #[doc = "Mesa open source project"]
1804    pub const MESA_PANVK: Self = Self(20);
1805    #[doc = "Samsung Electronics Co., Ltd."]
1806    pub const SAMSUNG_PROPRIETARY: Self = Self(21);
1807    #[doc = "Mesa open source project"]
1808    pub const MESA_VENUS: Self = Self(22);
1809    #[doc = "Mesa open source project"]
1810    pub const MESA_DOZEN: Self = Self(23);
1811    #[doc = "Mesa open source project"]
1812    pub const MESA_NVK: Self = Self(24);
1813    #[doc = "Imagination Technologies"]
1814    pub const IMAGINATION_OPEN_SOURCE_MESA: Self = Self(25);
1815}
1816#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1817#[repr(transparent)]
1818#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShadingRatePaletteEntryNV.html>"]
1819pub struct ShadingRatePaletteEntryNV(pub(crate) i32);
1820impl ShadingRatePaletteEntryNV {
1821    #[inline]
1822    pub const fn from_raw(x: i32) -> Self {
1823        Self(x)
1824    }
1825    #[inline]
1826    pub const fn as_raw(self) -> i32 {
1827        self.0
1828    }
1829}
1830impl ShadingRatePaletteEntryNV {
1831    pub const NO_INVOCATIONS: Self = Self(0);
1832    pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(1);
1833    pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(2);
1834    pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(3);
1835    pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(4);
1836    pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(5);
1837    pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(6);
1838    pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(7);
1839    pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(8);
1840    pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
1841    pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(10);
1842    pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(11);
1843}
1844#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1845#[repr(transparent)]
1846#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCoarseSampleOrderTypeNV.html>"]
1847pub struct CoarseSampleOrderTypeNV(pub(crate) i32);
1848impl CoarseSampleOrderTypeNV {
1849    #[inline]
1850    pub const fn from_raw(x: i32) -> Self {
1851        Self(x)
1852    }
1853    #[inline]
1854    pub const fn as_raw(self) -> i32 {
1855        self.0
1856    }
1857}
1858impl CoarseSampleOrderTypeNV {
1859    pub const DEFAULT: Self = Self(0);
1860    pub const CUSTOM: Self = Self(1);
1861    pub const PIXEL_MAJOR: Self = Self(2);
1862    pub const SAMPLE_MAJOR: Self = Self(3);
1863}
1864#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1865#[repr(transparent)]
1866#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCopyAccelerationStructureModeKHR.html>"]
1867pub struct CopyAccelerationStructureModeKHR(pub(crate) i32);
1868impl CopyAccelerationStructureModeKHR {
1869    #[inline]
1870    pub const fn from_raw(x: i32) -> Self {
1871        Self(x)
1872    }
1873    #[inline]
1874    pub const fn as_raw(self) -> i32 {
1875        self.0
1876    }
1877}
1878impl CopyAccelerationStructureModeKHR {
1879    pub const CLONE: Self = Self(0);
1880    pub const COMPACT: Self = Self(1);
1881    pub const SERIALIZE: Self = Self(2);
1882    pub const DESERIALIZE: Self = Self(3);
1883}
1884#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1885#[repr(transparent)]
1886#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureModeKHR.html>"]
1887pub struct BuildAccelerationStructureModeKHR(pub(crate) i32);
1888impl BuildAccelerationStructureModeKHR {
1889    #[inline]
1890    pub const fn from_raw(x: i32) -> Self {
1891        Self(x)
1892    }
1893    #[inline]
1894    pub const fn as_raw(self) -> i32 {
1895        self.0
1896    }
1897}
1898impl BuildAccelerationStructureModeKHR {
1899    pub const BUILD: Self = Self(0);
1900    pub const UPDATE: Self = Self(1);
1901}
1902#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1903#[repr(transparent)]
1904#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureTypeKHR.html>"]
1905pub struct AccelerationStructureTypeKHR(pub(crate) i32);
1906impl AccelerationStructureTypeKHR {
1907    #[inline]
1908    pub const fn from_raw(x: i32) -> Self {
1909        Self(x)
1910    }
1911    #[inline]
1912    pub const fn as_raw(self) -> i32 {
1913        self.0
1914    }
1915}
1916impl AccelerationStructureTypeKHR {
1917    pub const TOP_LEVEL: Self = Self(0);
1918    pub const BOTTOM_LEVEL: Self = Self(1);
1919    pub const GENERIC: Self = Self(2);
1920}
1921#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1922#[repr(transparent)]
1923#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkGeometryTypeKHR.html>"]
1924pub struct GeometryTypeKHR(pub(crate) i32);
1925impl GeometryTypeKHR {
1926    #[inline]
1927    pub const fn from_raw(x: i32) -> Self {
1928        Self(x)
1929    }
1930    #[inline]
1931    pub const fn as_raw(self) -> i32 {
1932        self.0
1933    }
1934}
1935impl GeometryTypeKHR {
1936    pub const TRIANGLES: Self = Self(0);
1937    pub const AABBS: Self = Self(1);
1938    pub const INSTANCES: Self = Self(2);
1939}
1940#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1941#[repr(transparent)]
1942#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureMemoryRequirementsTypeNV.html>"]
1943pub struct AccelerationStructureMemoryRequirementsTypeNV(pub(crate) i32);
1944impl AccelerationStructureMemoryRequirementsTypeNV {
1945    #[inline]
1946    pub const fn from_raw(x: i32) -> Self {
1947        Self(x)
1948    }
1949    #[inline]
1950    pub const fn as_raw(self) -> i32 {
1951        self.0
1952    }
1953}
1954impl AccelerationStructureMemoryRequirementsTypeNV {
1955    pub const OBJECT: Self = Self(0);
1956    pub const BUILD_SCRATCH: Self = Self(1);
1957    pub const UPDATE_SCRATCH: Self = Self(2);
1958}
1959#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1960#[repr(transparent)]
1961#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureBuildTypeKHR.html>"]
1962pub struct AccelerationStructureBuildTypeKHR(pub(crate) i32);
1963impl AccelerationStructureBuildTypeKHR {
1964    #[inline]
1965    pub const fn from_raw(x: i32) -> Self {
1966        Self(x)
1967    }
1968    #[inline]
1969    pub const fn as_raw(self) -> i32 {
1970        self.0
1971    }
1972}
1973impl AccelerationStructureBuildTypeKHR {
1974    pub const HOST: Self = Self(0);
1975    pub const DEVICE: Self = Self(1);
1976    pub const HOST_OR_DEVICE: Self = Self(2);
1977}
1978#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1979#[repr(transparent)]
1980#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRayTracingShaderGroupTypeKHR.html>"]
1981pub struct RayTracingShaderGroupTypeKHR(pub(crate) i32);
1982impl RayTracingShaderGroupTypeKHR {
1983    #[inline]
1984    pub const fn from_raw(x: i32) -> Self {
1985        Self(x)
1986    }
1987    #[inline]
1988    pub const fn as_raw(self) -> i32 {
1989        self.0
1990    }
1991}
1992impl RayTracingShaderGroupTypeKHR {
1993    pub const GENERAL: Self = Self(0);
1994    pub const TRIANGLES_HIT_GROUP: Self = Self(1);
1995    pub const PROCEDURAL_HIT_GROUP: Self = Self(2);
1996}
1997#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1998#[repr(transparent)]
1999#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCompatibilityKHR.html>"]
2000pub struct AccelerationStructureCompatibilityKHR(pub(crate) i32);
2001impl AccelerationStructureCompatibilityKHR {
2002    #[inline]
2003    pub const fn from_raw(x: i32) -> Self {
2004        Self(x)
2005    }
2006    #[inline]
2007    pub const fn as_raw(self) -> i32 {
2008        self.0
2009    }
2010}
2011impl AccelerationStructureCompatibilityKHR {
2012    pub const COMPATIBLE: Self = Self(0);
2013    pub const INCOMPATIBLE: Self = Self(1);
2014}
2015#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2016#[repr(transparent)]
2017#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderGroupShaderKHR.html>"]
2018pub struct ShaderGroupShaderKHR(pub(crate) i32);
2019impl ShaderGroupShaderKHR {
2020    #[inline]
2021    pub const fn from_raw(x: i32) -> Self {
2022        Self(x)
2023    }
2024    #[inline]
2025    pub const fn as_raw(self) -> i32 {
2026        self.0
2027    }
2028}
2029impl ShaderGroupShaderKHR {
2030    pub const GENERAL: Self = Self(0);
2031    pub const CLOSEST_HIT: Self = Self(1);
2032    pub const ANY_HIT: Self = Self(2);
2033    pub const INTERSECTION: Self = Self(3);
2034}
2035#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2036#[repr(transparent)]
2037#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMemoryOverallocationBehaviorAMD.html>"]
2038pub struct MemoryOverallocationBehaviorAMD(pub(crate) i32);
2039impl MemoryOverallocationBehaviorAMD {
2040    #[inline]
2041    pub const fn from_raw(x: i32) -> Self {
2042        Self(x)
2043    }
2044    #[inline]
2045    pub const fn as_raw(self) -> i32 {
2046        self.0
2047    }
2048}
2049impl MemoryOverallocationBehaviorAMD {
2050    pub const DEFAULT: Self = Self(0);
2051    pub const ALLOWED: Self = Self(1);
2052    pub const DISALLOWED: Self = Self(2);
2053}
2054#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2055#[repr(transparent)]
2056#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkScopeNV.html>"]
2057pub struct ScopeNV(pub(crate) i32);
2058impl ScopeNV {
2059    #[inline]
2060    pub const fn from_raw(x: i32) -> Self {
2061        Self(x)
2062    }
2063    #[inline]
2064    pub const fn as_raw(self) -> i32 {
2065        self.0
2066    }
2067}
2068impl ScopeNV {
2069    pub const DEVICE: Self = Self(1);
2070    pub const WORKGROUP: Self = Self(2);
2071    pub const SUBGROUP: Self = Self(3);
2072    pub const QUEUE_FAMILY: Self = Self(5);
2073}
2074#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2075#[repr(transparent)]
2076#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkComponentTypeNV.html>"]
2077pub struct ComponentTypeNV(pub(crate) i32);
2078impl ComponentTypeNV {
2079    #[inline]
2080    pub const fn from_raw(x: i32) -> Self {
2081        Self(x)
2082    }
2083    #[inline]
2084    pub const fn as_raw(self) -> i32 {
2085        self.0
2086    }
2087}
2088impl ComponentTypeNV {
2089    pub const FLOAT16: Self = Self(0);
2090    pub const FLOAT32: Self = Self(1);
2091    pub const FLOAT64: Self = Self(2);
2092    pub const SINT8: Self = Self(3);
2093    pub const SINT16: Self = Self(4);
2094    pub const SINT32: Self = Self(5);
2095    pub const SINT64: Self = Self(6);
2096    pub const UINT8: Self = Self(7);
2097    pub const UINT16: Self = Self(8);
2098    pub const UINT32: Self = Self(9);
2099    pub const UINT64: Self = Self(10);
2100}
2101#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2102#[repr(transparent)]
2103#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFullScreenExclusiveEXT.html>"]
2104pub struct FullScreenExclusiveEXT(pub(crate) i32);
2105impl FullScreenExclusiveEXT {
2106    #[inline]
2107    pub const fn from_raw(x: i32) -> Self {
2108        Self(x)
2109    }
2110    #[inline]
2111    pub const fn as_raw(self) -> i32 {
2112        self.0
2113    }
2114}
2115impl FullScreenExclusiveEXT {
2116    pub const DEFAULT: Self = Self(0);
2117    pub const ALLOWED: Self = Self(1);
2118    pub const DISALLOWED: Self = Self(2);
2119    pub const APPLICATION_CONTROLLED: Self = Self(3);
2120}
2121#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2122#[repr(transparent)]
2123#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterScopeKHR.html>"]
2124pub struct PerformanceCounterScopeKHR(pub(crate) i32);
2125impl PerformanceCounterScopeKHR {
2126    #[inline]
2127    pub const fn from_raw(x: i32) -> Self {
2128        Self(x)
2129    }
2130    #[inline]
2131    pub const fn as_raw(self) -> i32 {
2132        self.0
2133    }
2134}
2135impl PerformanceCounterScopeKHR {
2136    pub const COMMAND_BUFFER: Self = Self(0);
2137    pub const RENDER_PASS: Self = Self(1);
2138    pub const COMMAND: Self = Self(2);
2139}
2140#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2141#[repr(transparent)]
2142#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterUnitKHR.html>"]
2143pub struct PerformanceCounterUnitKHR(pub(crate) i32);
2144impl PerformanceCounterUnitKHR {
2145    #[inline]
2146    pub const fn from_raw(x: i32) -> Self {
2147        Self(x)
2148    }
2149    #[inline]
2150    pub const fn as_raw(self) -> i32 {
2151        self.0
2152    }
2153}
2154impl PerformanceCounterUnitKHR {
2155    pub const GENERIC: Self = Self(0);
2156    pub const PERCENTAGE: Self = Self(1);
2157    pub const NANOSECONDS: Self = Self(2);
2158    pub const BYTES: Self = Self(3);
2159    pub const BYTES_PER_SECOND: Self = Self(4);
2160    pub const KELVIN: Self = Self(5);
2161    pub const WATTS: Self = Self(6);
2162    pub const VOLTS: Self = Self(7);
2163    pub const AMPS: Self = Self(8);
2164    pub const HERTZ: Self = Self(9);
2165    pub const CYCLES: Self = Self(10);
2166}
2167#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2168#[repr(transparent)]
2169#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterStorageKHR.html>"]
2170pub struct PerformanceCounterStorageKHR(pub(crate) i32);
2171impl PerformanceCounterStorageKHR {
2172    #[inline]
2173    pub const fn from_raw(x: i32) -> Self {
2174        Self(x)
2175    }
2176    #[inline]
2177    pub const fn as_raw(self) -> i32 {
2178        self.0
2179    }
2180}
2181impl PerformanceCounterStorageKHR {
2182    pub const INT32: Self = Self(0);
2183    pub const INT64: Self = Self(1);
2184    pub const UINT32: Self = Self(2);
2185    pub const UINT64: Self = Self(3);
2186    pub const FLOAT32: Self = Self(4);
2187    pub const FLOAT64: Self = Self(5);
2188}
2189#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2190#[repr(transparent)]
2191#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceConfigurationTypeINTEL.html>"]
2192pub struct PerformanceConfigurationTypeINTEL(pub(crate) i32);
2193impl PerformanceConfigurationTypeINTEL {
2194    #[inline]
2195    pub const fn from_raw(x: i32) -> Self {
2196        Self(x)
2197    }
2198    #[inline]
2199    pub const fn as_raw(self) -> i32 {
2200        self.0
2201    }
2202}
2203impl PerformanceConfigurationTypeINTEL {
2204    pub const COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED: Self = Self(0);
2205}
2206#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2207#[repr(transparent)]
2208#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPoolSamplingModeINTEL.html>"]
2209pub struct QueryPoolSamplingModeINTEL(pub(crate) i32);
2210impl QueryPoolSamplingModeINTEL {
2211    #[inline]
2212    pub const fn from_raw(x: i32) -> Self {
2213        Self(x)
2214    }
2215    #[inline]
2216    pub const fn as_raw(self) -> i32 {
2217        self.0
2218    }
2219}
2220impl QueryPoolSamplingModeINTEL {
2221    pub const MANUAL: Self = Self(0);
2222}
2223#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2224#[repr(transparent)]
2225#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceOverrideTypeINTEL.html>"]
2226pub struct PerformanceOverrideTypeINTEL(pub(crate) i32);
2227impl PerformanceOverrideTypeINTEL {
2228    #[inline]
2229    pub const fn from_raw(x: i32) -> Self {
2230        Self(x)
2231    }
2232    #[inline]
2233    pub const fn as_raw(self) -> i32 {
2234        self.0
2235    }
2236}
2237impl PerformanceOverrideTypeINTEL {
2238    pub const NULL_HARDWARE: Self = Self(0);
2239    pub const FLUSH_GPU_CACHES: Self = Self(1);
2240}
2241#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2242#[repr(transparent)]
2243#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceParameterTypeINTEL.html>"]
2244pub struct PerformanceParameterTypeINTEL(pub(crate) i32);
2245impl PerformanceParameterTypeINTEL {
2246    #[inline]
2247    pub const fn from_raw(x: i32) -> Self {
2248        Self(x)
2249    }
2250    #[inline]
2251    pub const fn as_raw(self) -> i32 {
2252        self.0
2253    }
2254}
2255impl PerformanceParameterTypeINTEL {
2256    pub const HW_COUNTERS_SUPPORTED: Self = Self(0);
2257    pub const STREAM_MARKER_VALIDS: Self = Self(1);
2258}
2259#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2260#[repr(transparent)]
2261#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPerformanceValueTypeINTEL.html>"]
2262pub struct PerformanceValueTypeINTEL(pub(crate) i32);
2263impl PerformanceValueTypeINTEL {
2264    #[inline]
2265    pub const fn from_raw(x: i32) -> Self {
2266        Self(x)
2267    }
2268    #[inline]
2269    pub const fn as_raw(self) -> i32 {
2270        self.0
2271    }
2272}
2273impl PerformanceValueTypeINTEL {
2274    pub const UINT32: Self = Self(0);
2275    pub const UINT64: Self = Self(1);
2276    pub const FLOAT: Self = Self(2);
2277    pub const BOOL: Self = Self(3);
2278    pub const STRING: Self = Self(4);
2279}
2280#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2281#[repr(transparent)]
2282#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderFloatControlsIndependence.html>"]
2283pub struct ShaderFloatControlsIndependence(pub(crate) i32);
2284impl ShaderFloatControlsIndependence {
2285    #[inline]
2286    pub const fn from_raw(x: i32) -> Self {
2287        Self(x)
2288    }
2289    #[inline]
2290    pub const fn as_raw(self) -> i32 {
2291        self.0
2292    }
2293}
2294impl ShaderFloatControlsIndependence {
2295    pub const TYPE_32_ONLY: Self = Self(0);
2296    pub const ALL: Self = Self(1);
2297    pub const NONE: Self = Self(2);
2298}
2299#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2300#[repr(transparent)]
2301#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineExecutableStatisticFormatKHR.html>"]
2302pub struct PipelineExecutableStatisticFormatKHR(pub(crate) i32);
2303impl PipelineExecutableStatisticFormatKHR {
2304    #[inline]
2305    pub const fn from_raw(x: i32) -> Self {
2306        Self(x)
2307    }
2308    #[inline]
2309    pub const fn as_raw(self) -> i32 {
2310        self.0
2311    }
2312}
2313impl PipelineExecutableStatisticFormatKHR {
2314    pub const BOOL32: Self = Self(0);
2315    pub const INT64: Self = Self(1);
2316    pub const UINT64: Self = Self(2);
2317    pub const FLOAT64: Self = Self(3);
2318}
2319#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2320#[repr(transparent)]
2321#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkLineRasterizationModeEXT.html>"]
2322pub struct LineRasterizationModeEXT(pub(crate) i32);
2323impl LineRasterizationModeEXT {
2324    #[inline]
2325    pub const fn from_raw(x: i32) -> Self {
2326        Self(x)
2327    }
2328    #[inline]
2329    pub const fn as_raw(self) -> i32 {
2330        self.0
2331    }
2332}
2333impl LineRasterizationModeEXT {
2334    pub const DEFAULT: Self = Self(0);
2335    pub const RECTANGULAR: Self = Self(1);
2336    pub const BRESENHAM: Self = Self(2);
2337    pub const RECTANGULAR_SMOOTH: Self = Self(3);
2338}
2339#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2340#[repr(transparent)]
2341#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFragmentShadingRateCombinerOpKHR.html>"]
2342pub struct FragmentShadingRateCombinerOpKHR(pub(crate) i32);
2343impl FragmentShadingRateCombinerOpKHR {
2344    #[inline]
2345    pub const fn from_raw(x: i32) -> Self {
2346        Self(x)
2347    }
2348    #[inline]
2349    pub const fn as_raw(self) -> i32 {
2350        self.0
2351    }
2352}
2353impl FragmentShadingRateCombinerOpKHR {
2354    pub const KEEP: Self = Self(0);
2355    pub const REPLACE: Self = Self(1);
2356    pub const MIN: Self = Self(2);
2357    pub const MAX: Self = Self(3);
2358    pub const MUL: Self = Self(4);
2359}
2360#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2361#[repr(transparent)]
2362#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFragmentShadingRateNV.html>"]
2363pub struct FragmentShadingRateNV(pub(crate) i32);
2364impl FragmentShadingRateNV {
2365    #[inline]
2366    pub const fn from_raw(x: i32) -> Self {
2367        Self(x)
2368    }
2369    #[inline]
2370    pub const fn as_raw(self) -> i32 {
2371        self.0
2372    }
2373}
2374impl FragmentShadingRateNV {
2375    pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(0);
2376    pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(1);
2377    pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(4);
2378    pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(5);
2379    pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(6);
2380    pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
2381    pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(10);
2382    pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(11);
2383    pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(12);
2384    pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(13);
2385    pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(14);
2386    pub const NO_INVOCATIONS: Self = Self(15);
2387}
2388#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2389#[repr(transparent)]
2390#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFragmentShadingRateTypeNV.html>"]
2391pub struct FragmentShadingRateTypeNV(pub(crate) i32);
2392impl FragmentShadingRateTypeNV {
2393    #[inline]
2394    pub const fn from_raw(x: i32) -> Self {
2395        Self(x)
2396    }
2397    #[inline]
2398    pub const fn as_raw(self) -> i32 {
2399        self.0
2400    }
2401}
2402impl FragmentShadingRateTypeNV {
2403    pub const FRAGMENT_SIZE: Self = Self(0);
2404    pub const ENUMS: Self = Self(1);
2405}
2406#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2407#[repr(transparent)]
2408#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubpassMergeStatusEXT.html>"]
2409pub struct SubpassMergeStatusEXT(pub(crate) i32);
2410impl SubpassMergeStatusEXT {
2411    #[inline]
2412    pub const fn from_raw(x: i32) -> Self {
2413        Self(x)
2414    }
2415    #[inline]
2416    pub const fn as_raw(self) -> i32 {
2417        self.0
2418    }
2419}
2420impl SubpassMergeStatusEXT {
2421    pub const MERGED: Self = Self(0);
2422    pub const DISALLOWED: Self = Self(1);
2423    pub const NOT_MERGED_SIDE_EFFECTS: Self = Self(2);
2424    pub const NOT_MERGED_SAMPLES_MISMATCH: Self = Self(3);
2425    pub const NOT_MERGED_VIEWS_MISMATCH: Self = Self(4);
2426    pub const NOT_MERGED_ALIASING: Self = Self(5);
2427    pub const NOT_MERGED_DEPENDENCIES: Self = Self(6);
2428    pub const NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT: Self = Self(7);
2429    pub const NOT_MERGED_TOO_MANY_ATTACHMENTS: Self = Self(8);
2430    pub const NOT_MERGED_INSUFFICIENT_STORAGE: Self = Self(9);
2431    pub const NOT_MERGED_DEPTH_STENCIL_COUNT: Self = Self(10);
2432    pub const NOT_MERGED_RESOLVE_ATTACHMENT_REUSE: Self = Self(11);
2433    pub const NOT_MERGED_SINGLE_SUBPASS: Self = Self(12);
2434    pub const NOT_MERGED_UNSPECIFIED: Self = Self(13);
2435}
2436#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2437#[repr(transparent)]
2438#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkProvokingVertexModeEXT.html>"]
2439pub struct ProvokingVertexModeEXT(pub(crate) i32);
2440impl ProvokingVertexModeEXT {
2441    #[inline]
2442    pub const fn from_raw(x: i32) -> Self {
2443        Self(x)
2444    }
2445    #[inline]
2446    pub const fn as_raw(self) -> i32 {
2447        self.0
2448    }
2449}
2450impl ProvokingVertexModeEXT {
2451    pub const FIRST_VERTEX: Self = Self(0);
2452    pub const LAST_VERTEX: Self = Self(1);
2453}
2454#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2455#[repr(transparent)]
2456#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureMotionInstanceTypeNV.html>"]
2457pub struct AccelerationStructureMotionInstanceTypeNV(pub(crate) i32);
2458impl AccelerationStructureMotionInstanceTypeNV {
2459    #[inline]
2460    pub const fn from_raw(x: i32) -> Self {
2461        Self(x)
2462    }
2463    #[inline]
2464    pub const fn as_raw(self) -> i32 {
2465        self.0
2466    }
2467}
2468impl AccelerationStructureMotionInstanceTypeNV {
2469    pub const STATIC: Self = Self(0);
2470    pub const MATRIX_MOTION: Self = Self(1);
2471    pub const SRT_MOTION: Self = Self(2);
2472}
2473#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2474#[repr(transparent)]
2475#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceAddressBindingTypeEXT.html>"]
2476pub struct DeviceAddressBindingTypeEXT(pub(crate) i32);
2477impl DeviceAddressBindingTypeEXT {
2478    #[inline]
2479    pub const fn from_raw(x: i32) -> Self {
2480        Self(x)
2481    }
2482    #[inline]
2483    pub const fn as_raw(self) -> i32 {
2484        self.0
2485    }
2486}
2487impl DeviceAddressBindingTypeEXT {
2488    pub const BIND: Self = Self(0);
2489    pub const UNBIND: Self = Self(1);
2490}
2491#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2492#[repr(transparent)]
2493#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryResultStatusKHR.html>"]
2494pub struct QueryResultStatusKHR(pub(crate) i32);
2495impl QueryResultStatusKHR {
2496    #[inline]
2497    pub const fn from_raw(x: i32) -> Self {
2498        Self(x)
2499    }
2500    #[inline]
2501    pub const fn as_raw(self) -> i32 {
2502        self.0
2503    }
2504}
2505impl QueryResultStatusKHR {
2506    pub const ERROR: Self = Self(-1);
2507    pub const NOT_READY: Self = Self(0);
2508    pub const COMPLETE: Self = Self(1);
2509}
2510#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2511#[repr(transparent)]
2512#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeTuningModeKHR.html>"]
2513pub struct VideoEncodeTuningModeKHR(pub(crate) i32);
2514impl VideoEncodeTuningModeKHR {
2515    #[inline]
2516    pub const fn from_raw(x: i32) -> Self {
2517        Self(x)
2518    }
2519    #[inline]
2520    pub const fn as_raw(self) -> i32 {
2521        self.0
2522    }
2523}
2524impl VideoEncodeTuningModeKHR {
2525    pub const DEFAULT: Self = Self(0);
2526    pub const HIGH_QUALITY: Self = Self(1);
2527    pub const LOW_LATENCY: Self = Self(2);
2528    pub const ULTRA_LOW_LATENCY: Self = Self(3);
2529    pub const LOSSLESS: Self = Self(4);
2530}
2531#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2532#[repr(transparent)]
2533#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH264RateControlStructureEXT.html>"]
2534pub struct VideoEncodeH264RateControlStructureEXT(pub(crate) i32);
2535impl VideoEncodeH264RateControlStructureEXT {
2536    #[inline]
2537    pub const fn from_raw(x: i32) -> Self {
2538        Self(x)
2539    }
2540    #[inline]
2541    pub const fn as_raw(self) -> i32 {
2542        self.0
2543    }
2544}
2545impl VideoEncodeH264RateControlStructureEXT {
2546    pub const UNKNOWN: Self = Self(0);
2547    pub const FLAT: Self = Self(1);
2548    pub const DYADIC: Self = Self(2);
2549}
2550#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2551#[repr(transparent)]
2552#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeH265RateControlStructureEXT.html>"]
2553pub struct VideoEncodeH265RateControlStructureEXT(pub(crate) i32);
2554impl VideoEncodeH265RateControlStructureEXT {
2555    #[inline]
2556    pub const fn from_raw(x: i32) -> Self {
2557        Self(x)
2558    }
2559    #[inline]
2560    pub const fn as_raw(self) -> i32 {
2561        self.0
2562    }
2563}
2564impl VideoEncodeH265RateControlStructureEXT {
2565    pub const UNKNOWN: Self = Self(0);
2566    pub const FLAT: Self = Self(1);
2567    pub const DYADIC: Self = Self(2);
2568}
2569#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2570#[repr(transparent)]
2571#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineRobustnessBufferBehaviorEXT.html>"]
2572pub struct PipelineRobustnessBufferBehaviorEXT(pub(crate) i32);
2573impl PipelineRobustnessBufferBehaviorEXT {
2574    #[inline]
2575    pub const fn from_raw(x: i32) -> Self {
2576        Self(x)
2577    }
2578    #[inline]
2579    pub const fn as_raw(self) -> i32 {
2580        self.0
2581    }
2582}
2583impl PipelineRobustnessBufferBehaviorEXT {
2584    pub const DEVICE_DEFAULT: Self = Self(0);
2585    pub const DISABLED: Self = Self(1);
2586    pub const ROBUST_BUFFER_ACCESS: Self = Self(2);
2587    pub const ROBUST_BUFFER_ACCESS_2: Self = Self(3);
2588}
2589#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2590#[repr(transparent)]
2591#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineRobustnessImageBehaviorEXT.html>"]
2592pub struct PipelineRobustnessImageBehaviorEXT(pub(crate) i32);
2593impl PipelineRobustnessImageBehaviorEXT {
2594    #[inline]
2595    pub const fn from_raw(x: i32) -> Self {
2596        Self(x)
2597    }
2598    #[inline]
2599    pub const fn as_raw(self) -> i32 {
2600        self.0
2601    }
2602}
2603impl PipelineRobustnessImageBehaviorEXT {
2604    pub const DEVICE_DEFAULT: Self = Self(0);
2605    pub const DISABLED: Self = Self(1);
2606    pub const ROBUST_IMAGE_ACCESS: Self = Self(2);
2607    pub const ROBUST_IMAGE_ACCESS_2: Self = Self(3);
2608}
2609#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2610#[repr(transparent)]
2611#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowPerformanceLevelNV.html>"]
2612pub struct OpticalFlowPerformanceLevelNV(pub(crate) i32);
2613impl OpticalFlowPerformanceLevelNV {
2614    #[inline]
2615    pub const fn from_raw(x: i32) -> Self {
2616        Self(x)
2617    }
2618    #[inline]
2619    pub const fn as_raw(self) -> i32 {
2620        self.0
2621    }
2622}
2623impl OpticalFlowPerformanceLevelNV {
2624    pub const UNKNOWN: Self = Self(0);
2625    pub const SLOW: Self = Self(1);
2626    pub const MEDIUM: Self = Self(2);
2627    pub const FAST: Self = Self(3);
2628}
2629#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2630#[repr(transparent)]
2631#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowSessionBindingPointNV.html>"]
2632pub struct OpticalFlowSessionBindingPointNV(pub(crate) i32);
2633impl OpticalFlowSessionBindingPointNV {
2634    #[inline]
2635    pub const fn from_raw(x: i32) -> Self {
2636        Self(x)
2637    }
2638    #[inline]
2639    pub const fn as_raw(self) -> i32 {
2640        self.0
2641    }
2642}
2643impl OpticalFlowSessionBindingPointNV {
2644    pub const UNKNOWN: Self = Self(0);
2645    pub const INPUT: Self = Self(1);
2646    pub const REFERENCE: Self = Self(2);
2647    pub const HINT: Self = Self(3);
2648    pub const FLOW_VECTOR: Self = Self(4);
2649    pub const BACKWARD_FLOW_VECTOR: Self = Self(5);
2650    pub const COST: Self = Self(6);
2651    pub const BACKWARD_COST: Self = Self(7);
2652    pub const GLOBAL_FLOW: Self = Self(8);
2653}
2654#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2655#[repr(transparent)]
2656#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkMicromapTypeEXT.html>"]
2657pub struct MicromapTypeEXT(pub(crate) i32);
2658impl MicromapTypeEXT {
2659    #[inline]
2660    pub const fn from_raw(x: i32) -> Self {
2661        Self(x)
2662    }
2663    #[inline]
2664    pub const fn as_raw(self) -> i32 {
2665        self.0
2666    }
2667}
2668impl MicromapTypeEXT {
2669    pub const OPACITY_MICROMAP: Self = Self(0);
2670}
2671#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2672#[repr(transparent)]
2673#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCopyMicromapModeEXT.html>"]
2674pub struct CopyMicromapModeEXT(pub(crate) i32);
2675impl CopyMicromapModeEXT {
2676    #[inline]
2677    pub const fn from_raw(x: i32) -> Self {
2678        Self(x)
2679    }
2680    #[inline]
2681    pub const fn as_raw(self) -> i32 {
2682        self.0
2683    }
2684}
2685impl CopyMicromapModeEXT {
2686    pub const CLONE: Self = Self(0);
2687    pub const SERIALIZE: Self = Self(1);
2688    pub const DESERIALIZE: Self = Self(2);
2689    pub const COMPACT: Self = Self(3);
2690}
2691#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2692#[repr(transparent)]
2693#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuildMicromapModeEXT.html>"]
2694pub struct BuildMicromapModeEXT(pub(crate) i32);
2695impl BuildMicromapModeEXT {
2696    #[inline]
2697    pub const fn from_raw(x: i32) -> Self {
2698        Self(x)
2699    }
2700    #[inline]
2701    pub const fn as_raw(self) -> i32 {
2702        self.0
2703    }
2704}
2705impl BuildMicromapModeEXT {
2706    pub const BUILD: Self = Self(0);
2707}
2708#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2709#[repr(transparent)]
2710#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkOpacityMicromapFormatEXT.html>"]
2711pub struct OpacityMicromapFormatEXT(pub(crate) i32);
2712impl OpacityMicromapFormatEXT {
2713    #[inline]
2714    pub const fn from_raw(x: i32) -> Self {
2715        Self(x)
2716    }
2717    #[inline]
2718    pub const fn as_raw(self) -> i32 {
2719        self.0
2720    }
2721}
2722impl OpacityMicromapFormatEXT {
2723    pub const TYPE_2_STATE: Self = Self(1);
2724    pub const TYPE_4_STATE: Self = Self(2);
2725}
2726#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2727#[repr(transparent)]
2728#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkOpacityMicromapSpecialIndexEXT.html>"]
2729pub struct OpacityMicromapSpecialIndexEXT(pub(crate) i32);
2730impl OpacityMicromapSpecialIndexEXT {
2731    #[inline]
2732    pub const fn from_raw(x: i32) -> Self {
2733        Self(x)
2734    }
2735    #[inline]
2736    pub const fn as_raw(self) -> i32 {
2737        self.0
2738    }
2739}
2740impl OpacityMicromapSpecialIndexEXT {
2741    pub const FULLY_TRANSPARENT: Self = Self(-1);
2742    pub const FULLY_OPAQUE: Self = Self(-2);
2743    pub const FULLY_UNKNOWN_TRANSPARENT: Self = Self(-3);
2744    pub const FULLY_UNKNOWN_OPAQUE: Self = Self(-4);
2745}
2746#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2747#[repr(transparent)]
2748#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceFaultAddressTypeEXT.html>"]
2749pub struct DeviceFaultAddressTypeEXT(pub(crate) i32);
2750impl DeviceFaultAddressTypeEXT {
2751    #[inline]
2752    pub const fn from_raw(x: i32) -> Self {
2753        Self(x)
2754    }
2755    #[inline]
2756    pub const fn as_raw(self) -> i32 {
2757        self.0
2758    }
2759}
2760impl DeviceFaultAddressTypeEXT {
2761    #[doc = "Currently unused"]
2762    pub const NONE: Self = Self(0);
2763    pub const READ_INVALID: Self = Self(1);
2764    pub const WRITE_INVALID: Self = Self(2);
2765    pub const EXECUTE_INVALID: Self = Self(3);
2766    pub const INSTRUCTION_POINTER_UNKNOWN: Self = Self(4);
2767    pub const INSTRUCTION_POINTER_INVALID: Self = Self(5);
2768    pub const INSTRUCTION_POINTER_FAULT: Self = Self(6);
2769}
2770#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2771#[repr(transparent)]
2772#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceFaultVendorBinaryHeaderVersionEXT.html>"]
2773pub struct DeviceFaultVendorBinaryHeaderVersionEXT(pub(crate) i32);
2774impl DeviceFaultVendorBinaryHeaderVersionEXT {
2775    #[inline]
2776    pub const fn from_raw(x: i32) -> Self {
2777        Self(x)
2778    }
2779    #[inline]
2780    pub const fn as_raw(self) -> i32 {
2781        self.0
2782    }
2783}
2784impl DeviceFaultVendorBinaryHeaderVersionEXT {
2785    pub const ONE: Self = Self(1);
2786}
2787#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2788#[repr(transparent)]
2789#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplacementMicromapFormatNV.html>"]
2790pub struct DisplacementMicromapFormatNV(pub(crate) i32);
2791impl DisplacementMicromapFormatNV {
2792    #[inline]
2793    pub const fn from_raw(x: i32) -> Self {
2794        Self(x)
2795    }
2796    #[inline]
2797    pub const fn as_raw(self) -> i32 {
2798        self.0
2799    }
2800}
2801impl DisplacementMicromapFormatNV {
2802    pub const TYPE_64_TRIANGLES_64_BYTES: Self = Self(1);
2803    pub const TYPE_256_TRIANGLES_128_BYTES: Self = Self(2);
2804    pub const TYPE_1024_TRIANGLES_128_BYTES: Self = Self(3);
2805}
2806#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2807#[repr(transparent)]
2808#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderCodeTypeEXT.html>"]
2809pub struct ShaderCodeTypeEXT(pub(crate) i32);
2810impl ShaderCodeTypeEXT {
2811    #[inline]
2812    pub const fn from_raw(x: i32) -> Self {
2813        Self(x)
2814    }
2815    #[inline]
2816    pub const fn as_raw(self) -> i32 {
2817        self.0
2818    }
2819}
2820impl ShaderCodeTypeEXT {
2821    pub const BINARY: Self = Self(0);
2822    pub const SPIRV: Self = Self(1);
2823}
2824impl fmt::Debug for ObjectType {
2825    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2826        let name = match *self {
2827            Self::UNKNOWN => Some("UNKNOWN"),
2828            Self::INSTANCE => Some("INSTANCE"),
2829            Self::PHYSICAL_DEVICE => Some("PHYSICAL_DEVICE"),
2830            Self::DEVICE => Some("DEVICE"),
2831            Self::QUEUE => Some("QUEUE"),
2832            Self::SEMAPHORE => Some("SEMAPHORE"),
2833            Self::COMMAND_BUFFER => Some("COMMAND_BUFFER"),
2834            Self::FENCE => Some("FENCE"),
2835            Self::DEVICE_MEMORY => Some("DEVICE_MEMORY"),
2836            Self::BUFFER => Some("BUFFER"),
2837            Self::IMAGE => Some("IMAGE"),
2838            Self::EVENT => Some("EVENT"),
2839            Self::QUERY_POOL => Some("QUERY_POOL"),
2840            Self::BUFFER_VIEW => Some("BUFFER_VIEW"),
2841            Self::IMAGE_VIEW => Some("IMAGE_VIEW"),
2842            Self::SHADER_MODULE => Some("SHADER_MODULE"),
2843            Self::PIPELINE_CACHE => Some("PIPELINE_CACHE"),
2844            Self::PIPELINE_LAYOUT => Some("PIPELINE_LAYOUT"),
2845            Self::RENDER_PASS => Some("RENDER_PASS"),
2846            Self::PIPELINE => Some("PIPELINE"),
2847            Self::DESCRIPTOR_SET_LAYOUT => Some("DESCRIPTOR_SET_LAYOUT"),
2848            Self::SAMPLER => Some("SAMPLER"),
2849            Self::DESCRIPTOR_POOL => Some("DESCRIPTOR_POOL"),
2850            Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"),
2851            Self::FRAMEBUFFER => Some("FRAMEBUFFER"),
2852            Self::COMMAND_POOL => Some("COMMAND_POOL"),
2853            Self::SURFACE_KHR => Some("SURFACE_KHR"),
2854            Self::SWAPCHAIN_KHR => Some("SWAPCHAIN_KHR"),
2855            Self::DISPLAY_KHR => Some("DISPLAY_KHR"),
2856            Self::DISPLAY_MODE_KHR => Some("DISPLAY_MODE_KHR"),
2857            Self::DEBUG_REPORT_CALLBACK_EXT => Some("DEBUG_REPORT_CALLBACK_EXT"),
2858            Self::VIDEO_SESSION_KHR => Some("VIDEO_SESSION_KHR"),
2859            Self::VIDEO_SESSION_PARAMETERS_KHR => Some("VIDEO_SESSION_PARAMETERS_KHR"),
2860            Self::CU_MODULE_NVX => Some("CU_MODULE_NVX"),
2861            Self::CU_FUNCTION_NVX => Some("CU_FUNCTION_NVX"),
2862            Self::DEBUG_UTILS_MESSENGER_EXT => Some("DEBUG_UTILS_MESSENGER_EXT"),
2863            Self::ACCELERATION_STRUCTURE_KHR => Some("ACCELERATION_STRUCTURE_KHR"),
2864            Self::VALIDATION_CACHE_EXT => Some("VALIDATION_CACHE_EXT"),
2865            Self::ACCELERATION_STRUCTURE_NV => Some("ACCELERATION_STRUCTURE_NV"),
2866            Self::PERFORMANCE_CONFIGURATION_INTEL => Some("PERFORMANCE_CONFIGURATION_INTEL"),
2867            Self::DEFERRED_OPERATION_KHR => Some("DEFERRED_OPERATION_KHR"),
2868            Self::INDIRECT_COMMANDS_LAYOUT_NV => Some("INDIRECT_COMMANDS_LAYOUT_NV"),
2869            Self::BUFFER_COLLECTION_FUCHSIA => Some("BUFFER_COLLECTION_FUCHSIA"),
2870            Self::MICROMAP_EXT => Some("MICROMAP_EXT"),
2871            Self::OPTICAL_FLOW_SESSION_NV => Some("OPTICAL_FLOW_SESSION_NV"),
2872            Self::SHADER_EXT => Some("SHADER_EXT"),
2873            Self::SAMPLER_YCBCR_CONVERSION => Some("SAMPLER_YCBCR_CONVERSION"),
2874            Self::DESCRIPTOR_UPDATE_TEMPLATE => Some("DESCRIPTOR_UPDATE_TEMPLATE"),
2875            Self::PRIVATE_DATA_SLOT => Some("PRIVATE_DATA_SLOT"),
2876            _ => None,
2877        };
2878        if let Some(x) = name {
2879            f.write_str(x)
2880        } else {
2881            self.0.fmt(f)
2882        }
2883    }
2884}
2885impl fmt::Debug for Result {
2886    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2887        let name = match *self {
2888            Self::SUCCESS => Some("SUCCESS"),
2889            Self::NOT_READY => Some("NOT_READY"),
2890            Self::TIMEOUT => Some("TIMEOUT"),
2891            Self::EVENT_SET => Some("EVENT_SET"),
2892            Self::EVENT_RESET => Some("EVENT_RESET"),
2893            Self::INCOMPLETE => Some("INCOMPLETE"),
2894            Self::ERROR_OUT_OF_HOST_MEMORY => Some("ERROR_OUT_OF_HOST_MEMORY"),
2895            Self::ERROR_OUT_OF_DEVICE_MEMORY => Some("ERROR_OUT_OF_DEVICE_MEMORY"),
2896            Self::ERROR_INITIALIZATION_FAILED => Some("ERROR_INITIALIZATION_FAILED"),
2897            Self::ERROR_DEVICE_LOST => Some("ERROR_DEVICE_LOST"),
2898            Self::ERROR_MEMORY_MAP_FAILED => Some("ERROR_MEMORY_MAP_FAILED"),
2899            Self::ERROR_LAYER_NOT_PRESENT => Some("ERROR_LAYER_NOT_PRESENT"),
2900            Self::ERROR_EXTENSION_NOT_PRESENT => Some("ERROR_EXTENSION_NOT_PRESENT"),
2901            Self::ERROR_FEATURE_NOT_PRESENT => Some("ERROR_FEATURE_NOT_PRESENT"),
2902            Self::ERROR_INCOMPATIBLE_DRIVER => Some("ERROR_INCOMPATIBLE_DRIVER"),
2903            Self::ERROR_TOO_MANY_OBJECTS => Some("ERROR_TOO_MANY_OBJECTS"),
2904            Self::ERROR_FORMAT_NOT_SUPPORTED => Some("ERROR_FORMAT_NOT_SUPPORTED"),
2905            Self::ERROR_FRAGMENTED_POOL => Some("ERROR_FRAGMENTED_POOL"),
2906            Self::ERROR_UNKNOWN => Some("ERROR_UNKNOWN"),
2907            Self::ERROR_SURFACE_LOST_KHR => Some("ERROR_SURFACE_LOST_KHR"),
2908            Self::ERROR_NATIVE_WINDOW_IN_USE_KHR => Some("ERROR_NATIVE_WINDOW_IN_USE_KHR"),
2909            Self::SUBOPTIMAL_KHR => Some("SUBOPTIMAL_KHR"),
2910            Self::ERROR_OUT_OF_DATE_KHR => Some("ERROR_OUT_OF_DATE_KHR"),
2911            Self::ERROR_INCOMPATIBLE_DISPLAY_KHR => Some("ERROR_INCOMPATIBLE_DISPLAY_KHR"),
2912            Self::ERROR_VALIDATION_FAILED_EXT => Some("ERROR_VALIDATION_FAILED_EXT"),
2913            Self::ERROR_INVALID_SHADER_NV => Some("ERROR_INVALID_SHADER_NV"),
2914            Self::ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR => {
2915                Some("ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR")
2916            }
2917            Self::ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR => {
2918                Some("ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR")
2919            }
2920            Self::ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR => {
2921                Some("ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR")
2922            }
2923            Self::ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR => {
2924                Some("ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR")
2925            }
2926            Self::ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR => {
2927                Some("ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR")
2928            }
2929            Self::ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR => {
2930                Some("ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR")
2931            }
2932            Self::ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT => {
2933                Some("ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT")
2934            }
2935            Self::ERROR_NOT_PERMITTED_KHR => Some("ERROR_NOT_PERMITTED_KHR"),
2936            Self::ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => {
2937                Some("ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT")
2938            }
2939            Self::THREAD_IDLE_KHR => Some("THREAD_IDLE_KHR"),
2940            Self::THREAD_DONE_KHR => Some("THREAD_DONE_KHR"),
2941            Self::OPERATION_DEFERRED_KHR => Some("OPERATION_DEFERRED_KHR"),
2942            Self::OPERATION_NOT_DEFERRED_KHR => Some("OPERATION_NOT_DEFERRED_KHR"),
2943            Self::ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR => {
2944                Some("ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR")
2945            }
2946            Self::ERROR_COMPRESSION_EXHAUSTED_EXT => Some("ERROR_COMPRESSION_EXHAUSTED_EXT"),
2947            Self::ERROR_INCOMPATIBLE_SHADER_BINARY_EXT => {
2948                Some("ERROR_INCOMPATIBLE_SHADER_BINARY_EXT")
2949            }
2950            Self::ERROR_OUT_OF_POOL_MEMORY => Some("ERROR_OUT_OF_POOL_MEMORY"),
2951            Self::ERROR_INVALID_EXTERNAL_HANDLE => Some("ERROR_INVALID_EXTERNAL_HANDLE"),
2952            Self::ERROR_FRAGMENTATION => Some("ERROR_FRAGMENTATION"),
2953            Self::ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => {
2954                Some("ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS")
2955            }
2956            Self::PIPELINE_COMPILE_REQUIRED => Some("PIPELINE_COMPILE_REQUIRED"),
2957            _ => None,
2958        };
2959        if let Some(x) = name {
2960            f.write_str(x)
2961        } else {
2962            self.0.fmt(f)
2963        }
2964    }
2965}