Update for Vulkan-Docs 1.4.316
This commit is contained in:
parent
75ad707a58
commit
b11eecd68f
21 changed files with 130348 additions and 165722 deletions
|
|
@ -9,7 +9,7 @@ import os
|
|||
import tempfile
|
||||
from vulkan_object import (VulkanObject,
|
||||
Extension, Version, Handle, Param, Queues, CommandScope, Command,
|
||||
EnumField, Enum, Flag, Bitmask, Member, Struct,
|
||||
EnumField, Enum, Flag, Bitmask, Flags, Member, Struct,
|
||||
FormatComponent, FormatPlane, Format,
|
||||
SyncSupport, SyncEquivalent, SyncStage, SyncAccess, SyncPipelineStage, SyncPipeline,
|
||||
SpirvEnables, Spirv)
|
||||
|
|
@ -146,9 +146,26 @@ class BaseGenerator(OutputGenerator):
|
|||
self.enumFieldAliasMap = dict()
|
||||
self.bitmaskAliasMap = dict()
|
||||
self.flagAliasMap = dict()
|
||||
self.flagsAliasMap = dict()
|
||||
self.structAliasMap = dict()
|
||||
self.handleAliasMap = dict()
|
||||
|
||||
# We track all enum constants and flag bits so that we can apply their aliases in the end
|
||||
self.enumFieldMap: dict[str, EnumField] = dict()
|
||||
self.flagMap: dict[str, Flag] = dict()
|
||||
|
||||
# De-aliases a definition name based on the specified alias map.
|
||||
# There are aliases of aliases.
|
||||
# e.g. VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR aliases
|
||||
# VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR which itself aliases
|
||||
# But it is also common for EXT types promoted to KHR then to core.
|
||||
# We should not make assumptions about the nesting level of aliases, instead we resolve any
|
||||
# level of alias aliasing.
|
||||
def dealias(self, name: str, aliasMap: dict):
|
||||
while name in aliasMap:
|
||||
name = aliasMap[name]
|
||||
return name
|
||||
|
||||
def write(self, data):
|
||||
# Prevents having to check before writing
|
||||
if data is not None and data != "":
|
||||
|
|
@ -212,7 +229,7 @@ class BaseGenerator(OutputGenerator):
|
|||
|
||||
command = self.vk.commands[commandName]
|
||||
# Make sure list is unique
|
||||
command.extensions.extend([extension] if extension not in command.extensions else [])
|
||||
command.extensions.extend([extension.name] if extension.name not in command.extensions else [])
|
||||
extension.commands.extend([command] if command not in extension.commands else [])
|
||||
|
||||
# While genGroup() will call twice with aliased value, it does not provide all the information we need
|
||||
|
|
@ -220,30 +237,40 @@ class BaseGenerator(OutputGenerator):
|
|||
for required in dict:
|
||||
# group can be a Enum or Bitmask
|
||||
for group in dict[required]:
|
||||
if group in self.vk.handles:
|
||||
handle = self.vk.handles[group]
|
||||
# Make sure list is unique
|
||||
handle.extensions.extend([extension.name] if extension.name not in handle.extensions else [])
|
||||
extension.handles[group].extend([handle] if handle not in extension.handles[group] else [])
|
||||
if group in self.vk.enums:
|
||||
if group not in extension.enumFields:
|
||||
extension.enumFields[group] = [] # Dict needs init
|
||||
enum = self.vk.enums[group]
|
||||
# Need to convert all alias so they match what is in EnumField
|
||||
enumList = list(map(lambda x: x if x not in self.enumFieldAliasMap else self.enumFieldAliasMap[x], dict[required][group]))
|
||||
enumList = list(map(lambda x: x if x not in self.enumFieldAliasMap else self.dealias(x, self.enumFieldAliasMap), dict[required][group]))
|
||||
|
||||
for enumField in [x for x in enum.fields if x.name in enumList]:
|
||||
# Make sure list is unique
|
||||
enum.fieldExtensions.extend([extension] if extension not in enum.fieldExtensions else [])
|
||||
enumField.extensions.extend([extension] if extension not in enumField.extensions else [])
|
||||
enum.fieldExtensions.extend([extension.name] if extension.name not in enum.fieldExtensions else [])
|
||||
enumField.extensions.extend([extension.name] if extension.name not in enumField.extensions else [])
|
||||
extension.enumFields[group].extend([enumField] if enumField not in extension.enumFields[group] else [])
|
||||
if group in self.vk.bitmasks:
|
||||
if group not in extension.flags:
|
||||
extension.flags[group] = [] # Dict needs init
|
||||
if group not in extension.flagBits:
|
||||
extension.flagBits[group] = [] # Dict needs init
|
||||
bitmask = self.vk.bitmasks[group]
|
||||
# Need to convert all alias so they match what is in Flags
|
||||
flagList = list(map(lambda x: x if x not in self.flagAliasMap else self.flagAliasMap[x], dict[required][group]))
|
||||
flagList = list(map(lambda x: x if x not in self.flagAliasMap else self.dealias(x, self.flagAliasMap), dict[required][group]))
|
||||
|
||||
for flags in [x for x in bitmask.flags if x.name in flagList]:
|
||||
# Make sure list is unique
|
||||
bitmask.flagExtensions.extend([extension] if extension not in bitmask.flagExtensions else [])
|
||||
flags.extensions.extend([extension] if extension not in flags.extensions else [])
|
||||
extension.flags[group].extend([flags] if flags not in extension.flags[group] else [])
|
||||
bitmask.flagExtensions.extend([extension.name] if extension.name not in bitmask.flagExtensions else [])
|
||||
flags.extensions.extend([extension.name] if extension.name not in flags.extensions else [])
|
||||
extension.flagBits[group].extend([flags] if flags not in extension.flagBits[group] else [])
|
||||
if group in self.vk.flags:
|
||||
flags = self.vk.flags[group]
|
||||
# Make sure list is unique
|
||||
flags.extensions.extend([extension.name] if extension.name not in flags.extensions else [])
|
||||
extension.flags.extend([flags] if flags not in extension.flags[group] else [])
|
||||
|
||||
# Need to do 'enum'/'bitmask' after 'enumconstant' has applied everything so we can add implicit extensions
|
||||
#
|
||||
|
|
@ -259,17 +286,17 @@ class BaseGenerator(OutputGenerator):
|
|||
for group in dict[required]:
|
||||
for enumName in dict[required][group]:
|
||||
isAlias = enumName in self.enumAliasMap
|
||||
enumName = self.enumAliasMap[enumName] if isAlias else enumName
|
||||
enumName = self.dealias(enumName, self.enumAliasMap)
|
||||
if enumName in self.vk.enums:
|
||||
enum = self.vk.enums[enumName]
|
||||
enum.extensions.extend([extension] if extension not in enum.extensions else [])
|
||||
enum.extensions.extend([extension.name] if extension.name not in enum.extensions else [])
|
||||
extension.enums.extend([enum] if enum not in extension.enums else [])
|
||||
# Update fields with implicit base extension
|
||||
if isAlias:
|
||||
continue
|
||||
enum.fieldExtensions.extend([extension] if extension not in enum.fieldExtensions else [])
|
||||
enum.fieldExtensions.extend([extension.name] if extension.name not in enum.fieldExtensions else [])
|
||||
for enumField in [x for x in enum.fields if (not x.extensions or (x.extensions and all(e in enum.extensions for e in x.extensions)))]:
|
||||
enumField.extensions.extend([extension] if extension not in enumField.extensions else [])
|
||||
enumField.extensions.extend([extension.name] if extension.name not in enumField.extensions else [])
|
||||
if enumName not in extension.enumFields:
|
||||
extension.enumFields[enumName] = [] # Dict needs init
|
||||
extension.enumFields[enumName].extend([enumField] if enumField not in extension.enumFields[enumName] else [])
|
||||
|
|
@ -280,20 +307,20 @@ class BaseGenerator(OutputGenerator):
|
|||
for bitmaskName in dict[required][group]:
|
||||
bitmaskName = bitmaskName.replace('Flags', 'FlagBits') # Works since Flags is not repeated in name
|
||||
isAlias = bitmaskName in self.bitmaskAliasMap
|
||||
bitmaskName = self.bitmaskAliasMap[bitmaskName] if isAlias else bitmaskName
|
||||
bitmaskName = self.dealias(bitmaskName, self.bitmaskAliasMap)
|
||||
if bitmaskName in self.vk.bitmasks:
|
||||
bitmask = self.vk.bitmasks[bitmaskName]
|
||||
bitmask.extensions.extend([extension] if extension not in bitmask.extensions else [])
|
||||
bitmask.extensions.extend([extension.name] if extension.name not in bitmask.extensions else [])
|
||||
extension.bitmasks.extend([bitmask] if bitmask not in extension.bitmasks else [])
|
||||
# Update flags with implicit base extension
|
||||
if isAlias:
|
||||
continue
|
||||
bitmask.flagExtensions.extend([extension] if extension not in bitmask.flagExtensions else [])
|
||||
bitmask.flagExtensions.extend([extension.name] if extension.name not in bitmask.flagExtensions else [])
|
||||
for flag in [x for x in bitmask.flags if (not x.extensions or (x.extensions and all(e in bitmask.extensions for e in x.extensions)))]:
|
||||
flag.extensions.extend([extension] if extension not in flag.extensions else [])
|
||||
if bitmaskName not in extension.flags:
|
||||
extension.flags[bitmaskName] = [] # Dict needs init
|
||||
extension.flags[bitmaskName].extend([flag] if flag not in extension.flags[bitmaskName] else [])
|
||||
flag.extensions.extend([extension.name] if extension.name not in flag.extensions else [])
|
||||
if bitmaskName not in extension.flagBits:
|
||||
extension.flagBits[bitmaskName] = [] # Dict needs init
|
||||
extension.flagBits[bitmaskName].extend([flag] if flag not in extension.flagBits[bitmaskName] else [])
|
||||
|
||||
# Some structs (ex VkAttachmentSampleCountInfoAMD) can have multiple alias pointing to same extension
|
||||
for extension in self.vk.extensions.values():
|
||||
|
|
@ -302,34 +329,39 @@ class BaseGenerator(OutputGenerator):
|
|||
for group in dict[required]:
|
||||
for structName in dict[required][group]:
|
||||
isAlias = structName in self.structAliasMap
|
||||
structName = self.structAliasMap[structName] if isAlias else structName
|
||||
# An EXT struct can alias a KHR struct,
|
||||
# that in turns aliaes a core struct
|
||||
# => Try to propagate aliasing, it can safely result in a no-op
|
||||
isAlias = structName in self.structAliasMap
|
||||
structName = self.structAliasMap[structName] if isAlias else structName
|
||||
structName = self.dealias(structName, self.structAliasMap)
|
||||
if structName in self.vk.structs:
|
||||
struct = self.vk.structs[structName]
|
||||
struct.extensions.extend([extension] if extension not in struct.extensions else [])
|
||||
struct.extensions.extend([extension.name] if extension.name not in struct.extensions else [])
|
||||
|
||||
# While we update struct alias inside other structs, the command itself might have the struct as a first level param.
|
||||
# We use this time to update params to have the promoted name
|
||||
# Example - https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/9322
|
||||
# TODO: It is unclear why only structs need dealiasing here, but not other types, so this probably needs revisiting
|
||||
for command in self.vk.commands.values():
|
||||
for member in command.params:
|
||||
if member.type in self.structAliasMap:
|
||||
member.type = self.structAliasMap[member.type]
|
||||
member.type = self.dealias(member.type, self.structAliasMap)
|
||||
|
||||
# Could build up a reverse lookup map, but since these are not too large of list, just do here
|
||||
# (Need to be done after we have found all the aliases)
|
||||
|
||||
|
||||
for key, value in self.structAliasMap.items():
|
||||
self.vk.structs[value].aliases.append(key)
|
||||
self.vk.structs[self.dealias(value, self.structAliasMap)].aliases.append(key)
|
||||
for key, value in self.enumFieldAliasMap.items():
|
||||
self.enumFieldMap[self.dealias(value, self.enumFieldAliasMap)].aliases.append(key)
|
||||
for key, value in self.enumAliasMap.items():
|
||||
self.vk.enums[value].aliases.append(key)
|
||||
self.vk.enums[self.dealias(value, self.enumAliasMap)].aliases.append(key)
|
||||
for key, value in self.flagAliasMap.items():
|
||||
self.flagMap[self.dealias(value, self.flagAliasMap)].aliases.append(key)
|
||||
for key, value in self.bitmaskAliasMap.items():
|
||||
self.vk.bitmasks[value].aliases.append(key)
|
||||
self.vk.bitmasks[self.dealias(value, self.bitmaskAliasMap)].aliases.append(key)
|
||||
for key, value in self.flagsAliasMap.items():
|
||||
self.vk.flags[self.dealias(value, self.flagsAliasMap)].aliases.append(key)
|
||||
for key, value in self.handleAliasMap.items():
|
||||
self.vk.handles[value].aliases.append(key)
|
||||
self.vk.handles[self.dealias(value, self.handleAliasMap)].aliases.append(key)
|
||||
|
||||
|
||||
def endFile(self):
|
||||
# This is the point were reg.py has ran, everything is collected
|
||||
|
|
@ -342,15 +374,19 @@ class BaseGenerator(OutputGenerator):
|
|||
enum.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type] for x in struct.members if x.type in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type.replace('Flags', 'FlagBits')] for x in struct.members if x.type.replace('Flags', 'FlagBits') in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for flags in [self.vk.flags[x.type] for x in struct.members if x.type in self.vk.flags]:
|
||||
flags.returnedOnly = False
|
||||
if flags.bitmaskName is not None:
|
||||
self.vk.bitmasks[flags.bitmaskName].returnedOnly = False
|
||||
for command in self.vk.commands.values():
|
||||
for enum in [self.vk.enums[x.type] for x in command.params if x.type in self.vk.enums]:
|
||||
enum.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type] for x in command.params if x.type in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type.replace('Flags', 'FlagBits')] for x in command.params if x.type.replace('Flags', 'FlagBits') in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for flags in [self.vk.flags[x.type] for x in command.params if x.type in self.vk.flags]:
|
||||
flags.returnedOnly = False
|
||||
if flags.bitmaskName is not None:
|
||||
self.vk.bitmasks[flags.bitmaskName].returnedOnly = False
|
||||
|
||||
# Turn handle parents into pointers to classes
|
||||
for handle in [x for x in self.vk.handles.values() if x.parent is not None]:
|
||||
|
|
@ -546,7 +582,8 @@ class BaseGenerator(OutputGenerator):
|
|||
# Some values have multiple extensions (ex VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
|
||||
# genGroup() lists them twice
|
||||
if next((x for x in fields if x.name == fieldName), None) is None:
|
||||
fields.append(EnumField(fieldName, protect, negative, valueInt, valueStr, []))
|
||||
self.enumFieldMap[fieldName] = EnumField(fieldName, [], protect, negative, valueInt, valueStr, [])
|
||||
fields.append(self.enumFieldMap[fieldName])
|
||||
|
||||
self.vk.enums[groupName] = Enum(groupName, [], groupProtect, bitwidth, True, fields, [], [])
|
||||
|
||||
|
|
@ -574,7 +611,8 @@ class BaseGenerator(OutputGenerator):
|
|||
# Some values have multiple extensions (ex VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)
|
||||
# genGroup() lists them twice
|
||||
if next((x for x in fields if x.name == flagName), None) is None:
|
||||
fields.append(Flag(flagName, protect, valueInt, valueStr, flagMultiBit, flagZero, []))
|
||||
self.flagMap[flagName] = Flag(flagName, [], protect, valueInt, valueStr, flagMultiBit, flagZero, [])
|
||||
fields.append(self.flagMap[flagName])
|
||||
|
||||
flagName = groupName.replace('FlagBits', 'Flags')
|
||||
self.vk.bitmasks[groupName] = Bitmask(groupName, [], flagName, groupProtect, bitwidth, True, fields, [], [])
|
||||
|
|
@ -583,9 +621,9 @@ class BaseGenerator(OutputGenerator):
|
|||
OutputGenerator.genType(self, typeInfo, typeName, alias)
|
||||
typeElem = typeInfo.elem
|
||||
protect = self.currentExtension.protect if hasattr(self.currentExtension, 'protect') and self.currentExtension.protect is not None else None
|
||||
extension = [self.currentExtension] if self.currentExtension is not None else []
|
||||
category = typeElem.get('category')
|
||||
if (category == 'struct' or category == 'union'):
|
||||
extension = [self.currentExtension] if self.currentExtension is not None else []
|
||||
if alias is not None:
|
||||
self.structAliasMap[typeName] = alias
|
||||
return
|
||||
|
|
@ -662,15 +700,32 @@ class BaseGenerator(OutputGenerator):
|
|||
|
||||
dispatchable = typeElem.find('type').text == 'VK_DEFINE_HANDLE'
|
||||
|
||||
self.vk.handles[typeName] = Handle(typeName, [], type, protect, parent, instance, device, dispatchable)
|
||||
self.vk.handles[typeName] = Handle(typeName, [], type, protect, parent, instance, device, dispatchable, extension)
|
||||
|
||||
elif category == 'define':
|
||||
if typeName == 'VK_HEADER_VERSION':
|
||||
self.vk.headerVersion = typeElem.find('name').tail.strip()
|
||||
|
||||
elif category == 'bitmask':
|
||||
if alias is not None:
|
||||
self.flagsAliasMap[typeName] = alias
|
||||
return
|
||||
|
||||
# Bitmask types, i.e. flags
|
||||
baseFlagsType = typeElem.find('type').text
|
||||
bitWidth = 64 if baseFlagsType == 'VkFlags64' else 32
|
||||
|
||||
# Bitmask enum type is either in the 'requires' or 'bitvalues' attribute
|
||||
# (for some reason there are two conventions)
|
||||
bitmaskName = typeElem.get('bitvalues')
|
||||
if bitmaskName is None:
|
||||
bitmaskName = typeElem.get('requires')
|
||||
|
||||
self.vk.flags[typeName] = Flags(typeName, [], bitmaskName, protect, baseFlagsType, bitWidth, True, extension)
|
||||
|
||||
else:
|
||||
# not all categories are used
|
||||
# 'group'/'enum'/'bitmask' are routed to genGroup instead
|
||||
# 'group'/'enum' are routed to genGroup instead
|
||||
# 'basetype'/'include' are only for headers
|
||||
# 'funcpointer` ignore until needed
|
||||
return
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
104
registry/vk.xml
104
registry/vk.xml
|
|
@ -179,7 +179,7 @@ branch of the member gitlab server.
|
|||
#define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type>
|
||||
|
||||
<type api="vulkan" category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 315</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 316</type>
|
||||
<type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file
|
||||
#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 4, VK_HEADER_VERSION)</type>
|
||||
<type api="vulkansc" category="define">// Version of this file
|
||||
|
|
@ -10291,6 +10291,11 @@ typedef void* <name>MTLSharedEvent_id</name>;
|
|||
<member limittype="noauto"><type>uint32_t</type> <name>maxExternalQueues</name></member>
|
||||
</type>
|
||||
<type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV"><type>VK_DEFINE_HANDLE</type>(<name>VkExternalComputeQueueNV</name>)</type>
|
||||
<type category="struct" name="VkPhysicalDeviceFormatPackFeaturesARM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member optional="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>formatPack</name></member>
|
||||
</type>
|
||||
</types>
|
||||
|
||||
|
||||
|
|
@ -16824,6 +16829,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
|
|||
<command queues="compute" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
|
||||
<proto><type>void</type> <name>vkCmdDispatchTileQCOM</name></proto>
|
||||
<param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||
<param>const <type>VkDispatchTileInfoQCOM</type>* <name>pDispatchTileInfo</name></param>
|
||||
</command>
|
||||
<command queues="graphics,compute" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="state">
|
||||
<proto><type>void</type> <name>vkCmdBeginPerTileExecutionQCOM</name></proto>
|
||||
|
|
@ -27414,10 +27420,27 @@ typedef void* <name>MTLSharedEvent_id</name>;
|
|||
<feature name="vertexAttributeRobustness" struct="VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_ARM_extension_610" number="610" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
|
||||
<extension name="VK_ARM_format_pack" number="610" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_ARM_EXTENSION_610_SPEC_VERSION"/>
|
||||
<enum value=""VK_ARM_extension_610"" name="VK_ARM_EXTENSION_610_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_ARM_FORMAT_PACK_SPEC_VERSION"/>
|
||||
<enum value=""VK_ARM_format_pack"" name="VK_ARM_FORMAT_PACK_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM"/>
|
||||
<type name="VkPhysicalDeviceFormatPackFeaturesARM"/>
|
||||
<feature name="formatPack" struct="VkPhysicalDeviceFormatPackFeaturesARM"/>
|
||||
<enum offset="0" extends="VkFormat" name="VK_FORMAT_R10X6_UINT_PACK16_ARM"/>
|
||||
<enum offset="1" extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM"/>
|
||||
<enum offset="2" extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM"/>
|
||||
<enum offset="3" extends="VkFormat" name="VK_FORMAT_R12X4_UINT_PACK16_ARM"/>
|
||||
<enum offset="4" extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM"/>
|
||||
<enum offset="5" extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM"/>
|
||||
<enum offset="6" extends="VkFormat" name="VK_FORMAT_R14X2_UINT_PACK16_ARM"/>
|
||||
<enum offset="7" extends="VkFormat" name="VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM"/>
|
||||
<enum offset="8" extends="VkFormat" name="VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM"/>
|
||||
<enum offset="9" extends="VkFormat" name="VK_FORMAT_R14X2_UNORM_PACK16_ARM"/>
|
||||
<enum offset="10" extends="VkFormat" name="VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM"/>
|
||||
<enum offset="11" extends="VkFormat" name="VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM"/>
|
||||
<enum offset="12" extends="VkFormat" name="VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM"/>
|
||||
<enum offset="13" extends="VkFormat" name="VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_611" number="611" author="NV" contact="David Kvasnica @DaKvasNV" supported="disabled">
|
||||
|
|
@ -27473,6 +27496,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
|
|||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_617_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_617"" name="VK_EXT_EXTENSION_617_EXTENSION_NAME"/>
|
||||
<enum bitpos="5" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_RESERVED_5_BIT_EXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_618" number="618" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
|
||||
|
|
@ -27577,6 +27601,12 @@ typedef void* <name>MTLSharedEvent_id</name>;
|
|||
<enum value=""VK_EXT_extension_630"" name="VK_EXT_EXTENSION_630_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_631" number="631" author="KHR" contact="Mike Blumenkrantz @zmike" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_631_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_631"" name="VK_KHR_EXTENSION_631_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
</extensions>
|
||||
<formats>
|
||||
<format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8">
|
||||
|
|
@ -28958,6 +28988,72 @@ typedef void* <name>MTLSharedEvent_id</name>;
|
|||
<component name="R" bits="16" numericFormat="SFIXED5"/>
|
||||
<component name="G" bits="16" numericFormat="SFIXED5"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R10X6_UINT_PACK16_ARM" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="10" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM" class="32-bit" blockSize="4" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="10" numericFormat="UINT"/>
|
||||
<component name="G" bits="10" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM" class="64-bit R10G10B10A10" blockSize="8" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="10" numericFormat="UINT"/>
|
||||
<component name="G" bits="10" numericFormat="UINT"/>
|
||||
<component name="B" bits="10" numericFormat="UINT"/>
|
||||
<component name="A" bits="10" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R12X4_UINT_PACK16_ARM" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="12" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM" class="32-bit" blockSize="4" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="12" numericFormat="UINT"/>
|
||||
<component name="G" bits="12" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM" class="64-bit R12G12B12A12" blockSize="8" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="12" numericFormat="UINT"/>
|
||||
<component name="G" bits="12" numericFormat="UINT"/>
|
||||
<component name="B" bits="12" numericFormat="UINT"/>
|
||||
<component name="A" bits="12" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R14X2_UINT_PACK16_ARM" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="14" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM" class="32-bit" blockSize="4" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="14" numericFormat="UINT"/>
|
||||
<component name="G" bits="14" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM" class="64-bit R14G14B14A14" blockSize="8" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="14" numericFormat="UINT"/>
|
||||
<component name="G" bits="14" numericFormat="UINT"/>
|
||||
<component name="B" bits="14" numericFormat="UINT"/>
|
||||
<component name="A" bits="14" numericFormat="UINT"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R14X2_UNORM_PACK16_ARM" class="16-bit" blockSize="2" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="14" numericFormat="UNORM"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM" class="32-bit" blockSize="4" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="14" numericFormat="UNORM"/>
|
||||
<component name="G" bits="14" numericFormat="UNORM"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM" class="64-bit R14G14B14A14" blockSize="8" texelsPerBlock="1" packed="16">
|
||||
<component name="R" bits="14" numericFormat="UNORM"/>
|
||||
<component name="G" bits="14" numericFormat="UNORM"/>
|
||||
<component name="B" bits="14" numericFormat="UNORM"/>
|
||||
<component name="A" bits="14" numericFormat="UNORM"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM" class="14-bit 2-plane 420" blockSize="6" texelsPerBlock="1" packed="16" chroma="420">
|
||||
<component name="G" bits="14" numericFormat="UNORM" planeIndex="0"/>
|
||||
<component name="B" bits="14" numericFormat="UNORM" planeIndex="1"/>
|
||||
<component name="R" bits="14" numericFormat="UNORM" planeIndex="1"/>
|
||||
<plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R14X2_UNORM_PACK16_ARM"/>
|
||||
<plane index="1" widthDivisor="2" heightDivisor="2" compatible="VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM"/>
|
||||
</format>
|
||||
<format name="VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM" class="14-bit 2-plane 422" blockSize="6" texelsPerBlock="1" packed="16" chroma="422">
|
||||
<component name="G" bits="14" numericFormat="UNORM" planeIndex="0"/>
|
||||
<component name="B" bits="14" numericFormat="UNORM" planeIndex="1"/>
|
||||
<component name="R" bits="14" numericFormat="UNORM" planeIndex="1"/>
|
||||
<plane index="0" widthDivisor="1" heightDivisor="1" compatible="VK_FORMAT_R14X2_UNORM_PACK16_ARM"/>
|
||||
<plane index="1" widthDivisor="2" heightDivisor="1" compatible="VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM"/>
|
||||
</format>
|
||||
</formats>
|
||||
<spirvextensions comment="SPIR-V Extensions allowed in Vulkan and what is required to use it">
|
||||
<spirvextension name="SPV_KHR_variable_pointers">
|
||||
|
|
|
|||
|
|
@ -29,14 +29,17 @@ class Extension:
|
|||
specialUse: list[str]
|
||||
|
||||
# These are here to allow for easy reverse lookups
|
||||
# To prevent infinite recursion, other classes reference a string back to the Extension class
|
||||
# Quotes allow us to forward declare the dataclass
|
||||
handles: list['Handle'] = field(default_factory=list, init=False)
|
||||
commands: list['Command'] = field(default_factory=list, init=False)
|
||||
enums: list['Enum'] = field(default_factory=list, init=False)
|
||||
bitmasks: list['Bitmask'] = field(default_factory=list, init=False)
|
||||
flags: dict[str, list['Flags']] = field(default_factory=dict, init=False)
|
||||
# Use the Enum name to see what fields are extended
|
||||
enumFields: dict[str, list['EnumField']] = field(default_factory=dict, init=False)
|
||||
# Use the Bitmaks name to see what flags are extended
|
||||
flags: dict[str, list['Flag']] = field(default_factory=dict, init=False)
|
||||
# Use the Bitmask name to see what flag bits are added to it
|
||||
flagBits: dict[str, list['Flag']] = field(default_factory=dict, init=False)
|
||||
|
||||
@dataclass
|
||||
class Version:
|
||||
|
|
@ -65,6 +68,8 @@ class Handle:
|
|||
|
||||
dispatchable: bool
|
||||
|
||||
extensions: list[str] # All extensions that enable the handle
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
|
|
@ -133,7 +138,7 @@ class Command:
|
|||
alias: (str | None) # Because commands are interfaces into layers/drivers, we need all command alias
|
||||
protect: (str | None) # ex) 'VK_ENABLE_BETA_EXTENSIONS'
|
||||
|
||||
extensions: list[Extension] # All extensions that enable the struct
|
||||
extensions: list[str] # All extensions that enable the struct
|
||||
version: (Version | None) # None if Version 1.0
|
||||
|
||||
returnType: str # ex) void, VkResult, etc
|
||||
|
|
@ -219,7 +224,7 @@ class Struct:
|
|||
name: str # ex) VkImageSubresource2
|
||||
aliases: list[str] # ex) ['VkImageSubresource2KHR', 'VkImageSubresource2EXT']
|
||||
|
||||
extensions: list[Extension] # All extensions that enable the struct
|
||||
extensions: list[str] # All extensions that enable the struct
|
||||
version: (Version | None) # None if Version 1.0
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
|
|
@ -242,7 +247,9 @@ class Struct:
|
|||
@dataclass
|
||||
class EnumField:
|
||||
"""<enum> of type enum"""
|
||||
name: str # ex) VK_DYNAMIC_STATE_SCISSOR
|
||||
name: str # ex) VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
|
||||
aliases: list[str] # ex) ['VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT']
|
||||
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
negative: bool # True if negative values are allowed (ex. VkResult)
|
||||
|
|
@ -250,7 +257,7 @@ class EnumField:
|
|||
valueStr: str # value as shown in spec (ex. "0", "2", "1000267000", "0x00000004")
|
||||
|
||||
# some fields are enabled from 2 extensions (ex) VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
extensions: list[str] # None if part of 1.0 core
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
|
@ -268,9 +275,9 @@ class Enum:
|
|||
|
||||
fields: list[EnumField]
|
||||
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
extensions: list[str] # None if part of 1.0 core
|
||||
# Unique list of all extension that are involved in 'fields' (superset of 'extensions')
|
||||
fieldExtensions: list[Extension]
|
||||
fieldExtensions: list[str]
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
|
@ -279,6 +286,8 @@ class Enum:
|
|||
class Flag:
|
||||
"""<enum> of type bitmask"""
|
||||
name: str # ex) VK_ACCESS_2_SHADER_READ_BIT
|
||||
aliases: str # ex) ['VK_ACCESS_2_SHADER_READ_BIT_KHR']
|
||||
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
value: int
|
||||
|
|
@ -287,7 +296,7 @@ class Flag:
|
|||
zero: bool # if true, the value is zero (ex) VK_PIPELINE_STAGE_NONE)
|
||||
|
||||
# some fields are enabled from 2 extensions (ex) VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
extensions: list[str] # None if part of 1.0 core
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
|
@ -306,9 +315,27 @@ class Bitmask:
|
|||
|
||||
flags: list[Flag]
|
||||
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
extensions: list[str] # None if part of 1.0 core
|
||||
# Unique list of all extension that are involved in 'flag' (superset of 'extensions')
|
||||
flagExtensions: list[Extension]
|
||||
flagExtensions: list[str]
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Flags:
|
||||
"""<type> defining flags types"""
|
||||
name: str # ex) VkAccessFlags2
|
||||
aliases: list[str] # ex) [`VkAccessFlags2KHR`]
|
||||
|
||||
bitmaskName: (str | None) # ex) VkAccessFlagBits2
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
baseFlagsType: str # ex) VkFlags
|
||||
bitWidth: int # 32 or 64
|
||||
returnedOnly: bool
|
||||
|
||||
extensions: list[str] # None if part of 1.0 core
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
|
@ -422,6 +449,7 @@ class VulkanObject():
|
|||
structs: dict[str, Struct] = field(default_factory=dict, init=False)
|
||||
enums: dict[str, Enum] = field(default_factory=dict, init=False)
|
||||
bitmasks: dict[str, Bitmask] = field(default_factory=dict, init=False)
|
||||
flags: dict[str, Flags] = field(default_factory=dict, init=False)
|
||||
formats: dict[str, Format] = field(default_factory=dict, init=False)
|
||||
|
||||
syncStage: list[SyncStage] = field(default_factory=list, init=False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue