1 use std::fmt;
2 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3 #[repr(transparent)]
4 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageLayout.html>"]
5 pub struct ImageLayout(pub(crate) i32);
6 impl ImageLayout {
from_raw(x: i32) -> Self7     pub const fn from_raw(x: i32) -> Self {
8         ImageLayout(x)
9     }
as_raw(self) -> i3210     pub const fn as_raw(self) -> i32 {
11         self.0
12     }
13 }
14 impl ImageLayout {
15     #[doc = "Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)"]
16     pub const UNDEFINED: Self = Self(0);
17     #[doc = "General layout when image can be used for any kind of access"]
18     pub const GENERAL: Self = Self(1);
19     #[doc = "Optimal layout when image is only used for color attachment read/write"]
20     pub const COLOR_ATTACHMENT_OPTIMAL: Self = Self(2);
21     #[doc = "Optimal layout when image is only used for depth/stencil attachment read/write"]
22     pub const DEPTH_STENCIL_ATTACHMENT_OPTIMAL: Self = Self(3);
23     #[doc = "Optimal layout when image is used for read only depth/stencil attachment and shader access"]
24     pub const DEPTH_STENCIL_READ_ONLY_OPTIMAL: Self = Self(4);
25     #[doc = "Optimal layout when image is used for read only shader access"]
26     pub const SHADER_READ_ONLY_OPTIMAL: Self = Self(5);
27     #[doc = "Optimal layout when image is used only as source of transfer operations"]
28     pub const TRANSFER_SRC_OPTIMAL: Self = Self(6);
29     #[doc = "Optimal layout when image is used only as destination of transfer operations"]
30     pub const TRANSFER_DST_OPTIMAL: Self = Self(7);
31     #[doc = "Initial layout used when the data is populated by the CPU"]
32     pub const PREINITIALIZED: Self = Self(8);
33 }
34 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
35 #[repr(transparent)]
36 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentLoadOp.html>"]
37 pub struct AttachmentLoadOp(pub(crate) i32);
38 impl AttachmentLoadOp {
from_raw(x: i32) -> Self39     pub const fn from_raw(x: i32) -> Self {
40         AttachmentLoadOp(x)
41     }
as_raw(self) -> i3242     pub const fn as_raw(self) -> i32 {
43         self.0
44     }
45 }
46 impl AttachmentLoadOp {
47     pub const LOAD: Self = Self(0);
48     pub const CLEAR: Self = Self(1);
49     pub const DONT_CARE: Self = Self(2);
50 }
51 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
52 #[repr(transparent)]
53 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentStoreOp.html>"]
54 pub struct AttachmentStoreOp(pub(crate) i32);
55 impl AttachmentStoreOp {
from_raw(x: i32) -> Self56     pub const fn from_raw(x: i32) -> Self {
57         AttachmentStoreOp(x)
58     }
as_raw(self) -> i3259     pub const fn as_raw(self) -> i32 {
60         self.0
61     }
62 }
63 impl AttachmentStoreOp {
64     pub const STORE: Self = Self(0);
65     pub const DONT_CARE: Self = Self(1);
66 }
67 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
68 #[repr(transparent)]
69 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageType.html>"]
70 pub struct ImageType(pub(crate) i32);
71 impl ImageType {
from_raw(x: i32) -> Self72     pub const fn from_raw(x: i32) -> Self {
73         ImageType(x)
74     }
as_raw(self) -> i3275     pub const fn as_raw(self) -> i32 {
76         self.0
77     }
78 }
79 impl ImageType {
80     pub const TYPE_1D: Self = Self(0);
81     pub const TYPE_2D: Self = Self(1);
82     pub const TYPE_3D: Self = Self(2);
83 }
84 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
85 #[repr(transparent)]
86 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageTiling.html>"]
87 pub struct ImageTiling(pub(crate) i32);
88 impl ImageTiling {
from_raw(x: i32) -> Self89     pub const fn from_raw(x: i32) -> Self {
90         ImageTiling(x)
91     }
as_raw(self) -> i3292     pub const fn as_raw(self) -> i32 {
93         self.0
94     }
95 }
96 impl ImageTiling {
97     pub const OPTIMAL: Self = Self(0);
98     pub const LINEAR: Self = Self(1);
99 }
100 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
101 #[repr(transparent)]
102 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewType.html>"]
103 pub struct ImageViewType(pub(crate) i32);
104 impl ImageViewType {
from_raw(x: i32) -> Self105     pub const fn from_raw(x: i32) -> Self {
106         ImageViewType(x)
107     }
as_raw(self) -> i32108     pub const fn as_raw(self) -> i32 {
109         self.0
110     }
111 }
112 impl ImageViewType {
113     pub const TYPE_1D: Self = Self(0);
114     pub const TYPE_2D: Self = Self(1);
115     pub const TYPE_3D: Self = Self(2);
116     pub const CUBE: Self = Self(3);
117     pub const TYPE_1D_ARRAY: Self = Self(4);
118     pub const TYPE_2D_ARRAY: Self = Self(5);
119     pub const CUBE_ARRAY: Self = Self(6);
120 }
121 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
122 #[repr(transparent)]
123 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferLevel.html>"]
124 pub struct CommandBufferLevel(pub(crate) i32);
125 impl CommandBufferLevel {
from_raw(x: i32) -> Self126     pub const fn from_raw(x: i32) -> Self {
127         CommandBufferLevel(x)
128     }
as_raw(self) -> i32129     pub const fn as_raw(self) -> i32 {
130         self.0
131     }
132 }
133 impl CommandBufferLevel {
134     pub const PRIMARY: Self = Self(0);
135     pub const SECONDARY: Self = Self(1);
136 }
137 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
138 #[repr(transparent)]
139 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentSwizzle.html>"]
140 pub struct ComponentSwizzle(pub(crate) i32);
141 impl ComponentSwizzle {
from_raw(x: i32) -> Self142     pub const fn from_raw(x: i32) -> Self {
143         ComponentSwizzle(x)
144     }
as_raw(self) -> i32145     pub const fn as_raw(self) -> i32 {
146         self.0
147     }
148 }
149 impl ComponentSwizzle {
150     pub const IDENTITY: Self = Self(0);
151     pub const ZERO: Self = Self(1);
152     pub const ONE: Self = Self(2);
153     pub const R: Self = Self(3);
154     pub const G: Self = Self(4);
155     pub const B: Self = Self(5);
156     pub const A: Self = Self(6);
157 }
158 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
159 #[repr(transparent)]
160 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorType.html>"]
161 pub struct DescriptorType(pub(crate) i32);
162 impl DescriptorType {
from_raw(x: i32) -> Self163     pub const fn from_raw(x: i32) -> Self {
164         DescriptorType(x)
165     }
as_raw(self) -> i32166     pub const fn as_raw(self) -> i32 {
167         self.0
168     }
169 }
170 impl DescriptorType {
171     pub const SAMPLER: Self = Self(0);
172     pub const COMBINED_IMAGE_SAMPLER: Self = Self(1);
173     pub const SAMPLED_IMAGE: Self = Self(2);
174     pub const STORAGE_IMAGE: Self = Self(3);
175     pub const UNIFORM_TEXEL_BUFFER: Self = Self(4);
176     pub const STORAGE_TEXEL_BUFFER: Self = Self(5);
177     pub const UNIFORM_BUFFER: Self = Self(6);
178     pub const STORAGE_BUFFER: Self = Self(7);
179     pub const UNIFORM_BUFFER_DYNAMIC: Self = Self(8);
180     pub const STORAGE_BUFFER_DYNAMIC: Self = Self(9);
181     pub const INPUT_ATTACHMENT: Self = Self(10);
182 }
183 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
184 #[repr(transparent)]
185 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryType.html>"]
186 pub struct QueryType(pub(crate) i32);
187 impl QueryType {
from_raw(x: i32) -> Self188     pub const fn from_raw(x: i32) -> Self {
189         QueryType(x)
190     }
as_raw(self) -> i32191     pub const fn as_raw(self) -> i32 {
192         self.0
193     }
194 }
195 impl QueryType {
196     pub const OCCLUSION: Self = Self(0);
197     #[doc = "Optional"]
198     pub const PIPELINE_STATISTICS: Self = Self(1);
199     pub const TIMESTAMP: Self = Self(2);
200 }
201 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
202 #[repr(transparent)]
203 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBorderColor.html>"]
204 pub struct BorderColor(pub(crate) i32);
205 impl BorderColor {
from_raw(x: i32) -> Self206     pub const fn from_raw(x: i32) -> Self {
207         BorderColor(x)
208     }
as_raw(self) -> i32209     pub const fn as_raw(self) -> i32 {
210         self.0
211     }
212 }
213 impl BorderColor {
214     pub const FLOAT_TRANSPARENT_BLACK: Self = Self(0);
215     pub const INT_TRANSPARENT_BLACK: Self = Self(1);
216     pub const FLOAT_OPAQUE_BLACK: Self = Self(2);
217     pub const INT_OPAQUE_BLACK: Self = Self(3);
218     pub const FLOAT_OPAQUE_WHITE: Self = Self(4);
219     pub const INT_OPAQUE_WHITE: Self = Self(5);
220 }
221 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
222 #[repr(transparent)]
223 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineBindPoint.html>"]
224 pub struct PipelineBindPoint(pub(crate) i32);
225 impl PipelineBindPoint {
from_raw(x: i32) -> Self226     pub const fn from_raw(x: i32) -> Self {
227         PipelineBindPoint(x)
228     }
as_raw(self) -> i32229     pub const fn as_raw(self) -> i32 {
230         self.0
231     }
232 }
233 impl PipelineBindPoint {
234     pub const GRAPHICS: Self = Self(0);
235     pub const COMPUTE: Self = Self(1);
236 }
237 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
238 #[repr(transparent)]
239 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheHeaderVersion.html>"]
240 pub struct PipelineCacheHeaderVersion(pub(crate) i32);
241 impl PipelineCacheHeaderVersion {
from_raw(x: i32) -> Self242     pub const fn from_raw(x: i32) -> Self {
243         PipelineCacheHeaderVersion(x)
244     }
as_raw(self) -> i32245     pub const fn as_raw(self) -> i32 {
246         self.0
247     }
248 }
249 impl PipelineCacheHeaderVersion {
250     pub const ONE: Self = Self(1);
251 }
252 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
253 #[repr(transparent)]
254 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPrimitiveTopology.html>"]
255 pub struct PrimitiveTopology(pub(crate) i32);
256 impl PrimitiveTopology {
from_raw(x: i32) -> Self257     pub const fn from_raw(x: i32) -> Self {
258         PrimitiveTopology(x)
259     }
as_raw(self) -> i32260     pub const fn as_raw(self) -> i32 {
261         self.0
262     }
263 }
264 impl PrimitiveTopology {
265     pub const POINT_LIST: Self = Self(0);
266     pub const LINE_LIST: Self = Self(1);
267     pub const LINE_STRIP: Self = Self(2);
268     pub const TRIANGLE_LIST: Self = Self(3);
269     pub const TRIANGLE_STRIP: Self = Self(4);
270     pub const TRIANGLE_FAN: Self = Self(5);
271     pub const LINE_LIST_WITH_ADJACENCY: Self = Self(6);
272     pub const LINE_STRIP_WITH_ADJACENCY: Self = Self(7);
273     pub const TRIANGLE_LIST_WITH_ADJACENCY: Self = Self(8);
274     pub const TRIANGLE_STRIP_WITH_ADJACENCY: Self = Self(9);
275     pub const PATCH_LIST: Self = Self(10);
276 }
277 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
278 #[repr(transparent)]
279 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSharingMode.html>"]
280 pub struct SharingMode(pub(crate) i32);
281 impl SharingMode {
from_raw(x: i32) -> Self282     pub const fn from_raw(x: i32) -> Self {
283         SharingMode(x)
284     }
as_raw(self) -> i32285     pub const fn as_raw(self) -> i32 {
286         self.0
287     }
288 }
289 impl SharingMode {
290     pub const EXCLUSIVE: Self = Self(0);
291     pub const CONCURRENT: Self = Self(1);
292 }
293 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
294 #[repr(transparent)]
295 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndexType.html>"]
296 pub struct IndexType(pub(crate) i32);
297 impl IndexType {
from_raw(x: i32) -> Self298     pub const fn from_raw(x: i32) -> Self {
299         IndexType(x)
300     }
as_raw(self) -> i32301     pub const fn as_raw(self) -> i32 {
302         self.0
303     }
304 }
305 impl IndexType {
306     pub const UINT16: Self = Self(0);
307     pub const UINT32: Self = Self(1);
308 }
309 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
310 #[repr(transparent)]
311 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFilter.html>"]
312 pub struct Filter(pub(crate) i32);
313 impl Filter {
from_raw(x: i32) -> Self314     pub const fn from_raw(x: i32) -> Self {
315         Filter(x)
316     }
as_raw(self) -> i32317     pub const fn as_raw(self) -> i32 {
318         self.0
319     }
320 }
321 impl Filter {
322     pub const NEAREST: Self = Self(0);
323     pub const LINEAR: Self = Self(1);
324 }
325 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
326 #[repr(transparent)]
327 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerMipmapMode.html>"]
328 pub struct SamplerMipmapMode(pub(crate) i32);
329 impl SamplerMipmapMode {
from_raw(x: i32) -> Self330     pub const fn from_raw(x: i32) -> Self {
331         SamplerMipmapMode(x)
332     }
as_raw(self) -> i32333     pub const fn as_raw(self) -> i32 {
334         self.0
335     }
336 }
337 impl SamplerMipmapMode {
338     #[doc = "Choose nearest mip level"]
339     pub const NEAREST: Self = Self(0);
340     #[doc = "Linear filter between mip levels"]
341     pub const LINEAR: Self = Self(1);
342 }
343 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
344 #[repr(transparent)]
345 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerAddressMode.html>"]
346 pub struct SamplerAddressMode(pub(crate) i32);
347 impl SamplerAddressMode {
from_raw(x: i32) -> Self348     pub const fn from_raw(x: i32) -> Self {
349         SamplerAddressMode(x)
350     }
as_raw(self) -> i32351     pub const fn as_raw(self) -> i32 {
352         self.0
353     }
354 }
355 impl SamplerAddressMode {
356     pub const REPEAT: Self = Self(0);
357     pub const MIRRORED_REPEAT: Self = Self(1);
358     pub const CLAMP_TO_EDGE: Self = Self(2);
359     pub const CLAMP_TO_BORDER: Self = Self(3);
360 }
361 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
362 #[repr(transparent)]
363 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCompareOp.html>"]
364 pub struct CompareOp(pub(crate) i32);
365 impl CompareOp {
from_raw(x: i32) -> Self366     pub const fn from_raw(x: i32) -> Self {
367         CompareOp(x)
368     }
as_raw(self) -> i32369     pub const fn as_raw(self) -> i32 {
370         self.0
371     }
372 }
373 impl CompareOp {
374     pub const NEVER: Self = Self(0);
375     pub const LESS: Self = Self(1);
376     pub const EQUAL: Self = Self(2);
377     pub const LESS_OR_EQUAL: Self = Self(3);
378     pub const GREATER: Self = Self(4);
379     pub const NOT_EQUAL: Self = Self(5);
380     pub const GREATER_OR_EQUAL: Self = Self(6);
381     pub const ALWAYS: Self = Self(7);
382 }
383 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
384 #[repr(transparent)]
385 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPolygonMode.html>"]
386 pub struct PolygonMode(pub(crate) i32);
387 impl PolygonMode {
from_raw(x: i32) -> Self388     pub const fn from_raw(x: i32) -> Self {
389         PolygonMode(x)
390     }
as_raw(self) -> i32391     pub const fn as_raw(self) -> i32 {
392         self.0
393     }
394 }
395 impl PolygonMode {
396     pub const FILL: Self = Self(0);
397     pub const LINE: Self = Self(1);
398     pub const POINT: Self = Self(2);
399 }
400 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
401 #[repr(transparent)]
402 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFrontFace.html>"]
403 pub struct FrontFace(pub(crate) i32);
404 impl FrontFace {
from_raw(x: i32) -> Self405     pub const fn from_raw(x: i32) -> Self {
406         FrontFace(x)
407     }
as_raw(self) -> i32408     pub const fn as_raw(self) -> i32 {
409         self.0
410     }
411 }
412 impl FrontFace {
413     pub const COUNTER_CLOCKWISE: Self = Self(0);
414     pub const CLOCKWISE: Self = Self(1);
415 }
416 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
417 #[repr(transparent)]
418 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlendFactor.html>"]
419 pub struct BlendFactor(pub(crate) i32);
420 impl BlendFactor {
from_raw(x: i32) -> Self421     pub const fn from_raw(x: i32) -> Self {
422         BlendFactor(x)
423     }
as_raw(self) -> i32424     pub const fn as_raw(self) -> i32 {
425         self.0
426     }
427 }
428 impl BlendFactor {
429     pub const ZERO: Self = Self(0);
430     pub const ONE: Self = Self(1);
431     pub const SRC_COLOR: Self = Self(2);
432     pub const ONE_MINUS_SRC_COLOR: Self = Self(3);
433     pub const DST_COLOR: Self = Self(4);
434     pub const ONE_MINUS_DST_COLOR: Self = Self(5);
435     pub const SRC_ALPHA: Self = Self(6);
436     pub const ONE_MINUS_SRC_ALPHA: Self = Self(7);
437     pub const DST_ALPHA: Self = Self(8);
438     pub const ONE_MINUS_DST_ALPHA: Self = Self(9);
439     pub const CONSTANT_COLOR: Self = Self(10);
440     pub const ONE_MINUS_CONSTANT_COLOR: Self = Self(11);
441     pub const CONSTANT_ALPHA: Self = Self(12);
442     pub const ONE_MINUS_CONSTANT_ALPHA: Self = Self(13);
443     pub const SRC_ALPHA_SATURATE: Self = Self(14);
444     pub const SRC1_COLOR: Self = Self(15);
445     pub const ONE_MINUS_SRC1_COLOR: Self = Self(16);
446     pub const SRC1_ALPHA: Self = Self(17);
447     pub const ONE_MINUS_SRC1_ALPHA: Self = Self(18);
448 }
449 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
450 #[repr(transparent)]
451 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlendOp.html>"]
452 pub struct BlendOp(pub(crate) i32);
453 impl BlendOp {
from_raw(x: i32) -> Self454     pub const fn from_raw(x: i32) -> Self {
455         BlendOp(x)
456     }
as_raw(self) -> i32457     pub const fn as_raw(self) -> i32 {
458         self.0
459     }
460 }
461 impl BlendOp {
462     pub const ADD: Self = Self(0);
463     pub const SUBTRACT: Self = Self(1);
464     pub const REVERSE_SUBTRACT: Self = Self(2);
465     pub const MIN: Self = Self(3);
466     pub const MAX: Self = Self(4);
467 }
468 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
469 #[repr(transparent)]
470 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilOp.html>"]
471 pub struct StencilOp(pub(crate) i32);
472 impl StencilOp {
from_raw(x: i32) -> Self473     pub const fn from_raw(x: i32) -> Self {
474         StencilOp(x)
475     }
as_raw(self) -> i32476     pub const fn as_raw(self) -> i32 {
477         self.0
478     }
479 }
480 impl StencilOp {
481     pub const KEEP: Self = Self(0);
482     pub const ZERO: Self = Self(1);
483     pub const REPLACE: Self = Self(2);
484     pub const INCREMENT_AND_CLAMP: Self = Self(3);
485     pub const DECREMENT_AND_CLAMP: Self = Self(4);
486     pub const INVERT: Self = Self(5);
487     pub const INCREMENT_AND_WRAP: Self = Self(6);
488     pub const DECREMENT_AND_WRAP: Self = Self(7);
489 }
490 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
491 #[repr(transparent)]
492 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLogicOp.html>"]
493 pub struct LogicOp(pub(crate) i32);
494 impl LogicOp {
from_raw(x: i32) -> Self495     pub const fn from_raw(x: i32) -> Self {
496         LogicOp(x)
497     }
as_raw(self) -> i32498     pub const fn as_raw(self) -> i32 {
499         self.0
500     }
501 }
502 impl LogicOp {
503     pub const CLEAR: Self = Self(0);
504     pub const AND: Self = Self(1);
505     pub const AND_REVERSE: Self = Self(2);
506     pub const COPY: Self = Self(3);
507     pub const AND_INVERTED: Self = Self(4);
508     pub const NO_OP: Self = Self(5);
509     pub const XOR: Self = Self(6);
510     pub const OR: Self = Self(7);
511     pub const NOR: Self = Self(8);
512     pub const EQUIVALENT: Self = Self(9);
513     pub const INVERT: Self = Self(10);
514     pub const OR_REVERSE: Self = Self(11);
515     pub const COPY_INVERTED: Self = Self(12);
516     pub const OR_INVERTED: Self = Self(13);
517     pub const NAND: Self = Self(14);
518     pub const SET: Self = Self(15);
519 }
520 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
521 #[repr(transparent)]
522 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInternalAllocationType.html>"]
523 pub struct InternalAllocationType(pub(crate) i32);
524 impl InternalAllocationType {
from_raw(x: i32) -> Self525     pub const fn from_raw(x: i32) -> Self {
526         InternalAllocationType(x)
527     }
as_raw(self) -> i32528     pub const fn as_raw(self) -> i32 {
529         self.0
530     }
531 }
532 impl InternalAllocationType {
533     pub const EXECUTABLE: Self = Self(0);
534 }
535 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
536 #[repr(transparent)]
537 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSystemAllocationScope.html>"]
538 pub struct SystemAllocationScope(pub(crate) i32);
539 impl SystemAllocationScope {
from_raw(x: i32) -> Self540     pub const fn from_raw(x: i32) -> Self {
541         SystemAllocationScope(x)
542     }
as_raw(self) -> i32543     pub const fn as_raw(self) -> i32 {
544         self.0
545     }
546 }
547 impl SystemAllocationScope {
548     pub const COMMAND: Self = Self(0);
549     pub const OBJECT: Self = Self(1);
550     pub const CACHE: Self = Self(2);
551     pub const DEVICE: Self = Self(3);
552     pub const INSTANCE: Self = Self(4);
553 }
554 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
555 #[repr(transparent)]
556 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceType.html>"]
557 pub struct PhysicalDeviceType(pub(crate) i32);
558 impl PhysicalDeviceType {
from_raw(x: i32) -> Self559     pub const fn from_raw(x: i32) -> Self {
560         PhysicalDeviceType(x)
561     }
as_raw(self) -> i32562     pub const fn as_raw(self) -> i32 {
563         self.0
564     }
565 }
566 impl PhysicalDeviceType {
567     pub const OTHER: Self = Self(0);
568     pub const INTEGRATED_GPU: Self = Self(1);
569     pub const DISCRETE_GPU: Self = Self(2);
570     pub const VIRTUAL_GPU: Self = Self(3);
571     pub const CPU: Self = Self(4);
572 }
573 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
574 #[repr(transparent)]
575 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputRate.html>"]
576 pub struct VertexInputRate(pub(crate) i32);
577 impl VertexInputRate {
from_raw(x: i32) -> Self578     pub const fn from_raw(x: i32) -> Self {
579         VertexInputRate(x)
580     }
as_raw(self) -> i32581     pub const fn as_raw(self) -> i32 {
582         self.0
583     }
584 }
585 impl VertexInputRate {
586     pub const VERTEX: Self = Self(0);
587     pub const INSTANCE: Self = Self(1);
588 }
589 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
590 #[repr(transparent)]
591 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormat.html>"]
592 pub struct Format(pub(crate) i32);
593 impl Format {
from_raw(x: i32) -> Self594     pub const fn from_raw(x: i32) -> Self {
595         Format(x)
596     }
as_raw(self) -> i32597     pub const fn as_raw(self) -> i32 {
598         self.0
599     }
600 }
601 impl Format {
602     pub const UNDEFINED: Self = Self(0);
603     pub const R4G4_UNORM_PACK8: Self = Self(1);
604     pub const R4G4B4A4_UNORM_PACK16: Self = Self(2);
605     pub const B4G4R4A4_UNORM_PACK16: Self = Self(3);
606     pub const R5G6B5_UNORM_PACK16: Self = Self(4);
607     pub const B5G6R5_UNORM_PACK16: Self = Self(5);
608     pub const R5G5B5A1_UNORM_PACK16: Self = Self(6);
609     pub const B5G5R5A1_UNORM_PACK16: Self = Self(7);
610     pub const A1R5G5B5_UNORM_PACK16: Self = Self(8);
611     pub const R8_UNORM: Self = Self(9);
612     pub const R8_SNORM: Self = Self(10);
613     pub const R8_USCALED: Self = Self(11);
614     pub const R8_SSCALED: Self = Self(12);
615     pub const R8_UINT: Self = Self(13);
616     pub const R8_SINT: Self = Self(14);
617     pub const R8_SRGB: Self = Self(15);
618     pub const R8G8_UNORM: Self = Self(16);
619     pub const R8G8_SNORM: Self = Self(17);
620     pub const R8G8_USCALED: Self = Self(18);
621     pub const R8G8_SSCALED: Self = Self(19);
622     pub const R8G8_UINT: Self = Self(20);
623     pub const R8G8_SINT: Self = Self(21);
624     pub const R8G8_SRGB: Self = Self(22);
625     pub const R8G8B8_UNORM: Self = Self(23);
626     pub const R8G8B8_SNORM: Self = Self(24);
627     pub const R8G8B8_USCALED: Self = Self(25);
628     pub const R8G8B8_SSCALED: Self = Self(26);
629     pub const R8G8B8_UINT: Self = Self(27);
630     pub const R8G8B8_SINT: Self = Self(28);
631     pub const R8G8B8_SRGB: Self = Self(29);
632     pub const B8G8R8_UNORM: Self = Self(30);
633     pub const B8G8R8_SNORM: Self = Self(31);
634     pub const B8G8R8_USCALED: Self = Self(32);
635     pub const B8G8R8_SSCALED: Self = Self(33);
636     pub const B8G8R8_UINT: Self = Self(34);
637     pub const B8G8R8_SINT: Self = Self(35);
638     pub const B8G8R8_SRGB: Self = Self(36);
639     pub const R8G8B8A8_UNORM: Self = Self(37);
640     pub const R8G8B8A8_SNORM: Self = Self(38);
641     pub const R8G8B8A8_USCALED: Self = Self(39);
642     pub const R8G8B8A8_SSCALED: Self = Self(40);
643     pub const R8G8B8A8_UINT: Self = Self(41);
644     pub const R8G8B8A8_SINT: Self = Self(42);
645     pub const R8G8B8A8_SRGB: Self = Self(43);
646     pub const B8G8R8A8_UNORM: Self = Self(44);
647     pub const B8G8R8A8_SNORM: Self = Self(45);
648     pub const B8G8R8A8_USCALED: Self = Self(46);
649     pub const B8G8R8A8_SSCALED: Self = Self(47);
650     pub const B8G8R8A8_UINT: Self = Self(48);
651     pub const B8G8R8A8_SINT: Self = Self(49);
652     pub const B8G8R8A8_SRGB: Self = Self(50);
653     pub const A8B8G8R8_UNORM_PACK32: Self = Self(51);
654     pub const A8B8G8R8_SNORM_PACK32: Self = Self(52);
655     pub const A8B8G8R8_USCALED_PACK32: Self = Self(53);
656     pub const A8B8G8R8_SSCALED_PACK32: Self = Self(54);
657     pub const A8B8G8R8_UINT_PACK32: Self = Self(55);
658     pub const A8B8G8R8_SINT_PACK32: Self = Self(56);
659     pub const A8B8G8R8_SRGB_PACK32: Self = Self(57);
660     pub const A2R10G10B10_UNORM_PACK32: Self = Self(58);
661     pub const A2R10G10B10_SNORM_PACK32: Self = Self(59);
662     pub const A2R10G10B10_USCALED_PACK32: Self = Self(60);
663     pub const A2R10G10B10_SSCALED_PACK32: Self = Self(61);
664     pub const A2R10G10B10_UINT_PACK32: Self = Self(62);
665     pub const A2R10G10B10_SINT_PACK32: Self = Self(63);
666     pub const A2B10G10R10_UNORM_PACK32: Self = Self(64);
667     pub const A2B10G10R10_SNORM_PACK32: Self = Self(65);
668     pub const A2B10G10R10_USCALED_PACK32: Self = Self(66);
669     pub const A2B10G10R10_SSCALED_PACK32: Self = Self(67);
670     pub const A2B10G10R10_UINT_PACK32: Self = Self(68);
671     pub const A2B10G10R10_SINT_PACK32: Self = Self(69);
672     pub const R16_UNORM: Self = Self(70);
673     pub const R16_SNORM: Self = Self(71);
674     pub const R16_USCALED: Self = Self(72);
675     pub const R16_SSCALED: Self = Self(73);
676     pub const R16_UINT: Self = Self(74);
677     pub const R16_SINT: Self = Self(75);
678     pub const R16_SFLOAT: Self = Self(76);
679     pub const R16G16_UNORM: Self = Self(77);
680     pub const R16G16_SNORM: Self = Self(78);
681     pub const R16G16_USCALED: Self = Self(79);
682     pub const R16G16_SSCALED: Self = Self(80);
683     pub const R16G16_UINT: Self = Self(81);
684     pub const R16G16_SINT: Self = Self(82);
685     pub const R16G16_SFLOAT: Self = Self(83);
686     pub const R16G16B16_UNORM: Self = Self(84);
687     pub const R16G16B16_SNORM: Self = Self(85);
688     pub const R16G16B16_USCALED: Self = Self(86);
689     pub const R16G16B16_SSCALED: Self = Self(87);
690     pub const R16G16B16_UINT: Self = Self(88);
691     pub const R16G16B16_SINT: Self = Self(89);
692     pub const R16G16B16_SFLOAT: Self = Self(90);
693     pub const R16G16B16A16_UNORM: Self = Self(91);
694     pub const R16G16B16A16_SNORM: Self = Self(92);
695     pub const R16G16B16A16_USCALED: Self = Self(93);
696     pub const R16G16B16A16_SSCALED: Self = Self(94);
697     pub const R16G16B16A16_UINT: Self = Self(95);
698     pub const R16G16B16A16_SINT: Self = Self(96);
699     pub const R16G16B16A16_SFLOAT: Self = Self(97);
700     pub const R32_UINT: Self = Self(98);
701     pub const R32_SINT: Self = Self(99);
702     pub const R32_SFLOAT: Self = Self(100);
703     pub const R32G32_UINT: Self = Self(101);
704     pub const R32G32_SINT: Self = Self(102);
705     pub const R32G32_SFLOAT: Self = Self(103);
706     pub const R32G32B32_UINT: Self = Self(104);
707     pub const R32G32B32_SINT: Self = Self(105);
708     pub const R32G32B32_SFLOAT: Self = Self(106);
709     pub const R32G32B32A32_UINT: Self = Self(107);
710     pub const R32G32B32A32_SINT: Self = Self(108);
711     pub const R32G32B32A32_SFLOAT: Self = Self(109);
712     pub const R64_UINT: Self = Self(110);
713     pub const R64_SINT: Self = Self(111);
714     pub const R64_SFLOAT: Self = Self(112);
715     pub const R64G64_UINT: Self = Self(113);
716     pub const R64G64_SINT: Self = Self(114);
717     pub const R64G64_SFLOAT: Self = Self(115);
718     pub const R64G64B64_UINT: Self = Self(116);
719     pub const R64G64B64_SINT: Self = Self(117);
720     pub const R64G64B64_SFLOAT: Self = Self(118);
721     pub const R64G64B64A64_UINT: Self = Self(119);
722     pub const R64G64B64A64_SINT: Self = Self(120);
723     pub const R64G64B64A64_SFLOAT: Self = Self(121);
724     pub const B10G11R11_UFLOAT_PACK32: Self = Self(122);
725     pub const E5B9G9R9_UFLOAT_PACK32: Self = Self(123);
726     pub const D16_UNORM: Self = Self(124);
727     pub const X8_D24_UNORM_PACK32: Self = Self(125);
728     pub const D32_SFLOAT: Self = Self(126);
729     pub const S8_UINT: Self = Self(127);
730     pub const D16_UNORM_S8_UINT: Self = Self(128);
731     pub const D24_UNORM_S8_UINT: Self = Self(129);
732     pub const D32_SFLOAT_S8_UINT: Self = Self(130);
733     pub const BC1_RGB_UNORM_BLOCK: Self = Self(131);
734     pub const BC1_RGB_SRGB_BLOCK: Self = Self(132);
735     pub const BC1_RGBA_UNORM_BLOCK: Self = Self(133);
736     pub const BC1_RGBA_SRGB_BLOCK: Self = Self(134);
737     pub const BC2_UNORM_BLOCK: Self = Self(135);
738     pub const BC2_SRGB_BLOCK: Self = Self(136);
739     pub const BC3_UNORM_BLOCK: Self = Self(137);
740     pub const BC3_SRGB_BLOCK: Self = Self(138);
741     pub const BC4_UNORM_BLOCK: Self = Self(139);
742     pub const BC4_SNORM_BLOCK: Self = Self(140);
743     pub const BC5_UNORM_BLOCK: Self = Self(141);
744     pub const BC5_SNORM_BLOCK: Self = Self(142);
745     pub const BC6H_UFLOAT_BLOCK: Self = Self(143);
746     pub const BC6H_SFLOAT_BLOCK: Self = Self(144);
747     pub const BC7_UNORM_BLOCK: Self = Self(145);
748     pub const BC7_SRGB_BLOCK: Self = Self(146);
749     pub const ETC2_R8G8B8_UNORM_BLOCK: Self = Self(147);
750     pub const ETC2_R8G8B8_SRGB_BLOCK: Self = Self(148);
751     pub const ETC2_R8G8B8A1_UNORM_BLOCK: Self = Self(149);
752     pub const ETC2_R8G8B8A1_SRGB_BLOCK: Self = Self(150);
753     pub const ETC2_R8G8B8A8_UNORM_BLOCK: Self = Self(151);
754     pub const ETC2_R8G8B8A8_SRGB_BLOCK: Self = Self(152);
755     pub const EAC_R11_UNORM_BLOCK: Self = Self(153);
756     pub const EAC_R11_SNORM_BLOCK: Self = Self(154);
757     pub const EAC_R11G11_UNORM_BLOCK: Self = Self(155);
758     pub const EAC_R11G11_SNORM_BLOCK: Self = Self(156);
759     pub const ASTC_4X4_UNORM_BLOCK: Self = Self(157);
760     pub const ASTC_4X4_SRGB_BLOCK: Self = Self(158);
761     pub const ASTC_5X4_UNORM_BLOCK: Self = Self(159);
762     pub const ASTC_5X4_SRGB_BLOCK: Self = Self(160);
763     pub const ASTC_5X5_UNORM_BLOCK: Self = Self(161);
764     pub const ASTC_5X5_SRGB_BLOCK: Self = Self(162);
765     pub const ASTC_6X5_UNORM_BLOCK: Self = Self(163);
766     pub const ASTC_6X5_SRGB_BLOCK: Self = Self(164);
767     pub const ASTC_6X6_UNORM_BLOCK: Self = Self(165);
768     pub const ASTC_6X6_SRGB_BLOCK: Self = Self(166);
769     pub const ASTC_8X5_UNORM_BLOCK: Self = Self(167);
770     pub const ASTC_8X5_SRGB_BLOCK: Self = Self(168);
771     pub const ASTC_8X6_UNORM_BLOCK: Self = Self(169);
772     pub const ASTC_8X6_SRGB_BLOCK: Self = Self(170);
773     pub const ASTC_8X8_UNORM_BLOCK: Self = Self(171);
774     pub const ASTC_8X8_SRGB_BLOCK: Self = Self(172);
775     pub const ASTC_10X5_UNORM_BLOCK: Self = Self(173);
776     pub const ASTC_10X5_SRGB_BLOCK: Self = Self(174);
777     pub const ASTC_10X6_UNORM_BLOCK: Self = Self(175);
778     pub const ASTC_10X6_SRGB_BLOCK: Self = Self(176);
779     pub const ASTC_10X8_UNORM_BLOCK: Self = Self(177);
780     pub const ASTC_10X8_SRGB_BLOCK: Self = Self(178);
781     pub const ASTC_10X10_UNORM_BLOCK: Self = Self(179);
782     pub const ASTC_10X10_SRGB_BLOCK: Self = Self(180);
783     pub const ASTC_12X10_UNORM_BLOCK: Self = Self(181);
784     pub const ASTC_12X10_SRGB_BLOCK: Self = Self(182);
785     pub const ASTC_12X12_UNORM_BLOCK: Self = Self(183);
786     pub const ASTC_12X12_SRGB_BLOCK: Self = Self(184);
787 }
788 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
789 #[repr(transparent)]
790 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStructureType.html>"]
791 pub struct StructureType(pub(crate) i32);
792 impl StructureType {
from_raw(x: i32) -> Self793     pub const fn from_raw(x: i32) -> Self {
794         StructureType(x)
795     }
as_raw(self) -> i32796     pub const fn as_raw(self) -> i32 {
797         self.0
798     }
799 }
800 impl StructureType {
801     pub const APPLICATION_INFO: Self = Self(0);
802     pub const INSTANCE_CREATE_INFO: Self = Self(1);
803     pub const DEVICE_QUEUE_CREATE_INFO: Self = Self(2);
804     pub const DEVICE_CREATE_INFO: Self = Self(3);
805     pub const SUBMIT_INFO: Self = Self(4);
806     pub const MEMORY_ALLOCATE_INFO: Self = Self(5);
807     pub const MAPPED_MEMORY_RANGE: Self = Self(6);
808     pub const BIND_SPARSE_INFO: Self = Self(7);
809     pub const FENCE_CREATE_INFO: Self = Self(8);
810     pub const SEMAPHORE_CREATE_INFO: Self = Self(9);
811     pub const EVENT_CREATE_INFO: Self = Self(10);
812     pub const QUERY_POOL_CREATE_INFO: Self = Self(11);
813     pub const BUFFER_CREATE_INFO: Self = Self(12);
814     pub const BUFFER_VIEW_CREATE_INFO: Self = Self(13);
815     pub const IMAGE_CREATE_INFO: Self = Self(14);
816     pub const IMAGE_VIEW_CREATE_INFO: Self = Self(15);
817     pub const SHADER_MODULE_CREATE_INFO: Self = Self(16);
818     pub const PIPELINE_CACHE_CREATE_INFO: Self = Self(17);
819     pub const PIPELINE_SHADER_STAGE_CREATE_INFO: Self = Self(18);
820     pub const PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: Self = Self(19);
821     pub const PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: Self = Self(20);
822     pub const PIPELINE_TESSELLATION_STATE_CREATE_INFO: Self = Self(21);
823     pub const PIPELINE_VIEWPORT_STATE_CREATE_INFO: Self = Self(22);
824     pub const PIPELINE_RASTERIZATION_STATE_CREATE_INFO: Self = Self(23);
825     pub const PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: Self = Self(24);
826     pub const PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: Self = Self(25);
827     pub const PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: Self = Self(26);
828     pub const PIPELINE_DYNAMIC_STATE_CREATE_INFO: Self = Self(27);
829     pub const GRAPHICS_PIPELINE_CREATE_INFO: Self = Self(28);
830     pub const COMPUTE_PIPELINE_CREATE_INFO: Self = Self(29);
831     pub const PIPELINE_LAYOUT_CREATE_INFO: Self = Self(30);
832     pub const SAMPLER_CREATE_INFO: Self = Self(31);
833     pub const DESCRIPTOR_SET_LAYOUT_CREATE_INFO: Self = Self(32);
834     pub const DESCRIPTOR_POOL_CREATE_INFO: Self = Self(33);
835     pub const DESCRIPTOR_SET_ALLOCATE_INFO: Self = Self(34);
836     pub const WRITE_DESCRIPTOR_SET: Self = Self(35);
837     pub const COPY_DESCRIPTOR_SET: Self = Self(36);
838     pub const FRAMEBUFFER_CREATE_INFO: Self = Self(37);
839     pub const RENDER_PASS_CREATE_INFO: Self = Self(38);
840     pub const COMMAND_POOL_CREATE_INFO: Self = Self(39);
841     pub const COMMAND_BUFFER_ALLOCATE_INFO: Self = Self(40);
842     pub const COMMAND_BUFFER_INHERITANCE_INFO: Self = Self(41);
843     pub const COMMAND_BUFFER_BEGIN_INFO: Self = Self(42);
844     pub const RENDER_PASS_BEGIN_INFO: Self = Self(43);
845     pub const BUFFER_MEMORY_BARRIER: Self = Self(44);
846     pub const IMAGE_MEMORY_BARRIER: Self = Self(45);
847     pub const MEMORY_BARRIER: Self = Self(46);
848     #[doc = "Reserved for internal use by the loader, layers, and ICDs"]
849     pub const LOADER_INSTANCE_CREATE_INFO: Self = Self(47);
850     #[doc = "Reserved for internal use by the loader, layers, and ICDs"]
851     pub const LOADER_DEVICE_CREATE_INFO: Self = Self(48);
852 }
853 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
854 #[repr(transparent)]
855 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassContents.html>"]
856 pub struct SubpassContents(pub(crate) i32);
857 impl SubpassContents {
from_raw(x: i32) -> Self858     pub const fn from_raw(x: i32) -> Self {
859         SubpassContents(x)
860     }
as_raw(self) -> i32861     pub const fn as_raw(self) -> i32 {
862         self.0
863     }
864 }
865 impl SubpassContents {
866     pub const INLINE: Self = Self(0);
867     pub const SECONDARY_COMMAND_BUFFERS: Self = Self(1);
868 }
869 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
870 #[repr(transparent)]
871 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkResult.html>"]
872 #[must_use]
873 pub struct Result(pub(crate) i32);
874 impl Result {
from_raw(x: i32) -> Self875     pub const fn from_raw(x: i32) -> Self {
876         Result(x)
877     }
as_raw(self) -> i32878     pub const fn as_raw(self) -> i32 {
879         self.0
880     }
881 }
882 impl Result {
883     #[doc = "Command completed successfully"]
884     pub const SUCCESS: Self = Self(0);
885     #[doc = "A fence or query has not yet completed"]
886     pub const NOT_READY: Self = Self(1);
887     #[doc = "A wait operation has not completed in the specified time"]
888     pub const TIMEOUT: Self = Self(2);
889     #[doc = "An event is signaled"]
890     pub const EVENT_SET: Self = Self(3);
891     #[doc = "An event is unsignaled"]
892     pub const EVENT_RESET: Self = Self(4);
893     #[doc = "A return array was too small for the result"]
894     pub const INCOMPLETE: Self = Self(5);
895     #[doc = "A host memory allocation has failed"]
896     pub const ERROR_OUT_OF_HOST_MEMORY: Self = Self(-1);
897     #[doc = "A device memory allocation has failed"]
898     pub const ERROR_OUT_OF_DEVICE_MEMORY: Self = Self(-2);
899     #[doc = "Initialization of a object has failed"]
900     pub const ERROR_INITIALIZATION_FAILED: Self = Self(-3);
901     #[doc = "The logical device has been lost. See <<devsandqueues-lost-device>>"]
902     pub const ERROR_DEVICE_LOST: Self = Self(-4);
903     #[doc = "Mapping of a memory object has failed"]
904     pub const ERROR_MEMORY_MAP_FAILED: Self = Self(-5);
905     #[doc = "Layer specified does not exist"]
906     pub const ERROR_LAYER_NOT_PRESENT: Self = Self(-6);
907     #[doc = "Extension specified does not exist"]
908     pub const ERROR_EXTENSION_NOT_PRESENT: Self = Self(-7);
909     #[doc = "Requested feature is not available on this device"]
910     pub const ERROR_FEATURE_NOT_PRESENT: Self = Self(-8);
911     #[doc = "Unable to find a Vulkan driver"]
912     pub const ERROR_INCOMPATIBLE_DRIVER: Self = Self(-9);
913     #[doc = "Too many objects of the type have already been created"]
914     pub const ERROR_TOO_MANY_OBJECTS: Self = Self(-10);
915     #[doc = "Requested format is not supported on this device"]
916     pub const ERROR_FORMAT_NOT_SUPPORTED: Self = Self(-11);
917     #[doc = "A requested pool allocation has failed due to fragmentation of the pool's memory"]
918     pub const ERROR_FRAGMENTED_POOL: Self = Self(-12);
919     #[doc = "An unknown error has occurred, due to an implementation or application bug"]
920     pub const ERROR_UNKNOWN: Self = Self(-13);
921 }
922 impl ::std::error::Error for Result {
description(&self) -> &str923     fn description(&self) -> &str {
924         let name = match *self {
925             Result::SUCCESS => Some("Command completed successfully"),
926             Result::NOT_READY => Some("A fence or query has not yet completed"),
927             Result::TIMEOUT => Some("A wait operation has not completed in the specified time"),
928             Result::EVENT_SET => Some("An event is signaled"),
929             Result::EVENT_RESET => Some("An event is unsignaled"),
930             Result::INCOMPLETE => Some("A return array was too small for the result"),
931             Result::ERROR_OUT_OF_HOST_MEMORY => Some("A host memory allocation has failed"),
932             Result::ERROR_OUT_OF_DEVICE_MEMORY => Some("A device memory allocation has failed"),
933             Result::ERROR_INITIALIZATION_FAILED => Some("Initialization of a object has failed"),
934             Result::ERROR_DEVICE_LOST => {
935                 Some("The logical device has been lost. See <<devsandqueues-lost-device>>")
936             }
937             Result::ERROR_MEMORY_MAP_FAILED => Some("Mapping of a memory object has failed"),
938             Result::ERROR_LAYER_NOT_PRESENT => Some("Layer specified does not exist"),
939             Result::ERROR_EXTENSION_NOT_PRESENT => Some("Extension specified does not exist"),
940             Result::ERROR_FEATURE_NOT_PRESENT => {
941                 Some("Requested feature is not available on this device")
942             }
943             Result::ERROR_INCOMPATIBLE_DRIVER => Some("Unable to find a Vulkan driver"),
944             Result::ERROR_TOO_MANY_OBJECTS => {
945                 Some("Too many objects of the type have already been created")
946             }
947             Result::ERROR_FORMAT_NOT_SUPPORTED => {
948                 Some("Requested format is not supported on this device")
949             }
950             Result::ERROR_FRAGMENTED_POOL => Some(
951                 "A requested pool allocation has failed due to fragmentation of the pool's memory",
952             ),
953             Result::ERROR_UNKNOWN => {
954                 Some("An unknown error has occurred, due to an implementation or application bug")
955             }
956             _ => None,
957         };
958         name.unwrap_or("unknown error")
959     }
960 }
961 impl fmt::Display for Result {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result962     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
963         let name = match *self {
964             Result::SUCCESS => Some("Command completed successfully"),
965             Result::NOT_READY => Some("A fence or query has not yet completed"),
966             Result::TIMEOUT => Some("A wait operation has not completed in the specified time"),
967             Result::EVENT_SET => Some("An event is signaled"),
968             Result::EVENT_RESET => Some("An event is unsignaled"),
969             Result::INCOMPLETE => Some("A return array was too small for the result"),
970             Result::ERROR_OUT_OF_HOST_MEMORY => Some("A host memory allocation has failed"),
971             Result::ERROR_OUT_OF_DEVICE_MEMORY => Some("A device memory allocation has failed"),
972             Result::ERROR_INITIALIZATION_FAILED => Some("Initialization of a object has failed"),
973             Result::ERROR_DEVICE_LOST => {
974                 Some("The logical device has been lost. See <<devsandqueues-lost-device>>")
975             }
976             Result::ERROR_MEMORY_MAP_FAILED => Some("Mapping of a memory object has failed"),
977             Result::ERROR_LAYER_NOT_PRESENT => Some("Layer specified does not exist"),
978             Result::ERROR_EXTENSION_NOT_PRESENT => Some("Extension specified does not exist"),
979             Result::ERROR_FEATURE_NOT_PRESENT => {
980                 Some("Requested feature is not available on this device")
981             }
982             Result::ERROR_INCOMPATIBLE_DRIVER => Some("Unable to find a Vulkan driver"),
983             Result::ERROR_TOO_MANY_OBJECTS => {
984                 Some("Too many objects of the type have already been created")
985             }
986             Result::ERROR_FORMAT_NOT_SUPPORTED => {
987                 Some("Requested format is not supported on this device")
988             }
989             Result::ERROR_FRAGMENTED_POOL => Some(
990                 "A requested pool allocation has failed due to fragmentation of the pool's memory",
991             ),
992             Result::ERROR_UNKNOWN => {
993                 Some("An unknown error has occurred, due to an implementation or application bug")
994             }
995             _ => None,
996         };
997         if let Some(x) = name {
998             fmt.write_str(x)
999         } else {
1000             self.0.fmt(fmt)
1001         }
1002     }
1003 }
1004 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1005 #[repr(transparent)]
1006 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDynamicState.html>"]
1007 pub struct DynamicState(pub(crate) i32);
1008 impl DynamicState {
from_raw(x: i32) -> Self1009     pub const fn from_raw(x: i32) -> Self {
1010         DynamicState(x)
1011     }
as_raw(self) -> i321012     pub const fn as_raw(self) -> i32 {
1013         self.0
1014     }
1015 }
1016 impl 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://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateType.html>"]
1030 pub struct DescriptorUpdateTemplateType(pub(crate) i32);
1031 impl DescriptorUpdateTemplateType {
from_raw(x: i32) -> Self1032     pub const fn from_raw(x: i32) -> Self {
1033         DescriptorUpdateTemplateType(x)
1034     }
as_raw(self) -> i321035     pub const fn as_raw(self) -> i32 {
1036         self.0
1037     }
1038 }
1039 impl DescriptorUpdateTemplateType {
1040     #[doc = "Create descriptor update template for descriptor set updates"]
1041     pub const DESCRIPTOR_SET: Self = Self(0);
1042 }
1043 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1044 #[repr(transparent)]
1045 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkObjectType.html>"]
1046 pub struct ObjectType(pub(crate) i32);
1047 impl ObjectType {
from_raw(x: i32) -> Self1048     pub const fn from_raw(x: i32) -> Self {
1049         ObjectType(x)
1050     }
as_raw(self) -> i321051     pub const fn as_raw(self) -> i32 {
1052         self.0
1053     }
1054 }
1055 impl ObjectType {
1056     pub const UNKNOWN: Self = Self(0);
1057     pub const INSTANCE: Self = Self(1);
1058     pub const PHYSICAL_DEVICE: Self = Self(2);
1059     pub const DEVICE: Self = Self(3);
1060     pub const QUEUE: Self = Self(4);
1061     pub const SEMAPHORE: Self = Self(5);
1062     pub const COMMAND_BUFFER: Self = Self(6);
1063     pub const FENCE: Self = Self(7);
1064     pub const DEVICE_MEMORY: Self = Self(8);
1065     pub const BUFFER: Self = Self(9);
1066     pub const IMAGE: Self = Self(10);
1067     pub const EVENT: Self = Self(11);
1068     pub const QUERY_POOL: Self = Self(12);
1069     pub const BUFFER_VIEW: Self = Self(13);
1070     pub const IMAGE_VIEW: Self = Self(14);
1071     pub const SHADER_MODULE: Self = Self(15);
1072     pub const PIPELINE_CACHE: Self = Self(16);
1073     pub const PIPELINE_LAYOUT: Self = Self(17);
1074     pub const RENDER_PASS: Self = Self(18);
1075     pub const PIPELINE: Self = Self(19);
1076     pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1077     pub const SAMPLER: Self = Self(21);
1078     pub const DESCRIPTOR_POOL: Self = Self(22);
1079     pub const DESCRIPTOR_SET: Self = Self(23);
1080     pub const FRAMEBUFFER: Self = Self(24);
1081     pub const COMMAND_POOL: Self = Self(25);
1082 }
1083 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1084 #[repr(transparent)]
1085 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreType.html>"]
1086 pub struct SemaphoreType(pub(crate) i32);
1087 impl SemaphoreType {
from_raw(x: i32) -> Self1088     pub const fn from_raw(x: i32) -> Self {
1089         SemaphoreType(x)
1090     }
as_raw(self) -> i321091     pub const fn as_raw(self) -> i32 {
1092         self.0
1093     }
1094 }
1095 impl SemaphoreType {
1096     pub const BINARY: Self = Self(0);
1097     pub const TIMELINE: Self = Self(1);
1098 }
1099 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1100 #[repr(transparent)]
1101 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentModeKHR.html>"]
1102 pub struct PresentModeKHR(pub(crate) i32);
1103 impl PresentModeKHR {
from_raw(x: i32) -> Self1104     pub const fn from_raw(x: i32) -> Self {
1105         PresentModeKHR(x)
1106     }
as_raw(self) -> i321107     pub const fn as_raw(self) -> i32 {
1108         self.0
1109     }
1110 }
1111 impl PresentModeKHR {
1112     pub const IMMEDIATE: Self = Self(0);
1113     pub const MAILBOX: Self = Self(1);
1114     pub const FIFO: Self = Self(2);
1115     pub const FIFO_RELAXED: Self = Self(3);
1116 }
1117 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1118 #[repr(transparent)]
1119 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkColorSpaceKHR.html>"]
1120 pub struct ColorSpaceKHR(pub(crate) i32);
1121 impl ColorSpaceKHR {
from_raw(x: i32) -> Self1122     pub const fn from_raw(x: i32) -> Self {
1123         ColorSpaceKHR(x)
1124     }
as_raw(self) -> i321125     pub const fn as_raw(self) -> i32 {
1126         self.0
1127     }
1128 }
1129 impl ColorSpaceKHR {
1130     pub const SRGB_NONLINEAR: Self = Self(0);
1131 }
1132 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1133 #[repr(transparent)]
1134 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTimeDomainEXT.html>"]
1135 pub struct TimeDomainEXT(pub(crate) i32);
1136 impl TimeDomainEXT {
from_raw(x: i32) -> Self1137     pub const fn from_raw(x: i32) -> Self {
1138         TimeDomainEXT(x)
1139     }
as_raw(self) -> i321140     pub const fn as_raw(self) -> i32 {
1141         self.0
1142     }
1143 }
1144 impl TimeDomainEXT {
1145     pub const DEVICE: Self = Self(0);
1146     pub const CLOCK_MONOTONIC: Self = Self(1);
1147     pub const CLOCK_MONOTONIC_RAW: Self = Self(2);
1148     pub const QUERY_PERFORMANCE_COUNTER: Self = Self(3);
1149 }
1150 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1151 #[repr(transparent)]
1152 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugReportObjectTypeEXT.html>"]
1153 pub struct DebugReportObjectTypeEXT(pub(crate) i32);
1154 impl DebugReportObjectTypeEXT {
from_raw(x: i32) -> Self1155     pub const fn from_raw(x: i32) -> Self {
1156         DebugReportObjectTypeEXT(x)
1157     }
as_raw(self) -> i321158     pub const fn as_raw(self) -> i32 {
1159         self.0
1160     }
1161 }
1162 impl DebugReportObjectTypeEXT {
1163     pub const UNKNOWN: Self = Self(0);
1164     pub const INSTANCE: Self = Self(1);
1165     pub const PHYSICAL_DEVICE: Self = Self(2);
1166     pub const DEVICE: Self = Self(3);
1167     pub const QUEUE: Self = Self(4);
1168     pub const SEMAPHORE: Self = Self(5);
1169     pub const COMMAND_BUFFER: Self = Self(6);
1170     pub const FENCE: Self = Self(7);
1171     pub const DEVICE_MEMORY: Self = Self(8);
1172     pub const BUFFER: Self = Self(9);
1173     pub const IMAGE: Self = Self(10);
1174     pub const EVENT: Self = Self(11);
1175     pub const QUERY_POOL: Self = Self(12);
1176     pub const BUFFER_VIEW: Self = Self(13);
1177     pub const IMAGE_VIEW: Self = Self(14);
1178     pub const SHADER_MODULE: Self = Self(15);
1179     pub const PIPELINE_CACHE: Self = Self(16);
1180     pub const PIPELINE_LAYOUT: Self = Self(17);
1181     pub const RENDER_PASS: Self = Self(18);
1182     pub const PIPELINE: Self = Self(19);
1183     pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1184     pub const SAMPLER: Self = Self(21);
1185     pub const DESCRIPTOR_POOL: Self = Self(22);
1186     pub const DESCRIPTOR_SET: Self = Self(23);
1187     pub const FRAMEBUFFER: Self = Self(24);
1188     pub const COMMAND_POOL: Self = Self(25);
1189     pub const SURFACE_KHR: Self = Self(26);
1190     pub const SWAPCHAIN_KHR: Self = Self(27);
1191     pub const DEBUG_REPORT_CALLBACK_EXT: Self = Self(28);
1192     pub const DISPLAY_KHR: Self = Self(29);
1193     pub const DISPLAY_MODE_KHR: Self = Self(30);
1194     pub const VALIDATION_CACHE_EXT: Self = Self(33);
1195 }
1196 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1197 #[repr(transparent)]
1198 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryReportEventTypeEXT.html>"]
1199 pub struct DeviceMemoryReportEventTypeEXT(pub(crate) i32);
1200 impl DeviceMemoryReportEventTypeEXT {
from_raw(x: i32) -> Self1201     pub const fn from_raw(x: i32) -> Self {
1202         DeviceMemoryReportEventTypeEXT(x)
1203     }
as_raw(self) -> i321204     pub const fn as_raw(self) -> i32 {
1205         self.0
1206     }
1207 }
1208 impl DeviceMemoryReportEventTypeEXT {
1209     pub const ALLOCATE: Self = Self(0);
1210     pub const FREE: Self = Self(1);
1211     pub const IMPORT: Self = Self(2);
1212     pub const UNIMPORT: Self = Self(3);
1213     pub const ALLOCATION_FAILED: Self = Self(4);
1214 }
1215 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1216 #[repr(transparent)]
1217 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRasterizationOrderAMD.html>"]
1218 pub struct RasterizationOrderAMD(pub(crate) i32);
1219 impl RasterizationOrderAMD {
from_raw(x: i32) -> Self1220     pub const fn from_raw(x: i32) -> Self {
1221         RasterizationOrderAMD(x)
1222     }
as_raw(self) -> i321223     pub const fn as_raw(self) -> i32 {
1224         self.0
1225     }
1226 }
1227 impl RasterizationOrderAMD {
1228     pub const STRICT: Self = Self(0);
1229     pub const RELAXED: Self = Self(1);
1230 }
1231 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1232 #[repr(transparent)]
1233 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCheckEXT.html>"]
1234 pub struct ValidationCheckEXT(pub(crate) i32);
1235 impl ValidationCheckEXT {
from_raw(x: i32) -> Self1236     pub const fn from_raw(x: i32) -> Self {
1237         ValidationCheckEXT(x)
1238     }
as_raw(self) -> i321239     pub const fn as_raw(self) -> i32 {
1240         self.0
1241     }
1242 }
1243 impl ValidationCheckEXT {
1244     pub const ALL: Self = Self(0);
1245     pub const SHADERS: Self = Self(1);
1246 }
1247 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1248 #[repr(transparent)]
1249 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFeatureEnableEXT.html>"]
1250 pub struct ValidationFeatureEnableEXT(pub(crate) i32);
1251 impl ValidationFeatureEnableEXT {
from_raw(x: i32) -> Self1252     pub const fn from_raw(x: i32) -> Self {
1253         ValidationFeatureEnableEXT(x)
1254     }
as_raw(self) -> i321255     pub const fn as_raw(self) -> i32 {
1256         self.0
1257     }
1258 }
1259 impl ValidationFeatureEnableEXT {
1260     pub const GPU_ASSISTED: Self = Self(0);
1261     pub const GPU_ASSISTED_RESERVE_BINDING_SLOT: Self = Self(1);
1262     pub const BEST_PRACTICES: Self = Self(2);
1263     pub const DEBUG_PRINTF: Self = Self(3);
1264     pub const SYNCHRONIZATION_VALIDATION: Self = Self(4);
1265 }
1266 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1267 #[repr(transparent)]
1268 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFeatureDisableEXT.html>"]
1269 pub struct ValidationFeatureDisableEXT(pub(crate) i32);
1270 impl ValidationFeatureDisableEXT {
from_raw(x: i32) -> Self1271     pub const fn from_raw(x: i32) -> Self {
1272         ValidationFeatureDisableEXT(x)
1273     }
as_raw(self) -> i321274     pub const fn as_raw(self) -> i32 {
1275         self.0
1276     }
1277 }
1278 impl ValidationFeatureDisableEXT {
1279     pub const ALL: Self = Self(0);
1280     pub const SHADERS: Self = Self(1);
1281     pub const THREAD_SAFETY: Self = Self(2);
1282     pub const API_PARAMETERS: Self = Self(3);
1283     pub const OBJECT_LIFETIMES: Self = Self(4);
1284     pub const CORE_CHECKS: Self = Self(5);
1285     pub const UNIQUE_HANDLES: Self = Self(6);
1286 }
1287 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1288 #[repr(transparent)]
1289 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsTokenTypeNV.html>"]
1290 pub struct IndirectCommandsTokenTypeNV(pub(crate) i32);
1291 impl IndirectCommandsTokenTypeNV {
from_raw(x: i32) -> Self1292     pub const fn from_raw(x: i32) -> Self {
1293         IndirectCommandsTokenTypeNV(x)
1294     }
as_raw(self) -> i321295     pub const fn as_raw(self) -> i32 {
1296         self.0
1297     }
1298 }
1299 impl IndirectCommandsTokenTypeNV {
1300     pub const SHADER_GROUP: Self = Self(0);
1301     pub const STATE_FLAGS: Self = Self(1);
1302     pub const INDEX_BUFFER: Self = Self(2);
1303     pub const VERTEX_BUFFER: Self = Self(3);
1304     pub const PUSH_CONSTANT: Self = Self(4);
1305     pub const DRAW_INDEXED: Self = Self(5);
1306     pub const DRAW: Self = Self(6);
1307     pub const DRAW_TASKS: Self = Self(7);
1308 }
1309 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1310 #[repr(transparent)]
1311 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPowerStateEXT.html>"]
1312 pub struct DisplayPowerStateEXT(pub(crate) i32);
1313 impl DisplayPowerStateEXT {
from_raw(x: i32) -> Self1314     pub const fn from_raw(x: i32) -> Self {
1315         DisplayPowerStateEXT(x)
1316     }
as_raw(self) -> i321317     pub const fn as_raw(self) -> i32 {
1318         self.0
1319     }
1320 }
1321 impl DisplayPowerStateEXT {
1322     pub const OFF: Self = Self(0);
1323     pub const SUSPEND: Self = Self(1);
1324     pub const ON: Self = Self(2);
1325 }
1326 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1327 #[repr(transparent)]
1328 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceEventTypeEXT.html>"]
1329 pub struct DeviceEventTypeEXT(pub(crate) i32);
1330 impl DeviceEventTypeEXT {
from_raw(x: i32) -> Self1331     pub const fn from_raw(x: i32) -> Self {
1332         DeviceEventTypeEXT(x)
1333     }
as_raw(self) -> i321334     pub const fn as_raw(self) -> i32 {
1335         self.0
1336     }
1337 }
1338 impl DeviceEventTypeEXT {
1339     pub const DISPLAY_HOTPLUG: Self = Self(0);
1340 }
1341 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1342 #[repr(transparent)]
1343 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayEventTypeEXT.html>"]
1344 pub struct DisplayEventTypeEXT(pub(crate) i32);
1345 impl DisplayEventTypeEXT {
from_raw(x: i32) -> Self1346     pub const fn from_raw(x: i32) -> Self {
1347         DisplayEventTypeEXT(x)
1348     }
as_raw(self) -> i321349     pub const fn as_raw(self) -> i32 {
1350         self.0
1351     }
1352 }
1353 impl DisplayEventTypeEXT {
1354     pub const FIRST_PIXEL_OUT: Self = Self(0);
1355 }
1356 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1357 #[repr(transparent)]
1358 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewportCoordinateSwizzleNV.html>"]
1359 pub struct ViewportCoordinateSwizzleNV(pub(crate) i32);
1360 impl ViewportCoordinateSwizzleNV {
from_raw(x: i32) -> Self1361     pub const fn from_raw(x: i32) -> Self {
1362         ViewportCoordinateSwizzleNV(x)
1363     }
as_raw(self) -> i321364     pub const fn as_raw(self) -> i32 {
1365         self.0
1366     }
1367 }
1368 impl ViewportCoordinateSwizzleNV {
1369     pub const POSITIVE_X: Self = Self(0);
1370     pub const NEGATIVE_X: Self = Self(1);
1371     pub const POSITIVE_Y: Self = Self(2);
1372     pub const NEGATIVE_Y: Self = Self(3);
1373     pub const POSITIVE_Z: Self = Self(4);
1374     pub const NEGATIVE_Z: Self = Self(5);
1375     pub const POSITIVE_W: Self = Self(6);
1376     pub const NEGATIVE_W: Self = Self(7);
1377 }
1378 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1379 #[repr(transparent)]
1380 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDiscardRectangleModeEXT.html>"]
1381 pub struct DiscardRectangleModeEXT(pub(crate) i32);
1382 impl DiscardRectangleModeEXT {
from_raw(x: i32) -> Self1383     pub const fn from_raw(x: i32) -> Self {
1384         DiscardRectangleModeEXT(x)
1385     }
as_raw(self) -> i321386     pub const fn as_raw(self) -> i32 {
1387         self.0
1388     }
1389 }
1390 impl DiscardRectangleModeEXT {
1391     pub const INCLUSIVE: Self = Self(0);
1392     pub const EXCLUSIVE: Self = Self(1);
1393 }
1394 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1395 #[repr(transparent)]
1396 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPointClippingBehavior.html>"]
1397 pub struct PointClippingBehavior(pub(crate) i32);
1398 impl PointClippingBehavior {
from_raw(x: i32) -> Self1399     pub const fn from_raw(x: i32) -> Self {
1400         PointClippingBehavior(x)
1401     }
as_raw(self) -> i321402     pub const fn as_raw(self) -> i32 {
1403         self.0
1404     }
1405 }
1406 impl PointClippingBehavior {
1407     pub const ALL_CLIP_PLANES: Self = Self(0);
1408     pub const USER_CLIP_PLANES_ONLY: Self = Self(1);
1409 }
1410 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1411 #[repr(transparent)]
1412 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerReductionMode.html>"]
1413 pub struct SamplerReductionMode(pub(crate) i32);
1414 impl SamplerReductionMode {
from_raw(x: i32) -> Self1415     pub const fn from_raw(x: i32) -> Self {
1416         SamplerReductionMode(x)
1417     }
as_raw(self) -> i321418     pub const fn as_raw(self) -> i32 {
1419         self.0
1420     }
1421 }
1422 impl SamplerReductionMode {
1423     pub const WEIGHTED_AVERAGE: Self = Self(0);
1424     pub const MIN: Self = Self(1);
1425     pub const MAX: Self = Self(2);
1426 }
1427 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1428 #[repr(transparent)]
1429 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTessellationDomainOrigin.html>"]
1430 pub struct TessellationDomainOrigin(pub(crate) i32);
1431 impl TessellationDomainOrigin {
from_raw(x: i32) -> Self1432     pub const fn from_raw(x: i32) -> Self {
1433         TessellationDomainOrigin(x)
1434     }
as_raw(self) -> i321435     pub const fn as_raw(self) -> i32 {
1436         self.0
1437     }
1438 }
1439 impl TessellationDomainOrigin {
1440     pub const UPPER_LEFT: Self = Self(0);
1441     pub const LOWER_LEFT: Self = Self(1);
1442 }
1443 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1444 #[repr(transparent)]
1445 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrModelConversion.html>"]
1446 pub struct SamplerYcbcrModelConversion(pub(crate) i32);
1447 impl SamplerYcbcrModelConversion {
from_raw(x: i32) -> Self1448     pub const fn from_raw(x: i32) -> Self {
1449         SamplerYcbcrModelConversion(x)
1450     }
as_raw(self) -> i321451     pub const fn as_raw(self) -> i32 {
1452         self.0
1453     }
1454 }
1455 impl SamplerYcbcrModelConversion {
1456     pub const RGB_IDENTITY: Self = Self(0);
1457     #[doc = "just range expansion"]
1458     pub const YCBCR_IDENTITY: Self = Self(1);
1459     #[doc = "aka HD YUV"]
1460     pub const YCBCR_709: Self = Self(2);
1461     #[doc = "aka SD YUV"]
1462     pub const YCBCR_601: Self = Self(3);
1463     #[doc = "aka UHD YUV"]
1464     pub const YCBCR_2020: Self = Self(4);
1465 }
1466 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1467 #[repr(transparent)]
1468 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrRange.html>"]
1469 pub struct SamplerYcbcrRange(pub(crate) i32);
1470 impl SamplerYcbcrRange {
from_raw(x: i32) -> Self1471     pub const fn from_raw(x: i32) -> Self {
1472         SamplerYcbcrRange(x)
1473     }
as_raw(self) -> i321474     pub const fn as_raw(self) -> i32 {
1475         self.0
1476     }
1477 }
1478 impl SamplerYcbcrRange {
1479     #[doc = "Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"]
1480     pub const ITU_FULL: Self = Self(0);
1481     #[doc = "Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"]
1482     pub const ITU_NARROW: Self = Self(1);
1483 }
1484 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1485 #[repr(transparent)]
1486 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkChromaLocation.html>"]
1487 pub struct ChromaLocation(pub(crate) i32);
1488 impl ChromaLocation {
from_raw(x: i32) -> Self1489     pub const fn from_raw(x: i32) -> Self {
1490         ChromaLocation(x)
1491     }
as_raw(self) -> i321492     pub const fn as_raw(self) -> i32 {
1493         self.0
1494     }
1495 }
1496 impl ChromaLocation {
1497     pub const COSITED_EVEN: Self = Self(0);
1498     pub const MIDPOINT: Self = Self(1);
1499 }
1500 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1501 #[repr(transparent)]
1502 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlendOverlapEXT.html>"]
1503 pub struct BlendOverlapEXT(pub(crate) i32);
1504 impl BlendOverlapEXT {
from_raw(x: i32) -> Self1505     pub const fn from_raw(x: i32) -> Self {
1506         BlendOverlapEXT(x)
1507     }
as_raw(self) -> i321508     pub const fn as_raw(self) -> i32 {
1509         self.0
1510     }
1511 }
1512 impl BlendOverlapEXT {
1513     pub const UNCORRELATED: Self = Self(0);
1514     pub const DISJOINT: Self = Self(1);
1515     pub const CONJOINT: Self = Self(2);
1516 }
1517 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1518 #[repr(transparent)]
1519 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoverageModulationModeNV.html>"]
1520 pub struct CoverageModulationModeNV(pub(crate) i32);
1521 impl CoverageModulationModeNV {
from_raw(x: i32) -> Self1522     pub const fn from_raw(x: i32) -> Self {
1523         CoverageModulationModeNV(x)
1524     }
as_raw(self) -> i321525     pub const fn as_raw(self) -> i32 {
1526         self.0
1527     }
1528 }
1529 impl CoverageModulationModeNV {
1530     pub const NONE: Self = Self(0);
1531     pub const RGB: Self = Self(1);
1532     pub const ALPHA: Self = Self(2);
1533     pub const RGBA: Self = Self(3);
1534 }
1535 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1536 #[repr(transparent)]
1537 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoverageReductionModeNV.html>"]
1538 pub struct CoverageReductionModeNV(pub(crate) i32);
1539 impl CoverageReductionModeNV {
from_raw(x: i32) -> Self1540     pub const fn from_raw(x: i32) -> Self {
1541         CoverageReductionModeNV(x)
1542     }
as_raw(self) -> i321543     pub const fn as_raw(self) -> i32 {
1544         self.0
1545     }
1546 }
1547 impl CoverageReductionModeNV {
1548     pub const MERGE: Self = Self(0);
1549     pub const TRUNCATE: Self = Self(1);
1550 }
1551 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1552 #[repr(transparent)]
1553 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheHeaderVersionEXT.html>"]
1554 pub struct ValidationCacheHeaderVersionEXT(pub(crate) i32);
1555 impl ValidationCacheHeaderVersionEXT {
from_raw(x: i32) -> Self1556     pub const fn from_raw(x: i32) -> Self {
1557         ValidationCacheHeaderVersionEXT(x)
1558     }
as_raw(self) -> i321559     pub const fn as_raw(self) -> i32 {
1560         self.0
1561     }
1562 }
1563 impl ValidationCacheHeaderVersionEXT {
1564     pub const ONE: Self = Self(1);
1565 }
1566 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1567 #[repr(transparent)]
1568 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderInfoTypeAMD.html>"]
1569 pub struct ShaderInfoTypeAMD(pub(crate) i32);
1570 impl ShaderInfoTypeAMD {
from_raw(x: i32) -> Self1571     pub const fn from_raw(x: i32) -> Self {
1572         ShaderInfoTypeAMD(x)
1573     }
as_raw(self) -> i321574     pub const fn as_raw(self) -> i32 {
1575         self.0
1576     }
1577 }
1578 impl ShaderInfoTypeAMD {
1579     pub const STATISTICS: Self = Self(0);
1580     pub const BINARY: Self = Self(1);
1581     pub const DISASSEMBLY: Self = Self(2);
1582 }
1583 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1584 #[repr(transparent)]
1585 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueGlobalPriorityEXT.html>"]
1586 pub struct QueueGlobalPriorityEXT(pub(crate) i32);
1587 impl QueueGlobalPriorityEXT {
from_raw(x: i32) -> Self1588     pub const fn from_raw(x: i32) -> Self {
1589         QueueGlobalPriorityEXT(x)
1590     }
as_raw(self) -> i321591     pub const fn as_raw(self) -> i32 {
1592         self.0
1593     }
1594 }
1595 impl QueueGlobalPriorityEXT {
1596     pub const LOW: Self = Self(128);
1597     pub const MEDIUM: Self = Self(256);
1598     pub const HIGH: Self = Self(512);
1599     pub const REALTIME: Self = Self(1_024);
1600 }
1601 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1602 #[repr(transparent)]
1603 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkConservativeRasterizationModeEXT.html>"]
1604 pub struct ConservativeRasterizationModeEXT(pub(crate) i32);
1605 impl ConservativeRasterizationModeEXT {
from_raw(x: i32) -> Self1606     pub const fn from_raw(x: i32) -> Self {
1607         ConservativeRasterizationModeEXT(x)
1608     }
as_raw(self) -> i321609     pub const fn as_raw(self) -> i32 {
1610         self.0
1611     }
1612 }
1613 impl ConservativeRasterizationModeEXT {
1614     pub const DISABLED: Self = Self(0);
1615     pub const OVERESTIMATE: Self = Self(1);
1616     pub const UNDERESTIMATE: Self = Self(2);
1617 }
1618 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1619 #[repr(transparent)]
1620 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVendorId.html>"]
1621 pub struct VendorId(pub(crate) i32);
1622 impl VendorId {
from_raw(x: i32) -> Self1623     pub const fn from_raw(x: i32) -> Self {
1624         VendorId(x)
1625     }
as_raw(self) -> i321626     pub const fn as_raw(self) -> i32 {
1627         self.0
1628     }
1629 }
1630 impl VendorId {
1631     #[doc = "Vivante vendor ID"]
1632     pub const VIV: Self = Self(0x1_0001);
1633     #[doc = "VeriSilicon vendor ID"]
1634     pub const VSI: Self = Self(0x1_0002);
1635     #[doc = "Kazan Software Renderer"]
1636     pub const KAZAN: Self = Self(0x1_0003);
1637     #[doc = "Codeplay Software Ltd. vendor ID"]
1638     pub const CODEPLAY: Self = Self(0x1_0004);
1639     #[doc = "Mesa vendor ID"]
1640     pub const MESA: Self = Self(0x1_0005);
1641     #[doc = "PoCL vendor ID"]
1642     pub const POCL: Self = Self(0x1_0006);
1643 }
1644 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1645 #[repr(transparent)]
1646 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDriverId.html>"]
1647 pub struct DriverId(pub(crate) i32);
1648 impl DriverId {
from_raw(x: i32) -> Self1649     pub const fn from_raw(x: i32) -> Self {
1650         DriverId(x)
1651     }
as_raw(self) -> i321652     pub const fn as_raw(self) -> i32 {
1653         self.0
1654     }
1655 }
1656 impl DriverId {
1657     #[doc = "Advanced Micro Devices, Inc."]
1658     pub const AMD_PROPRIETARY: Self = Self(1);
1659     #[doc = "Advanced Micro Devices, Inc."]
1660     pub const AMD_OPEN_SOURCE: Self = Self(2);
1661     #[doc = "Mesa open source project"]
1662     pub const MESA_RADV: Self = Self(3);
1663     #[doc = "NVIDIA Corporation"]
1664     pub const NVIDIA_PROPRIETARY: Self = Self(4);
1665     #[doc = "Intel Corporation"]
1666     pub const INTEL_PROPRIETARY_WINDOWS: Self = Self(5);
1667     #[doc = "Intel Corporation"]
1668     pub const INTEL_OPEN_SOURCE_MESA: Self = Self(6);
1669     #[doc = "Imagination Technologies"]
1670     pub const IMAGINATION_PROPRIETARY: Self = Self(7);
1671     #[doc = "Qualcomm Technologies, Inc."]
1672     pub const QUALCOMM_PROPRIETARY: Self = Self(8);
1673     #[doc = "Arm Limited"]
1674     pub const ARM_PROPRIETARY: Self = Self(9);
1675     #[doc = "Google LLC"]
1676     pub const GOOGLE_SWIFTSHADER: Self = Self(10);
1677     #[doc = "Google LLC"]
1678     pub const GGP_PROPRIETARY: Self = Self(11);
1679     #[doc = "Broadcom Inc."]
1680     pub const BROADCOM_PROPRIETARY: Self = Self(12);
1681     #[doc = "Mesa"]
1682     pub const MESA_LLVMPIPE: Self = Self(13);
1683     #[doc = "MoltenVK"]
1684     pub const MOLTENVK: Self = Self(14);
1685 }
1686 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1687 #[repr(transparent)]
1688 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteEntryNV.html>"]
1689 pub struct ShadingRatePaletteEntryNV(pub(crate) i32);
1690 impl ShadingRatePaletteEntryNV {
from_raw(x: i32) -> Self1691     pub const fn from_raw(x: i32) -> Self {
1692         ShadingRatePaletteEntryNV(x)
1693     }
as_raw(self) -> i321694     pub const fn as_raw(self) -> i32 {
1695         self.0
1696     }
1697 }
1698 impl ShadingRatePaletteEntryNV {
1699     pub const NO_INVOCATIONS: Self = Self(0);
1700     pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(1);
1701     pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(2);
1702     pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(3);
1703     pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(4);
1704     pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(5);
1705     pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(6);
1706     pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(7);
1707     pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(8);
1708     pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
1709     pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(10);
1710     pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(11);
1711 }
1712 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1713 #[repr(transparent)]
1714 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderTypeNV.html>"]
1715 pub struct CoarseSampleOrderTypeNV(pub(crate) i32);
1716 impl CoarseSampleOrderTypeNV {
from_raw(x: i32) -> Self1717     pub const fn from_raw(x: i32) -> Self {
1718         CoarseSampleOrderTypeNV(x)
1719     }
as_raw(self) -> i321720     pub const fn as_raw(self) -> i32 {
1721         self.0
1722     }
1723 }
1724 impl CoarseSampleOrderTypeNV {
1725     pub const DEFAULT: Self = Self(0);
1726     pub const CUSTOM: Self = Self(1);
1727     pub const PIXEL_MAJOR: Self = Self(2);
1728     pub const SAMPLE_MAJOR: Self = Self(3);
1729 }
1730 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1731 #[repr(transparent)]
1732 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyAccelerationStructureModeKHR.html>"]
1733 pub struct CopyAccelerationStructureModeKHR(pub(crate) i32);
1734 impl CopyAccelerationStructureModeKHR {
from_raw(x: i32) -> Self1735     pub const fn from_raw(x: i32) -> Self {
1736         CopyAccelerationStructureModeKHR(x)
1737     }
as_raw(self) -> i321738     pub const fn as_raw(self) -> i32 {
1739         self.0
1740     }
1741 }
1742 impl CopyAccelerationStructureModeKHR {
1743     pub const CLONE: Self = Self(0);
1744     pub const COMPACT: Self = Self(1);
1745     pub const SERIALIZE: Self = Self(2);
1746     pub const DESERIALIZE: Self = Self(3);
1747 }
1748 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1749 #[repr(transparent)]
1750 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBuildAccelerationStructureModeKHR.html>"]
1751 pub struct BuildAccelerationStructureModeKHR(pub(crate) i32);
1752 impl BuildAccelerationStructureModeKHR {
from_raw(x: i32) -> Self1753     pub const fn from_raw(x: i32) -> Self {
1754         BuildAccelerationStructureModeKHR(x)
1755     }
as_raw(self) -> i321756     pub const fn as_raw(self) -> i32 {
1757         self.0
1758     }
1759 }
1760 impl BuildAccelerationStructureModeKHR {
1761     pub const BUILD: Self = Self(0);
1762     pub const UPDATE: Self = Self(1);
1763 }
1764 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1765 #[repr(transparent)]
1766 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureTypeKHR.html>"]
1767 pub struct AccelerationStructureTypeKHR(pub(crate) i32);
1768 impl AccelerationStructureTypeKHR {
from_raw(x: i32) -> Self1769     pub const fn from_raw(x: i32) -> Self {
1770         AccelerationStructureTypeKHR(x)
1771     }
as_raw(self) -> i321772     pub const fn as_raw(self) -> i32 {
1773         self.0
1774     }
1775 }
1776 impl AccelerationStructureTypeKHR {
1777     pub const TOP_LEVEL: Self = Self(0);
1778     pub const BOTTOM_LEVEL: Self = Self(1);
1779     pub const GENERIC: Self = Self(2);
1780 }
1781 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1782 #[repr(transparent)]
1783 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryTypeKHR.html>"]
1784 pub struct GeometryTypeKHR(pub(crate) i32);
1785 impl GeometryTypeKHR {
from_raw(x: i32) -> Self1786     pub const fn from_raw(x: i32) -> Self {
1787         GeometryTypeKHR(x)
1788     }
as_raw(self) -> i321789     pub const fn as_raw(self) -> i32 {
1790         self.0
1791     }
1792 }
1793 impl GeometryTypeKHR {
1794     pub const TRIANGLES: Self = Self(0);
1795     pub const AABBS: Self = Self(1);
1796     pub const INSTANCES: Self = Self(2);
1797 }
1798 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1799 #[repr(transparent)]
1800 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMemoryRequirementsTypeNV.html>"]
1801 pub struct AccelerationStructureMemoryRequirementsTypeNV(pub(crate) i32);
1802 impl AccelerationStructureMemoryRequirementsTypeNV {
from_raw(x: i32) -> Self1803     pub const fn from_raw(x: i32) -> Self {
1804         AccelerationStructureMemoryRequirementsTypeNV(x)
1805     }
as_raw(self) -> i321806     pub const fn as_raw(self) -> i32 {
1807         self.0
1808     }
1809 }
1810 impl AccelerationStructureMemoryRequirementsTypeNV {
1811     pub const OBJECT: Self = Self(0);
1812     pub const BUILD_SCRATCH: Self = Self(1);
1813     pub const UPDATE_SCRATCH: Self = Self(2);
1814 }
1815 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1816 #[repr(transparent)]
1817 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildTypeKHR.html>"]
1818 pub struct AccelerationStructureBuildTypeKHR(pub(crate) i32);
1819 impl AccelerationStructureBuildTypeKHR {
from_raw(x: i32) -> Self1820     pub const fn from_raw(x: i32) -> Self {
1821         AccelerationStructureBuildTypeKHR(x)
1822     }
as_raw(self) -> i321823     pub const fn as_raw(self) -> i32 {
1824         self.0
1825     }
1826 }
1827 impl AccelerationStructureBuildTypeKHR {
1828     pub const HOST: Self = Self(0);
1829     pub const DEVICE: Self = Self(1);
1830     pub const HOST_OR_DEVICE: Self = Self(2);
1831 }
1832 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1833 #[repr(transparent)]
1834 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingShaderGroupTypeKHR.html>"]
1835 pub struct RayTracingShaderGroupTypeKHR(pub(crate) i32);
1836 impl RayTracingShaderGroupTypeKHR {
from_raw(x: i32) -> Self1837     pub const fn from_raw(x: i32) -> Self {
1838         RayTracingShaderGroupTypeKHR(x)
1839     }
as_raw(self) -> i321840     pub const fn as_raw(self) -> i32 {
1841         self.0
1842     }
1843 }
1844 impl RayTracingShaderGroupTypeKHR {
1845     pub const GENERAL: Self = Self(0);
1846     pub const TRIANGLES_HIT_GROUP: Self = Self(1);
1847     pub const PROCEDURAL_HIT_GROUP: Self = Self(2);
1848 }
1849 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1850 #[repr(transparent)]
1851 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureCompatibilityKHR.html>"]
1852 pub struct AccelerationStructureCompatibilityKHR(pub(crate) i32);
1853 impl AccelerationStructureCompatibilityKHR {
from_raw(x: i32) -> Self1854     pub const fn from_raw(x: i32) -> Self {
1855         AccelerationStructureCompatibilityKHR(x)
1856     }
as_raw(self) -> i321857     pub const fn as_raw(self) -> i32 {
1858         self.0
1859     }
1860 }
1861 impl AccelerationStructureCompatibilityKHR {
1862     pub const COMPATIBLE: Self = Self(0);
1863     pub const INCOMPATIBLE: Self = Self(1);
1864 }
1865 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1866 #[repr(transparent)]
1867 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderGroupShaderKHR.html>"]
1868 pub struct ShaderGroupShaderKHR(pub(crate) i32);
1869 impl ShaderGroupShaderKHR {
from_raw(x: i32) -> Self1870     pub const fn from_raw(x: i32) -> Self {
1871         ShaderGroupShaderKHR(x)
1872     }
as_raw(self) -> i321873     pub const fn as_raw(self) -> i32 {
1874         self.0
1875     }
1876 }
1877 impl ShaderGroupShaderKHR {
1878     pub const GENERAL: Self = Self(0);
1879     pub const CLOSEST_HIT: Self = Self(1);
1880     pub const ANY_HIT: Self = Self(2);
1881     pub const INTERSECTION: Self = Self(3);
1882 }
1883 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1884 #[repr(transparent)]
1885 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryOverallocationBehaviorAMD.html>"]
1886 pub struct MemoryOverallocationBehaviorAMD(pub(crate) i32);
1887 impl MemoryOverallocationBehaviorAMD {
from_raw(x: i32) -> Self1888     pub const fn from_raw(x: i32) -> Self {
1889         MemoryOverallocationBehaviorAMD(x)
1890     }
as_raw(self) -> i321891     pub const fn as_raw(self) -> i32 {
1892         self.0
1893     }
1894 }
1895 impl MemoryOverallocationBehaviorAMD {
1896     pub const DEFAULT: Self = Self(0);
1897     pub const ALLOWED: Self = Self(1);
1898     pub const DISALLOWED: Self = Self(2);
1899 }
1900 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1901 #[repr(transparent)]
1902 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkScopeNV.html>"]
1903 pub struct ScopeNV(pub(crate) i32);
1904 impl ScopeNV {
from_raw(x: i32) -> Self1905     pub const fn from_raw(x: i32) -> Self {
1906         ScopeNV(x)
1907     }
as_raw(self) -> i321908     pub const fn as_raw(self) -> i32 {
1909         self.0
1910     }
1911 }
1912 impl ScopeNV {
1913     pub const DEVICE: Self = Self(1);
1914     pub const WORKGROUP: Self = Self(2);
1915     pub const SUBGROUP: Self = Self(3);
1916     pub const QUEUE_FAMILY: Self = Self(5);
1917 }
1918 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1919 #[repr(transparent)]
1920 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentTypeNV.html>"]
1921 pub struct ComponentTypeNV(pub(crate) i32);
1922 impl ComponentTypeNV {
from_raw(x: i32) -> Self1923     pub const fn from_raw(x: i32) -> Self {
1924         ComponentTypeNV(x)
1925     }
as_raw(self) -> i321926     pub const fn as_raw(self) -> i32 {
1927         self.0
1928     }
1929 }
1930 impl ComponentTypeNV {
1931     pub const FLOAT16: Self = Self(0);
1932     pub const FLOAT32: Self = Self(1);
1933     pub const FLOAT64: Self = Self(2);
1934     pub const SINT8: Self = Self(3);
1935     pub const SINT16: Self = Self(4);
1936     pub const SINT32: Self = Self(5);
1937     pub const SINT64: Self = Self(6);
1938     pub const UINT8: Self = Self(7);
1939     pub const UINT16: Self = Self(8);
1940     pub const UINT32: Self = Self(9);
1941     pub const UINT64: Self = Self(10);
1942 }
1943 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1944 #[repr(transparent)]
1945 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFullScreenExclusiveEXT.html>"]
1946 pub struct FullScreenExclusiveEXT(pub(crate) i32);
1947 impl FullScreenExclusiveEXT {
from_raw(x: i32) -> Self1948     pub const fn from_raw(x: i32) -> Self {
1949         FullScreenExclusiveEXT(x)
1950     }
as_raw(self) -> i321951     pub const fn as_raw(self) -> i32 {
1952         self.0
1953     }
1954 }
1955 impl FullScreenExclusiveEXT {
1956     pub const DEFAULT: Self = Self(0);
1957     pub const ALLOWED: Self = Self(1);
1958     pub const DISALLOWED: Self = Self(2);
1959     pub const APPLICATION_CONTROLLED: Self = Self(3);
1960 }
1961 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1962 #[repr(transparent)]
1963 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterScopeKHR.html>"]
1964 pub struct PerformanceCounterScopeKHR(pub(crate) i32);
1965 impl PerformanceCounterScopeKHR {
from_raw(x: i32) -> Self1966     pub const fn from_raw(x: i32) -> Self {
1967         PerformanceCounterScopeKHR(x)
1968     }
as_raw(self) -> i321969     pub const fn as_raw(self) -> i32 {
1970         self.0
1971     }
1972 }
1973 impl PerformanceCounterScopeKHR {
1974     pub const COMMAND_BUFFER: Self = Self(0);
1975     pub const RENDER_PASS: Self = Self(1);
1976     pub const COMMAND: Self = Self(2);
1977 }
1978 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1979 #[repr(transparent)]
1980 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterUnitKHR.html>"]
1981 pub struct PerformanceCounterUnitKHR(pub(crate) i32);
1982 impl PerformanceCounterUnitKHR {
from_raw(x: i32) -> Self1983     pub const fn from_raw(x: i32) -> Self {
1984         PerformanceCounterUnitKHR(x)
1985     }
as_raw(self) -> i321986     pub const fn as_raw(self) -> i32 {
1987         self.0
1988     }
1989 }
1990 impl PerformanceCounterUnitKHR {
1991     pub const GENERIC: Self = Self(0);
1992     pub const PERCENTAGE: Self = Self(1);
1993     pub const NANOSECONDS: Self = Self(2);
1994     pub const BYTES: Self = Self(3);
1995     pub const BYTES_PER_SECOND: Self = Self(4);
1996     pub const KELVIN: Self = Self(5);
1997     pub const WATTS: Self = Self(6);
1998     pub const VOLTS: Self = Self(7);
1999     pub const AMPS: Self = Self(8);
2000     pub const HERTZ: Self = Self(9);
2001     pub const CYCLES: Self = Self(10);
2002 }
2003 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2004 #[repr(transparent)]
2005 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterStorageKHR.html>"]
2006 pub struct PerformanceCounterStorageKHR(pub(crate) i32);
2007 impl PerformanceCounterStorageKHR {
from_raw(x: i32) -> Self2008     pub const fn from_raw(x: i32) -> Self {
2009         PerformanceCounterStorageKHR(x)
2010     }
as_raw(self) -> i322011     pub const fn as_raw(self) -> i32 {
2012         self.0
2013     }
2014 }
2015 impl PerformanceCounterStorageKHR {
2016     pub const INT32: Self = Self(0);
2017     pub const INT64: Self = Self(1);
2018     pub const UINT32: Self = Self(2);
2019     pub const UINT64: Self = Self(3);
2020     pub const FLOAT32: Self = Self(4);
2021     pub const FLOAT64: Self = Self(5);
2022 }
2023 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2024 #[repr(transparent)]
2025 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceConfigurationTypeINTEL.html>"]
2026 pub struct PerformanceConfigurationTypeINTEL(pub(crate) i32);
2027 impl PerformanceConfigurationTypeINTEL {
from_raw(x: i32) -> Self2028     pub const fn from_raw(x: i32) -> Self {
2029         PerformanceConfigurationTypeINTEL(x)
2030     }
as_raw(self) -> i322031     pub const fn as_raw(self) -> i32 {
2032         self.0
2033     }
2034 }
2035 impl PerformanceConfigurationTypeINTEL {
2036     pub const PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL: Self =
2037         Self(0);
2038 }
2039 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2040 #[repr(transparent)]
2041 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolSamplingModeINTEL.html>"]
2042 pub struct QueryPoolSamplingModeINTEL(pub(crate) i32);
2043 impl QueryPoolSamplingModeINTEL {
from_raw(x: i32) -> Self2044     pub const fn from_raw(x: i32) -> Self {
2045         QueryPoolSamplingModeINTEL(x)
2046     }
as_raw(self) -> i322047     pub const fn as_raw(self) -> i32 {
2048         self.0
2049     }
2050 }
2051 impl QueryPoolSamplingModeINTEL {
2052     pub const QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL: Self = Self(0);
2053 }
2054 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2055 #[repr(transparent)]
2056 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceOverrideTypeINTEL.html>"]
2057 pub struct PerformanceOverrideTypeINTEL(pub(crate) i32);
2058 impl PerformanceOverrideTypeINTEL {
from_raw(x: i32) -> Self2059     pub const fn from_raw(x: i32) -> Self {
2060         PerformanceOverrideTypeINTEL(x)
2061     }
as_raw(self) -> i322062     pub const fn as_raw(self) -> i32 {
2063         self.0
2064     }
2065 }
2066 impl PerformanceOverrideTypeINTEL {
2067     pub const PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL: Self = Self(0);
2068     pub const PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL: Self = Self(1);
2069 }
2070 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2071 #[repr(transparent)]
2072 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceParameterTypeINTEL.html>"]
2073 pub struct PerformanceParameterTypeINTEL(pub(crate) i32);
2074 impl PerformanceParameterTypeINTEL {
from_raw(x: i32) -> Self2075     pub const fn from_raw(x: i32) -> Self {
2076         PerformanceParameterTypeINTEL(x)
2077     }
as_raw(self) -> i322078     pub const fn as_raw(self) -> i32 {
2079         self.0
2080     }
2081 }
2082 impl PerformanceParameterTypeINTEL {
2083     pub const PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL: Self = Self(0);
2084     pub const PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALIDS_INTEL: Self = Self(1);
2085 }
2086 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2087 #[repr(transparent)]
2088 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceValueTypeINTEL.html>"]
2089 pub struct PerformanceValueTypeINTEL(pub(crate) i32);
2090 impl PerformanceValueTypeINTEL {
from_raw(x: i32) -> Self2091     pub const fn from_raw(x: i32) -> Self {
2092         PerformanceValueTypeINTEL(x)
2093     }
as_raw(self) -> i322094     pub const fn as_raw(self) -> i32 {
2095         self.0
2096     }
2097 }
2098 impl PerformanceValueTypeINTEL {
2099     pub const PERFORMANCE_VALUE_TYPE_UINT32_INTEL: Self = Self(0);
2100     pub const PERFORMANCE_VALUE_TYPE_UINT64_INTEL: Self = Self(1);
2101     pub const PERFORMANCE_VALUE_TYPE_FLOAT_INTEL: Self = Self(2);
2102     pub const PERFORMANCE_VALUE_TYPE_BOOL_INTEL: Self = Self(3);
2103     pub const PERFORMANCE_VALUE_TYPE_STRING_INTEL: Self = Self(4);
2104 }
2105 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2106 #[repr(transparent)]
2107 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderFloatControlsIndependence.html>"]
2108 pub struct ShaderFloatControlsIndependence(pub(crate) i32);
2109 impl ShaderFloatControlsIndependence {
from_raw(x: i32) -> Self2110     pub const fn from_raw(x: i32) -> Self {
2111         ShaderFloatControlsIndependence(x)
2112     }
as_raw(self) -> i322113     pub const fn as_raw(self) -> i32 {
2114         self.0
2115     }
2116 }
2117 impl ShaderFloatControlsIndependence {
2118     pub const TYPE_32_ONLY: Self = Self(0);
2119     pub const ALL: Self = Self(1);
2120     pub const NONE: Self = Self(2);
2121 }
2122 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2123 #[repr(transparent)]
2124 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableStatisticFormatKHR.html>"]
2125 pub struct PipelineExecutableStatisticFormatKHR(pub(crate) i32);
2126 impl PipelineExecutableStatisticFormatKHR {
from_raw(x: i32) -> Self2127     pub const fn from_raw(x: i32) -> Self {
2128         PipelineExecutableStatisticFormatKHR(x)
2129     }
as_raw(self) -> i322130     pub const fn as_raw(self) -> i32 {
2131         self.0
2132     }
2133 }
2134 impl PipelineExecutableStatisticFormatKHR {
2135     pub const BOOL32: Self = Self(0);
2136     pub const INT64: Self = Self(1);
2137     pub const UINT64: Self = Self(2);
2138     pub const FLOAT64: Self = Self(3);
2139 }
2140 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2141 #[repr(transparent)]
2142 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLineRasterizationModeEXT.html>"]
2143 pub struct LineRasterizationModeEXT(pub(crate) i32);
2144 impl LineRasterizationModeEXT {
from_raw(x: i32) -> Self2145     pub const fn from_raw(x: i32) -> Self {
2146         LineRasterizationModeEXT(x)
2147     }
as_raw(self) -> i322148     pub const fn as_raw(self) -> i32 {
2149         self.0
2150     }
2151 }
2152 impl LineRasterizationModeEXT {
2153     pub const DEFAULT: Self = Self(0);
2154     pub const RECTANGULAR: Self = Self(1);
2155     pub const BRESENHAM: Self = Self(2);
2156     pub const RECTANGULAR_SMOOTH: Self = Self(3);
2157 }
2158 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2159 #[repr(transparent)]
2160 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateCombinerOpKHR.html>"]
2161 pub struct FragmentShadingRateCombinerOpKHR(pub(crate) i32);
2162 impl FragmentShadingRateCombinerOpKHR {
from_raw(x: i32) -> Self2163     pub const fn from_raw(x: i32) -> Self {
2164         FragmentShadingRateCombinerOpKHR(x)
2165     }
as_raw(self) -> i322166     pub const fn as_raw(self) -> i32 {
2167         self.0
2168     }
2169 }
2170 impl FragmentShadingRateCombinerOpKHR {
2171     pub const KEEP: Self = Self(0);
2172     pub const REPLACE: Self = Self(1);
2173     pub const MIN: Self = Self(2);
2174     pub const MAX: Self = Self(3);
2175     pub const MUL: Self = Self(4);
2176 }
2177 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2178 #[repr(transparent)]
2179 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateNV.html>"]
2180 pub struct FragmentShadingRateNV(pub(crate) i32);
2181 impl FragmentShadingRateNV {
from_raw(x: i32) -> Self2182     pub const fn from_raw(x: i32) -> Self {
2183         FragmentShadingRateNV(x)
2184     }
as_raw(self) -> i322185     pub const fn as_raw(self) -> i32 {
2186         self.0
2187     }
2188 }
2189 impl FragmentShadingRateNV {
2190     pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(0);
2191     pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(1);
2192     pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(4);
2193     pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(5);
2194     pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(6);
2195     pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
2196     pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(10);
2197     pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(11);
2198     pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(12);
2199     pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(13);
2200     pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(14);
2201     pub const NO_INVOCATIONS: Self = Self(15);
2202 }
2203 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2204 #[repr(transparent)]
2205 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateTypeNV.html>"]
2206 pub struct FragmentShadingRateTypeNV(pub(crate) i32);
2207 impl FragmentShadingRateTypeNV {
from_raw(x: i32) -> Self2208     pub const fn from_raw(x: i32) -> Self {
2209         FragmentShadingRateTypeNV(x)
2210     }
as_raw(self) -> i322211     pub const fn as_raw(self) -> i32 {
2212         self.0
2213     }
2214 }
2215 impl FragmentShadingRateTypeNV {
2216     pub const FRAGMENT_SIZE: Self = Self(0);
2217     pub const ENUMS: Self = Self(1);
2218 }
2219