summaryrefslogtreecommitdiff
path: root/vulkan/scripts/vk.py
blob: 983e0dc296bae935c11f21a3086ec8f4cc354122 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
import ctypes
import dataclasses
import enum
from typing import List

dataclass = dataclasses.dataclass
Enum = enum.Enum

# TODO(b/401184058): Automate this file for generating the vulkan structs graph from vk.xml
VK_UUID_SIZE = 16
VK_LUID_SIZE = 16

VkImageLayout = Enum
uint8_t = ctypes.c_uint8
uint32_t = ctypes.c_uint32
VkFlags = uint32_t
VkMemoryPropertyFlags = VkFlags
VkMemoryHeapFlags = VkFlags
int32_t = int
uint64_t = ctypes.c_uint64
VkBool32 = bool
VkDeviceSize = ctypes.c_uint64
size_t = int
VkSampleCountFlags = ctypes.c_uint32
VkFormatFeatureFlags = ctypes.c_uint32
VkQueueFlags = ctypes.c_uint32
VkShaderStageFlags = ctypes.c_uint32
VkSubgroupFeatureFlags = ctypes.c_uint32
VkResolveModeFlags = ctypes.c_uint32
float_t = ctypes.c_float
VkShaderFloatControlsIndependence = Enum
VkPointClippingBehavior = Enum
VkPhysicalDeviceType = Enum
VkDriverId = Enum
VkPipelineRobustnessBufferBehavior = Enum


@dataclass
class ConformanceVersion:
  major: uint8_t
  minor: uint8_t
  subminor: uint8_t
  patch: uint8_t


@dataclass
class VkExtent3D:
  width: uint32_t
  height: uint32_t
  depth: uint32_t


@dataclass
class VkPhysicalDeviceLimits:
  maxImageDimension1D: uint32_t
  maxImageDimension2D: uint32_t
  maxImageDimension3D: uint32_t
  maxImageDimensionCube: uint32_t
  maxImageArrayLayers: uint32_t
  maxTexelBufferElements: uint32_t
  maxUniformBufferRange: uint32_t
  maxStorageBufferRange: uint32_t
  maxPushConstantsSize: uint32_t
  maxMemoryAllocationCount: uint32_t
  maxSamplerAllocationCount: uint32_t
  bufferImageGranularity: VkDeviceSize
  sparseAddressSpaceSize: VkDeviceSize
  maxBoundDescriptorSets: uint32_t
  maxPerStageDescriptorSamplers: uint32_t
  maxPerStageDescriptorUniformBuffers: uint32_t
  maxPerStageDescriptorStorageBuffers: uint32_t
  maxPerStageDescriptorSampledImages: uint32_t
  maxPerStageDescriptorStorageImages: uint32_t
  maxPerStageDescriptorInputAttachments: uint32_t
  maxPerStageResources: uint32_t
  maxDescriptorSetSamplers: uint32_t
  maxDescriptorSetUniformBuffers: uint32_t
  maxDescriptorSetUniformBuffersDynamic: uint32_t
  maxDescriptorSetStorageBuffers: uint32_t
  maxDescriptorSetStorageBuffersDynamic: uint32_t
  maxDescriptorSetSampledImages: uint32_t
  maxDescriptorSetStorageImages: uint32_t
  maxDescriptorSetInputAttachments: uint32_t
  maxVertexInputAttributes: uint32_t
  maxVertexInputBindings: uint32_t
  maxVertexInputAttributeOffset: uint32_t
  maxVertexInputBindingStride: uint32_t
  maxVertexOutputComponents: uint32_t
  maxTessellationGenerationLevel: uint32_t
  maxTessellationPatchSize: uint32_t
  maxTessellationControlPerVertexInputComponents: uint32_t
  maxTessellationControlPerVertexOutputComponents: uint32_t
  maxTessellationControlPerPatchOutputComponents: uint32_t
  maxTessellationControlTotalOutputComponents: uint32_t
  maxTessellationEvaluationInputComponents: uint32_t
  maxTessellationEvaluationOutputComponents: uint32_t
  maxGeometryShaderInvocations: uint32_t
  maxGeometryInputComponents: uint32_t
  maxGeometryOutputComponents: uint32_t
  maxGeometryOutputVertices: uint32_t
  maxGeometryTotalOutputComponents: uint32_t
  maxFragmentInputComponents: uint32_t
  maxFragmentOutputAttachments: uint32_t
  maxFragmentDualSrcAttachments: uint32_t
  maxFragmentCombinedOutputResources: uint32_t
  maxComputeSharedMemorySize: uint32_t
  maxComputeWorkGroupCount: uint32_t*3
  maxComputeWorkGroupInvocations: uint32_t
  maxComputeWorkGroupSize: uint32_t*3
  subPixelPrecisionBits: uint32_t
  subTexelPrecisionBits: uint32_t
  mipmapPrecisionBits: uint32_t
  maxDrawIndexedIndexValue: uint32_t
  maxDrawIndirectCount: uint32_t
  maxSamplerLodBias: float
  maxSamplerAnisotropy: float
  maxViewports: uint32_t
  maxViewportDimensions: uint32_t*2
  viewportBoundsRange: float_t*2
  viewportSubPixelBits: uint32_t
  minMemoryMapAlignment: size_t
  minTexelBufferOffsetAlignment: VkDeviceSize
  minUniformBufferOffsetAlignment: VkDeviceSize
  minStorageBufferOffsetAlignment: VkDeviceSize
  minTexelOffset: int32_t
  maxTexelOffset: uint32_t
  minTexelGatherOffset: int32_t
  maxTexelGatherOffset: uint32_t
  minInterpolationOffset: float
  maxInterpolationOffset: float
  subPixelInterpolationOffsetBits: uint32_t
  maxFramebufferWidth: uint32_t
  maxFramebufferHeight: uint32_t
  maxFramebufferLayers: uint32_t
  framebufferColorSampleCounts: VkSampleCountFlags
  framebufferDepthSampleCounts: VkSampleCountFlags
  framebufferStencilSampleCounts: VkSampleCountFlags
  framebufferNoAttachmentsSampleCounts: VkSampleCountFlags
  maxColorAttachments: uint32_t
  sampledImageColorSampleCounts: VkSampleCountFlags
  sampledImageIntegerSampleCounts: VkSampleCountFlags
  sampledImageDepthSampleCounts: VkSampleCountFlags
  sampledImageStencilSampleCounts: VkSampleCountFlags
  storageImageSampleCounts: VkSampleCountFlags
  maxSampleMaskWords: uint32_t
  timestampComputeAndGraphics: VkBool32
  timestampPeriod: float
  maxClipDistances: uint32_t
  maxCullDistances: uint32_t
  maxCombinedClipAndCullDistances: uint32_t
  discreteQueuePriorities: uint32_t
  pointSizeRange: float_t*2
  lineWidthRange: float_t*2
  pointSizeGranularity: float
  lineWidthGranularity: float
  strictLines: VkBool32
  standardSampleLocations: VkBool32
  optimalBufferCopyOffsetAlignment: VkDeviceSize
  optimalBufferCopyRowPitchAlignment: VkDeviceSize
  nonCoherentAtomSize: VkDeviceSize


@dataclass
class VkPhysicalDeviceShaderDrawParameterFeatures:
  shaderDrawParameters: VkBool32


@dataclass
class VkExtensionProperties:
  extensionName: str
  specVersion: uint32_t


@dataclass
class VkFormatProperties:
  linearTilingFeatures: VkFormatFeatureFlags
  optimalTilingFeatures: VkFormatFeatureFlags
  bufferFeatures: VkFormatFeatureFlags


@dataclass
class VkLayerProperties:
  layerName: str
  specVersion: uint32_t
  implementationVersion: uint32_t
  description: str


@dataclass
class VkQueueFamilyProperties:
  queueFlags: VkQueueFlags
  queueCount: uint32_t
  timestampValidBits: uint32_t
  minImageTransferGranularity: VkExtent3D


@dataclass
class VkPhysicalDeviceSparseProperties:
  residencyStandard2DBlockShape: VkBool32
  residencyStandard2DMultisampleBlockShape: VkBool32
  residencyStandard3DBlockShape: VkBool32
  residencyAlignedMipSize: VkBool32
  residencyNonResidentStrict: VkBool32


@dataclass
class VkImageFormatProperties:
  maxExtent: VkExtent3D
  maxMipLevels: uint32_t
  maxArrayLayers: uint32_t
  sampleCounts: VkSampleCountFlags
  maxResourceSize: VkDeviceSize


@dataclass
class VkPhysicalDeviceSamplerYcbcrConversionFeatures:
  samplerYcbcrConversion: VkBool32


@dataclass
class VkPhysicalDeviceIDProperties:
  deviceUUID: uint8_t*VK_UUID_SIZE
  driverUUID: uint8_t*VK_UUID_SIZE
  deviceLUID: uint8_t*VK_LUID_SIZE
  deviceNodeMask: uint32_t
  deviceLUIDValid: VkBool32


@dataclass
class VkPhysicalDeviceMaintenance3Properties:
  maxPerSetDescriptors: uint32_t
  maxMemoryAllocationSize: VkDeviceSize


@dataclass
class VkPhysicalDevice16BitStorageFeatures:
  storageBuffer16BitAccess: VkBool32
  uniformAndStorageBuffer16BitAccess: VkBool32
  storagePushConstant16: VkBool32
  storageInputOutput16: VkBool32


@dataclass
class VkPhysicalDeviceMultiviewFeatures:
  multiview: VkBool32
  multiviewGeometryShader: VkBool32
  multiviewTessellationShader: VkBool32


@dataclass
class VkPhysicalDeviceSubgroupProperties:
  subgroupSize: uint32_t
  supportedStages: VkShaderStageFlags
  supportedOperations: VkSubgroupFeatureFlags
  quadOperationsInAllStages: VkBool32


@dataclass
class VkPhysicalDevicePointClippingProperties:
  pointClippingBehavior: VkPointClippingBehavior


@dataclass
class VkPhysicalDeviceMultiviewProperties:
  maxMultiviewViewCount: uint32_t
  maxMultiviewInstanceIndex: uint32_t


@dataclass
class VkMemoryType:
  propertyFlags: VkMemoryPropertyFlags
  heapIndex: uint32_t


@dataclass
class VkMemoryHeap:
  size: VkDeviceSize
  flags: VkMemoryHeapFlags


@dataclass
class VkPhysicalDeviceMemoryProperties:
  memoryTypeCount: uint32_t
  memoryTypes: List[VkMemoryType]
  memoryHeapCount: uint32_t
  memoryHeaps: List[VkMemoryHeap]


@dataclass
class VkPhysicalDeviceProperties:
  apiVersion: uint32_t
  driverVersion: uint32_t
  vendorID: uint32_t
  deviceID: uint32_t
  deviceType: VkPhysicalDeviceType
  deviceName: str
  pipelineCacheUUID: uint8_t
  limits: VkPhysicalDeviceLimits
  sparseProperties: VkPhysicalDeviceSparseProperties


@dataclass
class VkPhysicalDeviceFeatures:
  robustBufferAccess: VkBool32
  fullDrawIndexUint32: VkBool32
  imageCubeArray: VkBool32
  independentBlend: VkBool32
  geometryShader: VkBool32
  tessellationShader: VkBool32
  sampleRateShading: VkBool32
  dualSrcBlend: VkBool32
  logicOp: VkBool32
  multiDrawIndirect: VkBool32
  drawIndirectFirstInstance: VkBool32
  depthClamp: VkBool32
  depthBiasClamp: VkBool32
  fillModeNonSolid: VkBool32
  depthBounds: VkBool32
  wideLines: VkBool32
  largePoints: VkBool32
  alphaToOne: VkBool32
  multiViewport: VkBool32
  samplerAnisotropy: VkBool32
  textureCompressionETC2: VkBool32
  textureCompressionASTC_LDR: VkBool32
  textureCompressionBC: VkBool32
  occlusionQueryPrecise: VkBool32
  pipelineStatisticsQuery: VkBool32
  vertexPipelineStoresAndAtomics: VkBool32
  fragmentStoresAndAtomics: VkBool32
  shaderTessellationAndGeometryPointSize: VkBool32
  shaderImageGatherExtended: VkBool32
  shaderStorageImageExtendedFormats: VkBool32
  shaderStorageImageMultisample: VkBool32
  shaderStorageImageReadWithoutFormat: VkBool32
  shaderStorageImageWriteWithoutFormat: VkBool32
  shaderUniformBufferArrayDynamicIndexing: VkBool32
  shaderSampledImageArrayDynamicIndexing: VkBool32
  shaderStorageBufferArrayDynamicIndexing: VkBool32
  shaderStorageImageArrayDynamicIndexing: VkBool32
  shaderClipDistance: VkBool32
  shaderCullDistance: VkBool32
  shaderFloat64: VkBool32
  shaderInt64: VkBool32
  shaderInt16: VkBool32
  shaderResourceResidency: VkBool32
  shaderResourceMinLod: VkBool32
  sparseBinding: VkBool32
  sparseResidencyBuffer: VkBool32
  sparseResidencyImage2D: VkBool32
  sparseResidencyImage3D: VkBool32
  sparseResidency2Samples: VkBool32
  sparseResidency4Samples: VkBool32
  sparseResidency8Samples: VkBool32
  sparseResidency16Samples: VkBool32
  sparseResidencyAliased: VkBool32
  variableMultisampleRate: VkBool32
  inheritedQueries: VkBool32


@dataclass
class VkPhysicalDeviceShaderFloat16Int8Features:
  shaderFloat16: VkBool32
  shaderInt8: VkBool32


@dataclass
class VkPhysicalDeviceProtectedMemoryFeatures:
  protectedMemory: VkBool32


@dataclass
class VkPhysicalDeviceVariablePointersFeatures:
  variablePointersStorageBuffer: VkBool32
  variablePointers: VkBool32


@dataclass
class VkPhysicalDeviceImage2DViewOf3DFeaturesEXT:
  image2DViewOf3D: VkBool32
  sampler2DViewOf3D: VkBool32


@dataclass
class VkPhysicalDeviceCustomBorderColorFeaturesEXT:
  customBorderColors: VkBool32
  customBorderColorWithoutFormat: VkBool32


@dataclass
class VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT:
  primitiveTopologyListRestart: VkBool32
  primitiveTopologyPatchListRestart: VkBool32


@dataclass
class VkPhysicalDeviceProvokingVertexFeaturesEXT:
  provokingVertexLast: VkBool32
  transformFeedbackPreservesProvokingVertex: VkBool32


@dataclass
class VkPhysicalDeviceIndexTypeUint8Features:
  indexTypeUint8: VkBool32


@dataclass
class VkPhysicalDeviceVertexAttributeDivisorFeatures:
  vertexAttributeInstanceRateDivisor: VkBool32
  vertexAttributeInstanceRateZeroDivisor: VkBool32


@dataclass
class VkPhysicalDeviceTransformFeedbackFeaturesEXT:
  transformFeedback: VkBool32
  geometryStreams: VkBool32


@dataclass
class VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR:
  shaderSubgroupUniformControlFlow: VkBool32


@dataclass
class VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures:
  shaderSubgroupExtendedTypes: VkBool32


@dataclass
class VkPhysicalDevice8BitStorageFeatures:
  storageBuffer8BitAccess: VkBool32
  uniformAndStorageBuffer8BitAccess: VkBool32
  storagePushConstant8: VkBool32


@dataclass
class VkPhysicalDeviceShaderIntegerDotProductFeatures:
  shaderIntegerDotProduct: VkBool32


@dataclass
class VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG:
  relaxedLineRasterization: VkBool32


@dataclass
class VkPhysicalDeviceLineRasterizationFeatures:
  rectangularLines: VkBool32
  bresenhamLines: VkBool32
  smoothLines: VkBool32
  stippledRectangularLines: VkBool32
  stippledBresenhamLines: VkBool32
  stippledSmoothLines: VkBool32


@dataclass
class VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT:
  primitivesGeneratedQuery: VkBool32
  primitivesGeneratedQueryWithRasterizerDiscard: VkBool32
  primitivesGeneratedQueryWithNonZeroStreams: VkBool32


@dataclass
class VkPhysicalDeviceFloatControlsProperties:
  denormBehaviorIndependence : VkShaderFloatControlsIndependence
  roundingModeIndependence : VkShaderFloatControlsIndependence
  shaderSignedZeroInfNanPreserveFloat16 : VkBool32
  shaderSignedZeroInfNanPreserveFloat32 : VkBool32
  shaderSignedZeroInfNanPreserveFloat64 : VkBool32
  shaderDenormPreserveFloat16 : VkBool32
  shaderDenormPreserveFloat32 : VkBool32
  shaderDenormPreserveFloat64 : VkBool32
  shaderDenormFlushToZeroFloat16 : VkBool32
  shaderDenormFlushToZeroFloat32 : VkBool32
  shaderDenormFlushToZeroFloat64 : VkBool32
  shaderRoundingModeRTEFloat16 : VkBool32
  shaderRoundingModeRTEFloat32 : VkBool32
  shaderRoundingModeRTEFloat64 :VkBool32
  shaderRoundingModeRTZFloat16 : VkBool32
  shaderRoundingModeRTZFloat32 : VkBool32
  shaderRoundingModeRTZFloat64 : VkBool32


@dataclass
class VkPhysicalDeviceVulkan11Properties:
  deviceUUID : uint8_t*VK_UUID_SIZE
  driverUUID : uint8_t*VK_UUID_SIZE
  deviceLUID : uint8_t*VK_LUID_SIZE
  deviceNodeMask : uint32_t
  deviceLUIDValid : VkBool32
  subgroupSize : uint32_t
  subgroupSupportedStages : VkShaderStageFlags
  subgroupSupportedOperations : VkSubgroupFeatureFlags
  subgroupQuadOperationsInAllStages : VkBool32
  pointClippingBehavior : VkPointClippingBehavior
  maxMultiviewViewCount : uint32_t
  maxMultiviewInstanceIndex :uint32_t
  protectedNoFault : VkBool32
  maxPerSetDescriptors : uint32_t
  maxMemoryAllocationSize : VkDeviceSize


@dataclass
class VkPhysicalDeviceVulkan11Features:
  storageBuffer16BitAccess: VkBool32
  uniformAndStorageBuffer16BitAccess: VkBool32
  storagePushConstant16: VkBool32
  storageInputOutput16: VkBool32
  multiview: VkBool32
  multiviewGeometryShader: VkBool32
  multiviewTessellationShader: VkBool32
  variablePointersStorageBuffer: VkBool32
  variablePointers: VkBool32
  protectedMemory: VkBool32
  samplerYcbcrConversion: VkBool32
  shaderDrawParameters: VkBool32


@dataclass
class VkPhysicalDeviceVulkan12Properties:
  driverID: VkDriverId
  driverName: str
  driverInfo: str
  conformanceVersion: ConformanceVersion
  denormBehaviorIndependence: VkShaderFloatControlsIndependence
  roundingModeIndependence: VkShaderFloatControlsIndependence
  shaderSignedZeroInfNanPreserveFloat16: VkBool32
  shaderSignedZeroInfNanPreserveFloat32: VkBool32
  shaderSignedZeroInfNanPreserveFloat64: VkBool32
  shaderDenormPreserveFloat16: VkBool32
  shaderDenormPreserveFloat32: VkBool32
  shaderDenormPreserveFloat64: VkBool32
  shaderDenormFlushToZeroFloat16: VkBool32
  shaderDenormFlushToZeroFloat32: VkBool32
  shaderDenormFlushToZeroFloat64: VkBool32
  shaderRoundingModeRTEFloat16: VkBool32
  shaderRoundingModeRTEFloat32: VkBool32
  shaderRoundingModeRTEFloat64: VkBool32
  shaderRoundingModeRTZFloat16: VkBool32
  shaderRoundingModeRTZFloat32: VkBool32
  shaderRoundingModeRTZFloat64: VkBool32
  maxUpdateAfterBindDescriptorsInAllPools: uint32_t
  shaderUniformBufferArrayNonUniformIndexingNative: VkBool32
  shaderSampledImageArrayNonUniformIndexingNative: VkBool32
  shaderStorageBufferArrayNonUniformIndexingNative: VkBool32
  shaderStorageImageArrayNonUniformIndexingNative: VkBool32
  shaderInputAttachmentArrayNonUniformIndexingNative: VkBool32
  robustBufferAccessUpdateAfterBind: VkBool32
  quadDivergentImplicitLod: VkBool32
  maxPerStageDescriptorUpdateAfterBindSamplers: uint32_t
  maxPerStageDescriptorUpdateAfterBindUniformBuffers: uint32_t
  maxPerStageDescriptorUpdateAfterBindStorageBuffers: uint32_t
  maxPerStageDescriptorUpdateAfterBindSampledImages: uint32_t
  maxPerStageDescriptorUpdateAfterBindStorageImages: uint32_t
  maxPerStageDescriptorUpdateAfterBindInputAttachments: uint32_t
  maxPerStageUpdateAfterBindResources: uint32_t
  maxDescriptorSetUpdateAfterBindSamplers: uint32_t
  maxDescriptorSetUpdateAfterBindUniformBuffers: uint32_t
  maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: uint32_t
  maxDescriptorSetUpdateAfterBindStorageBuffers: uint32_t
  maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: uint32_t
  maxDescriptorSetUpdateAfterBindSampledImages: uint32_t
  maxDescriptorSetUpdateAfterBindStorageImages: uint32_t
  maxDescriptorSetUpdateAfterBindInputAttachments: uint32_t
  supportedDepthResolveModes: VkResolveModeFlags
  supportedStencilResolveModes: VkResolveModeFlags
  independentResolveNone: VkBool32
  independentResolve: VkBool32
  filterMinmaxSingleComponentFormats: VkBool32
  filterMinmaxImageComponentMapping: VkBool32
  maxTimelineSemaphoreValueDifference: uint64_t
  framebufferIntegerColorSampleCounts: VkSampleCountFlags


@dataclass
class VkPhysicalDeviceVulkan12Features:
  samplerMirrorClampToEdge: VkBool32
  drawIndirectCount: VkBool32
  storageBuffer8BitAccess: VkBool32
  uniformAndStorageBuffer8BitAccess: VkBool32
  storagePushConstant8: VkBool32
  shaderBufferInt64Atomics: VkBool32
  shaderSharedInt64Atomics: VkBool32
  shaderFloat16: VkBool32
  shaderInt8: VkBool32
  descriptorIndexing: VkBool32
  shaderInputAttachmentArrayDynamicIndexing: VkBool32
  shaderUniformTexelBufferArrayDynamicIndexing: VkBool32
  shaderStorageTexelBufferArrayDynamicIndexing: VkBool32
  shaderUniformBufferArrayNonUniformIndexing: VkBool32
  shaderSampledImageArrayNonUniformIndexing: VkBool32
  shaderStorageBufferArrayNonUniformIndexing: VkBool32
  shaderStorageImageArrayNonUniformIndexing: VkBool32
  shaderInputAttachmentArrayNonUniformIndexing: VkBool32
  shaderUniformTexelBufferArrayNonUniformIndexing: VkBool32
  shaderStorageTexelBufferArrayNonUniformIndexing: VkBool32
  descriptorBindingUniformBufferUpdateAfterBind: VkBool32
  descriptorBindingSampledImageUpdateAfterBind: VkBool32
  descriptorBindingStorageImageUpdateAfterBind: VkBool32
  descriptorBindingStorageBufferUpdateAfterBind: VkBool32
  descriptorBindingUniformTexelBufferUpdateAfterBind: VkBool32
  descriptorBindingStorageTexelBufferUpdateAfterBind: VkBool32
  descriptorBindingUpdateUnusedWhilePending: VkBool32
  descriptorBindingPartiallyBound: VkBool32
  descriptorBindingVariableDescriptorCount: VkBool32
  runtimeDescriptorArray: VkBool32
  samplerFilterMinmax: VkBool32
  scalarBlockLayout: VkBool32
  imagelessFramebuffer: VkBool32
  uniformBufferStandardLayout: VkBool32
  shaderSubgroupExtendedTypes: VkBool32
  separateDepthStencilLayouts: VkBool32
  hostQueryReset: VkBool32
  timelineSemaphore: VkBool32
  bufferDeviceAddress: VkBool32
  bufferDeviceAddressCaptureReplay: VkBool32
  bufferDeviceAddressMultiDevice: VkBool32
  vulkanMemoryModel: VkBool32
  vulkanMemoryModelDeviceScope: VkBool32
  vulkanMemoryModelAvailabilityVisibilityChains: VkBool32
  shaderOutputViewportIndex: VkBool32
  shaderOutputLayer: VkBool32
  subgroupBroadcastDynamicId: VkBool32


@dataclass
class VkPhysicalDeviceVulkan13Properties:
  minSubgroupSize: uint32_t
  maxSubgroupSize: uint32_t
  maxComputeWorkgroupSubgroups: uint32_t
  requiredSubgroupSizeStages: VkShaderStageFlags
  maxInlineUniformBlockSize: uint32_t
  maxPerStageDescriptorInlineUniformBlocks: uint32_t
  maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks: uint32_t
  maxDescriptorSetInlineUniformBlocks: uint32_t
  maxDescriptorSetUpdateAfterBindInlineUniformBlocks: uint32_t
  maxInlineUniformTotalSize: uint32_t
  integerDotProduct8BitUnsignedAccelerated: VkBool32
  integerDotProduct8BitSignedAccelerated: VkBool32
  integerDotProduct8BitMixedSignednessAccelerated: VkBool32
  integerDotProduct4x8BitPackedUnsignedAccelerated: VkBool32
  integerDotProduct4x8BitPackedSignedAccelerated: VkBool32
  integerDotProduct4x8BitPackedMixedSignednessAccelerated: VkBool32
  integerDotProduct16BitUnsignedAccelerated: VkBool32
  integerDotProduct16BitSignedAccelerated: VkBool32
  integerDotProduct16BitMixedSignednessAccelerated: VkBool32
  integerDotProduct32BitUnsignedAccelerated: VkBool32
  integerDotProduct32BitSignedAccelerated: VkBool32
  integerDotProduct32BitMixedSignednessAccelerated: VkBool32
  integerDotProduct64BitUnsignedAccelerated: VkBool32
  integerDotProduct64BitSignedAccelerated: VkBool32
  integerDotProduct64BitMixedSignednessAccelerated: VkBool32
  integerDotProductAccumulatingSaturating8BitUnsignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating8BitSignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated: VkBool32
  integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated: VkBool32
  integerDotProductAccumulatingSaturating16BitUnsignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating16BitSignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated: VkBool32
  integerDotProductAccumulatingSaturating32BitUnsignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating32BitSignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated: VkBool32
  integerDotProductAccumulatingSaturating64BitUnsignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating64BitSignedAccelerated: VkBool32
  integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated: VkBool32
  storageTexelBufferOffsetAlignmentBytes: VkDeviceSize
  storageTexelBufferOffsetSingleTexelAlignment: VkBool32
  uniformTexelBufferOffsetAlignmentBytes: VkDeviceSize
  uniformTexelBufferOffsetSingleTexelAlignment: VkBool32
  maxBufferSize: VkDeviceSize


@dataclass
class VkPhysicalDeviceVulkan13Features:
  robustImageAccess: VkBool32
  inlineUniformBlock: VkBool32
  descriptorBindingInlineUniformBlockUpdateAfterBind: VkBool32
  pipelineCreationCacheControl: VkBool32
  privateData: VkBool32
  shaderDemoteToHelperInvocation: VkBool32
  shaderTerminateInvocation: VkBool32
  subgroupSizeControl: VkBool32
  computeFullSubgroups: VkBool32
  synchronization2: VkBool32
  textureCompressionASTC_HDR: VkBool32
  shaderZeroInitializeWorkgroupMemory: VkBool32
  dynamicRendering: VkBool32
  shaderIntegerDotProduct: VkBool32
  maintenance4: VkBool32


@dataclass
class VkPhysicalDeviceVulkan14Properties:
  lineSubPixelPrecisionBits: uint32_t
  maxVertexAttribDivisor: uint32_t
  supportsNonZeroFirstInstance: VkBool32
  maxPushDescriptors: uint32_t
  dynamicRenderingLocalReadDepthStencilAttachments: VkBool32
  dynamicRenderingLocalReadMultisampledAttachments: VkBool32
  earlyFragmentMultisampleCoverageAfterSampleCounting: VkBool32
  earlyFragmentSampleMaskTestBeforeSampleCounting: VkBool32
  depthStencilSwizzleOneSupport: VkBool32
  polygonModePointSize: VkBool32
  nonStrictSinglePixelWideLinesUseParallelogram: VkBool32
  nonStrictWideLinesUseParallelogram: VkBool32
  blockTexelViewCompatibleMultipleLayers: VkBool32
  maxCombinedImageSamplerDescriptorCount: uint32_t
  fragmentShadingRateClampCombinerInputs: VkBool32
  defaultRobustnessStorageBuffers: VkPipelineRobustnessBufferBehavior
  defaultRobustnessUniformBuffers: VkPipelineRobustnessBufferBehavior
  defaultRobustnessVertexInputs: VkPipelineRobustnessBufferBehavior
  defaultRobustnessImages: VkPipelineRobustnessBufferBehavior
  copySrcLayoutCount: uint32_t
  pCopySrcLayouts: List[VkImageLayout]
  copyDstLayoutCount: uint32_t
  pCopyDstLayouts: List[VkImageLayout]
  optimalTilingLayoutUUID: uint8_t
  identicalMemoryTypeRequirements: VkBool32


@dataclass
class VkPhysicalDeviceVulkan14Features:
  globalPriorityQuery: VkBool32
  shaderSubgroupRotate: VkBool32
  shaderSubgroupRotateClustered: VkBool32
  shaderFloatControls2: VkBool32
  shaderExpectAssume: VkBool32
  rectangularLines: VkBool32
  bresenhamLines: VkBool32
  smoothLines: VkBool32
  stippledRectangularLines: VkBool32
  stippledBresenhamLines: VkBool32
  stippledSmoothLines: VkBool32
  vertexAttributeInstanceRateDivisor: VkBool32
  vertexAttributeInstanceRateZeroDivisor: VkBool32
  indexTypeUint8: VkBool32
  dynamicRenderingLocalRead: VkBool32
  maintenance5: VkBool32
  maintenance6: VkBool32
  pipelineProtectedAccess: VkBool32
  pipelineRobustness: VkBool32
  hostImageCopy: VkBool32
  # pushDescriptor: bool


@dataclass
class VkPhysicalDeviceDriverProperties:
  driverID: VkDriverId
  driverName: str
  driverInfo: str
  conformanceVersion: ConformanceVersion

# Defining alias for structures
VkPhysicalDeviceLineRasterizationFeaturesEXT = VkPhysicalDeviceLineRasterizationFeatures
VkPhysicalDeviceLineRasterizationFeaturesKHR = VkPhysicalDeviceLineRasterizationFeatures
VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR = VkPhysicalDeviceShaderIntegerDotProductFeatures
VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures
VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR = VkPhysicalDeviceVertexAttributeDivisorFeatures
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = VkPhysicalDeviceVertexAttributeDivisorFeatures
VkPhysicalDeviceIndexTypeUint8FeaturesKHR = VkPhysicalDeviceIndexTypeUint8Features
VkPhysicalDeviceIndexTypeUint8FeaturesEXT = VkPhysicalDeviceIndexTypeUint8Features
VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures
VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures
VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures
VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features
VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features
VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties
VkPhysicalDeviceShaderDrawParametersFeatures = VkPhysicalDeviceShaderDrawParameterFeatures
VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties

# Defining dependency of structures on extensions
VULKAN_EXTENSIONS_AND_STRUCTS_MAPPING = {
  "extensions": {
    "VK_KHR_variable_pointers": [
      { "VkPhysicalDeviceVariablePointerFeaturesKHR": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES" },
      { "VkPhysicalDeviceVariablePointersFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"},
    ],
    "VK_KHR_shader_float16_int8": [
      { "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES" },
      {"VkPhysicalDeviceFloat16Int8FeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"},
    ],
    "VK_EXT_image_2d_view_of_3d" : [
      {"VkPhysicalDeviceImage2DViewOf3DFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"},
    ],
    "VK_EXT_custom_border_color" : [
      {"VkPhysicalDeviceCustomBorderColorFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"},
    ],
    "VK_EXT_primitive_topology_list_restart": [
      {"VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"},
    ],
    "VK_EXT_provoking_vertex" : [
      {"VkPhysicalDeviceProvokingVertexFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"},
    ],
    "VK_KHR_index_type_uint8" : [
      {"VkPhysicalDeviceIndexTypeUint8FeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES"},
    ],
    "VK_EXT_index_type_uint8"  : [
      {"VkPhysicalDeviceIndexTypeUint8FeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES"},
    ],
    "VK_KHR_vertex_attribute_divisor" : [
      {"VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES"},
    ],
    "VK_EXT_vertex_attribute_divisor" : [
      {"VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES"},
    ],
    "VK_EXT_transform_feedback" : [
      {"VkPhysicalDeviceTransformFeedbackFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"},
    ],
    "VK_KHR_shader_subgroup_uniform_control_flow" : [
      {"VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"},
    ],
    "VK_KHR_shader_subgroup_extended_types" : [
      {"VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"},
    ],
    "VK_KHR_8bit_storage" : [
      {"VkPhysicalDevice8BitStorageFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"},
    ],
    "VK_KHR_shader_integer_dot_product" : [
      {"VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"},
    ],
    "VK_IMG_relaxed_line_rasterization" : [
      {"VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG"},
    ],
    "VK_KHR_line_rasterization" : [
      {"VkPhysicalDeviceLineRasterizationFeaturesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES"},
    ],
    "VK_EXT_line_rasterization" : [
      {"VkPhysicalDeviceLineRasterizationFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES"},
    ],
    "VK_EXT_primitives_generated_query" : [
      {"VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"},
    ],
    "VK_KHR_shader_float_controls" : [
      {"VkPhysicalDeviceFloatControlsPropertiesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"},
    ],
    "VK_KHR_driver_properties" : [
      {"VkPhysicalDeviceDriverPropertiesKHR" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"},
    ]
  }
}

# Defining dependency of structures on vulkan cores
VULKAN_CORES_AND_STRUCTS_MAPPING = {
  "versions" : {
    "Core11" : [
      {"VkPhysicalDeviceVulkan11Properties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"},
      {"VkPhysicalDeviceVulkan11Features" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"},
    ],
    "Core12" : [
      {"VkPhysicalDeviceVulkan12Properties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"},
      {"VkPhysicalDeviceVulkan12Features" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"},
    ],
    "Core13" : [
      {"VkPhysicalDeviceVulkan13Properties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"},
      {"VkPhysicalDeviceVulkan13Features" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"},
    ],
    "Core14" : [
      {"VkPhysicalDeviceVulkan14Properties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES"},
      {"VkPhysicalDeviceVulkan14Features" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES"},
    ]
  }
}

# Defining map for list type members mapped to its size
LIST_TYPE_FIELD_AND_SIZE_MAPPING = {
  "pCopySrcLayouts": "copySrcLayoutCount",
  "pCopyDstLayouts": "copyDstLayoutCount",
  "memoryTypes": "memoryTypeCount",
  "memoryHeaps": "memoryHeapCount",
}

# Defining dependency of structures on vulkan api version
VULKAN_VERSIONS_AND_STRUCTS_MAPPING = {
  "VK_VERSION_1_0" : [
    {"VkPhysicalDeviceProperties" : "" },
    {"VkPhysicalDeviceFeatures" : ""},
    {"VkPhysicalDeviceMemoryProperties" : ""},
  ],
  "VK_VERSION_1_1" : [
    {"VkPhysicalDeviceSubgroupProperties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"},
    {"VkPhysicalDevicePointClippingProperties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"},
    {"VkPhysicalDeviceMultiviewProperties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"},
    {"VkPhysicalDeviceIDProperties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"},
    {"VkPhysicalDeviceMaintenance3Properties" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"},
    {"VkPhysicalDeviceMultiviewFeatures" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"},
    {"VkPhysicalDeviceVariablePointersFeatures" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"},
    {"VkPhysicalDeviceProtectedMemoryFeatures" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"},
    {"VkPhysicalDeviceSamplerYcbcrConversionFeatures" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"},
    {"VkPhysicalDeviceShaderDrawParameterFeatures" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"},
    {"VkPhysicalDevice16BitStorageFeatures" : "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"},
  ]
}

# List of structures that are not dependent on extensions
EXTENSION_INDEPENDENT_STRUCTS = [
  VkPhysicalDeviceProperties,
  VkPhysicalDeviceFeatures,
  VkPhysicalDeviceMemoryProperties,
  VkPhysicalDeviceSubgroupProperties,
  VkPhysicalDevicePointClippingProperties,
  VkPhysicalDeviceMultiviewProperties,
  VkPhysicalDeviceIDProperties,
  VkPhysicalDeviceMaintenance3Properties,
  VkPhysicalDevice16BitStorageFeatures,
  VkPhysicalDeviceMultiviewFeatures,
  VkPhysicalDeviceVariablePointersFeatures,
  VkPhysicalDeviceProtectedMemoryFeatures,
  VkPhysicalDeviceSamplerYcbcrConversionFeatures,
  VkPhysicalDeviceShaderDrawParameterFeatures,
]

# List of all the structures for vkjson
ALL_STRUCTS = [
  VkPhysicalDeviceFloatControlsPropertiesKHR,
  VkPhysicalDeviceProperties,
  VkPhysicalDeviceMemoryProperties,
  VkPhysicalDeviceSubgroupProperties,
  VkPhysicalDevicePointClippingProperties,
  VkPhysicalDeviceMultiviewProperties,
  VkPhysicalDeviceIDProperties,
  VkPhysicalDeviceMaintenance3Properties,
  VkPhysicalDeviceSparseProperties,
  VkImageFormatProperties,
  VkQueueFamilyProperties,
  VkExtensionProperties,
  VkLayerProperties,
  VkFormatProperties,
  VkPhysicalDeviceVariablePointerFeaturesKHR,
  VkPhysicalDeviceVariablePointersFeaturesKHR,
  VkPhysicalDeviceShaderFloat16Int8FeaturesKHR,
  VkPhysicalDeviceFloat16Int8FeaturesKHR,
  VkPhysicalDeviceImage2DViewOf3DFeaturesEXT,
  VkPhysicalDeviceCustomBorderColorFeaturesEXT,
  VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT,
  VkPhysicalDeviceProvokingVertexFeaturesEXT,
  VkPhysicalDeviceIndexTypeUint8FeaturesKHR,
  VkPhysicalDeviceIndexTypeUint8FeaturesEXT,
  VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR,
  VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT,
  VkPhysicalDeviceTransformFeedbackFeaturesEXT,
  VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR,
  VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR,
  VkPhysicalDevice8BitStorageFeaturesKHR,
  VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR,
  VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG,
  VkPhysicalDeviceLineRasterizationFeaturesKHR,
  VkPhysicalDeviceLineRasterizationFeaturesEXT,
  VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT,
  VkPhysicalDevice16BitStorageFeatures,
  VkPhysicalDeviceMultiviewFeatures,
  VkPhysicalDeviceProtectedMemoryFeatures,
  VkPhysicalDeviceSamplerYcbcrConversionFeatures,
  VkPhysicalDeviceShaderDrawParameterFeatures,
  VkPhysicalDeviceLimits,
  VkPhysicalDeviceFeatures,
  VkPhysicalDeviceVulkan11Properties,
  VkPhysicalDeviceVulkan11Features,
  VkPhysicalDeviceVulkan12Properties,
  VkPhysicalDeviceVulkan12Features,
  VkPhysicalDeviceVulkan13Properties,
  VkPhysicalDeviceVulkan13Features,
  VkPhysicalDeviceVulkan14Properties,
  VkPhysicalDeviceVulkan14Features,
  VkPhysicalDeviceDriverProperties,
]