Skip to main content

tracel_ash/vk/
enums.rs

1use core::fmt;
2#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3#[repr(transparent)]
4#[doc = "<https://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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://registry.khronos.org/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}
990#[cfg(feature = "std")]
991impl std::error::Error for Result {}
992impl fmt::Display for Result {
993    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
994        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 , } ;
995        if let Some(x) = name {
996            fmt.write_str(x)
997        } else {
998            <Self as fmt::Debug>::fmt(self, fmt)
999        }
1000    }
1001}
1002#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1003#[repr(transparent)]
1004#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html>"]
1005pub struct DynamicState(pub(crate) i32);
1006impl DynamicState {
1007    #[inline]
1008    pub const fn from_raw(x: i32) -> Self {
1009        Self(x)
1010    }
1011    #[inline]
1012    pub const fn as_raw(self) -> i32 {
1013        self.0
1014    }
1015}
1016impl DynamicState {
1017    pub const VIEWPORT: Self = Self(0);
1018    pub const SCISSOR: Self = Self(1);
1019    pub const LINE_WIDTH: Self = Self(2);
1020    pub const DEPTH_BIAS: Self = Self(3);
1021    pub const BLEND_CONSTANTS: Self = Self(4);
1022    pub const DEPTH_BOUNDS: Self = Self(5);
1023    pub const STENCIL_COMPARE_MASK: Self = Self(6);
1024    pub const STENCIL_WRITE_MASK: Self = Self(7);
1025    pub const STENCIL_REFERENCE: Self = Self(8);
1026}
1027#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1028#[repr(transparent)]
1029#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorUpdateTemplateType.html>"]
1030pub struct DescriptorUpdateTemplateType(pub(crate) i32);
1031impl DescriptorUpdateTemplateType {
1032    #[inline]
1033    pub const fn from_raw(x: i32) -> Self {
1034        Self(x)
1035    }
1036    #[inline]
1037    pub const fn as_raw(self) -> i32 {
1038        self.0
1039    }
1040}
1041impl DescriptorUpdateTemplateType {
1042    #[doc = "Create descriptor update template for descriptor set updates"]
1043    pub const DESCRIPTOR_SET: Self = Self(0);
1044}
1045#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1046#[repr(transparent)]
1047#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html>"]
1048pub struct ObjectType(pub(crate) i32);
1049impl ObjectType {
1050    #[inline]
1051    pub const fn from_raw(x: i32) -> Self {
1052        Self(x)
1053    }
1054    #[inline]
1055    pub const fn as_raw(self) -> i32 {
1056        self.0
1057    }
1058}
1059impl ObjectType {
1060    pub const UNKNOWN: Self = Self(0);
1061    pub const INSTANCE: Self = Self(1);
1062    pub const PHYSICAL_DEVICE: Self = Self(2);
1063    pub const DEVICE: Self = Self(3);
1064    pub const QUEUE: Self = Self(4);
1065    pub const SEMAPHORE: Self = Self(5);
1066    pub const COMMAND_BUFFER: Self = Self(6);
1067    pub const FENCE: Self = Self(7);
1068    pub const DEVICE_MEMORY: Self = Self(8);
1069    pub const BUFFER: Self = Self(9);
1070    pub const IMAGE: Self = Self(10);
1071    pub const EVENT: Self = Self(11);
1072    pub const QUERY_POOL: Self = Self(12);
1073    pub const BUFFER_VIEW: Self = Self(13);
1074    pub const IMAGE_VIEW: Self = Self(14);
1075    pub const SHADER_MODULE: Self = Self(15);
1076    pub const PIPELINE_CACHE: Self = Self(16);
1077    pub const PIPELINE_LAYOUT: Self = Self(17);
1078    pub const RENDER_PASS: Self = Self(18);
1079    pub const PIPELINE: Self = Self(19);
1080    pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1081    pub const SAMPLER: Self = Self(21);
1082    pub const DESCRIPTOR_POOL: Self = Self(22);
1083    pub const DESCRIPTOR_SET: Self = Self(23);
1084    pub const FRAMEBUFFER: Self = Self(24);
1085    pub const COMMAND_POOL: Self = Self(25);
1086}
1087#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1088#[repr(transparent)]
1089#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRayTracingInvocationReorderModeEXT.html>"]
1090pub struct RayTracingInvocationReorderModeEXT(pub(crate) i32);
1091impl RayTracingInvocationReorderModeEXT {
1092    #[inline]
1093    pub const fn from_raw(x: i32) -> Self {
1094        Self(x)
1095    }
1096    #[inline]
1097    pub const fn as_raw(self) -> i32 {
1098        self.0
1099    }
1100}
1101impl RayTracingInvocationReorderModeEXT {
1102    pub const NONE: Self = Self(0);
1103    pub const REORDER: Self = Self(1);
1104}
1105#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1106#[repr(transparent)]
1107#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRayTracingLssIndexingModeNV.html>"]
1108pub struct RayTracingLssIndexingModeNV(pub(crate) i32);
1109impl RayTracingLssIndexingModeNV {
1110    #[inline]
1111    pub const fn from_raw(x: i32) -> Self {
1112        Self(x)
1113    }
1114    #[inline]
1115    pub const fn as_raw(self) -> i32 {
1116        self.0
1117    }
1118}
1119impl RayTracingLssIndexingModeNV {
1120    pub const LIST: Self = Self(0);
1121    pub const SUCCESSIVE: Self = Self(1);
1122}
1123#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1124#[repr(transparent)]
1125#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRayTracingLssPrimitiveEndCapsModeNV.html>"]
1126pub struct RayTracingLssPrimitiveEndCapsModeNV(pub(crate) i32);
1127impl RayTracingLssPrimitiveEndCapsModeNV {
1128    #[inline]
1129    pub const fn from_raw(x: i32) -> Self {
1130        Self(x)
1131    }
1132    #[inline]
1133    pub const fn as_raw(self) -> i32 {
1134        self.0
1135    }
1136}
1137impl RayTracingLssPrimitiveEndCapsModeNV {
1138    pub const NONE: Self = Self(0);
1139    pub const CHAINED: Self = Self(1);
1140}
1141#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1142#[repr(transparent)]
1143#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDirectDriverLoadingModeLUNARG.html>"]
1144pub struct DirectDriverLoadingModeLUNARG(pub(crate) i32);
1145impl DirectDriverLoadingModeLUNARG {
1146    #[inline]
1147    pub const fn from_raw(x: i32) -> Self {
1148        Self(x)
1149    }
1150    #[inline]
1151    pub const fn as_raw(self) -> i32 {
1152        self.0
1153    }
1154}
1155impl DirectDriverLoadingModeLUNARG {
1156    pub const EXCLUSIVE: Self = Self(0);
1157    pub const INCLUSIVE: Self = Self(1);
1158}
1159#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1160#[repr(transparent)]
1161#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAntiLagModeAMD.html>"]
1162pub struct AntiLagModeAMD(pub(crate) i32);
1163impl AntiLagModeAMD {
1164    #[inline]
1165    pub const fn from_raw(x: i32) -> Self {
1166        Self(x)
1167    }
1168    #[inline]
1169    pub const fn as_raw(self) -> i32 {
1170        self.0
1171    }
1172}
1173impl AntiLagModeAMD {
1174    pub const DRIVER_CONTROL: Self = Self(0);
1175    pub const ON: Self = Self(1);
1176    pub const OFF: Self = Self(2);
1177}
1178#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1179#[repr(transparent)]
1180#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAntiLagStageAMD.html>"]
1181pub struct AntiLagStageAMD(pub(crate) i32);
1182impl AntiLagStageAMD {
1183    #[inline]
1184    pub const fn from_raw(x: i32) -> Self {
1185        Self(x)
1186    }
1187    #[inline]
1188    pub const fn as_raw(self) -> i32 {
1189        self.0
1190    }
1191}
1192impl AntiLagStageAMD {
1193    pub const INPUT: Self = Self(0);
1194    pub const PRESENT: Self = Self(1);
1195}
1196#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1197#[repr(transparent)]
1198#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreType.html>"]
1199pub struct SemaphoreType(pub(crate) i32);
1200impl SemaphoreType {
1201    #[inline]
1202    pub const fn from_raw(x: i32) -> Self {
1203        Self(x)
1204    }
1205    #[inline]
1206    pub const fn as_raw(self) -> i32 {
1207        self.0
1208    }
1209}
1210impl SemaphoreType {
1211    pub const BINARY: Self = Self(0);
1212    pub const TIMELINE: Self = Self(1);
1213}
1214#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1215#[repr(transparent)]
1216#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPresentModeKHR.html>"]
1217pub struct PresentModeKHR(pub(crate) i32);
1218impl PresentModeKHR {
1219    #[inline]
1220    pub const fn from_raw(x: i32) -> Self {
1221        Self(x)
1222    }
1223    #[inline]
1224    pub const fn as_raw(self) -> i32 {
1225        self.0
1226    }
1227}
1228impl PresentModeKHR {
1229    pub const IMMEDIATE: Self = Self(0);
1230    pub const MAILBOX: Self = Self(1);
1231    pub const FIFO: Self = Self(2);
1232    pub const FIFO_RELAXED: Self = Self(3);
1233}
1234#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1235#[repr(transparent)]
1236#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorSpaceKHR.html>"]
1237pub struct ColorSpaceKHR(pub(crate) i32);
1238impl ColorSpaceKHR {
1239    #[inline]
1240    pub const fn from_raw(x: i32) -> Self {
1241        Self(x)
1242    }
1243    #[inline]
1244    pub const fn as_raw(self) -> i32 {
1245        self.0
1246    }
1247}
1248impl ColorSpaceKHR {
1249    pub const SRGB_NONLINEAR: Self = Self(0);
1250}
1251#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1252#[repr(transparent)]
1253#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDisplaySurfaceStereoTypeNV.html>"]
1254pub struct DisplaySurfaceStereoTypeNV(pub(crate) i32);
1255impl DisplaySurfaceStereoTypeNV {
1256    #[inline]
1257    pub const fn from_raw(x: i32) -> Self {
1258        Self(x)
1259    }
1260    #[inline]
1261    pub const fn as_raw(self) -> i32 {
1262        self.0
1263    }
1264}
1265impl DisplaySurfaceStereoTypeNV {
1266    pub const NONE: Self = Self(0);
1267    pub const ONBOARD_DIN: Self = Self(1);
1268    pub const HDMI_3D: Self = Self(2);
1269    pub const INBAND_DISPLAYPORT: Self = Self(3);
1270}
1271#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1272#[repr(transparent)]
1273#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTimeDomainKHR.html>"]
1274pub struct TimeDomainKHR(pub(crate) i32);
1275impl TimeDomainKHR {
1276    #[inline]
1277    pub const fn from_raw(x: i32) -> Self {
1278        Self(x)
1279    }
1280    #[inline]
1281    pub const fn as_raw(self) -> i32 {
1282        self.0
1283    }
1284}
1285impl TimeDomainKHR {
1286    pub const DEVICE: Self = Self(0);
1287    pub const CLOCK_MONOTONIC: Self = Self(1);
1288    pub const CLOCK_MONOTONIC_RAW: Self = Self(2);
1289    pub const QUERY_PERFORMANCE_COUNTER: Self = Self(3);
1290}
1291#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1292#[repr(transparent)]
1293#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDebugReportObjectTypeEXT.html>"]
1294pub struct DebugReportObjectTypeEXT(pub(crate) i32);
1295impl DebugReportObjectTypeEXT {
1296    #[inline]
1297    pub const fn from_raw(x: i32) -> Self {
1298        Self(x)
1299    }
1300    #[inline]
1301    pub const fn as_raw(self) -> i32 {
1302        self.0
1303    }
1304}
1305impl DebugReportObjectTypeEXT {
1306    pub const UNKNOWN: Self = Self(0);
1307    pub const INSTANCE: Self = Self(1);
1308    pub const PHYSICAL_DEVICE: Self = Self(2);
1309    pub const DEVICE: Self = Self(3);
1310    pub const QUEUE: Self = Self(4);
1311    pub const SEMAPHORE: Self = Self(5);
1312    pub const COMMAND_BUFFER: Self = Self(6);
1313    pub const FENCE: Self = Self(7);
1314    pub const DEVICE_MEMORY: Self = Self(8);
1315    pub const BUFFER: Self = Self(9);
1316    pub const IMAGE: Self = Self(10);
1317    pub const EVENT: Self = Self(11);
1318    pub const QUERY_POOL: Self = Self(12);
1319    pub const BUFFER_VIEW: Self = Self(13);
1320    pub const IMAGE_VIEW: Self = Self(14);
1321    pub const SHADER_MODULE: Self = Self(15);
1322    pub const PIPELINE_CACHE: Self = Self(16);
1323    pub const PIPELINE_LAYOUT: Self = Self(17);
1324    pub const RENDER_PASS: Self = Self(18);
1325    pub const PIPELINE: Self = Self(19);
1326    pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1327    pub const SAMPLER: Self = Self(21);
1328    pub const DESCRIPTOR_POOL: Self = Self(22);
1329    pub const DESCRIPTOR_SET: Self = Self(23);
1330    pub const FRAMEBUFFER: Self = Self(24);
1331    pub const COMMAND_POOL: Self = Self(25);
1332    pub const SURFACE_KHR: Self = Self(26);
1333    pub const SWAPCHAIN_KHR: Self = Self(27);
1334    pub const DEBUG_REPORT_CALLBACK_EXT: Self = Self(28);
1335    pub const DISPLAY_KHR: Self = Self(29);
1336    pub const DISPLAY_MODE_KHR: Self = Self(30);
1337    pub const VALIDATION_CACHE_EXT: Self = Self(33);
1338}
1339#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1340#[repr(transparent)]
1341#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceMemoryReportEventTypeEXT.html>"]
1342pub struct DeviceMemoryReportEventTypeEXT(pub(crate) i32);
1343impl DeviceMemoryReportEventTypeEXT {
1344    #[inline]
1345    pub const fn from_raw(x: i32) -> Self {
1346        Self(x)
1347    }
1348    #[inline]
1349    pub const fn as_raw(self) -> i32 {
1350        self.0
1351    }
1352}
1353impl DeviceMemoryReportEventTypeEXT {
1354    pub const ALLOCATE: Self = Self(0);
1355    pub const FREE: Self = Self(1);
1356    pub const IMPORT: Self = Self(2);
1357    pub const UNIMPORT: Self = Self(3);
1358    pub const ALLOCATION_FAILED: Self = Self(4);
1359}
1360#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1361#[repr(transparent)]
1362#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRasterizationOrderAMD.html>"]
1363pub struct RasterizationOrderAMD(pub(crate) i32);
1364impl RasterizationOrderAMD {
1365    #[inline]
1366    pub const fn from_raw(x: i32) -> Self {
1367        Self(x)
1368    }
1369    #[inline]
1370    pub const fn as_raw(self) -> i32 {
1371        self.0
1372    }
1373}
1374impl RasterizationOrderAMD {
1375    pub const STRICT: Self = Self(0);
1376    pub const RELAXED: Self = Self(1);
1377}
1378#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1379#[repr(transparent)]
1380#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureTypeNV.html>"]
1381pub struct ClusterAccelerationStructureTypeNV(pub(crate) i32);
1382impl ClusterAccelerationStructureTypeNV {
1383    #[inline]
1384    pub const fn from_raw(x: i32) -> Self {
1385        Self(x)
1386    }
1387    #[inline]
1388    pub const fn as_raw(self) -> i32 {
1389        self.0
1390    }
1391}
1392impl ClusterAccelerationStructureTypeNV {
1393    pub const CLUSTERS_BOTTOM_LEVEL: Self = Self(0);
1394    pub const TRIANGLE_CLUSTER: Self = Self(1);
1395    pub const TRIANGLE_CLUSTER_TEMPLATE: Self = Self(2);
1396}
1397#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1398#[repr(transparent)]
1399#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureOpTypeNV.html>"]
1400pub struct ClusterAccelerationStructureOpTypeNV(pub(crate) i32);
1401impl ClusterAccelerationStructureOpTypeNV {
1402    #[inline]
1403    pub const fn from_raw(x: i32) -> Self {
1404        Self(x)
1405    }
1406    #[inline]
1407    pub const fn as_raw(self) -> i32 {
1408        self.0
1409    }
1410}
1411impl ClusterAccelerationStructureOpTypeNV {
1412    pub const MOVE_OBJECTS: Self = Self(0);
1413    pub const BUILD_CLUSTERS_BOTTOM_LEVEL: Self = Self(1);
1414    pub const BUILD_TRIANGLE_CLUSTER: Self = Self(2);
1415    pub const BUILD_TRIANGLE_CLUSTER_TEMPLATE: Self = Self(3);
1416    pub const INSTANTIATE_TRIANGLE_CLUSTER: Self = Self(4);
1417    pub const GET_CLUSTER_TEMPLATE_INDICES: Self = Self(5);
1418}
1419#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1420#[repr(transparent)]
1421#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClusterAccelerationStructureOpModeNV.html>"]
1422pub struct ClusterAccelerationStructureOpModeNV(pub(crate) i32);
1423impl ClusterAccelerationStructureOpModeNV {
1424    #[inline]
1425    pub const fn from_raw(x: i32) -> Self {
1426        Self(x)
1427    }
1428    #[inline]
1429    pub const fn as_raw(self) -> i32 {
1430        self.0
1431    }
1432}
1433impl ClusterAccelerationStructureOpModeNV {
1434    pub const IMPLICIT_DESTINATIONS: Self = Self(0);
1435    pub const EXPLICIT_DESTINATIONS: Self = Self(1);
1436    pub const COMPUTE_SIZES: Self = Self(2);
1437}
1438#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1439#[repr(transparent)]
1440#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkValidationCheckEXT.html>"]
1441pub struct ValidationCheckEXT(pub(crate) i32);
1442impl ValidationCheckEXT {
1443    #[inline]
1444    pub const fn from_raw(x: i32) -> Self {
1445        Self(x)
1446    }
1447    #[inline]
1448    pub const fn as_raw(self) -> i32 {
1449        self.0
1450    }
1451}
1452impl ValidationCheckEXT {
1453    pub const ALL: Self = Self(0);
1454    pub const SHADERS: Self = Self(1);
1455}
1456#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1457#[repr(transparent)]
1458#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkValidationFeatureEnableEXT.html>"]
1459pub struct ValidationFeatureEnableEXT(pub(crate) i32);
1460impl ValidationFeatureEnableEXT {
1461    #[inline]
1462    pub const fn from_raw(x: i32) -> Self {
1463        Self(x)
1464    }
1465    #[inline]
1466    pub const fn as_raw(self) -> i32 {
1467        self.0
1468    }
1469}
1470impl ValidationFeatureEnableEXT {
1471    pub const GPU_ASSISTED: Self = Self(0);
1472    pub const GPU_ASSISTED_RESERVE_BINDING_SLOT: Self = Self(1);
1473    pub const BEST_PRACTICES: Self = Self(2);
1474    pub const DEBUG_PRINTF: Self = Self(3);
1475    pub const SYNCHRONIZATION_VALIDATION: Self = Self(4);
1476}
1477#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1478#[repr(transparent)]
1479#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkValidationFeatureDisableEXT.html>"]
1480pub struct ValidationFeatureDisableEXT(pub(crate) i32);
1481impl ValidationFeatureDisableEXT {
1482    #[inline]
1483    pub const fn from_raw(x: i32) -> Self {
1484        Self(x)
1485    }
1486    #[inline]
1487    pub const fn as_raw(self) -> i32 {
1488        self.0
1489    }
1490}
1491impl ValidationFeatureDisableEXT {
1492    pub const ALL: Self = Self(0);
1493    pub const SHADERS: Self = Self(1);
1494    pub const THREAD_SAFETY: Self = Self(2);
1495    pub const API_PARAMETERS: Self = Self(3);
1496    pub const OBJECT_LIFETIMES: Self = Self(4);
1497    pub const CORE_CHECKS: Self = Self(5);
1498    pub const UNIQUE_HANDLES: Self = Self(6);
1499    pub const SHADER_VALIDATION_CACHE: Self = Self(7);
1500}
1501#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1502#[repr(transparent)]
1503#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLayerSettingTypeEXT.html>"]
1504pub struct LayerSettingTypeEXT(pub(crate) i32);
1505impl LayerSettingTypeEXT {
1506    #[inline]
1507    pub const fn from_raw(x: i32) -> Self {
1508        Self(x)
1509    }
1510    #[inline]
1511    pub const fn as_raw(self) -> i32 {
1512        self.0
1513    }
1514}
1515impl LayerSettingTypeEXT {
1516    pub const BOOL32: Self = Self(0);
1517    pub const INT32: Self = Self(1);
1518    pub const INT64: Self = Self(2);
1519    pub const UINT32: Self = Self(3);
1520    pub const UINT64: Self = Self(4);
1521    pub const FLOAT32: Self = Self(5);
1522    pub const FLOAT64: Self = Self(6);
1523    pub const STRING: Self = Self(7);
1524}
1525#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1526#[repr(transparent)]
1527#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsTokenTypeNV.html>"]
1528pub struct IndirectCommandsTokenTypeNV(pub(crate) i32);
1529impl IndirectCommandsTokenTypeNV {
1530    #[inline]
1531    pub const fn from_raw(x: i32) -> Self {
1532        Self(x)
1533    }
1534    #[inline]
1535    pub const fn as_raw(self) -> i32 {
1536        self.0
1537    }
1538}
1539impl IndirectCommandsTokenTypeNV {
1540    pub const SHADER_GROUP: Self = Self(0);
1541    pub const STATE_FLAGS: Self = Self(1);
1542    pub const INDEX_BUFFER: Self = Self(2);
1543    pub const VERTEX_BUFFER: Self = Self(3);
1544    pub const PUSH_CONSTANT: Self = Self(4);
1545    pub const DRAW_INDEXED: Self = Self(5);
1546    pub const DRAW: Self = Self(6);
1547    pub const DRAW_TASKS: Self = Self(7);
1548}
1549#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1550#[repr(transparent)]
1551#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDisplayPowerStateEXT.html>"]
1552pub struct DisplayPowerStateEXT(pub(crate) i32);
1553impl DisplayPowerStateEXT {
1554    #[inline]
1555    pub const fn from_raw(x: i32) -> Self {
1556        Self(x)
1557    }
1558    #[inline]
1559    pub const fn as_raw(self) -> i32 {
1560        self.0
1561    }
1562}
1563impl DisplayPowerStateEXT {
1564    pub const OFF: Self = Self(0);
1565    pub const SUSPEND: Self = Self(1);
1566    pub const ON: Self = Self(2);
1567}
1568#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1569#[repr(transparent)]
1570#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceEventTypeEXT.html>"]
1571pub struct DeviceEventTypeEXT(pub(crate) i32);
1572impl DeviceEventTypeEXT {
1573    #[inline]
1574    pub const fn from_raw(x: i32) -> Self {
1575        Self(x)
1576    }
1577    #[inline]
1578    pub const fn as_raw(self) -> i32 {
1579        self.0
1580    }
1581}
1582impl DeviceEventTypeEXT {
1583    pub const DISPLAY_HOTPLUG: Self = Self(0);
1584}
1585#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1586#[repr(transparent)]
1587#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDisplayEventTypeEXT.html>"]
1588pub struct DisplayEventTypeEXT(pub(crate) i32);
1589impl DisplayEventTypeEXT {
1590    #[inline]
1591    pub const fn from_raw(x: i32) -> Self {
1592        Self(x)
1593    }
1594    #[inline]
1595    pub const fn as_raw(self) -> i32 {
1596        self.0
1597    }
1598}
1599impl DisplayEventTypeEXT {
1600    pub const FIRST_PIXEL_OUT: Self = Self(0);
1601}
1602#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1603#[repr(transparent)]
1604#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkViewportCoordinateSwizzleNV.html>"]
1605pub struct ViewportCoordinateSwizzleNV(pub(crate) i32);
1606impl ViewportCoordinateSwizzleNV {
1607    #[inline]
1608    pub const fn from_raw(x: i32) -> Self {
1609        Self(x)
1610    }
1611    #[inline]
1612    pub const fn as_raw(self) -> i32 {
1613        self.0
1614    }
1615}
1616impl ViewportCoordinateSwizzleNV {
1617    pub const POSITIVE_X: Self = Self(0);
1618    pub const NEGATIVE_X: Self = Self(1);
1619    pub const POSITIVE_Y: Self = Self(2);
1620    pub const NEGATIVE_Y: Self = Self(3);
1621    pub const POSITIVE_Z: Self = Self(4);
1622    pub const NEGATIVE_Z: Self = Self(5);
1623    pub const POSITIVE_W: Self = Self(6);
1624    pub const NEGATIVE_W: Self = Self(7);
1625}
1626#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1627#[repr(transparent)]
1628#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDiscardRectangleModeEXT.html>"]
1629pub struct DiscardRectangleModeEXT(pub(crate) i32);
1630impl DiscardRectangleModeEXT {
1631    #[inline]
1632    pub const fn from_raw(x: i32) -> Self {
1633        Self(x)
1634    }
1635    #[inline]
1636    pub const fn as_raw(self) -> i32 {
1637        self.0
1638    }
1639}
1640impl DiscardRectangleModeEXT {
1641    pub const INCLUSIVE: Self = Self(0);
1642    pub const EXCLUSIVE: Self = Self(1);
1643}
1644#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1645#[repr(transparent)]
1646#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPointClippingBehavior.html>"]
1647pub struct PointClippingBehavior(pub(crate) i32);
1648impl PointClippingBehavior {
1649    #[inline]
1650    pub const fn from_raw(x: i32) -> Self {
1651        Self(x)
1652    }
1653    #[inline]
1654    pub const fn as_raw(self) -> i32 {
1655        self.0
1656    }
1657}
1658impl PointClippingBehavior {
1659    pub const ALL_CLIP_PLANES: Self = Self(0);
1660    pub const USER_CLIP_PLANES_ONLY: Self = Self(1);
1661}
1662#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1663#[repr(transparent)]
1664#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerReductionMode.html>"]
1665pub struct SamplerReductionMode(pub(crate) i32);
1666impl SamplerReductionMode {
1667    #[inline]
1668    pub const fn from_raw(x: i32) -> Self {
1669        Self(x)
1670    }
1671    #[inline]
1672    pub const fn as_raw(self) -> i32 {
1673        self.0
1674    }
1675}
1676impl SamplerReductionMode {
1677    pub const WEIGHTED_AVERAGE: Self = Self(0);
1678    pub const MIN: Self = Self(1);
1679    pub const MAX: Self = Self(2);
1680}
1681#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1682#[repr(transparent)]
1683#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTessellationDomainOrigin.html>"]
1684pub struct TessellationDomainOrigin(pub(crate) i32);
1685impl TessellationDomainOrigin {
1686    #[inline]
1687    pub const fn from_raw(x: i32) -> Self {
1688        Self(x)
1689    }
1690    #[inline]
1691    pub const fn as_raw(self) -> i32 {
1692        self.0
1693    }
1694}
1695impl TessellationDomainOrigin {
1696    pub const UPPER_LEFT: Self = Self(0);
1697    pub const LOWER_LEFT: Self = Self(1);
1698}
1699#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1700#[repr(transparent)]
1701#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerYcbcrModelConversion.html>"]
1702pub struct SamplerYcbcrModelConversion(pub(crate) i32);
1703impl SamplerYcbcrModelConversion {
1704    #[inline]
1705    pub const fn from_raw(x: i32) -> Self {
1706        Self(x)
1707    }
1708    #[inline]
1709    pub const fn as_raw(self) -> i32 {
1710        self.0
1711    }
1712}
1713impl SamplerYcbcrModelConversion {
1714    pub const RGB_IDENTITY: Self = Self(0);
1715    #[doc = "just range expansion"]
1716    pub const YCBCR_IDENTITY: Self = Self(1);
1717    #[doc = "aka HD YUV"]
1718    pub const YCBCR_709: Self = Self(2);
1719    #[doc = "aka SD YUV"]
1720    pub const YCBCR_601: Self = Self(3);
1721    #[doc = "aka UHD YUV"]
1722    pub const YCBCR_2020: Self = Self(4);
1723}
1724#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1725#[repr(transparent)]
1726#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerYcbcrRange.html>"]
1727pub struct SamplerYcbcrRange(pub(crate) i32);
1728impl SamplerYcbcrRange {
1729    #[inline]
1730    pub const fn from_raw(x: i32) -> Self {
1731        Self(x)
1732    }
1733    #[inline]
1734    pub const fn as_raw(self) -> i32 {
1735        self.0
1736    }
1737}
1738impl SamplerYcbcrRange {
1739    #[doc = "Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"]
1740    pub const ITU_FULL: Self = Self(0);
1741    #[doc = "Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"]
1742    pub const ITU_NARROW: Self = Self(1);
1743}
1744#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1745#[repr(transparent)]
1746#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkChromaLocation.html>"]
1747pub struct ChromaLocation(pub(crate) i32);
1748impl ChromaLocation {
1749    #[inline]
1750    pub const fn from_raw(x: i32) -> Self {
1751        Self(x)
1752    }
1753    #[inline]
1754    pub const fn as_raw(self) -> i32 {
1755        self.0
1756    }
1757}
1758impl ChromaLocation {
1759    pub const COSITED_EVEN: Self = Self(0);
1760    pub const MIDPOINT: Self = Self(1);
1761}
1762#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1763#[repr(transparent)]
1764#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendOverlapEXT.html>"]
1765pub struct BlendOverlapEXT(pub(crate) i32);
1766impl BlendOverlapEXT {
1767    #[inline]
1768    pub const fn from_raw(x: i32) -> Self {
1769        Self(x)
1770    }
1771    #[inline]
1772    pub const fn as_raw(self) -> i32 {
1773        self.0
1774    }
1775}
1776impl BlendOverlapEXT {
1777    pub const UNCORRELATED: Self = Self(0);
1778    pub const DISJOINT: Self = Self(1);
1779    pub const CONJOINT: Self = Self(2);
1780}
1781#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1782#[repr(transparent)]
1783#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCoverageModulationModeNV.html>"]
1784pub struct CoverageModulationModeNV(pub(crate) i32);
1785impl CoverageModulationModeNV {
1786    #[inline]
1787    pub const fn from_raw(x: i32) -> Self {
1788        Self(x)
1789    }
1790    #[inline]
1791    pub const fn as_raw(self) -> i32 {
1792        self.0
1793    }
1794}
1795impl CoverageModulationModeNV {
1796    pub const NONE: Self = Self(0);
1797    pub const RGB: Self = Self(1);
1798    pub const ALPHA: Self = Self(2);
1799    pub const RGBA: Self = Self(3);
1800}
1801#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1802#[repr(transparent)]
1803#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCoverageReductionModeNV.html>"]
1804pub struct CoverageReductionModeNV(pub(crate) i32);
1805impl CoverageReductionModeNV {
1806    #[inline]
1807    pub const fn from_raw(x: i32) -> Self {
1808        Self(x)
1809    }
1810    #[inline]
1811    pub const fn as_raw(self) -> i32 {
1812        self.0
1813    }
1814}
1815impl CoverageReductionModeNV {
1816    pub const MERGE: Self = Self(0);
1817    pub const TRUNCATE: Self = Self(1);
1818}
1819#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1820#[repr(transparent)]
1821#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkValidationCacheHeaderVersionEXT.html>"]
1822pub struct ValidationCacheHeaderVersionEXT(pub(crate) i32);
1823impl ValidationCacheHeaderVersionEXT {
1824    #[inline]
1825    pub const fn from_raw(x: i32) -> Self {
1826        Self(x)
1827    }
1828    #[inline]
1829    pub const fn as_raw(self) -> i32 {
1830        self.0
1831    }
1832}
1833impl ValidationCacheHeaderVersionEXT {
1834    pub const ONE: Self = Self(1);
1835}
1836#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1837#[repr(transparent)]
1838#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderInfoTypeAMD.html>"]
1839pub struct ShaderInfoTypeAMD(pub(crate) i32);
1840impl ShaderInfoTypeAMD {
1841    #[inline]
1842    pub const fn from_raw(x: i32) -> Self {
1843        Self(x)
1844    }
1845    #[inline]
1846    pub const fn as_raw(self) -> i32 {
1847        self.0
1848    }
1849}
1850impl ShaderInfoTypeAMD {
1851    pub const STATISTICS: Self = Self(0);
1852    pub const BINARY: Self = Self(1);
1853    pub const DISASSEMBLY: Self = Self(2);
1854}
1855#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1856#[repr(transparent)]
1857#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueGlobalPriority.html>"]
1858pub struct QueueGlobalPriority(pub(crate) i32);
1859impl QueueGlobalPriority {
1860    #[inline]
1861    pub const fn from_raw(x: i32) -> Self {
1862        Self(x)
1863    }
1864    #[inline]
1865    pub const fn as_raw(self) -> i32 {
1866        self.0
1867    }
1868}
1869impl QueueGlobalPriority {
1870    pub const LOW: Self = Self(128);
1871    pub const MEDIUM: Self = Self(256);
1872    pub const HIGH: Self = Self(512);
1873    pub const REALTIME: Self = Self(1_024);
1874}
1875#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1876#[repr(transparent)]
1877#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkConservativeRasterizationModeEXT.html>"]
1878pub struct ConservativeRasterizationModeEXT(pub(crate) i32);
1879impl ConservativeRasterizationModeEXT {
1880    #[inline]
1881    pub const fn from_raw(x: i32) -> Self {
1882        Self(x)
1883    }
1884    #[inline]
1885    pub const fn as_raw(self) -> i32 {
1886        self.0
1887    }
1888}
1889impl ConservativeRasterizationModeEXT {
1890    pub const DISABLED: Self = Self(0);
1891    pub const OVERESTIMATE: Self = Self(1);
1892    pub const UNDERESTIMATE: Self = Self(2);
1893}
1894#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1895#[repr(transparent)]
1896#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVendorId.html>"]
1897pub struct VendorId(pub(crate) i32);
1898impl VendorId {
1899    #[inline]
1900    pub const fn from_raw(x: i32) -> Self {
1901        Self(x)
1902    }
1903    #[inline]
1904    pub const fn as_raw(self) -> i32 {
1905        self.0
1906    }
1907}
1908impl VendorId {
1909    #[doc = "Khronos vendor ID"]
1910    pub const KHRONOS: Self = Self(0x1_0000);
1911    #[doc = "Vivante vendor ID"]
1912    pub const VIV: Self = Self(0x1_0001);
1913    #[doc = "VeriSilicon vendor ID"]
1914    pub const VSI: Self = Self(0x1_0002);
1915    #[doc = "Kazan Software Renderer"]
1916    pub const KAZAN: Self = Self(0x1_0003);
1917    #[doc = "Codeplay Software Ltd. vendor ID"]
1918    pub const CODEPLAY: Self = Self(0x1_0004);
1919    #[doc = "Mesa vendor ID"]
1920    pub const MESA: Self = Self(0x1_0005);
1921    #[doc = "PoCL vendor ID"]
1922    pub const POCL: Self = Self(0x1_0006);
1923    #[doc = "Mobileye vendor ID"]
1924    pub const MOBILEYE: Self = Self(0x1_0007);
1925}
1926#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1927#[repr(transparent)]
1928#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDriverId.html>"]
1929pub struct DriverId(pub(crate) i32);
1930impl DriverId {
1931    #[inline]
1932    pub const fn from_raw(x: i32) -> Self {
1933        Self(x)
1934    }
1935    #[inline]
1936    pub const fn as_raw(self) -> i32 {
1937        self.0
1938    }
1939}
1940impl DriverId {
1941    #[doc = "Advanced Micro Devices, Inc."]
1942    pub const AMD_PROPRIETARY: Self = Self(1);
1943    #[doc = "Advanced Micro Devices, Inc."]
1944    pub const AMD_OPEN_SOURCE: Self = Self(2);
1945    #[doc = "Mesa open source project"]
1946    pub const MESA_RADV: Self = Self(3);
1947    #[doc = "NVIDIA Corporation"]
1948    pub const NVIDIA_PROPRIETARY: Self = Self(4);
1949    #[doc = "Intel Corporation"]
1950    pub const INTEL_PROPRIETARY_WINDOWS: Self = Self(5);
1951    #[doc = "Intel Corporation"]
1952    pub const INTEL_OPEN_SOURCE_MESA: Self = Self(6);
1953    #[doc = "Imagination Technologies"]
1954    pub const IMAGINATION_PROPRIETARY: Self = Self(7);
1955    #[doc = "Qualcomm Technologies, Inc."]
1956    pub const QUALCOMM_PROPRIETARY: Self = Self(8);
1957    #[doc = "Arm Limited"]
1958    pub const ARM_PROPRIETARY: Self = Self(9);
1959    #[doc = "Google LLC"]
1960    pub const GOOGLE_SWIFTSHADER: Self = Self(10);
1961    #[doc = "Google LLC"]
1962    pub const GGP_PROPRIETARY: Self = Self(11);
1963    #[doc = "Broadcom Inc."]
1964    pub const BROADCOM_PROPRIETARY: Self = Self(12);
1965    #[doc = "Mesa"]
1966    pub const MESA_LLVMPIPE: Self = Self(13);
1967    #[doc = "MoltenVK"]
1968    pub const MOLTENVK: Self = Self(14);
1969    #[doc = "Core Avionics & Industrial Inc."]
1970    pub const COREAVI_PROPRIETARY: Self = Self(15);
1971    #[doc = "Juice Technologies, Inc."]
1972    pub const JUICE_PROPRIETARY: Self = Self(16);
1973    #[doc = "Verisilicon, Inc."]
1974    pub const VERISILICON_PROPRIETARY: Self = Self(17);
1975    #[doc = "Mesa open source project"]
1976    pub const MESA_TURNIP: Self = Self(18);
1977    #[doc = "Mesa open source project"]
1978    pub const MESA_V3DV: Self = Self(19);
1979    #[doc = "Mesa open source project"]
1980    pub const MESA_PANVK: Self = Self(20);
1981    #[doc = "Samsung Electronics Co., Ltd."]
1982    pub const SAMSUNG_PROPRIETARY: Self = Self(21);
1983    #[doc = "Mesa open source project"]
1984    pub const MESA_VENUS: Self = Self(22);
1985    #[doc = "Mesa open source project"]
1986    pub const MESA_DOZEN: Self = Self(23);
1987    #[doc = "Mesa open source project"]
1988    pub const MESA_NVK: Self = Self(24);
1989    #[doc = "Imagination Technologies"]
1990    pub const IMAGINATION_OPEN_SOURCE_MESA: Self = Self(25);
1991    #[doc = "Mesa open source project"]
1992    pub const MESA_HONEYKRISP: Self = Self(26);
1993    #[doc = "Vulkan SC Emulation on Vulkan"]
1994    pub const VULKAN_SC_EMULATION_ON_VULKAN: Self = Self(27);
1995    #[doc = "Mesa open source project"]
1996    pub const MESA_KOSMICKRISP: Self = Self(28);
1997}
1998#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1999#[repr(transparent)]
2000#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShadingRatePaletteEntryNV.html>"]
2001pub struct ShadingRatePaletteEntryNV(pub(crate) i32);
2002impl ShadingRatePaletteEntryNV {
2003    #[inline]
2004    pub const fn from_raw(x: i32) -> Self {
2005        Self(x)
2006    }
2007    #[inline]
2008    pub const fn as_raw(self) -> i32 {
2009        self.0
2010    }
2011}
2012impl ShadingRatePaletteEntryNV {
2013    pub const NO_INVOCATIONS: Self = Self(0);
2014    pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(1);
2015    pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(2);
2016    pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(3);
2017    pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(4);
2018    pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(5);
2019    pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(6);
2020    pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(7);
2021    pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(8);
2022    pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
2023    pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(10);
2024    pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(11);
2025}
2026#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2027#[repr(transparent)]
2028#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCoarseSampleOrderTypeNV.html>"]
2029pub struct CoarseSampleOrderTypeNV(pub(crate) i32);
2030impl CoarseSampleOrderTypeNV {
2031    #[inline]
2032    pub const fn from_raw(x: i32) -> Self {
2033        Self(x)
2034    }
2035    #[inline]
2036    pub const fn as_raw(self) -> i32 {
2037        self.0
2038    }
2039}
2040impl CoarseSampleOrderTypeNV {
2041    pub const DEFAULT: Self = Self(0);
2042    pub const CUSTOM: Self = Self(1);
2043    pub const PIXEL_MAJOR: Self = Self(2);
2044    pub const SAMPLE_MAJOR: Self = Self(3);
2045}
2046#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2047#[repr(transparent)]
2048#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCopyAccelerationStructureModeKHR.html>"]
2049pub struct CopyAccelerationStructureModeKHR(pub(crate) i32);
2050impl CopyAccelerationStructureModeKHR {
2051    #[inline]
2052    pub const fn from_raw(x: i32) -> Self {
2053        Self(x)
2054    }
2055    #[inline]
2056    pub const fn as_raw(self) -> i32 {
2057        self.0
2058    }
2059}
2060impl CopyAccelerationStructureModeKHR {
2061    pub const CLONE: Self = Self(0);
2062    pub const COMPACT: Self = Self(1);
2063}
2064#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2065#[repr(transparent)]
2066#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBuildAccelerationStructureModeKHR.html>"]
2067pub struct BuildAccelerationStructureModeKHR(pub(crate) i32);
2068impl BuildAccelerationStructureModeKHR {
2069    #[inline]
2070    pub const fn from_raw(x: i32) -> Self {
2071        Self(x)
2072    }
2073    #[inline]
2074    pub const fn as_raw(self) -> i32 {
2075        self.0
2076    }
2077}
2078impl BuildAccelerationStructureModeKHR {
2079    pub const BUILD: Self = Self(0);
2080    pub const UPDATE: Self = Self(1);
2081}
2082#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2083#[repr(transparent)]
2084#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureTypeKHR.html>"]
2085pub struct AccelerationStructureTypeKHR(pub(crate) i32);
2086impl AccelerationStructureTypeKHR {
2087    #[inline]
2088    pub const fn from_raw(x: i32) -> Self {
2089        Self(x)
2090    }
2091    #[inline]
2092    pub const fn as_raw(self) -> i32 {
2093        self.0
2094    }
2095}
2096impl AccelerationStructureTypeKHR {
2097    pub const TOP_LEVEL: Self = Self(0);
2098    pub const BOTTOM_LEVEL: Self = Self(1);
2099    pub const GENERIC: Self = Self(2);
2100}
2101#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2102#[repr(transparent)]
2103#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGeometryTypeKHR.html>"]
2104pub struct GeometryTypeKHR(pub(crate) i32);
2105impl GeometryTypeKHR {
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 GeometryTypeKHR {
2116    pub const TRIANGLES: Self = Self(0);
2117    pub const AABBS: Self = Self(1);
2118    pub const INSTANCES: Self = Self(2);
2119}
2120#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2121#[repr(transparent)]
2122#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureMemoryRequirementsTypeNV.html>"]
2123pub struct AccelerationStructureMemoryRequirementsTypeNV(pub(crate) i32);
2124impl AccelerationStructureMemoryRequirementsTypeNV {
2125    #[inline]
2126    pub const fn from_raw(x: i32) -> Self {
2127        Self(x)
2128    }
2129    #[inline]
2130    pub const fn as_raw(self) -> i32 {
2131        self.0
2132    }
2133}
2134impl AccelerationStructureMemoryRequirementsTypeNV {
2135    pub const OBJECT: Self = Self(0);
2136    pub const BUILD_SCRATCH: Self = Self(1);
2137    pub const UPDATE_SCRATCH: Self = Self(2);
2138}
2139#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2140#[repr(transparent)]
2141#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureBuildTypeKHR.html>"]
2142pub struct AccelerationStructureBuildTypeKHR(pub(crate) i32);
2143impl AccelerationStructureBuildTypeKHR {
2144    #[inline]
2145    pub const fn from_raw(x: i32) -> Self {
2146        Self(x)
2147    }
2148    #[inline]
2149    pub const fn as_raw(self) -> i32 {
2150        self.0
2151    }
2152}
2153impl AccelerationStructureBuildTypeKHR {
2154    pub const HOST: Self = Self(0);
2155    pub const DEVICE: Self = Self(1);
2156    pub const HOST_OR_DEVICE: Self = Self(2);
2157}
2158#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2159#[repr(transparent)]
2160#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRayTracingShaderGroupTypeKHR.html>"]
2161pub struct RayTracingShaderGroupTypeKHR(pub(crate) i32);
2162impl RayTracingShaderGroupTypeKHR {
2163    #[inline]
2164    pub const fn from_raw(x: i32) -> Self {
2165        Self(x)
2166    }
2167    #[inline]
2168    pub const fn as_raw(self) -> i32 {
2169        self.0
2170    }
2171}
2172impl RayTracingShaderGroupTypeKHR {
2173    pub const GENERAL: Self = Self(0);
2174    pub const TRIANGLES_HIT_GROUP: Self = Self(1);
2175    pub const PROCEDURAL_HIT_GROUP: Self = Self(2);
2176}
2177#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2178#[repr(transparent)]
2179#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureCompatibilityKHR.html>"]
2180pub struct AccelerationStructureCompatibilityKHR(pub(crate) i32);
2181impl AccelerationStructureCompatibilityKHR {
2182    #[inline]
2183    pub const fn from_raw(x: i32) -> Self {
2184        Self(x)
2185    }
2186    #[inline]
2187    pub const fn as_raw(self) -> i32 {
2188        self.0
2189    }
2190}
2191impl AccelerationStructureCompatibilityKHR {
2192    pub const COMPATIBLE: Self = Self(0);
2193    pub const INCOMPATIBLE: Self = Self(1);
2194}
2195#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2196#[repr(transparent)]
2197#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderGroupShaderKHR.html>"]
2198pub struct ShaderGroupShaderKHR(pub(crate) i32);
2199impl ShaderGroupShaderKHR {
2200    #[inline]
2201    pub const fn from_raw(x: i32) -> Self {
2202        Self(x)
2203    }
2204    #[inline]
2205    pub const fn as_raw(self) -> i32 {
2206        self.0
2207    }
2208}
2209impl ShaderGroupShaderKHR {
2210    pub const GENERAL: Self = Self(0);
2211    pub const CLOSEST_HIT: Self = Self(1);
2212    pub const ANY_HIT: Self = Self(2);
2213    pub const INTERSECTION: Self = Self(3);
2214}
2215#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2216#[repr(transparent)]
2217#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryOverallocationBehaviorAMD.html>"]
2218pub struct MemoryOverallocationBehaviorAMD(pub(crate) i32);
2219impl MemoryOverallocationBehaviorAMD {
2220    #[inline]
2221    pub const fn from_raw(x: i32) -> Self {
2222        Self(x)
2223    }
2224    #[inline]
2225    pub const fn as_raw(self) -> i32 {
2226        self.0
2227    }
2228}
2229impl MemoryOverallocationBehaviorAMD {
2230    pub const DEFAULT: Self = Self(0);
2231    pub const ALLOWED: Self = Self(1);
2232    pub const DISALLOWED: Self = Self(2);
2233}
2234#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2235#[repr(transparent)]
2236#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFullScreenExclusiveEXT.html>"]
2237pub struct FullScreenExclusiveEXT(pub(crate) i32);
2238impl FullScreenExclusiveEXT {
2239    #[inline]
2240    pub const fn from_raw(x: i32) -> Self {
2241        Self(x)
2242    }
2243    #[inline]
2244    pub const fn as_raw(self) -> i32 {
2245        self.0
2246    }
2247}
2248impl FullScreenExclusiveEXT {
2249    pub const DEFAULT: Self = Self(0);
2250    pub const ALLOWED: Self = Self(1);
2251    pub const DISALLOWED: Self = Self(2);
2252    pub const APPLICATION_CONTROLLED: Self = Self(3);
2253}
2254#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2255#[repr(transparent)]
2256#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterScopeKHR.html>"]
2257pub struct PerformanceCounterScopeKHR(pub(crate) i32);
2258impl PerformanceCounterScopeKHR {
2259    #[inline]
2260    pub const fn from_raw(x: i32) -> Self {
2261        Self(x)
2262    }
2263    #[inline]
2264    pub const fn as_raw(self) -> i32 {
2265        self.0
2266    }
2267}
2268impl PerformanceCounterScopeKHR {
2269    pub const COMMAND_BUFFER: Self = Self(0);
2270    pub const RENDER_PASS: Self = Self(1);
2271    pub const COMMAND: Self = Self(2);
2272}
2273#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2274#[repr(transparent)]
2275#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterUnitKHR.html>"]
2276pub struct PerformanceCounterUnitKHR(pub(crate) i32);
2277impl PerformanceCounterUnitKHR {
2278    #[inline]
2279    pub const fn from_raw(x: i32) -> Self {
2280        Self(x)
2281    }
2282    #[inline]
2283    pub const fn as_raw(self) -> i32 {
2284        self.0
2285    }
2286}
2287impl PerformanceCounterUnitKHR {
2288    pub const GENERIC: Self = Self(0);
2289    pub const PERCENTAGE: Self = Self(1);
2290    pub const NANOSECONDS: Self = Self(2);
2291    pub const BYTES: Self = Self(3);
2292    pub const BYTES_PER_SECOND: Self = Self(4);
2293    pub const KELVIN: Self = Self(5);
2294    pub const WATTS: Self = Self(6);
2295    pub const VOLTS: Self = Self(7);
2296    pub const AMPS: Self = Self(8);
2297    pub const HERTZ: Self = Self(9);
2298    pub const CYCLES: Self = Self(10);
2299}
2300#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2301#[repr(transparent)]
2302#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceCounterStorageKHR.html>"]
2303pub struct PerformanceCounterStorageKHR(pub(crate) i32);
2304impl PerformanceCounterStorageKHR {
2305    #[inline]
2306    pub const fn from_raw(x: i32) -> Self {
2307        Self(x)
2308    }
2309    #[inline]
2310    pub const fn as_raw(self) -> i32 {
2311        self.0
2312    }
2313}
2314impl PerformanceCounterStorageKHR {
2315    pub const INT32: Self = Self(0);
2316    pub const INT64: Self = Self(1);
2317    pub const UINT32: Self = Self(2);
2318    pub const UINT64: Self = Self(3);
2319    pub const FLOAT32: Self = Self(4);
2320    pub const FLOAT64: Self = Self(5);
2321}
2322#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2323#[repr(transparent)]
2324#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceConfigurationTypeINTEL.html>"]
2325pub struct PerformanceConfigurationTypeINTEL(pub(crate) i32);
2326impl PerformanceConfigurationTypeINTEL {
2327    #[inline]
2328    pub const fn from_raw(x: i32) -> Self {
2329        Self(x)
2330    }
2331    #[inline]
2332    pub const fn as_raw(self) -> i32 {
2333        self.0
2334    }
2335}
2336impl PerformanceConfigurationTypeINTEL {
2337    pub const COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED: Self = Self(0);
2338}
2339#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2340#[repr(transparent)]
2341#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPoolSamplingModeINTEL.html>"]
2342pub struct QueryPoolSamplingModeINTEL(pub(crate) i32);
2343impl QueryPoolSamplingModeINTEL {
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 QueryPoolSamplingModeINTEL {
2354    pub const MANUAL: Self = Self(0);
2355}
2356#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2357#[repr(transparent)]
2358#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceOverrideTypeINTEL.html>"]
2359pub struct PerformanceOverrideTypeINTEL(pub(crate) i32);
2360impl PerformanceOverrideTypeINTEL {
2361    #[inline]
2362    pub const fn from_raw(x: i32) -> Self {
2363        Self(x)
2364    }
2365    #[inline]
2366    pub const fn as_raw(self) -> i32 {
2367        self.0
2368    }
2369}
2370impl PerformanceOverrideTypeINTEL {
2371    pub const NULL_HARDWARE: Self = Self(0);
2372    pub const FLUSH_GPU_CACHES: Self = Self(1);
2373}
2374#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2375#[repr(transparent)]
2376#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceParameterTypeINTEL.html>"]
2377pub struct PerformanceParameterTypeINTEL(pub(crate) i32);
2378impl PerformanceParameterTypeINTEL {
2379    #[inline]
2380    pub const fn from_raw(x: i32) -> Self {
2381        Self(x)
2382    }
2383    #[inline]
2384    pub const fn as_raw(self) -> i32 {
2385        self.0
2386    }
2387}
2388impl PerformanceParameterTypeINTEL {
2389    pub const HW_COUNTERS_SUPPORTED: Self = Self(0);
2390    pub const STREAM_MARKER_VALIDS: Self = Self(1);
2391}
2392#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2393#[repr(transparent)]
2394#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPerformanceValueTypeINTEL.html>"]
2395pub struct PerformanceValueTypeINTEL(pub(crate) i32);
2396impl PerformanceValueTypeINTEL {
2397    #[inline]
2398    pub const fn from_raw(x: i32) -> Self {
2399        Self(x)
2400    }
2401    #[inline]
2402    pub const fn as_raw(self) -> i32 {
2403        self.0
2404    }
2405}
2406impl PerformanceValueTypeINTEL {
2407    pub const UINT32: Self = Self(0);
2408    pub const UINT64: Self = Self(1);
2409    pub const FLOAT: Self = Self(2);
2410    pub const BOOL: Self = Self(3);
2411    pub const STRING: Self = Self(4);
2412}
2413#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2414#[repr(transparent)]
2415#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderFloatControlsIndependence.html>"]
2416pub struct ShaderFloatControlsIndependence(pub(crate) i32);
2417impl ShaderFloatControlsIndependence {
2418    #[inline]
2419    pub const fn from_raw(x: i32) -> Self {
2420        Self(x)
2421    }
2422    #[inline]
2423    pub const fn as_raw(self) -> i32 {
2424        self.0
2425    }
2426}
2427impl ShaderFloatControlsIndependence {
2428    pub const TYPE_32_ONLY: Self = Self(0);
2429    pub const ALL: Self = Self(1);
2430    pub const NONE: Self = Self(2);
2431}
2432#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2433#[repr(transparent)]
2434#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineExecutableStatisticFormatKHR.html>"]
2435pub struct PipelineExecutableStatisticFormatKHR(pub(crate) i32);
2436impl PipelineExecutableStatisticFormatKHR {
2437    #[inline]
2438    pub const fn from_raw(x: i32) -> Self {
2439        Self(x)
2440    }
2441    #[inline]
2442    pub const fn as_raw(self) -> i32 {
2443        self.0
2444    }
2445}
2446impl PipelineExecutableStatisticFormatKHR {
2447    pub const BOOL32: Self = Self(0);
2448    pub const INT64: Self = Self(1);
2449    pub const UINT64: Self = Self(2);
2450    pub const FLOAT64: Self = Self(3);
2451}
2452#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2453#[repr(transparent)]
2454#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLineRasterizationMode.html>"]
2455pub struct LineRasterizationMode(pub(crate) i32);
2456impl LineRasterizationMode {
2457    #[inline]
2458    pub const fn from_raw(x: i32) -> Self {
2459        Self(x)
2460    }
2461    #[inline]
2462    pub const fn as_raw(self) -> i32 {
2463        self.0
2464    }
2465}
2466impl LineRasterizationMode {
2467    pub const DEFAULT: Self = Self(0);
2468    pub const RECTANGULAR: Self = Self(1);
2469    pub const BRESENHAM: Self = Self(2);
2470    pub const RECTANGULAR_SMOOTH: Self = Self(3);
2471}
2472#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2473#[repr(transparent)]
2474#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFragmentShadingRateCombinerOpKHR.html>"]
2475pub struct FragmentShadingRateCombinerOpKHR(pub(crate) i32);
2476impl FragmentShadingRateCombinerOpKHR {
2477    #[inline]
2478    pub const fn from_raw(x: i32) -> Self {
2479        Self(x)
2480    }
2481    #[inline]
2482    pub const fn as_raw(self) -> i32 {
2483        self.0
2484    }
2485}
2486impl FragmentShadingRateCombinerOpKHR {
2487    pub const KEEP: Self = Self(0);
2488    pub const REPLACE: Self = Self(1);
2489    pub const MIN: Self = Self(2);
2490    pub const MAX: Self = Self(3);
2491    pub const MUL: Self = Self(4);
2492}
2493#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2494#[repr(transparent)]
2495#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFragmentShadingRateNV.html>"]
2496pub struct FragmentShadingRateNV(pub(crate) i32);
2497impl FragmentShadingRateNV {
2498    #[inline]
2499    pub const fn from_raw(x: i32) -> Self {
2500        Self(x)
2501    }
2502    #[inline]
2503    pub const fn as_raw(self) -> i32 {
2504        self.0
2505    }
2506}
2507impl FragmentShadingRateNV {
2508    pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(0);
2509    pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(1);
2510    pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(4);
2511    pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(5);
2512    pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(6);
2513    pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
2514    pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(10);
2515    pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(11);
2516    pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(12);
2517    pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(13);
2518    pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(14);
2519    pub const NO_INVOCATIONS: Self = Self(15);
2520}
2521#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2522#[repr(transparent)]
2523#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFragmentShadingRateTypeNV.html>"]
2524pub struct FragmentShadingRateTypeNV(pub(crate) i32);
2525impl FragmentShadingRateTypeNV {
2526    #[inline]
2527    pub const fn from_raw(x: i32) -> Self {
2528        Self(x)
2529    }
2530    #[inline]
2531    pub const fn as_raw(self) -> i32 {
2532        self.0
2533    }
2534}
2535impl FragmentShadingRateTypeNV {
2536    pub const FRAGMENT_SIZE: Self = Self(0);
2537    pub const ENUMS: Self = Self(1);
2538}
2539#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2540#[repr(transparent)]
2541#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassMergeStatusEXT.html>"]
2542pub struct SubpassMergeStatusEXT(pub(crate) i32);
2543impl SubpassMergeStatusEXT {
2544    #[inline]
2545    pub const fn from_raw(x: i32) -> Self {
2546        Self(x)
2547    }
2548    #[inline]
2549    pub const fn as_raw(self) -> i32 {
2550        self.0
2551    }
2552}
2553impl SubpassMergeStatusEXT {
2554    pub const MERGED: Self = Self(0);
2555    pub const DISALLOWED: Self = Self(1);
2556    pub const NOT_MERGED_SIDE_EFFECTS: Self = Self(2);
2557    pub const NOT_MERGED_SAMPLES_MISMATCH: Self = Self(3);
2558    pub const NOT_MERGED_VIEWS_MISMATCH: Self = Self(4);
2559    pub const NOT_MERGED_ALIASING: Self = Self(5);
2560    pub const NOT_MERGED_DEPENDENCIES: Self = Self(6);
2561    pub const NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT: Self = Self(7);
2562    pub const NOT_MERGED_TOO_MANY_ATTACHMENTS: Self = Self(8);
2563    pub const NOT_MERGED_INSUFFICIENT_STORAGE: Self = Self(9);
2564    pub const NOT_MERGED_DEPTH_STENCIL_COUNT: Self = Self(10);
2565    pub const NOT_MERGED_RESOLVE_ATTACHMENT_REUSE: Self = Self(11);
2566    pub const NOT_MERGED_SINGLE_SUBPASS: Self = Self(12);
2567    pub const NOT_MERGED_UNSPECIFIED: Self = Self(13);
2568}
2569#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2570#[repr(transparent)]
2571#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkProvokingVertexModeEXT.html>"]
2572pub struct ProvokingVertexModeEXT(pub(crate) i32);
2573impl ProvokingVertexModeEXT {
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 ProvokingVertexModeEXT {
2584    pub const FIRST_VERTEX: Self = Self(0);
2585    pub const LAST_VERTEX: Self = Self(1);
2586}
2587#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2588#[repr(transparent)]
2589#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccelerationStructureMotionInstanceTypeNV.html>"]
2590pub struct AccelerationStructureMotionInstanceTypeNV(pub(crate) i32);
2591impl AccelerationStructureMotionInstanceTypeNV {
2592    #[inline]
2593    pub const fn from_raw(x: i32) -> Self {
2594        Self(x)
2595    }
2596    #[inline]
2597    pub const fn as_raw(self) -> i32 {
2598        self.0
2599    }
2600}
2601impl AccelerationStructureMotionInstanceTypeNV {
2602    pub const STATIC: Self = Self(0);
2603    pub const MATRIX_MOTION: Self = Self(1);
2604    pub const SRT_MOTION: Self = Self(2);
2605}
2606#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2607#[repr(transparent)]
2608#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceAddressBindingTypeEXT.html>"]
2609pub struct DeviceAddressBindingTypeEXT(pub(crate) i32);
2610impl DeviceAddressBindingTypeEXT {
2611    #[inline]
2612    pub const fn from_raw(x: i32) -> Self {
2613        Self(x)
2614    }
2615    #[inline]
2616    pub const fn as_raw(self) -> i32 {
2617        self.0
2618    }
2619}
2620impl DeviceAddressBindingTypeEXT {
2621    pub const BIND: Self = Self(0);
2622    pub const UNBIND: Self = Self(1);
2623}
2624#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2625#[repr(transparent)]
2626#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultStatusKHR.html>"]
2627pub struct QueryResultStatusKHR(pub(crate) i32);
2628impl QueryResultStatusKHR {
2629    #[inline]
2630    pub const fn from_raw(x: i32) -> Self {
2631        Self(x)
2632    }
2633    #[inline]
2634    pub const fn as_raw(self) -> i32 {
2635        self.0
2636    }
2637}
2638impl QueryResultStatusKHR {
2639    pub const ERROR: Self = Self(-1);
2640    pub const NOT_READY: Self = Self(0);
2641    pub const COMPLETE: Self = Self(1);
2642}
2643#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2644#[repr(transparent)]
2645#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeTuningModeKHR.html>"]
2646pub struct VideoEncodeTuningModeKHR(pub(crate) i32);
2647impl VideoEncodeTuningModeKHR {
2648    #[inline]
2649    pub const fn from_raw(x: i32) -> Self {
2650        Self(x)
2651    }
2652    #[inline]
2653    pub const fn as_raw(self) -> i32 {
2654        self.0
2655    }
2656}
2657impl VideoEncodeTuningModeKHR {
2658    pub const DEFAULT: Self = Self(0);
2659    pub const HIGH_QUALITY: Self = Self(1);
2660    pub const LOW_LATENCY: Self = Self(2);
2661    pub const ULTRA_LOW_LATENCY: Self = Self(3);
2662    pub const LOSSLESS: Self = Self(4);
2663}
2664#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2665#[repr(transparent)]
2666#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPartitionedAccelerationStructureOpTypeNV.html>"]
2667pub struct PartitionedAccelerationStructureOpTypeNV(pub(crate) i32);
2668impl PartitionedAccelerationStructureOpTypeNV {
2669    #[inline]
2670    pub const fn from_raw(x: i32) -> Self {
2671        Self(x)
2672    }
2673    #[inline]
2674    pub const fn as_raw(self) -> i32 {
2675        self.0
2676    }
2677}
2678impl PartitionedAccelerationStructureOpTypeNV {
2679    pub const WRITE_INSTANCE: Self = Self(0);
2680    pub const UPDATE_INSTANCE: Self = Self(1);
2681    pub const WRITE_PARTITION_TRANSLATION: Self = Self(2);
2682}
2683#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2684#[repr(transparent)]
2685#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeAV1PredictionModeKHR.html>"]
2686pub struct VideoEncodeAV1PredictionModeKHR(pub(crate) i32);
2687impl VideoEncodeAV1PredictionModeKHR {
2688    #[inline]
2689    pub const fn from_raw(x: i32) -> Self {
2690        Self(x)
2691    }
2692    #[inline]
2693    pub const fn as_raw(self) -> i32 {
2694        self.0
2695    }
2696}
2697impl VideoEncodeAV1PredictionModeKHR {
2698    pub const INTRA_ONLY: Self = Self(0);
2699    pub const SINGLE_REFERENCE: Self = Self(1);
2700    pub const UNIDIRECTIONAL_COMPOUND: Self = Self(2);
2701    pub const BIDIRECTIONAL_COMPOUND: Self = Self(3);
2702}
2703#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2704#[repr(transparent)]
2705#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVideoEncodeAV1RateControlGroupKHR.html>"]
2706pub struct VideoEncodeAV1RateControlGroupKHR(pub(crate) i32);
2707impl VideoEncodeAV1RateControlGroupKHR {
2708    #[inline]
2709    pub const fn from_raw(x: i32) -> Self {
2710        Self(x)
2711    }
2712    #[inline]
2713    pub const fn as_raw(self) -> i32 {
2714        self.0
2715    }
2716}
2717impl VideoEncodeAV1RateControlGroupKHR {
2718    pub const INTRA: Self = Self(0);
2719    pub const PREDICTIVE: Self = Self(1);
2720    pub const BIPREDICTIVE: Self = Self(2);
2721}
2722#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2723#[repr(transparent)]
2724#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineRobustnessBufferBehavior.html>"]
2725pub struct PipelineRobustnessBufferBehavior(pub(crate) i32);
2726impl PipelineRobustnessBufferBehavior {
2727    #[inline]
2728    pub const fn from_raw(x: i32) -> Self {
2729        Self(x)
2730    }
2731    #[inline]
2732    pub const fn as_raw(self) -> i32 {
2733        self.0
2734    }
2735}
2736impl PipelineRobustnessBufferBehavior {
2737    pub const DEVICE_DEFAULT: Self = Self(0);
2738    pub const DISABLED: Self = Self(1);
2739    pub const ROBUST_BUFFER_ACCESS: Self = Self(2);
2740    pub const ROBUST_BUFFER_ACCESS_2: Self = Self(3);
2741}
2742#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2743#[repr(transparent)]
2744#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineRobustnessImageBehavior.html>"]
2745pub struct PipelineRobustnessImageBehavior(pub(crate) i32);
2746impl PipelineRobustnessImageBehavior {
2747    #[inline]
2748    pub const fn from_raw(x: i32) -> Self {
2749        Self(x)
2750    }
2751    #[inline]
2752    pub const fn as_raw(self) -> i32 {
2753        self.0
2754    }
2755}
2756impl PipelineRobustnessImageBehavior {
2757    pub const DEVICE_DEFAULT: Self = Self(0);
2758    pub const DISABLED: Self = Self(1);
2759    pub const ROBUST_IMAGE_ACCESS: Self = Self(2);
2760    pub const ROBUST_IMAGE_ACCESS_2: Self = Self(3);
2761}
2762#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2763#[repr(transparent)]
2764#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowPerformanceLevelNV.html>"]
2765pub struct OpticalFlowPerformanceLevelNV(pub(crate) i32);
2766impl OpticalFlowPerformanceLevelNV {
2767    #[inline]
2768    pub const fn from_raw(x: i32) -> Self {
2769        Self(x)
2770    }
2771    #[inline]
2772    pub const fn as_raw(self) -> i32 {
2773        self.0
2774    }
2775}
2776impl OpticalFlowPerformanceLevelNV {
2777    pub const UNKNOWN: Self = Self(0);
2778    pub const SLOW: Self = Self(1);
2779    pub const MEDIUM: Self = Self(2);
2780    pub const FAST: Self = Self(3);
2781}
2782#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2783#[repr(transparent)]
2784#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpticalFlowSessionBindingPointNV.html>"]
2785pub struct OpticalFlowSessionBindingPointNV(pub(crate) i32);
2786impl OpticalFlowSessionBindingPointNV {
2787    #[inline]
2788    pub const fn from_raw(x: i32) -> Self {
2789        Self(x)
2790    }
2791    #[inline]
2792    pub const fn as_raw(self) -> i32 {
2793        self.0
2794    }
2795}
2796impl OpticalFlowSessionBindingPointNV {
2797    pub const UNKNOWN: Self = Self(0);
2798    pub const INPUT: Self = Self(1);
2799    pub const REFERENCE: Self = Self(2);
2800    pub const HINT: Self = Self(3);
2801    pub const FLOW_VECTOR: Self = Self(4);
2802    pub const BACKWARD_FLOW_VECTOR: Self = Self(5);
2803    pub const COST: Self = Self(6);
2804    pub const BACKWARD_COST: Self = Self(7);
2805    pub const GLOBAL_FLOW: Self = Self(8);
2806}
2807#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2808#[repr(transparent)]
2809#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMicromapTypeEXT.html>"]
2810pub struct MicromapTypeEXT(pub(crate) i32);
2811impl MicromapTypeEXT {
2812    #[inline]
2813    pub const fn from_raw(x: i32) -> Self {
2814        Self(x)
2815    }
2816    #[inline]
2817    pub const fn as_raw(self) -> i32 {
2818        self.0
2819    }
2820}
2821impl MicromapTypeEXT {
2822    pub const OPACITY_MICROMAP: Self = Self(0);
2823}
2824#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2825#[repr(transparent)]
2826#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCopyMicromapModeEXT.html>"]
2827pub struct CopyMicromapModeEXT(pub(crate) i32);
2828impl CopyMicromapModeEXT {
2829    #[inline]
2830    pub const fn from_raw(x: i32) -> Self {
2831        Self(x)
2832    }
2833    #[inline]
2834    pub const fn as_raw(self) -> i32 {
2835        self.0
2836    }
2837}
2838impl CopyMicromapModeEXT {
2839    pub const CLONE: Self = Self(0);
2840    pub const SERIALIZE: Self = Self(1);
2841    pub const DESERIALIZE: Self = Self(2);
2842    pub const COMPACT: Self = Self(3);
2843}
2844#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2845#[repr(transparent)]
2846#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBuildMicromapModeEXT.html>"]
2847pub struct BuildMicromapModeEXT(pub(crate) i32);
2848impl BuildMicromapModeEXT {
2849    #[inline]
2850    pub const fn from_raw(x: i32) -> Self {
2851        Self(x)
2852    }
2853    #[inline]
2854    pub const fn as_raw(self) -> i32 {
2855        self.0
2856    }
2857}
2858impl BuildMicromapModeEXT {
2859    pub const BUILD: Self = Self(0);
2860}
2861#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2862#[repr(transparent)]
2863#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpacityMicromapFormatEXT.html>"]
2864pub struct OpacityMicromapFormatEXT(pub(crate) i32);
2865impl OpacityMicromapFormatEXT {
2866    #[inline]
2867    pub const fn from_raw(x: i32) -> Self {
2868        Self(x)
2869    }
2870    #[inline]
2871    pub const fn as_raw(self) -> i32 {
2872        self.0
2873    }
2874}
2875impl OpacityMicromapFormatEXT {
2876    pub const TYPE_2_STATE: Self = Self(1);
2877    pub const TYPE_4_STATE: Self = Self(2);
2878}
2879#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2880#[repr(transparent)]
2881#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOpacityMicromapSpecialIndexEXT.html>"]
2882pub struct OpacityMicromapSpecialIndexEXT(pub(crate) i32);
2883impl OpacityMicromapSpecialIndexEXT {
2884    #[inline]
2885    pub const fn from_raw(x: i32) -> Self {
2886        Self(x)
2887    }
2888    #[inline]
2889    pub const fn as_raw(self) -> i32 {
2890        self.0
2891    }
2892}
2893impl OpacityMicromapSpecialIndexEXT {
2894    pub const FULLY_TRANSPARENT: Self = Self(-1);
2895    pub const FULLY_OPAQUE: Self = Self(-2);
2896    pub const FULLY_UNKNOWN_TRANSPARENT: Self = Self(-3);
2897    pub const FULLY_UNKNOWN_OPAQUE: Self = Self(-4);
2898}
2899#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2900#[repr(transparent)]
2901#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDepthBiasRepresentationEXT.html>"]
2902pub struct DepthBiasRepresentationEXT(pub(crate) i32);
2903impl DepthBiasRepresentationEXT {
2904    #[inline]
2905    pub const fn from_raw(x: i32) -> Self {
2906        Self(x)
2907    }
2908    #[inline]
2909    pub const fn as_raw(self) -> i32 {
2910        self.0
2911    }
2912}
2913impl DepthBiasRepresentationEXT {
2914    pub const LEAST_REPRESENTABLE_VALUE_FORMAT: Self = Self(0);
2915    pub const LEAST_REPRESENTABLE_VALUE_FORCE_UNORM: Self = Self(1);
2916    pub const FLOAT: Self = Self(2);
2917}
2918#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2919#[repr(transparent)]
2920#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceFaultAddressTypeEXT.html>"]
2921pub struct DeviceFaultAddressTypeEXT(pub(crate) i32);
2922impl DeviceFaultAddressTypeEXT {
2923    #[inline]
2924    pub const fn from_raw(x: i32) -> Self {
2925        Self(x)
2926    }
2927    #[inline]
2928    pub const fn as_raw(self) -> i32 {
2929        self.0
2930    }
2931}
2932impl DeviceFaultAddressTypeEXT {
2933    #[doc = "Currently unused"]
2934    pub const NONE: Self = Self(0);
2935    pub const READ_INVALID: Self = Self(1);
2936    pub const WRITE_INVALID: Self = Self(2);
2937    pub const EXECUTE_INVALID: Self = Self(3);
2938    pub const INSTRUCTION_POINTER_UNKNOWN: Self = Self(4);
2939    pub const INSTRUCTION_POINTER_INVALID: Self = Self(5);
2940    pub const INSTRUCTION_POINTER_FAULT: Self = Self(6);
2941}
2942#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2943#[repr(transparent)]
2944#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceFaultVendorBinaryHeaderVersionEXT.html>"]
2945pub struct DeviceFaultVendorBinaryHeaderVersionEXT(pub(crate) i32);
2946impl DeviceFaultVendorBinaryHeaderVersionEXT {
2947    #[inline]
2948    pub const fn from_raw(x: i32) -> Self {
2949        Self(x)
2950    }
2951    #[inline]
2952    pub const fn as_raw(self) -> i32 {
2953        self.0
2954    }
2955}
2956impl DeviceFaultVendorBinaryHeaderVersionEXT {
2957    pub const ONE: Self = Self(1);
2958}
2959#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2960#[repr(transparent)]
2961#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectExecutionSetInfoTypeEXT.html>"]
2962pub struct IndirectExecutionSetInfoTypeEXT(pub(crate) i32);
2963impl IndirectExecutionSetInfoTypeEXT {
2964    #[inline]
2965    pub const fn from_raw(x: i32) -> Self {
2966        Self(x)
2967    }
2968    #[inline]
2969    pub const fn as_raw(self) -> i32 {
2970        self.0
2971    }
2972}
2973impl IndirectExecutionSetInfoTypeEXT {
2974    pub const PIPELINES: Self = Self(0);
2975    pub const SHADER_OBJECTS: Self = Self(1);
2976}
2977#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2978#[repr(transparent)]
2979#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndirectCommandsTokenTypeEXT.html>"]
2980pub struct IndirectCommandsTokenTypeEXT(pub(crate) i32);
2981impl IndirectCommandsTokenTypeEXT {
2982    #[inline]
2983    pub const fn from_raw(x: i32) -> Self {
2984        Self(x)
2985    }
2986    #[inline]
2987    pub const fn as_raw(self) -> i32 {
2988        self.0
2989    }
2990}
2991impl IndirectCommandsTokenTypeEXT {
2992    pub const EXECUTION_SET: Self = Self(0);
2993    pub const PUSH_CONSTANT: Self = Self(1);
2994    pub const SEQUENCE_INDEX: Self = Self(2);
2995    pub const INDEX_BUFFER: Self = Self(3);
2996    pub const VERTEX_BUFFER: Self = Self(4);
2997    pub const DRAW_INDEXED: Self = Self(5);
2998    pub const DRAW: Self = Self(6);
2999    pub const DRAW_INDEXED_COUNT: Self = Self(7);
3000    pub const DRAW_COUNT: Self = Self(8);
3001    pub const DISPATCH: Self = Self(9);
3002}
3003#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3004#[repr(transparent)]
3005#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDisplacementMicromapFormatNV.html>"]
3006pub struct DisplacementMicromapFormatNV(pub(crate) i32);
3007impl DisplacementMicromapFormatNV {
3008    #[inline]
3009    pub const fn from_raw(x: i32) -> Self {
3010        Self(x)
3011    }
3012    #[inline]
3013    pub const fn as_raw(self) -> i32 {
3014        self.0
3015    }
3016}
3017impl DisplacementMicromapFormatNV {
3018    pub const TYPE_64_TRIANGLES_64_BYTES: Self = Self(1);
3019    pub const TYPE_256_TRIANGLES_128_BYTES: Self = Self(2);
3020    pub const TYPE_1024_TRIANGLES_128_BYTES: Self = Self(3);
3021}
3022#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3023#[repr(transparent)]
3024#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderCodeTypeEXT.html>"]
3025pub struct ShaderCodeTypeEXT(pub(crate) i32);
3026impl ShaderCodeTypeEXT {
3027    #[inline]
3028    pub const fn from_raw(x: i32) -> Self {
3029        Self(x)
3030    }
3031    #[inline]
3032    pub const fn as_raw(self) -> i32 {
3033        self.0
3034    }
3035}
3036impl ShaderCodeTypeEXT {
3037    pub const BINARY: Self = Self(0);
3038    pub const SPIRV: Self = Self(1);
3039}
3040#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3041#[repr(transparent)]
3042#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkScopeKHR.html>"]
3043pub struct ScopeKHR(pub(crate) i32);
3044impl ScopeKHR {
3045    #[inline]
3046    pub const fn from_raw(x: i32) -> Self {
3047        Self(x)
3048    }
3049    #[inline]
3050    pub const fn as_raw(self) -> i32 {
3051        self.0
3052    }
3053}
3054impl ScopeKHR {
3055    pub const DEVICE: Self = Self(1);
3056    pub const WORKGROUP: Self = Self(2);
3057    pub const SUBGROUP: Self = Self(3);
3058    pub const QUEUE_FAMILY: Self = Self(5);
3059}
3060#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3061#[repr(transparent)]
3062#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentTypeKHR.html>"]
3063pub struct ComponentTypeKHR(pub(crate) i32);
3064impl ComponentTypeKHR {
3065    #[inline]
3066    pub const fn from_raw(x: i32) -> Self {
3067        Self(x)
3068    }
3069    #[inline]
3070    pub const fn as_raw(self) -> i32 {
3071        self.0
3072    }
3073}
3074impl ComponentTypeKHR {
3075    pub const FLOAT16: Self = Self(0);
3076    pub const FLOAT32: Self = Self(1);
3077    pub const FLOAT64: Self = Self(2);
3078    pub const SINT8: Self = Self(3);
3079    pub const SINT16: Self = Self(4);
3080    pub const SINT32: Self = Self(5);
3081    pub const SINT64: Self = Self(6);
3082    pub const UINT8: Self = Self(7);
3083    pub const UINT16: Self = Self(8);
3084    pub const UINT32: Self = Self(9);
3085    pub const UINT64: Self = Self(10);
3086}
3087#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3088#[repr(transparent)]
3089#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCubicFilterWeightsQCOM.html>"]
3090pub struct CubicFilterWeightsQCOM(pub(crate) i32);
3091impl CubicFilterWeightsQCOM {
3092    #[inline]
3093    pub const fn from_raw(x: i32) -> Self {
3094        Self(x)
3095    }
3096    #[inline]
3097    pub const fn as_raw(self) -> i32 {
3098        self.0
3099    }
3100}
3101impl CubicFilterWeightsQCOM {
3102    pub const CATMULL_ROM: Self = Self(0);
3103    pub const ZERO_TANGENT_CARDINAL: Self = Self(1);
3104    pub const B_SPLINE: Self = Self(2);
3105    pub const MITCHELL_NETRAVALI: Self = Self(3);
3106}
3107#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3108#[repr(transparent)]
3109#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlockMatchWindowCompareModeQCOM.html>"]
3110pub struct BlockMatchWindowCompareModeQCOM(pub(crate) i32);
3111impl BlockMatchWindowCompareModeQCOM {
3112    #[inline]
3113    pub const fn from_raw(x: i32) -> Self {
3114        Self(x)
3115    }
3116    #[inline]
3117    pub const fn as_raw(self) -> i32 {
3118        self.0
3119    }
3120}
3121impl BlockMatchWindowCompareModeQCOM {
3122    pub const MIN: Self = Self(0);
3123    pub const MAX: Self = Self(1);
3124}
3125#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3126#[repr(transparent)]
3127#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLayeredApiKHR.html>"]
3128pub struct PhysicalDeviceLayeredApiKHR(pub(crate) i32);
3129impl PhysicalDeviceLayeredApiKHR {
3130    #[inline]
3131    pub const fn from_raw(x: i32) -> Self {
3132        Self(x)
3133    }
3134    #[inline]
3135    pub const fn as_raw(self) -> i32 {
3136        self.0
3137    }
3138}
3139impl PhysicalDeviceLayeredApiKHR {
3140    pub const VULKAN: Self = Self(0);
3141    pub const D3D12: Self = Self(1);
3142    pub const METAL: Self = Self(2);
3143    pub const OPENGL: Self = Self(3);
3144    pub const OPENGLES: Self = Self(4);
3145}
3146#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3147#[repr(transparent)]
3148#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLayeredDriverUnderlyingApiMSFT.html>"]
3149pub struct LayeredDriverUnderlyingApiMSFT(pub(crate) i32);
3150impl LayeredDriverUnderlyingApiMSFT {
3151    #[inline]
3152    pub const fn from_raw(x: i32) -> Self {
3153        Self(x)
3154    }
3155    #[inline]
3156    pub const fn as_raw(self) -> i32 {
3157        self.0
3158    }
3159}
3160impl LayeredDriverUnderlyingApiMSFT {
3161    pub const NONE: Self = Self(0);
3162    pub const D3D12: Self = Self(1);
3163}
3164#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3165#[repr(transparent)]
3166#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLatencyMarkerNV.html>"]
3167pub struct LatencyMarkerNV(pub(crate) i32);
3168impl LatencyMarkerNV {
3169    #[inline]
3170    pub const fn from_raw(x: i32) -> Self {
3171        Self(x)
3172    }
3173    #[inline]
3174    pub const fn as_raw(self) -> i32 {
3175        self.0
3176    }
3177}
3178impl LatencyMarkerNV {
3179    pub const SIMULATION_START: Self = Self(0);
3180    pub const SIMULATION_END: Self = Self(1);
3181    pub const RENDERSUBMIT_START: Self = Self(2);
3182    pub const RENDERSUBMIT_END: Self = Self(3);
3183    pub const PRESENT_START: Self = Self(4);
3184    pub const PRESENT_END: Self = Self(5);
3185    pub const INPUT_SAMPLE: Self = Self(6);
3186    pub const TRIGGER_FLASH: Self = Self(7);
3187    pub const OUT_OF_BAND_RENDERSUBMIT_START: Self = Self(8);
3188    pub const OUT_OF_BAND_RENDERSUBMIT_END: Self = Self(9);
3189    pub const OUT_OF_BAND_PRESENT_START: Self = Self(10);
3190    pub const OUT_OF_BAND_PRESENT_END: Self = Self(11);
3191}
3192#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3193#[repr(transparent)]
3194#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOutOfBandQueueTypeNV.html>"]
3195pub struct OutOfBandQueueTypeNV(pub(crate) i32);
3196impl OutOfBandQueueTypeNV {
3197    #[inline]
3198    pub const fn from_raw(x: i32) -> Self {
3199        Self(x)
3200    }
3201    #[inline]
3202    pub const fn as_raw(self) -> i32 {
3203        self.0
3204    }
3205}
3206impl OutOfBandQueueTypeNV {
3207    pub const RENDER: Self = Self(0);
3208    pub const PRESENT: Self = Self(1);
3209}
3210#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3211#[repr(transparent)]
3212#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompressedTriangleFormatAMDX.html>"]
3213pub struct CompressedTriangleFormatAMDX(pub(crate) i32);
3214impl CompressedTriangleFormatAMDX {
3215    #[inline]
3216    pub const fn from_raw(x: i32) -> Self {
3217        Self(x)
3218    }
3219    #[inline]
3220    pub const fn as_raw(self) -> i32 {
3221        self.0
3222    }
3223}
3224impl CompressedTriangleFormatAMDX {
3225    pub const DGF1: Self = Self(0);
3226}
3227#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3228#[repr(transparent)]
3229#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDepthClampModeEXT.html>"]
3230pub struct DepthClampModeEXT(pub(crate) i32);
3231impl DepthClampModeEXT {
3232    #[inline]
3233    pub const fn from_raw(x: i32) -> Self {
3234        Self(x)
3235    }
3236    #[inline]
3237    pub const fn as_raw(self) -> i32 {
3238        self.0
3239    }
3240}
3241impl DepthClampModeEXT {
3242    pub const VIEWPORT_RANGE: Self = Self(0);
3243    pub const USER_DEFINED_RANGE: Self = Self(1);
3244}
3245#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3246#[repr(transparent)]
3247#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCooperativeVectorMatrixLayoutNV.html>"]
3248pub struct CooperativeVectorMatrixLayoutNV(pub(crate) i32);
3249impl CooperativeVectorMatrixLayoutNV {
3250    #[inline]
3251    pub const fn from_raw(x: i32) -> Self {
3252        Self(x)
3253    }
3254    #[inline]
3255    pub const fn as_raw(self) -> i32 {
3256        self.0
3257    }
3258}
3259impl CooperativeVectorMatrixLayoutNV {
3260    pub const ROW_MAJOR: Self = Self(0);
3261    pub const COLUMN_MAJOR: Self = Self(1);
3262    pub const INFERENCING_OPTIMAL: Self = Self(2);
3263    pub const TRAINING_OPTIMAL: Self = Self(3);
3264}
3265#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3266#[repr(transparent)]
3267#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkTensorTilingARM.html>"]
3268pub struct TensorTilingARM(pub(crate) i32);
3269impl TensorTilingARM {
3270    #[inline]
3271    pub const fn from_raw(x: i32) -> Self {
3272        Self(x)
3273    }
3274    #[inline]
3275    pub const fn as_raw(self) -> i32 {
3276        self.0
3277    }
3278}
3279impl TensorTilingARM {
3280    pub const OPTIMAL: Self = Self(0);
3281    pub const LINEAR: Self = Self(1);
3282}
3283#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3284#[repr(transparent)]
3285#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDefaultVertexAttributeValueKHR.html>"]
3286pub struct DefaultVertexAttributeValueKHR(pub(crate) i32);
3287impl DefaultVertexAttributeValueKHR {
3288    #[inline]
3289    pub const fn from_raw(x: i32) -> Self {
3290        Self(x)
3291    }
3292    #[inline]
3293    pub const fn as_raw(self) -> i32 {
3294        self.0
3295    }
3296}
3297impl DefaultVertexAttributeValueKHR {
3298    pub const ZERO_ZERO_ZERO_ZERO: Self = Self(0);
3299    pub const ZERO_ZERO_ZERO_ONE: Self = Self(1);
3300}
3301#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3302#[repr(transparent)]
3303#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDataGraphPipelineSessionBindPointARM.html>"]
3304pub struct DataGraphPipelineSessionBindPointARM(pub(crate) i32);
3305impl DataGraphPipelineSessionBindPointARM {
3306    #[inline]
3307    pub const fn from_raw(x: i32) -> Self {
3308        Self(x)
3309    }
3310    #[inline]
3311    pub const fn as_raw(self) -> i32 {
3312        self.0
3313    }
3314}
3315impl DataGraphPipelineSessionBindPointARM {
3316    pub const TRANSIENT: Self = Self(0);
3317}
3318#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3319#[repr(transparent)]
3320#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDataGraphPipelineSessionBindPointTypeARM.html>"]
3321pub struct DataGraphPipelineSessionBindPointTypeARM(pub(crate) i32);
3322impl DataGraphPipelineSessionBindPointTypeARM {
3323    #[inline]
3324    pub const fn from_raw(x: i32) -> Self {
3325        Self(x)
3326    }
3327    #[inline]
3328    pub const fn as_raw(self) -> i32 {
3329        self.0
3330    }
3331}
3332impl DataGraphPipelineSessionBindPointTypeARM {
3333    pub const MEMORY: Self = Self(0);
3334}
3335#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3336#[repr(transparent)]
3337#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDataGraphPipelinePropertyARM.html>"]
3338pub struct DataGraphPipelinePropertyARM(pub(crate) i32);
3339impl DataGraphPipelinePropertyARM {
3340    #[inline]
3341    pub const fn from_raw(x: i32) -> Self {
3342        Self(x)
3343    }
3344    #[inline]
3345    pub const fn as_raw(self) -> i32 {
3346        self.0
3347    }
3348}
3349impl DataGraphPipelinePropertyARM {
3350    pub const CREATION_LOG: Self = Self(0);
3351    pub const IDENTIFIER: Self = Self(1);
3352}
3353#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3354#[repr(transparent)]
3355#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDataGraphProcessingEngineTypeARM.html>"]
3356pub struct PhysicalDeviceDataGraphProcessingEngineTypeARM(pub(crate) i32);
3357impl PhysicalDeviceDataGraphProcessingEngineTypeARM {
3358    #[inline]
3359    pub const fn from_raw(x: i32) -> Self {
3360        Self(x)
3361    }
3362    #[inline]
3363    pub const fn as_raw(self) -> i32 {
3364        self.0
3365    }
3366}
3367impl PhysicalDeviceDataGraphProcessingEngineTypeARM {
3368    pub const DEFAULT: Self = Self(0);
3369}
3370#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3371#[repr(transparent)]
3372#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDataGraphOperationTypeARM.html>"]
3373pub struct PhysicalDeviceDataGraphOperationTypeARM(pub(crate) i32);
3374impl PhysicalDeviceDataGraphOperationTypeARM {
3375    #[inline]
3376    pub const fn from_raw(x: i32) -> Self {
3377        Self(x)
3378    }
3379    #[inline]
3380    pub const fn as_raw(self) -> i32 {
3381        self.0
3382    }
3383}
3384impl PhysicalDeviceDataGraphOperationTypeARM {
3385    pub const SPIRV_EXTENDED_INSTRUCTION_SET: Self = Self(0);
3386}
3387#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3388#[repr(transparent)]
3389#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDataGraphModelCacheTypeQCOM.html>"]
3390pub struct DataGraphModelCacheTypeQCOM(pub(crate) i32);
3391impl DataGraphModelCacheTypeQCOM {
3392    #[inline]
3393    pub const fn from_raw(x: i32) -> Self {
3394        Self(x)
3395    }
3396    #[inline]
3397    pub const fn as_raw(self) -> i32 {
3398        self.0
3399    }
3400}
3401impl DataGraphModelCacheTypeQCOM {
3402    pub const GENERIC_BINARY: Self = Self(0);
3403}
3404#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3405#[repr(transparent)]
3406#[doc = "<https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorMappingSourceEXT.html>"]
3407pub struct DescriptorMappingSourceEXT(pub(crate) i32);
3408impl DescriptorMappingSourceEXT {
3409    #[inline]
3410    pub const fn from_raw(x: i32) -> Self {
3411        Self(x)
3412    }
3413    #[inline]
3414    pub const fn as_raw(self) -> i32 {
3415        self.0
3416    }
3417}
3418impl DescriptorMappingSourceEXT {
3419    pub const HEAP_WITH_CONSTANT_OFFSET: Self = Self(0);
3420    pub const HEAP_WITH_PUSH_INDEX: Self = Self(1);
3421    pub const HEAP_WITH_INDIRECT_INDEX: Self = Self(2);
3422    pub const HEAP_WITH_INDIRECT_INDEX_ARRAY: Self = Self(3);
3423    pub const RESOURCE_HEAP_DATA: Self = Self(4);
3424    pub const PUSH_DATA: Self = Self(5);
3425    pub const PUSH_ADDRESS: Self = Self(6);
3426    pub const INDIRECT_ADDRESS: Self = Self(7);
3427}
3428impl fmt::Debug for ObjectType {
3429    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3430        let name = match *self {
3431            Self::UNKNOWN => Some("UNKNOWN"),
3432            Self::INSTANCE => Some("INSTANCE"),
3433            Self::PHYSICAL_DEVICE => Some("PHYSICAL_DEVICE"),
3434            Self::DEVICE => Some("DEVICE"),
3435            Self::QUEUE => Some("QUEUE"),
3436            Self::SEMAPHORE => Some("SEMAPHORE"),
3437            Self::COMMAND_BUFFER => Some("COMMAND_BUFFER"),
3438            Self::FENCE => Some("FENCE"),
3439            Self::DEVICE_MEMORY => Some("DEVICE_MEMORY"),
3440            Self::BUFFER => Some("BUFFER"),
3441            Self::IMAGE => Some("IMAGE"),
3442            Self::EVENT => Some("EVENT"),
3443            Self::QUERY_POOL => Some("QUERY_POOL"),
3444            Self::BUFFER_VIEW => Some("BUFFER_VIEW"),
3445            Self::IMAGE_VIEW => Some("IMAGE_VIEW"),
3446            Self::SHADER_MODULE => Some("SHADER_MODULE"),
3447            Self::PIPELINE_CACHE => Some("PIPELINE_CACHE"),
3448            Self::PIPELINE_LAYOUT => Some("PIPELINE_LAYOUT"),
3449            Self::RENDER_PASS => Some("RENDER_PASS"),
3450            Self::PIPELINE => Some("PIPELINE"),
3451            Self::DESCRIPTOR_SET_LAYOUT => Some("DESCRIPTOR_SET_LAYOUT"),
3452            Self::SAMPLER => Some("SAMPLER"),
3453            Self::DESCRIPTOR_POOL => Some("DESCRIPTOR_POOL"),
3454            Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"),
3455            Self::FRAMEBUFFER => Some("FRAMEBUFFER"),
3456            Self::COMMAND_POOL => Some("COMMAND_POOL"),
3457            Self::SURFACE_KHR => Some("SURFACE_KHR"),
3458            Self::SWAPCHAIN_KHR => Some("SWAPCHAIN_KHR"),
3459            Self::DISPLAY_KHR => Some("DISPLAY_KHR"),
3460            Self::DISPLAY_MODE_KHR => Some("DISPLAY_MODE_KHR"),
3461            Self::DEBUG_REPORT_CALLBACK_EXT => Some("DEBUG_REPORT_CALLBACK_EXT"),
3462            Self::VIDEO_SESSION_KHR => Some("VIDEO_SESSION_KHR"),
3463            Self::VIDEO_SESSION_PARAMETERS_KHR => Some("VIDEO_SESSION_PARAMETERS_KHR"),
3464            Self::CU_MODULE_NVX => Some("CU_MODULE_NVX"),
3465            Self::CU_FUNCTION_NVX => Some("CU_FUNCTION_NVX"),
3466            Self::DEBUG_UTILS_MESSENGER_EXT => Some("DEBUG_UTILS_MESSENGER_EXT"),
3467            Self::ACCELERATION_STRUCTURE_KHR => Some("ACCELERATION_STRUCTURE_KHR"),
3468            Self::VALIDATION_CACHE_EXT => Some("VALIDATION_CACHE_EXT"),
3469            Self::ACCELERATION_STRUCTURE_NV => Some("ACCELERATION_STRUCTURE_NV"),
3470            Self::PERFORMANCE_CONFIGURATION_INTEL => Some("PERFORMANCE_CONFIGURATION_INTEL"),
3471            Self::DEFERRED_OPERATION_KHR => Some("DEFERRED_OPERATION_KHR"),
3472            Self::INDIRECT_COMMANDS_LAYOUT_NV => Some("INDIRECT_COMMANDS_LAYOUT_NV"),
3473            Self::CUDA_MODULE_NV => Some("CUDA_MODULE_NV"),
3474            Self::CUDA_FUNCTION_NV => Some("CUDA_FUNCTION_NV"),
3475            Self::BUFFER_COLLECTION_FUCHSIA => Some("BUFFER_COLLECTION_FUCHSIA"),
3476            Self::MICROMAP_EXT => Some("MICROMAP_EXT"),
3477            Self::TENSOR_ARM => Some("TENSOR_ARM"),
3478            Self::TENSOR_VIEW_ARM => Some("TENSOR_VIEW_ARM"),
3479            Self::OPTICAL_FLOW_SESSION_NV => Some("OPTICAL_FLOW_SESSION_NV"),
3480            Self::SHADER_EXT => Some("SHADER_EXT"),
3481            Self::PIPELINE_BINARY_KHR => Some("PIPELINE_BINARY_KHR"),
3482            Self::DATA_GRAPH_PIPELINE_SESSION_ARM => Some("DATA_GRAPH_PIPELINE_SESSION_ARM"),
3483            Self::EXTERNAL_COMPUTE_QUEUE_NV => Some("EXTERNAL_COMPUTE_QUEUE_NV"),
3484            Self::INDIRECT_COMMANDS_LAYOUT_EXT => Some("INDIRECT_COMMANDS_LAYOUT_EXT"),
3485            Self::INDIRECT_EXECUTION_SET_EXT => Some("INDIRECT_EXECUTION_SET_EXT"),
3486            Self::DESCRIPTOR_UPDATE_TEMPLATE => Some("DESCRIPTOR_UPDATE_TEMPLATE"),
3487            Self::SAMPLER_YCBCR_CONVERSION => Some("SAMPLER_YCBCR_CONVERSION"),
3488            Self::PRIVATE_DATA_SLOT => Some("PRIVATE_DATA_SLOT"),
3489            _ => None,
3490        };
3491        if let Some(x) = name {
3492            f.write_str(x)
3493        } else {
3494            self.0.fmt(f)
3495        }
3496    }
3497}
3498impl fmt::Debug for Result {
3499    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
3500        let name = match *self {
3501            Self::SUCCESS => Some("SUCCESS"),
3502            Self::NOT_READY => Some("NOT_READY"),
3503            Self::TIMEOUT => Some("TIMEOUT"),
3504            Self::EVENT_SET => Some("EVENT_SET"),
3505            Self::EVENT_RESET => Some("EVENT_RESET"),
3506            Self::INCOMPLETE => Some("INCOMPLETE"),
3507            Self::ERROR_OUT_OF_HOST_MEMORY => Some("ERROR_OUT_OF_HOST_MEMORY"),
3508            Self::ERROR_OUT_OF_DEVICE_MEMORY => Some("ERROR_OUT_OF_DEVICE_MEMORY"),
3509            Self::ERROR_INITIALIZATION_FAILED => Some("ERROR_INITIALIZATION_FAILED"),
3510            Self::ERROR_DEVICE_LOST => Some("ERROR_DEVICE_LOST"),
3511            Self::ERROR_MEMORY_MAP_FAILED => Some("ERROR_MEMORY_MAP_FAILED"),
3512            Self::ERROR_LAYER_NOT_PRESENT => Some("ERROR_LAYER_NOT_PRESENT"),
3513            Self::ERROR_EXTENSION_NOT_PRESENT => Some("ERROR_EXTENSION_NOT_PRESENT"),
3514            Self::ERROR_FEATURE_NOT_PRESENT => Some("ERROR_FEATURE_NOT_PRESENT"),
3515            Self::ERROR_INCOMPATIBLE_DRIVER => Some("ERROR_INCOMPATIBLE_DRIVER"),
3516            Self::ERROR_TOO_MANY_OBJECTS => Some("ERROR_TOO_MANY_OBJECTS"),
3517            Self::ERROR_FORMAT_NOT_SUPPORTED => Some("ERROR_FORMAT_NOT_SUPPORTED"),
3518            Self::ERROR_FRAGMENTED_POOL => Some("ERROR_FRAGMENTED_POOL"),
3519            Self::ERROR_UNKNOWN => Some("ERROR_UNKNOWN"),
3520            Self::ERROR_SURFACE_LOST_KHR => Some("ERROR_SURFACE_LOST_KHR"),
3521            Self::ERROR_NATIVE_WINDOW_IN_USE_KHR => Some("ERROR_NATIVE_WINDOW_IN_USE_KHR"),
3522            Self::SUBOPTIMAL_KHR => Some("SUBOPTIMAL_KHR"),
3523            Self::ERROR_OUT_OF_DATE_KHR => Some("ERROR_OUT_OF_DATE_KHR"),
3524            Self::ERROR_INCOMPATIBLE_DISPLAY_KHR => Some("ERROR_INCOMPATIBLE_DISPLAY_KHR"),
3525            Self::ERROR_INVALID_SHADER_NV => Some("ERROR_INVALID_SHADER_NV"),
3526            Self::ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR => {
3527                Some("ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR")
3528            }
3529            Self::ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR => {
3530                Some("ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR")
3531            }
3532            Self::ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR => {
3533                Some("ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR")
3534            }
3535            Self::ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR => {
3536                Some("ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR")
3537            }
3538            Self::ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR => {
3539                Some("ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR")
3540            }
3541            Self::ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR => {
3542                Some("ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR")
3543            }
3544            Self::ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT => {
3545                Some("ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT")
3546            }
3547            Self::ERROR_PRESENT_TIMING_QUEUE_FULL_EXT => {
3548                Some("ERROR_PRESENT_TIMING_QUEUE_FULL_EXT")
3549            }
3550            Self::ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => {
3551                Some("ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT")
3552            }
3553            Self::THREAD_IDLE_KHR => Some("THREAD_IDLE_KHR"),
3554            Self::THREAD_DONE_KHR => Some("THREAD_DONE_KHR"),
3555            Self::OPERATION_DEFERRED_KHR => Some("OPERATION_DEFERRED_KHR"),
3556            Self::OPERATION_NOT_DEFERRED_KHR => Some("OPERATION_NOT_DEFERRED_KHR"),
3557            Self::ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR => {
3558                Some("ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR")
3559            }
3560            Self::ERROR_COMPRESSION_EXHAUSTED_EXT => Some("ERROR_COMPRESSION_EXHAUSTED_EXT"),
3561            Self::INCOMPATIBLE_SHADER_BINARY_EXT => Some("INCOMPATIBLE_SHADER_BINARY_EXT"),
3562            Self::PIPELINE_BINARY_MISSING_KHR => Some("PIPELINE_BINARY_MISSING_KHR"),
3563            Self::ERROR_NOT_ENOUGH_SPACE_KHR => Some("ERROR_NOT_ENOUGH_SPACE_KHR"),
3564            Self::ERROR_VALIDATION_FAILED => Some("ERROR_VALIDATION_FAILED"),
3565            Self::ERROR_OUT_OF_POOL_MEMORY => Some("ERROR_OUT_OF_POOL_MEMORY"),
3566            Self::ERROR_INVALID_EXTERNAL_HANDLE => Some("ERROR_INVALID_EXTERNAL_HANDLE"),
3567            Self::ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => {
3568                Some("ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS")
3569            }
3570            Self::ERROR_FRAGMENTATION => Some("ERROR_FRAGMENTATION"),
3571            Self::PIPELINE_COMPILE_REQUIRED => Some("PIPELINE_COMPILE_REQUIRED"),
3572            Self::ERROR_NOT_PERMITTED => Some("ERROR_NOT_PERMITTED"),
3573            _ => None,
3574        };
3575        if let Some(x) = name {
3576            f.write_str(x)
3577        } else {
3578            self.0.fmt(f)
3579        }
3580    }
3581}