Skip to main content

vulkan_registry/
registry.rs

1#[derive(Clone, Debug, Eq, PartialEq)]
2pub struct Registry {
3    pub contents: Vec<RegistryContent>,
4}
5
6#[derive(Clone, Debug, Eq, PartialEq)]
7pub enum RegistryContent {
8    Comment(String),
9    Platforms(Platforms),
10    Tags(Tags),
11    Types(Types),
12    Enums(Enums),
13    Commands(Commands),
14    Feature(Feature),
15    Extensions(Extensions),
16    Formats(Formats),
17    SpirvExtensions(SpirvExtensions),
18    SpirvCapabilities(SpirvCapabilities),
19    Syncs(Syncs),
20    VideoCodecs(VideoCodecs),
21}
22
23#[derive(Clone, Debug, Eq, PartialEq)]
24pub struct Platforms {
25    pub comment: Option<String>,
26    pub contents: Vec<PlatformsContent>,
27}
28
29#[derive(Clone, Debug, Eq, PartialEq)]
30pub enum PlatformsContent {
31    Platform(Platform),
32}
33
34#[derive(Clone, Debug, Eq, PartialEq)]
35pub struct Platform {
36    pub comment: Option<String>,
37    pub name: Option<String>,
38    pub protect: Option<String>,
39}
40
41#[derive(Clone, Debug, Eq, PartialEq)]
42pub struct Tags {
43    pub comment: Option<String>,
44    pub contents: Vec<TagsContent>,
45}
46
47#[derive(Clone, Debug, Eq, PartialEq)]
48pub enum TagsContent {
49    Tag(Tag),
50}
51
52#[derive(Clone, Debug, Eq, PartialEq)]
53pub struct Tag {
54    pub author: Option<String>,
55    pub contact: Option<String>,
56    pub name: Option<String>,
57}
58
59#[derive(Clone, Debug, Eq, PartialEq)]
60pub struct Types {
61    pub comment: Option<String>,
62    pub contents: Vec<TypesContent>,
63}
64
65#[derive(Clone, Debug, Eq, PartialEq)]
66pub enum TypesContent {
67    Comment(String),
68    Type(Type),
69}
70
71#[derive(Clone, Debug, Eq, PartialEq)]
72pub struct Type {
73    pub alias: Option<String>,
74    pub allowduplicate: Option<String>,
75    pub api: Option<String>,
76    pub bitvalues: Option<String>,
77    pub category: Option<String>,
78    pub comment: Option<String>,
79    pub name: Option<String>,
80    pub objtypeenum: Option<String>,
81    pub parent: Option<String>,
82    pub requiredlimittype: Option<String>,
83    pub requires: Option<String>,
84    pub returnedonly: Option<String>,
85    pub structextends: Option<String>,
86    pub contents: Vec<TypeContent>,
87}
88
89#[derive(Clone, Debug, Eq, PartialEq)]
90pub enum TypeContent {
91    Comment(String),
92    Text(String),
93    Type(String),
94    Name(String),
95    Member(Member),
96    Proto(Proto),
97    Param(Param),
98}
99
100#[derive(Clone, Debug, Eq, PartialEq)]
101pub struct Member {
102    pub altlen: Option<String>,
103    pub api: Option<String>,
104    pub deprecated: Option<String>,
105    pub externsync: Option<String>,
106    pub featurelink: Option<String>,
107    pub len: Option<String>,
108    pub limittype: Option<String>,
109    pub noautovalidity: Option<String>,
110    pub objecttype: Option<String>,
111    pub optional: Option<String>,
112    pub selection: Option<String>,
113    pub selector: Option<String>,
114    pub values: Option<String>,
115    pub contents: Vec<MemberContent>,
116}
117
118#[derive(Clone, Debug, Eq, PartialEq)]
119pub enum MemberContent {
120    Comment(String),
121    Text(String),
122    Type(String),
123    Name(String),
124    Enum(String),
125}
126
127#[derive(Clone, Debug, Eq, PartialEq)]
128pub struct Enums {
129    pub bitwidth: Option<String>,
130    pub comment: Option<String>,
131    pub name: Option<String>,
132    pub typ: Option<String>,
133    pub contents: Vec<EnumsContent>,
134}
135
136#[derive(Clone, Debug, Eq, PartialEq)]
137pub enum EnumsContent {
138    Comment(String),
139    Enum(Enum),
140    Unused(Unused),
141}
142
143#[derive(Clone, Debug, Eq, PartialEq)]
144pub struct Enum {
145    pub alias: Option<String>,
146    pub api: Option<String>,
147    pub bitpos: Option<String>,
148    pub comment: Option<String>,
149    pub deprecated: Option<String>,
150    pub name: Option<String>,
151    pub typ: Option<String>,
152    pub value: Option<String>,
153}
154
155#[derive(Clone, Debug, Eq, PartialEq)]
156pub struct Unused {
157    pub comment: Option<String>,
158    pub start: Option<String>,
159}
160
161#[derive(Clone, Debug, Eq, PartialEq)]
162pub struct Commands {
163    pub comment: Option<String>,
164    pub contents: Vec<CommandsContent>,
165}
166
167#[derive(Clone, Debug, Eq, PartialEq)]
168pub enum CommandsContent {
169    Command(Command),
170}
171
172#[derive(Clone, Debug, Eq, PartialEq)]
173pub struct Command {
174    pub alias: Option<String>,
175    pub allownoqueues: Option<String>,
176    pub api: Option<String>,
177    pub cmdbufferlevel: Option<String>,
178    pub comment: Option<String>,
179    pub conditionalrendering: Option<String>,
180    pub errorcodes: Option<String>,
181    pub export: Option<String>,
182    pub name: Option<String>,
183    pub queues: Option<String>,
184    pub renderpass: Option<String>,
185    pub successcodes: Option<String>,
186    pub tasks: Option<String>,
187    pub videocoding: Option<String>,
188    pub contents: Vec<CommandContent>,
189}
190
191#[derive(Clone, Debug, Eq, PartialEq)]
192pub enum CommandContent {
193    Proto(Proto),
194    Param(Param),
195    ImplicitExternSyncParams(ImplicitExternSyncParams),
196}
197
198#[derive(Clone, Debug, Eq, PartialEq)]
199pub struct Proto {
200    pub contents: Vec<ProtoContent>,
201}
202
203#[derive(Clone, Debug, Eq, PartialEq)]
204pub enum ProtoContent {
205    Text(String),
206    Type(String),
207    Name(String),
208}
209
210#[derive(Clone, Debug, Eq, PartialEq)]
211pub struct Param {
212    pub altlen: Option<String>,
213    pub api: Option<String>,
214    pub externsync: Option<String>,
215    pub len: Option<String>,
216    pub noautovalidity: Option<String>,
217    pub objecttype: Option<String>,
218    pub optional: Option<String>,
219    pub stride: Option<String>,
220    pub validstructs: Option<String>,
221    pub contents: Vec<ParamContent>,
222}
223
224#[derive(Clone, Debug, Eq, PartialEq)]
225pub enum ParamContent {
226    Text(String),
227    Type(String),
228    Name(String),
229}
230
231#[derive(Clone, Debug, Eq, PartialEq)]
232pub struct ImplicitExternSyncParams {
233    pub contents: Vec<ImplicitExternSyncParamsContent>,
234}
235
236#[derive(Clone, Debug, Eq, PartialEq)]
237pub enum ImplicitExternSyncParamsContent {
238    Param(String),
239}
240
241#[derive(Clone, Debug, Eq, PartialEq)]
242pub struct Feature {
243    pub api: Option<String>,
244    pub apitype: Option<String>,
245    pub comment: Option<String>,
246    pub depends: Option<String>,
247    pub name: Option<String>,
248    pub number: Option<String>,
249    pub contents: Vec<FeatureContent>,
250}
251
252#[derive(Clone, Debug, Eq, PartialEq)]
253pub enum FeatureContent {
254    Require(Require),
255    Deprecate(Deprecate),
256    Remove(Remove),
257}
258
259#[derive(Clone, Debug, Eq, PartialEq)]
260pub struct Extensions {
261    pub comment: Option<String>,
262    pub contents: Vec<ExtensionsContent>,
263}
264
265#[derive(Clone, Debug, Eq, PartialEq)]
266pub enum ExtensionsContent {
267    Extension(Extension),
268}
269
270#[derive(Clone, Debug, Eq, PartialEq)]
271pub struct Extension {
272    pub author: Option<String>,
273    pub comment: Option<String>,
274    pub contact: Option<String>,
275    pub depends: Option<String>,
276    pub deprecatedby: Option<String>,
277    pub name: Option<String>,
278    pub nofeatures: Option<String>,
279    pub number: Option<String>,
280    pub obsoletedby: Option<String>,
281    pub platform: Option<String>,
282    pub promotedto: Option<String>,
283    pub provisional: Option<String>,
284    pub ratified: Option<String>,
285    pub sortorder: Option<String>,
286    pub specialuse: Option<String>,
287    pub supported: Option<String>,
288    pub typ: Option<String>,
289    pub contents: Vec<ExtensionContent>,
290}
291
292#[derive(Clone, Debug, Eq, PartialEq)]
293pub enum ExtensionContent {
294    Require(Require),
295    Deprecate(Deprecate),
296    Remove(Remove),
297}
298
299#[derive(Clone, Debug, Eq, PartialEq)]
300pub struct Require {
301    pub api: Option<String>,
302    pub comment: Option<String>,
303    pub depends: Option<String>,
304    pub contents: Vec<RequireContent>,
305}
306
307#[derive(Clone, Debug, Eq, PartialEq)]
308pub enum RequireContent {
309    Comment(String),
310    Type(GeneralRef),
311    Enum(RequireEnum),
312    Command(GeneralRef),
313    Feature(FeatureRef),
314}
315
316#[derive(Clone, Debug, Eq, PartialEq)]
317pub struct RequireEnum {
318    pub alias: Option<String>,
319    pub api: Option<String>,
320    pub bitpos: Option<String>,
321    pub comment: Option<String>,
322    pub deprecated: Option<String>,
323    pub dir: Option<String>,
324    pub extends: Option<String>,
325    pub extnumber: Option<String>,
326    pub name: Option<String>,
327    pub offset: Option<String>,
328    pub protect: Option<String>,
329    pub typ: Option<String>,
330    pub value: Option<String>,
331}
332
333#[derive(Clone, Debug, Eq, PartialEq)]
334pub struct Deprecate {
335    pub explanationlink: Option<String>,
336    pub contents: Vec<DeprecateContent>,
337}
338
339#[derive(Clone, Debug, Eq, PartialEq)]
340pub enum DeprecateContent {
341    Type(GeneralRef),
342    Command(GeneralRef),
343}
344
345#[derive(Clone, Debug, Eq, PartialEq)]
346pub struct Remove {
347    pub comment: Option<String>,
348    pub reasonlink: Option<String>,
349    pub contents: Vec<RemoveContent>,
350}
351
352#[derive(Clone, Debug, Eq, PartialEq)]
353pub enum RemoveContent {
354    Type(GeneralRef),
355    Enum(GeneralRef),
356    Command(GeneralRef),
357    Feature(FeatureRef),
358}
359
360#[derive(Clone, Debug, Eq, PartialEq)]
361pub struct GeneralRef {
362    pub comment: Option<String>,
363    pub name: Option<String>,
364}
365
366#[derive(Clone, Debug, Eq, PartialEq)]
367pub struct FeatureRef {
368    pub name: Option<String>,
369    pub struc: Option<String>,
370}
371
372#[derive(Clone, Debug, Eq, PartialEq)]
373pub struct Formats {
374    pub contents: Vec<FormatsContent>,
375}
376
377#[derive(Clone, Debug, Eq, PartialEq)]
378pub enum FormatsContent {
379    Format(Format),
380}
381
382#[derive(Clone, Debug, Eq, PartialEq)]
383pub struct Format {
384    pub block_extent: Option<String>,
385    pub block_size: Option<String>,
386    pub chroma: Option<String>,
387    pub class: Option<String>,
388    pub compressed: Option<String>,
389    pub name: Option<String>,
390    pub packed: Option<String>,
391    pub texels_per_block: Option<String>,
392    pub contents: Vec<FormatContent>,
393}
394
395#[derive(Clone, Debug, Eq, PartialEq)]
396pub enum FormatContent {
397    Component(Component),
398    Plane(Plane),
399    SpirvImageFormat(SpirvImageFormat),
400}
401
402#[derive(Clone, Debug, Eq, PartialEq)]
403pub struct Component {
404    pub bits: Option<String>,
405    pub name: Option<String>,
406    pub numeric_format: Option<String>,
407    pub plane_index: Option<String>,
408}
409
410#[derive(Clone, Debug, Eq, PartialEq)]
411pub struct Plane {
412    pub compatible: Option<String>,
413    pub height_divisor: Option<String>,
414    pub index: Option<String>,
415    pub width_divisor: Option<String>,
416}
417
418#[derive(Clone, Debug, Eq, PartialEq)]
419pub struct SpirvImageFormat {
420    pub name: Option<String>,
421}
422
423#[derive(Clone, Debug, Eq, PartialEq)]
424pub struct SpirvExtensions {
425    pub comment: Option<String>,
426    pub contents: Vec<SpirvExtensionsContent>,
427}
428
429#[derive(Clone, Debug, Eq, PartialEq)]
430pub enum SpirvExtensionsContent {
431    SpirvExtension(SpirvExtension),
432}
433
434#[derive(Clone, Debug, Eq, PartialEq)]
435pub struct SpirvExtension {
436    pub name: Option<String>,
437    pub contents: Vec<SpirvExtensionContent>,
438}
439
440#[derive(Clone, Debug, Eq, PartialEq)]
441pub enum SpirvExtensionContent {
442    Enable(SpirvExtensionEnable),
443}
444
445#[derive(Clone, Debug, Eq, PartialEq)]
446pub struct SpirvExtensionEnable {
447    pub extension: Option<String>,
448    pub version: Option<String>,
449}
450
451#[derive(Clone, Debug, Eq, PartialEq)]
452pub struct SpirvCapabilities {
453    pub comment: Option<String>,
454    pub contents: Vec<SpirvCapabilitiesContent>,
455}
456
457#[derive(Clone, Debug, Eq, PartialEq)]
458pub enum SpirvCapabilitiesContent {
459    SpirvCapability(SpirvCapability),
460}
461
462#[derive(Clone, Debug, Eq, PartialEq)]
463pub struct SpirvCapability {
464    pub name: Option<String>,
465    pub contents: Vec<SpirvCapabilityContent>,
466}
467
468#[derive(Clone, Debug, Eq, PartialEq)]
469pub enum SpirvCapabilityContent {
470    Enable(SpirvCapabilityEnable),
471}
472
473#[derive(Clone, Debug, Eq, PartialEq)]
474pub struct SpirvCapabilityEnable {
475    pub alias: Option<String>,
476    pub extension: Option<String>,
477    pub feature: Option<String>,
478    pub member: Option<String>,
479    pub property: Option<String>,
480    pub requires: Option<String>,
481    pub struc: Option<String>,
482    pub value: Option<String>,
483    pub version: Option<String>,
484}
485
486#[derive(Clone, Debug, Eq, PartialEq)]
487pub struct Syncs {
488    pub comment: Option<String>,
489    pub contents: Vec<SyncsContent>,
490}
491
492#[derive(Clone, Debug, Eq, PartialEq)]
493pub enum SyncsContent {
494    SyncStage(SyncStage),
495    SyncAccess(SyncAccess),
496    SyncPipeline(SyncPipeline),
497}
498
499#[derive(Clone, Debug, Eq, PartialEq)]
500pub struct SyncStage {
501    pub alias: Option<String>,
502    pub name: Option<String>,
503    pub contents: Vec<SyncStageContent>,
504}
505
506#[derive(Clone, Debug, Eq, PartialEq)]
507pub enum SyncStageContent {
508    SyncSupport(SyncStageSupport),
509    SyncEquivalent(SyncStageEquivalent),
510}
511
512#[derive(Clone, Debug, Eq, PartialEq)]
513pub struct SyncStageSupport {
514    pub queues: Option<String>,
515}
516
517#[derive(Clone, Debug, Eq, PartialEq)]
518pub struct SyncStageEquivalent {
519    pub stage: Option<String>,
520}
521
522#[derive(Clone, Debug, Eq, PartialEq)]
523pub struct SyncAccess {
524    pub alias: Option<String>,
525    pub name: Option<String>,
526    pub contents: Vec<SyncAccessContent>,
527}
528
529#[derive(Clone, Debug, Eq, PartialEq)]
530pub enum SyncAccessContent {
531    Comment(String),
532    SyncSupport(SyncAccessSupport),
533    SyncEquivalent(SyncAccessEquivalent),
534}
535
536#[derive(Clone, Debug, Eq, PartialEq)]
537pub struct SyncAccessSupport {
538    pub stage: Option<String>,
539}
540
541#[derive(Clone, Debug, Eq, PartialEq)]
542pub struct SyncAccessEquivalent {
543    pub access: Option<String>,
544}
545
546#[derive(Clone, Debug, Eq, PartialEq)]
547pub struct SyncPipeline {
548    pub depends: Option<String>,
549    pub name: Option<String>,
550    pub contents: Vec<SyncPipelineContent>,
551}
552
553#[derive(Clone, Debug, Eq, PartialEq)]
554pub enum SyncPipelineContent {
555    SyncPipelineStage(SyncPipelineStage),
556}
557
558#[derive(Clone, Debug, Eq, PartialEq)]
559pub struct SyncPipelineStage {
560    pub before: Option<String>,
561    pub order: Option<String>,
562    pub contents: String,
563}
564
565#[derive(Clone, Debug, Eq, PartialEq)]
566pub struct VideoCodecs {
567    pub contents: Vec<VideoCodecsContent>,
568}
569
570#[derive(Clone, Debug, Eq, PartialEq)]
571pub enum VideoCodecsContent {
572    VideoCodec(VideoCodec),
573}
574
575#[derive(Clone, Debug, Eq, PartialEq)]
576pub struct VideoCodec {
577    pub extend: Option<String>,
578    pub name: Option<String>,
579    pub value: Option<String>,
580    pub contents: Vec<VideoCodecContent>,
581}
582
583#[derive(Clone, Debug, Eq, PartialEq)]
584pub enum VideoCodecContent {
585    VideoCapabilities(VideoCapabilities),
586    VideoFormat(VideoFormat),
587    VideoProfiles(VideoProfiles),
588}
589
590#[derive(Clone, Debug, Eq, PartialEq)]
591pub struct VideoCapabilities {
592    pub struc: Option<String>,
593}
594
595#[derive(Clone, Debug, Eq, PartialEq)]
596pub struct VideoFormat {
597    pub extend: Option<String>,
598    pub name: Option<String>,
599    pub usage: Option<String>,
600    pub contents: Vec<VideoFormatContent>,
601}
602
603#[derive(Clone, Debug, Eq, PartialEq)]
604pub enum VideoFormatContent {
605    VideoRequireCapabilities(VideoRequireCapabilities),
606    VideoFormatProperties(VideoFormatProperties),
607}
608
609#[derive(Clone, Debug, Eq, PartialEq)]
610pub struct VideoRequireCapabilities {
611    pub member: Option<String>,
612    pub struc: Option<String>,
613    pub value: Option<String>,
614}
615
616#[derive(Clone, Debug, Eq, PartialEq)]
617pub struct VideoFormatProperties {
618    pub struc: Option<String>,
619}
620
621#[derive(Clone, Debug, Eq, PartialEq)]
622pub struct VideoProfiles {
623    pub struc: Option<String>,
624    pub contents: Vec<VideoProfilesContent>,
625}
626
627#[derive(Clone, Debug, Eq, PartialEq)]
628pub enum VideoProfilesContent {
629    VideoProfileMember(VideoProfileMember),
630}
631
632#[derive(Clone, Debug, Eq, PartialEq)]
633pub struct VideoProfileMember {
634    pub name: Option<String>,
635    pub contents: Vec<VideoProfileMemberContent>,
636}
637
638#[derive(Clone, Debug, Eq, PartialEq)]
639pub enum VideoProfileMemberContent {
640    VideoProfile(VideoProfile),
641}
642
643#[derive(Clone, Debug, Eq, PartialEq)]
644pub struct VideoProfile {
645    pub name: Option<String>,
646    pub value: Option<String>,
647}