ash/vk/
enums.rs

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