Update for Vulkan-Docs 1.4.329

This commit is contained in:
Jon Leech 2025-10-10 01:36:45 +01:00 committed by Jon Leech
parent f5fad0a209
commit 33d7f51258
17 changed files with 1775 additions and 1395 deletions

View file

@ -9,7 +9,7 @@ import os
import tempfile
import copy
from vulkan_object import (VulkanObject,
Extension, Version, Deprecate, Handle, Param, Queues, CommandScope, Command,
Extension, Version, Deprecate, Handle, Param, CommandScope, Command,
EnumField, Enum, Flag, Bitmask, ExternSync, Flags, Member, Struct,
Constant, FormatComponent, FormatPlane, Format, FeatureRequirement,
SyncSupport, SyncEquivalent, SyncStage, SyncAccess, SyncPipelineStage, SyncPipeline,
@ -63,29 +63,6 @@ def externSyncGet(elem):
return (ExternSync.SUBTYPE_MAYBE, value.removeprefix('maybe:'))
return (ExternSync.SUBTYPE, value)
def getQueues(elem) -> Queues:
queuemap = {
'VK_QUEUE_COMPUTE_BIT': Queues.COMPUTE,
'VK_QUEUE_DATA_GRAPH_BIT_ARM': Queues.DATA_GRAPH,
'VK_QUEUE_GRAPHICS_BIT': Queues.GRAPHICS,
'VK_QUEUE_OPTICAL_FLOW_BIT_NV': Queues.OPTICAL_FLOW,
'VK_QUEUE_PROTECTED_BIT': Queues.PROTECTED,
'VK_QUEUE_SPARSE_BINDING_BIT': Queues.SPARSE_BINDING,
'VK_QUEUE_TRANSFER_BIT': Queues.TRANSFER,
'VK_QUEUE_VIDEO_DECODE_BIT_KHR': Queues.DECODE,
'VK_QUEUE_VIDEO_ENCODE_BIT_KHR': Queues.ENCODE,
}
queues = 0
queues_list = splitIfGet(elem, 'queues')
for queue in queues_list:
if queue in queuemap:
queues |= queuemap[queue]
return queues
# Shared object used by Sync elements that do not have ones
maxSyncSupport = SyncSupport(None, None, True)
maxSyncEquivalent = SyncEquivalent(None, None, True)
@ -241,17 +218,6 @@ class BaseGenerator(OutputGenerator):
for tag in tags.findall('tag'):
self.vk.vendorTags.append(tag.get('name'))
# No way known to get this from the XML
self.vk.queueBits[Queues.TRANSFER] = 'VK_QUEUE_TRANSFER_BIT'
self.vk.queueBits[Queues.GRAPHICS] = 'VK_QUEUE_GRAPHICS_BIT'
self.vk.queueBits[Queues.COMPUTE] = 'VK_QUEUE_COMPUTE_BIT'
self.vk.queueBits[Queues.PROTECTED] = 'VK_QUEUE_PROTECTED_BIT'
self.vk.queueBits[Queues.SPARSE_BINDING] = 'VK_QUEUE_SPARSE_BINDING_BIT'
self.vk.queueBits[Queues.OPTICAL_FLOW] = 'VK_QUEUE_OPTICAL_FLOW_BIT_NV'
self.vk.queueBits[Queues.DECODE] = 'VK_QUEUE_VIDEO_DECODE_BIT_KHR'
self.vk.queueBits[Queues.ENCODE] = 'VK_QUEUE_VIDEO_ENCODE_BIT_KHR'
self.vk.queueBits[Queues.DATA_GRAPH] = 'VK_QUEUE_DATA_GRAPH_BIT_ARM'
# If the video.xml path is provided then we need to load and parse it using
# the private video std generator
if genOpts.videoXmlPath is not None:
@ -400,6 +366,7 @@ class BaseGenerator(OutputGenerator):
if structName in self.vk.structs:
struct = self.vk.structs[structName]
struct.extensions.extend([extension.name] if extension.name not in struct.extensions else [])
extension.structs.extend([struct] if struct not in extension.structs 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
@ -619,7 +586,7 @@ class BaseGenerator(OutputGenerator):
instance = interface.get('type') == 'instance'
device = not instance
depends = interface.get('depends')
vendorTag = interface.get('author')
vendorTag = name.split('_')[1]
platform = interface.get('platform')
provisional = boolGet(interface, 'provisional')
promotedto = interface.get('promotedto')
@ -701,7 +668,7 @@ class BaseGenerator(OutputGenerator):
alias = attrib.get('alias')
tasks = splitIfGet(attrib, 'tasks')
queues = getQueues(attrib)
queues = splitIfGet(attrib, 'queues')
allowNoQueues = boolGet(attrib, 'allownoqueues')
successcodes = splitIfGet(attrib, 'successcodes')
errorcodes = splitIfGet(attrib, 'errorcodes')
@ -735,7 +702,7 @@ class BaseGenerator(OutputGenerator):
device = not instance
implicitElem = cmdinfo.elem.find('implicitexternsyncparams')
implicitExternSyncParams = [x.text for x in implicitElem.findall('param')] if implicitElem else []
implicitExternSyncParams = [x.text for x in implicitElem.findall('param')] if implicitElem is not None else []
self.vk.commands[name] = Command(name, alias, protect, [], self.currentVersion,
returnType, params, instance, device,
@ -1018,7 +985,7 @@ class BaseGenerator(OutputGenerator):
support = maxSyncSupport
supportElem = syncElem.find('syncsupport')
if supportElem is not None:
queues = getQueues(supportElem)
queues = splitIfGet(supportElem, 'queues')
stageNames = splitIfGet(supportElem, 'stage')
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if len(stageNames) > 0 else None
support = SyncSupport(queues, stages, False)
@ -1045,7 +1012,7 @@ class BaseGenerator(OutputGenerator):
support = maxSyncSupport
supportElem = syncElem.find('syncsupport')
if supportElem is not None:
queues = getQueues(supportElem)
queues = splitIfGet(supportElem, 'queues')
stageNames = splitIfGet(supportElem, 'stage')
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if len(stageNames) > 0 else None
support = SyncSupport(queues, stages, False)

File diff suppressed because one or more lines are too long

View file

@ -183,7 +183,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> 328</type>
#define <name>VK_HEADER_VERSION</name> 329</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
@ -1494,7 +1494,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkExtent3D</type> <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
</type>
<type category="struct" name="VkStridedDeviceAddressRangeKHR">
<member><type>VkDeviceAddress</type> <name>address</name></member>
<member optional="true"><type>VkDeviceAddress</type> <name>address</name></member>
<member><type>VkDeviceSize</type> <name>size</name></member>
<member><type>VkDeviceSize</type> <name>stride</name></member>
</type>
@ -8617,6 +8617,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member limittype="max"><type>VkBool32</type> <name>triStripVertexOrderIndependentOfProvokingVertex</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceShaderFmaFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>shaderFmaFloat16</name></member>
<member><type>VkBool32</type> <name>shaderFmaFloat32</name></member>
<member><type>VkBool32</type> <name>shaderFmaFloat64</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
@ -22806,6 +22813,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<require>
<enum value="0" name="VK_KHR_EXTENSION_209_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_209&quot;" name="VK_KHR_EXTENSION_209_EXTENSION_NAME"/>
<enum bitpos="9" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_RESERVED_9_BIT_EXT"/>
</require>
</extension>
<extension name="VK_INTEL_shader_integer_functions2" number="210" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="INTEL" contact="Ian Romanick @ianromanick" supported="vulkan">
@ -26112,15 +26120,10 @@ typedef void* <name>MTLSharedEvent_id</name>;
<feature name="nestedCommandBuffer" struct="VkPhysicalDeviceNestedCommandBufferFeaturesEXT"/>
</require>
</extension>
<extension name="VK_ARM_extension_453" number="453" author="Arm" contact="Kevin Petit @kpet" supported="disabled">
<extension name="VK_HUAWEI_extension_453" number="453" author="HUAWEI" contact="Bill Hollings @billhollings" supported="disabled">
<require>
<enum value="0" name="VK_ARM_EXTENSION_453_SPEC_VERSION"/>
<enum value="&quot;VK_ARM_extension_453&quot;" name="VK_ARM_EXTENSION_453_EXTENSION_NAME"/>
<enum bitpos="11" extends="VkQueueFlagBits" name="VK_QUEUE_RESERVED_11_BIT_ARM"/>
<enum bitpos="43" extends="VkPipelineStageFlagBits2" name="VK_PIPELINE_STAGE_2_RESERVED_43_BIT_ARM"/>
<enum bitpos="49" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_49_BIT_ARM"/>
<enum bitpos="50" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_50_BIT_ARM"/>
<enum bitpos="47" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_47_BIT_ARM"/>
<enum value="0" name="VK_HUAWEI_EXTENSION_453_SPEC_VERSION"/>
<enum value="&quot;VK_HUAWEI_extension_453&quot;" name="VK_HUAWEI_EXTENSION_453_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_external_memory_acquire_unmodified" number="454" type="device" depends="VK_KHR_external_memory,VK_VERSION_1_1" author="EXT" contact="Lina Versace @linyaa-kiwi" supported="vulkan" ratified="vulkan" nofeatures="true">
@ -28309,10 +28312,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="9" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_RESERVED_9_BIT_EXT"/>
</require>
</extension>
<extension name="VK_EXT_extension_580" number="580" author="EXT" contact="Graeme Leese @gnl21" supported="disabled">
<extension name="VK_KHR_shader_fma" number="580" type="device" author="KHR" contact="Graeme Leese @gnl21" supported="vulkan" ratified="vulkan">
<require>
<enum value="0" name="VK_EXT_EXTENSION_580_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_580&quot;" name="VK_EXT_EXTENSION_580_EXTENSION_NAME"/>
<enum value="1" name="VK_KHR_SHADER_FMA_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_shader_fma&quot;" name="VK_KHR_SHADER_FMA_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR"/>
<type name="VkPhysicalDeviceShaderFmaFeaturesKHR"/>
<feature name="shaderFmaFloat32" struct="VkPhysicalDeviceShaderFmaFeaturesKHR"/>
</require>
</extension>
<extension name="VK_NV_extension_581" number="581" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled">
@ -28971,6 +28977,17 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="18" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_RESERVED_18_BIT_KHR" />
</require>
</extension>
<extension name="VK_ARM_extension_659" number="659" author="Arm" contact="Kevin Petit @kpet" supported="disabled">
<require>
<enum value="0" name="VK_ARM_EXTENSION_659_SPEC_VERSION"/>
<enum value="&quot;VK_ARM_extension_659&quot;" name="VK_ARM_EXTENSION_659_EXTENSION_NAME"/>
<enum bitpos="11" extends="VkQueueFlagBits" name="VK_QUEUE_RESERVED_11_BIT_ARM"/>
<enum bitpos="43" extends="VkPipelineStageFlagBits2" name="VK_PIPELINE_STAGE_2_RESERVED_43_BIT_ARM"/>
<enum bitpos="49" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_49_BIT_ARM"/>
<enum bitpos="50" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_50_BIT_ARM"/>
<enum bitpos="47" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_47_BIT_ARM"/>
</require>
</extension>
</extensions>
<formats>
<format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8">
@ -30682,6 +30699,9 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enable version="VK_VERSION_1_4"/>
<enable extension="VK_KHR_shader_float_controls2"/>
</spirvextension>
<spirvextension name="SPV_KHR_fma">
<enable extension="VK_KHR_shader_fma"/>
</spirvextension>
<spirvextension name="SPV_KHR_quad_control">
<enable extension="VK_KHR_shader_quad_control"/>
</spirvextension>
@ -31314,6 +31334,11 @@ typedef void* <name>MTLSharedEvent_id</name>;
<spirvcapability name="UntypedPointersKHR">
<enable struct="VkPhysicalDeviceShaderUntypedPointersFeaturesKHR" feature="shaderUntypedPointers" requires="VK_KHR_shader_untyped_pointers"/>
</spirvcapability>
<spirvcapability name="FMAKHR">
<enable struct="VkPhysicalDeviceShaderFmaFeaturesKHR" feature="shaderFmaFloat16" requires="VK_KHR_shader_fma"/>
<enable struct="VkPhysicalDeviceShaderFmaFeaturesKHR" feature="shaderFmaFloat32" requires="VK_KHR_shader_fma"/>
<enable struct="VkPhysicalDeviceShaderFmaFeaturesKHR" feature="shaderFmaFloat64" requires="VK_KHR_shader_fma"/>
</spirvcapability>
</spirvcapabilities>
<sync comment="Machine readable representation of the synchronization objects and their mappings">
<syncstage name="VK_PIPELINE_STAGE_2_NONE" alias="VK_PIPELINE_STAGE_NONE">

View file

@ -41,8 +41,9 @@ class Extension:
# 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)
handles: list['Handle'] = field(default_factory=list, init=False)
commands: list['Command'] = field(default_factory=list, init=False)
structs: list['Struct'] = 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)
@ -141,17 +142,6 @@ class Param:
def __lt__(self, other):
return self.name < other.name
class Queues(IntFlag):
TRANSFER = auto() # VK_QUEUE_TRANSFER_BIT
GRAPHICS = auto() # VK_QUEUE_GRAPHICS_BIT
COMPUTE = auto() # VK_QUEUE_COMPUTE_BIT
PROTECTED = auto() # VK_QUEUE_PROTECTED_BIT
SPARSE_BINDING = auto() # VK_QUEUE_SPARSE_BINDING_BIT
OPTICAL_FLOW = auto() # VK_QUEUE_OPTICAL_FLOW_BIT_NV
DECODE = auto() # VK_QUEUE_VIDEO_DECODE_BIT_KHR
ENCODE = auto() # VK_QUEUE_VIDEO_ENCODE_BIT_KHR
DATA_GRAPH = auto() # VK_QUEUE_DATA_GRAPH_BIT_ARM
class CommandScope(Enum):
NONE = auto()
INSIDE = auto()
@ -177,7 +167,7 @@ class Command:
device: bool
tasks: list[str] # ex) [ action, state, synchronization ]
queues: Queues # zero == No Queues found (represents restriction which queue type can be used)
queues: list[str] # ex) [ VK_QUEUE_GRAPHICS_BIT, VK_QUEUE_COMPUTE_BIT ]
allowNoQueues: bool # VK_KHR_maintenance9 allows some calls to be done with zero queues
successCodes: list[str] # ex) [ VK_SUCCESS, VK_INCOMPLETE ]
errorCodes: list[str] # ex) [ VK_ERROR_OUT_OF_HOST_MEMORY ]
@ -422,7 +412,7 @@ class Format:
@dataclass
class SyncSupport:
"""<syncsupport>"""
queues: Queues
queues: list[str] # ex) [ VK_QUEUE_GRAPHICS_BIT, VK_QUEUE_COMPUTE_BIT ]
stages: list[Flag] # VkPipelineStageFlagBits2
max: bool # If this supports max values
@ -581,8 +571,6 @@ class VulkanObject():
platforms: dict[str, str] = field(default_factory=dict, init=False)
# list of all vendor Suffix names (KHR, EXT, etc. )
vendorTags: list[str] = field(default_factory=list, init=False)
# ex) [ Queues.COMPUTE : VK_QUEUE_COMPUTE_BIT ]
queueBits: dict[IntFlag, str] = field(default_factory=dict, init=False)
# Video codec information from the vk.xml
videoCodecs: dict[str, VideoCodec] = field(default_factory=dict, init=False)