Update for Vulkan-Docs 1.4.314

This commit is contained in:
Jon Leech 2025-05-05 03:15:03 -07:00 committed by Jon Leech
parent e2e53a7246
commit 9c77de5c3d
16 changed files with 584 additions and 251 deletions

View file

@ -210,6 +210,10 @@ class BaseInfo:
self.elem = elem
"etree Element for this feature"
self.deprecatedbyversion = None
self.deprecatedbyextensions = []
self.deprecatedlink = None
def resetState(self):
"""Reset required/declared to initial values. Used
@ -349,6 +353,8 @@ class FeatureInfo(BaseInfo):
self.number = 0
self.supported = None
self.deprecates = elem.findall('deprecate')
else:
# Extract vendor portion of <APIprefix>_<vendor>_<name>
self.category = self.name.split('_', 2)[1]
@ -1250,6 +1256,51 @@ class Registry:
if matchAPIProfile(api, profile, feature):
self.markRequired(featurename, feature, True)
def deprecateFeatures(self, interface, featurename, api, profile):
"""Process `<require>` tags for a `<version>` or `<extension>`.
- interface - Element for `<version>` or `<extension>`, containing
`<require>` tags
- featurename - name of the feature
- api - string specifying API name being generated
- profile - string specifying API profile being generated"""
versionmatch = APIConventions().is_api_version_name(featurename)
# <deprecate> marks things that are deprecated by this version/profile
for deprecation in interface.findall('deprecate'):
if matchAPIProfile(api, profile, deprecation):
for typeElem in deprecation.findall('type'):
type = self.lookupElementInfo(typeElem.get('name'), self.typedict)
if type:
if versionmatch is not None:
type.deprecatedbyversion = featurename
else:
type.deprecatedbyextensions += featurename
type.deprecatedlink = deprecation.get('explanationlink')
else:
self.gen.logMsg('error', typeElem.get('name'), ' is tagged for deprecation but not present in registry')
for enumElem in deprecation.findall('enum'):
enum = self.lookupElementInfo(enumElem.get('name'), self.enumdict)
if enum:
if versionmatch is not None:
enum.deprecatedbyversion = featurename
else:
enum.deprecatedbyextensions += featurename
enum.deprecatedlink = deprecation.get('explanationlink')
else:
self.gen.logMsg('error', enumElem.get('name'), ' is tagged for deprecation but not present in registry')
for cmdElem in deprecation.findall('command'):
cmd = self.lookupElementInfo(cmdElem.get('name'), self.cmddict)
if cmd:
if versionmatch is not None:
cmd.deprecatedbyversion = featurename
else:
cmd.deprecatedbyextensions += featurename
cmd.deprecatedlink = deprecation.get('explanationlink')
else:
self.gen.logMsg('error', cmdElem.get('name'), ' is tagged for deprecation but not present in registry')
def removeFeatures(self, interface, featurename, api, profile):
"""Process `<remove>` tags for a `<version>` or `<extension>`.
@ -1750,6 +1801,7 @@ class Registry:
self.gen.logMsg('diag', 'PASS 1: Tagging required and features for', f.name)
self.fillFeatureDictionary(f.elem, f.name, self.genOpts.apiname, self.genOpts.profile)
self.requireFeatures(f.elem, f.name, self.genOpts.apiname, self.genOpts.profile)
self.deprecateFeatures(f.elem, f.name, self.genOpts.apiname, self.genOpts.profile)
self.assignAdditionalValidity(f.elem, self.genOpts.apiname, self.genOpts.profile)
for f in features: