Skip to main content

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