Update for Vulkan-Docs 1.4.323

This commit is contained in:
Jon Leech 2025-07-18 12:10:59 +01:00 committed by Jon Leech
parent 00a752019b
commit 088a00d81d
20 changed files with 5592 additions and 6971 deletions

View file

@ -7,17 +7,22 @@
import pickle
import os
import tempfile
import copy
from vulkan_object import (VulkanObject,
Extension, Version, Deprecate, Handle, Param, Queues, CommandScope, Command,
EnumField, Enum, Flag, Bitmask, ExternSync, Flags, Member, Struct,
Constant, FormatComponent, FormatPlane, Format,
SyncSupport, SyncEquivalent, SyncStage, SyncAccess, SyncPipelineStage, SyncPipeline,
SpirvEnables, Spirv)
SpirvEnables, Spirv,
VideoCodec, VideoFormat, VideoProfiles, VideoProfileMember, VideoRequiredCapabilities,
VideoStd, VideoStdHeader)
# These live in the Vulkan-Docs repo, but are pulled in via the
# Vulkan-Headers/registry folder
from generator import OutputGenerator, GeneratorOptions, write
from vkconventions import VulkanConventions
from reg import Registry
from xml.etree import ElementTree
# An API style convention object
vulkanConventions = VulkanConventions()
@ -146,7 +151,8 @@ class BaseGeneratorOptions(GeneratorOptions):
def __init__(self,
customFileName = None,
customDirectory = None,
customApiName = None):
customApiName = None,
videoXmlPath = None):
GeneratorOptions.__init__(self,
conventions = vulkanConventions,
filename = customFileName if customFileName else globalFileName,
@ -163,6 +169,9 @@ class BaseGeneratorOptions(GeneratorOptions):
self.apientryp = 'VKAPI_PTR *'
self.alignFuncParam = 48
# This is used to provide the video.xml to the private video XML generator
self.videoXmlPath = videoXmlPath
#
# This object handles all the parsing from reg.py generator scripts in the Vulkan-Headers
# It will grab all the data and form it into a single object the rest of the generators will use
@ -235,6 +244,15 @@ class BaseGenerator(OutputGenerator):
self.vk.queueBits[Queues.DECODE] = 'VK_QUEUE_VIDEO_DECODE_BIT_KHR'
self.vk.queueBits[Queues.ENCODE] = 'VK_QUEUE_VIDEO_ENCODE_BIT_KHR'
# 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:
videoStdGenerator = _VideoStdGenerator()
videoRegistry = Registry(videoStdGenerator, genOpts)
videoRegistry.loadElementTree(ElementTree.parse(genOpts.videoXmlPath))
videoRegistry.apiGen()
self.vk.videoStd = videoStdGenerator.vk.videoStd
# This function should be overloaded
def generate(self):
print("WARNING: This should not be called from the child class")
@ -404,31 +422,96 @@ class BaseGenerator(OutputGenerator):
for key, value in self.handleAliasMap.items():
self.vk.handles[self.dealias(value, self.handleAliasMap)].aliases.append(key)
def addConstants(self):
for constantName in [k for k,v in self.registry.enumvaluedict.items() if v == 'API Constants']:
def addConstants(self, constantNames: list[str]):
for constantName in constantNames:
enumInfo = self.registry.enumdict[constantName]
typeName = enumInfo.type
valueStr = enumInfo.elem.get('value')
# These values are represented in c-style
if valueStr.upper().endswith('F'):
isHex = valueStr.upper().startswith('0X')
intBase = 16 if isHex else 10
if valueStr.upper().endswith('F') and not isHex:
value = float(valueStr[:-1])
elif valueStr.upper().endswith('U)'):
inner_number = int(valueStr.removeprefix("(~").removesuffix(")")[:-1])
inner_number = int(valueStr.removeprefix("(~").removesuffix(")")[:-1], intBase)
value = (~inner_number) & ((1 << 32) - 1)
elif valueStr.upper().endswith('ULL)'):
inner_number = int(valueStr.removeprefix("(~").removesuffix(")")[:-3])
inner_number = int(valueStr.removeprefix("(~").removesuffix(")")[:-3], intBase)
value = (~0) & ((1 << 64) - 1)
else:
value = int(valueStr)
value = int(valueStr, intBase)
self.vk.constants[constantName] = Constant(constantName, typeName, value, valueStr)
def addVideoCodecs(self):
for xmlVideoCodec in self.registry.tree.findall('videocodecs/videocodec'):
name = xmlVideoCodec.get('name')
extend = xmlVideoCodec.get('extend')
value = xmlVideoCodec.get('value')
profiles: dict[str, VideoProfiles] = {}
capabilities: dict[str, str] = {}
formats: dict[str, VideoFormat] = {}
if extend is not None:
# Inherit base profiles, capabilities, and formats
profiles = copy.deepcopy(self.vk.videoCodecs[extend].profiles)
capabilities = copy.deepcopy(self.vk.videoCodecs[extend].capabilities)
formats = copy.deepcopy(self.vk.videoCodecs[extend].formats)
for xmlVideoProfiles in xmlVideoCodec.findall('videoprofiles'):
videoProfileStructName = xmlVideoProfiles.get('struct')
videoProfileStructMembers : dict[str, VideoProfileMember] = {}
for xmlVideoProfileMember in xmlVideoProfiles.findall('videoprofilemember'):
memberName = xmlVideoProfileMember.get('name')
memberValues: dict[str, str] = {}
for xmlVideoProfile in xmlVideoProfileMember.findall('videoprofile'):
memberValues[xmlVideoProfile.get('value')] = xmlVideoProfile.get('name')
videoProfileStructMembers[memberName] = VideoProfileMember(memberName, memberValues)
profiles[videoProfileStructName] = VideoProfiles(videoProfileStructName, videoProfileStructMembers)
for xmlVideoCapabilities in xmlVideoCodec.findall('videocapabilities'):
capabilities[xmlVideoCapabilities.get('struct')] = xmlVideoCapabilities.get('struct')
for xmlVideoFormat in xmlVideoCodec.findall('videoformat'):
videoFormatName = xmlVideoFormat.get('name')
videoFormatExtend = xmlVideoFormat.get('extend')
videoFormatRequiredCaps: list[VideoRequiredCapabilities] = []
videoFormatProps: dict[str, str] = {}
if videoFormatName is not None:
# This is a new video format category
videoFormatUsage = xmlVideoFormat.get('usage')
videoFormat = VideoFormat(videoFormatName, videoFormatUsage, videoFormatRequiredCaps, videoFormatProps)
formats[videoFormatName] = videoFormat
else:
# This is an extension to an already defined video format category
videoFormat = formats[videoFormatExtend]
videoFormatRequiredCaps = videoFormat.requiredCaps
videoFormatProps = videoFormat.properties
for xmlVideoFormatRequiredCap in xmlVideoFormat.findall('videorequirecapabilities'):
requiredCap = VideoRequiredCapabilities(xmlVideoFormatRequiredCap.get('struct'),
xmlVideoFormatRequiredCap.get('member'),
xmlVideoFormatRequiredCap.get('value'))
videoFormatRequiredCaps.append(requiredCap)
for xmlVideoFormatProperties in xmlVideoFormat.findall('videoformatproperties'):
videoFormatProps[xmlVideoFormatProperties.get('struct')] = xmlVideoFormatProperties.get('struct')
self.vk.videoCodecs[name] = VideoCodec(name, value, profiles, capabilities, formats)
def endFile(self):
# This is the point were reg.py has ran, everything is collected
# We do some post processing now
self.applyExtensionDependency()
self.addConstants()
self.addConstants([k for k,v in self.registry.enumvaluedict.items() if v == 'API Constants'])
self.addVideoCodecs()
self.vk.headerVersionComplete = APISpecific.createHeaderVersion(self.targetApiName, self.vk)
@ -463,10 +546,6 @@ class BaseGenerator(OutputGenerator):
handle.device = next_parent.name == 'VkDevice'
next_parent = next_parent.parent
# This use to be Queues.ALL, but there is no real concept of "all"
# Found this just needs to be something non-None
maxSyncSupport.queues = Queues.TRANSFER
maxSyncSupport.stages = self.vk.bitmasks['VkPipelineStageFlagBits2'].flags
maxSyncEquivalent.accesses = self.vk.bitmasks['VkAccessFlagBits2'].flags
maxSyncEquivalent.stages = self.vk.bitmasks['VkPipelineStageFlagBits2'].flags
@ -789,6 +868,9 @@ class BaseGenerator(OutputGenerator):
if fixedSizeArray and not length:
length = ','.join(fixedSizeArray)
# Handle C bit field members
bitFieldWidth = int(cdecl.split(':')[1]) if ':' in cdecl else None
# if a pointer, this can be a something like:
# optional="true,false" for ppGeometries
# optional="false,true" for pPhysicalDeviceCount
@ -801,7 +883,7 @@ class BaseGenerator(OutputGenerator):
members.append(Member(name, type, fullType, noautovalidity, limittype,
const, length, nullTerminated, pointer, fixedSizeArray,
optional, optionalPointer,
externSync, cdecl))
externSync, cdecl, bitFieldWidth))
self.vk.structs[typeName] = Struct(typeName, [], extension, self.currentVersion, protect, members,
union, returnedOnly, sType, allowDuplicate, extends, extendedBy)
@ -975,3 +1057,119 @@ class BaseGenerator(OutputGenerator):
stages.append(SyncPipelineStage(order, before, after, value))
self.vk.syncPipeline.append(SyncPipeline(name, depends, stages))
#
# This object handles all the parsing from the video.xml (i.e. Video Std header definitions)
# It will fill in video standard definitions into the VulkanObject
class _VideoStdGenerator(BaseGenerator):
def __init__(self):
BaseGenerator.__init__(self)
self.vk.videoStd = VideoStd()
# Track the current Video Std header we are processing
self.currentVideoStdHeader = None
def write(self, data):
# We do not write anything here
return
def beginFile(self, genOpts):
# We intentionally skip default BaseGenerator behavior
OutputGenerator.beginFile(self, genOpts)
def endFile(self):
# Move parsed definitions to the Video Std definitions
self.vk.videoStd.enums = self.vk.enums
self.vk.videoStd.structs = self.vk.structs
self.vk.videoStd.constants = self.vk.constants
# We intentionally skip default BaseGenerator behavior
OutputGenerator.endFile(self)
def beginFeature(self, interface, emit):
# We intentionally skip default BaseGenerator behavior
OutputGenerator.beginFeature(self, interface, emit)
# Only "extension" is possible in the video.xml, identifying the Video Std header
assert interface.tag == 'extension'
name = interface.get('name')
version: (str | None) = None
depends: list[str] = []
# Handle Video Std header version constant
for enum in interface.findall('require/enum[@value]'):
enumName = enum.get('name')
if enumName.endswith('_SPEC_VERSION'):
version = enum.get('value')
# Handle dependencies on other Video Std headers
for type in interface.findall('require/type[@name]'):
typeName = type.get('name')
if typeName.startswith('vk_video/'):
depends.append(typeName[len('vk_video/'):-len('.h')])
headerFile = f'vk_video/{name}.h'
self.vk.videoStd.headers[name] = VideoStdHeader(name, version, headerFile, depends)
self.currentVideoStdHeader = self.vk.videoStd.headers[name]
# Handle constants here as that seems the most straightforward
constantNames = []
for enum in interface.findall('require/enum[@type]'):
constantNames.append(enum.get('name'))
self.addConstants(constantNames)
for constantName in constantNames:
self.vk.constants[constantName].videoStdHeader = self.currentVideoStdHeader.name
def endFeature(self):
self.currentVideoStdHeader = None
# We intentionally skip default BaseGenerator behavior
OutputGenerator.endFeature(self)
def genCmd(self, cmdinfo, name, alias):
# video.xml should not contain any commands
assert False
def genGroup(self, groupinfo, groupName, alias):
BaseGenerator.genGroup(self, groupinfo, groupName, alias)
# We are supposed to be inside a video std header
assert self.currentVideoStdHeader is not None
# Mark the enum with the Video Std header it comes from
if groupinfo.elem.get('type') == 'enum':
assert alias is None
self.vk.enums[groupName].videoStdHeader = self.currentVideoStdHeader.name
def genType(self, typeInfo, typeName, alias):
BaseGenerator.genType(self, typeInfo, typeName, alias)
# We are supposed to be inside a video std header
assert self.currentVideoStdHeader is not None
# Mark the struct with the Video Std header it comes from
if typeInfo.elem.get('category') == 'struct':
assert alias is None
self.vk.structs[typeName].videoStdHeader = self.currentVideoStdHeader.name
def genSpirv(self, spirvinfo, spirvName, alias):
# video.xml should not contain any SPIR-V info
assert False
def genFormat(self, format, formatinfo, alias):
# video.xml should not contain any format info
assert False
def genSyncStage(self, sync):
# video.xml should not contain any sync stage info
assert False
def genSyncAccess(self, sync):
# video.xml should not contain any sync access info
assert False
def genSyncPipeline(self, sync):
# video.xml should not contain any sync pipeline info
assert False

File diff suppressed because it is too large Load diff

View file

@ -123,7 +123,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>chroma_sample_loc_type_top_field</name></member>
<member><type>uint8_t</type> <name>chroma_sample_loc_type_bottom_field</name></member>
<member><type>uint32_t</type> <name>reserved1</name><comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoH264HrdParameters</type>* <name>pHrdParameters</name><comment>must be a valid ptr to hrd_parameters, if nal_hrd_parameters_present_flag or vcl_hrd_parameters_present_flag are set</comment></member>
<member optional="true">const <type>StdVideoH264HrdParameters</type>* <name>pHrdParameters</name><comment>must be a valid ptr to hrd_parameters, if nal_hrd_parameters_present_flag or vcl_hrd_parameters_present_flag are set</comment></member>
</type>
<type category="struct" name="StdVideoH264SpsFlags">
<member><type>uint32_t</type> <name>constraint_set0_flag</name> : 1</member>
@ -190,9 +190,9 @@ The current public version of video.xml is maintained in the default branch
pOffsetForRefFrame is a pointer representing the offset_for_ref_frame array with num_ref_frames_in_pic_order_cnt_cycle number of elements.
If pOffsetForRefFrame has nullptr value, then num_ref_frames_in_pic_order_cnt_cycle must also be "0".
</comment>
<member>const <type>int32_t</type>* <name>pOffsetForRefFrame</name></member>
<member>const <type>StdVideoH264ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if seq_scaling_matrix_present_flag is set</comment></member>
<member>const <type>StdVideoH264SequenceParameterSetVui</type>* <name>pSequenceParameterSetVui</name><comment>Must be a valid pointer if StdVideoH264SpsFlags:vui_parameters_present_flag is set</comment></member>
<member len="num_ref_frames_in_pic_order_cnt_cycle">const <type>int32_t</type>* <name>pOffsetForRefFrame</name></member>
<member optional="true">const <type>StdVideoH264ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if seq_scaling_matrix_present_flag is set</comment></member>
<member optional="true">const <type>StdVideoH264SequenceParameterSetVui</type>* <name>pSequenceParameterSetVui</name><comment>Must be a valid pointer if StdVideoH264SpsFlags:vui_parameters_present_flag is set</comment></member>
</type>
<type category="struct" name="StdVideoH264PpsFlags">
<member><type>uint32_t</type> <name>transform_8x8_mode_flag</name> : 1</member>
@ -215,7 +215,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>int8_t</type> <name>pic_init_qs_minus26</name></member>
<member><type>int8_t</type> <name>chroma_qp_index_offset</name></member>
<member><type>int8_t</type> <name>second_chroma_qp_index_offset</name></member>
<member>const <type>StdVideoH264ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if StdVideoH264PpsFlags::pic_scaling_matrix_present_flag is set.</comment></member>
<member optional="true">const <type>StdVideoH264ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if StdVideoH264PpsFlags::pic_scaling_matrix_present_flag is set.</comment></member>
</type>
<!-- vulkan_video_codec_h264std_decode.h enumerated types -->
@ -329,9 +329,9 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>refList1ModOpCount</name></member>
<member><type>uint8_t</type> <name>refPicMarkingOpCount</name></member>
<member><type>uint8_t</type> <name>reserved1</name>[7]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoEncodeH264RefListModEntry</type>* <name>pRefList0ModOperations</name><comment>Must be a valid pointer to an array with size refList0ModOpCount if ref_pic_list_modification_flag_l0 is set and contains the RefList0 modification parameters as defined in section 7.4.3.1</comment></member>
<member>const <type>StdVideoEncodeH264RefListModEntry</type>* <name>pRefList1ModOperations</name><comment>Must be a valid pointer to an array with size refList1ModOpCount if ref_pic_list_modification_flag_l1 is set and contains the RefList1 modification parameters as defined in section 7.4.3.1</comment></member>
<member>const <type>StdVideoEncodeH264RefPicMarkingEntry</type>* <name>pRefPicMarkingOperations</name><comment>Must be a valid pointer to an array with size refPicMarkingOpCount and contains the reference picture markings as defined in section 7.4.3.3</comment></member>
<member len="refList0ModOpCount">const <type>StdVideoEncodeH264RefListModEntry</type>* <name>pRefList0ModOperations</name><comment>Must be a valid pointer to an array with size refList0ModOpCount if ref_pic_list_modification_flag_l0 is set and contains the RefList0 modification parameters as defined in section 7.4.3.1</comment></member>
<member len="refList1ModOpCount">const <type>StdVideoEncodeH264RefListModEntry</type>* <name>pRefList1ModOperations</name><comment>Must be a valid pointer to an array with size refList1ModOpCount if ref_pic_list_modification_flag_l1 is set and contains the RefList1 modification parameters as defined in section 7.4.3.1</comment></member>
<member len="refPicMarkingOpCount">const <type>StdVideoEncodeH264RefPicMarkingEntry</type>* <name>pRefPicMarkingOperations</name><comment>Must be a valid pointer to an array with size refPicMarkingOpCount and contains the reference picture markings as defined in section 7.4.3.3</comment></member>
</type>
<type category="struct" name="StdVideoEncodeH264PictureInfo">
<member><type>StdVideoEncodeH264PictureInfoFlags</type> <name>flags</name></member>
@ -343,7 +343,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>int32_t</type> <name>PicOrderCnt</name><comment>Picture order count, as defined in 8.2</comment></member>
<member><type>uint8_t</type> <name>temporal_id</name><comment>Temporal identifier of the picture, as defined in G.7.3.1.1 / G.7.4.1.1</comment></member>
<member><type>uint8_t</type> <name>reserved1</name>[3]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoEncodeH264ReferenceListsInfo</type>* <name>pRefLists</name></member>
<member optional="true">const <type>StdVideoEncodeH264ReferenceListsInfo</type>* <name>pRefLists</name></member>
</type>
<type category="struct" name="StdVideoEncodeH264ReferenceInfo">
<member><type>StdVideoEncodeH264ReferenceInfoFlags</type> <name>flags</name></member>
@ -364,7 +364,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>reserved1</name><comment>Reserved for future use and must be initialized with 0.</comment></member>
<member><type>StdVideoH264CabacInitIdc</type> <name>cabac_init_idc</name></member>
<member><type>StdVideoH264DisableDeblockingFilterIdc</type> <name>disable_deblocking_filter_idc</name></member>
<member>const <type>StdVideoEncodeH264WeightTable</type>* <name>pWeightTable</name><comment></comment></member>
<member optional="true">const <type>StdVideoEncodeH264WeightTable</type>* <name>pWeightTable</name><comment></comment></member>
</type>
<!-- vulkan_video_codec_h265std.h enumerated types -->
@ -423,8 +423,9 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>cpb_cnt_minus1</name>[<enum>STD_VIDEO_H265_SUBLAYERS_LIST_SIZE</enum>]</member>
<member><type>uint16_t</type> <name>elemental_duration_in_tc_minus1</name>[<enum>STD_VIDEO_H265_SUBLAYERS_LIST_SIZE</enum>]</member>
<member><type>uint16_t</type> <name>reserved</name>[3]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoH265SubLayerHrdParameters</type>* <name>pSubLayerHrdParametersNal</name><comment>if flags.nal_hrd_parameters_present_flag is set, then this must be a ptr to an array of StdVideoH265SubLayerHrdParameters with a size specified by sps_max_sub_layers_minus1 + 1 or vps_max_sub_layers_minus1 + 1, depending on whether the HRD parameters are part of the SPS or VPS, respectively.</comment></member>
<member>const <type>StdVideoH265SubLayerHrdParameters</type>* <name>pSubLayerHrdParametersVcl</name><comment>if flags.vcl_hrd_parameters_present_flag is set, then this must be a ptr to an array of StdVideoH265SubLayerHrdParameters with a size specified by sps_max_sub_layers_minus1 + 1 or vps_max_sub_layers_minus1 + 1, depending on whether the HRD parameters are part of the SPS or VPS, respectively.</comment></member>
<!-- NOTE: These arrays are sized according to parameters coming from their encompassing structures -->
<member optional="true" len="sps_max_sub_layers_minus1 + 1,vps_max_sub_layers_minus1 + 1">const <type>StdVideoH265SubLayerHrdParameters</type>* <name>pSubLayerHrdParametersNal</name><comment>if flags.nal_hrd_parameters_present_flag is set, then this must be a ptr to an array of StdVideoH265SubLayerHrdParameters with a size specified by sps_max_sub_layers_minus1 + 1 or vps_max_sub_layers_minus1 + 1, depending on whether the HRD parameters are part of the SPS or VPS, respectively.</comment></member>
<member optional="true" len="sps_max_sub_layers_minus1 + 1,vps_max_sub_layers_minus1 + 1">const <type>StdVideoH265SubLayerHrdParameters</type>* <name>pSubLayerHrdParametersVcl</name><comment>if flags.vcl_hrd_parameters_present_flag is set, then this must be a ptr to an array of StdVideoH265SubLayerHrdParameters with a size specified by sps_max_sub_layers_minus1 + 1 or vps_max_sub_layers_minus1 + 1, depending on whether the HRD parameters are part of the SPS or VPS, respectively.</comment></member>
</type>
<type category="struct" name="StdVideoH265VpsFlags">
<member><type>uint32_t</type> <name>vps_temporal_id_nesting_flag</name> : 1</member>
@ -442,9 +443,9 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint32_t</type> <name>vps_time_scale</name></member>
<member><type>uint32_t</type> <name>vps_num_ticks_poc_diff_one_minus1</name></member>
<member><type>uint32_t</type> <name>reserved3</name><comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoH265DecPicBufMgr</type>* <name>pDecPicBufMgr</name></member>
<member>const <type>StdVideoH265HrdParameters</type>* <name>pHrdParameters</name></member>
<member>const <type>StdVideoH265ProfileTierLevel</type>* <name>pProfileTierLevel</name></member>
<member optional="true">const <type>StdVideoH265DecPicBufMgr</type>* <name>pDecPicBufMgr</name></member>
<member optional="true">const <type>StdVideoH265HrdParameters</type>* <name>pHrdParameters</name></member>
<member optional="true">const <type>StdVideoH265ProfileTierLevel</type>* <name>pProfileTierLevel</name></member>
</type>
<type category="struct" name="StdVideoH265ScalingLists">
<member><type>uint8_t</type> <name>ScalingList4x4</name>[<enum>STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS</enum>][<enum>STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS</enum>]<comment>ScalingList[ 0 ][ MatrixID ][ i ] (sizeID = 0)</comment></member>
@ -524,7 +525,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>max_bits_per_min_cu_denom</name></member>
<member><type>uint8_t</type> <name>log2_max_mv_length_horizontal</name></member>
<member><type>uint8_t</type> <name>log2_max_mv_length_vertical</name></member>
<member>const <type>StdVideoH265HrdParameters</type>* <name>pHrdParameters</name></member>
<member optional="true">const <type>StdVideoH265HrdParameters</type>* <name>pHrdParameters</name></member>
</type>
<type category="struct" name="StdVideoH265PredictorPaletteEntries">
<member><type>uint16_t</type> <name>PredictorPaletteEntries</name>[<enum>STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE</enum>][<enum>STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE</enum>]</member>
@ -606,13 +607,13 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint32_t</type> <name>conf_win_right_offset</name></member>
<member><type>uint32_t</type> <name>conf_win_top_offset</name></member>
<member><type>uint32_t</type> <name>conf_win_bottom_offset</name></member>
<member>const <type>StdVideoH265ProfileTierLevel</type>* <name>pProfileTierLevel</name></member>
<member>const <type>StdVideoH265DecPicBufMgr</type>* <name>pDecPicBufMgr</name></member>
<member>const <type>StdVideoH265ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if sps_scaling_list_data_present_flag is set</comment></member>
<member>const <type>StdVideoH265ShortTermRefPicSet</type>* <name>pShortTermRefPicSet</name><comment>Must be a valid pointer to an array with size num_short_term_ref_pic_sets if num_short_term_ref_pic_sets is not 0.</comment></member>
<member>const <type>StdVideoH265LongTermRefPicsSps</type>* <name>pLongTermRefPicsSps</name><comment>Must be a valid pointer if long_term_ref_pics_present_flag is set</comment></member>
<member>const <type>StdVideoH265SequenceParameterSetVui</type>* <name>pSequenceParameterSetVui</name><comment>Must be a valid pointer if StdVideoH265SpsFlags:vui_parameters_present_flag is set palette_max_size</comment></member>
<member>const <type>StdVideoH265PredictorPaletteEntries</type>* <name>pPredictorPaletteEntries</name><comment>Must be a valid pointer if sps_palette_predictor_initializer_present_flag is set</comment></member>
<member optional="true">const <type>StdVideoH265ProfileTierLevel</type>* <name>pProfileTierLevel</name></member>
<member optional="true">const <type>StdVideoH265DecPicBufMgr</type>* <name>pDecPicBufMgr</name></member>
<member optional="true">const <type>StdVideoH265ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if sps_scaling_list_data_present_flag is set</comment></member>
<member len="num_short_term_ref_pic_sets">const <type>StdVideoH265ShortTermRefPicSet</type>* <name>pShortTermRefPicSet</name><comment>Must be a valid pointer to an array with size num_short_term_ref_pic_sets if num_short_term_ref_pic_sets is not 0.</comment></member>
<member optional="true">const <type>StdVideoH265LongTermRefPicsSps</type>* <name>pLongTermRefPicsSps</name><comment>Must be a valid pointer if long_term_ref_pics_present_flag is set</comment></member>
<member optional="true">const <type>StdVideoH265SequenceParameterSetVui</type>* <name>pSequenceParameterSetVui</name><comment>Must be a valid pointer if StdVideoH265SpsFlags:vui_parameters_present_flag is set palette_max_size</comment></member>
<member optional="true">const <type>StdVideoH265PredictorPaletteEntries</type>* <name>pPredictorPaletteEntries</name><comment>Must be a valid pointer if sps_palette_predictor_initializer_present_flag is set</comment></member>
</type>
<type category="struct" name="StdVideoH265PpsFlags">
<member><type>uint32_t</type> <name>dependent_slice_segments_enabled_flag</name> : 1</member>
@ -694,8 +695,8 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint16_t</type> <name>column_width_minus1</name>[<enum>STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE</enum>]</member>
<member><type>uint16_t</type> <name>row_height_minus1</name>[<enum>STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE</enum>]</member>
<member><type>uint32_t</type> <name>reserved3</name><comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoH265ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if pps_scaling_list_data_present_flag is set</comment></member>
<member>const <type>StdVideoH265PredictorPaletteEntries</type>* <name>pPredictorPaletteEntries</name><comment>Must be a valid pointer if pps_palette_predictor_initializer_present_flag is set</comment></member>
<member optional="true">const <type>StdVideoH265ScalingLists</type>* <name>pScalingLists</name><comment>Must be a valid pointer if pps_scaling_list_data_present_flag is set</comment></member>
<member optional="true">const <type>StdVideoH265PredictorPaletteEntries</type>* <name>pPredictorPaletteEntries</name><comment>Must be a valid pointer if pps_palette_predictor_initializer_present_flag is set</comment></member>
</type>
<!-- vulkan_video_codec_h265std_decode.h structs -->
@ -793,7 +794,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>int8_t</type> <name>slice_act_cr_qp_offset</name></member>
<member><type>int8_t</type> <name>slice_qp_delta</name></member>
<member><type>uint16_t</type> <name>reserved1</name><comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoEncodeH265WeightTable</type>* <name>pWeightTable</name><comment></comment></member>
<member optional="true">const <type>StdVideoEncodeH265WeightTable</type>* <name>pWeightTable</name><comment></comment></member>
</type>
<type category="struct" name="StdVideoEncodeH265ReferenceListsInfoFlags">
<member><type>uint32_t</type> <name>ref_pic_list_modification_flag_l0</name> : 1</member>
@ -831,9 +832,9 @@ The current public version of video.xml is maintained in the default branch
<member><type>int32_t</type> <name>PicOrderCntVal</name><comment>Picture order count derived as specified in 8.3.1</comment></member>
<member><type>uint8_t</type> <name>TemporalId</name><comment>Temporal ID, as defined in 7.4.2.2</comment></member>
<member><type>uint8_t</type> <name>reserved1</name>[7]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoEncodeH265ReferenceListsInfo</type>* <name>pRefLists</name></member>
<member>const <type>StdVideoH265ShortTermRefPicSet</type>* <name>pShortTermRefPicSet</name><comment>Must be a valid pointer if short_term_ref_pic_set_sps_flag is not set</comment></member>
<member>const <type>StdVideoEncodeH265LongTermRefPics</type>* <name>pLongTermRefPics</name><comment>Must be a valid pointer if long_term_ref_pics_present_flag is set</comment></member>
<member optional="true">const <type>StdVideoEncodeH265ReferenceListsInfo</type>* <name>pRefLists</name></member>
<member optional="true">const <type>StdVideoH265ShortTermRefPicSet</type>* <name>pShortTermRefPicSet</name><comment>Must be a valid pointer if short_term_ref_pic_set_sps_flag is not set</comment></member>
<member optional="true">const <type>StdVideoEncodeH265LongTermRefPics</type>* <name>pLongTermRefPics</name><comment>Must be a valid pointer if long_term_ref_pics_present_flag is set</comment></member>
</type>
<type category="struct" name="StdVideoEncodeH265ReferenceInfoFlags">
<member><type>uint32_t</type> <name>used_for_long_term_reference</name> : 1<comment>A picture that is marked as "used for long-term reference", derived binary value from clause 8.3.2 Decoding process for reference picture set</comment></member>
@ -931,9 +932,9 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>tile_cols_log2</name></member>
<member><type>uint8_t</type> <name>tile_rows_log2</name></member>
<member><type>uint16_t</type> <name>reserved1</name>[3]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoVP9ColorConfig</type>* <name>pColorConfig</name></member>
<member>const <type>StdVideoVP9LoopFilter</type>* <name>pLoopFilter</name></member>
<member>const <type>StdVideoVP9Segmentation</type>* <name>pSegmentation</name></member>
<member>const <type>StdVideoVP9ColorConfig</type>* <name>pColorConfig</name></member>
<member>const <type>StdVideoVP9LoopFilter</type>* <name>pLoopFilter</name></member>
<member optional="true">const <type>StdVideoVP9Segmentation</type>* <name>pSegmentation</name></member>
</type>
<!-- vulkan_video_codec_av1std.h enumerated types -->
@ -1018,8 +1019,8 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>seq_force_integer_mv</name><comment>The final value of of seq_force_integer_mv per the value of seq_choose_integer_mv.</comment></member>
<member><type>uint8_t</type> <name>seq_force_screen_content_tools</name><comment>The final value of of seq_force_screen_content_tools per the value of seq_choose_screen_content_tools.</comment></member>
<member><type>uint8_t</type> <name>reserved1</name>[5]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoAV1ColorConfig</type>* <name>pColorConfig</name></member>
<member>const <type>StdVideoAV1TimingInfo</type>* <name>pTimingInfo</name></member>
<member>const <type>StdVideoAV1ColorConfig</type>* <name>pColorConfig</name></member>
<member optional="true">const <type>StdVideoAV1TimingInfo</type>* <name>pTimingInfo</name></member>
</type>
<type category="struct" name="StdVideoAV1LoopFilterFlags">
<comment>Syntax defined in section 5.9.11, semantics defined in section 6.8.10</comment>
@ -1074,10 +1075,10 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint16_t</type> <name>context_update_tile_id</name></member>
<member><type>uint8_t</type> <name>tile_size_bytes_minus_1</name></member>
<member><type>uint8_t</type> <name>reserved1</name>[7]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>uint16_t</type>* <name>pMiColStarts</name><comment>TileCols number of elements</comment></member>
<member>const <type>uint16_t</type>* <name>pMiRowStarts</name><comment>TileRows number of elements</comment></member>
<member>const <type>uint16_t</type>* <name>pWidthInSbsMinus1</name><comment>TileCols number of elements</comment></member>
<member>const <type>uint16_t</type>* <name>pHeightInSbsMinus1</name><comment>TileRows number of elements</comment></member>
<member len="TileCols">const <type>uint16_t</type>* <name>pMiColStarts</name><comment>TileCols number of elements</comment></member>
<member len="TileRows">const <type>uint16_t</type>* <name>pMiRowStarts</name><comment>TileRows number of elements</comment></member>
<member len="TileCols">const <type>uint16_t</type>* <name>pWidthInSbsMinus1</name><comment>TileCols number of elements</comment></member>
<member len="TileRows">const <type>uint16_t</type>* <name>pHeightInSbsMinus1</name><comment>TileRows number of elements</comment></member>
</type>
<type category="struct" name="StdVideoAV1CDEF">
<comment>Syntax defined in section 5.9.19, semantics defined in section 6.10.14</comment>
@ -1185,14 +1186,14 @@ The current public version of video.xml is maintained in the default branch
<member><type>uint8_t</type> <name>reserved2</name>[3]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member><type>uint8_t</type> <name>OrderHints</name>[<enum>STD_VIDEO_AV1_NUM_REF_FRAMES</enum>]</member>
<member><type>uint32_t</type> <name>expectedFrameId</name>[<enum>STD_VIDEO_AV1_NUM_REF_FRAMES</enum>]</member>
<member>const <type>StdVideoAV1TileInfo</type>* <name>pTileInfo</name></member>
<member>const <type>StdVideoAV1Quantization</type>* <name>pQuantization</name></member>
<member>const <type>StdVideoAV1Segmentation</type>* <name>pSegmentation</name></member>
<member>const <type>StdVideoAV1LoopFilter</type>* <name>pLoopFilter</name></member>
<member>const <type>StdVideoAV1CDEF</type>* <name>pCDEF</name></member>
<member>const <type>StdVideoAV1LoopRestoration</type>* <name>pLoopRestoration</name></member>
<member>const <type>StdVideoAV1GlobalMotion</type>* <name>pGlobalMotion</name></member>
<member>const <type>StdVideoAV1FilmGrain</type>* <name>pFilmGrain</name></member>
<member>const <type>StdVideoAV1TileInfo</type>* <name>pTileInfo</name></member>
<member>const <type>StdVideoAV1Quantization</type>* <name>pQuantization</name></member>
<member optional="true">const <type>StdVideoAV1Segmentation</type>* <name>pSegmentation</name></member>
<member>const <type>StdVideoAV1LoopFilter</type>* <name>pLoopFilter</name></member>
<member optional="true">const <type>StdVideoAV1CDEF</type>* <name>pCDEF</name></member>
<member optional="true">const <type>StdVideoAV1LoopRestoration</type>* <name>pLoopRestoration</name></member>
<member>const <type>StdVideoAV1GlobalMotion</type>* <name>pGlobalMotion</name></member>
<member optional="true">const <type>StdVideoAV1FilmGrain</type>* <name>pFilmGrain</name></member>
</type>
<type category="struct" name="StdVideoDecodeAV1ReferenceInfoFlags">
<member><type>uint32_t</type> <name>disable_frame_end_update_cdf</name> : 1</member>
@ -1286,15 +1287,15 @@ The current public version of video.xml is maintained in the default branch
<member><type>int8_t</type> <name>ref_frame_idx</name>[<enum>STD_VIDEO_AV1_REFS_PER_FRAME</enum>]</member>
<member><type>uint8_t</type> <name>reserved1</name>[3]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member><type>uint32_t</type> <name>delta_frame_id_minus_1</name>[<enum>STD_VIDEO_AV1_REFS_PER_FRAME</enum>]</member>
<member>const <type>StdVideoAV1TileInfo</type>* <name>pTileInfo</name></member>
<member>const <type>StdVideoAV1Quantization</type>* <name>pQuantization</name></member>
<member>const <type>StdVideoAV1Segmentation</type>* <name>pSegmentation</name></member>
<member>const <type>StdVideoAV1LoopFilter</type>* <name>pLoopFilter</name></member>
<member>const <type>StdVideoAV1CDEF</type>* <name>pCDEF</name></member>
<member>const <type>StdVideoAV1LoopRestoration</type>* <name>pLoopRestoration</name></member>
<member>const <type>StdVideoAV1GlobalMotion</type>* <name>pGlobalMotion</name></member>
<member>const <type>StdVideoEncodeAV1ExtensionHeader</type>* <name>pExtensionHeader</name></member>
<member>const <type>uint32_t</type>* <name>pBufferRemovalTimes</name></member>
<member optional="true">const <type>StdVideoAV1TileInfo</type>* <name>pTileInfo</name></member>
<member>const <type>StdVideoAV1Quantization</type>* <name>pQuantization</name></member>
<member optional="true">const <type>StdVideoAV1Segmentation</type>* <name>pSegmentation</name></member>
<member>const <type>StdVideoAV1LoopFilter</type>* <name>pLoopFilter</name></member>
<member optional="true">const <type>StdVideoAV1CDEF</type>* <name>pCDEF</name></member>
<member optional="true">const <type>StdVideoAV1LoopRestoration</type>* <name>pLoopRestoration</name></member>
<member>const <type>StdVideoAV1GlobalMotion</type>* <name>pGlobalMotion</name></member>
<member optional="true">const <type>StdVideoEncodeAV1ExtensionHeader</type>* <name>pExtensionHeader</name></member>
<member optional="true">const <type>uint32_t</type>* <name>pBufferRemovalTimes</name></member>
</type>
<type category="struct" name="StdVideoEncodeAV1ReferenceInfoFlags">
<!-- TODO: Are these needed? For now it is simply copied from AV1 decode -->
@ -1308,7 +1309,7 @@ The current public version of video.xml is maintained in the default branch
<member><type>StdVideoAV1FrameType</type> <name>frame_type</name></member>
<member><type>uint8_t</type> <name>OrderHint</name></member>
<member><type>uint8_t</type> <name>reserved1</name>[3]<comment>Reserved for future use and must be initialized with 0.</comment></member>
<member>const <type>StdVideoEncodeAV1ExtensionHeader</type>* <name>pExtensionHeader</name></member>
<member optional="true">const <type>StdVideoEncodeAV1ExtensionHeader</type>* <name>pExtensionHeader</name></member>
</type>
</types>
@ -1722,14 +1723,14 @@ The current public version of video.xml is maintained in the default branch
<require>
<type name="vk_video/vulkan_video_codecs_common.h"/>
<enum name="STD_VIDEO_H264_CPB_CNT_LIST_SIZE" value="32"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS" value="6"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS" value="16"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS" value="6"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS" value="64"/>
<enum name="STD_VIDEO_H264_MAX_NUM_LIST_REF" value="32"/>
<enum name="STD_VIDEO_H264_MAX_CHROMA_PLANES" value="2"/>
<enum name="STD_VIDEO_H264_NO_REFERENCE_PICTURE" value="0xFF"/>
<enum name="STD_VIDEO_H264_CPB_CNT_LIST_SIZE" value="32" type="uint32_t"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS" value="16" type="uint32_t"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_H264_MAX_NUM_LIST_REF" value="32" type="uint32_t"/>
<enum name="STD_VIDEO_H264_MAX_CHROMA_PLANES" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_H264_NO_REFERENCE_PICTURE" value="0xFF" type="uint8_t"/>
<type name="StdVideoH264ChromaFormatIdc"/>
<type name="StdVideoH264ProfileIdc"/>
@ -1763,7 +1764,7 @@ The current public version of video.xml is maintained in the default branch
<enum name="VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION" value="VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0"/>
<enum name="VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME" value="&quot;VK_STD_vulkan_video_codec_h264_decode&quot;"/>
<enum name="STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE" value="2"/>
<enum name="STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE" value="2" type="uint32_t"/>
<type name="StdVideoDecodeH264FieldOrderCount"/>
<type name="StdVideoDecodeH264PictureInfoFlags"/>
@ -1798,29 +1799,29 @@ The current public version of video.xml is maintained in the default branch
<require>
<type name="vk_video/vulkan_video_codecs_common.h"/>
<enum name="STD_VIDEO_H265_CPB_CNT_LIST_SIZE" value="32"/>
<enum name="STD_VIDEO_H265_SUBLAYERS_LIST_SIZE" value="7"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS" value="6"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS" value="16"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS" value="6"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS" value="64"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS" value="6"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS" value="64"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS" value="2"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS" value="64"/>
<enum name="STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE" value="6"/>
<enum name="STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE" value="19"/>
<enum name="STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE" value="21"/>
<enum name="STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE" value="3"/>
<enum name="STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE" value="128"/>
<enum name="STD_VIDEO_H265_MAX_NUM_LIST_REF" value="15"/>
<enum name="STD_VIDEO_H265_MAX_CHROMA_PLANES" value="2"/>
<enum name="STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS" value="64"/>
<enum name="STD_VIDEO_H265_MAX_DPB_SIZE" value="16"/>
<enum name="STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS" value="32"/>
<enum name="STD_VIDEO_H265_MAX_LONG_TERM_PICS" value="16"/>
<enum name="STD_VIDEO_H265_MAX_DELTA_POC" value="48"/>
<enum name="STD_VIDEO_H265_NO_REFERENCE_PICTURE" value="0xFF"/>
<enum name="STD_VIDEO_H265_CPB_CNT_LIST_SIZE" value="32" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SUBLAYERS_LIST_SIZE" value="7" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS" value="16" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE" value="19" type="uint32_t"/>
<enum name="STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE" value="21" type="uint32_t"/>
<enum name="STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE" value="3" type="uint32_t"/>
<enum name="STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE" value="128" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_NUM_LIST_REF" value="15" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_CHROMA_PLANES" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_DPB_SIZE" value="16" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS" value="32" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_LONG_TERM_PICS" value="16" type="uint32_t"/>
<enum name="STD_VIDEO_H265_MAX_DELTA_POC" value="48" type="uint32_t"/>
<enum name="STD_VIDEO_H265_NO_REFERENCE_PICTURE" value="0xFF" type="uint8_t"/>
<type name="StdVideoH265ChromaFormatIdc"/>
<type name="StdVideoH265ProfileIdc"/>
@ -1857,7 +1858,7 @@ The current public version of video.xml is maintained in the default branch
<enum name="VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION" value="VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0"/>
<enum name="VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME" value="&quot;VK_STD_vulkan_video_codec_h265_decode&quot;"/>
<enum name="STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE" value="8"/>
<enum name="STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE" value="8" type="uint32_t"/>
<type name="StdVideoDecodeH265PictureInfoFlags"/>
<type name="StdVideoDecodeH265PictureInfo"/>
@ -1890,14 +1891,14 @@ The current public version of video.xml is maintained in the default branch
<require>
<type name="vk_video/vulkan_video_codecs_common.h"/>
<enum name="STD_VIDEO_VP9_NUM_REF_FRAMES" value="8"/>
<enum name="STD_VIDEO_VP9_REFS_PER_FRAME" value="3"/>
<enum name="STD_VIDEO_VP9_MAX_REF_FRAMES" value="4"/>
<enum name="STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS" value="2"/>
<enum name="STD_VIDEO_VP9_MAX_SEGMENTS" value="8"/>
<enum name="STD_VIDEO_VP9_SEG_LVL_MAX" value="4"/>
<enum name="STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS" value="7"/>
<enum name="STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB" value="3"/>
<enum name="STD_VIDEO_VP9_NUM_REF_FRAMES" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_REFS_PER_FRAME" value="3" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_MAX_REF_FRAMES" value="4" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_MAX_SEGMENTS" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_SEG_LVL_MAX" value="4" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS" value="7" type="uint32_t"/>
<enum name="STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB" value="3" type="uint32_t"/>
<type name="StdVideoVP9Profile"/>
<type name="StdVideoVP9Level"/>
@ -1929,27 +1930,27 @@ The current public version of video.xml is maintained in the default branch
<require>
<type name="vk_video/vulkan_video_codecs_common.h"/>
<enum name="STD_VIDEO_AV1_NUM_REF_FRAMES" value="8"/>
<enum name="STD_VIDEO_AV1_REFS_PER_FRAME" value="7"/>
<enum name="STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME" value="8"/>
<enum name="STD_VIDEO_AV1_MAX_TILE_COLS" value="64"/>
<enum name="STD_VIDEO_AV1_MAX_TILE_ROWS" value="64"/>
<enum name="STD_VIDEO_AV1_MAX_SEGMENTS" value="8"/>
<enum name="STD_VIDEO_AV1_SEG_LVL_MAX" value="8"/>
<enum name="STD_VIDEO_AV1_PRIMARY_REF_NONE" value="7"/>
<enum name="STD_VIDEO_AV1_SELECT_INTEGER_MV" value="2"/>
<enum name="STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS" value="2"/>
<enum name="STD_VIDEO_AV1_SKIP_MODE_FRAMES" value="2"/>
<enum name="STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS" value="4"/>
<enum name="STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS" value="2"/>
<enum name="STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS" value="8"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_PLANES" value="3"/>
<enum name="STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS" value="6"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_Y_POINTS" value="14"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_CB_POINTS" value="10"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_CR_POINTS" value="10"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_POS_LUMA" value="24"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_POS_CHROMA" value="25"/>
<enum name="STD_VIDEO_AV1_NUM_REF_FRAMES" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_REFS_PER_FRAME" value="7" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_TILE_COLS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_TILE_ROWS" value="64" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_SEGMENTS" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_SEG_LVL_MAX" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_PRIMARY_REF_NONE" value="7" type="uint8_t"/>
<enum name="STD_VIDEO_AV1_SELECT_INTEGER_MV" value="2" type="uint8_t"/>
<enum name="STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_SKIP_MODE_FRAMES" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS" value="4" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS" value="2" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS" value="8" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_PLANES" value="3" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS" value="6" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_Y_POINTS" value="14" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_CB_POINTS" value="10" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_CR_POINTS" value="10" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_POS_LUMA" value="24" type="uint32_t"/>
<enum name="STD_VIDEO_AV1_MAX_NUM_POS_CHROMA" value="25" type="uint32_t"/>
<type name="StdVideoAV1Profile"/>
<type name="StdVideoAV1Level"/>

File diff suppressed because it is too large Load diff

View file

@ -234,6 +234,8 @@ class Member:
# - VkStructureType sType
cDeclaration: str
bitFieldWidth: (int | None) # bit width (only for bit field struct members)
def __lt__(self, other):
return self.name < other.name
@ -260,6 +262,9 @@ class Struct:
extends: list[str] # Struct names that this struct extends
extendedBy: list[str] # Struct names that can be extended by this struct
# This field is only set for enum definitions coming from Video Std headers
videoStdHeader: (str | None) = None
def __lt__(self, other):
return self.name < other.name
@ -298,6 +303,9 @@ class Enum:
# Unique list of all extension that are involved in 'fields' (superset of 'extensions')
fieldExtensions: list[str]
# This field is only set for enum definitions coming from Video Std headers
videoStdHeader: (str | None) = None
def __lt__(self, other):
return self.name < other.name
@ -366,6 +374,9 @@ class Constant:
value: (int | float)
valueStr: str # value as shown in spec (ex. "(~0U)", "256U", etc)
# This field is only set for enum definitions coming from Video Std headers
videoStdHeader: (str | None) = None
@dataclass
class FormatComponent:
"""<format/component>"""
@ -461,6 +472,75 @@ class Spirv:
capability: bool
enable: list[SpirvEnables]
@dataclass
class VideoRequiredCapabilities:
"""<videorequirecapabilities>"""
struct: str # ex) VkVideoEncodeCapabilitiesKHR
member: str # ex) flags
value: str # ex) VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR
# may contain XML boolean expressions ("+" means AND, "," means OR)
@dataclass
class VideoFormat:
"""<videoformat>"""
name: str # ex) Decode Output
usage: str # ex) VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
# may contain XML boolean expressions ("+" means AND, "," means OR)
requiredCaps: list[VideoRequiredCapabilities]
properties: dict[str, str]
def __lt__(self, other):
return self.name < other.name
@dataclass
class VideoProfileMember:
"""<videoprofilemember> and <videoprofile>"""
name: str
# Video profile struct member (value attribute of <videoprofile>) value as key,
# profile name substring (name attribute of <videoprofile>) as value
values: dict[str, str]
@dataclass
class VideoProfiles:
"""<videoprofiles>"""
name: str
members: dict[str, VideoProfileMember]
@dataclass
class VideoCodec:
"""<videocodec>"""
name: str # ex) H.264 Decode
value: (str | None) # If no video codec operation flag bit is associated with the codec
# then it is a codec category (e.g. decode, encode), not a specific codec
profiles: dict[str, VideoProfiles]
capabilities: dict[str, str]
formats: dict[str, VideoFormat]
def __lt__(self, other):
return self.name < other.name
@dataclass
class VideoStdHeader:
"""<extension> in video.xml"""
name: str # ex) vulkan_video_codec_h264std_decode
version: (str | None) # ex) VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0
# None if it is a shared common Video Std header
headerFile: str # ex) vk_video/vulkan_video_codec_h264std_decode.h
# Other Video Std headers that this one depends on
depends: list[str]
@dataclass
class VideoStd:
headers: dict[str, VideoStdHeader] = field(default_factory=dict, init=False)
enums: dict[str, Enum] = field(default_factory=dict, init=False)
structs: dict[str, Struct] = field(default_factory=dict, init=False)
constants: dict[str, Constant] = field(default_factory=dict, init=False)
# This is the global Vulkan Object that holds all the information from parsing the XML
# This class is designed so all generator scripts can use this to obtain data
@dataclass
@ -492,3 +572,9 @@ class VulkanObject():
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)
# Video Std header information from the video.xml
videoStd: (VideoStd | None) = None