summaryrefslogtreecommitdiffhomepage
path: root/registry
diff options
context:
space:
mode:
Diffstat (limited to 'registry')
-rw-r--r--registry/cgenerator.py121
-rw-r--r--registry/generator.py191
-rwxr-xr-xregistry/genvk.py23
-rw-r--r--registry/reg.py180
-rw-r--r--registry/spec_tools/conventions.py411
-rw-r--r--registry/spec_tools/util.py2
-rw-r--r--registry/validusage.json1046
-rw-r--r--registry/vk.xml344
-rw-r--r--registry/vkconventions.py7
9 files changed, 1942 insertions, 383 deletions
diff --git a/registry/cgenerator.py b/registry/cgenerator.py
index 2efa081..65302bc 100644
--- a/registry/cgenerator.py
+++ b/registry/cgenerator.py
@@ -6,9 +6,11 @@
import os
import re
-from generator import (GeneratorOptions, OutputGenerator, noneStr,
- regSortFeatures, write)
+from generator import (GeneratorOptions,
+ MissingGeneratorOptionsConventionsError,
+ MissingGeneratorOptionsError, MissingRegistryError,
+ OutputGenerator, noneStr, regSortFeatures, write)
class CGeneratorOptions(GeneratorOptions):
"""CGeneratorOptions - subclass of GeneratorOptions.
@@ -17,12 +19,14 @@ class CGeneratorOptions(GeneratorOptions):
generation."""
def __init__(self,
- prefixText="",
+ prefixText='',
genFuncPointers=True,
protectFile=True,
protectFeature=True,
protectProto=None,
protectProtoStr=None,
+ protectExtensionProto=None,
+ protectExtensionProtoStr=None,
apicall='',
apientry='',
apientryp='',
@@ -31,6 +35,7 @@ class CGeneratorOptions(GeneratorOptions):
alignFuncParam=0,
genEnumBeginEndRange=False,
genAliasMacro=False,
+ genStructExtendsComment=False,
aliasMacro='',
misracstyle=False,
misracppstyle=False,
@@ -40,11 +45,11 @@ class CGeneratorOptions(GeneratorOptions):
Additional parameters beyond parent class:
- prefixText - list of strings to prefix generated header with
- (usually a copyright statement + calling convention macros).
+ (usually a copyright statement + calling convention macros)
- protectFile - True if multiple inclusion protection should be
- generated (based on the filename) around the entire header.
+ generated (based on the filename) around the entire header
- protectFeature - True if #ifndef..#endif protection should be
- generated around a feature interface in the header file.
+ generated around a feature interface in the header file
- genFuncPointers - True if function pointer typedefs should be
generated
- protectProto - If conditional protection should be generated
@@ -54,12 +59,19 @@ class CGeneratorOptions(GeneratorOptions):
set to None.
- protectProtoStr - #ifdef/#ifndef symbol to use around prototype
declarations, if protectProto is set
+ - protectExtensionProto - If conditional protection should be generated
+ around extension prototype declarations, set to either '#ifdef'
+ to require opt-in (#ifdef protectExtensionProtoStr) or '#ifndef'
+ to require opt-out (#ifndef protectExtensionProtoStr). Otherwise
+ set to None
+ - protectExtensionProtoStr - #ifdef/#ifndef symbol to use around
+ extension prototype declarations, if protectExtensionProto is set
- apicall - string to use for the function declaration prefix,
- such as APICALL on Windows.
+ such as APICALL on Windows
- apientry - string to use for the calling convention macro,
- in typedefs, such as APIENTRY.
+ in typedefs, such as APIENTRY
- apientryp - string to use for the calling convention macro
- in function pointer typedefs, such as APIENTRYP.
+ in function pointer typedefs, such as APIENTRYP
- indentFuncProto - True if prototype declarations should put each
parameter on a separate line
- indentFuncPointer - True if typedefed function pointers should put each
@@ -70,6 +82,9 @@ class CGeneratorOptions(GeneratorOptions):
be generated for enumerated types
- genAliasMacro - True if the OpenXR alias macro should be generated
for aliased types (unclear what other circumstances this is useful)
+ - genStructExtendsComment - True if comments showing the structures
+ whose pNext chain a structure extends are included before its
+ definition
- aliasMacro - alias macro to inject when genAliasMacro is True
- misracstyle - generate MISRA C-friendly headers
- misracppstyle - generate MISRA C++-friendly headers"""
@@ -94,6 +109,12 @@ class CGeneratorOptions(GeneratorOptions):
self.protectProtoStr = protectProtoStr
"""#ifdef/#ifndef symbol to use around prototype declarations, if protectProto is set"""
+ self.protectExtensionProto = protectExtensionProto
+ """If conditional protection should be generated around extension prototype declarations, set to either '#ifdef' to require opt-in (#ifdef protectExtensionProtoStr) or '#ifndef' to require opt-out (#ifndef protectExtensionProtoStr). Otherwise set to None."""
+
+ self.protectExtensionProtoStr = protectExtensionProtoStr
+ """#ifdef/#ifndef symbol to use around extension prototype declarations, if protectExtensionProto is set"""
+
self.apicall = apicall
"""string to use for the function declaration prefix, such as APICALL on Windows."""
@@ -118,6 +139,9 @@ class CGeneratorOptions(GeneratorOptions):
self.genAliasMacro = genAliasMacro
"""True if the OpenXR alias macro should be generated for aliased types (unclear what other circumstances this is useful)"""
+ self.genStructExtendsComment = genStructExtendsComment
+ """True if comments showing the structures whose pNext chain a structure extends are included before its definition"""
+
self.aliasMacro = aliasMacro
"""alias macro to inject when genAliasMacro is True"""
@@ -148,10 +172,12 @@ class COutputGenerator(OutputGenerator):
def beginFile(self, genOpts):
OutputGenerator.beginFile(self, genOpts)
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
# C-specific
#
# Multiple inclusion protection & C++ wrappers.
- if genOpts.protectFile and self.genOpts.filename:
+ if self.genOpts.protectFile and self.genOpts.filename:
headerSym = re.sub(r'\.h', '_h_',
os.path.basename(self.genOpts.filename)).upper()
write('#ifndef', headerSym, file=self.outFile)
@@ -173,6 +199,8 @@ class COutputGenerator(OutputGenerator):
def endFile(self):
# C-specific
# Finish C++ wrapper and multiple inclusion protection
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
self.newline()
write('#ifdef __cplusplus', file=self.outFile)
write('}', file=self.outFile)
@@ -193,42 +221,76 @@ class COutputGenerator(OutputGenerator):
self.sections = {section: [] for section in self.ALL_SECTIONS}
self.feature_not_empty = False
+ def _endProtectComment(self, protect_str, protect_directive='#ifdef'):
+ if protect_directive is None or protect_str is None:
+ raise RuntimeError('Should not call in here without something to protect')
+
+ # Do not put comments after #endif closing blocks if this is not set
+ if not self.genOpts.conventions.protectProtoComment:
+ return '#endif'
+ elif 'ifdef' in protect_directive:
+ return '#endif /* ' + protect_str + ' */'
+ else:
+ return '#endif /* !' + protect_str + ' */'
+
def endFeature(self):
"Actually write the interface to the output file."
# C-specific
if self.emit:
if self.feature_not_empty:
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+ if self.genOpts.conventions is None:
+ raise MissingGeneratorOptionsConventionsError()
+ is_core = self.featureName and self.featureName.startswith(self.conventions.api_prefix + 'VERSION_')
if self.genOpts.conventions.writeFeature(self.featureExtraProtect, self.genOpts.filename):
self.newline()
if self.genOpts.protectFeature:
write('#ifndef', self.featureName, file=self.outFile)
+
# If type declarations are needed by other features based on
# this one, it may be necessary to suppress the ExtraProtect,
# or move it below the 'for section...' loop.
if self.featureExtraProtect is not None:
write('#ifdef', self.featureExtraProtect, file=self.outFile)
self.newline()
+
write('#define', self.featureName, '1', file=self.outFile)
for section in self.TYPE_SECTIONS:
contents = self.sections[section]
if contents:
write('\n'.join(contents), file=self.outFile)
+
if self.genOpts.genFuncPointers and self.sections['commandPointer']:
write('\n'.join(self.sections['commandPointer']), file=self.outFile)
self.newline()
+
if self.sections['command']:
if self.genOpts.protectProto:
write(self.genOpts.protectProto,
self.genOpts.protectProtoStr, file=self.outFile)
+ if self.genOpts.protectExtensionProto and not is_core:
+ write(self.genOpts.protectExtensionProto,
+ self.genOpts.protectExtensionProtoStr, file=self.outFile)
write('\n'.join(self.sections['command']), end='', file=self.outFile)
+ if self.genOpts.protectExtensionProto and not is_core:
+ write(self._endProtectComment(protect_directive=self.genOpts.protectExtensionProto,
+ protect_str=self.genOpts.protectExtensionProtoStr),
+ file=self.outFile)
if self.genOpts.protectProto:
- write('#endif', file=self.outFile)
+ write(self._endProtectComment(protect_directive=self.genOpts.protectProto,
+ protect_str=self.genOpts.protectProtoStr),
+ file=self.outFile)
else:
self.newline()
+
if self.featureExtraProtect is not None:
- write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile)
+ write(self._endProtectComment(protect_str=self.featureExtraProtect),
+ file=self.outFile)
+
if self.genOpts.protectFeature:
- write('#endif /*', self.featureName, '*/', file=self.outFile)
+ write(self._endProtectComment(protect_str=self.featureName),
+ file=self.outFile)
# Finish processing in superclass
OutputGenerator.endFeature(self)
@@ -264,6 +326,8 @@ class COutputGenerator(OutputGenerator):
# special-purpose generator.
self.genStruct(typeinfo, name, alias)
else:
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
# OpenXR: this section was not under 'else:' previously, just fell through
if alias:
# If the type is an alias, just emit a typedef declaration
@@ -288,7 +352,7 @@ class COutputGenerator(OutputGenerator):
"""Generate protection string.
Protection strings are the strings defining the OS/Platform/Graphics
- requirements for a given OpenXR command. When generating the
+ requirements for a given API command. When generating the
language header files, we need to make sure the items specific to a
graphics API or OS platform are properly wrapped in #ifs."""
protect_if_str = ''
@@ -297,7 +361,7 @@ class COutputGenerator(OutputGenerator):
return (protect_if_str, protect_end_str)
if ',' in protect_str:
- protect_list = protect_str.split(",")
+ protect_list = protect_str.split(',')
protect_defs = ('defined(%s)' % d for d in protect_list)
protect_def_str = ' && '.join(protect_defs)
protect_if_str = '#if %s\n' % protect_def_str
@@ -310,6 +374,8 @@ class COutputGenerator(OutputGenerator):
def typeMayAlias(self, typeName):
if not self.may_alias:
+ if self.registry is None:
+ raise MissingRegistryError()
# First time we have asked if a type may alias.
# So, populate the set of all names of types that may.
@@ -319,9 +385,9 @@ class COutputGenerator(OutputGenerator):
if data.elem.get('mayalias') == 'true')
# Every type mentioned in some other type's parentstruct attribute.
- parent_structs = (otherType.elem.get('parentstruct')
- for otherType in self.registry.typedict.values())
- self.may_alias.update(set(x for x in parent_structs
+ polymorphic_bases = (otherType.elem.get('parentstruct')
+ for otherType in self.registry.typedict.values())
+ self.may_alias.update(set(x for x in polymorphic_bases
if x is not None))
return typeName in self.may_alias
@@ -339,6 +405,9 @@ class COutputGenerator(OutputGenerator):
generate a typedef of that alias."""
OutputGenerator.genStruct(self, typeinfo, typeName, alias)
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+
typeElem = typeinfo.elem
if alias:
@@ -348,6 +417,11 @@ class COutputGenerator(OutputGenerator):
(protect_begin, protect_end) = self.genProtectString(typeElem.get('protect'))
if protect_begin:
body += protect_begin
+
+ if self.genOpts.genStructExtendsComment:
+ structextends = typeElem.get('structextends')
+ body += '// ' + typeName + ' extends ' + structextends + '\n' if structextends else ''
+
body += 'typedef ' + typeElem.get('category')
# This is an OpenXR-specific alternative where aliasing refers
@@ -391,11 +465,16 @@ class COutputGenerator(OutputGenerator):
body = 'typedef ' + alias + ' ' + groupName + ';\n'
self.appendSection(section, body)
else:
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
(section, body) = self.buildEnumCDecl(self.genOpts.genEnumBeginEndRange, groupinfo, groupName)
- self.appendSection(section, "\n" + body)
+ self.appendSection(section, '\n' + body)
def genEnum(self, enuminfo, name, alias):
- """Generate the C declaration for a constant (a single <enum> value)."""
+ """Generate the C declaration for a constant (a single <enum> value).
+
+ <enum> tags may specify their values in several ways, but are usually
+ just integers."""
OutputGenerator.genEnum(self, enuminfo, name, alias)
@@ -410,6 +489,8 @@ class COutputGenerator(OutputGenerator):
# prefix = '// ' + name + ' is an alias of command ' + alias + '\n'
# else:
# prefix = ''
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
prefix = ''
decls = self.makeCDecls(cmdinfo.elem)
diff --git a/registry/generator.py b/registry/generator.py
index 1b7e265..03ef36c 100644
--- a/registry/generator.py
+++ b/registry/generator.py
@@ -17,7 +17,7 @@ import tempfile
try:
from pathlib import Path
except ImportError:
- from pathlib2 import Path
+ from pathlib2 import Path # type: ignore
from spec_tools.util import getElemName, getElemType
@@ -44,7 +44,7 @@ def enquote(s):
for serialization into Python code."""
if s:
if isinstance(s, str):
- return "'{}'".format(s)
+ return f"'{s}'"
else:
return s
return None
@@ -55,14 +55,15 @@ def regSortCategoryKey(feature):
Sorts by category of the feature name string:
- Core API features (those defined with a `<feature>` tag)
- - (sort VKSC after VK)
+ - (sort VKSC after VK - this is Vulkan-specific)
- ARB/KHR/OES (Khronos extensions)
- other (EXT/vendor extensions)"""
if feature.elem.tag == 'feature':
if feature.name.startswith('VKSC'):
return 0.5
- return 0
+ else:
+ return 0
if (feature.category == 'ARB'
or feature.category == 'KHR'
or feature.category == 'OES'):
@@ -74,10 +75,15 @@ def regSortCategoryKey(feature):
def regSortOrderKey(feature):
"""Sort key for regSortFeatures - key is the sortorder attribute."""
- # print("regSortOrderKey {} -> {}".format(feature.name, feature.sortorder))
return feature.sortorder
+def regSortNameKey(feature):
+ """Sort key for regSortFeatures - key is the extension name."""
+
+ return feature.name
+
+
def regSortFeatureVersionKey(feature):
"""Sort key for regSortFeatures - key is the feature version.
`<extension>` elements all have version number 0."""
@@ -105,6 +111,36 @@ def regSortFeatures(featureList):
featureList.sort(key=regSortOrderKey)
+class MissingGeneratorOptionsError(RuntimeError):
+ """Error raised when a Generator tries to do something that requires GeneratorOptions but it is None."""
+
+ def __init__(self, msg=None):
+ full_msg = 'Missing generator options object self.genOpts'
+ if msg:
+ full_msg += ': ' + msg
+ super().__init__(full_msg)
+
+
+class MissingRegistryError(RuntimeError):
+ """Error raised when a Generator tries to do something that requires a Registry object but it is None."""
+
+ def __init__(self, msg=None):
+ full_msg = 'Missing Registry object self.registry'
+ if msg:
+ full_msg += ': ' + msg
+ super().__init__(full_msg)
+
+
+class MissingGeneratorOptionsConventionsError(RuntimeError):
+ """Error raised when a Generator tries to do something that requires a Conventions object but it is None."""
+
+ def __init__(self, msg=None):
+ full_msg = 'Missing Conventions object self.genOpts.conventions'
+ if msg:
+ full_msg += ': ' + msg
+ super().__init__(full_msg)
+
+
class GeneratorOptions:
"""Base class for options used during header/documentation production.
@@ -137,7 +173,7 @@ class GeneratorOptions:
- conventions - may be mandatory for some generators:
an object that implements ConventionsBase
- filename - basename of file to generate, or None to write to stdout.
- - directory - directory in which to generate files
+ - directory - directory in which to generate filename
- genpath - path to previously generated files, such as api.py
- apiname - string matching `<api>` 'apiname' attribute, e.g. 'gl'.
- profile - string specifying API profile , e.g. 'core', or None.
@@ -157,8 +193,7 @@ class GeneratorOptions:
to None.
- emitExtensions - regex matching names of extensions to actually emit
interfaces for (though all requested versions are considered when
- deciding which interfaces to generate).
- to None.
+ deciding which interfaces to generate). Defaults to None.
- emitSpirv - regex matching names of extensions and capabilities
to actually emit interfaces for.
- emitFormats - regex matching names of formats to actually emit
@@ -170,9 +205,11 @@ class GeneratorOptions:
or <extension> being complete. Defaults to True.
- sortProcedure - takes a list of FeatureInfo objects and sorts
them in place to a preferred order in the generated output.
- Default is core API versions, ARB/KHR/OES extensions, all other
- extensions, by core API version number or extension number in each
- group.
+ Default is
+ - core API versions
+ - Khronos (ARB/KHR/OES) extensions
+ - All other extensions
+ - By core API version number or extension number in each group.
The regex patterns can be None or empty, in which case they match
nothing."""
@@ -245,6 +282,9 @@ class GeneratorOptions:
self.codeGenerator = False
"""True if this generator makes compilable code"""
+ self.registry = None
+ """Populated later with the registry object."""
+
self.requireCommandAliases = requireCommandAliases
"""True if alias= attributes of <command> tags are transitively
required."""
@@ -298,9 +338,17 @@ class OutputGenerator:
self.diagFile = diagFile
# Internal state
self.featureName = None
+ """The current feature name being generated."""
+
self.genOpts = None
+ """The GeneratorOptions subclass instance."""
+
self.registry = None
+ """The specification registry object."""
+
self.featureDictionary = {}
+ """The dictionary of dictionaries of API features."""
+
# Used for extension enum value generation
self.extBase = 1000000000
self.extBlockSize = 1000
@@ -336,9 +384,17 @@ class OutputGenerator:
raise UserWarning(
'*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
- def enumToValue(self, elem, needsNum, bitwidth = 32, forceSuffix = False):
+ def enumToValue(self, elem, needsNum, bitwidth = 32,
+ forceSuffix = False, parent_for_alias_dereference=None):
"""Parse and convert an `<enum>` tag into a value.
+ - elem - <enum> Element
+ - needsNum - generate a numeric representation of the element value
+ - bitwidth - size of the numeric representation in bits (32 or 64)
+ - forceSuffix - if True, always use a 'U' / 'ULL' suffix on integers
+ - parent_for_alias_dereference - if not None, an Element containing
+ the parent of elem, used to look for elements this is an alias of
+
Returns a list:
- first element - integer representation of the value, or None
@@ -360,6 +416,11 @@ class OutputGenerator:
- An 'alias' attribute contains the name of another enum
which this is an alias of. The other enum must be
declared first when emitting this enum."""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+ if self.genOpts.conventions is None:
+ raise MissingGeneratorOptionsConventionsError()
+
name = elem.get('name')
numVal = None
if 'value' in elem.keys():
@@ -384,7 +445,7 @@ class OutputGenerator:
bitpos = int(value, 0)
numVal = 1 << bitpos
value = '0x%08x' % numVal
- if bitwidth == 64:
+ if bitwidth == 64 or bitpos >= 32:
value = value + 'ULL'
elif forceSuffix:
value = value + 'U'
@@ -411,7 +472,15 @@ class OutputGenerator:
self.logMsg('diag', 'Enum', name, '-> offset [', numVal, ',', value, ']')
return [numVal, value]
if 'alias' in elem.keys():
- return [None, elem.get('alias')]
+ alias_of = elem.get('alias')
+ if parent_for_alias_dereference is None:
+ return (None, alias_of)
+ siblings = parent_for_alias_dereference.findall('enum')
+ for sib in siblings:
+ sib_name = sib.get('name')
+ if sib_name == alias_of:
+ return self.enumToValue(sib, needsNum)
+ raise RuntimeError("Could not find the aliased enum value")
return [None, None]
def checkDuplicateEnums(self, enums):
@@ -478,6 +547,11 @@ class OutputGenerator:
def buildEnumCDecl(self, expand, groupinfo, groupName):
"""Generate the C declaration for an enum"""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+ if self.genOpts.conventions is None:
+ raise MissingGeneratorOptionsConventionsError()
+
groupElem = groupinfo.elem
# Determine the required bit width for the enum group.
@@ -629,7 +703,6 @@ class OutputGenerator:
maxValidValue = 2**(32 - 1) - 1
minValidValue = (maxValidValue * -1) - 1
-
# Get a list of nested 'enum' tags.
enums = groupElem.findall('enum')
@@ -649,6 +722,9 @@ class OutputGenerator:
# aliases can still get in the wrong order.
aliasText = []
+ maxName = None
+ minValue = None
+ maxValue = None
for elem in enums:
# Convert the value to an integer and use that to track min/max.
# Values of form -(number) are accepted but nothing more complex.
@@ -689,10 +765,10 @@ class OutputGenerator:
if minName is None:
minName = maxName = name
minValue = maxValue = numVal
- elif numVal < minValue:
+ elif minValue is None or numVal < minValue:
minName = name
minValue = numVal
- elif numVal > maxValue:
+ elif maxValue is None or numVal > maxValue:
maxName = name
maxValue = numVal
@@ -701,17 +777,15 @@ class OutputGenerator:
# Generate min/max value tokens - legacy use case.
if isEnum and expand:
- body.extend((" {}_BEGIN_RANGE{} = {},".format(expandPrefix, expandSuffix, minName),
- " {}_END_RANGE{} = {},".format(
- expandPrefix, expandSuffix, maxName),
- " {}_RANGE_SIZE{} = ({} - {} + 1),".format(expandPrefix, expandSuffix, maxName, minName)))
+ body.extend((f' {expandPrefix}_BEGIN_RANGE{expandSuffix} = {minName},',
+ f' {expandPrefix}_END_RANGE{expandSuffix} = {maxName},',
+ f' {expandPrefix}_RANGE_SIZE{expandSuffix} = ({maxName} - {minName} + 1),'))
# Generate a range-padding value to ensure the enum is 32 bits, but
# only in code generators, so it does not appear in documentation
if (self.genOpts.codeGenerator or
self.conventions.generate_max_enum_in_docs):
- body.append(" {}_MAX_ENUM{} = 0x7FFFFFFF".format(
- expandPrefix, expandSuffix))
+ body.append(f' {expandPrefix}_MAX_ENUM{expandSuffix} = 0x7FFFFFFF')
# Postfix
body.append("} %s;" % groupName)
@@ -781,7 +855,12 @@ class OutputGenerator:
"""Start a new interface file
- genOpts - GeneratorOptions controlling what is generated and how"""
+
self.genOpts = genOpts
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+ if self.genOpts.conventions is None:
+ raise MissingGeneratorOptionsConventionsError()
self.should_insert_may_alias_macro = \
self.genOpts.conventions.should_insert_may_alias_macro(self.genOpts)
@@ -811,18 +890,23 @@ class OutputGenerator:
self.warnFile.flush()
if self.diagFile:
self.diagFile.flush()
- if self.outFile != sys.stdout and self.outFile != sys.stderr:
- self.outFile.close()
-
- # On successfully generating output, move the temporary file to the
- # target file.
- if self.genOpts.filename is not None:
- if sys.platform == 'win32':
- directory = Path(self.genOpts.directory)
- if not Path.exists(directory):
- os.makedirs(directory)
- shutil.copy(self.outFile.name, self.genOpts.directory + '/' + self.genOpts.filename)
- os.remove(self.outFile.name)
+ if self.outFile:
+ self.outFile.flush()
+ if self.outFile != sys.stdout and self.outFile != sys.stderr:
+ self.outFile.close()
+
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+
+ # On successfully generating output, move the temporary file to the
+ # target file.
+ if self.genOpts.filename is not None:
+ if sys.platform == 'win32':
+ directory = Path(self.genOpts.directory)
+ if not Path.exists(directory):
+ os.makedirs(directory)
+ shutil.copy(self.outFile.name, self.genOpts.directory + '/' + self.genOpts.filename)
+ os.remove(self.outFile.name)
self.genOpts = None
def beginFeature(self, interface, emit):
@@ -933,10 +1017,14 @@ class OutputGenerator:
- name - contents of `<name>` tag
- tail - whatever text follows that tag in the Element"""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
return self.genOpts.apientry + name + tail
def makeTypedefName(self, name, tail):
"""Make the function-pointer typedef name for a command."""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
return '(' + self.genOpts.apientryp + 'PFN_' + name + tail + ')'
def makeCParamDecl(self, param, aligncol):
@@ -947,6 +1035,10 @@ class OutputGenerator:
- param - Element (`<param>` or `<member>`) to format
- aligncol - if non-zero, attempt to align the nested `<name>` element
at this column"""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+ if self.genOpts.conventions is None:
+ raise MissingGeneratorOptionsConventionsError()
indent = ' '
paramdecl = indent
prefix = noneStr(param.text)
@@ -993,6 +1085,10 @@ class OutputGenerator:
or structure/union member).
- param - Element (`<param>` or `<member>`) to identify"""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
+ if self.genOpts.conventions is None:
+ raise MissingGeneratorOptionsConventionsError()
# Allow for missing <name> tag
newLen = 0
@@ -1023,6 +1119,9 @@ class OutputGenerator:
def getHandleParent(self, typename):
"""Get the parent of a handle object."""
+ if self.registry is None:
+ raise MissingRegistryError()
+
info = self.registry.typedict.get(typename)
if info is None:
return None
@@ -1046,6 +1145,9 @@ class OutputGenerator:
def getTypeCategory(self, typename):
"""Get the category of a type."""
+ if self.registry is None:
+ raise MissingRegistryError()
+
info = self.registry.typedict.get(typename)
if info is None:
return None
@@ -1060,6 +1162,8 @@ class OutputGenerator:
# A conventions object is required for this call.
if not self.conventions:
raise RuntimeError("To use isStructAlwaysValid, be sure your options include a Conventions object.")
+ if self.registry is None:
+ raise MissingRegistryError()
if self.conventions.type_always_valid(structname):
return True
@@ -1102,6 +1206,21 @@ class OutputGenerator:
return True
+ def paramIsArray(self, param):
+ """Check if the parameter passed in is a pointer to an array.
+
+ param the XML information for the param
+ """
+ return param.get('len') is not None
+
+ def paramIsPointer(self, param):
+ """Check if the parameter passed in is a pointer.
+
+ param the XML information for the param
+ """
+ tail = param.find('type').tail
+ return tail is not None and '*' in tail
+
def isEnumRequired(self, elem):
"""Return True if this `<enum>` element is
required, False otherwise
@@ -1137,6 +1256,8 @@ class OutputGenerator:
`<command>` Element, as a two-element list of strings.
- cmd - Element containing a `<command>` tag"""
+ if self.genOpts is None:
+ raise MissingGeneratorOptionsError()
proto = cmd.find('proto')
params = cmd.findall('param')
# Begin accumulating prototype and typedef strings
diff --git a/registry/genvk.py b/registry/genvk.py
index 14806ca..2230a81 100755
--- a/registry/genvk.py
+++ b/registry/genvk.py
@@ -5,13 +5,17 @@
# SPDX-License-Identifier: Apache-2.0
import argparse
+import os
import pdb
import re
import sys
import time
import xml.etree.ElementTree as etree
+sys.path.append(os.path.abspath(os.path.dirname(__file__)))
+
from cgenerator import CGeneratorOptions, COutputGenerator
+
from docgenerator import DocGeneratorOptions, DocOutputGenerator
from extensionmetadocgenerator import (ExtensionMetaDocGeneratorOptions,
ExtensionMetaDocOutputGenerator)
@@ -27,7 +31,6 @@ from reg import Registry
from validitygenerator import ValidityOutputGenerator
from apiconventions import APIConventions
-
# Simple timer functions
startTime = None
@@ -40,7 +43,7 @@ def startTimer(timeit):
def endTimer(timeit, msg):
global startTime
- if timeit:
+ if timeit and startTime is not None:
endTime = time.process_time()
logDiag(msg, endTime - startTime)
startTime = None
@@ -118,7 +121,7 @@ def makeGenOpts(args):
'/*',
'** Copyright 2015-2022 The Khronos Group Inc.',
'**',
- '** SPDX' + '-License-Identifier: Apache-2.0',
+ '** SPDX-License-Identifier' + ': Apache-2.0',
'*/',
''
]
@@ -667,8 +670,6 @@ def genTarget(args):
# Create generator options with parameters specified on command line
makeGenOpts(args)
- # pdb.set_trace()
-
# Select a generator matching the requested target
if args.target in genOpts:
createGenerator = genOpts[args.target][0]
@@ -740,8 +741,6 @@ if __name__ == '__main__':
help='Use specified registry file instead of vk.xml')
parser.add_argument('-time', action='store_true',
help='Enable timing')
- parser.add_argument('-validate', action='store_true',
- help='Validate the registry properties and exit')
parser.add_argument('-genpath', action='store', default='gen',
help='Path to generated files')
parser.add_argument('-o', action='store', dest='directory',
@@ -779,10 +778,8 @@ if __name__ == '__main__':
# Log diagnostics and warnings
setLogFile(setDiag = True, setWarn = True, filename = '-')
- (gen, options) = (None, None)
- if not args.validate:
- # Create the API generator & generator options
- (gen, options) = genTarget(args)
+ # Create the API generator & generator options
+ (gen, options) = genTarget(args)
# Create the registry object with the specified generator and generator
# options. The options are set before XML loading as they may affect it.
@@ -798,10 +795,6 @@ if __name__ == '__main__':
reg.loadElementTree(tree)
endTimer(args.time, '* Time to parse ElementTree =')
- if args.validate:
- success = reg.validateRegistry()
- sys.exit(0 if success else 1)
-
if args.dump:
logDiag('* Dumping registry to regdump.txt')
reg.dumpReg(filehandle=open('regdump.txt', 'w', encoding='utf-8'))
diff --git a/registry/reg.py b/registry/reg.py
index 540697f..335b6b2 100644
--- a/registry/reg.py
+++ b/registry/reg.py
@@ -11,7 +11,8 @@ import re
import sys
import xml.etree.ElementTree as etree
from collections import defaultdict, deque, namedtuple
-from generator import OutputGenerator, GeneratorOptions, write
+
+from generator import GeneratorOptions, OutputGenerator, noneStr, write
from apiconventions import APIConventions
def apiNameMatch(str, supported):
@@ -268,22 +269,21 @@ class FeatureInfo(BaseInfo):
attribute of <feature>. Extensions do not have API version
numbers and are assigned number 0."""
- self.number = "0"
+ self.number = 0
self.supported = None
else:
# Extract vendor portion of <APIprefix>_<vendor>_<name>
self.category = self.name.split('_', 2)[1]
self.version = "0"
self.versionNumber = "0"
- self.number = elem.get('number')
+
+ self.number = int(elem.get('number','0'))
"""extension number, used for ordering and for assigning
enumerant offsets. <feature> features do not have extension
- numbers and are assigned number 0."""
+ numbers and are assigned number 0, as are extensions without
+ numbers, so sorting works."""
- # If there is no 'number' attribute, use 0, so sorting works
- if self.number is None:
- self.number = 0
- self.supported = elem.get('supported')
+ self.supported = elem.get('supported', 'disabled')
class SpirvInfo(BaseInfo):
"""Registry information about an API <spirvextensions>
@@ -444,6 +444,8 @@ class Registry:
def parseTree(self):
"""Parse the registry Element, once created"""
# This must be the Element for the root <registry>
+ if self.tree is None:
+ raise RuntimeError("Tree not initialized!")
self.reg = self.tree.getroot()
# Preprocess the tree by removing all elements with non-matching
@@ -468,7 +470,10 @@ class Registry:
# If the <type> does not already have a 'name' attribute, set
# it from contents of its <name> tag.
if type_elem.get('name') is None:
- type_elem.set('name', type_elem.find('name').text)
+ name_elem = type_elem.find('name')
+ if name_elem is None or not name_elem.text:
+ raise RuntimeError("Type without a name!")
+ type_elem.set('name', name_elem.text)
self.addElementInfo(type_elem, TypeInfo(type_elem), 'type', self.typedict)
# Create dictionary of registry enum groups from <enums> tags.
@@ -513,7 +518,10 @@ class Registry:
# it from contents of its <proto><name> tag.
name = cmd.get('name')
if name is None:
- name = cmd.set('name', cmd.find('proto/name').text)
+ name_elem = cmd.find('proto/name')
+ if name_elem is None or not name_elem.text:
+ raise RuntimeError("Command without a name!")
+ name = cmd.set('name', name_elem.text)
ci = CmdInfo(cmd)
self.addElementInfo(cmd, ci, 'command', self.cmddict)
alias = cmd.get('alias')
@@ -619,10 +627,10 @@ class Registry:
# as when redefining an enum in another extension.
extnumber = enum.get('extnumber')
if not extnumber:
- enum.set('extnumber', featureInfo.number)
+ enum.set('extnumber', str(featureInfo.number))
enum.set('extname', featureInfo.name)
- enum.set('supported', featureInfo.supported)
+ enum.set('supported', noneStr(featureInfo.supported))
# Look up the GroupInfo with matching groupName
if groupName in self.groupdict:
# self.gen.logMsg('diag', 'Matching group',
@@ -632,6 +640,7 @@ class Registry:
else:
self.gen.logMsg('warn', 'NO matching group',
groupName, 'for enum', enum.get('name'), 'found.')
+ # This is Vulkan-specific
if groupName == "VkFormat":
format_name = enum.get('name')
if enum.get('alias'):
@@ -657,9 +666,10 @@ class Registry:
disabled_types.append(type_elem.get('name'))
for type_elem in self.reg.findall('types/type'):
if type_elem.get('name') not in disabled_types:
- parentStructs = type_elem.get('structextends')
- if parentStructs is not None:
- for parent in parentStructs.split(','):
+ # The structure type this may be chained to.
+ struct_extends = type_elem.get('structextends')
+ if struct_extends is not None:
+ for parent in struct_extends.split(','):
# self.gen.logMsg('diag', type.get('name'), 'extends', parent)
self.validextensionstructs[parent].append(type_elem.get('name'))
# Sort the lists so they do not depend on the XML order
@@ -873,7 +883,7 @@ class Registry:
self.markCmdRequired(depname, required)
# Tag all parameter types of this command as required.
- # This DOES NOT remove types of commands in a <remove>
+ # This does not remove types of commands in a <remove>
# tag, because many other commands may use the same type.
# We could be more clever and reference count types,
# instead of using a boolean.
@@ -901,7 +911,6 @@ class Registry:
self.markTypeRequired(typeElem.get('name'), required)
for enumElem in feature.findall('enum'):
self.markEnumRequired(enumElem.get('name'), required)
-
for cmdElem in feature.findall('command'):
self.markCmdRequired(cmdElem.get('name'), required)
@@ -1231,6 +1240,8 @@ class Registry:
if name in enumAliases:
elem.set('required', 'true')
self.gen.logMsg('diag', '* also need to require alias', name)
+ if f is None:
+ raise RuntimeError("Should not get here")
if f.elem.get('category') == 'bitmask':
followupFeature = f.elem.get('bitvalues')
elif ftype == 'command':
@@ -1253,6 +1264,8 @@ class Registry:
# Actually generate the type only if emitting declarations
if self.emitFeatures:
self.gen.logMsg('diag', 'Emitting', ftype, 'decl for', fname)
+ if genProc is None:
+ raise RuntimeError("genProc is None when we should be emitting")
genProc(f, fname, alias)
else:
self.gen.logMsg('diag', 'Skipping', ftype, fname,
@@ -1417,7 +1430,7 @@ class Registry:
# the regexp specified in the generator options. This allows
# forcing extensions into an interface even if they are not
# tagged appropriately in the registry.
- # However we still respect the 'supported' attribute.
+ # However, we still respect the 'supported' attribute.
if regAddExtensions.match(extName) is not None:
if not apiNameMatch(self.genOpts.apiname, ei.elem.get('supported')):
self.gen.logMsg('diag', 'NOT including extension',
@@ -1477,7 +1490,6 @@ class Registry:
# Sort the features list, if a sort procedure is defined
if self.genOpts.sortProcedure:
self.genOpts.sortProcedure(features)
- # print('sortProcedure ->', [f.name for f in features])
# Passes 1+2: loop over requested API versions and extensions tagging
# types/commands/features as required (in an <require> block) or no
@@ -1551,133 +1563,3 @@ class Registry:
self.cmddict[cmd].resetState()
for cmd in self.apidict:
self.apidict[cmd].resetState()
-
- def __isLimittypeStruct(self, structName, structElem, allowedStructs):
- """Check if a type element is a structure allowed to have 'limittype' attributes
- structName - name of a structure
- structElem - corresponding <type> Element
- allowedStructs - set of struct names explicitly allowed"""
-
- # Is this an explicitly allowed struct?
- if structName in allowedStructs:
- return True
-
- # Is this a struct extending an explicitly allowed struct?
- extends = structElem.get('structextends')
- if extends is not None:
- # See if any name in the structextends attribute is an allowed
- # struct
- if len(set(extends.split(',')) & allowedStructs) > 0:
- return True
-
- return False
-
- def __validateStructLimittypes(self, struct, requiredLimittype):
- """Validate 'limittype' attributes for a single struct.
- struct - typeinfo for a struct <type>
- requiredLimittype - True if members *must* have a limittype"""
-
- limittypeDiags = namedtuple('limittypeDiags', ['missing', 'invalid'])
- badFields = defaultdict(lambda : limittypeDiags(missing=[], invalid=[]))
- validLimittypes = { 'min', 'max', 'pot', 'mul', 'bits', 'bitmask', 'range', 'struct', 'exact', 'noauto' }
- for member in struct.getMembers():
- memberName = member.findtext('name')
- if memberName in ['sType', 'pNext']:
- continue
- limittype = member.get('limittype')
- if limittype is None:
- # Do not tag this as missing if it is not required
- if requiredLimittype:
- badFields[struct.elem.get('name')].missing.append(memberName)
- elif limittype == 'struct':
- typeName = member.findtext('type')
- memberType = self.typedict[typeName]
- badFields.update(self.__validateStructLimittypes(memberType, requiredLimittype))
- else:
- for value in limittype.split(','):
- if value not in validLimittypes:
- badFields[struct.elem.get('name')].invalid.append(memberName)
-
- return badFields
-
- def __validateLimittype(self):
- """Validate 'limittype' attributes."""
-
- # Structures explicitly allowed to have 'limittype' attributes
- allowedStructs = set((
- 'VkFormatProperties',
- 'VkFormatProperties2',
- 'VkPhysicalDeviceProperties',
- 'VkPhysicalDeviceProperties2',
- 'VkPhysicalDeviceLimits',
- 'VkQueueFamilyProperties',
- 'VkQueueFamilyProperties2',
- 'VkSparseImageFormatProperties',
- 'VkSparseImageFormatProperties2',
- ))
- # Substructures of allowed structures. This can be found by looking
- # at tags, but there are so few cases that it is hardwired for now.
- nestedStructs = set((
- 'VkPhysicalDeviceLimits',
- 'VkPhysicalDeviceSparseProperties',
- 'VkPhysicalDeviceProperties',
- 'VkQueueFamilyProperties',
- 'VkSparseImageFormatProperties',
- ))
- # Structures all of whose (non pNext/sType) members are required to
- # have 'limittype' attributes, as are their descendants
- requiredStructs = set((
- 'VkPhysicalDeviceProperties',
- 'VkPhysicalDeviceProperties2',
- 'VkPhysicalDeviceLimits',
- 'VkSparseImageFormatProperties',
- 'VkSparseImageFormatProperties2',
- ))
-
- # Checks all structures, so accumulate a valid/invalid flag
- valid = True
-
- # Loop over all structure members, checking that there are no
- # limittype attributes except for allowed structures.
- for structName in self.typedict:
- struct = self.typedict[structName]
-
- # Do not check non-structs
- if struct.elem.get('category') != 'struct':
- continue
-
- # Only check structs not allowed to have limittypes
- if not self.__isLimittypeStruct(structName, struct.elem, allowedStructs.union(nestedStructs)):
- for member in struct.getMembers():
- if member.get('limittype') is not None:
- memname = member.findtext('name')
- self.gen.logMsg('diag', f' {structName} member {memname} has disallowed limittype attribute')
- valid = False
-
- # Loop over allowed structs and their extending structs checking for
- # invalid and missing limittype attributes
- for structName in allowedStructs:
- # Assume that only extending structs of structs explicitly
- # requiring limittypes also require them
- requiredLimittype = (structName in requiredStructs)
-
- badFields = self.__validateStructLimittypes(self.typedict[structName], requiredLimittype)
- for extendingStructName in self.validextensionstructs[structName]:
- extendingStruct = self.typedict[extendingStructName]
- badFields.update(self.__validateStructLimittypes(extendingStruct, requiredLimittype))
-
- if badFields:
- self.gen.logMsg('diag', f'Incorrect limittype attributes for {structName}')
- for key in sorted(badFields.keys()):
- diags = badFields[key]
- if diags.missing:
- self.gen.logMsg('diag', ' ', key, 'missing limittype:', ', '.join(badFields[key].missing))
- if diags.invalid:
- self.gen.logMsg('diag', ' ', key, 'invalid limittype:', ', '.join(badFields[key].invalid))
- valid = False
-
- return valid
-
- def validateRegistry(self):
- """Validate properties of the registry."""
- return self.__validateLimittype()
diff --git a/registry/spec_tools/conventions.py b/registry/spec_tools/conventions.py
new file mode 100644
index 0000000..e3cd6a2
--- /dev/null
+++ b/registry/spec_tools/conventions.py
@@ -0,0 +1,411 @@
+#!/usr/bin/python3 -i
+#
+# Copyright 2013-2022 The Khronos Group Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# Base class for working-group-specific style conventions,
+# used in generation.
+
+from enum import Enum
+import abc
+
+# Type categories that respond "False" to isStructAlwaysValid
+# basetype is home to typedefs like ..Bool32
+CATEGORIES_REQUIRING_VALIDATION = set(('handle',
+ 'enum',
+ 'bitmask',
+ 'basetype',
+ None))
+
+# These are basic C types pulled in via openxr_platform_defines.h
+TYPES_KNOWN_ALWAYS_VALID = set(('char',
+ 'float',
+ 'int8_t', 'uint8_t',
+ 'int16_t', 'uint16_t',
+ 'int32_t', 'uint32_t',
+ 'int64_t', 'uint64_t',
+ 'size_t',
+ 'intptr_t', 'uintptr_t',
+ 'int',
+ ))
+
+
+class ProseListFormats(Enum):
+ """A connective, possibly with a quantifier."""
+ AND = 0
+ EACH_AND = 1
+ OR = 2
+ ANY_OR = 3
+
+ @classmethod
+ def from_string(cls, s):
+ if s == 'or':
+ return cls.OR
+ if s == 'and':
+ return cls.AND
+ raise RuntimeError("Unrecognized string connective: " + s)
+
+ @property
+ def connective(self):
+ if self in (ProseListFormats.OR, ProseListFormats.ANY_OR):
+ return 'or'
+ return 'and'
+
+ def quantifier(self, n):
+ """Return the desired quantifier for a list of a given length."""
+ if self == ProseListFormats.ANY_OR:
+ if n > 1:
+ return 'any of '
+ elif self == ProseListFormats.EACH_AND:
+ if n > 2:
+ return 'each of '
+ if n == 2:
+ return 'both of '
+ return ''
+
+
+class ConventionsBase(abc.ABC):
+ """WG-specific conventions."""
+
+ def __init__(self):
+ self._command_prefix = None
+ self._type_prefix = None
+
+ def formatExtension(self, name):
+ """Mark up an extension name as a link the spec."""
+ return '`<<{}>>`'.format(name)
+
+ @property
+ @abc.abstractmethod
+ def null(self):
+ """Preferred spelling of NULL."""
+ raise NotImplementedError
+
+ def makeProseList(self, elements, fmt=ProseListFormats.AND, with_verb=False, *args, **kwargs):
+ """Make a (comma-separated) list for use in prose.
+
+ Adds a connective (by default, 'and')
+ before the last element if there are more than 1.
+
+ Adds the right one of "is" or "are" to the end if with_verb is true.
+
+ Optionally adds a quantifier (like 'any') before a list of 2 or more,
+ if specified by fmt.
+
+ Override with a different method or different call to
+ _implMakeProseList if you want to add a comma for two elements,
+ or not use a serial comma.
+ """
+ return self._implMakeProseList(elements, fmt, with_verb, *args, **kwargs)
+
+ @property
+ def struct_macro(self):
+ """Get the appropriate format macro for a structure.
+
+ May override.
+ """
+ return 'slink:'
+
+ @property
+ def external_macro(self):
+ """Get the appropriate format macro for an external type like uint32_t.
+
+ May override.
+ """
+ return 'code:'
+
+ @property
+ @abc.abstractmethod
+ def structtype_member_name(self):
+ """Return name of the structure type member.
+
+ Must implement.
+ """
+ raise NotImplementedError()
+
+ @property
+ @abc.abstractmethod
+ def nextpointer_member_name(self):
+ """Return name of the structure pointer chain member.
+
+ Must implement.
+ """
+ raise NotImplementedError()
+
+ @property
+ @abc.abstractmethod
+ def xml_api_name(self):
+ """Return the name used in the default API XML registry for the default API"""
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def generate_structure_type_from_name(self, structname):
+ """Generate a structure type name, like XR_TYPE_CREATE_INSTANCE_INFO.
+
+ Must implement.
+ """
+ raise NotImplementedError()
+
+ def makeStructName(self, name):
+ """Prepend the appropriate format macro for a structure to a structure type name.
+
+ Uses struct_macro, so just override that if you want to change behavior.
+ """
+ return self.struct_macro + name
+
+ def makeExternalTypeName(self, name):
+ """Prepend the appropriate format macro for an external type like uint32_t to a type name.
+
+ Uses external_macro, so just override that if you want to change behavior.
+ """
+ return self.external_macro + name
+
+ def _implMakeProseList(self, elements, fmt, with_verb, comma_for_two_elts=False, serial_comma=True):
+ """Internal-use implementation to make a (comma-separated) list for use in prose.
+
+ Adds a connective (by default, 'and')
+ before the last element if there are more than 1,
+ and only includes commas if there are more than 2
+ (if comma_for_two_elts is False).
+
+ Adds the right one of "is" or "are" to the end if with_verb is true.
+
+ Optionally adds a quantifier (like 'any') before a list of 2 or more,
+ if specified by fmt.
+
+ Do not edit these defaults, override self.makeProseList().
+ """
+ assert(serial_comma) # did not implement what we did not need
+ if isinstance(fmt, str):
+ fmt = ProseListFormats.from_string(fmt)
+
+ my_elts = list(elements)
+ if len(my_elts) > 1:
+ my_elts[-1] = '{} {}'.format(fmt.connective, my_elts[-1])
+
+ if not comma_for_two_elts and len(my_elts) <= 2:
+ prose = ' '.join(my_elts)
+ else:
+ prose = ', '.join(my_elts)
+
+ quantifier = fmt.quantifier(len(my_elts))
+
+ parts = [quantifier, prose]
+
+ if with_verb:
+ if len(my_elts) > 1:
+ parts.append(' are')
+ else:
+ parts.append(' is')
+ return ''.join(parts)
+
+ @property
+ @abc.abstractmethod
+ def file_suffix(self):
+ """Return suffix of generated Asciidoctor files"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def api_name(self, spectype=None):
+ """Return API or specification name for citations in ref pages.
+
+ spectype is the spec this refpage is for.
+ 'api' (the default value) is the main API Specification.
+ If an unrecognized spectype is given, returns None.
+
+ Must implement."""
+ raise NotImplementedError
+
+ def should_insert_may_alias_macro(self, genOpts):
+ """Return true if we should insert a "may alias" macro in this file.
+
+ Only used by OpenXR right now."""
+ return False
+
+ @property
+ def command_prefix(self):
+ """Return the expected prefix of commands/functions.
+
+ Implemented in terms of api_prefix."""
+ if not self._command_prefix:
+ self._command_prefix = self.api_prefix[:].replace('_', '').lower()
+ return self._command_prefix
+
+ @property
+ def type_prefix(self):
+ """Return the expected prefix of type names.
+
+ Implemented in terms of command_prefix (and in turn, api_prefix)."""
+ if not self._type_prefix:
+ self._type_prefix = ''.join(
+ (self.command_prefix[0:1].upper(), self.command_prefix[1:]))
+ return self._type_prefix
+
+ @property
+ @abc.abstractmethod
+ def api_prefix(self):
+ """Return API token prefix.
+
+ Typically two uppercase letters followed by an underscore.
+
+ Must implement."""
+ raise NotImplementedError
+
+ @property
+ def api_version_prefix(self):
+ """Return API core version token prefix.
+
+ Implemented in terms of api_prefix.
+
+ May override."""
+ return self.api_prefix + 'VERSION_'
+
+ @property
+ def KHR_prefix(self):
+ """Return extension name prefix for KHR extensions.
+
+ Implemented in terms of api_prefix.
+
+ May override."""
+ return self.api_prefix + 'KHR_'
+
+ @property
+ def EXT_prefix(self):
+ """Return extension name prefix for EXT extensions.
+
+ Implemented in terms of api_prefix.
+
+ May override."""
+ return self.api_prefix + 'EXT_'
+
+ def writeFeature(self, featureExtraProtect, filename):
+ """Return True if OutputGenerator.endFeature should write this feature.
+
+ Defaults to always True.
+ Used in COutputGenerator.
+
+ May override."""
+ return True
+
+ def requires_error_validation(self, return_type):
+ """Return True if the return_type element is an API result code
+ requiring error validation.
+
+ Defaults to always False.
+
+ May override."""
+ return False
+
+ @property
+ def required_errors(self):
+ """Return a list of required error codes for validation.
+
+ Defaults to an empty list.
+
+ May override."""
+ return []
+
+ def is_voidpointer_alias(self, tag, text, tail):
+ """Return True if the declaration components (tag,text,tail) of an
+ element represents a void * type.
+
+ Defaults to a reasonable implementation.
+
+ May override."""
+ return tag == 'type' and text == 'void' and tail.startswith('*')
+
+ def make_voidpointer_alias(self, tail):
+ """Reformat a void * declaration to include the API alias macro.
+
+ Defaults to a no-op.
+
+ Must override if you actually want to use this feature in your project."""
+ return tail
+
+ def category_requires_validation(self, category):
+ """Return True if the given type 'category' always requires validation.
+
+ Defaults to a reasonable implementation.
+
+ May override."""
+ return category in CATEGORIES_REQUIRING_VALIDATION
+
+ def type_always_valid(self, typename):
+ """Return True if the given type name is always valid (never requires validation).
+
+ This is for things like integers.
+
+ Defaults to a reasonable implementation.
+
+ May override."""
+ return typename in TYPES_KNOWN_ALWAYS_VALID
+
+ @property
+ def should_skip_checking_codes(self):
+ """Return True if more than the basic validation of return codes should
+ be skipped for a command."""
+
+ return False
+
+ @property
+ def generate_index_terms(self):
+ """Return True if asiidoctor index terms should be generated as part
+ of an API interface from the docgenerator."""
+
+ return False
+
+ @property
+ def generate_enum_table(self):
+ """Return True if asciidoctor tables describing enumerants in a
+ group should be generated as part of group generation."""
+ return False
+
+ @property
+ def generate_max_enum_in_docs(self):
+ """Return True if MAX_ENUM tokens should be generated in
+ documentation includes."""
+ return False
+
+ @abc.abstractmethod
+ def extension_include_string(self, ext):
+ """Return format string for include:: line for an extension appendix
+ file. ext is an object with the following members:
+ - name - extension string string
+ - vendor - vendor portion of name
+ - barename - remainder of name
+
+ Must implement."""
+ raise NotImplementedError
+
+ @property
+ @abc.abstractmethod
+ def refpage_generated_include_path(self):
+ """Return path relative to the generated reference pages, to the
+ generated API include files.
+
+ Must implement."""
+ raise NotImplementedError
+
+ def valid_flag_bit(self, bitpos):
+ """Return True if bitpos is an allowed numeric bit position for
+ an API flag.
+
+ Behavior depends on the data type used for flags (which may be 32
+ or 64 bits), and may depend on assumptions about compiler
+ handling of sign bits in enumerated types, as well."""
+ return True
+
+ @property
+ def duplicate_aliased_structs(self):
+ """
+ Should aliased structs have the original struct definition listed in the
+ generated docs snippet?
+ """
+ return False
+
+ @property
+ def protectProtoComment(self):
+ """Return True if generated #endif should have a comment matching
+ the protection symbol used in the opening #ifdef/#ifndef."""
+ return False
diff --git a/registry/spec_tools/util.py b/registry/spec_tools/util.py
index 051f1ea..4e1093d 100644
--- a/registry/spec_tools/util.py
+++ b/registry/spec_tools/util.py
@@ -1,5 +1,5 @@
"""Utility functions not closely tied to other spec_tools types."""
-# Copyright 2018-2019 Collabora, Ltd.
+# Copyright (c) 2018-2019 Collabora, Ltd.
# Copyright 2013-2022 The Khronos Group Inc.
#
# SPDX-License-Identifier: Apache-2.0
diff --git a/registry/validusage.json b/registry/validusage.json
index 90e40e0..2ab9c0d 100644
--- a/registry/validusage.json
+++ b/registry/validusage.json
@@ -1,9 +1,9 @@
{
"version info": {
"schema version": 2,
- "api version": "1.3.221",
- "comment": "from git branch: github-main commit: 0eafcaf0146f39a41fa0ed00366d26d826aa787c",
- "date": "2022-07-14 12:58:45Z"
+ "api version": "1.3.222",
+ "comment": "from git branch: github-main commit: 8dcc7469b01529600b712596a5a48ec8c710e228",
+ "date": "2022-07-21 09:17:47Z"
},
"validation": {
"vkGetInstanceProcAddr": {
@@ -62,13 +62,13 @@
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_EXT_debug_report)": [
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-04925",
- "text": " If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <code>VkDebugReportCallbackCreateInfoEXT</code> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <a href=\"#VK_EXT_debug_report\">VK_EXT_debug_report</a>"
+ "text": " If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <code>VkDebugReportCallbackCreateInfoEXT</code> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <code><a href=\"#VK_EXT_debug_report\">VK_EXT_debug_report</a></code>"
}
],
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-04926",
- "text": " If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <a href=\"#VK_EXT_debug_utils\">VK_EXT_debug_utils</a>"
+ "text": " If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <code><a href=\"#VK_EXT_debug_utils\">VK_EXT_debug_utils</a></code>"
}
],
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_EXT_metal_objects)": [
@@ -250,7 +250,7 @@
},
{
"vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
- "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>"
+ "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceImageProcessingPropertiesQCOM\">VkPhysicalDeviceImageProcessingPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>"
},
{
"vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
@@ -322,6 +322,14 @@
}
]
},
+ "VkPhysicalDeviceImageProcessingPropertiesQCOM": {
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageProcessingPropertiesQCOM-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM</code>"
+ }
+ ]
+ },
"vkGetPhysicalDeviceQueueFamilyProperties": {
"core": [
{
@@ -662,7 +670,7 @@
},
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
- "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE\">VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>"
+ "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageProcessingFeaturesQCOM\">VkPhysicalDeviceImageProcessingFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE\">VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTilePropertiesFeaturesQCOM\">VkPhysicalDeviceTilePropertiesFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>"
},
{
"vuid": "VUID-VkDeviceCreateInfo-sType-unique",
@@ -7144,6 +7152,34 @@
}
]
},
+ "VkTilePropertiesQCOM": {
+ "(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_QCOM_tile_properties)": [
+ {
+ "vuid": "VUID-VkTilePropertiesQCOM-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-VkTilePropertiesQCOM-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetDynamicRenderingTilePropertiesQCOM": {
+ "(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_QCOM_tile_properties)": [
+ {
+ "vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-pRenderingInfo-parameter",
+ "text": " <code>pRenderingInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> structure"
+ },
+ {
+ "vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-pProperties-parameter",
+ "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkTilePropertiesQCOM\">VkTilePropertiesQCOM</a> structure"
+ }
+ ]
+ },
"vkCreateRenderPass": {
"core": [
{
@@ -8068,11 +8104,11 @@
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_QCOM_render_pass_shader_resolve)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905",
- "text": " If the pipeline is being created with fragment shader state, and the <a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a> extension is enabled, and if subpass has any input attachments, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
+ "text": " If the pipeline is being created with fragment shader state, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a> extension</code> is enabled, and if subpass has any input attachments, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-sampleShadingEnable-04906",
- "text": " If the pipeline is being created with fragment shader state, and the <a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a> extension is enabled, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be false"
+ "text": " If the pipeline is being created with fragment shader state, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a></code> extension is enabled, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be false"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-flags-04907",
@@ -9632,7 +9668,7 @@
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02869",
- "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.offset</code> <strong class=\"purple\">must</strong> equal (0,0)"
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.offset</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\">(0,0)</span>"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02870",
@@ -11053,10 +11089,6 @@
"text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1"
},
{
- "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
- "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique"
- },
- {
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
"text": " If the pipeline is being created with <a href=\"#pipeline-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
},
@@ -11672,11 +11704,11 @@
"(VK_QCOM_render_pass_shader_resolve)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899",
- "text": " If the pipeline is being created with fragment shader state, and the <a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a> extension is enabled, and if subpass has any input attachments, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
+ "text": " If the pipeline is being created with fragment shader state, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a></code> extension is enabled, and if subpass has any input attachments, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900",
- "text": " If the pipeline is being created with fragment shader state, and the <a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a> extension is enabled, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be false"
+ "text": " If the pipeline is being created with fragment shader state, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a></code> extension is enabled, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be false"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04901",
@@ -17000,7 +17032,7 @@
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
- "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
+ "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a>, <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
},
{
"vuid": "VUID-VkImageViewCreateInfo-sType-unique",
@@ -17302,6 +17334,64 @@
"vuid": "VUID-VkImageViewCreateInfo-pNext-06787",
"text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code>."
}
+ ],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06944",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <a href=\"#features-textureSampleWeighted\"><code>textureSampleWeighted</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06945",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06946",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> for all components"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06947",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06948",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06949",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06950",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and if <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>imageType</code> <code>VK_IMAGE_TYPE_1D</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06951",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, then <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be equal to <code>2</code>."
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06952",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>width</code> equal to or greater than \\((numPhases \\times \\mathbin{max}\\left( \\mathbin{align}\\left(filterSize.width,4\\right), filterSize.height\\right))\\)"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06953",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and if <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>imageType</code> <code>VK_IMAGE_TYPE_2D</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06954",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be equal or greater than <span class=\"eq\">numPhases</span>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06955",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>width</code> equal to or greater than <code>filterSize.width</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06956",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>height</code> equal to or greater than <code>filterSize.height</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-06957",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure then <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a>::<code>filterSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-maxdimension\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterDimension.height</code></a>"
+ }
]
},
"VkImageViewUsageCreateInfo": {
@@ -17400,6 +17490,38 @@
}
]
},
+ "VkImageViewSampleWeightCreateInfoQCOM": {
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterSize-06958",
+ "text": " <code>filterSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-maxdimension\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterDimension.width</code></a>"
+ },
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterSize-06959",
+ "text": " <code>filterSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-maxdimension\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterDimension.height</code></a>"
+ },
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterCenter-06960",
+ "text": " <code>filterCenter.x</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">(filterSize.width - 1)</span>"
+ },
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterCenter-06961",
+ "text": " <code>filterCenter.y</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">(filterSize.height - 1)</span>"
+ },
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06962",
+ "text": " <code>numPhases</code> <strong class=\"purple\">must</strong> be a power of two squared value (i.e., 1, 4, 16, 64, 256, etc.)"
+ },
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06963",
+ "text": " <code>numPhases</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-phases\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterPhases</code></a>"
+ },
+ {
+ "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM</code>"
+ }
+ ]
+ },
"vkDestroyImageView": {
"core": [
{
@@ -19728,6 +19850,36 @@
"vuid": "VUID-VkSamplerCreateInfo-None-04012",
"text": " The maximum number of samplers with custom border colors which <strong class=\"purple\">can</strong> be simultaneously created on a device is implementation-dependent and specified by the <a href=\"#limits-maxCustomBorderColorSamplers\"><code>maxCustomBorderColorSamplers</code></a> member of the <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a> structure"
}
+ ],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06964",
+ "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>."
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06965",
+ "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06966",
+ "text": " [If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06967",
+ "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06968",
+ "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, and if <code>addressModeU</code> or <code>addressModeV</code> is <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, then <code>borderColor</code> <strong class=\"purple\">must</strong> be <code>VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK</code>."
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06969",
+ "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-06970",
+ "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ }
]
},
"VkSamplerReductionModeCreateInfo": {
@@ -20397,10 +20549,6 @@
"text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
},
{
- "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
- "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
- },
- {
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
"text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
},
@@ -20441,6 +20589,18 @@
"text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>"
}
],
+ "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+!(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
+ }
+ ],
+ "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-06938",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, and <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
+ }
+ ],
"!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
@@ -20471,10 +20631,6 @@
"text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
},
{
- "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
- "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
- },
- {
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
"text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
},
@@ -20571,6 +20727,18 @@
"text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>"
}
],
+ "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+!(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
+ }
+ ],
+ "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-06939",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, and <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
+ }
+ ],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
@@ -21041,6 +21209,16 @@
"text": " For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, elements of the <code>pAccelerationStructures</code> member of a <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> structure in the <code>pNext</code> chain of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>"
}
],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06940",
+ "text": " For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code> or <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, the <code>imageView</code> member of any element of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06941",
+ "text": " For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code> or <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>pDescriptorWrites</code>[i].<code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDescriptorWrites</code>[i].<code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures"
+ }
+ ],
"!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
@@ -21262,6 +21440,16 @@
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-06450",
"text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have either been created without a <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a> present in the <code>pNext</code> chain or with a <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a>::<code>minLod</code> of <code>0.0</code>"
}
+ ],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-06942",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with a view created with an <code>image</code> created with <code>VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-06943",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with a view created with an <code>image</code> created with <code>VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM</code>"
+ }
]
},
"VkDescriptorBufferInfo": {
@@ -25195,8 +25383,8 @@
"text": " The rectangular region specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within the render area of the current render pass instance"
},
{
- "vuid": "VUID-vkCmdClearAttachments-pRects-00017",
- "text": " The layers specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within every attachment that <code>pAttachments</code> refers to"
+ "vuid": "VUID-vkCmdClearAttachments-pRects-06937",
+ "text": " The layers specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within every attachment that <code>pAttachments</code> refers to, i.e. for each element of <code>pRects</code>, <a href=\"#VkClearRect\">VkClearRect</a>::<code>baseArrayLayer</code><br> <a href=\"#VkClearRect\">VkClearRect</a>::<code>layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of layers rendered to in the current render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
@@ -29257,6 +29445,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
@@ -29755,6 +29977,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
@@ -30265,6 +30521,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_EXT_multi_draw)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688",
@@ -30783,6 +31073,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_EXT_multi_draw)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688",
@@ -31313,6 +31637,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
@@ -31871,6 +32229,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688",
@@ -32407,6 +32799,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
@@ -32969,6 +33395,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688",
@@ -33493,6 +33953,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_EXT_transform_feedback)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
@@ -34055,6 +34549,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_NV_mesh_shader)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
@@ -34535,6 +35063,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_NV_mesh_shader)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
@@ -35043,6 +35605,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_NV_mesh_shader)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
@@ -37998,6 +38594,30 @@
}
]
},
+ "vkGetFramebufferTilePropertiesQCOM": {
+ "(VK_QCOM_tile_properties)": [
+ {
+ "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+ },
+ {
+ "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-framebuffer-parameter",
+ "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle"
+ },
+ {
+ "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-pPropertiesCount-parameter",
+ "text": " <code>pPropertiesCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertiesCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertiesCount</code> <a href=\"#VkTilePropertiesQCOM\">VkTilePropertiesQCOM</a> structures"
+ },
+ {
+ "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-framebuffer-parent",
+ "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
"vkCmdDispatch": {
"core": [
{
@@ -38214,6 +38834,40 @@
"vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04475",
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
+ ],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
]
},
"vkCmdDispatchIndirect": {
@@ -38436,6 +39090,40 @@
"vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475",
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
+ ],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
]
},
"VkDispatchIndirectCommand": {
@@ -38686,6 +39374,40 @@
"vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475",
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
+ ],
+ "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
]
},
"vkCmdSubpassShadingHUAWEI": {
@@ -38884,6 +39606,40 @@
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-sparseImageInt64Atomics-04475",
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
+ ],
+ "(VK_HUAWEI_subpass_shading)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
]
},
"vkCreateIndirectCommandsLayoutNV": {
@@ -39479,6 +40235,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_NV_device_generated_commands)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688",
@@ -45592,6 +46382,40 @@
"vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475",
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
+ ],
+ "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
]
},
"vkCmdTraceRaysKHR": {
@@ -45938,6 +46762,40 @@
"vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475",
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
+ ],
+ "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
]
},
"VkStridedDeviceAddressRegionKHR": {
@@ -46365,6 +47223,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951",
@@ -46617,6 +47509,40 @@
"text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command"
}
],
+ "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06971",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06972",
+ "text": " If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBoxFilterQCOM-06973",
+ "text": " If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSSDQCOM-06974",
+ "text": " If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06975",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06976",
+ "text": " If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06977",
+ "text": " If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06978",
+ "text": " If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>."
+ }
+ ],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951",
@@ -49416,6 +50342,22 @@
}
]
},
+ "VkPhysicalDeviceTilePropertiesFeaturesQCOM": {
+ "(VK_QCOM_tile_properties)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceTilePropertiesFeaturesQCOM-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceImageProcessingFeaturesQCOM": {
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageProcessingFeaturesQCOM-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM</code>"
+ }
+ ]
+ },
"VkPhysicalDevicePushDescriptorPropertiesKHR": {
"(VK_KHR_push_descriptor)": [
{
@@ -52144,6 +53086,56 @@
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06773",
"text": " If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>StencilRefLessBackEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used."
}
+ ],
+ "(VK_QCOM_image_processing)": [
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06979",
+ "text": " If an <code>OpImageWeightedSampleQCOM</code> operation is used, then the <code>Texture</code> <code>Sampled</code> <code>Image</code> and <code>Weight</code> <code>Image</code> parameters <strong class=\"purple\">must</strong> both be <em>dynamically uniform</em> for the quad."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06980",
+ "text": " If an <code>OpImageWeightedSampleQCOM</code> operation is used, then the <code>Weight</code> <code>Image</code> parameter <strong class=\"purple\">must</strong> be of storage class <code>UniformConstant</code> and type <code>OpTypeImage</code> with <code>Depth</code>=0, <code>Dim</code>=<code>2D</code>, <code>Arrayed</code>=1, <code>MS</code>=0, and <code>Sampled</code>=1."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06981",
+ "text": " If an <code>OpImageWeightedSampleQCOM</code> operation is used, then the <code>Weight</code> <code>Image</code> parameter <strong class=\"purple\">must</strong> be decorated with <code>WeightTextureQCOM</code>."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSADQCOM-06982",
+ "text": " If an <code>OpImageBlockMatchSADQCOM</code> or <code>OpImageBlockMatchSSDQCOM</code> operation is used, then the <code>target</code> <code>sampled</code> <code>image</code>, <code>reference</code> <code>sampled</code> <code>image</code>, and <code>Block</code> <code>Size</code> parameters <strong class=\"purple\">must</strong> both be <em>dynamically uniform</em> for the quad."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06983",
+ "text": " If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> be of storage class <code>UniformConstant</code> and type <code>OpTypeImage</code> with <code>Depth</code>=0, <code>Dim</code>=<code>2D</code>, <code>Arrayed</code>=0, <code>MS</code>=0, and <code>Sampled</code>=1."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06984",
+ "text": " If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then the <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> be decorated with <code>BlockMatchTextureQCOM</code>."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06985",
+ "text": " If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created using an identical sampler object."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06986",
+ "text": " If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created with sampler object with <code>unnormalizeCordinates</code> equal to <code>VK_TRUE</code>."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06987",
+ "text": " If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created with sampler object with <code>unnormalizeCordinates</code> equal to <code>VK_TRUE</code>."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06988",
+ "text": " If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>Block</code> <code>Size</code> less than or equal to <a href=\"#limits-blockmatch-maxblocksize\">maxBlockMatchRegion</a>."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06989",
+ "text": " If an <code>OpImageBoxFilterQCOM</code> operation is used, then <code>Box</code> <code>Size.y</code> <strong class=\"purple\">must</strong> be equal to or greater than 1.0 and less than or equal to <a href=\"#limits-boxfilter-maxblocksize\">maxBoxFilterBlockSize</a>.<code>height</code>."
+ },
+ {
+ "vuid": "VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06990",
+ "text": " If an <code>OpImageBoxFilterQCOM</code> operation is used, then <code>Sampled</code> <code>Texture</code> <code>Image</code> and <code>Box</code> <code>Size</code> parameters <strong class=\"purple\">must</strong> be <em>dynamically uniform</em>."
+ }
]
},
"vkCreateCuFunctionNVX": {
diff --git a/registry/vk.xml b/registry/vk.xml
index a43259f..3105dea 100644
--- a/registry/vk.xml
+++ b/registry/vk.xml
@@ -68,7 +68,7 @@ branch of the member gitlab server.
<tag name="EXT" author="Multivendor" contact="Jon Leech @oddhack"/>
<tag name="MESA" author="Mesa open source project" contact="Chad Versace @chadversary, Daniel Stone @fooishbar, David Airlie @airlied, Jason Ekstrand @jekstrand"/>
<tag name="INTEL" author="Intel Corporation" contact="Slawek Grajewski @sgrajewski"/>
- <tag name="HUAWEI" author="Huawei Technologies Co. Ltd." contact="Hueilong Wang @wyvernathuawei, Yunpeng Zhu @yunxingzhu"/>
+ <tag name="HUAWEI" author="Huawei Technologies Co. Ltd." contact="Pan Gao @PanGao-h, Juntao Li @Lawrenceleehw"/>
<tag name="VALVE" author="Valve Corporation" contact="Pierre-Loup Griffais @plagman, Joshua Ashton @Joshua-Ashton, Hans-Kristian Arntzen @HansKristian-Work"/>
<tag name="QNX" author="BlackBerry Limited" contact="Mike Gorchak @mgorchak-blackberry"/>
<tag name="JUICE" author="Juice Technologies, Inc." contact="David McCloskey @damcclos, Dean Beeler @canadacow"/>
@@ -159,7 +159,7 @@ branch of the member gitlab server.
<type category="define" requires="VK_MAKE_API_VERSION">// Vulkan 1.3 version number
#define <name>VK_API_VERSION_1_3</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 221</type>
+#define <name>VK_HEADER_VERSION</name> 222</type>
<type 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, 3, VK_HEADER_VERSION)</type>
@@ -916,13 +916,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkComponentSwizzle</type> <name>a</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceProperties" returnedonly="true">
- <member limittype="exact"><type>uint32_t</type> <name>apiVersion</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>driverVersion</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>vendorID</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>deviceID</name></member>
- <member limittype="exact"><type>VkPhysicalDeviceType</type> <name>deviceType</name></member>
- <member limittype="exact"><type>char</type> <name>deviceName</name>[<enum>VK_MAX_PHYSICAL_DEVICE_NAME_SIZE</enum>]</member>
- <member limittype="exact"><type>uint8_t</type> <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
+ <member limittype="noauto"><type>uint32_t</type> <name>apiVersion</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>driverVersion</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>vendorID</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>deviceID</name></member>
+ <member limittype="noauto"><type>VkPhysicalDeviceType</type> <name>deviceType</name></member>
+ <member limittype="noauto"><type>char</type> <name>deviceName</name>[<enum>VK_MAX_PHYSICAL_DEVICE_NAME_SIZE</enum>]</member>
+ <member limittype="noauto"><type>uint8_t</type> <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
<member limittype="struct"><type>VkPhysicalDeviceLimits</type> <name>limits</name></member>
<member limittype="struct"><type>VkPhysicalDeviceSparseProperties</type> <name>sparseProperties</name></member>
</type>
@@ -1091,7 +1091,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type category="struct" name="VkBufferViewCreateInfo">
<member values="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkBufferViewCreateFlags</type><name>flags</name></member>
+ <member optional="true"><type>VkBufferViewCreateFlags</type> <name>flags</name></member>
<member><type>VkBuffer</type> <name>buffer</name></member>
<member><type>VkFormat</type> <name>format</name><comment>Optionally specifies format of elements</comment></member>
<member><type>VkDeviceSize</type> <name>offset</name><comment>Specified in bytes</comment></member>
@@ -1188,7 +1188,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
<member optional="true"><type>VkDeviceMemory</type> <name>memory</name></member>
<member><type>VkDeviceSize</type> <name>memoryOffset</name><comment>Specified in bytes</comment></member>
- <member optional="true"><type>VkSparseMemoryBindFlags</type><name>flags</name></member>
+ <member optional="true"><type>VkSparseMemoryBindFlags</type> <name>flags</name></member>
</type>
<type category="struct" name="VkSparseImageMemoryBind">
<member><type>VkImageSubresource</type> <name>subresource</name></member>
@@ -1196,7 +1196,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkExtent3D</type> <name>extent</name></member>
<member optional="true"><type>VkDeviceMemory</type> <name>memory</name></member>
<member><type>VkDeviceSize</type> <name>memoryOffset</name><comment>Specified in bytes</comment></member>
- <member optional="true"><type>VkSparseMemoryBindFlags</type><name>flags</name></member>
+ <member optional="true"><type>VkSparseMemoryBindFlags</type> <name>flags</name></member>
</type>
<type category="struct" name="VkSparseBufferMemoryBindInfo">
<member><type>VkBuffer</type> <name>buffer</name></member>
@@ -2142,7 +2142,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="releaseCount">const <type>uint64_t</type>* <name>pReleaseKeys</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>deviceGeneratedCommands</name></member>
</type>
@@ -2412,11 +2412,11 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type category="struct" name="VkPhysicalDeviceIDProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="exact"><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="exact"><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="exact"><type>uint8_t</type> <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member>
- <member limittype="exact"><type>uint32_t</type> <name>deviceNodeMask</name></member>
- <member limittype="exact"><type>VkBool32</type> <name>deviceLUIDValid</name></member>
+ <member limittype="noauto"><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
+ <member limittype="noauto"><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
+ <member limittype="noauto"><type>uint8_t</type> <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member>
+ <member limittype="noauto"><type>uint32_t</type> <name>deviceNodeMask</name></member>
+ <member limittype="noauto"><type>VkBool32</type> <name>deviceLUIDValid</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceIDPropertiesKHR" alias="VkPhysicalDeviceIDProperties"/>
<type category="struct" name="VkExternalMemoryImageCreateInfo" structextends="VkImageCreateInfo">
@@ -2844,7 +2844,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkDescriptorUpdateTemplateType</type> <name>templateType</name></member>
<member noautovalidity="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></member>
<member noautovalidity="true"><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
- <member noautovalidity="true"><type>VkPipelineLayout</type><name>pipelineLayout</name><comment>If used for push descriptors, this is the only allowed layout</comment></member>
+ <member noautovalidity="true"><type>VkPipelineLayout</type> <name>pipelineLayout</name><comment>If used for push descriptors, this is the only allowed layout</comment></member>
<member noautovalidity="true"><type>uint32_t</type> <name>set</name></member>
</type>
<type category="struct" name="VkDescriptorUpdateTemplateCreateInfoKHR" alias="VkDescriptorUpdateTemplateCreateInfo"/>
@@ -3829,10 +3829,10 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type category="struct" name="VkPhysicalDevicePCIBusInfoPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>pciDomain</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>pciBus</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>pciDevice</name></member>
- <member limittype="exact"><type>uint32_t</type> <name>pciFunction</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>pciDomain</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>pciBus</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>pciDevice</name></member>
+ <member limittype="noauto"><type>uint32_t</type> <name>pciFunction</name></member>
</type>
<type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
<member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
@@ -4009,7 +4009,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>uint32_t</type> <name>rasterizationStream</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>representativeFragmentTest</name></member>
</type>
@@ -4211,7 +4211,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkAccelerationStructureTypeNV</type> <name>type</name></member>
- <member optional="true"><type>VkBuildAccelerationStructureFlagsNV</type><name>flags</name></member>
+ <member optional="true"><type>VkBuildAccelerationStructureFlagsNV</type> <name>flags</name></member>
<member optional="true"><type>uint32_t</type> <name>instanceCount</name></member>
<member optional="true"><type>uint32_t</type> <name>geometryCount</name></member>
<member len="geometryCount">const <type>VkGeometryNV</type>* <name>pGeometries</name></member>
@@ -4701,7 +4701,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true"><type>VkHeadlessSurfaceCreateFlagsEXT</type> <name>flags</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceCoverageReductionModeFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>coverageReductionMode</name></member>
</type>
@@ -4786,7 +4786,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member limittype="max"><type>uint32_t</type> <name>shaderWarpsPerSM</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>shaderSMBuiltins</name></member>
</type>
@@ -4798,13 +4798,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkBool32</type> <name>fragmentShaderShadingRateInterlock</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>separateDepthStencilLayouts</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR" alias="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"/>
<type category="struct" name="VkAttachmentReferenceStencilLayout" structextends="VkAttachmentReference2">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkImageLayout</type> <name>stencilLayout</name></member>
</type>
@@ -4816,7 +4816,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
</type>
<type category="struct" name="VkAttachmentReferenceStencilLayoutKHR" alias="VkAttachmentReferenceStencilLayout"/>
<type category="struct" name="VkAttachmentDescriptionStencilLayout" structextends="VkAttachmentDescription2">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkImageLayout</type> <name>stencilInitialLayout</name></member>
<member><type>VkImageLayout</type> <name>stencilFinalLayout</name></member>
@@ -4965,7 +4965,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
</type>
<type category="struct" name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT" alias="VkPhysicalDevicePipelineCreationCacheControlFeatures"/>
<type category="struct" name="VkPhysicalDeviceVulkan11Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member>
<member><type>VkBool32</type> <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member>
@@ -4981,7 +4981,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkBool32</type> <name>shaderDrawParameters</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVulkan11Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member limittype="exact"><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
<member limittype="exact"><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
@@ -5000,7 +5000,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member limittype="max"><type>VkDeviceSize</type> <name>maxMemoryAllocationSize</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVulkan12Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>samplerMirrorClampToEdge</name></member>
<member><type>VkBool32</type> <name>drawIndirectCount</name></member>
@@ -5051,14 +5051,14 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkBool32</type> <name>subgroupBroadcastDynamicId</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVulkan12Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="exact"><type>VkDriverId</type> <name>driverID</name></member>
- <member limittype="exact"><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member>
- <member limittype="exact"><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member>
- <member limittype="exact"><type>VkConformanceVersion</type> <name>conformanceVersion</name></member>
- <member limittype="exact"><type>VkShaderFloatControlsIndependence</type><name>denormBehaviorIndependence</name></member>
- <member limittype="exact"><type>VkShaderFloatControlsIndependence</type><name>roundingModeIndependence</name></member>
+ <member limittype="noauto"><type>VkDriverId</type> <name>driverID</name></member>
+ <member limittype="noauto"><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member>
+ <member limittype="noauto"><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member>
+ <member limittype="noauto"><type>VkConformanceVersion</type> <name>conformanceVersion</name></member>
+ <member limittype="exact"><type>VkShaderFloatControlsIndependence</type> <name>denormBehaviorIndependence</name></member>
+ <member limittype="exact"><type>VkShaderFloatControlsIndependence</type> <name>roundingModeIndependence</name></member>
<member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat16</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
<member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat32</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
<member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat64</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
@@ -5107,7 +5107,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferIntegerColorSampleCounts</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVulkan13Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>robustImageAccess</name></member>
<member><type>VkBool32</type> <name>inlineUniformBlock</name></member>
@@ -5126,7 +5126,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkBool32</type> <name>maintenance4</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVulkan13Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member limittype="min" noautovalidity="true"><type>uint32_t</type> <name>minSubgroupSize</name><comment>The minimum subgroup size supported by this device</comment></member>
<member limittype="max" noautovalidity="true"><type>uint32_t</type> <name>maxSubgroupSize</name><comment>The maximum subgroup size supported by this device</comment></member>
@@ -5390,7 +5390,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkRect2D</type> <name>renderArea</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceDiagnosticsConfigFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>diagnosticsConfig</name></member>
</type>
@@ -5636,7 +5636,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkExtent2D</type> <name>fragmentSize</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceShaderTerminateInvocationFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>shaderTerminateInvocation</name></member>
</type>
@@ -5709,7 +5709,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkBool32</type> <name>externalMemoryRDMA</name></member>
</type>
<type category="struct" name="VkVertexInputBindingDescription2EXT">
- <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>binding</name></member>
<member><type>uint32_t</type> <name>stride</name></member>
@@ -5717,7 +5717,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>uint32_t</type> <name>divisor</name></member>
</type>
<type category="struct" name="VkVertexInputAttributeDescription2EXT">
- <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>location</name><comment>location of the shader vertex attrib</comment></member>
<member><type>uint32_t</type> <name>binding</name><comment>Vertex buffer binding id</comment></member>
@@ -5848,18 +5848,18 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkBool32</type> <name>optimal</name></member>
</type>
<type category="struct" name="VkMultisampledRenderToSingleSampledInfoEXT" structextends="VkSubpassDescription2,VkRenderingInfo">
- <member values="VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>multisampledRenderToSingleSampledEnable</name></member>
<member><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name></member>
</type>
<type category="struct" name="VkVideoQueueFamilyProperties2KHR" structextends="VkQueueFamilyProperties2">
- <member values="VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member limittype="bitmask"><type>VkVideoCodecOperationFlagsKHR</type> <name>videoCodecOperations</name></member>
</type>
<type category="struct" name="VkQueueFamilyQueryResultStatusProperties2KHR" structextends="VkQueueFamilyProperties2">
- <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>queryResultStatusSupport</name></member>
</type>
@@ -5870,7 +5870,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="profileCount">const <type>VkVideoProfileKHR</type>* <name>pProfiles</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceVideoFormatInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"> <type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"> <type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkImageUsageFlags</type> <name>imageUsage</name></member>
</type>
@@ -5885,7 +5885,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkImageUsageFlags</type> <name>imageUsageFlags</name></member>
</type>
<type category="struct" name="VkVideoProfileKHR" structextends="VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkVideoCodecOperationFlagBitsKHR</type> <name>videoCodecOperation</name></member>
<member><type>VkVideoChromaSubsamplingFlagsKHR</type> <name>chromaSubsampling</name></member>
@@ -5893,7 +5893,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkVideoComponentBitDepthFlagsKHR</type> <name>chromaBitDepth</name></member>
</type>
<type category="struct" name="VkVideoCapabilitiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkVideoCapabilityFlagsKHR</type> <name>capabilityFlags</name></member>
<member><type>VkDeviceSize</type> <name>minBitstreamBufferOffsetAlignment</name></member>
@@ -5906,13 +5906,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkExtensionProperties</type> <name>stdHeaderVersion</name></member>
</type>
<type category="struct" name="VkVideoGetMemoryPropertiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>memoryBindIndex</name></member>
<member><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></member>
</type>
<type category="struct" name="VkVideoBindMemoryKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>memoryBindIndex</name></member>
<member><type>VkDeviceMemory</type> <name>memory</name></member>
@@ -5920,7 +5920,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkDeviceSize</type> <name>memorySize</name></member>
</type>
<type category="struct" name="VkVideoPictureResourceKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkOffset2D</type> <name>codedOffset</name><comment>The offset to be used for the picture resource, currently only used in field mode</comment></member>
<member><type>VkExtent2D</type> <name>codedExtent</name><comment>The extent to be used for the picture resource</comment></member>
@@ -5928,18 +5928,18 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkImageView</type> <name>imageViewBinding</name><comment>The ImageView binding of the resource</comment></member>
</type>
<type category="struct" name="VkVideoReferenceSlotKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>int8_t</type> <name>slotIndex</name><comment>The reference slot index</comment></member>
<member>const <type>VkVideoPictureResourceKHR</type>* <name>pPictureResource</name><comment>The reference picture resource</comment></member>
</type>
<type category="struct" name="VkVideoDecodeCapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member noautovalidity="true"><type>VkVideoDecodeCapabilityFlagsKHR</type> <name>flags</name></member>
</type>
<type category="struct" name="VkVideoDecodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkVideoDecodeFlagsKHR</type> <name>flags</name></member>
<member><type>VkBuffer</type> <name>srcBuffer</name></member>
@@ -5979,13 +5979,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264MvcElement"/>
<type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264MvcElementFlags"/>
<type category="struct" name="VkVideoDecodeH264ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH264ProfileIdc</type> <name>stdProfileIdc</name></member>
<member noautovalidity="true"><type>VkVideoDecodeH264PictureLayoutFlagsEXT</type> <name>pictureLayout</name></member>
</type>
<type category="struct" name="VkVideoDecodeH264CapabilitiesEXT" returnedonly="true" structextends="VkVideoDecodeCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH264Level</type> <name>maxLevel</name></member>
<member><type>VkOffset2D</type> <name>fieldOffsetGranularity</name></member>
@@ -5993,7 +5993,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SequenceParameterSet"/>
<type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PictureParameterSet"/>
<type category="struct" name="VkVideoDecodeH264SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>spsStdCount</name></member>
<member len="spsStdCount" optional="true">const <type>StdVideoH264SequenceParameterSet</type>* <name>pSpsStd</name></member>
@@ -6001,26 +6001,26 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="ppsStdCount" optional="true">const <type>StdVideoH264PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
</type>
<type category="struct" name="VkVideoDecodeH264SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
<member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
<member optional="true">const <type>VkVideoDecodeH264SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
</type>
<type category="struct" name="VkVideoDecodeH264PictureInfoEXT" structextends="VkVideoDecodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
<member>const <type>StdVideoDecodeH264PictureInfo</type>* <name>pStdPictureInfo</name></member>
<member><type>uint32_t</type> <name>slicesCount</name></member>
<member len="slicesCount">const <type>uint32_t</type>* <name>pSlicesDataOffsets</name></member>
</type>
<type category="struct" name="VkVideoDecodeH264DpbSlotInfoEXT" structextends="VkVideoReferenceSlotKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>const <type>StdVideoDecodeH264ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
</type>
<type category="struct" name="VkVideoDecodeH264MvcEXT" structextends="VkVideoDecodeH264PictureInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true" noautovalidity="true">const <type>void</type>*<name>pNext</name></member>
<member>const <type>StdVideoDecodeH264Mvc</type>* <name>pStdMvc</name></member>
</type>
@@ -6049,17 +6049,17 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265PictureInfoFlags"/>
<type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265ReferenceInfoFlags"/>
<type category="struct" name="VkVideoDecodeH265ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH265ProfileIdc</type> <name>stdProfileIdc</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265CapabilitiesEXT" returnedonly="true" structextends="VkVideoDecodeCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH265Level</type> <name>maxLevel</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>vpsStdCount</name></member>
<member len="vpsStdCount" optional="true">const <type>StdVideoH265VideoParameterSet</type>* <name>pVpsStd</name></member>
@@ -6069,7 +6069,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="ppsStdCount" optional="true">const <type>StdVideoH265PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
</type>
<type category="struct" name="VkVideoDecodeH265SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxVpsStdCount</name></member>
<member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
@@ -6077,19 +6077,19 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true">const <type>VkVideoDecodeH265SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265PictureInfoEXT" structextends="VkVideoDecodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>StdVideoDecodeH265PictureInfo</type>* <name>pStdPictureInfo</name></member>
<member><type>uint32_t</type> <name>slicesCount</name></member>
<member len="slicesCount">const <type>uint32_t</type>* <name>pSlicesDataOffsets</name></member>
</type>
<type category="struct" name="VkVideoDecodeH265DpbSlotInfoEXT" structextends="VkVideoReferenceSlotKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>const <type>StdVideoDecodeH265ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
</type>
<type category="struct" name="VkVideoSessionCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
<member optional="true"><type>VkVideoSessionCreateFlagsKHR</type> <name>flags</name></member>
@@ -6102,18 +6102,18 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member>const <type>VkExtensionProperties</type>* <name>pStdHeaderVersion</name></member>
</type>
<type category="struct" name="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkVideoSessionParametersKHR</type> <name>videoSessionParametersTemplate</name></member>
<member><type>VkVideoSessionKHR</type> <name>videoSession</name></member>
</type>
<type category="struct" name="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>updateSequenceCount</name></member>
</type>
<type category="struct" name="VkVideoBeginCodingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkVideoBeginCodingFlagsKHR</type> <name>flags</name></member>
<member><type>VkVideoCodingQualityPresetFlagsKHR</type> <name>codecQualityPreset</name></member>
@@ -6123,17 +6123,17 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="referenceSlotCount">const <type>VkVideoReferenceSlotKHR</type>* <name>pReferenceSlots</name></member>
</type>
<type category="struct" name="VkVideoEndCodingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkVideoEndCodingFlagsKHR</type> <name>flags</name></member>
</type>
<type category="struct" name="VkVideoCodingControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkVideoCodingControlFlagsKHR</type> <name>flags</name></member>
</type>
<type category="struct" name="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkVideoEncodeFlagsKHR</type> <name>flags</name></member>
<member><type>uint32_t</type> <name>qualityLevel</name></member>
@@ -6147,7 +6147,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>uint32_t</type> <name>precedingExternallyEncodedBytes</name></member>
</type>
<type category="struct" name="VkVideoEncodeRateControlInfoKHR" structextends="VkVideoCodingControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member noautovalidity="true"><type>VkVideoEncodeRateControlFlagsKHR</type> <name>flags</name></member>
<member><type>VkVideoEncodeRateControlModeFlagBitsKHR</type> <name>rateControlMode</name></member>
@@ -6155,7 +6155,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="layerCount">const <type>VkVideoEncodeRateControlLayerInfoKHR</type>* <name>pLayerConfigs</name></member>
</type>
<type category="struct" name="VkVideoEncodeRateControlLayerInfoKHR" structextends="VkVideoCodingControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>averageBitrate</name></member>
<member><type>uint32_t</type> <name>maxBitrate</name></member>
@@ -6165,7 +6165,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>uint32_t</type> <name>initialVirtualBufferSizeInMs</name></member>
</type>
<type category="struct" name="VkVideoEncodeCapabilitiesKHR" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member noautovalidity="true"><type>VkVideoEncodeCapabilityFlagsKHR</type> <name>flags</name></member>
<member><type>VkVideoEncodeRateControlModeFlagsKHR</type> <name>rateControlModes</name></member>
@@ -6174,7 +6174,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkExtent2D</type> <name>inputImageDataFillAlignment</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264CapabilitiesEXT" returnedonly="true" structextends="VkVideoEncodeCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member noautovalidity="true"><type>VkVideoEncodeH264CapabilityFlagsEXT</type> <name>flags</name></member>
<member><type>VkVideoEncodeH264InputModeFlagsEXT</type> <name>inputModeFlags</name></member>
@@ -6200,7 +6200,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefListModEntry"/>
<type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefPicMarkingEntry"/>
<type category="struct" name="VkVideoEncodeH264SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>spsStdCount</name></member>
<member len="spsStdCount" optional="true">const <type>StdVideoH264SequenceParameterSet</type>* <name>pSpsStd</name></member>
@@ -6208,20 +6208,20 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="ppsStdCount" optional="true">const <type>StdVideoH264PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
</type>
<type category="struct" name="VkVideoEncodeH264SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
<member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
<member optional="true">const <type>VkVideoEncodeH264SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264DpbSlotInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>int8_t</type> <name>slotIndex</name></member>
<member>const <type>StdVideoEncodeH264ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264VclFrameInfoEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true">const <type>VkVideoEncodeH264ReferenceListsEXT</type>* <name>pReferenceFinalLists</name></member>
<member><type>uint32_t</type> <name>naluSliceEntryCount</name></member>
@@ -6229,7 +6229,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member>const <type>StdVideoEncodeH264PictureInfo</type>* <name>pCurrentPictureInfo</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264ReferenceListsEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>uint8_t</type> <name>referenceList0EntryCount</name></member>
<member len="referenceList0EntryCount">const <type>VkVideoEncodeH264DpbSlotInfoEXT</type>* <name>pReferenceList0Entries</name></member>
@@ -6238,7 +6238,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member>const <type>StdVideoEncodeH264RefMemMgmtCtrlOperations</type>* <name>pMemMgmtCtrlOperations</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264EmitPictureParametersEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint8_t</type> <name>spsId</name></member>
<member><type>VkBool32</type> <name>emitSpsEnable</name></member>
@@ -6246,19 +6246,19 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="ppsIdEntryCount">const <type>uint8_t</type>* <name>ppsIdEntries</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH264ProfileIdc</type> <name>stdProfileIdc</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264NaluSliceEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>mbCount</name></member>
<member optional="true">const <type>VkVideoEncodeH264ReferenceListsEXT</type>* <name>pReferenceFinalLists</name></member>
<member>const <type>StdVideoEncodeH264SliceHeader</type>* <name>pSliceHeaderStd</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264RateControlInfoEXT" structextends="VkVideoEncodeRateControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>gopFrameCount</name></member>
<member><type>uint32_t</type> <name>idrPeriod</name></member>
@@ -6277,7 +6277,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member noautovalidity="true"><type>uint32_t</type> <name>frameBSize</name></member>
</type>
<type category="struct" name="VkVideoEncodeH264RateControlLayerInfoEXT" structextends="VkVideoEncodeRateControlLayerInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint8_t</type> <name>temporalLayerId</name></member>
<member><type>VkBool32</type> <name>useInitialRcQp</name></member>
@@ -6290,7 +6290,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkVideoEncodeH264FrameSizeEXT</type> <name>maxFrameSize</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265CapabilitiesEXT" returnedonly="true" structextends="VkVideoEncodeCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member noautovalidity="true"><type>VkVideoEncodeH265CapabilityFlagsEXT</type> <name>flags</name></member>
<member><type>VkVideoEncodeH265InputModeFlagsEXT</type> <name>inputModeFlags</name></member>
@@ -6323,7 +6323,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceInfoFlags"/>
<type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceModificationFlags"/>
<type category="struct" name="VkVideoEncodeH265SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>vpsStdCount</name></member>
<member len="vpsStdCount" optional="true">const <type>StdVideoH265VideoParameterSet</type>* <name>pVpsStd</name></member>
@@ -6333,7 +6333,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="ppsStdCount" optional="true">const <type>StdVideoH265PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
</type>
<type category="struct" name="VkVideoEncodeH265SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxVpsStdCount</name></member>
<member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
@@ -6341,7 +6341,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true">const <type>VkVideoEncodeH265SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265VclFrameInfoEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true">const <type>VkVideoEncodeH265ReferenceListsEXT</type>* <name>pReferenceFinalLists</name></member>
<member><type>uint32_t</type> <name>naluSliceSegmentEntryCount</name></member>
@@ -6349,7 +6349,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member>const <type>StdVideoEncodeH265PictureInfo</type>* <name>pCurrentPictureInfo</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265EmitPictureParametersEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint8_t</type> <name>vpsId</name></member>
<member><type>uint8_t</type> <name>spsId</name></member>
@@ -6359,14 +6359,14 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member len="ppsIdEntryCount">const <type>uint8_t</type>* <name>ppsIdEntries</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265NaluSliceSegmentEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>ctbCount</name></member>
<member optional="true">const <type>VkVideoEncodeH265ReferenceListsEXT</type>* <name>pReferenceFinalLists</name></member>
<member>const <type>StdVideoEncodeH265SliceSegmentHeader</type>* <name>pSliceSegmentHeaderStd</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265RateControlInfoEXT" structextends="VkVideoEncodeRateControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>gopFrameCount</name></member>
<member><type>uint32_t</type> <name>idrPeriod</name></member>
@@ -6385,7 +6385,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member noautovalidity="true"><type>uint32_t</type> <name>frameBSize</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265RateControlLayerInfoEXT" structextends="VkVideoEncodeRateControlLayerInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>uint8_t</type> <name>temporalId</name></member>
<member><type>VkBool32</type> <name>useInitialRcQp</name></member>
@@ -6398,18 +6398,18 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkVideoEncodeH265FrameSizeEXT</type> <name>maxFrameSize</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>StdVideoH265ProfileIdc</type> <name>stdProfileIdc</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265DpbSlotInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>int8_t</type> <name>slotIndex</name></member>
<member>const <type>StdVideoEncodeH265ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
</type>
<type category="struct" name="VkVideoEncodeH265ReferenceListsEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT"><type>VkStructureType</type><name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>uint8_t</type> <name>referenceList0EntryCount</name></member>
<member len="referenceList0EntryCount">const <type>VkVideoEncodeH265DpbSlotInfoEXT</type>* <name>pReferenceList0Entries</name></member>
@@ -6525,10 +6525,10 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member limittype="bitmask"><type>VkBool32</type> <name>hasPrimary</name></member>
<member limittype="bitmask"><type>VkBool32</type> <name>hasRender</name></member>
- <member limittype="exact"><type>int64_t</type> <name>primaryMajor</name></member>
- <member limittype="exact"><type>int64_t</type> <name>primaryMinor</name></member>
- <member limittype="exact"><type>int64_t</type> <name>renderMajor</name></member>
- <member limittype="exact"><type>int64_t</type> <name>renderMinor</name></member>
+ <member limittype="noauto"><type>int64_t</type> <name>primaryMajor</name></member>
+ <member limittype="noauto"><type>int64_t</type> <name>primaryMinor</name></member>
+ <member limittype="noauto"><type>int64_t</type> <name>renderMajor</name></member>
+ <member limittype="noauto"><type>int64_t</type> <name>renderMinor</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
@@ -7048,12 +7048,46 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkPipelineRobustnessImageBehaviorEXT</type> <name>images</name></member>
</type>
<type category="struct" name="VkPhysicalDevicePipelineRobustnessPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkPipelineRobustnessBufferBehaviorEXT</type> <name>defaultRobustnessStorageBuffers</name></member>
- <member limittype="noauto"><type>VkPipelineRobustnessBufferBehaviorEXT</type> <name>defaultRobustnessUniformBuffers</name></member>
- <member limittype="noauto"><type>VkPipelineRobustnessBufferBehaviorEXT</type> <name>defaultRobustnessVertexInputs</name></member>
- <member limittype="noauto"><type>VkPipelineRobustnessImageBehaviorEXT</type> <name>defaultRobustnessImages</name></member>
+ <member limittype="exact"><type>VkPipelineRobustnessBufferBehaviorEXT</type> <name>defaultRobustnessStorageBuffers</name></member>
+ <member limittype="exact"><type>VkPipelineRobustnessBufferBehaviorEXT</type> <name>defaultRobustnessUniformBuffers</name></member>
+ <member limittype="exact"><type>VkPipelineRobustnessBufferBehaviorEXT</type> <name>defaultRobustnessVertexInputs</name></member>
+ <member limittype="exact"><type>VkPipelineRobustnessImageBehaviorEXT</type> <name>defaultRobustnessImages</name></member>
+ </type>
+ <type category="struct" name="VkImageViewSampleWeightCreateInfoQCOM" structextends="VkImageViewCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true">const <type>void</type>* <name>pNext</name></member>
+ <member><type>VkOffset2D</type> <name>filterCenter</name></member>
+ <member><type>VkExtent2D</type> <name>filterSize</name></member>
+ <member><type>uint32_t</type> <name>numPhases</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceImageProcessingFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkBool32</type> <name>textureSampleWeighted</name></member>
+ <member><type>VkBool32</type> <name>textureBoxFilter</name></member>
+ <member><type>VkBool32</type> <name>textureBlockMatch</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceImageProcessingPropertiesQCOM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>* <name>pNext</name></member>
+ <member limittype="max" optional="true"><type>uint32_t</type> <name>maxWeightFilterPhases</name></member>
+ <member limittype="max" optional="true"><type>VkExtent2D</type> <name>maxWeightFilterDimension</name></member>
+ <member limittype="max" optional="true"><type>VkExtent2D</type> <name>maxBlockMatchRegion</name></member>
+ <member limittype="max" optional="true"><type>VkExtent2D</type> <name>maxBoxFilterBlockSize</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceTilePropertiesFeaturesQCOM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkBool32</type> <name>tileProperties</name></member>
+ </type>
+ <type category="struct" name="VkTilePropertiesQCOM">
+ <member values="VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkExtent3D</type> <name>tileSize</name></member>
+ <member><type>VkExtent2D</type> <name>apronSize</name></member>
+ <member><type>VkOffset2D</type> <name>origin</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@@ -8924,16 +8958,16 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="23" name="VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT"/>
</enums>
<enums name="VkPipelineRobustnessBufferBehaviorEXT" type="enum">
- <enum value="0" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT" />
- <enum value="1" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT" />
- <enum value="2" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT" />
- <enum value="3" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT" />
+ <enum value="0" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT" />
+ <enum value="1" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT" />
+ <enum value="2" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT" />
+ <enum value="3" name="VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT" />
</enums>
<enums name="VkPipelineRobustnessImageBehaviorEXT" type="enum">
- <enum value="0" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT" />
- <enum value="1" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT" />
- <enum value="2" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT" />
- <enum value="3" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT" />
+ <enum value="0" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT" />
+ <enum value="1" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT" />
+ <enum value="2" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT" />
+ <enum value="3" name="VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT" />
</enums>
<commands comment="Vulkan command definitions">
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
@@ -12137,6 +12171,19 @@ typedef void* <name>MTLSharedEvent_id</name>;
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkExportMetalObjectsInfoEXT</type>* <name>pMetalObjectsInfo</name></param>
</command>
+ <command successcodes="VK_SUCCESS,VK_INCOMPLETE">
+ <proto><type>VkResult</type> <name>vkGetFramebufferTilePropertiesQCOM</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param><type>VkFramebuffer</type> <name>framebuffer</name></param>
+ <param optional="false,true"><type>uint32_t</type>* <name>pPropertiesCount</name></param>
+ <param optional="true" len="pPropertiesCount"><type>VkTilePropertiesQCOM</type>* <name>pProperties</name></param>
+ </command>
+ <command successcodes="VK_SUCCESS">
+ <proto><type>VkResult</type> <name>vkGetDynamicRenderingTilePropertiesQCOM</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param>const <type>VkRenderingInfo</type>* <name>pRenderingInfo</name></param>
+ <param><type>VkTilePropertiesQCOM</type>* <name>pProperties</name></param>
+ </command>
</commands>
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
@@ -18313,7 +18360,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="4" extends="VkDescriptorBindingFlagBits" name="VK_DESCRIPTOR_BINDING_RESERVED_4_BIT_QCOM"/>
</require>
</extension>
- <extension name="VK_HUAWEI_subpass_shading" number="370" type="device" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" requires="VK_KHR_create_renderpass2,VK_KHR_synchronization2" supported="vulkan">
+ <extension name="VK_HUAWEI_subpass_shading" number="370" type="device" author="HUAWEI" contact="Pan Gao @PanGao-h" requires="VK_KHR_create_renderpass2,VK_KHR_synchronization2" supported="vulkan">
<require>
<enum value="2" name="VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION"/>
<enum value="&quot;VK_HUAWEI_subpass_shading&quot;" name="VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME"/>
@@ -18330,7 +18377,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<command name="vkCmdSubpassShadingHUAWEI"/>
</require>
</extension>
- <extension name="VK_HUAWEI_invocation_mask" number="371" type="device" requires="VK_KHR_ray_tracing_pipeline,VK_KHR_synchronization2" author="Huawei" contact="Yunpeng Zhu @yunxingzhu" supported="vulkan">
+ <extension name="VK_HUAWEI_invocation_mask" number="371" type="device" requires="VK_KHR_ray_tracing_pipeline,VK_KHR_synchronization2" author="Huawei" contact="Pan Gao @PanGao-h" supported="vulkan">
<require>
<enum value="1" name="VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION"/>
<enum value="&quot;VK_HUAWEI_invocation_mask&quot;" name="VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME"/>
@@ -18902,17 +18949,27 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="1" extends="VkDeviceQueueCreateFlagBits" name="VK_DEVICE_QUEUE_CREATE_RESERVED_1_BIT_QCOM"/>
</require>
</extension>
- <extension name="VK_QCOM_extension_441" number="441" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
+ <extension name="VK_QCOM_image_processing" number="441" type="device" requires="VK_KHR_format_feature_flags2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
<require>
- <enum value="0" name="VK_QCOM_EXTENSION_441_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_441&quot;" name="VK_QCOM_EXTENSION_441_EXTENSION_NAME"/>
+ <enum value="1" name="VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION"/>
+ <enum value="&quot;VK_QCOM_image_processing&quot;" name="VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"/>
+ <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"/>
<enum bitpos="4" extends="VkSamplerCreateFlagBits" name="VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM"/>
- <enum bitpos="20" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_20_BIT_QCOM"/>
- <enum bitpos="21" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_21_BIT_QCOM"/>
- <enum bitpos="34" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_34_BIT_QCOM"/>
- <enum bitpos="35" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_35_BIT_QCOM"/>
- <enum bitpos="36" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_36_BIT_QCOM"/>
- <enum bitpos="37" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_37_BIT_QCOM"/>
+ <enum bitpos="20" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM"/>
+ <enum bitpos="21" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM"/>
+ <enum offset="0" extends="VkDescriptorType" name="VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM"/>
+ <enum offset="1" extends="VkDescriptorType" name="VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM"/>
+ <type name="VkImageViewSampleWeightCreateInfoQCOM"/>
+ <type name="VkPhysicalDeviceImageProcessingFeaturesQCOM"/>
+ <type name="VkPhysicalDeviceImageProcessingPropertiesQCOM"/>
+ </require>
+ <require extension="VK_KHR_format_feature_flags2">
+ <enum bitpos="34" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM"/>
+ <enum bitpos="35" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM"/>
+ <enum bitpos="36" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM"/>
+ <enum bitpos="37" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM"/>
</require>
</extension>
<extension name="VK_COREAVI_extension_442" number="442" author="COREAVI" contact="Aidan Fabius @afabius" supported="disabled">
@@ -19211,10 +19268,17 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="&quot;VK_EXT_extension_484&quot;" name="VK_EXT_EXTENSION_484_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_QCOM_extension_485" number="485" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
+ <extension name="VK_QCOM_tile_properties" number="485" type="device" requires="VK_KHR_get_physical_device_properties2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
<require>
- <enum value="0" name="VK_QCOM_EXTENSION_485_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_485&quot;" name="VK_QCOM_EXTENSION_485_EXTENSION_NAME"/>
+ <enum value="1" name="VK_QCOM_TILE_PROPERTIES_SPEC_VERSION"/>
+ <enum value="&quot;VK_QCOM_tile_properties&quot;" name="VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME"/>
+ <command name="vkGetFramebufferTilePropertiesQCOM"/>
+ <command name="vkGetDynamicRenderingTilePropertiesQCOM"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"/>
+ <type name="VkPhysicalDeviceTilePropertiesFeaturesQCOM"/>
+ <type name="VkTilePropertiesQCOM"/>
+ <type name="VkRenderingInfoKHR"/>
</require>
</extension>
</extensions>
@@ -20787,6 +20851,9 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enable version="VK_API_VERSION_1_1"/>
<enable extension="VK_KHR_device_group"/>
</spirvextension>
+ <spirvextension name="SPV_QCOM_image_processing">
+ <enable extension="VK_QCOM_image_processing"/>
+ </spirvextension>
</spirvextensions>
<spirvcapabilities comment="SPIR-V Capabilities allowed in Vulkan and what is required to use it">
<spirvcapability name="Matrix">
@@ -21234,5 +21301,14 @@ typedef void* <name>MTLSharedEvent_id</name>;
<spirvcapability name="FragmentBarycentricKHR">
<enable struct="VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR" feature="fragmentShaderBarycentric" requires="VK_KHR_fragment_shader_barycentric"/>
</spirvcapability>
+ <spirvcapability name="TextureSampleWeightedQCOM">
+ <enable struct="VkPhysicalDeviceImageProcessingFeaturesQCOM" feature="textureSampleWeighted" requires="VK_QCOM_image_processing"/>
+ </spirvcapability>
+ <spirvcapability name="TextureBoxFilterQCOM">
+ <enable struct="VkPhysicalDeviceImageProcessingFeaturesQCOM" feature="textureBoxFilter" requires="VK_QCOM_image_processing"/>
+ </spirvcapability>
+ <spirvcapability name="TextureBlockMatchQCOM">
+ <enable struct="VkPhysicalDeviceImageProcessingFeaturesQCOM" feature="textureBlockMatch" requires="VK_QCOM_image_processing"/>
+ </spirvcapability>
</spirvcapabilities>
</registry>
diff --git a/registry/vkconventions.py b/registry/vkconventions.py
index 1d3f632..823c070 100644
--- a/registry/vkconventions.py
+++ b/registry/vkconventions.py
@@ -10,8 +10,7 @@
import re
import os
-from conventions import ConventionsBase
-
+from spec_tools.conventions import ConventionsBase
# Modified from default implementation - see category_requires_validation() below
CATEGORIES_REQUIRING_VALIDATION = set(('handle', 'enum', 'bitmask'))
@@ -51,6 +50,10 @@ class VulkanConventions(ConventionsBase):
"""Preferred spelling of NULL."""
return '`NULL`'
+ def formatExtension(self, name):
+ """Mark up an extension name as a link the spec."""
+ return '`apiext:{}`'.format(name)
+
@property
def struct_macro(self):
"""Get the appropriate format macro for a structure.