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