• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {}
923 impl fmt::Display for Result {
fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result924     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
925         let name = match *self {
926             Result::SUCCESS => Some("Command completed successfully"),
927             Result::NOT_READY => Some("A fence or query has not yet completed"),
928             Result::TIMEOUT => Some("A wait operation has not completed in the specified time"),
929             Result::EVENT_SET => Some("An event is signaled"),
930             Result::EVENT_RESET => Some("An event is unsignaled"),
931             Result::INCOMPLETE => Some("A return array was too small for the result"),
932             Result::ERROR_OUT_OF_HOST_MEMORY => Some("A host memory allocation has failed"),
933             Result::ERROR_OUT_OF_DEVICE_MEMORY => Some("A device memory allocation has failed"),
934             Result::ERROR_INITIALIZATION_FAILED => Some("Initialization of a object has failed"),
935             Result::ERROR_DEVICE_LOST => {
936                 Some("The logical device has been lost. See <<devsandqueues-lost-device>>")
937             }
938             Result::ERROR_MEMORY_MAP_FAILED => Some("Mapping of a memory object has failed"),
939             Result::ERROR_LAYER_NOT_PRESENT => Some("Layer specified does not exist"),
940             Result::ERROR_EXTENSION_NOT_PRESENT => Some("Extension specified does not exist"),
941             Result::ERROR_FEATURE_NOT_PRESENT => {
942                 Some("Requested feature is not available on this device")
943             }
944             Result::ERROR_INCOMPATIBLE_DRIVER => Some("Unable to find a Vulkan driver"),
945             Result::ERROR_TOO_MANY_OBJECTS => {
946                 Some("Too many objects of the type have already been created")
947             }
948             Result::ERROR_FORMAT_NOT_SUPPORTED => {
949                 Some("Requested format is not supported on this device")
950             }
951             Result::ERROR_FRAGMENTED_POOL => Some(
952                 "A requested pool allocation has failed due to fragmentation of the pool's memory",
953             ),
954             Result::ERROR_UNKNOWN => {
955                 Some("An unknown error has occurred, due to an implementation or application bug")
956             }
957             _ => None,
958         };
959         if let Some(x) = name {
960             fmt.write_str(x)
961         } else {
962             <Self as fmt::Debug>::fmt(self, fmt)
963         }
964     }
965 }
966 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
967 #[repr(transparent)]
968 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDynamicState.html>"]
969 pub struct DynamicState(pub(crate) i32);
970 impl DynamicState {
from_raw(x: i32) -> Self971     pub const fn from_raw(x: i32) -> Self {
972         DynamicState(x)
973     }
as_raw(self) -> i32974     pub const fn as_raw(self) -> i32 {
975         self.0
976     }
977 }
978 impl DynamicState {
979     pub const VIEWPORT: Self = Self(0);
980     pub const SCISSOR: Self = Self(1);
981     pub const LINE_WIDTH: Self = Self(2);
982     pub const DEPTH_BIAS: Self = Self(3);
983     pub const BLEND_CONSTANTS: Self = Self(4);
984     pub const DEPTH_BOUNDS: Self = Self(5);
985     pub const STENCIL_COMPARE_MASK: Self = Self(6);
986     pub const STENCIL_WRITE_MASK: Self = Self(7);
987     pub const STENCIL_REFERENCE: Self = Self(8);
988 }
989 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
990 #[repr(transparent)]
991 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorUpdateTemplateType.html>"]
992 pub struct DescriptorUpdateTemplateType(pub(crate) i32);
993 impl DescriptorUpdateTemplateType {
from_raw(x: i32) -> Self994     pub const fn from_raw(x: i32) -> Self {
995         DescriptorUpdateTemplateType(x)
996     }
as_raw(self) -> i32997     pub const fn as_raw(self) -> i32 {
998         self.0
999     }
1000 }
1001 impl DescriptorUpdateTemplateType {
1002     #[doc = "Create descriptor update template for descriptor set updates"]
1003     pub const DESCRIPTOR_SET: Self = Self(0);
1004 }
1005 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1006 #[repr(transparent)]
1007 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkObjectType.html>"]
1008 pub struct ObjectType(pub(crate) i32);
1009 impl ObjectType {
from_raw(x: i32) -> Self1010     pub const fn from_raw(x: i32) -> Self {
1011         ObjectType(x)
1012     }
as_raw(self) -> i321013     pub const fn as_raw(self) -> i32 {
1014         self.0
1015     }
1016 }
1017 impl ObjectType {
1018     pub const UNKNOWN: Self = Self(0);
1019     pub const INSTANCE: Self = Self(1);
1020     pub const PHYSICAL_DEVICE: Self = Self(2);
1021     pub const DEVICE: Self = Self(3);
1022     pub const QUEUE: Self = Self(4);
1023     pub const SEMAPHORE: Self = Self(5);
1024     pub const COMMAND_BUFFER: Self = Self(6);
1025     pub const FENCE: Self = Self(7);
1026     pub const DEVICE_MEMORY: Self = Self(8);
1027     pub const BUFFER: Self = Self(9);
1028     pub const IMAGE: Self = Self(10);
1029     pub const EVENT: Self = Self(11);
1030     pub const QUERY_POOL: Self = Self(12);
1031     pub const BUFFER_VIEW: Self = Self(13);
1032     pub const IMAGE_VIEW: Self = Self(14);
1033     pub const SHADER_MODULE: Self = Self(15);
1034     pub const PIPELINE_CACHE: Self = Self(16);
1035     pub const PIPELINE_LAYOUT: Self = Self(17);
1036     pub const RENDER_PASS: Self = Self(18);
1037     pub const PIPELINE: Self = Self(19);
1038     pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1039     pub const SAMPLER: Self = Self(21);
1040     pub const DESCRIPTOR_POOL: Self = Self(22);
1041     pub const DESCRIPTOR_SET: Self = Self(23);
1042     pub const FRAMEBUFFER: Self = Self(24);
1043     pub const COMMAND_POOL: Self = Self(25);
1044 }
1045 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1046 #[repr(transparent)]
1047 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreType.html>"]
1048 pub struct SemaphoreType(pub(crate) i32);
1049 impl SemaphoreType {
from_raw(x: i32) -> Self1050     pub const fn from_raw(x: i32) -> Self {
1051         SemaphoreType(x)
1052     }
as_raw(self) -> i321053     pub const fn as_raw(self) -> i32 {
1054         self.0
1055     }
1056 }
1057 impl SemaphoreType {
1058     pub const BINARY: Self = Self(0);
1059     pub const TIMELINE: Self = Self(1);
1060 }
1061 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1062 #[repr(transparent)]
1063 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentModeKHR.html>"]
1064 pub struct PresentModeKHR(pub(crate) i32);
1065 impl PresentModeKHR {
from_raw(x: i32) -> Self1066     pub const fn from_raw(x: i32) -> Self {
1067         PresentModeKHR(x)
1068     }
as_raw(self) -> i321069     pub const fn as_raw(self) -> i32 {
1070         self.0
1071     }
1072 }
1073 impl PresentModeKHR {
1074     pub const IMMEDIATE: Self = Self(0);
1075     pub const MAILBOX: Self = Self(1);
1076     pub const FIFO: Self = Self(2);
1077     pub const FIFO_RELAXED: Self = Self(3);
1078 }
1079 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1080 #[repr(transparent)]
1081 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkColorSpaceKHR.html>"]
1082 pub struct ColorSpaceKHR(pub(crate) i32);
1083 impl ColorSpaceKHR {
from_raw(x: i32) -> Self1084     pub const fn from_raw(x: i32) -> Self {
1085         ColorSpaceKHR(x)
1086     }
as_raw(self) -> i321087     pub const fn as_raw(self) -> i32 {
1088         self.0
1089     }
1090 }
1091 impl ColorSpaceKHR {
1092     pub const SRGB_NONLINEAR: Self = Self(0);
1093     #[deprecated = "Backwards-compatible alias containing a typo"]
1094     pub const COLORSPACE_SRGB_NONLINEAR: Self = Self::SRGB_NONLINEAR;
1095 }
1096 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1097 #[repr(transparent)]
1098 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTimeDomainEXT.html>"]
1099 pub struct TimeDomainEXT(pub(crate) i32);
1100 impl TimeDomainEXT {
from_raw(x: i32) -> Self1101     pub const fn from_raw(x: i32) -> Self {
1102         TimeDomainEXT(x)
1103     }
as_raw(self) -> i321104     pub const fn as_raw(self) -> i32 {
1105         self.0
1106     }
1107 }
1108 impl TimeDomainEXT {
1109     pub const DEVICE: Self = Self(0);
1110     pub const CLOCK_MONOTONIC: Self = Self(1);
1111     pub const CLOCK_MONOTONIC_RAW: Self = Self(2);
1112     pub const QUERY_PERFORMANCE_COUNTER: Self = Self(3);
1113 }
1114 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1115 #[repr(transparent)]
1116 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDebugReportObjectTypeEXT.html>"]
1117 pub struct DebugReportObjectTypeEXT(pub(crate) i32);
1118 impl DebugReportObjectTypeEXT {
from_raw(x: i32) -> Self1119     pub const fn from_raw(x: i32) -> Self {
1120         DebugReportObjectTypeEXT(x)
1121     }
as_raw(self) -> i321122     pub const fn as_raw(self) -> i32 {
1123         self.0
1124     }
1125 }
1126 impl DebugReportObjectTypeEXT {
1127     pub const UNKNOWN: Self = Self(0);
1128     pub const INSTANCE: Self = Self(1);
1129     pub const PHYSICAL_DEVICE: Self = Self(2);
1130     pub const DEVICE: Self = Self(3);
1131     pub const QUEUE: Self = Self(4);
1132     pub const SEMAPHORE: Self = Self(5);
1133     pub const COMMAND_BUFFER: Self = Self(6);
1134     pub const FENCE: Self = Self(7);
1135     pub const DEVICE_MEMORY: Self = Self(8);
1136     pub const BUFFER: Self = Self(9);
1137     pub const IMAGE: Self = Self(10);
1138     pub const EVENT: Self = Self(11);
1139     pub const QUERY_POOL: Self = Self(12);
1140     pub const BUFFER_VIEW: Self = Self(13);
1141     pub const IMAGE_VIEW: Self = Self(14);
1142     pub const SHADER_MODULE: Self = Self(15);
1143     pub const PIPELINE_CACHE: Self = Self(16);
1144     pub const PIPELINE_LAYOUT: Self = Self(17);
1145     pub const RENDER_PASS: Self = Self(18);
1146     pub const PIPELINE: Self = Self(19);
1147     pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
1148     pub const SAMPLER: Self = Self(21);
1149     pub const DESCRIPTOR_POOL: Self = Self(22);
1150     pub const DESCRIPTOR_SET: Self = Self(23);
1151     pub const FRAMEBUFFER: Self = Self(24);
1152     pub const COMMAND_POOL: Self = Self(25);
1153     pub const SURFACE_KHR: Self = Self(26);
1154     pub const SWAPCHAIN_KHR: Self = Self(27);
1155     pub const DEBUG_REPORT_CALLBACK_EXT: Self = Self(28);
1156     #[deprecated = "Backwards-compatible alias containing a typo"]
1157     pub const DEBUG_REPORT: Self = Self::DEBUG_REPORT_CALLBACK_EXT;
1158     pub const DISPLAY_KHR: Self = Self(29);
1159     pub const DISPLAY_MODE_KHR: Self = Self(30);
1160     pub const VALIDATION_CACHE_EXT: Self = Self(33);
1161     #[deprecated = "Backwards-compatible alias containing a typo"]
1162     pub const VALIDATION_CACHE: Self = Self::VALIDATION_CACHE_EXT;
1163 }
1164 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1165 #[repr(transparent)]
1166 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemoryReportEventTypeEXT.html>"]
1167 pub struct DeviceMemoryReportEventTypeEXT(pub(crate) i32);
1168 impl DeviceMemoryReportEventTypeEXT {
from_raw(x: i32) -> Self1169     pub const fn from_raw(x: i32) -> Self {
1170         DeviceMemoryReportEventTypeEXT(x)
1171     }
as_raw(self) -> i321172     pub const fn as_raw(self) -> i32 {
1173         self.0
1174     }
1175 }
1176 impl DeviceMemoryReportEventTypeEXT {
1177     pub const ALLOCATE: Self = Self(0);
1178     pub const FREE: Self = Self(1);
1179     pub const IMPORT: Self = Self(2);
1180     pub const UNIMPORT: Self = Self(3);
1181     pub const ALLOCATION_FAILED: Self = Self(4);
1182 }
1183 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1184 #[repr(transparent)]
1185 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRasterizationOrderAMD.html>"]
1186 pub struct RasterizationOrderAMD(pub(crate) i32);
1187 impl RasterizationOrderAMD {
from_raw(x: i32) -> Self1188     pub const fn from_raw(x: i32) -> Self {
1189         RasterizationOrderAMD(x)
1190     }
as_raw(self) -> i321191     pub const fn as_raw(self) -> i32 {
1192         self.0
1193     }
1194 }
1195 impl RasterizationOrderAMD {
1196     pub const STRICT: Self = Self(0);
1197     pub const RELAXED: Self = Self(1);
1198 }
1199 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1200 #[repr(transparent)]
1201 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCheckEXT.html>"]
1202 pub struct ValidationCheckEXT(pub(crate) i32);
1203 impl ValidationCheckEXT {
from_raw(x: i32) -> Self1204     pub const fn from_raw(x: i32) -> Self {
1205         ValidationCheckEXT(x)
1206     }
as_raw(self) -> i321207     pub const fn as_raw(self) -> i32 {
1208         self.0
1209     }
1210 }
1211 impl ValidationCheckEXT {
1212     pub const ALL: Self = Self(0);
1213     pub const SHADERS: Self = Self(1);
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/VkValidationFeatureEnableEXT.html>"]
1218 pub struct ValidationFeatureEnableEXT(pub(crate) i32);
1219 impl ValidationFeatureEnableEXT {
from_raw(x: i32) -> Self1220     pub const fn from_raw(x: i32) -> Self {
1221         ValidationFeatureEnableEXT(x)
1222     }
as_raw(self) -> i321223     pub const fn as_raw(self) -> i32 {
1224         self.0
1225     }
1226 }
1227 impl ValidationFeatureEnableEXT {
1228     pub const GPU_ASSISTED: Self = Self(0);
1229     pub const GPU_ASSISTED_RESERVE_BINDING_SLOT: Self = Self(1);
1230     pub const BEST_PRACTICES: Self = Self(2);
1231     pub const DEBUG_PRINTF: Self = Self(3);
1232     pub const SYNCHRONIZATION_VALIDATION: Self = Self(4);
1233 }
1234 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1235 #[repr(transparent)]
1236 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationFeatureDisableEXT.html>"]
1237 pub struct ValidationFeatureDisableEXT(pub(crate) i32);
1238 impl ValidationFeatureDisableEXT {
from_raw(x: i32) -> Self1239     pub const fn from_raw(x: i32) -> Self {
1240         ValidationFeatureDisableEXT(x)
1241     }
as_raw(self) -> i321242     pub const fn as_raw(self) -> i32 {
1243         self.0
1244     }
1245 }
1246 impl ValidationFeatureDisableEXT {
1247     pub const ALL: Self = Self(0);
1248     pub const SHADERS: Self = Self(1);
1249     pub const THREAD_SAFETY: Self = Self(2);
1250     pub const API_PARAMETERS: Self = Self(3);
1251     pub const OBJECT_LIFETIMES: Self = Self(4);
1252     pub const CORE_CHECKS: Self = Self(5);
1253     pub const UNIQUE_HANDLES: Self = Self(6);
1254     pub const SHADER_VALIDATION_CACHE: Self = Self(7);
1255 }
1256 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1257 #[repr(transparent)]
1258 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndirectCommandsTokenTypeNV.html>"]
1259 pub struct IndirectCommandsTokenTypeNV(pub(crate) i32);
1260 impl IndirectCommandsTokenTypeNV {
from_raw(x: i32) -> Self1261     pub const fn from_raw(x: i32) -> Self {
1262         IndirectCommandsTokenTypeNV(x)
1263     }
as_raw(self) -> i321264     pub const fn as_raw(self) -> i32 {
1265         self.0
1266     }
1267 }
1268 impl IndirectCommandsTokenTypeNV {
1269     pub const SHADER_GROUP: Self = Self(0);
1270     pub const STATE_FLAGS: Self = Self(1);
1271     pub const INDEX_BUFFER: Self = Self(2);
1272     pub const VERTEX_BUFFER: Self = Self(3);
1273     pub const PUSH_CONSTANT: Self = Self(4);
1274     pub const DRAW_INDEXED: Self = Self(5);
1275     pub const DRAW: Self = Self(6);
1276     pub const DRAW_TASKS: Self = Self(7);
1277 }
1278 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1279 #[repr(transparent)]
1280 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayPowerStateEXT.html>"]
1281 pub struct DisplayPowerStateEXT(pub(crate) i32);
1282 impl DisplayPowerStateEXT {
from_raw(x: i32) -> Self1283     pub const fn from_raw(x: i32) -> Self {
1284         DisplayPowerStateEXT(x)
1285     }
as_raw(self) -> i321286     pub const fn as_raw(self) -> i32 {
1287         self.0
1288     }
1289 }
1290 impl DisplayPowerStateEXT {
1291     pub const OFF: Self = Self(0);
1292     pub const SUSPEND: Self = Self(1);
1293     pub const ON: Self = Self(2);
1294 }
1295 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1296 #[repr(transparent)]
1297 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceEventTypeEXT.html>"]
1298 pub struct DeviceEventTypeEXT(pub(crate) i32);
1299 impl DeviceEventTypeEXT {
from_raw(x: i32) -> Self1300     pub const fn from_raw(x: i32) -> Self {
1301         DeviceEventTypeEXT(x)
1302     }
as_raw(self) -> i321303     pub const fn as_raw(self) -> i32 {
1304         self.0
1305     }
1306 }
1307 impl DeviceEventTypeEXT {
1308     pub const DISPLAY_HOTPLUG: Self = Self(0);
1309 }
1310 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1311 #[repr(transparent)]
1312 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDisplayEventTypeEXT.html>"]
1313 pub struct DisplayEventTypeEXT(pub(crate) i32);
1314 impl DisplayEventTypeEXT {
from_raw(x: i32) -> Self1315     pub const fn from_raw(x: i32) -> Self {
1316         DisplayEventTypeEXT(x)
1317     }
as_raw(self) -> i321318     pub const fn as_raw(self) -> i32 {
1319         self.0
1320     }
1321 }
1322 impl DisplayEventTypeEXT {
1323     pub const FIRST_PIXEL_OUT: Self = Self(0);
1324 }
1325 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1326 #[repr(transparent)]
1327 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewportCoordinateSwizzleNV.html>"]
1328 pub struct ViewportCoordinateSwizzleNV(pub(crate) i32);
1329 impl ViewportCoordinateSwizzleNV {
from_raw(x: i32) -> Self1330     pub const fn from_raw(x: i32) -> Self {
1331         ViewportCoordinateSwizzleNV(x)
1332     }
as_raw(self) -> i321333     pub const fn as_raw(self) -> i32 {
1334         self.0
1335     }
1336 }
1337 impl ViewportCoordinateSwizzleNV {
1338     pub const POSITIVE_X: Self = Self(0);
1339     pub const NEGATIVE_X: Self = Self(1);
1340     pub const POSITIVE_Y: Self = Self(2);
1341     pub const NEGATIVE_Y: Self = Self(3);
1342     pub const POSITIVE_Z: Self = Self(4);
1343     pub const NEGATIVE_Z: Self = Self(5);
1344     pub const POSITIVE_W: Self = Self(6);
1345     pub const NEGATIVE_W: Self = Self(7);
1346 }
1347 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1348 #[repr(transparent)]
1349 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDiscardRectangleModeEXT.html>"]
1350 pub struct DiscardRectangleModeEXT(pub(crate) i32);
1351 impl DiscardRectangleModeEXT {
from_raw(x: i32) -> Self1352     pub const fn from_raw(x: i32) -> Self {
1353         DiscardRectangleModeEXT(x)
1354     }
as_raw(self) -> i321355     pub const fn as_raw(self) -> i32 {
1356         self.0
1357     }
1358 }
1359 impl DiscardRectangleModeEXT {
1360     pub const INCLUSIVE: Self = Self(0);
1361     pub const EXCLUSIVE: Self = Self(1);
1362 }
1363 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1364 #[repr(transparent)]
1365 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPointClippingBehavior.html>"]
1366 pub struct PointClippingBehavior(pub(crate) i32);
1367 impl PointClippingBehavior {
from_raw(x: i32) -> Self1368     pub const fn from_raw(x: i32) -> Self {
1369         PointClippingBehavior(x)
1370     }
as_raw(self) -> i321371     pub const fn as_raw(self) -> i32 {
1372         self.0
1373     }
1374 }
1375 impl PointClippingBehavior {
1376     pub const ALL_CLIP_PLANES: Self = Self(0);
1377     pub const USER_CLIP_PLANES_ONLY: Self = Self(1);
1378 }
1379 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1380 #[repr(transparent)]
1381 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerReductionMode.html>"]
1382 pub struct SamplerReductionMode(pub(crate) i32);
1383 impl SamplerReductionMode {
from_raw(x: i32) -> Self1384     pub const fn from_raw(x: i32) -> Self {
1385         SamplerReductionMode(x)
1386     }
as_raw(self) -> i321387     pub const fn as_raw(self) -> i32 {
1388         self.0
1389     }
1390 }
1391 impl SamplerReductionMode {
1392     pub const WEIGHTED_AVERAGE: Self = Self(0);
1393     pub const MIN: Self = Self(1);
1394     pub const MAX: Self = Self(2);
1395 }
1396 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1397 #[repr(transparent)]
1398 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkTessellationDomainOrigin.html>"]
1399 pub struct TessellationDomainOrigin(pub(crate) i32);
1400 impl TessellationDomainOrigin {
from_raw(x: i32) -> Self1401     pub const fn from_raw(x: i32) -> Self {
1402         TessellationDomainOrigin(x)
1403     }
as_raw(self) -> i321404     pub const fn as_raw(self) -> i32 {
1405         self.0
1406     }
1407 }
1408 impl TessellationDomainOrigin {
1409     pub const UPPER_LEFT: Self = Self(0);
1410     pub const LOWER_LEFT: Self = Self(1);
1411 }
1412 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1413 #[repr(transparent)]
1414 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrModelConversion.html>"]
1415 pub struct SamplerYcbcrModelConversion(pub(crate) i32);
1416 impl SamplerYcbcrModelConversion {
from_raw(x: i32) -> Self1417     pub const fn from_raw(x: i32) -> Self {
1418         SamplerYcbcrModelConversion(x)
1419     }
as_raw(self) -> i321420     pub const fn as_raw(self) -> i32 {
1421         self.0
1422     }
1423 }
1424 impl SamplerYcbcrModelConversion {
1425     pub const RGB_IDENTITY: Self = Self(0);
1426     #[doc = "just range expansion"]
1427     pub const YCBCR_IDENTITY: Self = Self(1);
1428     #[doc = "aka HD YUV"]
1429     pub const YCBCR_709: Self = Self(2);
1430     #[doc = "aka SD YUV"]
1431     pub const YCBCR_601: Self = Self(3);
1432     #[doc = "aka UHD YUV"]
1433     pub const YCBCR_2020: Self = Self(4);
1434 }
1435 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1436 #[repr(transparent)]
1437 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrRange.html>"]
1438 pub struct SamplerYcbcrRange(pub(crate) i32);
1439 impl SamplerYcbcrRange {
from_raw(x: i32) -> Self1440     pub const fn from_raw(x: i32) -> Self {
1441         SamplerYcbcrRange(x)
1442     }
as_raw(self) -> i321443     pub const fn as_raw(self) -> i32 {
1444         self.0
1445     }
1446 }
1447 impl SamplerYcbcrRange {
1448     #[doc = "Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"]
1449     pub const ITU_FULL: Self = Self(0);
1450     #[doc = "Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"]
1451     pub const ITU_NARROW: Self = Self(1);
1452 }
1453 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1454 #[repr(transparent)]
1455 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkChromaLocation.html>"]
1456 pub struct ChromaLocation(pub(crate) i32);
1457 impl ChromaLocation {
from_raw(x: i32) -> Self1458     pub const fn from_raw(x: i32) -> Self {
1459         ChromaLocation(x)
1460     }
as_raw(self) -> i321461     pub const fn as_raw(self) -> i32 {
1462         self.0
1463     }
1464 }
1465 impl ChromaLocation {
1466     pub const COSITED_EVEN: Self = Self(0);
1467     pub const MIDPOINT: Self = Self(1);
1468 }
1469 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1470 #[repr(transparent)]
1471 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlendOverlapEXT.html>"]
1472 pub struct BlendOverlapEXT(pub(crate) i32);
1473 impl BlendOverlapEXT {
from_raw(x: i32) -> Self1474     pub const fn from_raw(x: i32) -> Self {
1475         BlendOverlapEXT(x)
1476     }
as_raw(self) -> i321477     pub const fn as_raw(self) -> i32 {
1478         self.0
1479     }
1480 }
1481 impl BlendOverlapEXT {
1482     pub const UNCORRELATED: Self = Self(0);
1483     pub const DISJOINT: Self = Self(1);
1484     pub const CONJOINT: Self = Self(2);
1485 }
1486 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1487 #[repr(transparent)]
1488 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoverageModulationModeNV.html>"]
1489 pub struct CoverageModulationModeNV(pub(crate) i32);
1490 impl CoverageModulationModeNV {
from_raw(x: i32) -> Self1491     pub const fn from_raw(x: i32) -> Self {
1492         CoverageModulationModeNV(x)
1493     }
as_raw(self) -> i321494     pub const fn as_raw(self) -> i32 {
1495         self.0
1496     }
1497 }
1498 impl CoverageModulationModeNV {
1499     pub const NONE: Self = Self(0);
1500     pub const RGB: Self = Self(1);
1501     pub const ALPHA: Self = Self(2);
1502     pub const RGBA: Self = Self(3);
1503 }
1504 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1505 #[repr(transparent)]
1506 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoverageReductionModeNV.html>"]
1507 pub struct CoverageReductionModeNV(pub(crate) i32);
1508 impl CoverageReductionModeNV {
from_raw(x: i32) -> Self1509     pub const fn from_raw(x: i32) -> Self {
1510         CoverageReductionModeNV(x)
1511     }
as_raw(self) -> i321512     pub const fn as_raw(self) -> i32 {
1513         self.0
1514     }
1515 }
1516 impl CoverageReductionModeNV {
1517     pub const MERGE: Self = Self(0);
1518     pub const TRUNCATE: Self = Self(1);
1519 }
1520 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1521 #[repr(transparent)]
1522 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkValidationCacheHeaderVersionEXT.html>"]
1523 pub struct ValidationCacheHeaderVersionEXT(pub(crate) i32);
1524 impl ValidationCacheHeaderVersionEXT {
from_raw(x: i32) -> Self1525     pub const fn from_raw(x: i32) -> Self {
1526         ValidationCacheHeaderVersionEXT(x)
1527     }
as_raw(self) -> i321528     pub const fn as_raw(self) -> i32 {
1529         self.0
1530     }
1531 }
1532 impl ValidationCacheHeaderVersionEXT {
1533     pub const ONE: Self = Self(1);
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/VkShaderInfoTypeAMD.html>"]
1538 pub struct ShaderInfoTypeAMD(pub(crate) i32);
1539 impl ShaderInfoTypeAMD {
from_raw(x: i32) -> Self1540     pub const fn from_raw(x: i32) -> Self {
1541         ShaderInfoTypeAMD(x)
1542     }
as_raw(self) -> i321543     pub const fn as_raw(self) -> i32 {
1544         self.0
1545     }
1546 }
1547 impl ShaderInfoTypeAMD {
1548     pub const STATISTICS: Self = Self(0);
1549     pub const BINARY: Self = Self(1);
1550     pub const DISASSEMBLY: Self = Self(2);
1551 }
1552 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1553 #[repr(transparent)]
1554 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueGlobalPriorityEXT.html>"]
1555 pub struct QueueGlobalPriorityEXT(pub(crate) i32);
1556 impl QueueGlobalPriorityEXT {
from_raw(x: i32) -> Self1557     pub const fn from_raw(x: i32) -> Self {
1558         QueueGlobalPriorityEXT(x)
1559     }
as_raw(self) -> i321560     pub const fn as_raw(self) -> i32 {
1561         self.0
1562     }
1563 }
1564 impl QueueGlobalPriorityEXT {
1565     pub const LOW: Self = Self(128);
1566     pub const MEDIUM: Self = Self(256);
1567     pub const HIGH: Self = Self(512);
1568     pub const REALTIME: Self = Self(1_024);
1569 }
1570 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1571 #[repr(transparent)]
1572 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkConservativeRasterizationModeEXT.html>"]
1573 pub struct ConservativeRasterizationModeEXT(pub(crate) i32);
1574 impl ConservativeRasterizationModeEXT {
from_raw(x: i32) -> Self1575     pub const fn from_raw(x: i32) -> Self {
1576         ConservativeRasterizationModeEXT(x)
1577     }
as_raw(self) -> i321578     pub const fn as_raw(self) -> i32 {
1579         self.0
1580     }
1581 }
1582 impl ConservativeRasterizationModeEXT {
1583     pub const DISABLED: Self = Self(0);
1584     pub const OVERESTIMATE: Self = Self(1);
1585     pub const UNDERESTIMATE: Self = Self(2);
1586 }
1587 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1588 #[repr(transparent)]
1589 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVendorId.html>"]
1590 pub struct VendorId(pub(crate) i32);
1591 impl VendorId {
from_raw(x: i32) -> Self1592     pub const fn from_raw(x: i32) -> Self {
1593         VendorId(x)
1594     }
as_raw(self) -> i321595     pub const fn as_raw(self) -> i32 {
1596         self.0
1597     }
1598 }
1599 impl VendorId {
1600     #[doc = "Vivante vendor ID"]
1601     pub const VIV: Self = Self(0x1_0001);
1602     #[doc = "VeriSilicon vendor ID"]
1603     pub const VSI: Self = Self(0x1_0002);
1604     #[doc = "Kazan Software Renderer"]
1605     pub const KAZAN: Self = Self(0x1_0003);
1606     #[doc = "Codeplay Software Ltd. vendor ID"]
1607     pub const CODEPLAY: Self = Self(0x1_0004);
1608     #[doc = "Mesa vendor ID"]
1609     pub const MESA: Self = Self(0x1_0005);
1610     #[doc = "PoCL vendor ID"]
1611     pub const POCL: Self = Self(0x1_0006);
1612 }
1613 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1614 #[repr(transparent)]
1615 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDriverId.html>"]
1616 pub struct DriverId(pub(crate) i32);
1617 impl DriverId {
from_raw(x: i32) -> Self1618     pub const fn from_raw(x: i32) -> Self {
1619         DriverId(x)
1620     }
as_raw(self) -> i321621     pub const fn as_raw(self) -> i32 {
1622         self.0
1623     }
1624 }
1625 impl DriverId {
1626     #[doc = "Advanced Micro Devices, Inc."]
1627     pub const AMD_PROPRIETARY: Self = Self(1);
1628     #[doc = "Advanced Micro Devices, Inc."]
1629     pub const AMD_OPEN_SOURCE: Self = Self(2);
1630     #[doc = "Mesa open source project"]
1631     pub const MESA_RADV: Self = Self(3);
1632     #[doc = "NVIDIA Corporation"]
1633     pub const NVIDIA_PROPRIETARY: Self = Self(4);
1634     #[doc = "Intel Corporation"]
1635     pub const INTEL_PROPRIETARY_WINDOWS: Self = Self(5);
1636     #[doc = "Intel Corporation"]
1637     pub const INTEL_OPEN_SOURCE_MESA: Self = Self(6);
1638     #[doc = "Imagination Technologies"]
1639     pub const IMAGINATION_PROPRIETARY: Self = Self(7);
1640     #[doc = "Qualcomm Technologies, Inc."]
1641     pub const QUALCOMM_PROPRIETARY: Self = Self(8);
1642     #[doc = "Arm Limited"]
1643     pub const ARM_PROPRIETARY: Self = Self(9);
1644     #[doc = "Google LLC"]
1645     pub const GOOGLE_SWIFTSHADER: Self = Self(10);
1646     #[doc = "Google LLC"]
1647     pub const GGP_PROPRIETARY: Self = Self(11);
1648     #[doc = "Broadcom Inc."]
1649     pub const BROADCOM_PROPRIETARY: Self = Self(12);
1650     #[doc = "Mesa"]
1651     pub const MESA_LLVMPIPE: Self = Self(13);
1652     #[doc = "MoltenVK"]
1653     pub const MOLTENVK: Self = Self(14);
1654     #[doc = "Core Avionics & Industrial Inc."]
1655     pub const COREAVI_PROPRIETARY: Self = Self(15);
1656     #[doc = "Juice Technologies, Inc."]
1657     pub const JUICE_PROPRIETARY: Self = Self(16);
1658     #[doc = "Verisilicon, Inc."]
1659     pub const VERISILICON_PROPRIETARY: Self = Self(17);
1660 }
1661 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1662 #[repr(transparent)]
1663 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteEntryNV.html>"]
1664 pub struct ShadingRatePaletteEntryNV(pub(crate) i32);
1665 impl ShadingRatePaletteEntryNV {
from_raw(x: i32) -> Self1666     pub const fn from_raw(x: i32) -> Self {
1667         ShadingRatePaletteEntryNV(x)
1668     }
as_raw(self) -> i321669     pub const fn as_raw(self) -> i32 {
1670         self.0
1671     }
1672 }
1673 impl ShadingRatePaletteEntryNV {
1674     pub const NO_INVOCATIONS: Self = Self(0);
1675     pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(1);
1676     pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(2);
1677     pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(3);
1678     pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(4);
1679     pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(5);
1680     pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(6);
1681     pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(7);
1682     pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(8);
1683     pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
1684     pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(10);
1685     pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(11);
1686 }
1687 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1688 #[repr(transparent)]
1689 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderTypeNV.html>"]
1690 pub struct CoarseSampleOrderTypeNV(pub(crate) i32);
1691 impl CoarseSampleOrderTypeNV {
from_raw(x: i32) -> Self1692     pub const fn from_raw(x: i32) -> Self {
1693         CoarseSampleOrderTypeNV(x)
1694     }
as_raw(self) -> i321695     pub const fn as_raw(self) -> i32 {
1696         self.0
1697     }
1698 }
1699 impl CoarseSampleOrderTypeNV {
1700     pub const DEFAULT: Self = Self(0);
1701     pub const CUSTOM: Self = Self(1);
1702     pub const PIXEL_MAJOR: Self = Self(2);
1703     pub const SAMPLE_MAJOR: Self = Self(3);
1704 }
1705 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1706 #[repr(transparent)]
1707 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyAccelerationStructureModeKHR.html>"]
1708 pub struct CopyAccelerationStructureModeKHR(pub(crate) i32);
1709 impl CopyAccelerationStructureModeKHR {
from_raw(x: i32) -> Self1710     pub const fn from_raw(x: i32) -> Self {
1711         CopyAccelerationStructureModeKHR(x)
1712     }
as_raw(self) -> i321713     pub const fn as_raw(self) -> i32 {
1714         self.0
1715     }
1716 }
1717 impl CopyAccelerationStructureModeKHR {
1718     pub const CLONE: Self = Self(0);
1719     pub const COMPACT: Self = Self(1);
1720     pub const SERIALIZE: Self = Self(2);
1721     pub const DESERIALIZE: Self = Self(3);
1722 }
1723 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1724 #[repr(transparent)]
1725 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBuildAccelerationStructureModeKHR.html>"]
1726 pub struct BuildAccelerationStructureModeKHR(pub(crate) i32);
1727 impl BuildAccelerationStructureModeKHR {
from_raw(x: i32) -> Self1728     pub const fn from_raw(x: i32) -> Self {
1729         BuildAccelerationStructureModeKHR(x)
1730     }
as_raw(self) -> i321731     pub const fn as_raw(self) -> i32 {
1732         self.0
1733     }
1734 }
1735 impl BuildAccelerationStructureModeKHR {
1736     pub const BUILD: Self = Self(0);
1737     pub const UPDATE: Self = Self(1);
1738 }
1739 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1740 #[repr(transparent)]
1741 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureTypeKHR.html>"]
1742 pub struct AccelerationStructureTypeKHR(pub(crate) i32);
1743 impl AccelerationStructureTypeKHR {
from_raw(x: i32) -> Self1744     pub const fn from_raw(x: i32) -> Self {
1745         AccelerationStructureTypeKHR(x)
1746     }
as_raw(self) -> i321747     pub const fn as_raw(self) -> i32 {
1748         self.0
1749     }
1750 }
1751 impl AccelerationStructureTypeKHR {
1752     pub const TOP_LEVEL: Self = Self(0);
1753     pub const BOTTOM_LEVEL: Self = Self(1);
1754     pub const GENERIC: Self = Self(2);
1755 }
1756 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1757 #[repr(transparent)]
1758 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGeometryTypeKHR.html>"]
1759 pub struct GeometryTypeKHR(pub(crate) i32);
1760 impl GeometryTypeKHR {
from_raw(x: i32) -> Self1761     pub const fn from_raw(x: i32) -> Self {
1762         GeometryTypeKHR(x)
1763     }
as_raw(self) -> i321764     pub const fn as_raw(self) -> i32 {
1765         self.0
1766     }
1767 }
1768 impl GeometryTypeKHR {
1769     pub const TRIANGLES: Self = Self(0);
1770     pub const AABBS: Self = Self(1);
1771     pub const INSTANCES: Self = Self(2);
1772 }
1773 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1774 #[repr(transparent)]
1775 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMemoryRequirementsTypeNV.html>"]
1776 pub struct AccelerationStructureMemoryRequirementsTypeNV(pub(crate) i32);
1777 impl AccelerationStructureMemoryRequirementsTypeNV {
from_raw(x: i32) -> Self1778     pub const fn from_raw(x: i32) -> Self {
1779         AccelerationStructureMemoryRequirementsTypeNV(x)
1780     }
as_raw(self) -> i321781     pub const fn as_raw(self) -> i32 {
1782         self.0
1783     }
1784 }
1785 impl AccelerationStructureMemoryRequirementsTypeNV {
1786     pub const OBJECT: Self = Self(0);
1787     pub const BUILD_SCRATCH: Self = Self(1);
1788     pub const UPDATE_SCRATCH: Self = Self(2);
1789 }
1790 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1791 #[repr(transparent)]
1792 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureBuildTypeKHR.html>"]
1793 pub struct AccelerationStructureBuildTypeKHR(pub(crate) i32);
1794 impl AccelerationStructureBuildTypeKHR {
from_raw(x: i32) -> Self1795     pub const fn from_raw(x: i32) -> Self {
1796         AccelerationStructureBuildTypeKHR(x)
1797     }
as_raw(self) -> i321798     pub const fn as_raw(self) -> i32 {
1799         self.0
1800     }
1801 }
1802 impl AccelerationStructureBuildTypeKHR {
1803     pub const HOST: Self = Self(0);
1804     pub const DEVICE: Self = Self(1);
1805     pub const HOST_OR_DEVICE: Self = Self(2);
1806 }
1807 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1808 #[repr(transparent)]
1809 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRayTracingShaderGroupTypeKHR.html>"]
1810 pub struct RayTracingShaderGroupTypeKHR(pub(crate) i32);
1811 impl RayTracingShaderGroupTypeKHR {
from_raw(x: i32) -> Self1812     pub const fn from_raw(x: i32) -> Self {
1813         RayTracingShaderGroupTypeKHR(x)
1814     }
as_raw(self) -> i321815     pub const fn as_raw(self) -> i32 {
1816         self.0
1817     }
1818 }
1819 impl RayTracingShaderGroupTypeKHR {
1820     pub const GENERAL: Self = Self(0);
1821     pub const TRIANGLES_HIT_GROUP: Self = Self(1);
1822     pub const PROCEDURAL_HIT_GROUP: Self = Self(2);
1823 }
1824 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1825 #[repr(transparent)]
1826 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureCompatibilityKHR.html>"]
1827 pub struct AccelerationStructureCompatibilityKHR(pub(crate) i32);
1828 impl AccelerationStructureCompatibilityKHR {
from_raw(x: i32) -> Self1829     pub const fn from_raw(x: i32) -> Self {
1830         AccelerationStructureCompatibilityKHR(x)
1831     }
as_raw(self) -> i321832     pub const fn as_raw(self) -> i32 {
1833         self.0
1834     }
1835 }
1836 impl AccelerationStructureCompatibilityKHR {
1837     pub const COMPATIBLE: Self = Self(0);
1838     pub const INCOMPATIBLE: Self = Self(1);
1839 }
1840 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1841 #[repr(transparent)]
1842 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderGroupShaderKHR.html>"]
1843 pub struct ShaderGroupShaderKHR(pub(crate) i32);
1844 impl ShaderGroupShaderKHR {
from_raw(x: i32) -> Self1845     pub const fn from_raw(x: i32) -> Self {
1846         ShaderGroupShaderKHR(x)
1847     }
as_raw(self) -> i321848     pub const fn as_raw(self) -> i32 {
1849         self.0
1850     }
1851 }
1852 impl ShaderGroupShaderKHR {
1853     pub const GENERAL: Self = Self(0);
1854     pub const CLOSEST_HIT: Self = Self(1);
1855     pub const ANY_HIT: Self = Self(2);
1856     pub const INTERSECTION: Self = Self(3);
1857 }
1858 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1859 #[repr(transparent)]
1860 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryOverallocationBehaviorAMD.html>"]
1861 pub struct MemoryOverallocationBehaviorAMD(pub(crate) i32);
1862 impl MemoryOverallocationBehaviorAMD {
from_raw(x: i32) -> Self1863     pub const fn from_raw(x: i32) -> Self {
1864         MemoryOverallocationBehaviorAMD(x)
1865     }
as_raw(self) -> i321866     pub const fn as_raw(self) -> i32 {
1867         self.0
1868     }
1869 }
1870 impl MemoryOverallocationBehaviorAMD {
1871     pub const DEFAULT: Self = Self(0);
1872     pub const ALLOWED: Self = Self(1);
1873     pub const DISALLOWED: Self = Self(2);
1874 }
1875 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1876 #[repr(transparent)]
1877 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkScopeNV.html>"]
1878 pub struct ScopeNV(pub(crate) i32);
1879 impl ScopeNV {
from_raw(x: i32) -> Self1880     pub const fn from_raw(x: i32) -> Self {
1881         ScopeNV(x)
1882     }
as_raw(self) -> i321883     pub const fn as_raw(self) -> i32 {
1884         self.0
1885     }
1886 }
1887 impl ScopeNV {
1888     pub const DEVICE: Self = Self(1);
1889     pub const WORKGROUP: Self = Self(2);
1890     pub const SUBGROUP: Self = Self(3);
1891     pub const QUEUE_FAMILY: Self = Self(5);
1892 }
1893 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1894 #[repr(transparent)]
1895 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentTypeNV.html>"]
1896 pub struct ComponentTypeNV(pub(crate) i32);
1897 impl ComponentTypeNV {
from_raw(x: i32) -> Self1898     pub const fn from_raw(x: i32) -> Self {
1899         ComponentTypeNV(x)
1900     }
as_raw(self) -> i321901     pub const fn as_raw(self) -> i32 {
1902         self.0
1903     }
1904 }
1905 impl ComponentTypeNV {
1906     pub const FLOAT16: Self = Self(0);
1907     pub const FLOAT32: Self = Self(1);
1908     pub const FLOAT64: Self = Self(2);
1909     pub const SINT8: Self = Self(3);
1910     pub const SINT16: Self = Self(4);
1911     pub const SINT32: Self = Self(5);
1912     pub const SINT64: Self = Self(6);
1913     pub const UINT8: Self = Self(7);
1914     pub const UINT16: Self = Self(8);
1915     pub const UINT32: Self = Self(9);
1916     pub const UINT64: Self = Self(10);
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/VkFullScreenExclusiveEXT.html>"]
1921 pub struct FullScreenExclusiveEXT(pub(crate) i32);
1922 impl FullScreenExclusiveEXT {
from_raw(x: i32) -> Self1923     pub const fn from_raw(x: i32) -> Self {
1924         FullScreenExclusiveEXT(x)
1925     }
as_raw(self) -> i321926     pub const fn as_raw(self) -> i32 {
1927         self.0
1928     }
1929 }
1930 impl FullScreenExclusiveEXT {
1931     pub const DEFAULT: Self = Self(0);
1932     pub const ALLOWED: Self = Self(1);
1933     pub const DISALLOWED: Self = Self(2);
1934     pub const APPLICATION_CONTROLLED: Self = Self(3);
1935 }
1936 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1937 #[repr(transparent)]
1938 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterScopeKHR.html>"]
1939 pub struct PerformanceCounterScopeKHR(pub(crate) i32);
1940 impl PerformanceCounterScopeKHR {
from_raw(x: i32) -> Self1941     pub const fn from_raw(x: i32) -> Self {
1942         PerformanceCounterScopeKHR(x)
1943     }
as_raw(self) -> i321944     pub const fn as_raw(self) -> i32 {
1945         self.0
1946     }
1947 }
1948 impl PerformanceCounterScopeKHR {
1949     pub const COMMAND_BUFFER: Self = Self(0);
1950     pub const RENDER_PASS: Self = Self(1);
1951     pub const COMMAND: Self = Self(2);
1952     pub const QUERY_SCOPE_COMMAND_BUFFER: Self = Self::COMMAND_BUFFER;
1953     pub const QUERY_SCOPE_RENDER_PASS: Self = Self::RENDER_PASS;
1954     pub const QUERY_SCOPE_COMMAND: Self = Self::COMMAND;
1955 }
1956 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1957 #[repr(transparent)]
1958 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterUnitKHR.html>"]
1959 pub struct PerformanceCounterUnitKHR(pub(crate) i32);
1960 impl PerformanceCounterUnitKHR {
from_raw(x: i32) -> Self1961     pub const fn from_raw(x: i32) -> Self {
1962         PerformanceCounterUnitKHR(x)
1963     }
as_raw(self) -> i321964     pub const fn as_raw(self) -> i32 {
1965         self.0
1966     }
1967 }
1968 impl PerformanceCounterUnitKHR {
1969     pub const GENERIC: Self = Self(0);
1970     pub const PERCENTAGE: Self = Self(1);
1971     pub const NANOSECONDS: Self = Self(2);
1972     pub const BYTES: Self = Self(3);
1973     pub const BYTES_PER_SECOND: Self = Self(4);
1974     pub const KELVIN: Self = Self(5);
1975     pub const WATTS: Self = Self(6);
1976     pub const VOLTS: Self = Self(7);
1977     pub const AMPS: Self = Self(8);
1978     pub const HERTZ: Self = Self(9);
1979     pub const CYCLES: Self = Self(10);
1980 }
1981 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1982 #[repr(transparent)]
1983 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceCounterStorageKHR.html>"]
1984 pub struct PerformanceCounterStorageKHR(pub(crate) i32);
1985 impl PerformanceCounterStorageKHR {
from_raw(x: i32) -> Self1986     pub const fn from_raw(x: i32) -> Self {
1987         PerformanceCounterStorageKHR(x)
1988     }
as_raw(self) -> i321989     pub const fn as_raw(self) -> i32 {
1990         self.0
1991     }
1992 }
1993 impl PerformanceCounterStorageKHR {
1994     pub const INT32: Self = Self(0);
1995     pub const INT64: Self = Self(1);
1996     pub const UINT32: Self = Self(2);
1997     pub const UINT64: Self = Self(3);
1998     pub const FLOAT32: Self = Self(4);
1999     pub const FLOAT64: Self = Self(5);
2000 }
2001 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2002 #[repr(transparent)]
2003 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceConfigurationTypeINTEL.html>"]
2004 pub struct PerformanceConfigurationTypeINTEL(pub(crate) i32);
2005 impl PerformanceConfigurationTypeINTEL {
from_raw(x: i32) -> Self2006     pub const fn from_raw(x: i32) -> Self {
2007         PerformanceConfigurationTypeINTEL(x)
2008     }
as_raw(self) -> i322009     pub const fn as_raw(self) -> i32 {
2010         self.0
2011     }
2012 }
2013 impl PerformanceConfigurationTypeINTEL {
2014     pub const COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED: Self = Self(0);
2015 }
2016 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2017 #[repr(transparent)]
2018 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolSamplingModeINTEL.html>"]
2019 pub struct QueryPoolSamplingModeINTEL(pub(crate) i32);
2020 impl QueryPoolSamplingModeINTEL {
from_raw(x: i32) -> Self2021     pub const fn from_raw(x: i32) -> Self {
2022         QueryPoolSamplingModeINTEL(x)
2023     }
as_raw(self) -> i322024     pub const fn as_raw(self) -> i32 {
2025         self.0
2026     }
2027 }
2028 impl QueryPoolSamplingModeINTEL {
2029     pub const MANUAL: Self = Self(0);
2030 }
2031 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2032 #[repr(transparent)]
2033 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceOverrideTypeINTEL.html>"]
2034 pub struct PerformanceOverrideTypeINTEL(pub(crate) i32);
2035 impl PerformanceOverrideTypeINTEL {
from_raw(x: i32) -> Self2036     pub const fn from_raw(x: i32) -> Self {
2037         PerformanceOverrideTypeINTEL(x)
2038     }
as_raw(self) -> i322039     pub const fn as_raw(self) -> i32 {
2040         self.0
2041     }
2042 }
2043 impl PerformanceOverrideTypeINTEL {
2044     pub const NULL_HARDWARE: Self = Self(0);
2045     pub const FLUSH_GPU_CACHES: Self = Self(1);
2046 }
2047 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2048 #[repr(transparent)]
2049 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceParameterTypeINTEL.html>"]
2050 pub struct PerformanceParameterTypeINTEL(pub(crate) i32);
2051 impl PerformanceParameterTypeINTEL {
from_raw(x: i32) -> Self2052     pub const fn from_raw(x: i32) -> Self {
2053         PerformanceParameterTypeINTEL(x)
2054     }
as_raw(self) -> i322055     pub const fn as_raw(self) -> i32 {
2056         self.0
2057     }
2058 }
2059 impl PerformanceParameterTypeINTEL {
2060     pub const HW_COUNTERS_SUPPORTED: Self = Self(0);
2061     pub const STREAM_MARKER_VALIDS: Self = Self(1);
2062 }
2063 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2064 #[repr(transparent)]
2065 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPerformanceValueTypeINTEL.html>"]
2066 pub struct PerformanceValueTypeINTEL(pub(crate) i32);
2067 impl PerformanceValueTypeINTEL {
from_raw(x: i32) -> Self2068     pub const fn from_raw(x: i32) -> Self {
2069         PerformanceValueTypeINTEL(x)
2070     }
as_raw(self) -> i322071     pub const fn as_raw(self) -> i32 {
2072         self.0
2073     }
2074 }
2075 impl PerformanceValueTypeINTEL {
2076     pub const UINT32: Self = Self(0);
2077     pub const UINT64: Self = Self(1);
2078     pub const FLOAT: Self = Self(2);
2079     pub const BOOL: Self = Self(3);
2080     pub const STRING: Self = Self(4);
2081 }
2082 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2083 #[repr(transparent)]
2084 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderFloatControlsIndependence.html>"]
2085 pub struct ShaderFloatControlsIndependence(pub(crate) i32);
2086 impl ShaderFloatControlsIndependence {
from_raw(x: i32) -> Self2087     pub const fn from_raw(x: i32) -> Self {
2088         ShaderFloatControlsIndependence(x)
2089     }
as_raw(self) -> i322090     pub const fn as_raw(self) -> i32 {
2091         self.0
2092     }
2093 }
2094 impl ShaderFloatControlsIndependence {
2095     pub const TYPE_32_ONLY: Self = Self(0);
2096     pub const ALL: Self = Self(1);
2097     pub const NONE: Self = Self(2);
2098 }
2099 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2100 #[repr(transparent)]
2101 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineExecutableStatisticFormatKHR.html>"]
2102 pub struct PipelineExecutableStatisticFormatKHR(pub(crate) i32);
2103 impl PipelineExecutableStatisticFormatKHR {
from_raw(x: i32) -> Self2104     pub const fn from_raw(x: i32) -> Self {
2105         PipelineExecutableStatisticFormatKHR(x)
2106     }
as_raw(self) -> i322107     pub const fn as_raw(self) -> i32 {
2108         self.0
2109     }
2110 }
2111 impl PipelineExecutableStatisticFormatKHR {
2112     pub const BOOL32: Self = Self(0);
2113     pub const INT64: Self = Self(1);
2114     pub const UINT64: Self = Self(2);
2115     pub const FLOAT64: Self = Self(3);
2116 }
2117 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2118 #[repr(transparent)]
2119 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLineRasterizationModeEXT.html>"]
2120 pub struct LineRasterizationModeEXT(pub(crate) i32);
2121 impl LineRasterizationModeEXT {
from_raw(x: i32) -> Self2122     pub const fn from_raw(x: i32) -> Self {
2123         LineRasterizationModeEXT(x)
2124     }
as_raw(self) -> i322125     pub const fn as_raw(self) -> i32 {
2126         self.0
2127     }
2128 }
2129 impl LineRasterizationModeEXT {
2130     pub const DEFAULT: Self = Self(0);
2131     pub const RECTANGULAR: Self = Self(1);
2132     pub const BRESENHAM: Self = Self(2);
2133     pub const RECTANGULAR_SMOOTH: Self = Self(3);
2134 }
2135 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2136 #[repr(transparent)]
2137 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateCombinerOpKHR.html>"]
2138 pub struct FragmentShadingRateCombinerOpKHR(pub(crate) i32);
2139 impl FragmentShadingRateCombinerOpKHR {
from_raw(x: i32) -> Self2140     pub const fn from_raw(x: i32) -> Self {
2141         FragmentShadingRateCombinerOpKHR(x)
2142     }
as_raw(self) -> i322143     pub const fn as_raw(self) -> i32 {
2144         self.0
2145     }
2146 }
2147 impl FragmentShadingRateCombinerOpKHR {
2148     pub const KEEP: Self = Self(0);
2149     pub const REPLACE: Self = Self(1);
2150     pub const MIN: Self = Self(2);
2151     pub const MAX: Self = Self(3);
2152     pub const MUL: Self = Self(4);
2153 }
2154 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2155 #[repr(transparent)]
2156 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateNV.html>"]
2157 pub struct FragmentShadingRateNV(pub(crate) i32);
2158 impl FragmentShadingRateNV {
from_raw(x: i32) -> Self2159     pub const fn from_raw(x: i32) -> Self {
2160         FragmentShadingRateNV(x)
2161     }
as_raw(self) -> i322162     pub const fn as_raw(self) -> i32 {
2163         self.0
2164     }
2165 }
2166 impl FragmentShadingRateNV {
2167     pub const TYPE_1_INVOCATION_PER_PIXEL: Self = Self(0);
2168     pub const TYPE_1_INVOCATION_PER_1X2_PIXELS: Self = Self(1);
2169     pub const TYPE_1_INVOCATION_PER_2X1_PIXELS: Self = Self(4);
2170     pub const TYPE_1_INVOCATION_PER_2X2_PIXELS: Self = Self(5);
2171     pub const TYPE_1_INVOCATION_PER_2X4_PIXELS: Self = Self(6);
2172     pub const TYPE_1_INVOCATION_PER_4X2_PIXELS: Self = Self(9);
2173     pub const TYPE_1_INVOCATION_PER_4X4_PIXELS: Self = Self(10);
2174     pub const TYPE_2_INVOCATIONS_PER_PIXEL: Self = Self(11);
2175     pub const TYPE_4_INVOCATIONS_PER_PIXEL: Self = Self(12);
2176     pub const TYPE_8_INVOCATIONS_PER_PIXEL: Self = Self(13);
2177     pub const TYPE_16_INVOCATIONS_PER_PIXEL: Self = Self(14);
2178     pub const NO_INVOCATIONS: Self = Self(15);
2179 }
2180 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2181 #[repr(transparent)]
2182 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFragmentShadingRateTypeNV.html>"]
2183 pub struct FragmentShadingRateTypeNV(pub(crate) i32);
2184 impl FragmentShadingRateTypeNV {
from_raw(x: i32) -> Self2185     pub const fn from_raw(x: i32) -> Self {
2186         FragmentShadingRateTypeNV(x)
2187     }
as_raw(self) -> i322188     pub const fn as_raw(self) -> i32 {
2189         self.0
2190     }
2191 }
2192 impl FragmentShadingRateTypeNV {
2193     pub const FRAGMENT_SIZE: Self = Self(0);
2194     pub const ENUMS: Self = Self(1);
2195 }
2196 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2197 #[repr(transparent)]
2198 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkProvokingVertexModeEXT.html>"]
2199 pub struct ProvokingVertexModeEXT(pub(crate) i32);
2200 impl ProvokingVertexModeEXT {
from_raw(x: i32) -> Self2201     pub const fn from_raw(x: i32) -> Self {
2202         ProvokingVertexModeEXT(x)
2203     }
as_raw(self) -> i322204     pub const fn as_raw(self) -> i32 {
2205         self.0
2206     }
2207 }
2208 impl ProvokingVertexModeEXT {
2209     pub const FIRST_VERTEX: Self = Self(0);
2210     pub const LAST_VERTEX: Self = Self(1);
2211 }
2212 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2213 #[repr(transparent)]
2214 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccelerationStructureMotionInstanceTypeNV.html>"]
2215 pub struct AccelerationStructureMotionInstanceTypeNV(pub(crate) i32);
2216 impl AccelerationStructureMotionInstanceTypeNV {
from_raw(x: i32) -> Self2217     pub const fn from_raw(x: i32) -> Self {
2218         AccelerationStructureMotionInstanceTypeNV(x)
2219     }
as_raw(self) -> i322220     pub const fn as_raw(self) -> i32 {
2221         self.0
2222     }
2223 }
2224 impl AccelerationStructureMotionInstanceTypeNV {
2225     pub const STATIC: Self = Self(0);
2226     pub const MATRIX_MOTION: Self = Self(1);
2227     pub const SRT_MOTION: Self = Self(2);
2228 }
2229 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2230 #[repr(transparent)]
2231 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryResultStatusKHR.html>"]
2232 pub struct QueryResultStatusKHR(pub(crate) i32);
2233 impl QueryResultStatusKHR {
from_raw(x: i32) -> Self2234     pub const fn from_raw(x: i32) -> Self {
2235         QueryResultStatusKHR(x)
2236     }
as_raw(self) -> i322237     pub const fn as_raw(self) -> i32 {
2238         self.0
2239     }
2240 }
2241 impl QueryResultStatusKHR {
2242     pub const ERROR: Self = Self(-1);
2243     pub const NOT_READY: Self = Self(0);
2244     pub const COMPLETE: Self = Self(1);
2245 }
2246