Codegen of vkjson

The vkjson_generate.py script generates vkjson files from data in
vkjson_constants.py. While ideally vk.xml would serve as the source (a
future improvement), deriving vkjson_constants.py from vk.xml is a
separate task. To maintain concise CLs, this derivation will be
addressed in a separate CL. Adding symbols (features, properties,
extensions, limits) to vkjson is now straightforward. Simply define
their dependencies within vkjson_constants.py, and the script will
automatically update vkjson.h, vkjson.cc, and vkjson_instance.cc
accordingly.

Test: adb shell cmd gpu vkjson
Flag: NONE infeasible
Bug: b/401180969

Change-Id: I3652e80c465145e86cc4c25f79523a6dc2111d18

diff --git a/vulkan/scripts/vk.py b/vulkan/scripts/vk.py
new file mode 100644
index 0000000..983e0dc
--- /dev/null
+++ b/vulkan/scripts/vk.py
@@ -0,0 +1,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,
+]