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}