1use 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>"]
5pub struct ImageLayout(pub(crate) i32);
6impl ImageLayout {
7 #[inline]
8 pub const fn from_raw(x: i32) -> Self {
9 Self(x)
10 }
11 #[inline]
12 pub const fn as_raw(self) -> i32 {
13 self.0
14 }
15}
16impl ImageLayout {
17 #[doc = "Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)"]
18 pub const UNDEFINED: Self = Self(0);
19 #[doc = "General layout when image can be used for any kind of access"]
20 pub const GENERAL: Self = Self(1);
21 #[doc = "Optimal layout when image is only used for color attachment read/write"]
22 pub const COLOR_ATTACHMENT_OPTIMAL: Self = Self(2);
23 #[doc = "Optimal layout when image is only used for depth/stencil attachment read/write"]
24 pub const DEPTH_STENCIL_ATTACHMENT_OPTIMAL: Self = Self(3);
25 #[doc = "Optimal layout when image is used for read only depth/stencil attachment and shader access"]
26 pub const DEPTH_STENCIL_READ_ONLY_OPTIMAL: Self = Self(4);
27 #[doc = "Optimal layout when image is used for read only shader access"]
28 pub const SHADER_READ_ONLY_OPTIMAL: Self = Self(5);
29 #[doc = "Optimal layout when image is used only as source of transfer operations"]
30 pub const TRANSFER_SRC_OPTIMAL: Self = Self(6);
31 #[doc = "Optimal layout when image is used only as destination of transfer operations"]
32 pub const TRANSFER_DST_OPTIMAL: Self = Self(7);
33 #[doc = "Initial layout used when the data is populated by the CPU"]
34 pub const PREINITIALIZED: Self = Self(8);
35}
36#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
37#[repr(transparent)]
38#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html>"]
39pub struct AttachmentLoadOp(pub(crate) i32);
40impl AttachmentLoadOp {
41 #[inline]
42 pub const fn from_raw(x: i32) -> Self {
43 Self(x)
44 }
45 #[inline]
46 pub const fn as_raw(self) -> i32 {
47 self.0
48 }
49}
50impl AttachmentLoadOp {
51 pub const LOAD: Self = Self(0);
52 pub const CLEAR: Self = Self(1);
53 pub const DONT_CARE: Self = Self(2);
54}
55#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
56#[repr(transparent)]
57#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentStoreOp.html>"]
58pub struct AttachmentStoreOp(pub(crate) i32);
59impl AttachmentStoreOp {
60 #[inline]
61 pub const fn from_raw(x: i32) -> Self {
62 Self(x)
63 }
64 #[inline]
65 pub const fn as_raw(self) -> i32 {
66 self.0
67 }
68}
69impl AttachmentStoreOp {
70 pub const STORE: Self = Self(0);
71 pub const DONT_CARE: Self = Self(1);
72}
73#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
74#[repr(transparent)]
75#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageType.html>"]
76pub struct ImageType(pub(crate) i32);
77impl ImageType {
78 #[inline]
79 pub const fn from_raw(x: i32) -> Self {
80 Self(x)
81 }
82 #[inline]
83 pub const fn as_raw(self) -> i32 {
84 self.0
85 }
86}
87impl ImageType {
88 pub const TYPE_1D: Self = Self(0);
89 pub const TYPE_2D: Self = Self(1);
90 pub const TYPE_3D: Self = Self(2);
91}
92#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
93#[repr(transparent)]
94#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageTiling.html>"]
95pub struct ImageTiling(pub(crate) i32);
96impl ImageTiling {
97 #[inline]
98 pub const fn from_raw(x: i32) -> Self {
99 Self(x)
100 }
101 #[inline]
102 pub const fn as_raw(self) -> i32 {
103 self.0
104 }
105}
106impl ImageTiling {
107 pub const OPTIMAL: Self = Self(0);
108 pub const LINEAR: Self = Self(1);
109}
110#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
111#[repr(transparent)]
112#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html>"]
113pub struct ImageViewType(pub(crate) i32);
114impl ImageViewType {
115 #[inline]
116 pub const fn from_raw(x: i32) -> Self {
117 Self(x)
118 }
119 #[inline]
120 pub const fn as_raw(self) -> i32 {
121 self.0
122 }
123}
124impl ImageViewType {
125 pub const TYPE_1D: Self = Self(0);
126 pub const TYPE_2D: Self = Self(1);
127 pub const TYPE_3D: Self = Self(2);
128 pub const CUBE: Self = Self(3);
129 pub const TYPE_1D_ARRAY: Self = Self(4);
130 pub const TYPE_2D_ARRAY: Self = Self(5);
131 pub const CUBE_ARRAY: Self = Self(6);
132}
133#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
134#[repr(transparent)]
135#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBufferLevel.html>"]
136pub struct CommandBufferLevel(pub(crate) i32);
137impl CommandBufferLevel {
138 #[inline]
139 pub const fn from_raw(x: i32) -> Self {
140 Self(x)
141 }
142 #[inline]
143 pub const fn as_raw(self) -> i32 {
144 self.0
145 }
146}
147impl CommandBufferLevel {
148 pub const PRIMARY: Self = Self(0);
149 pub const SECONDARY: Self = Self(1);
150}
151#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
152#[repr(transparent)]
153#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html>"]
154pub struct ComponentSwizzle(pub(crate) i32);
155impl ComponentSwizzle {
156 #[inline]
157 pub const fn from_raw(x: i32) -> Self {
158 Self(x)
159 }
160 #[inline]
161 pub const fn as_raw(self) -> i32 {
162 self.0
163 }
164}
165impl ComponentSwizzle {
166 pub const IDENTITY: Self = Self(0);
167 pub const ZERO: Self = Self(1);
168 pub const ONE: Self = Self(2);
169 pub const R: Self = Self(3);
170 pub const G: Self = Self(4);
171 pub const B: Self = Self(5);
172 pub const A: Self = Self(6);
173}
174#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
175#[repr(transparent)]
176#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html>"]
177pub struct DescriptorType(pub(crate) i32);
178impl DescriptorType {
179 #[inline]
180 pub const fn from_raw(x: i32) -> Self {
181 Self(x)
182 }
183 #[inline]
184 pub const fn as_raw(self) -> i32 {
185 self.0
186 }
187}
188impl DescriptorType {
189 pub const SAMPLER: Self = Self(0);
190 pub const COMBINED_IMAGE_SAMPLER: Self = Self(1);
191 pub const SAMPLED_IMAGE: Self = Self(2);
192 pub const STORAGE_IMAGE: Self = Self(3);
193 pub const UNIFORM_TEXEL_BUFFER: Self = Self(4);
194 pub const STORAGE_TEXEL_BUFFER: Self = Self(5);
195 pub const UNIFORM_BUFFER: Self = Self(6);
196 pub const STORAGE_BUFFER: Self = Self(7);
197 pub const UNIFORM_BUFFER_DYNAMIC: Self = Self(8);
198 pub const STORAGE_BUFFER_DYNAMIC: Self = Self(9);
199 pub const INPUT_ATTACHMENT: Self = Self(10);
200}
201#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
202#[repr(transparent)]
203#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryType.html>"]
204pub struct QueryType(pub(crate) i32);
205impl QueryType {
206 #[inline]
207 pub const fn from_raw(x: i32) -> Self {
208 Self(x)
209 }
210 #[inline]
211 pub const fn as_raw(self) -> i32 {
212 self.0
213 }
214}
215impl QueryType {
216 pub const OCCLUSION: Self = Self(0);
217 #[doc = "Optional"]
218 pub const PIPELINE_STATISTICS: Self = Self(1);
219 pub const TIMESTAMP: Self = Self(2);
220}
221#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
222#[repr(transparent)]
223#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html>"]
224pub struct BorderColor(pub(crate) i32);
225impl BorderColor {
226 #[inline]
227 pub const fn from_raw(x: i32) -> Self {
228 Self(x)
229 }
230 #[inline]
231 pub const fn as_raw(self) -> i32 {
232 self.0
233 }
234}
235impl BorderColor {
236 pub const FLOAT_TRANSPARENT_BLACK: Self = Self(0);
237 pub const INT_TRANSPARENT_BLACK: Self = Self(1);
238 pub const FLOAT_OPAQUE_BLACK: Self = Self(2);
239 pub const INT_OPAQUE_BLACK: Self = Self(3);
240 pub const FLOAT_OPAQUE_WHITE: Self = Self(4);
241 pub const INT_OPAQUE_WHITE: Self = Self(5);
242}
243#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
244#[repr(transparent)]
245#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineBindPoint.html>"]
246pub struct PipelineBindPoint(pub(crate) i32);
247impl PipelineBindPoint {
248 #[inline]
249 pub const fn from_raw(x: i32) -> Self {
250 Self(x)
251 }
252 #[inline]
253 pub const fn as_raw(self) -> i32 {
254 self.0
255 }
256}
257impl PipelineBindPoint {
258 pub const GRAPHICS: Self = Self(0);
259 pub const COMPUTE: Self = Self(1);
260}
261#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
262#[repr(transparent)]
263#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheHeaderVersion.html>"]
264pub struct PipelineCacheHeaderVersion(pub(crate) i32);
265impl PipelineCacheHeaderVersion {
266 #[inline]
267 pub const fn from_raw(x: i32) -> Self {
268 Self(x)
269 }
270 #[inline]
271 pub const fn as_raw(self) -> i32 {
272 self.0
273 }
274}
275impl PipelineCacheHeaderVersion {
276 pub const ONE: Self = Self(1);
277}
278#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
279#[repr(transparent)]
280#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html>"]
281pub struct PrimitiveTopology(pub(crate) i32);
282impl PrimitiveTopology {
283 #[inline]
284 pub const fn from_raw(x: i32) -> Self {
285 Self(x)
286 }
287 #[inline]
288 pub const fn as_raw(self) -> i32 {
289 self.0
290 }
291}
292impl PrimitiveTopology {
293 pub const POINT_LIST: Self = Self(0);
294 pub const LINE_LIST: Self = Self(1);
295 pub const LINE_STRIP: Self = Self(2);
296 pub const TRIANGLE_LIST: Self = Self(3);
297 pub const TRIANGLE_STRIP: Self = Self(4);
298 pub const TRIANGLE_FAN: Self = Self(5);
299 pub const LINE_LIST_WITH_ADJACENCY: Self = Self(6);
300 pub const LINE_STRIP_WITH_ADJACENCY: Self = Self(7);
301 pub const TRIANGLE_LIST_WITH_ADJACENCY: Self = Self(8);
302 pub const TRIANGLE_STRIP_WITH_ADJACENCY: Self = Self(9);
303 pub const PATCH_LIST: Self = Self(10);
304}
305#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
306#[repr(transparent)]
307#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSharingMode.html>"]
308pub struct SharingMode(pub(crate) i32);
309impl SharingMode {
310 #[inline]
311 pub const fn from_raw(x: i32) -> Self {
312 Self(x)
313 }
314 #[inline]
315 pub const fn as_raw(self) -> i32 {
316 self.0
317 }
318}
319impl SharingMode {
320 pub const EXCLUSIVE: Self = Self(0);
321 pub const CONCURRENT: Self = Self(1);
322}
323#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
324#[repr(transparent)]
325#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkIndexType.html>"]
326pub struct IndexType(pub(crate) i32);
327impl IndexType {
328 #[inline]
329 pub const fn from_raw(x: i32) -> Self {
330 Self(x)
331 }
332 #[inline]
333 pub const fn as_raw(self) -> i32 {
334 self.0
335 }
336}
337impl IndexType {
338 pub const UINT16: Self = Self(0);
339 pub const UINT32: Self = Self(1);
340}
341#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
342#[repr(transparent)]
343#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFilter.html>"]
344pub struct Filter(pub(crate) i32);
345impl Filter {
346 #[inline]
347 pub const fn from_raw(x: i32) -> Self {
348 Self(x)
349 }
350 #[inline]
351 pub const fn as_raw(self) -> i32 {
352 self.0
353 }
354}
355impl Filter {
356 pub const NEAREST: Self = Self(0);
357 pub const LINEAR: Self = Self(1);
358}
359#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
360#[repr(transparent)]
361#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerMipmapMode.html>"]
362pub struct SamplerMipmapMode(pub(crate) i32);
363impl SamplerMipmapMode {
364 #[inline]
365 pub const fn from_raw(x: i32) -> Self {
366 Self(x)
367 }
368 #[inline]
369 pub const fn as_raw(self) -> i32 {
370 self.0
371 }
372}
373impl SamplerMipmapMode {
374 #[doc = "Choose nearest mip level"]
375 pub const NEAREST: Self = Self(0);
376 #[doc = "Linear filter between mip levels"]
377 pub const LINEAR: Self = Self(1);
378}
379#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
380#[repr(transparent)]
381#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html>"]
382pub struct SamplerAddressMode(pub(crate) i32);
383impl SamplerAddressMode {
384 #[inline]
385 pub const fn from_raw(x: i32) -> Self {
386 Self(x)
387 }
388 #[inline]
389 pub const fn as_raw(self) -> i32 {
390 self.0
391 }
392}
393impl SamplerAddressMode {
394 pub const REPEAT: Self = Self(0);
395 pub const MIRRORED_REPEAT: Self = Self(1);
396 pub const CLAMP_TO_EDGE: Self = Self(2);
397 pub const CLAMP_TO_BORDER: Self = Self(3);
398}
399#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
400#[repr(transparent)]
401#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html>"]
402pub struct CompareOp(pub(crate) i32);
403impl CompareOp {
404 #[inline]
405 pub const fn from_raw(x: i32) -> Self {
406 Self(x)
407 }
408 #[inline]
409 pub const fn as_raw(self) -> i32 {
410 self.0
411 }
412}
413impl CompareOp {
414 pub const NEVER: Self = Self(0);
415 pub const LESS: Self = Self(1);
416 pub const EQUAL: Self = Self(2);
417 pub const LESS_OR_EQUAL: Self = Self(3);
418 pub const GREATER: Self = Self(4);
419 pub const NOT_EQUAL: Self = Self(5);
420 pub const GREATER_OR_EQUAL: Self = Self(6);
421 pub const ALWAYS: Self = Self(7);
422}
423#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
424#[repr(transparent)]
425#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPolygonMode.html>"]
426pub struct PolygonMode(pub(crate) i32);
427impl PolygonMode {
428 #[inline]
429 pub const fn from_raw(x: i32) -> Self {
430 Self(x)
431 }
432 #[inline]
433 pub const fn as_raw(self) -> i32 {
434 self.0
435 }
436}
437impl PolygonMode {
438 pub const FILL: Self = Self(0);
439 pub const LINE: Self = Self(1);
440 pub const POINT: Self = Self(2);
441}
442#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
443#[repr(transparent)]
444#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFrontFace.html>"]
445pub struct FrontFace(pub(crate) i32);
446impl FrontFace {
447 #[inline]
448 pub const fn from_raw(x: i32) -> Self {
449 Self(x)
450 }
451 #[inline]
452 pub const fn as_raw(self) -> i32 {
453 self.0
454 }
455}
456impl FrontFace {
457 pub const COUNTER_CLOCKWISE: Self = Self(0);
458 pub const CLOCKWISE: Self = Self(1);
459}
460#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
461#[repr(transparent)]
462#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html>"]
463pub struct BlendFactor(pub(crate) i32);
464impl BlendFactor {
465 #[inline]
466 pub const fn from_raw(x: i32) -> Self {
467 Self(x)
468 }
469 #[inline]
470 pub const fn as_raw(self) -> i32 {
471 self.0
472 }
473}
474impl BlendFactor {
475 pub const ZERO: Self = Self(0);
476 pub const ONE: Self = Self(1);
477 pub const SRC_COLOR: Self = Self(2);
478 pub const ONE_MINUS_SRC_COLOR: Self = Self(3);
479 pub const DST_COLOR: Self = Self(4);
480 pub const ONE_MINUS_DST_COLOR: Self = Self(5);
481 pub const SRC_ALPHA: Self = Self(6);
482 pub const ONE_MINUS_SRC_ALPHA: Self = Self(7);
483 pub const DST_ALPHA: Self = Self(8);
484 pub const ONE_MINUS_DST_ALPHA: Self = Self(9);
485 pub const CONSTANT_COLOR: Self = Self(10);
486 pub const ONE_MINUS_CONSTANT_COLOR: Self = Self(11);
487 pub const CONSTANT_ALPHA: Self = Self(12);
488 pub const ONE_MINUS_CONSTANT_ALPHA: Self = Self(13);
489 pub const SRC_ALPHA_SATURATE: Self = Self(14);
490 pub const SRC1_COLOR: Self = Self(15);
491 pub const ONE_MINUS_SRC1_COLOR: Self = Self(16);
492 pub const SRC1_ALPHA: Self = Self(17);
493 pub const ONE_MINUS_SRC1_ALPHA: Self = Self(18);
494}
495#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
496#[repr(transparent)]
497#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html>"]
498pub struct BlendOp(pub(crate) i32);
499impl BlendOp {
500 #[inline]
501 pub const fn from_raw(x: i32) -> Self {
502 Self(x)
503 }
504 #[inline]
505 pub const fn as_raw(self) -> i32 {
506 self.0
507 }
508}
509impl BlendOp {
510 pub const ADD: Self = Self(0);
511 pub const SUBTRACT: Self = Self(1);
512 pub const REVERSE_SUBTRACT: Self = Self(2);
513 pub const MIN: Self = Self(3);
514 pub const MAX: Self = Self(4);
515}
516#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
517#[repr(transparent)]
518#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html>"]
519pub struct StencilOp(pub(crate) i32);
520impl StencilOp {
521 #[inline]
522 pub const fn from_raw(x: i32) -> Self {
523 Self(x)
524 }
525 #[inline]
526 pub const fn as_raw(self) -> i32 {
527 self.0
528 }
529}
530impl StencilOp {
531 pub const KEEP: Self = Self(0);
532 pub const ZERO: Self = Self(1);
533 pub const REPLACE: Self = Self(2);
534 pub const INCREMENT_AND_CLAMP: Self = Self(3);
535 pub const DECREMENT_AND_CLAMP: Self = Self(4);
536 pub const INVERT: Self = Self(5);
537 pub const INCREMENT_AND_WRAP: Self = Self(6);
538 pub const DECREMENT_AND_WRAP: Self = Self(7);
539}
540#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
541#[repr(transparent)]
542#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html>"]
543pub struct LogicOp(pub(crate) i32);
544impl LogicOp {
545 #[inline]
546 pub const fn from_raw(x: i32) -> Self {
547 Self(x)
548 }
549 #[inline]
550 pub const fn as_raw(self) -> i32 {
551 self.0
552 }
553}
554impl LogicOp {
555 pub const CLEAR: Self = Self(0);
556 pub const AND: Self = Self(1);
557 pub const AND_REVERSE: Self = Self(2);
558 pub const COPY: Self = Self(3);
559 pub const AND_INVERTED: Self = Self(4);
560 pub const NO_OP: Self = Self(5);
561 pub const XOR: Self = Self(6);
562 pub const OR: Self = Self(7);
563 pub const NOR: Self = Self(8);
564 pub const EQUIVALENT: Self = Self(9);
565 pub const INVERT: Self = Self(10);
566 pub const OR_REVERSE: Self = Self(11);
567 pub const COPY_INVERTED: Self = Self(12);
568 pub const OR_INVERTED: Self = Self(13);
569 pub const NAND: Self = Self(14);
570 pub const SET: Self = Self(15);
571}
572#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
573#[repr(transparent)]
574#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInternalAllocationType.html>"]
575pub struct InternalAllocationType(pub(crate) i32);
576impl InternalAllocationType {
577 #[inline]
578 pub const fn from_raw(x: i32) -> Self {
579 Self(x)
580 }
581 #[inline]
582 pub const fn as_raw(self) -> i32 {
583 self.0
584 }
585}
586impl InternalAllocationType {
587 pub const EXECUTABLE: Self = Self(0);
588}
589#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
590#[repr(transparent)]
591#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSystemAllocationScope.html>"]
592pub struct SystemAllocationScope(pub(crate) i32);
593impl SystemAllocationScope {
594 #[inline]
595 pub const fn from_raw(x: i32) -> Self {
596 Self(x)
597 }
598 #[inline]
599 pub const fn as_raw(self) -> i32 {
600 self.0
601 }
602}
603impl SystemAllocationScope {
604 pub const COMMAND: Self = Self(0);
605 pub const OBJECT: Self = Self(1);
606 pub const CACHE: Self = Self(2);
607 pub const DEVICE: Self = Self(3);
608 pub const INSTANCE: Self = Self(4);
609}
610#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
611#[repr(transparent)]
612#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html>"]
613pub struct PhysicalDeviceType(pub(crate) i32);
614impl PhysicalDeviceType {
615 #[inline]
616 pub const fn from_raw(x: i32) -> Self {
617 Self(x)
618 }
619 #[inline]
620 pub const fn as_raw(self) -> i32 {
621 self.0
622 }
623}
624impl PhysicalDeviceType {
625 pub const OTHER: Self = Self(0);
626 pub const INTEGRATED_GPU: Self = Self(1);
627 pub const DISCRETE_GPU: Self = Self(2);
628 pub const VIRTUAL_GPU: Self = Self(3);
629 pub const CPU: Self = Self(4);
630}
631#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
632#[repr(transparent)]
633#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVertexInputRate.html>"]
634pub struct VertexInputRate(pub(crate) i32);
635impl VertexInputRate {
636 #[inline]
637 pub const fn from_raw(x: i32) -> Self {
638 Self(x)
639 }
640 #[inline]
641 pub const fn as_raw(self) -> i32 {
642 self.0
643 }
644}
645impl VertexInputRate {
646 pub const VERTEX: Self = Self(0);
647 pub const INSTANCE: Self = Self(1);
648}
649#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
650#[repr(transparent)]
651#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFormat.html>"]
652pub struct Format(pub(crate) i32);
653impl Format {
654 #[inline]
655 pub const fn from_raw(x: i32) -> Self {
656 Self(x)
657 }
658 #[inline]
659 pub const fn as_raw(self) -> i32 {
660 self.0
661 }
662}
663impl Format {
664 pub const UNDEFINED: Self = Self(0);
665 pub const R4G4_UNORM_PACK8: Self = Self(1);
666 pub const R4G4B4A4_UNORM_PACK16: Self = Self(2);
667 pub const B4G4R4A4_UNORM_PACK16: Self = Self(3);
668 pub const R5G6B5_UNORM_PACK16: Self = Self(4);
669 pub const B5G6R5_UNORM_PACK16: Self = Self(5);
670 pub const R5G5B5A1_UNORM_PACK16: Self = Self(6);
671 pub const B5G5R5A1_UNORM_PACK16: Self = Self(7);
672 pub const A1R5G5B5_UNORM_PACK16: Self = Self(8);
673 pub const R8_UNORM: Self = Self(9);
674 pub const R8_SNORM: Self = Self(10);
675 pub const R8_USCALED: Self = Self(11);
676 pub const R8_SSCALED: Self = Self(12);
677 pub const R8_UINT: Self = Self(13);
678 pub const R8_SINT: Self = Self(14);
679 pub const R8_SRGB: Self = Self(15);
680 pub const R8G8_UNORM: Self = Self(16);
681 pub const R8G8_SNORM: Self = Self(17);
682 pub const R8G8_USCALED: Self = Self(18);
683 pub const R8G8_SSCALED: Self = Self(19);
684 pub const R8G8_UINT: Self = Self(20);
685 pub const R8G8_SINT: Self = Self(21);
686 pub const R8G8_SRGB: Self = Self(22);
687 pub const R8G8B8_UNORM: Self = Self(23);
688 pub const R8G8B8_SNORM: Self = Self(24);
689 pub const R8G8B8_USCALED: Self = Self(25);
690 pub const R8G8B8_SSCALED: Self = Self(26);
691 pub const R8G8B8_UINT: Self = Self(27);
692 pub const R8G8B8_SINT: Self = Self(28);
693 pub const R8G8B8_SRGB: Self = Self(29);
694 pub const B8G8R8_UNORM: Self = Self(30);
695 pub const B8G8R8_SNORM: Self = Self(31);
696 pub const B8G8R8_USCALED: Self = Self(32);
697 pub const B8G8R8_SSCALED: Self = Self(33);
698 pub const B8G8R8_UINT: Self = Self(34);
699 pub const B8G8R8_SINT: Self = Self(35);
700 pub const B8G8R8_SRGB: Self = Self(36);
701 pub const R8G8B8A8_UNORM: Self = Self(37);
702 pub const R8G8B8A8_SNORM: Self = Self(38);
703 pub const R8G8B8A8_USCALED: Self = Self(39);
704 pub const R8G8B8A8_SSCALED: Self = Self(40);
705 pub const R8G8B8A8_UINT: Self = Self(41);
706 pub const R8G8B8A8_SINT: Self = Self(42);
707 pub const R8G8B8A8_SRGB: Self = Self(43);
708 pub const B8G8R8A8_UNORM: Self = Self(44);
709 pub const B8G8R8A8_SNORM: Self = Self(45);
710 pub const B8G8R8A8_USCALED: Self = Self(46);
711 pub const B8G8R8A8_SSCALED: Self = Self(47);
712 pub const B8G8R8A8_UINT: Self = Self(48);
713 pub const B8G8R8A8_SINT: Self = Self(49);
714 pub const B8G8R8A8_SRGB: Self = Self(50);
715 pub const A8B8G8R8_UNORM_PACK32: Self = Self(51);
716 pub const A8B8G8R8_SNORM_PACK32: Self = Self(52);
717 pub const A8B8G8R8_USCALED_PACK32: Self = Self(53);
718 pub const A8B8G8R8_SSCALED_PACK32: Self = Self(54);
719 pub const A8B8G8R8_UINT_PACK32: Self = Self(55);
720 pub const A8B8G8R8_SINT_PACK32: Self = Self(56);
721 pub const A8B8G8R8_SRGB_PACK32: Self = Self(57);
722 pub const A2R10G10B10_UNORM_PACK32: Self = Self(58);
723 pub const A2R10G10B10_SNORM_PACK32: Self = Self(59);
724 pub const A2R10G10B10_USCALED_PACK32: Self = Self(60);
725 pub const A2R10G10B10_SSCALED_PACK32: Self = Self(61);
726 pub const A2R10G10B10_UINT_PACK32: Self = Self(62);
727 pub const A2R10G10B10_SINT_PACK32: Self = Self(63);
728 pub const A2B10G10R10_UNORM_PACK32: Self = Self(64);
729 pub const A2B10G10R10_SNORM_PACK32: Self = Self(65);
730 pub const A2B10G10R10_USCALED_PACK32: Self = Self(66);
731 pub const A2B10G10R10_SSCALED_PACK32: Self = Self(67);
732 pub const A2B10G10R10_UINT_PACK32: Self = Self(68);
733 pub const A2B10G10R10_SINT_PACK32: Self = Self(69);
734 pub const R16_UNORM: Self = Self(70);
735 pub const R16_SNORM: Self = Self(71);
736 pub const R16_USCALED: Self = Self(72);
737 pub const R16_SSCALED: Self = Self(73);
738 pub const R16_UINT: Self = Self(74);
739 pub const R16_SINT: Self = Self(75);
740 pub const R16_SFLOAT: Self = Self(76);
741 pub const R16G16_UNORM: Self = Self(77);
742 pub const R16G16_SNORM: Self = Self(78);
743 pub const R16G16_USCALED: Self = Self(79);
744 pub const R16G16_SSCALED: Self = Self(80);
745 pub const R16G16_UINT: Self = Self(81);
746 pub const R16G16_SINT: Self = Self(82);
747 pub const R16G16_SFLOAT: Self = Self(83);
748 pub const R16G16B16_UNORM: Self = Self(84);
749 pub const R16G16B16_SNORM: Self = Self(85);
750 pub const R16G16B16_USCALED: Self = Self(86);
751 pub const R16G16B16_SSCALED: Self = Self(87);
752 pub const R16G16B16_UINT: Self = Self(88);
753 pub const R16G16B16_SINT: Self = Self(89);
754 pub const R16G16B16_SFLOAT: Self = Self(90);
755 pub const R16G16B16A16_UNORM: Self = Self(91);
756 pub const R16G16B16A16_SNORM: Self = Self(92);
757 pub const R16G16B16A16_USCALED: Self = Self(93);
758 pub const R16G16B16A16_SSCALED: Self = Self(94);
759 pub const R16G16B16A16_UINT: Self = Self(95);
760 pub const R16G16B16A16_SINT: Self = Self(96);
761 pub const R16G16B16A16_SFLOAT: Self = Self(97);
762 pub const R32_UINT: Self = Self(98);
763 pub const R32_SINT: Self = Self(99);
764 pub const R32_SFLOAT: Self = Self(100);
765 pub const R32G32_UINT: Self = Self(101);
766 pub const R32G32_SINT: Self = Self(102);
767 pub const R32G32_SFLOAT: Self = Self(103);
768 pub const R32G32B32_UINT: Self = Self(104);
769 pub const R32G32B32_SINT: Self = Self(105);
770 pub const R32G32B32_SFLOAT: Self = Self(106);
771 pub const R32G32B32A32_UINT: Self = Self(107);
772 pub const R32G32B32A32_SINT: Self = Self(108);
773 pub const R32G32B32A32_SFLOAT: Self = Self(109);
774 pub const R64_UINT: Self = Self(110);
775 pub const R64_SINT: Self = Self(111);
776 pub const R64_SFLOAT: Self = Self(112);
777 pub const R64G64_UINT: Self = Self(113);
778 pub const R64G64_SINT: Self = Self(114);
779 pub const R64G64_SFLOAT: Self = Self(115);
780 pub const R64G64B64_UINT: Self = Self(116);
781 pub const R64G64B64_SINT: Self = Self(117);
782 pub const R64G64B64_SFLOAT: Self = Self(118);
783 pub const R64G64B64A64_UINT: Self = Self(119);
784 pub const R64G64B64A64_SINT: Self = Self(120);
785 pub const R64G64B64A64_SFLOAT: Self = Self(121);
786 pub const B10G11R11_UFLOAT_PACK32: Self = Self(122);
787 pub const E5B9G9R9_UFLOAT_PACK32: Self = Self(123);
788 pub const D16_UNORM: Self = Self(124);
789 pub const X8_D24_UNORM_PACK32: Self = Self(125);
790 pub const D32_SFLOAT: Self = Self(126);
791 pub const S8_UINT: Self = Self(127);
792 pub const D16_UNORM_S8_UINT: Self = Self(128);
793 pub const D24_UNORM_S8_UINT: Self = Self(129);
794 pub const D32_SFLOAT_S8_UINT: Self = Self(130);
795 pub const BC1_RGB_UNORM_BLOCK: Self = Self(131);
796 pub const BC1_RGB_SRGB_BLOCK: Self = Self(132);
797 pub const BC1_RGBA_UNORM_BLOCK: Self = Self(133);
798 pub const BC1_RGBA_SRGB_BLOCK: Self = Self(134);
799 pub const BC2_UNORM_BLOCK: Self = Self(135);
800 pub const BC2_SRGB_BLOCK: Self = Self(136);
801 pub const BC3_UNORM_BLOCK: Self = Self(137);
802 pub const BC3_SRGB_BLOCK: Self = Self(138);
803 pub const BC4_UNORM_BLOCK: Self = Self(139);
804 pub const BC4_SNORM_BLOCK: Self = Self(140);
805 pub const BC5_UNORM_BLOCK: Self = Self(141);
806 pub const BC5_SNORM_BLOCK: Self = Self(142);
807 pub const BC6H_UFLOAT_BLOCK: Self = Self(143);
808 pub const BC6H_SFLOAT_BLOCK: Self = Self(144);
809 pub const BC7_UNORM_BLOCK: Self = Self(145);
810 pub const BC7_SRGB_BLOCK: Self = Self(146);
811 pub const ETC2_R8G8B8_UNORM_BLOCK: Self = Self(147);
812 pub const ETC2_R8G8B8_SRGB_BLOCK: Self = Self(148);
813 pub const ETC2_R8G8B8A1_UNORM_BLOCK: Self = Self(149);
814 pub const ETC2_R8G8B8A1_SRGB_BLOCK: Self = Self(150);
815 pub const ETC2_R8G8B8A8_UNORM_BLOCK: Self = Self(151);
816 pub const ETC2_R8G8B8A8_SRGB_BLOCK: Self = Self(152);
817 pub const EAC_R11_UNORM_BLOCK: Self = Self(153);
818 pub const EAC_R11_SNORM_BLOCK: Self = Self(154);
819 pub const EAC_R11G11_UNORM_BLOCK: Self = Self(155);
820 pub const EAC_R11G11_SNORM_BLOCK: Self = Self(156);
821 pub const ASTC_4X4_UNORM_BLOCK: Self = Self(157);
822 pub const ASTC_4X4_SRGB_BLOCK: Self = Self(158);
823 pub const ASTC_5X4_UNORM_BLOCK: Self = Self(159);
824 pub const ASTC_5X4_SRGB_BLOCK: Self = Self(160);
825 pub const ASTC_5X5_UNORM_BLOCK: Self = Self(161);
826 pub const ASTC_5X5_SRGB_BLOCK: Self = Self(162);
827 pub const ASTC_6X5_UNORM_BLOCK: Self = Self(163);
828 pub const ASTC_6X5_SRGB_BLOCK: Self = Self(164);
829 pub const ASTC_6X6_UNORM_BLOCK: Self = Self(165);
830 pub const ASTC_6X6_SRGB_BLOCK: Self = Self(166);
831 pub const ASTC_8X5_UNORM_BLOCK: Self = Self(167);
832 pub const ASTC_8X5_SRGB_BLOCK: Self = Self(168);
833 pub const ASTC_8X6_UNORM_BLOCK: Self = Self(169);
834 pub const ASTC_8X6_SRGB_BLOCK: Self = Self(170);
835 pub const ASTC_8X8_UNORM_BLOCK: Self = Self(171);
836 pub const ASTC_8X8_SRGB_BLOCK: Self = Self(172);
837 pub const ASTC_10X5_UNORM_BLOCK: Self = Self(173);
838 pub const ASTC_10X5_SRGB_BLOCK: Self = Self(174);
839 pub const ASTC_10X6_UNORM_BLOCK: Self = Self(175);
840 pub const ASTC_10X6_SRGB_BLOCK: Self = Self(176);
841 pub const ASTC_10X8_UNORM_BLOCK: Self = Self(177);
842 pub const ASTC_10X8_SRGB_BLOCK: Self = Self(178);
843 pub const ASTC_10X10_UNORM_BLOCK: Self = Self(179);
844 pub const ASTC_10X10_SRGB_BLOCK: Self = Self(180);
845 pub const ASTC_12X10_UNORM_BLOCK: Self = Self(181);
846 pub const ASTC_12X10_SRGB_BLOCK: Self = Self(182);
847 pub const ASTC_12X12_UNORM_BLOCK: Self = Self(183);
848 pub const ASTC_12X12_SRGB_BLOCK: Self = Self(184);
849}
850#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
851#[repr(transparent)]
852#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkStructureType.html>"]
853pub struct StructureType(pub(crate) i32);
854impl StructureType {
855 #[inline]
856 pub const fn from_raw(x: i32) -> Self {
857 Self(x)
858 }
859 #[inline]
860 pub const fn as_raw(self) -> i32 {
861 self.0
862 }
863}
864impl StructureType {
865 pub const APPLICATION_INFO: Self = Self(0);
866 pub const INSTANCE_CREATE_INFO: Self = Self(1);
867 pub const DEVICE_QUEUE_CREATE_INFO: Self = Self(2);
868 pub const DEVICE_CREATE_INFO: Self = Self(3);
869 pub const SUBMIT_INFO: Self = Self(4);
870 pub const MEMORY_ALLOCATE_INFO: Self = Self(5);
871 pub const MAPPED_MEMORY_RANGE: Self = Self(6);
872 pub const BIND_SPARSE_INFO: Self = Self(7);
873 pub const FENCE_CREATE_INFO: Self = Self(8);
874 pub const SEMAPHORE_CREATE_INFO: Self = Self(9);
875 pub const EVENT_CREATE_INFO: Self = Self(10);
876 pub const QUERY_POOL_CREATE_INFO: Self = Self(11);
877 pub const BUFFER_CREATE_INFO: Self = Self(12);
878 pub const BUFFER_VIEW_CREATE_INFO: Self = Self(13);
879 pub const IMAGE_CREATE_INFO: Self = Self(14);
880 pub const IMAGE_VIEW_CREATE_INFO: Self = Self(15);
881 pub const SHADER_MODULE_CREATE_INFO: Self = Self(16);
882 pub const PIPELINE_CACHE_CREATE_INFO: Self = Self(17);
883 pub const PIPELINE_SHADER_STAGE_CREATE_INFO: Self = Self(18);
884 pub const PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: Self = Self(19);
885 pub const PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: Self = Self(20);
886 pub const PIPELINE_TESSELLATION_STATE_CREATE_INFO: Self = Self(21);
887 pub const PIPELINE_VIEWPORT_STATE_CREATE_INFO: Self = Self(22);
888 pub const PIPELINE_RASTERIZATION_STATE_CREATE_INFO: Self = Self(23);
889 pub const PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: Self = Self(24);
890 pub const PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: Self = Self(25);
891 pub const PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: Self = Self(26);
892 pub const PIPELINE_DYNAMIC_STATE_CREATE_INFO: Self = Self(27);
893 pub const GRAPHICS_PIPELINE_CREATE_INFO: Self = Self(28);
894 pub const COMPUTE_PIPELINE_CREATE_INFO: Self = Self(29);
895 pub const PIPELINE_LAYOUT_CREATE_INFO: Self = Self(30);
896 pub const SAMPLER_CREATE_INFO: Self = Self(31);
897 pub const DESCRIPTOR_SET_LAYOUT_CREATE_INFO: Self = Self(32);
898 pub const DESCRIPTOR_POOL_CREATE_INFO: Self = Self(33);
899 pub const DESCRIPTOR_SET_ALLOCATE_INFO: Self = Self(34);
900 pub const WRITE_DESCRIPTOR_SET: Self = Self(35);
901 pub const COPY_DESCRIPTOR_SET: Self = Self(36);
902 pub const FRAMEBUFFER_CREATE_INFO: Self = Self(37);
903 pub const RENDER_PASS_CREATE_INFO: Self = Self(38);
904 pub const COMMAND_POOL_CREATE_INFO: Self = Self(39);
905 pub const COMMAND_BUFFER_ALLOCATE_INFO: Self = Self(40);
906 pub const COMMAND_BUFFER_INHERITANCE_INFO: Self = Self(41);
907 pub const COMMAND_BUFFER_BEGIN_INFO: Self = Self(42);
908 pub const RENDER_PASS_BEGIN_INFO: Self = Self(43);
909 pub const BUFFER_MEMORY_BARRIER: Self = Self(44);
910 pub const IMAGE_MEMORY_BARRIER: Self = Self(45);
911 pub const MEMORY_BARRIER: Self = Self(46);
912 #[doc = "Reserved for internal use by the loader, layers, and ICDs"]
913 pub const LOADER_INSTANCE_CREATE_INFO: Self = Self(47);
914 #[doc = "Reserved for internal use by the loader, layers, and ICDs"]
915 pub const LOADER_DEVICE_CREATE_INFO: Self = Self(48);
916}
917#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
918#[repr(transparent)]
919#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSubpassContents.html>"]
920pub struct SubpassContents(pub(crate) i32);
921impl SubpassContents {
922 #[inline]
923 pub const fn from_raw(x: i32) -> Self {
924 Self(x)
925 }
926 #[inline]
927 pub const fn as_raw(self) -> i32 {
928 self.0
929 }
930}
931impl SubpassContents {
932 pub const INLINE: Self = Self(0);
933 pub const SECONDARY_COMMAND_BUFFERS: Self = Self(1);
934}
935#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
936#[repr(transparent)]
937#[doc = "<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkResult.html>"]
938#[must_use]
939pub struct Result(pub(crate) i32);
940impl Result {
941 #[inline]
942 pub const fn from_raw(x: i32) -> Self {
943 Self(x)
944 }
945 #[inline]
946 pub const fn as_raw(self) -> i32 {
947 self.0
948 }
949}
950impl Result {
951 #[doc = "Command completed successfully"]
952 pub const SUCCESS: Self = Self(0);
953 #[doc = "A fence or query has not yet completed"]
954 pub const NOT_READY: Self = Self(1);
955 #[doc = "A wait operation has not completed in the specified time"]
956 pub const TIMEOUT: Self = Self(2);
957 #[doc = "An event is signaled"]
958 pub const EVENT_SET: Self = Self(3);
959 #[doc = "An event is unsignaled"]
960 pub const EVENT_RESET: Self = Self(4);
961 #[doc = "A return array was too small for the result"]
962 pub const INCOMPLETE: Self = Self(5);
963 #[doc = "A host memory allocation has failed"]
964 pub const ERROR_OUT_OF_HOST_MEMORY: Self = Self(-1);
965 #[doc = "A device memory allocation has failed"]
966 pub const ERROR_OUT_OF_DEVICE_MEMORY: Self = Self(-2);
967 #[doc = "Initialization of an object has failed"]
968 pub const ERROR_INITIALIZATION_FAILED: Self = Self(-3);
969 #[doc = "The logical device has been lost. See <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device>"]
970 pub const ERROR_DEVICE_LOST: Self = Self(-4);
971 #[doc = "Mapping of a memory object has failed"]
972 pub const ERROR_MEMORY_MAP_FAILED: Self = Self(-5);
973 #[doc = "Layer specified does not exist"]
974 pub const ERROR_LAYER_NOT_PRESENT: Self = Self(-6);
975 #[doc = "Extension specified does not exist"]
976 pub const ERROR_EXTENSION_NOT_PRESENT: Self = Self(-7);
977 #[doc = "Requested feature is not available on this device"]
978 pub const ERROR_FEATURE_NOT_PRESENT: Self = Self(-8);
979 #[doc = "Unable to find a Vulkan driver"]
980 pub const ERROR_INCOMPATIBLE_DRIVER: Self = Self(-9);
981 #[doc = "Too many objects of the type have already been created"]
982 pub const ERROR_TOO_MANY_OBJECTS: Self = Self(-10);
983 #[doc = "Requested format is not supported on this device"]
984 pub const ERROR_FORMAT_NOT_SUPPORTED: Self = Self(-11);
985 #[doc = "A requested pool allocation has failed due to fragmentation of the pool's memory"]
986 pub const ERROR_FRAGMENTED_POOL: Self = Self(-12);
987 #[doc = "An unknown error has occurred, due to an implementation or application bug"]
988 pub const ERROR_UNKNOWN: Self = Self(-13);
989}
990impl ::std::error::Error for Result {}
991impl fmt::Display for Result {
992 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>"]
1004pub struct DynamicState(pub(crate) i32);
1005impl DynamicState {
1006 #[inline]
1007 pub const fn from_raw(x: i32) -> Self {
1008 Self(x)
1009 }
1010 #[inline]
1011 pub const fn as_raw(self) -> i32 {
1012 self.0
1013 }
1014}
1015impl 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>"]
1029pub struct DescriptorUpdateTemplateType(pub(crate) i32);
1030impl DescriptorUpdateTemplateType {
1031 #[inline]
1032 pub const fn from_raw(x: i32) -> Self {
1033 Self(x)
1034 }
1035 #[inline]
1036 pub const fn as_raw(self) -> i32 {
1037 self.0
1038 }
1039}
1040impl 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>"]
1047pub struct ObjectType(pub(crate) i32);
1048impl ObjectType {
1049 #[inline]
1050 pub const fn from_raw(x: i32) -> Self {
1051 Self(x)
1052 }
1053 #[inline]
1054 pub const fn as_raw(self) -> i32 {
1055 self.0
1056 }
1057}
1058impl 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>"]
1089pub struct RayTracingInvocationReorderModeNV(pub(crate) i32);
1090impl RayTracingInvocationReorderModeNV {
1091 #[inline]
1092 pub const fn from_raw(x: i32) -> Self {
1093 Self(x)
1094 }
1095 #[inline]
1096 pub const fn as_raw(self) -> i32 {
1097 self.0
1098 }
1099}
1100impl 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>"]
1107pub struct DirectDriverLoadingModeLUNARG(pub(crate) i32);
1108impl DirectDriverLoadingModeLUNARG {
1109 #[inline]
1110 pub const fn from_raw(x: i32) -> Self {
1111 Self(x)
1112 }
1113 #[inline]
1114 pub const fn as_raw(self) -> i32 {
1115 self.0
1116 }
1117}
1118impl 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>"]
1125pub struct SemaphoreType(pub(crate) i32);
1126impl SemaphoreType {
1127 #[inline]
1128 pub const fn from_raw(x: i32) -> Self {
1129 Self(x)
1130 }
1131 #[inline]
1132 pub const fn as_raw(self) -> i32 {
1133 self.0
1134 }
1135}
1136impl 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>"]
1143pub struct PresentModeKHR(pub(crate) i32);
1144impl PresentModeKHR {
1145 #[inline]
1146 pub const fn from_raw(x: i32) -> Self {
1147 Self(x)
1148 }
1149 #[inline]
1150 pub const fn as_raw(self) -> i32 {
1151 self.0
1152 }
1153}
1154impl 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>"]
1163pub struct ColorSpaceKHR(pub(crate) i32);
1164impl ColorSpaceKHR {
1165 #[inline]
1166 pub const fn from_raw(x: i32) -> Self {
1167 Self(x)
1168 }
1169 #[inline]
1170 pub const fn as_raw(self) -> i32 {
1171 self.0
1172 }
1173}
1174impl 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>"]
1180pub struct TimeDomainEXT(pub(crate) i32);
1181impl TimeDomainEXT {
1182 #[inline]
1183 pub const fn from_raw(x: i32) -> Self {
1184 Self(x)
1185 }
1186 #[inline]
1187 pub const fn as_raw(self) -> i32 {
1188 self.0
1189 }
1190}
1191impl 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>"]
1200pub struct DebugReportObjectTypeEXT(pub(crate) i32);
1201impl DebugReportObjectTypeEXT {
1202 #[inline]
1203 pub const fn from_raw(x: i32) -> Self {
1204 Self(x)
1205 }
1206 #[inline]
1207 pub const fn as_raw(self) -> i32 {
1208 self.0
1209 }
1210}
1211impl 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>"]
1248pub struct DeviceMemoryReportEventTypeEXT(pub(crate) i32);
1249impl DeviceMemoryReportEventTypeEXT {
1250 #[inline]
1251 pub const fn from_raw(x: i32) -> Self {
1252 Self(x)
1253 }
1254 #[inline]
1255 pub const fn as_raw(self) -> i32 {
1256 self.0
1257 }
1258}
1259impl 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>"]
1269pub struct RasterizationOrderAMD(pub(crate) i32);
1270impl RasterizationOrderAMD {
1271 #[inline]
1272 pub const fn from_raw(x: i32) -> Self {
1273 Self(x)
1274 }
1275 #[inline]
1276 pub const fn as_raw(self) -> i32 {
1277 self.0
1278 }
1279}
1280impl 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>"]
1287pub struct ValidationCheckEXT(pub(crate) i32);
1288impl ValidationCheckEXT {
1289 #[inline]
1290 pub const fn from_raw(x: i32) -> Self {
1291 Self(x)
1292 }
1293 #[inline]
1294 pub const fn as_raw(self) -> i32 {
1295 self.0
1296 }
1297}
1298impl 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>"]
1305pub struct ValidationFeatureEnableEXT(pub(crate) i32);
1306impl ValidationFeatureEnableEXT {
1307 #[inline]
1308 pub const fn from_raw(x: i32) -> Self {
1309 Self(x)
1310 }
1311 #[inline]
1312 pub const fn as_raw(self) -> i32 {
1313 self.0
1314 }
1315}
1316impl 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>"]
1326pub struct ValidationFeatureDisableEXT(pub(crate) i32);
1327impl ValidationFeatureDisableEXT {
1328 #[inline]
1329 pub const fn from_raw(x: i32) -> Self {
1330 Self(x)
1331 }
1332 #[inline]
1333 pub const fn as_raw(self) -> i32 {
1334 self.0
1335 }
1336}
1337impl 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>"]
1350pub struct IndirectCommandsTokenTypeNV(pub(crate) i32);
1351impl IndirectCommandsTokenTypeNV {
1352 #[inline]
1353 pub const fn from_raw(x: i32) -> Self {
1354 Self(x)
1355 }
1356 #[inline]
1357 pub const fn as_raw(self) -> i32 {
1358 self.0
1359 }
1360}
1361impl 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>"]
1374pub struct DisplayPowerStateEXT(pub(crate) i32);
1375impl DisplayPowerStateEXT {
1376 #[inline]
1377 pub const fn from_raw(x: i32) -> Self {
1378 Self(x)
1379 }
1380 #[inline]
1381 pub const fn as_raw(self) -> i32 {
1382 self.0
1383 }
1384}
1385impl 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>"]
1393pub struct DeviceEventTypeEXT(pub(crate) i32);
1394impl DeviceEventTypeEXT {
1395 #[inline]
1396 pub const fn from_raw(x: i32) -> Self {
1397 Self(x)
1398 }
1399 #[inline]
1400 pub const fn as_raw(self) -> i32 {
1401 self.0
1402 }
1403}
1404impl 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>"]
1410pub struct DisplayEventTypeEXT(pub(crate) i32);
1411impl DisplayEventTypeEXT {
1412 #[inline]
1413 pub const fn from_raw(x: i32) -> Self {
1414 Self(x)
1415 }
1416 #[inline]
1417 pub const fn as_raw(self) -> i32 {
1418 self.0
1419 }
1420}
1421impl 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>"]
1427pub struct ViewportCoordinateSwizzleNV(pub(crate) i32);
1428impl ViewportCoordinateSwizzleNV {
1429 #[inline]
1430 pub const fn from_raw(x: i32) -> Self {
1431 Self(x)
1432 }
1433 #[inline]
1434 pub const fn as_raw(self) -> i32 {
1435 self.0
1436 }
1437}
1438impl 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>"]
1451pub struct DiscardRectangleModeEXT(pub(crate) i32);
1452impl DiscardRectangleModeEXT {
1453 #[inline]
1454 pub const fn from_raw(x: i32) -> Self {
1455 Self(x)
1456 }
1457 #[inline]
1458 pub const fn as_raw(self) -> i32 {
1459 self.0
1460 }
1461}
1462impl 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>"]
1469pub struct PointClippingBehavior(pub(crate) i32);
1470impl PointClippingBehavior {
1471 #[inline]
1472 pub const fn from_raw(x: i32) -> Self {
1473 Self(x)
1474 }
1475 #[inline]
1476 pub const fn as_raw(self) -> i32 {
1477 self.0
1478 }
1479}
1480impl 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>"]
1487pub struct SamplerReductionMode(pub(crate) i32);
1488impl SamplerReductionMode {
1489 #[inline]
1490 pub const fn from_raw(x: i32) -> Self {
1491 Self(x)
1492 }
1493 #[inline]
1494 pub const fn as_raw(self) -> i32 {
1495 self.0
1496 }
1497}
1498impl 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>"]
1506pub struct TessellationDomainOrigin(pub(crate) i32);
1507impl TessellationDomainOrigin {
1508 #[inline]
1509 pub const fn from_raw(x: i32) -> Self {
1510 Self(x)
1511 }
1512 #[inline]
1513 pub const fn as_raw(self) -> i32 {
1514 self.0
1515 }
1516}
1517impl 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>"]
1524pub struct SamplerYcbcrModelConversion(pub(crate) i32);
1525impl SamplerYcbcrModelConversion {
1526 #[inline]
1527 pub const fn from_raw(x: i32) -> Self {
1528 Self(x)
1529 }
1530 #[inline]
1531 pub const fn as_raw(self) -> i32 {
1532 self.0
1533 }
1534}
1535impl 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>"]
1549pub struct SamplerYcbcrRange(pub(crate) i32);
1550impl SamplerYcbcrRange {
1551 #[inline]
1552 pub const fn from_raw(x: i32) -> Self {
1553 Self(x)
1554 }
1555 #[inline]
1556 pub const fn as_raw(self) -> i32 {
1557 self.0
1558 }
1559}
1560impl 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>"]
1569pub struct ChromaLocation(pub(crate) i32);
1570impl ChromaLocation {
1571 #[inline]
1572 pub const fn from_raw(x: i32) -> Self {
1573 Self(x)
1574 }
1575 #[inline]
1576 pub const fn as_raw(self) -> i32 {
1577 self.0
1578 }
1579}
1580impl 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>"]
1587pub struct BlendOverlapEXT(pub(crate) i32);
1588impl BlendOverlapEXT {
1589 #[inline]
1590 pub const fn from_raw(x: i32) -> Self {
1591 Self(x)
1592 }
1593 #[inline]
1594 pub const fn as_raw(self) -> i32 {
1595 self.0
1596 }
1597}
1598impl 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>"]
1606pub struct CoverageModulationModeNV(pub(crate) i32);
1607impl CoverageModulationModeNV {
1608 #[inline]
1609 pub const fn from_raw(x: i32) -> Self {
1610 Self(x)
1611 }
1612 #[inline]
1613 pub const fn as_raw(self) -> i32 {
1614 self.0
1615 }
1616}
1617impl 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>"]
1626pub struct CoverageReductionModeNV(pub(crate) i32);
1627impl CoverageReductionModeNV {
1628 #[inline]
1629 pub const fn from_raw(x: i32) -> Self {
1630 Self(x)
1631 }
1632 #[inline]
1633 pub const fn as_raw(self) -> i32 {
1634 self.0
1635 }
1636}
1637impl 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>"]
1644pub struct ValidationCacheHeaderVersionEXT(pub(crate) i32);
1645impl ValidationCacheHeaderVersionEXT {
1646 #[inline]
1647 pub const fn from_raw(x: i32) -> Self {
1648 Self(x)
1649 }
1650 #[inline]
1651 pub const fn as_raw(self) -> i32 {
1652 self.0
1653 }
1654}
1655impl 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>"]
1661pub struct ShaderInfoTypeAMD(pub(crate) i32);
1662impl ShaderInfoTypeAMD {
1663 #[inline]
1664 pub const fn from_raw(x: i32) -> Self {
1665 Self(x)
1666 }
1667 #[inline]
1668 pub const fn as_raw(self) -> i32 {
1669 self.0
1670 }
1671}
1672impl 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>"]
1680pub struct QueueGlobalPriorityKHR(pub(crate) i32);
1681impl QueueGlobalPriorityKHR {
1682 #[inline]
1683 pub const fn from_raw(x: i32) -> Self {
1684 Self(x)
1685 }
1686 #[inline]
1687 pub const fn as_raw(self) -> i32 {
1688 self.0
1689 }
1690}
1691impl 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>"]
1704pub struct ConservativeRasterizationModeEXT(pub(crate) i32);
1705impl ConservativeRasterizationModeEXT {
1706 #[inline]
1707 pub const fn from_raw(x: i32) -> Self {
1708 Self(x)
1709 }
1710 #[inline]
1711 pub const fn as_raw(self) -> i32 {
1712 self.0
1713 }
1714}
1715impl 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>"]
1723pub struct VendorId(pub(crate) i32);
1724impl VendorId {
1725 #[inline]
1726 pub const fn from_raw(x: i32) -> Self {
1727 Self(x)
1728 }
1729 #[inline]
1730 pub const fn as_raw(self) -> i32 {
1731 self.0
1732 }
1733}
1734impl 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>"]
1753pub struct DriverId(pub(crate) i32);
1754impl DriverId {
1755 #[inline]
1756 pub const fn from_raw(x: i32) -> Self {
1757 Self(x)
1758 }
1759 #[inline]
1760 pub const fn as_raw(self) -> i32 {
1761 self.0
1762 }
1763}
1764impl 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>"]
1819pub struct ShadingRatePaletteEntryNV(pub(crate) i32);
1820impl ShadingRatePaletteEntryNV {
1821 #[inline]
1822 pub const fn from_raw(x: i32) -> Self {
1823 Self(x)
1824 }
1825 #[inline]
1826 pub const fn as_raw(self) -> i32 {
1827 self.0
1828 }
1829}
1830impl 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>"]
1847pub struct CoarseSampleOrderTypeNV(pub(crate) i32);
1848impl CoarseSampleOrderTypeNV {
1849 #[inline]
1850 pub const fn from_raw(x: i32) -> Self {
1851 Self(x)
1852 }
1853 #[inline]
1854 pub const fn as_raw(self) -> i32 {
1855 self.0
1856 }
1857}
1858impl 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>"]
1867pub struct CopyAccelerationStructureModeKHR(pub(crate) i32);
1868impl CopyAccelerationStructureModeKHR {
1869 #[inline]
1870 pub const fn from_raw(x: i32) -> Self {
1871 Self(x)
1872 }
1873 #[inline]
1874 pub const fn as_raw(self) -> i32 {
1875 self.0
1876 }
1877}
1878impl 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>"]
1887pub struct BuildAccelerationStructureModeKHR(pub(crate) i32);
1888impl BuildAccelerationStructureModeKHR {
1889 #[inline]
1890 pub const fn from_raw(x: i32) -> Self {
1891 Self(x)
1892 }
1893 #[inline]
1894 pub const fn as_raw(self) -> i32 {
1895 self.0
1896 }
1897}
1898impl 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>"]
1905pub struct AccelerationStructureTypeKHR(pub(crate) i32);
1906impl AccelerationStructureTypeKHR {
1907 #[inline]
1908 pub const fn from_raw(x: i32) -> Self {
1909 Self(x)
1910 }
1911 #[inline]
1912 pub const fn as_raw(self) -> i32 {
1913 self.0
1914 }
1915}
1916impl 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>"]
1924pub struct GeometryTypeKHR(pub(crate) i32);
1925impl GeometryTypeKHR {
1926 #[inline]
1927 pub const fn from_raw(x: i32) -> Self {
1928 Self(x)
1929 }
1930 #[inline]
1931 pub const fn as_raw(self) -> i32 {
1932 self.0
1933 }
1934}
1935impl 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>"]
1943pub struct AccelerationStructureMemoryRequirementsTypeNV(pub(crate) i32);
1944impl AccelerationStructureMemoryRequirementsTypeNV {
1945 #[inline]
1946 pub const fn from_raw(x: i32) -> Self {
1947 Self(x)
1948 }
1949 #[inline]
1950 pub const fn as_raw(self) -> i32 {
1951 self.0
1952 }
1953}
1954impl 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>"]
1962pub struct AccelerationStructureBuildTypeKHR(pub(crate) i32);
1963impl AccelerationStructureBuildTypeKHR {
1964 #[inline]
1965 pub const fn from_raw(x: i32) -> Self {
1966 Self(x)
1967 }
1968 #[inline]
1969 pub const fn as_raw(self) -> i32 {
1970 self.0
1971 }
1972}
1973impl 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>"]
1981pub struct RayTracingShaderGroupTypeKHR(pub(crate) i32);
1982impl RayTracingShaderGroupTypeKHR {
1983 #[inline]
1984 pub const fn from_raw(x: i32) -> Self {
1985 Self(x)
1986 }
1987 #[inline]
1988 pub const fn as_raw(self) -> i32 {
1989 self.0
1990 }
1991}
1992impl 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>"]
2000pub struct AccelerationStructureCompatibilityKHR(pub(crate) i32);
2001impl AccelerationStructureCompatibilityKHR {
2002 #[inline]
2003 pub const fn from_raw(x: i32) -> Self {
2004 Self(x)
2005 }
2006 #[inline]
2007 pub const fn as_raw(self) -> i32 {
2008 self.0
2009 }
2010}
2011impl 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>"]
2018pub struct ShaderGroupShaderKHR(pub(crate) i32);
2019impl ShaderGroupShaderKHR {
2020 #[inline]
2021 pub const fn from_raw(x: i32) -> Self {
2022 Self(x)
2023 }
2024 #[inline]
2025 pub const fn as_raw(self) -> i32 {
2026 self.0
2027 }
2028}
2029impl 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>"]
2038pub struct MemoryOverallocationBehaviorAMD(pub(crate) i32);
2039impl MemoryOverallocationBehaviorAMD {
2040 #[inline]
2041 pub const fn from_raw(x: i32) -> Self {
2042 Self(x)
2043 }
2044 #[inline]
2045 pub const fn as_raw(self) -> i32 {
2046 self.0
2047 }
2048}
2049impl 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>"]
2057pub struct ScopeNV(pub(crate) i32);
2058impl ScopeNV {
2059 #[inline]
2060 pub const fn from_raw(x: i32) -> Self {
2061 Self(x)
2062 }
2063 #[inline]
2064 pub const fn as_raw(self) -> i32 {
2065 self.0
2066 }
2067}
2068impl 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>"]
2077pub struct ComponentTypeNV(pub(crate) i32);
2078impl ComponentTypeNV {
2079 #[inline]
2080 pub const fn from_raw(x: i32) -> Self {
2081 Self(x)
2082 }
2083 #[inline]
2084 pub const fn as_raw(self) -> i32 {
2085 self.0
2086 }
2087}
2088impl 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>"]
2104pub struct FullScreenExclusiveEXT(pub(crate) i32);
2105impl FullScreenExclusiveEXT {
2106 #[inline]
2107 pub const fn from_raw(x: i32) -> Self {
2108 Self(x)
2109 }
2110 #[inline]
2111 pub const fn as_raw(self) -> i32 {
2112 self.0
2113 }
2114}
2115impl 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>"]
2124pub struct PerformanceCounterScopeKHR(pub(crate) i32);
2125impl PerformanceCounterScopeKHR {
2126 #[inline]
2127 pub const fn from_raw(x: i32) -> Self {
2128 Self(x)
2129 }
2130 #[inline]
2131 pub const fn as_raw(self) -> i32 {
2132 self.0
2133 }
2134}
2135impl 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>"]
2143pub struct PerformanceCounterUnitKHR(pub(crate) i32);
2144impl PerformanceCounterUnitKHR {
2145 #[inline]
2146 pub const fn from_raw(x: i32) -> Self {
2147 Self(x)
2148 }
2149 #[inline]
2150 pub const fn as_raw(self) -> i32 {
2151 self.0
2152 }
2153}
2154impl 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>"]
2170pub struct PerformanceCounterStorageKHR(pub(crate) i32);
2171impl PerformanceCounterStorageKHR {
2172 #[inline]
2173 pub const fn from_raw(x: i32) -> Self {
2174 Self(x)
2175 }
2176 #[inline]
2177 pub const fn as_raw(self) -> i32 {
2178 self.0
2179 }
2180}
2181impl 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>"]
2192pub struct PerformanceConfigurationTypeINTEL(pub(crate) i32);
2193impl PerformanceConfigurationTypeINTEL {
2194 #[inline]
2195 pub const fn from_raw(x: i32) -> Self {
2196 Self(x)
2197 }
2198 #[inline]
2199 pub const fn as_raw(self) -> i32 {
2200 self.0
2201 }
2202}
2203impl 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>"]
2209pub struct QueryPoolSamplingModeINTEL(pub(crate) i32);
2210impl QueryPoolSamplingModeINTEL {
2211 #[inline]
2212 pub const fn from_raw(x: i32) -> Self {
2213 Self(x)
2214 }
2215 #[inline]
2216 pub const fn as_raw(self) -> i32 {
2217 self.0
2218 }
2219}
2220impl 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>"]
2226pub struct PerformanceOverrideTypeINTEL(pub(crate) i32);
2227impl PerformanceOverrideTypeINTEL {
2228 #[inline]
2229 pub const fn from_raw(x: i32) -> Self {
2230 Self(x)
2231 }
2232 #[inline]
2233 pub const fn as_raw(self) -> i32 {
2234 self.0
2235 }
2236}
2237impl 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>"]
2244pub struct PerformanceParameterTypeINTEL(pub(crate) i32);
2245impl PerformanceParameterTypeINTEL {
2246 #[inline]
2247 pub const fn from_raw(x: i32) -> Self {
2248 Self(x)
2249 }
2250 #[inline]
2251 pub const fn as_raw(self) -> i32 {
2252 self.0
2253 }
2254}
2255impl 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>"]
2262pub struct PerformanceValueTypeINTEL(pub(crate) i32);
2263impl PerformanceValueTypeINTEL {
2264 #[inline]
2265 pub const fn from_raw(x: i32) -> Self {
2266 Self(x)
2267 }
2268 #[inline]
2269 pub const fn as_raw(self) -> i32 {
2270 self.0
2271 }
2272}
2273impl 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>"]
2283pub struct ShaderFloatControlsIndependence(pub(crate) i32);
2284impl ShaderFloatControlsIndependence {
2285 #[inline]
2286 pub const fn from_raw(x: i32) -> Self {
2287 Self(x)
2288 }
2289 #[inline]
2290 pub const fn as_raw(self) -> i32 {
2291 self.0
2292 }
2293}
2294impl 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>"]
2302pub struct PipelineExecutableStatisticFormatKHR(pub(crate) i32);
2303impl PipelineExecutableStatisticFormatKHR {
2304 #[inline]
2305 pub const fn from_raw(x: i32) -> Self {
2306 Self(x)
2307 }
2308 #[inline]
2309 pub const fn as_raw(self) -> i32 {
2310 self.0
2311 }
2312}
2313impl 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>"]
2322pub struct LineRasterizationModeEXT(pub(crate) i32);
2323impl LineRasterizationModeEXT {
2324 #[inline]
2325 pub const fn from_raw(x: i32) -> Self {
2326 Self(x)
2327 }
2328 #[inline]
2329 pub const fn as_raw(self) -> i32 {
2330 self.0
2331 }
2332}
2333impl 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>"]
2342pub struct FragmentShadingRateCombinerOpKHR(pub(crate) i32);
2343impl FragmentShadingRateCombinerOpKHR {
2344 #[inline]
2345 pub const fn from_raw(x: i32) -> Self {
2346 Self(x)
2347 }
2348 #[inline]
2349 pub const fn as_raw(self) -> i32 {
2350 self.0
2351 }
2352}
2353impl 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>"]
2363pub struct FragmentShadingRateNV(pub(crate) i32);
2364impl FragmentShadingRateNV {
2365 #[inline]
2366 pub const fn from_raw(x: i32) -> Self {
2367 Self(x)
2368 }
2369 #[inline]
2370 pub const fn as_raw(self) -> i32 {
2371 self.0
2372 }
2373}
2374impl 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>"]
2391pub struct FragmentShadingRateTypeNV(pub(crate) i32);
2392impl FragmentShadingRateTypeNV {
2393 #[inline]
2394 pub const fn from_raw(x: i32) -> Self {
2395 Self(x)
2396 }
2397 #[inline]
2398 pub const fn as_raw(self) -> i32 {
2399 self.0
2400 }
2401}
2402impl 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>"]
2409pub struct SubpassMergeStatusEXT(pub(crate) i32);
2410impl SubpassMergeStatusEXT {
2411 #[inline]
2412 pub const fn from_raw(x: i32) -> Self {
2413 Self(x)
2414 }
2415 #[inline]
2416 pub const fn as_raw(self) -> i32 {
2417 self.0
2418 }
2419}
2420impl 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>"]
2439pub struct ProvokingVertexModeEXT(pub(crate) i32);
2440impl ProvokingVertexModeEXT {
2441 #[inline]
2442 pub const fn from_raw(x: i32) -> Self {
2443 Self(x)
2444 }
2445 #[inline]
2446 pub const fn as_raw(self) -> i32 {
2447 self.0
2448 }
2449}
2450impl 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>"]
2457pub struct AccelerationStructureMotionInstanceTypeNV(pub(crate) i32);
2458impl AccelerationStructureMotionInstanceTypeNV {
2459 #[inline]
2460 pub const fn from_raw(x: i32) -> Self {
2461 Self(x)
2462 }
2463 #[inline]
2464 pub const fn as_raw(self) -> i32 {
2465 self.0
2466 }
2467}
2468impl 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>"]
2476pub struct DeviceAddressBindingTypeEXT(pub(crate) i32);
2477impl DeviceAddressBindingTypeEXT {
2478 #[inline]
2479 pub const fn from_raw(x: i32) -> Self {
2480 Self(x)
2481 }
2482 #[inline]
2483 pub const fn as_raw(self) -> i32 {
2484 self.0
2485 }
2486}
2487impl 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>"]
2494pub struct QueryResultStatusKHR(pub(crate) i32);
2495impl QueryResultStatusKHR {
2496 #[inline]
2497 pub const fn from_raw(x: i32) -> Self {
2498 Self(x)
2499 }
2500 #[inline]
2501 pub const fn as_raw(self) -> i32 {
2502 self.0
2503 }
2504}
2505impl 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>"]
2513pub struct VideoEncodeTuningModeKHR(pub(crate) i32);
2514impl VideoEncodeTuningModeKHR {
2515 #[inline]
2516 pub const fn from_raw(x: i32) -> Self {
2517 Self(x)
2518 }
2519 #[inline]
2520 pub const fn as_raw(self) -> i32 {
2521 self.0
2522 }
2523}
2524impl 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>"]
2534pub struct VideoEncodeH264RateControlStructureEXT(pub(crate) i32);
2535impl VideoEncodeH264RateControlStructureEXT {
2536 #[inline]
2537 pub const fn from_raw(x: i32) -> Self {
2538 Self(x)
2539 }
2540 #[inline]
2541 pub const fn as_raw(self) -> i32 {
2542 self.0
2543 }
2544}
2545impl 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>"]
2553pub struct VideoEncodeH265RateControlStructureEXT(pub(crate) i32);
2554impl VideoEncodeH265RateControlStructureEXT {
2555 #[inline]
2556 pub const fn from_raw(x: i32) -> Self {
2557 Self(x)
2558 }
2559 #[inline]
2560 pub const fn as_raw(self) -> i32 {
2561 self.0
2562 }
2563}
2564impl 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>"]
2572pub struct PipelineRobustnessBufferBehaviorEXT(pub(crate) i32);
2573impl PipelineRobustnessBufferBehaviorEXT {
2574 #[inline]
2575 pub const fn from_raw(x: i32) -> Self {
2576 Self(x)
2577 }
2578 #[inline]
2579 pub const fn as_raw(self) -> i32 {
2580 self.0
2581 }
2582}
2583impl 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>"]
2592pub struct PipelineRobustnessImageBehaviorEXT(pub(crate) i32);
2593impl PipelineRobustnessImageBehaviorEXT {
2594 #[inline]
2595 pub const fn from_raw(x: i32) -> Self {
2596 Self(x)
2597 }
2598 #[inline]
2599 pub const fn as_raw(self) -> i32 {
2600 self.0
2601 }
2602}
2603impl 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>"]
2612pub struct OpticalFlowPerformanceLevelNV(pub(crate) i32);
2613impl OpticalFlowPerformanceLevelNV {
2614 #[inline]
2615 pub const fn from_raw(x: i32) -> Self {
2616 Self(x)
2617 }
2618 #[inline]
2619 pub const fn as_raw(self) -> i32 {
2620 self.0
2621 }
2622}
2623impl 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>"]
2632pub struct OpticalFlowSessionBindingPointNV(pub(crate) i32);
2633impl OpticalFlowSessionBindingPointNV {
2634 #[inline]
2635 pub const fn from_raw(x: i32) -> Self {
2636 Self(x)
2637 }
2638 #[inline]
2639 pub const fn as_raw(self) -> i32 {
2640 self.0
2641 }
2642}
2643impl 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>"]
2657pub struct MicromapTypeEXT(pub(crate) i32);
2658impl MicromapTypeEXT {
2659 #[inline]
2660 pub const fn from_raw(x: i32) -> Self {
2661 Self(x)
2662 }
2663 #[inline]
2664 pub const fn as_raw(self) -> i32 {
2665 self.0
2666 }
2667}
2668impl 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>"]
2674pub struct CopyMicromapModeEXT(pub(crate) i32);
2675impl CopyMicromapModeEXT {
2676 #[inline]
2677 pub const fn from_raw(x: i32) -> Self {
2678 Self(x)
2679 }
2680 #[inline]
2681 pub const fn as_raw(self) -> i32 {
2682 self.0
2683 }
2684}
2685impl 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>"]
2694pub struct BuildMicromapModeEXT(pub(crate) i32);
2695impl BuildMicromapModeEXT {
2696 #[inline]
2697 pub const fn from_raw(x: i32) -> Self {
2698 Self(x)
2699 }
2700 #[inline]
2701 pub const fn as_raw(self) -> i32 {
2702 self.0
2703 }
2704}
2705impl 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>"]
2711pub struct OpacityMicromapFormatEXT(pub(crate) i32);
2712impl OpacityMicromapFormatEXT {
2713 #[inline]
2714 pub const fn from_raw(x: i32) -> Self {
2715 Self(x)
2716 }
2717 #[inline]
2718 pub const fn as_raw(self) -> i32 {
2719 self.0
2720 }
2721}
2722impl 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>"]
2729pub struct OpacityMicromapSpecialIndexEXT(pub(crate) i32);
2730impl OpacityMicromapSpecialIndexEXT {
2731 #[inline]
2732 pub const fn from_raw(x: i32) -> Self {
2733 Self(x)
2734 }
2735 #[inline]
2736 pub const fn as_raw(self) -> i32 {
2737 self.0
2738 }
2739}
2740impl 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>"]
2749pub struct DeviceFaultAddressTypeEXT(pub(crate) i32);
2750impl DeviceFaultAddressTypeEXT {
2751 #[inline]
2752 pub const fn from_raw(x: i32) -> Self {
2753 Self(x)
2754 }
2755 #[inline]
2756 pub const fn as_raw(self) -> i32 {
2757 self.0
2758 }
2759}
2760impl 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>"]
2773pub struct DeviceFaultVendorBinaryHeaderVersionEXT(pub(crate) i32);
2774impl DeviceFaultVendorBinaryHeaderVersionEXT {
2775 #[inline]
2776 pub const fn from_raw(x: i32) -> Self {
2777 Self(x)
2778 }
2779 #[inline]
2780 pub const fn as_raw(self) -> i32 {
2781 self.0
2782 }
2783}
2784impl 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>"]
2790pub struct DisplacementMicromapFormatNV(pub(crate) i32);
2791impl DisplacementMicromapFormatNV {
2792 #[inline]
2793 pub const fn from_raw(x: i32) -> Self {
2794 Self(x)
2795 }
2796 #[inline]
2797 pub const fn as_raw(self) -> i32 {
2798 self.0
2799 }
2800}
2801impl 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>"]
2809pub struct ShaderCodeTypeEXT(pub(crate) i32);
2810impl ShaderCodeTypeEXT {
2811 #[inline]
2812 pub const fn from_raw(x: i32) -> Self {
2813 Self(x)
2814 }
2815 #[inline]
2816 pub const fn as_raw(self) -> i32 {
2817 self.0
2818 }
2819}
2820impl ShaderCodeTypeEXT {
2821 pub const BINARY: Self = Self(0);
2822 pub const SPIRV: Self = Self(1);
2823}
2824impl fmt::Debug for ObjectType {
2825 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}
2885impl fmt::Debug for Result {
2886 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}