1#![allow(non_snake_case)]
2
3#[cfg(feature = "serialize")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug)]
8#[non_exhaustive]
9pub enum FatalError {
10 MissingRegistryElement,
11 IoError(std::io::Error),
12}
13
14impl From<std::io::Error> for FatalError {
15 fn from(v: std::io::Error) -> FatalError {
16 FatalError::IoError(v)
17 }
18}
19
20#[derive(Debug, PartialEq, Eq)]
26#[non_exhaustive]
27pub enum Error {
28 UnexpectedElement {
29 xpath: String,
30 name: String,
31 },
32 UnexpectedAttribute {
33 xpath: String,
34 name: String,
35 }, UnexpectedAttributeValue {
37 xpath: String,
38 name: String,
39 value: String,
40 },
41 MissingElement {
42 xpath: String,
43 name: String,
44 },
45 MissingAttribute {
46 xpath: String,
47 name: String,
48 },
49 SchemaViolation {
50 xpath: String,
51 desc: String,
52 },
53 ParseIntError {
54 xpath: String,
55 text: String,
56 error: std::num::ParseIntError,
57 },
58 Internal {
59 desc: &'static str,
60 },
61}
62
63#[derive(Debug, Clone, PartialEq, Eq, Default)]
68#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
69pub struct Registry(pub Vec<RegistryChild>);
70
71#[derive(Debug, Clone, PartialEq, Eq)]
73#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
74#[non_exhaustive]
75pub enum RegistryChild {
76 Comment(String),
78
79 VendorIds(VendorIds),
81
82 Platforms(Platforms),
84
85 Tags(Tags),
87
88 Types(Types),
92
93 Enums(Enums),
95
96 Commands(Commands),
98
99 Feature(Feature),
101
102 Extensions(Extensions),
104
105 Formats(Formats),
106
107 SpirvExtensions(SpirvExtensions),
108
109 SpirvCapabilities(SpirvCapabilities),
110
111 Sync(Sync),
112
113 VideoCodecs(VideoCodecs),
114}
115
116pub type VendorIds = CommentedChildren<VendorId>;
117
118#[derive(Debug, Clone, PartialEq, Eq, Default)]
123#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
124#[non_exhaustive]
125pub struct VendorId {
126 pub name: String,
128
129 pub id: u32,
131
132 #[cfg_attr(
134 feature = "serialize",
135 serde(default, skip_serializing_if = "is_default")
136 )]
137 pub comment: Option<String>,
138}
139
140pub type Platforms = CommentedChildren<Platform>;
141
142#[derive(Debug, Clone, PartialEq, Eq, Default)]
149#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
150#[non_exhaustive]
151pub struct Platform {
152 pub name: String,
154
155 pub protect: String,
157
158 #[cfg_attr(
160 feature = "serialize",
161 serde(default, skip_serializing_if = "is_default")
162 )]
163 pub comment: Option<String>,
164}
165
166pub type Tags = CommentedChildren<Tag>;
167
168#[derive(Debug, Clone, PartialEq, Eq, Default)]
174#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
175#[non_exhaustive]
176pub struct Tag {
177 pub name: String,
179 pub author: String,
181 pub contact: String,
183}
184
185pub type Types = CommentedChildren<TypesChild>;
186
187#[derive(Debug, Clone, PartialEq, Eq)]
189#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
190#[non_exhaustive]
191pub enum TypesChild {
192 Type(Type),
193 Comment(String),
194}
195
196#[derive(Debug, Clone, PartialEq, Eq, Default)]
197#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
198#[non_exhaustive]
199pub struct Type {
200 #[cfg_attr(
201 feature = "serialize",
202 serde(default, skip_serializing_if = "is_default")
203 )]
204 pub name: Option<String>,
205
206 #[cfg_attr(
207 feature = "serialize",
208 serde(default, skip_serializing_if = "is_default")
209 )]
210 pub alias: Option<String>,
211
212 #[cfg_attr(
213 feature = "serialize",
214 serde(default, skip_serializing_if = "is_default")
215 )]
216 pub api: Option<String>,
217
218 #[cfg_attr(
219 feature = "serialize",
220 serde(default, skip_serializing_if = "is_default")
221 )]
222 pub requires: Option<String>,
223
224 #[cfg_attr(
225 feature = "serialize",
226 serde(default, skip_serializing_if = "is_default")
227 )]
228 pub category: Option<String>,
229
230 #[cfg_attr(
231 feature = "serialize",
232 serde(default, skip_serializing_if = "is_default")
233 )]
234 pub comment: Option<String>,
235
236 #[cfg_attr(
237 feature = "serialize",
238 serde(default, skip_serializing_if = "is_default")
239 )]
240 pub parent: Option<String>,
241
242 #[cfg_attr(
243 feature = "serialize",
244 serde(default, skip_serializing_if = "is_default")
245 )]
246 pub returnedonly: Option<String>,
247
248 #[cfg_attr(
249 feature = "serialize",
250 serde(default, skip_serializing_if = "is_default")
251 )]
252 pub structextends: Option<String>,
253
254 #[cfg_attr(
255 feature = "serialize",
256 serde(default, skip_serializing_if = "is_default")
257 )]
258 pub allowduplicate: Option<String>,
259
260 #[cfg_attr(
261 feature = "serialize",
262 serde(default, skip_serializing_if = "is_default")
263 )]
264 pub objtypeenum: Option<String>,
265
266 #[cfg_attr(
267 feature = "serialize",
268 serde(default, skip_serializing_if = "is_default")
269 )]
270 pub requiredlimittype: Option<String>,
271
272 #[cfg_attr(
273 feature = "serialize",
274 serde(default, skip_serializing_if = "is_default")
275 )]
276 pub bitvalues: Option<String>,
277
278 #[cfg_attr(
279 feature = "serialize",
280 serde(default, skip_serializing_if = "is_default")
281 )]
282 pub spec: TypeSpec,
283
284 #[cfg_attr(
285 feature = "serialize",
286 serde(default, skip_serializing_if = "is_default")
287 )]
288 pub deprecated: Option<String>,
289}
290
291#[derive(Debug, Clone, PartialEq, Eq)]
293#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
294#[non_exhaustive]
295pub enum TypeSpec {
296 None,
297 Code(TypeCode),
298 Members(Vec<TypeMember>),
299}
300
301impl Default for TypeSpec {
302 fn default() -> Self {
303 TypeSpec::None
304 }
305}
306
307#[derive(Debug, Clone, PartialEq, Eq, Default)]
308#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
309#[non_exhaustive]
310pub struct TypeCode {
311 pub code: String,
312
313 #[cfg_attr(
314 feature = "serialize",
315 serde(default, skip_serializing_if = "is_default")
316 )]
317 pub markup: Vec<TypeCodeMarkup>,
318}
319
320#[derive(Debug, Clone, PartialEq, Eq)]
321#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
322#[non_exhaustive]
323pub enum TypeCodeMarkup {
324 Name(String),
325 Type(String),
326 ApiEntry(String),
327}
328
329#[derive(Debug, Clone, PartialEq, Eq)]
331#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
332#[non_exhaustive]
333pub enum TypeMember {
334 Comment(String),
336
337 Definition(TypeMemberDefinition),
339}
340
341#[derive(Debug, Clone, PartialEq, Eq, Default)]
342#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
343#[non_exhaustive]
344pub struct TypeMemberDefinition {
345 #[cfg_attr(
346 feature = "serialize",
347 serde(default, skip_serializing_if = "is_default")
348 )]
349 pub len: Option<String>,
350
351 #[cfg_attr(
352 feature = "serialize",
353 serde(default, skip_serializing_if = "is_default")
354 )]
355 pub altlen: Option<String>,
356
357 #[cfg_attr(
358 feature = "serialize",
359 serde(default, skip_serializing_if = "is_default")
360 )]
361 pub externsync: Option<String>,
362
363 #[cfg_attr(
364 feature = "serialize",
365 serde(default, skip_serializing_if = "is_default")
366 )]
367 pub optional: Option<String>,
368
369 #[cfg_attr(
370 feature = "serialize",
371 serde(default, skip_serializing_if = "is_default")
372 )]
373 pub selector: Option<String>,
374
375 #[cfg_attr(
376 feature = "serialize",
377 serde(default, skip_serializing_if = "is_default")
378 )]
379 pub selection: Option<String>,
380
381 #[cfg_attr(
382 feature = "serialize",
383 serde(default, skip_serializing_if = "is_default")
384 )]
385 pub noautovalidity: Option<String>,
386
387 #[cfg_attr(
388 feature = "serialize",
389 serde(default, skip_serializing_if = "is_default")
390 )]
391 pub validextensionstructs: Option<String>,
392
393 #[cfg_attr(
394 feature = "serialize",
395 serde(default, skip_serializing_if = "is_default")
396 )]
397 pub values: Option<String>,
398
399 #[cfg_attr(
400 feature = "serialize",
401 serde(default, skip_serializing_if = "is_default")
402 )]
403 pub limittype: Option<String>,
404
405 #[cfg_attr(
406 feature = "serialize",
407 serde(default, skip_serializing_if = "is_default")
408 )]
409 pub objecttype: Option<String>,
410
411 #[cfg_attr(
412 feature = "serialize",
413 serde(default, skip_serializing_if = "is_default")
414 )]
415 pub deprecated: Option<String>,
416
417 #[cfg_attr(
418 feature = "serialize",
419 serde(default, skip_serializing_if = "is_default")
420 )]
421 pub api: Option<String>,
422
423 #[cfg_attr(
424 feature = "serialize",
425 serde(default, skip_serializing_if = "is_default")
426 )]
427 pub code: String,
428
429 #[cfg_attr(
430 feature = "serialize",
431 serde(default, skip_serializing_if = "is_default")
432 )]
433 pub markup: Vec<TypeMemberMarkup>,
434
435 #[cfg_attr(
436 feature = "serialize",
437 serde(default, skip_serializing_if = "is_default")
438 )]
439 pub featurelink: Option<String>,
440}
441
442#[derive(Debug, Clone, PartialEq, Eq)]
443#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
444#[non_exhaustive]
445pub enum TypeMemberMarkup {
446 Name(String),
447 Type(String),
448 Enum(String),
449 Comment(String),
450}
451
452#[derive(Debug, Clone, PartialEq, Eq, Default)]
453#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
454#[non_exhaustive]
455pub struct Enums {
456 #[cfg_attr(
457 feature = "serialize",
458 serde(default, skip_serializing_if = "is_default")
459 )]
460 pub name: Option<String>,
461
462 #[cfg_attr(
463 feature = "serialize",
464 serde(default, skip_serializing_if = "is_default")
465 )]
466 pub kind: Option<String>,
467
468 #[cfg_attr(
469 feature = "serialize",
470 serde(default, skip_serializing_if = "is_default")
471 )]
472 pub start: Option<i64>,
473
474 #[cfg_attr(
475 feature = "serialize",
476 serde(default, skip_serializing_if = "is_default")
477 )]
478 pub end: Option<i64>,
479
480 #[cfg_attr(
481 feature = "serialize",
482 serde(default, skip_serializing_if = "is_default")
483 )]
484 pub vendor: Option<String>,
485
486 #[cfg_attr(
487 feature = "serialize",
488 serde(default, skip_serializing_if = "is_default")
489 )]
490 pub comment: Option<String>,
491
492 #[cfg_attr(
493 feature = "serialize",
494 serde(default, skip_serializing_if = "is_default")
495 )]
496 pub children: Vec<EnumsChild>,
497
498 #[cfg_attr(
499 feature = "serialize",
500 serde(default, skip_serializing_if = "is_default")
501 )]
502 pub bitwidth: Option<u32>,
503}
504
505#[derive(Debug, Clone, PartialEq, Eq)]
507#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
508#[non_exhaustive]
509pub enum EnumsChild {
510 Enum(Enum),
512
513 Unused(Unused),
515
516 Comment(String),
518}
519
520#[derive(Debug, Clone, PartialEq, Eq, Default)]
522#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
523#[non_exhaustive]
524pub struct Unused {
525 pub start: i64,
527
528 #[cfg_attr(
530 feature = "serialize",
531 serde(default, skip_serializing_if = "is_default")
532 )]
533 pub end: Option<i64>,
534
535 #[cfg_attr(
537 feature = "serialize",
538 serde(default, skip_serializing_if = "is_default")
539 )]
540 pub vendor: Option<String>,
541
542 #[cfg_attr(
544 feature = "serialize",
545 serde(default, skip_serializing_if = "is_default")
546 )]
547 pub comment: Option<String>,
548}
549
550#[derive(Debug, Clone, PartialEq, Eq, Default)]
552#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
553#[non_exhaustive]
554pub struct Enum {
555 pub name: String,
557
558 #[cfg_attr(
560 feature = "serialize",
561 serde(default, skip_serializing_if = "is_default")
562 )]
563 pub comment: Option<String>,
564
565 #[cfg_attr(
566 feature = "serialize",
567 serde(default, skip_serializing_if = "is_default")
568 )]
569 pub type_suffix: Option<String>,
570
571 #[cfg_attr(
572 feature = "serialize",
573 serde(default, skip_serializing_if = "is_default")
574 )]
575 pub api: Option<String>,
576
577 #[cfg_attr(
578 feature = "serialize",
579 serde(default, skip_serializing_if = "is_default")
580 )]
581 pub protect: Option<String>,
582
583 #[cfg_attr(
584 feature = "serialize",
585 serde(default, skip_serializing_if = "is_default")
586 )]
587 pub deprecated: Option<String>,
588
589 #[cfg_attr(
590 feature = "serialize",
591 serde(default, skip_serializing_if = "is_default")
592 )]
593 pub spec: EnumSpec,
594}
595
596#[derive(Debug, Clone, PartialEq, Eq)]
598#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
599#[non_exhaustive]
600pub enum EnumSpec {
601 None,
602
603 Alias {
604 alias: String,
605
606 #[cfg_attr(
607 feature = "serialize",
608 serde(default, skip_serializing_if = "is_default")
609 )]
610 extends: Option<String>,
611 },
612
613 Offset {
614 offset: i64,
615
616 #[cfg_attr(
617 feature = "serialize",
618 serde(default, skip_serializing_if = "is_default")
619 )]
620 extends: String,
621
622 #[cfg_attr(
623 feature = "serialize",
624 serde(default, skip_serializing_if = "is_default")
625 )]
626 extnumber: Option<i64>,
627
628 #[cfg_attr(
629 feature = "serialize",
630 serde(default, skip_serializing_if = "is_default")
631 )]
632 dir: bool,
633 },
634
635 Bitpos {
637 bitpos: i64,
639
640 #[cfg_attr(
642 feature = "serialize",
643 serde(default, skip_serializing_if = "is_default")
644 )]
645 extends: Option<String>,
646 },
647
648 Value {
650 value: String, #[cfg_attr(
655 feature = "serialize",
656 serde(default, skip_serializing_if = "is_default")
657 )]
658 extends: Option<String>,
659 },
660}
661
662impl Default for EnumSpec {
663 fn default() -> Self {
664 EnumSpec::None
665 }
666}
667
668pub type Commands = CommentedChildren<Command>;
669
670#[derive(Debug, Clone, PartialEq, Eq)]
672#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
673#[non_exhaustive]
674pub enum Command {
675 Alias { name: String, alias: String },
677
678 Definition(CommandDefinition),
680}
681
682#[derive(Debug, Clone, PartialEq, Eq, Default)]
683#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
684#[non_exhaustive]
685pub struct CommandDefinition {
686 #[cfg_attr(
687 feature = "serialize",
688 serde(default, skip_serializing_if = "is_default")
689 )]
690 pub tasks: Option<String>,
691
692 #[cfg_attr(
693 feature = "serialize",
694 serde(default, skip_serializing_if = "is_default")
695 )]
696 pub queues: Option<String>,
697
698 #[cfg_attr(
699 feature = "serialize",
700 serde(default, skip_serializing_if = "is_default")
701 )]
702 pub successcodes: Option<String>,
703
704 #[cfg_attr(
705 feature = "serialize",
706 serde(default, skip_serializing_if = "is_default")
707 )]
708 pub errorcodes: Option<String>,
709
710 #[cfg_attr(
711 feature = "serialize",
712 serde(default, skip_serializing_if = "is_default")
713 )]
714 pub renderpass: Option<String>,
715
716 #[cfg_attr(
717 feature = "serialize",
718 serde(default, skip_serializing_if = "is_default")
719 )]
720 pub videocoding: Option<String>,
721
722 #[cfg_attr(
723 feature = "serialize",
724 serde(default, skip_serializing_if = "is_default")
725 )]
726 pub conditionalrendering: Option<bool>,
727
728 #[cfg_attr(
729 feature = "serialize",
730 serde(default, skip_serializing_if = "is_default")
731 )]
732 pub cmdbufferlevel: Option<String>,
733
734 #[cfg_attr(
735 feature = "serialize",
736 serde(default, skip_serializing_if = "is_default")
737 )]
738 pub allownoqueues: Option<String>,
739
740 #[cfg_attr(
741 feature = "serialize",
742 serde(default, skip_serializing_if = "is_default")
743 )]
744 pub pipeline: Option<String>,
745
746 #[cfg_attr(
747 feature = "serialize",
748 serde(default, skip_serializing_if = "is_default")
749 )]
750 pub comment: Option<String>,
751
752 #[cfg_attr(
753 feature = "serialize",
754 serde(default, skip_serializing_if = "is_default")
755 )]
756 pub proto: NameWithType,
757
758 #[cfg_attr(
759 feature = "serialize",
760 serde(default, skip_serializing_if = "is_default")
761 )]
762 pub params: Vec<CommandParam>,
763
764 #[cfg_attr(
765 feature = "serialize",
766 serde(default, skip_serializing_if = "is_default")
767 )]
768 pub alias: Option<String>,
769
770 #[cfg_attr(
771 feature = "serialize",
772 serde(default, skip_serializing_if = "is_default")
773 )]
774 pub description: Option<String>,
775
776 #[cfg_attr(
777 feature = "serialize",
778 serde(default, skip_serializing_if = "is_default")
779 )]
780 pub implicitexternsyncparams: Vec<String>,
781
782 #[cfg_attr(
783 feature = "serialize",
784 serde(default, skip_serializing_if = "is_default")
785 )]
786 pub api: Option<String>,
787
788 #[cfg_attr(
789 feature = "serialize",
790 serde(default, skip_serializing_if = "is_default")
791 )]
792 pub export: Option<String>,
793
794 #[cfg_attr(
795 feature = "serialize",
796 serde(default, skip_serializing_if = "is_default")
797 )]
798 pub code: String,
799}
800
801#[derive(Debug, Clone, PartialEq, Eq, Default)]
803#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
804#[non_exhaustive]
805pub struct CommandParam {
806 #[cfg_attr(
808 feature = "serialize",
809 serde(default, skip_serializing_if = "is_default")
810 )]
811 pub len: Option<String>,
812
813 #[cfg_attr(
815 feature = "serialize",
816 serde(default, skip_serializing_if = "is_default")
817 )]
818 pub altlen: Option<String>,
819
820 #[cfg_attr(
822 feature = "serialize",
823 serde(default, skip_serializing_if = "is_default")
824 )]
825 pub externsync: Option<String>,
826
827 #[cfg_attr(
829 feature = "serialize",
830 serde(default, skip_serializing_if = "is_default")
831 )]
832 pub optional: Option<String>,
833
834 #[cfg_attr(
836 feature = "serialize",
837 serde(default, skip_serializing_if = "is_default")
838 )]
839 pub noautovalidity: Option<String>,
840
841 #[cfg_attr(
842 feature = "serialize",
843 serde(default, skip_serializing_if = "is_default")
844 )]
845 pub objecttype: Option<String>,
846
847 #[cfg_attr(
849 feature = "serialize",
850 serde(default, skip_serializing_if = "is_default")
851 )]
852 pub definition: NameWithType,
853
854 #[cfg_attr(
859 feature = "serialize",
860 serde(default, skip_serializing_if = "is_default")
861 )]
862 pub validstructs: Vec<String>,
863
864 #[cfg_attr(
865 feature = "serialize",
866 serde(default, skip_serializing_if = "is_default")
867 )]
868 pub stride: Option<String>,
869
870 #[cfg_attr(
871 feature = "serialize",
872 serde(default, skip_serializing_if = "is_default")
873 )]
874 pub api: Option<String>,
875}
876
877#[derive(Debug, Clone, PartialEq, Eq, Default)]
878#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
879#[non_exhaustive]
880pub struct Feature {
881 #[cfg_attr(
882 feature = "serialize",
883 serde(default, skip_serializing_if = "is_default")
884 )]
885 pub api: String,
886
887 #[cfg_attr(
888 feature = "serialize",
889 serde(default, skip_serializing_if = "is_default")
890 )]
891 pub apitype: Option<String>,
892
893 #[cfg_attr(
894 feature = "serialize",
895 serde(default, skip_serializing_if = "is_default")
896 )]
897 pub name: String,
898
899 #[cfg_attr(
900 feature = "serialize",
901 serde(default, skip_serializing_if = "is_default")
902 )]
903 pub number: Option<String>,
904
905 #[cfg_attr(
906 feature = "serialize",
907 serde(default, skip_serializing_if = "is_default")
908 )]
909 pub depends: Option<String>,
910
911 #[cfg_attr(
912 feature = "serialize",
913 serde(default, skip_serializing_if = "is_default")
914 )]
915 pub protect: Option<String>,
916
917 #[cfg_attr(
918 feature = "serialize",
919 serde(default, skip_serializing_if = "is_default")
920 )]
921 pub comment: Option<String>,
922
923 #[cfg_attr(
924 feature = "serialize",
925 serde(default, skip_serializing_if = "is_default")
926 )]
927 pub children: Vec<FeatureChild>,
928}
929
930pub type FeatureChild = ExtensionChild;
931
932pub type Extensions = CommentedChildren<Extension>;
933
934#[derive(Debug, Clone, PartialEq, Eq, Default)]
935#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
936#[non_exhaustive]
937pub struct Extension {
938 pub name: String,
940
941 #[cfg_attr(
943 feature = "serialize",
944 serde(default, skip_serializing_if = "is_default")
945 )]
946 pub comment: Option<String>,
947
948 #[cfg_attr(
950 feature = "serialize",
951 serde(default, skip_serializing_if = "is_default")
952 )]
953 pub number: Option<i64>,
954
955 #[cfg_attr(
956 feature = "serialize",
957 serde(default, skip_serializing_if = "is_default")
958 )]
959 pub protect: Option<String>,
960
961 #[cfg_attr(
963 feature = "serialize",
964 serde(default, skip_serializing_if = "is_default")
965 )]
966 pub platform: Option<String>,
967
968 #[cfg_attr(
970 feature = "serialize",
971 serde(default, skip_serializing_if = "is_default")
972 )]
973 pub author: Option<String>,
974
975 #[cfg_attr(
977 feature = "serialize",
978 serde(default, skip_serializing_if = "is_default")
979 )]
980 pub contact: Option<String>,
981
982 #[cfg_attr(
984 feature = "serialize",
985 serde(default, skip_serializing_if = "is_default")
986 )]
987 pub ext_type: Option<String>,
988
989 #[cfg_attr(
990 feature = "serialize",
991 serde(default, skip_serializing_if = "is_default")
992 )]
993 pub requires: Option<String>,
994
995 #[cfg_attr(
996 feature = "serialize",
997 serde(default, skip_serializing_if = "is_default")
998 )]
999 pub requires_core: Option<String>,
1000
1001 #[cfg_attr(
1002 feature = "serialize",
1003 serde(default, skip_serializing_if = "is_default")
1004 )]
1005 pub supported: Option<String>, #[cfg_attr(
1008 feature = "serialize",
1009 serde(default, skip_serializing_if = "is_default")
1010 )]
1011 pub ratified: Option<String>,
1012
1013 #[cfg_attr(
1014 feature = "serialize",
1015 serde(default, skip_serializing_if = "is_default")
1016 )]
1017 pub deprecatedby: Option<String>,
1018
1019 #[cfg_attr(
1021 feature = "serialize",
1022 serde(default, skip_serializing_if = "is_default")
1023 )]
1024 pub promotedto: Option<String>,
1025
1026 #[cfg_attr(
1027 feature = "serialize",
1028 serde(default, skip_serializing_if = "is_default")
1029 )]
1030 pub obsoletedby: Option<String>,
1031
1032 #[cfg_attr(
1034 feature = "serialize",
1035 serde(default, skip_serializing_if = "is_default")
1036 )]
1037 pub provisional: bool,
1038
1039 #[cfg_attr(
1041 feature = "serialize",
1042 serde(default, skip_serializing_if = "is_default")
1043 )]
1044 pub specialuse: Option<String>,
1045
1046 #[cfg_attr(
1048 feature = "serialize",
1049 serde(default, skip_serializing_if = "is_default")
1050 )]
1051 pub sortorder: Option<i64>,
1052
1053 #[cfg_attr(
1054 feature = "serialize",
1055 serde(default, skip_serializing_if = "is_default")
1056 )]
1057 pub depends: Option<String>,
1058
1059 #[cfg_attr(
1060 feature = "serialize",
1061 serde(default, skip_serializing_if = "is_default")
1062 )]
1063 pub nofeatures: bool,
1064
1065 #[cfg_attr(
1067 feature = "serialize",
1068 serde(default, skip_serializing_if = "is_default")
1069 )]
1070 pub children: Vec<ExtensionChild>,
1071}
1072
1073#[derive(Debug, Clone, PartialEq, Eq)]
1077#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1078#[non_exhaustive]
1079pub enum ExtensionChild {
1080 Require {
1082 #[cfg_attr(
1083 feature = "serialize",
1084 serde(default, skip_serializing_if = "is_default")
1085 )]
1086 api: Option<String>,
1087
1088 #[cfg_attr(
1089 feature = "serialize",
1090 serde(default, skip_serializing_if = "is_default")
1091 )]
1092 profile: Option<String>,
1093
1094 #[cfg_attr(
1096 feature = "serialize",
1097 serde(default, skip_serializing_if = "is_default")
1098 )]
1099 extension: Option<String>,
1100
1101 #[cfg_attr(
1102 feature = "serialize",
1103 serde(default, skip_serializing_if = "is_default")
1104 )]
1105 feature: Option<String>,
1106
1107 #[cfg_attr(
1108 feature = "serialize",
1109 serde(default, skip_serializing_if = "is_default")
1110 )]
1111 comment: Option<String>,
1112
1113 #[cfg_attr(
1114 feature = "serialize",
1115 serde(default, skip_serializing_if = "is_default")
1116 )]
1117 depends: Option<String>,
1118
1119 items: Vec<InterfaceItem>,
1121 },
1122
1123 Deprecate {
1124 #[cfg_attr(
1125 feature = "serialize",
1126 serde(default, skip_serializing_if = "is_default")
1127 )]
1128 api: Option<String>,
1129
1130 #[cfg_attr(
1131 feature = "serialize",
1132 serde(default, skip_serializing_if = "is_default")
1133 )]
1134 profile: Option<String>,
1135
1136 #[cfg_attr(
1137 feature = "serialize",
1138 serde(default, skip_serializing_if = "is_default")
1139 )]
1140 comment: Option<String>,
1141
1142 #[cfg_attr(
1143 feature = "serialize",
1144 serde(default, skip_serializing_if = "is_default")
1145 )]
1146 explanationlink: String,
1147
1148 items: Vec<InterfaceItem>,
1149 },
1150
1151 Remove {
1153 #[cfg_attr(
1154 feature = "serialize",
1155 serde(default, skip_serializing_if = "is_default")
1156 )]
1157 api: Option<String>,
1158
1159 #[cfg_attr(
1160 feature = "serialize",
1161 serde(default, skip_serializing_if = "is_default")
1162 )]
1163 profile: Option<String>,
1164
1165 #[cfg_attr(
1166 feature = "serialize",
1167 serde(default, skip_serializing_if = "is_default")
1168 )]
1169 comment: Option<String>,
1170
1171 #[cfg_attr(
1172 feature = "serialize",
1173 serde(default, skip_serializing_if = "is_default")
1174 )]
1175 reasonlink: Option<String>,
1176
1177 #[cfg_attr(
1178 feature = "serialize",
1179 serde(default, skip_serializing_if = "is_default")
1180 )]
1181 items: Vec<InterfaceItem>,
1182 },
1183}
1184
1185#[derive(Debug, Clone, PartialEq, Eq)]
1189#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1190#[non_exhaustive]
1191pub enum InterfaceItem {
1192 Comment(String),
1193
1194 Type {
1195 name: String,
1196
1197 #[cfg_attr(
1198 feature = "serialize",
1199 serde(default, skip_serializing_if = "is_default")
1200 )]
1201 comment: Option<String>,
1202 },
1203
1204 Enum(Enum),
1205
1206 Command {
1207 name: String,
1208
1209 #[cfg_attr(
1210 feature = "serialize",
1211 serde(default, skip_serializing_if = "is_default")
1212 )]
1213 comment: Option<String>,
1214 },
1215
1216 Feature {
1217 name: String,
1218
1219 struct_: String,
1220
1221 #[cfg_attr(
1222 feature = "serialize",
1223 serde(default, skip_serializing_if = "is_default")
1224 )]
1225 comment: Option<String>,
1226 },
1227}
1228
1229pub type Formats = CommentedChildren<Format>;
1230
1231#[derive(Debug, Clone, PartialEq, Eq, Default)]
1232#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1233#[non_exhaustive]
1234pub struct Format {
1235 pub name: String,
1236 pub class: String,
1237 pub blockSize: u8,
1238 pub texelsPerBlock: u8,
1239
1240 #[cfg_attr(
1241 feature = "serialize",
1242 serde(default, skip_serializing_if = "is_default")
1243 )]
1244 pub blockExtent: Option<String>,
1245
1246 #[cfg_attr(
1247 feature = "serialize",
1248 serde(default, skip_serializing_if = "is_default")
1249 )]
1250 pub packed: Option<u8>,
1251
1252 #[cfg_attr(
1253 feature = "serialize",
1254 serde(default, skip_serializing_if = "is_default")
1255 )]
1256 pub compressed: Option<String>,
1257
1258 #[cfg_attr(
1259 feature = "serialize",
1260 serde(default, skip_serializing_if = "is_default")
1261 )]
1262 pub chroma: Option<String>,
1263
1264 pub children: Vec<FormatChild>,
1265}
1266
1267#[derive(Debug, Clone, PartialEq, Eq)]
1268#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1269#[non_exhaustive]
1270pub enum FormatChild {
1271 #[non_exhaustive]
1272 Component {
1273 name: String,
1274 bits: String,
1275 numericFormat: String,
1276 #[cfg_attr(
1277 feature = "serialize",
1278 serde(default, skip_serializing_if = "is_default")
1279 )]
1280 planeIndex: Option<u8>,
1281 },
1282
1283 #[non_exhaustive]
1284 Plane {
1285 index: u8,
1286 widthDivisor: u8,
1287 heightDivisor: u8,
1288 compatible: String,
1289 },
1290
1291 #[non_exhaustive]
1292 SpirvImageFormat { name: String },
1293}
1294
1295#[derive(Debug, Clone, PartialEq, Eq, Default)]
1296#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1297#[non_exhaustive]
1298pub struct NameWithType {
1299 #[cfg_attr(
1300 feature = "serialize",
1301 serde(default, skip_serializing_if = "is_default")
1302 )]
1303 pub type_name: Option<String>,
1304
1305 #[cfg_attr(
1306 feature = "serialize",
1307 serde(default, skip_serializing_if = "is_default")
1308 )]
1309 pub name: String,
1310
1311 #[cfg_attr(
1312 feature = "serialize",
1313 serde(default, skip_serializing_if = "is_default")
1314 )]
1315 pub code: String,
1316}
1317
1318#[derive(Debug, Clone, PartialEq, Eq, Default)]
1319#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1320#[non_exhaustive]
1321pub struct CommentedChildren<T> {
1322 #[cfg_attr(
1323 feature = "serialize",
1324 serde(default, skip_serializing_if = "is_default")
1325 )]
1326 pub comment: Option<String>,
1327
1328 pub children: Vec<T>,
1329}
1330
1331#[derive(Debug, Clone, PartialEq, Eq, Default)]
1332#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1333#[non_exhaustive]
1334pub struct SpirvExtOrCap {
1335 #[cfg_attr(
1336 feature = "serialize",
1337 serde(default, skip_serializing_if = "is_default")
1338 )]
1339 pub name: String,
1340
1341 #[cfg_attr(
1342 feature = "serialize",
1343 serde(default, skip_serializing_if = "is_default")
1344 )]
1345 pub enables: Vec<Enable>,
1346}
1347
1348pub type SpirvExtension = SpirvExtOrCap;
1349pub type SpirvExtensions = CommentedChildren<SpirvExtension>;
1350
1351pub type SpirvCapability = SpirvExtOrCap;
1352pub type SpirvCapabilities = CommentedChildren<SpirvCapability>;
1353
1354#[derive(Debug, Clone, PartialEq, Eq)]
1355#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1356#[non_exhaustive]
1357pub enum SyncChild {
1358 Stage(SyncStage),
1359 Access(SyncAccess),
1360 Pipeline(SyncPipeline),
1361}
1362
1363pub type Sync = CommentedChildren<SyncChild>;
1364
1365#[derive(Debug, Clone, PartialEq, Eq, Default)]
1366#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1367#[non_exhaustive]
1368pub struct SyncSupport {
1369 pub queues: Option<String>,
1370 pub stage: Option<String>,
1371}
1372
1373#[derive(Debug, Clone, PartialEq, Eq, Default)]
1374#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1375#[non_exhaustive]
1376pub struct SyncEquivalent {
1377 pub stage: Option<String>,
1378 pub access: Option<String>,
1379}
1380
1381#[derive(Debug, Clone, PartialEq, Eq, Default)]
1382#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1383#[non_exhaustive]
1384pub struct SyncStage {
1385 pub name: String,
1386 pub alias: Option<String>,
1387 pub syncsupport: Option<SyncSupport>,
1388 pub syncequivalent: Option<SyncEquivalent>,
1389}
1390
1391#[derive(Debug, Clone, PartialEq, Eq, Default)]
1392#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1393#[non_exhaustive]
1394pub struct SyncAccess {
1395 pub name: String,
1396 pub alias: Option<String>,
1397 pub comment: Option<String>,
1398 pub syncsupport: Option<SyncSupport>,
1399 pub syncequivalent: Option<SyncEquivalent>,
1400}
1401
1402#[derive(Debug, Clone, PartialEq, Eq, Default)]
1403#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1404#[non_exhaustive]
1405pub struct SyncPipeline {
1406 pub name: String,
1407 pub depends: Option<String>,
1408 pub children: Vec<SyncPipelineStage>,
1409}
1410
1411#[derive(Debug, Clone, PartialEq, Eq, Default)]
1412#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1413#[non_exhaustive]
1414pub struct SyncPipelineStage {
1415 pub order: Option<String>,
1416 pub before: Option<String>,
1417 pub after: Option<String>,
1418 pub text: String,
1419}
1420
1421pub type VideoCodecs = CommentedChildren<VideoCodec>;
1422
1423#[derive(Debug, Clone, PartialEq, Eq, Default)]
1424#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1425#[non_exhaustive]
1426pub struct VideoCodec {
1427 pub comment: Option<String>,
1428 pub name: String,
1429 pub extend: Option<String>,
1430 pub value: Option<String>,
1431 pub children: Vec<VideoCodecChild>,
1432}
1433
1434#[derive(Debug, Clone, PartialEq, Eq)]
1435#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1436#[non_exhaustive]
1437pub enum VideoCodecChild {
1438 Profiles(VideoProfiles),
1439 Capabilities(VideoCapabilities),
1440 Format(VideoFormat),
1441}
1442
1443#[derive(Debug, Clone, PartialEq, Eq, Default)]
1444#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1445#[non_exhaustive]
1446pub struct VideoProfiles {
1447 pub comment: Option<String>,
1448 pub struct_: String,
1449 pub children: Vec<VideoProfileMember>,
1450}
1451
1452#[derive(Debug, Clone, PartialEq, Eq, Default)]
1453#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1454#[non_exhaustive]
1455pub struct VideoProfileMember {
1456 pub comment: Option<String>,
1457 pub name: String,
1458 pub children: Vec<VideoProfile>,
1459}
1460
1461#[derive(Debug, Clone, PartialEq, Eq, Default)]
1462#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1463#[non_exhaustive]
1464pub struct VideoProfile {
1465 pub comment: Option<String>,
1466 pub name: String,
1467 pub value: String,
1468}
1469
1470#[derive(Debug, Clone, PartialEq, Eq, Default)]
1471#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1472#[non_exhaustive]
1473pub struct VideoCapabilities {
1474 pub comment: Option<String>,
1475 pub struct_: String,
1476}
1477
1478#[derive(Debug, Clone, PartialEq, Eq, Default)]
1479#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1480#[non_exhaustive]
1481pub struct VideoFormat {
1482 pub comment: Option<String>,
1483 pub name: Option<String>,
1484 pub usage: Option<String>,
1485 pub extend: Option<String>,
1486 pub children: Vec<VideoFormatChild>,
1487}
1488
1489#[derive(Debug, Clone, PartialEq, Eq)]
1490#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1491#[non_exhaustive]
1492pub enum VideoFormatChild {
1493 RequireCapabilities(VideoRequireCapabilities),
1494 FormatProperties(VideoFormatProperties),
1495}
1496
1497#[derive(Debug, Clone, PartialEq, Eq, Default)]
1498#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1499#[non_exhaustive]
1500pub struct VideoFormatProperties {
1501 pub comment: Option<String>,
1502 pub struct_: String,
1503}
1504
1505#[derive(Debug, Clone, PartialEq, Eq, Default)]
1506#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1507#[non_exhaustive]
1508pub struct VideoRequireCapabilities {
1509 pub comment: Option<String>,
1510 pub struct_: String,
1511 pub member: String,
1512 pub value: String,
1513}
1514
1515#[derive(Debug, Clone, PartialEq, Eq)]
1516#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1517#[non_exhaustive]
1518pub enum Enable {
1519 Version(String),
1520 Extension(String),
1521 Feature(FeatureEnable),
1522 Property(PropertyEnable),
1523}
1524
1525#[derive(Debug, Clone, PartialEq, Eq, Default)]
1526#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1527#[non_exhaustive]
1528pub struct FeatureEnable {
1529 #[cfg_attr(
1530 feature = "serialize",
1531 serde(default, skip_serializing_if = "is_default")
1532 )]
1533 pub struct_: String,
1534
1535 #[cfg_attr(
1536 feature = "serialize",
1537 serde(default, skip_serializing_if = "is_default")
1538 )]
1539 pub feature: String,
1540
1541 #[cfg_attr(
1542 feature = "serialize",
1543 serde(default, skip_serializing_if = "is_default")
1544 )]
1545 pub requires: Option<String>,
1546
1547 #[cfg_attr(
1548 feature = "serialize",
1549 serde(default, skip_serializing_if = "is_default")
1550 )]
1551 pub alias: Option<String>,
1552}
1553
1554#[derive(Debug, Clone, PartialEq, Eq, Default)]
1555#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
1556#[non_exhaustive]
1557pub struct PropertyEnable {
1558 #[cfg_attr(
1559 feature = "serialize",
1560 serde(default, skip_serializing_if = "is_default")
1561 )]
1562 pub property: String,
1563
1564 #[cfg_attr(
1565 feature = "serialize",
1566 serde(default, skip_serializing_if = "is_default")
1567 )]
1568 pub member: String,
1569
1570 #[cfg_attr(
1571 feature = "serialize",
1572 serde(default, skip_serializing_if = "is_default")
1573 )]
1574 pub value: String,
1575
1576 #[cfg_attr(
1577 feature = "serialize",
1578 serde(default, skip_serializing_if = "is_default")
1579 )]
1580 pub requires: Option<String>,
1581}
1582
1583#[cfg(feature = "serialize")]
1584fn is_default<T: Default + Eq>(v: &T) -> bool {
1585 v.eq(&T::default())
1586}