diff options
author | Mark Lobodzinski <[email protected]> | 2018-05-04 09:33:39 -0600 |
---|---|---|
committer | Mark Lobodzinski <[email protected]> | 2018-05-09 11:25:36 -0600 |
commit | 0a79de4eccfbbea2b4d7bf287350f6ab24cb0682 (patch) | |
tree | 81c1bba3fc3a67420590713580b0d2de46463716 /registry | |
parent | fd051d36f78dad0f25370acadfe8f6f6ed8cd2fa (diff) | |
download | Vulkan-Headers-0a79de4eccfbbea2b4d7bf287350f6ab24cb0682.tar.gz Vulkan-Headers-0a79de4eccfbbea2b4d7bf287350f6ab24cb0682.zip |
headers: Added 1.74.0 Vulkan header/registry files
Diffstat (limited to 'registry')
-rw-r--r-- | registry/cgenerator.py | 417 | ||||
-rw-r--r-- | registry/generator.py | 595 | ||||
-rw-r--r-- | registry/genvk.py | 529 | ||||
-rw-r--r-- | registry/reg.py | 1059 | ||||
-rw-r--r-- | registry/validusage.json | 18392 | ||||
-rw-r--r-- | registry/vk.xml | 8699 |
6 files changed, 29691 insertions, 0 deletions
diff --git a/registry/cgenerator.py b/registry/cgenerator.py new file mode 100644 index 0000000..a370970 --- /dev/null +++ b/registry/cgenerator.py @@ -0,0 +1,417 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-2018 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os,re,sys,pdb +from generator import * + +# CGeneratorOptions - subclass of GeneratorOptions. +# +# Adds options used by COutputGenerator objects during C language header +# generation. +# +# Additional members +# prefixText - list of strings to prefix generated header with +# (usually a copyright statement + calling convention macros). +# protectFile - True if multiple inclusion protection should be +# 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. +# genFuncPointers - True if function pointer typedefs should be +# generated +# protectProto - If conditional protection should be generated +# around prototype declarations, set to either '#ifdef' +# to require opt-in (#ifdef protectProtoStr) or '#ifndef' +# to require opt-out (#ifndef protectProtoStr). Otherwise +# set to None. +# protectProtoStr - #ifdef/#ifndef symbol to use around prototype +# declarations, if protectProto is set +# apicall - string to use for the function declaration prefix, +# such as APICALL on Windows. +# apientry - string to use for the calling convention macro, +# in typedefs, such as APIENTRY. +# apientryp - string to use for the calling convention macro +# in function pointer typedefs, such as APIENTRYP. +# directory - directory into which to generate include files +# indentFuncProto - True if prototype declarations should put each +# parameter on a separate line +# indentFuncPointer - True if typedefed function pointers should put each +# parameter on a separate line +# alignFuncParam - if nonzero and parameters are being put on a +# separate line, align parameter names at the specified column +class CGeneratorOptions(GeneratorOptions): + """Represents options during C interface generation for headers""" + def __init__(self, + filename = None, + directory = '.', + apiname = None, + profile = None, + versions = '.*', + emitversions = '.*', + defaultExtensions = None, + addExtensions = None, + removeExtensions = None, + emitExtensions = None, + sortProcedure = regSortFeatures, + prefixText = "", + genFuncPointers = True, + protectFile = True, + protectFeature = True, + protectProto = None, + protectProtoStr = None, + apicall = '', + apientry = '', + apientryp = '', + indentFuncProto = True, + indentFuncPointer = False, + alignFuncParam = 0): + GeneratorOptions.__init__(self, filename, directory, apiname, profile, + versions, emitversions, defaultExtensions, + addExtensions, removeExtensions, + emitExtensions, sortProcedure) + self.prefixText = prefixText + self.genFuncPointers = genFuncPointers + self.protectFile = protectFile + self.protectFeature = protectFeature + self.protectProto = protectProto + self.protectProtoStr = protectProtoStr + self.apicall = apicall + self.apientry = apientry + self.apientryp = apientryp + self.indentFuncProto = indentFuncProto + self.indentFuncPointer = indentFuncPointer + self.alignFuncParam = alignFuncParam + +# COutputGenerator - subclass of OutputGenerator. +# Generates C-language API interfaces. +# +# ---- methods ---- +# COutputGenerator(errFile, warnFile, diagFile) - args as for +# OutputGenerator. Defines additional internal state. +# ---- methods overriding base class ---- +# beginFile(genOpts) +# endFile() +# beginFeature(interface, emit) +# endFeature() +# genType(typeinfo,name) +# genStruct(typeinfo,name) +# genGroup(groupinfo,name) +# genEnum(enuminfo, name) +# genCmd(cmdinfo) +class COutputGenerator(OutputGenerator): + """Generate specified API interfaces in a specific style, such as a C header""" + # This is an ordered list of sections in the header file. + TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum', + 'group', 'bitmask', 'funcpointer', 'struct'] + ALL_SECTIONS = TYPE_SECTIONS + ['commandPointer', 'command'] + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + OutputGenerator.__init__(self, errFile, warnFile, diagFile) + # Internal state - accumulators for different inner block text + self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) + # + def beginFile(self, genOpts): + OutputGenerator.beginFile(self, genOpts) + # C-specific + # + # Multiple inclusion protection & C++ wrappers. + if (genOpts.protectFile and self.genOpts.filename): + headerSym = re.sub('\.h', '_h_', + os.path.basename(self.genOpts.filename)).upper() + write('#ifndef', headerSym, file=self.outFile) + write('#define', headerSym, '1', file=self.outFile) + self.newline() + write('#ifdef __cplusplus', file=self.outFile) + write('extern "C" {', file=self.outFile) + write('#endif', file=self.outFile) + self.newline() + # + # User-supplied prefix text, if any (list of strings) + if (genOpts.prefixText): + for s in genOpts.prefixText: + write(s, file=self.outFile) + # + # Some boilerplate describing what was generated - this + # will probably be removed later since the extensions + # pattern may be very long. + # write('/* Generated C header for:', file=self.outFile) + # write(' * API:', genOpts.apiname, file=self.outFile) + # if (genOpts.profile): + # write(' * Profile:', genOpts.profile, file=self.outFile) + # write(' * Versions considered:', genOpts.versions, file=self.outFile) + # write(' * Versions emitted:', genOpts.emitversions, file=self.outFile) + # write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile) + # write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile) + # write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile) + # write(' * Extensions emitted:', genOpts.emitExtensions, file=self.outFile) + # write(' */', file=self.outFile) + def endFile(self): + # C-specific + # Finish C++ wrapper and multiple inclusion protection + self.newline() + write('#ifdef __cplusplus', file=self.outFile) + write('}', file=self.outFile) + write('#endif', file=self.outFile) + if (self.genOpts.protectFile and self.genOpts.filename): + self.newline() + write('#endif', file=self.outFile) + # Finish processing in superclass + OutputGenerator.endFile(self) + def beginFeature(self, interface, emit): + # Start processing in superclass + OutputGenerator.beginFeature(self, interface, emit) + # C-specific + # Accumulate includes, defines, types, enums, function pointer typedefs, + # end function prototypes separately for this feature. They're only + # printed in endFeature(). + self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) + def endFeature(self): + # C-specific + # Actually write the interface to the output file. + if (self.emit): + 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 != None): + write('#ifdef', self.featureExtraProtect, file=self.outFile) + 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) + self.newline() + 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) + write('\n'.join(self.sections['command']), end='', file=self.outFile) + if (self.genOpts.protectProto): + write('#endif', file=self.outFile) + else: + self.newline() + if (self.featureExtraProtect != None): + write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile) + if (self.genOpts.protectFeature): + write('#endif /*', self.featureName, '*/', file=self.outFile) + # Finish processing in superclass + OutputGenerator.endFeature(self) + # + # Append a definition to the specified section + def appendSection(self, section, text): + # self.sections[section].append('SECTION: ' + section + '\n') + self.sections[section].append(text) + # self.logMsg('diag', 'appendSection(section =', section, 'text =', text) + # + # Type generation + def genType(self, typeinfo, name, alias): + OutputGenerator.genType(self, typeinfo, name, alias) + typeElem = typeinfo.elem + + # Determine the category of the type, and the type section to add + # its definition to. + # 'funcpointer' is added to the 'struct' section as a workaround for + # internal issue #877, since structures and function pointer types + # can have cross-dependencies. + category = typeElem.get('category') + if category == 'funcpointer': + section = 'struct' + else: + section = category + + if category == 'struct' or category == 'union': + # If the type is a struct type, generate it using the + # special-purpose generator. + self.genStruct(typeinfo, name, alias) + else: + if alias: + # If the type is an alias, just emit a typedef declaration + body = 'typedef ' + alias + ' ' + name + ';\n' + else: + # Replace <apientry /> tags with an APIENTRY-style string + # (from self.genOpts). Copy other text through unchanged. + # If the resulting text is an empty string, don't emit it. + body = noneStr(typeElem.text) + for elem in typeElem: + if (elem.tag == 'apientry'): + body += self.genOpts.apientry + noneStr(elem.tail) + else: + body += noneStr(elem.text) + noneStr(elem.tail) + + if body: + # Add extra newline after multi-line entries. + if '\n' in body[0:-1]: + body += '\n' + self.appendSection(section, body) + # + # Struct (e.g. C "struct" type) generation. + # This is a special case of the <type> tag where the contents are + # interpreted as a set of <member> tags instead of freeform C + # C type declarations. The <member> tags are just like <param> + # tags - they are a declaration of a struct or union member. + # Only simple member declarations are supported (no nested + # structs etc.) + # If alias != None, then this struct aliases another; just + # generate a typedef of that alias. + def genStruct(self, typeinfo, typeName, alias): + OutputGenerator.genStruct(self, typeinfo, typeName, alias) + + typeElem = typeinfo.elem + + if alias: + body = 'typedef ' + alias + ' ' + typeName + ';\n' + else: + body = 'typedef ' + typeElem.get('category') + ' ' + typeName + ' {\n' + + targetLen = 0; + for member in typeElem.findall('.//member'): + targetLen = max(targetLen, self.getCParamTypeLength(member)) + for member in typeElem.findall('.//member'): + body += self.makeCParamDecl(member, targetLen + 4) + body += ';\n' + body += '} ' + typeName + ';\n' + + self.appendSection('struct', body) + # + # Group (e.g. C "enum" type) generation. + # These are concatenated together with other types. + # If alias != None, it is the name of another group type + # which aliases this type; just generate that alias. + def genGroup(self, groupinfo, groupName, alias = None): + OutputGenerator.genGroup(self, groupinfo, groupName, alias) + groupElem = groupinfo.elem + + if alias: + # If the group name is aliased, just emit a typedef declaration + # for the alias. + body = 'typedef ' + alias + ' ' + groupName + ';\n' + else: + self.logMsg('diag', 'CGenerator.genGroup group =', groupName, 'alias =', alias) + + # Otherwise, emit an actual enumerated type declaration + expandName = re.sub(r'([0-9a-z_])([A-Z0-9])',r'\1_\2',groupName).upper() + + expandPrefix = expandName + expandSuffix = '' + expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName) + if expandSuffixMatch: + expandSuffix = '_' + expandSuffixMatch.group() + # Strip off the suffix from the prefix + expandPrefix = expandName.rsplit(expandSuffix, 1)[0] + + # Prefix + body = "\ntypedef enum " + groupName + " {\n" + + # @@ Should use the type="bitmask" attribute instead + isEnum = ('FLAG_BITS' not in expandPrefix) + + # Get a list of nested 'enum' tags. + enums = groupElem.findall('enum') + + # Check for and report duplicates, and return a list with them + # removed. + enums = self.checkDuplicateEnums(enums) + + # Loop over the nested 'enum' tags. Keep track of the minimum and + # maximum numeric values, if they can be determined; but only for + # core API enumerants, not extension enumerants. This is inferred + # by looking for 'extends' attributes. + minName = None + + # Accumulate non-numeric enumerant values separately and append + # them following the numeric values, to allow for aliases. + # NOTE: this doesn't do a topological sort yet, so aliases of + # aliases can still get in the wrong order. + aliasText = "" + + for elem in enums: + # Convert the value to an integer and use that to track min/max. + (numVal,strVal) = self.enumToValue(elem, True) + name = elem.get('name') + + # Extension enumerants are only included if they are required + if self.isEnumRequired(elem): + decl = " " + name + " = " + strVal + ",\n" + if numVal != None: + body += decl + else: + aliasText += decl + + # Don't track min/max for non-numbers (numVal == None) + if isEnum and numVal != None and elem.get('extends') is None: + if minName == None: + minName = maxName = name + minValue = maxValue = numVal + elif numVal < minValue: + minName = name + minValue = numVal + elif numVal > maxValue: + maxName = name + maxValue = numVal + + # Now append the non-numeric enumerant values + body += aliasText + + # Generate min/max value tokens and a range-padding enum. Need some + # additional padding to generate correct names... + if isEnum: + body += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n" + body += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n" + body += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n" + + body += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n" + + # Postfix + body += "} " + groupName + ";" + + # After either enumerated type or alias paths, add the declaration + # to the appropriate section for the group being defined. + if groupElem.get('type') == 'bitmask': + section = 'bitmask' + else: + section = 'group' + self.appendSection(section, body) + + # Enumerant generation + # <enum> tags may specify their values in several ways, but are usually + # just integers. + def genEnum(self, enuminfo, name, alias): + OutputGenerator.genEnum(self, enuminfo, name, alias) + (numVal,strVal) = self.enumToValue(enuminfo.elem, False) + body = '#define ' + name.ljust(33) + ' ' + strVal + self.appendSection('enum', body) + + # + # Command generation + def genCmd(self, cmdinfo, name, alias): + OutputGenerator.genCmd(self, cmdinfo, name, alias) + + # if alias: + # prefix = '// ' + name + ' is an alias of command ' + alias + '\n' + # else: + # prefix = '' + + prefix = '' + decls = self.makeCDecls(cmdinfo.elem) + self.appendSection('command', prefix + decls[0] + '\n') + if (self.genOpts.genFuncPointers): + self.appendSection('commandPointer', decls[1]) diff --git a/registry/generator.py b/registry/generator.py new file mode 100644 index 0000000..a0f79ac --- /dev/null +++ b/registry/generator.py @@ -0,0 +1,595 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-2018 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import unicode_literals +import io,os,re,sys,pdb + +def write( *args, **kwargs ): + file = kwargs.pop('file',sys.stdout) + end = kwargs.pop('end','\n') + file.write(' '.join([str(arg) for arg in args])) + file.write(end) + +# noneStr - returns string argument, or "" if argument is None. +# Used in converting etree Elements into text. +# str - string to convert +def noneStr(str): + if (str): + return str + else: + return "" + +# enquote - returns string argument with surrounding quotes, +# for serialization into Python code. +def enquote(str): + if (str): + return "'" + str + "'" + else: + return None + +# apiName - returns True if name is a Vulkan name (vk/Vk/VK prefix, or a +# function pointer type), False otherwise. +def apiName(str): + return str[0:2].lower() == 'vk' or str[0:3] == 'PFN' + +# Primary sort key for regSortFeatures. +# Sorts by category of the feature name string: +# Core API features (those defined with a <feature> tag) +# ARB/KHR/OES (Khronos extensions) +# other (EXT/vendor extensions) +# This will need changing for Vulkan! +def regSortCategoryKey(feature): + if (feature.elem.tag == 'feature'): + return 0 + elif (feature.category == 'ARB' or + feature.category == 'KHR' or + feature.category == 'OES'): + return 1 + else: + return 2 + +# Secondary sort key for regSortFeatures. +# Sorts by extension name. +def regSortNameKey(feature): + return feature.name + +# Second sort key for regSortFeatures. +# Sorts by feature version. <extension> elements all have version number "0" +def regSortFeatureVersionKey(feature): + return float(feature.versionNumber) + +# Tertiary sort key for regSortFeatures. +# Sorts by extension number. <feature> elements all have extension number 0. +def regSortExtensionNumberKey(feature): + return int(feature.number) + +# regSortFeatures - default sort procedure for features. +# Sorts by primary key of feature category ('feature' or 'extension') +# then by version number (for features) +# then by extension number (for extensions) +def regSortFeatures(featureList): + featureList.sort(key = regSortExtensionNumberKey) + featureList.sort(key = regSortFeatureVersionKey) + featureList.sort(key = regSortCategoryKey) + +# GeneratorOptions - base class for options used during header production +# These options are target language independent, and used by +# Registry.apiGen() and by base OutputGenerator objects. +# +# Members +# filename - basename of file to generate, or None to write to stdout. +# directory - directory in which to generate filename +# apiname - string matching <api> 'apiname' attribute, e.g. 'gl'. +# profile - string specifying API profile , e.g. 'core', or None. +# versions - regex matching API versions to process interfaces for. +# Normally '.*' or '[0-9]\.[0-9]' to match all defined versions. +# emitversions - regex matching API versions to actually emit +# interfaces for (though all requested versions are considered +# when deciding which interfaces to generate). For GL 4.3 glext.h, +# this might be '1\.[2-5]|[2-4]\.[0-9]'. +# defaultExtensions - If not None, a string which must in its +# entirety match the pattern in the "supported" attribute of +# the <extension>. Defaults to None. Usually the same as apiname. +# addExtensions - regex matching names of additional extensions +# to include. Defaults to None. +# removeExtensions - regex matching names of extensions to +# remove (after defaultExtensions and addExtensions). Defaults +# 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). +# 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, alphabetically within each group. +# The regex patterns can be None or empty, in which case they match +# nothing. +class GeneratorOptions: + """Represents options during header production from an API registry""" + def __init__(self, + filename = None, + directory = '.', + apiname = None, + profile = None, + versions = '.*', + emitversions = '.*', + defaultExtensions = None, + addExtensions = None, + removeExtensions = None, + emitExtensions = None, + sortProcedure = regSortFeatures): + self.filename = filename + self.directory = directory + self.apiname = apiname + self.profile = profile + self.versions = self.emptyRegex(versions) + self.emitversions = self.emptyRegex(emitversions) + self.defaultExtensions = defaultExtensions + self.addExtensions = self.emptyRegex(addExtensions) + self.removeExtensions = self.emptyRegex(removeExtensions) + self.emitExtensions = self.emptyRegex(emitExtensions) + self.sortProcedure = sortProcedure + # + # Substitute a regular expression which matches no version + # or extension names for None or the empty string. + def emptyRegex(self,pat): + if (pat == None or pat == ''): + return '_nomatch_^' + else: + return pat + +# OutputGenerator - base class for generating API interfaces. +# Manages basic logic, logging, and output file control +# Derived classes actually generate formatted output. +# +# ---- methods ---- +# OutputGenerator(errFile, warnFile, diagFile) +# errFile, warnFile, diagFile - file handles to write errors, +# warnings, diagnostics to. May be None to not write. +# logMsg(level, *args) - log messages of different categories +# level - 'error', 'warn', or 'diag'. 'error' will also +# raise a UserWarning exception +# *args - print()-style arguments +# setExtMap(map) - specify a dictionary map from extension names to +# numbers, used in creating values for extension enumerants. +# makeDir(directory) - create a directory, if not already done. +# Generally called from derived generators creating hierarchies. +# beginFile(genOpts) - start a new interface file +# genOpts - GeneratorOptions controlling what's generated and how +# endFile() - finish an interface file, closing it when done +# beginFeature(interface, emit) - write interface for a feature +# and tag generated features as having been done. +# interface - element for the <version> / <extension> to generate +# emit - actually write to the header only when True +# endFeature() - finish an interface. +# genType(typeinfo,name,alias) - generate interface for a type +# typeinfo - TypeInfo for a type +# genStruct(typeinfo,name,alias) - generate interface for a C "struct" type. +# typeinfo - TypeInfo for a type interpreted as a struct +# genGroup(groupinfo,name,alias) - generate interface for a group of enums (C "enum") +# groupinfo - GroupInfo for a group +# genEnum(enuminfo,name,alias) - generate interface for an enum (constant) +# enuminfo - EnumInfo for an enum +# name - enum name +# genCmd(cmdinfo,name,alias) - generate interface for a command +# cmdinfo - CmdInfo for a command +# isEnumRequired(enumElem) - return True if this <enum> element is required +# elem - <enum> element to test +# makeCDecls(cmd) - return C prototype and function pointer typedef for a +# <command> Element, as a list of two strings +# cmd - Element for the <command> +# newline() - print a newline to the output file (utility function) +# +class OutputGenerator: + """Generate specified API interfaces in a specific style, such as a C header""" + # + # categoryToPath - map XML 'category' to include file directory name + categoryToPath = { + 'bitmask' : 'flags', + 'enum' : 'enums', + 'funcpointer' : 'funcpointers', + 'handle' : 'handles', + 'define' : 'defines', + 'basetype' : 'basetypes', + } + # + # Constructor + def __init__(self, + errFile = sys.stderr, + warnFile = sys.stderr, + diagFile = sys.stdout): + self.outFile = None + self.errFile = errFile + self.warnFile = warnFile + self.diagFile = diagFile + # Internal state + self.featureName = None + self.genOpts = None + self.registry = None + # Used for extension enum value generation + self.extBase = 1000000000 + self.extBlockSize = 1000 + self.madeDirs = {} + # + # logMsg - write a message of different categories to different + # destinations. + # level - + # 'diag' (diagnostic, voluminous) + # 'warn' (warning) + # 'error' (fatal error - raises exception after logging) + # *args - print()-style arguments to direct to corresponding log + def logMsg(self, level, *args): + """Log a message at the given level. Can be ignored or log to a file""" + if (level == 'error'): + strfile = io.StringIO() + write('ERROR:', *args, file=strfile) + if (self.errFile != None): + write(strfile.getvalue(), file=self.errFile) + raise UserWarning(strfile.getvalue()) + elif (level == 'warn'): + if (self.warnFile != None): + write('WARNING:', *args, file=self.warnFile) + elif (level == 'diag'): + if (self.diagFile != None): + write('DIAG:', *args, file=self.diagFile) + else: + raise UserWarning( + '*** FATAL ERROR in Generator.logMsg: unknown level:' + level) + # + # enumToValue - parses and converts an <enum> tag into a value. + # Returns a list + # first element - integer representation of the value, or None + # if needsNum is False. The value must be a legal number + # if needsNum is True. + # second element - string representation of the value + # There are several possible representations of values. + # A 'value' attribute simply contains the value. + # A 'bitpos' attribute defines a value by specifying the bit + # position which is set in that value. + # A 'offset','extbase','extends' triplet specifies a value + # as an offset to a base value defined by the specified + # 'extbase' extension name, which is then cast to the + # typename specified by 'extends'. This requires probing + # the registry database, and imbeds knowledge of the + # Vulkan extension enum scheme in this function. + # A '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. + def enumToValue(self, elem, needsNum): + name = elem.get('name') + numVal = None + if ('value' in elem.keys()): + value = elem.get('value') + # print('About to translate value =', value, 'type =', type(value)) + if (needsNum): + numVal = int(value, 0) + # If there's a non-integer, numeric 'type' attribute (e.g. 'u' or + # 'ull'), append it to the string value. + # t = enuminfo.elem.get('type') + # if (t != None and t != '' and t != 'i' and t != 's'): + # value += enuminfo.type + self.logMsg('diag', 'Enum', name, '-> value [', numVal, ',', value, ']') + return [numVal, value] + if ('bitpos' in elem.keys()): + value = elem.get('bitpos') + numVal = int(value, 0) + numVal = 1 << numVal + value = '0x%08x' % numVal + self.logMsg('diag', 'Enum', name, '-> bitpos [', numVal, ',', value, ']') + return [numVal, value] + if ('offset' in elem.keys()): + # Obtain values in the mapping from the attributes + enumNegative = False + offset = int(elem.get('offset'),0) + extnumber = int(elem.get('extnumber'),0) + extends = elem.get('extends') + if ('dir' in elem.keys()): + enumNegative = True + self.logMsg('diag', 'Enum', name, 'offset =', offset, + 'extnumber =', extnumber, 'extends =', extends, + 'enumNegative =', enumNegative) + # Now determine the actual enumerant value, as defined + # in the "Layers and Extensions" appendix of the spec. + numVal = self.extBase + (extnumber - 1) * self.extBlockSize + offset + if (enumNegative): + numVal = -numVal + value = '%d' % numVal + # More logic needed! + self.logMsg('diag', 'Enum', name, '-> offset [', numVal, ',', value, ']') + return [numVal, value] + if 'alias' in elem.keys(): + return [None, elem.get('alias')] + return [None, None] + # + # checkDuplicateEnums - sanity check for enumerated values + # enums - list of <enum> Elements + # returns the list with duplicates stripped + def checkDuplicateEnums(self, enums): + # Dictionaries indexed by name and numeric value. + # Entries are [ Element, numVal, strVal ] matching name or value + + nameMap = {} + valueMap = {} + + stripped = [] + for elem in enums: + name = elem.get('name') + (numVal, strVal) = self.enumToValue(elem, True) + + if name in nameMap: + # Duplicate name found; check values + (name2, numVal2, strVal2) = nameMap[name] + + # Duplicate enum values for the same name are benign. This + # happens when defining the same enum conditionally in + # several extension blocks. + if (strVal2 == strVal or (numVal != None and + numVal == numVal2)): + True + # self.logMsg('info', 'checkDuplicateEnums: Duplicate enum (' + name + + # ') found with the same value:' + strVal) + else: + self.logMsg('warn', 'checkDuplicateEnums: Duplicate enum (' + name + + ') found with different values:' + strVal + + ' and ' + strVal2) + + # Don't add the duplicate to the returned list + continue + elif numVal in valueMap: + # Duplicate value found (such as an alias); report it, but + # still add this enum to the list. + (name2, numVal2, strVal2) = valueMap[numVal] + + try: + self.logMsg('warn', 'Two enums found with the same value: ' + + name + ' = ' + name2.get('name') + ' = ' + strVal) + except: + pdb.set_trace() + + # Track this enum to detect followon duplicates + nameMap[name] = [ elem, numVal, strVal ] + if numVal != None: + valueMap[numVal] = [ elem, numVal, strVal ] + + # Add this enum to the list + stripped.append(elem) + + # Return the list + return stripped + # + def makeDir(self, path): + self.logMsg('diag', 'OutputGenerator::makeDir(' + path + ')') + if not (path in self.madeDirs.keys()): + # This can get race conditions with multiple writers, see + # https://stackoverflow.com/questions/273192/ + if not os.path.exists(path): + os.makedirs(path) + self.madeDirs[path] = None + # + def beginFile(self, genOpts): + self.genOpts = genOpts + # + # Open specified output file. Not done in constructor since a + # Generator can be used without writing to a file. + if (self.genOpts.filename != None): + filename = self.genOpts.directory + '/' + self.genOpts.filename + self.outFile = io.open(filename, 'w', encoding='utf-8') + else: + self.outFile = sys.stdout + def endFile(self): + self.errFile and self.errFile.flush() + self.warnFile and self.warnFile.flush() + self.diagFile and self.diagFile.flush() + self.outFile.flush() + if (self.outFile != sys.stdout and self.outFile != sys.stderr): + self.outFile.close() + self.genOpts = None + # + def beginFeature(self, interface, emit): + self.emit = emit + self.featureName = interface.get('name') + # If there's an additional 'protect' attribute in the feature, save it + self.featureExtraProtect = interface.get('protect') + def endFeature(self): + # Derived classes responsible for emitting feature + self.featureName = None + self.featureExtraProtect = None + # Utility method to validate we're generating something only inside a + # <feature> tag + def validateFeature(self, featureType, featureName): + if (self.featureName == None): + raise UserWarning('Attempt to generate', featureType, + featureName, 'when not in feature') + # + # Type generation + def genType(self, typeinfo, name, alias): + self.validateFeature('type', name) + # + # Struct (e.g. C "struct" type) generation + def genStruct(self, typeinfo, name, alias): + self.validateFeature('struct', name) + + # The mixed-mode <member> tags may contain no-op <comment> tags. + # It is convenient to remove them here where all output generators + # will benefit. + for member in typeinfo.elem.findall('.//member'): + for comment in member.findall('comment'): + member.remove(comment) + # + # Group (e.g. C "enum" type) generation + def genGroup(self, groupinfo, name, alias): + self.validateFeature('group', name) + # + # Enumerant (really, constant) generation + def genEnum(self, enuminfo, name, alias): + self.validateFeature('enum', name) + # + # Command generation + def genCmd(self, cmd, name, alias): + self.validateFeature('command', name) + # + # Utility functions - turn a <proto> <name> into C-language prototype + # and typedef declarations for that name. + # name - contents of <name> tag + # tail - whatever text follows that tag in the Element + def makeProtoName(self, name, tail): + return self.genOpts.apientry + name + tail + def makeTypedefName(self, name, tail): + return '(' + self.genOpts.apientryp + 'PFN_' + name + tail + ')' + # + # makeCParamDecl - return a string which is an indented, formatted + # declaration for a <param> or <member> block (e.g. function parameter + # or structure/union member). + # param - Element (<param> or <member>) to format + # aligncol - if non-zero, attempt to align the nested <name> element + # at this column + def makeCParamDecl(self, param, aligncol): + paramdecl = ' ' + noneStr(param.text) + for elem in param: + text = noneStr(elem.text) + tail = noneStr(elem.tail) + if (elem.tag == 'name' and aligncol > 0): + self.logMsg('diag', 'Aligning parameter', elem.text, 'to column', self.genOpts.alignFuncParam) + # Align at specified column, if possible + paramdecl = paramdecl.rstrip() + oldLen = len(paramdecl) + # This works around a problem where very long type names - + # longer than the alignment column - would run into the tail + # text. + paramdecl = paramdecl.ljust(aligncol-1) + ' ' + newLen = len(paramdecl) + self.logMsg('diag', 'Adjust length of parameter decl from', oldLen, 'to', newLen, ':', paramdecl) + paramdecl += text + tail + return paramdecl + # + # getCParamTypeLength - return the length of the type field is an indented, formatted + # declaration for a <param> or <member> block (e.g. function parameter + # or structure/union member). + # param - Element (<param> or <member>) to identify + def getCParamTypeLength(self, param): + paramdecl = ' ' + noneStr(param.text) + for elem in param: + text = noneStr(elem.text) + tail = noneStr(elem.tail) + if (elem.tag == 'name'): + # Align at specified column, if possible + newLen = len(paramdecl.rstrip()) + self.logMsg('diag', 'Identifying length of', elem.text, 'as', newLen) + paramdecl += text + tail + return newLen + # + # isEnumRequired(elem) - return True if this <enum> element is + # required, False otherwise + # elem - <enum> element to test + def isEnumRequired(self, elem): + required = elem.get('required') != None + self.logMsg('diag', 'isEnumRequired:', elem.get('name'), + '->', required) + return required + + #@@@ This code is overridden by equivalent code now run in + #@@@ Registry.generateFeature + + required = False + + extname = elem.get('extname') + if extname is not None: + # 'supported' attribute was injected when the <enum> element was + # moved into the <enums> group in Registry.parseTree() + if self.genOpts.defaultExtensions == elem.get('supported'): + required = True + elif re.match(self.genOpts.addExtensions, extname) is not None: + required = True + elif elem.get('version') is not None: + required = re.match(self.genOpts.emitversions, elem.get('version')) is not None + else: + required = True + + return required + + # + # makeCDecls - return C prototype and function pointer typedef for a + # command, as a two-element list of strings. + # cmd - Element containing a <command> tag + def makeCDecls(self, cmd): + """Generate C function pointer typedef for <command> Element""" + proto = cmd.find('proto') + params = cmd.findall('param') + # Begin accumulating prototype and typedef strings + pdecl = self.genOpts.apicall + tdecl = 'typedef ' + # + # Insert the function return type/name. + # For prototypes, add APIENTRY macro before the name + # For typedefs, add (APIENTRY *<name>) around the name and + # use the PFN_cmdnameproc naming convention. + # Done by walking the tree for <proto> element by element. + # etree has elem.text followed by (elem[i], elem[i].tail) + # for each child element and any following text + # Leading text + pdecl += noneStr(proto.text) + tdecl += noneStr(proto.text) + # For each child element, if it's a <name> wrap in appropriate + # declaration. Otherwise append its contents and tail contents. + for elem in proto: + text = noneStr(elem.text) + tail = noneStr(elem.tail) + if (elem.tag == 'name'): + pdecl += self.makeProtoName(text, tail) + tdecl += self.makeTypedefName(text, tail) + else: + pdecl += text + tail + tdecl += text + tail + # Now add the parameter declaration list, which is identical + # for prototypes and typedefs. Concatenate all the text from + # a <param> node without the tags. No tree walking required + # since all tags are ignored. + # Uses: self.indentFuncProto + # self.indentFuncPointer + # self.alignFuncParam + # Might be able to doubly-nest the joins, e.g. + # ','.join(('_'.join([l[i] for i in range(0,len(l))]) + n = len(params) + # Indented parameters + if n > 0: + indentdecl = '(\n' + for i in range(0,n): + paramdecl = self.makeCParamDecl(params[i], self.genOpts.alignFuncParam) + if (i < n - 1): + paramdecl += ',\n' + else: + paramdecl += ');' + indentdecl += paramdecl + else: + indentdecl = '(void);' + # Non-indented parameters + paramdecl = '(' + if n > 0: + for i in range(0,n): + paramdecl += ''.join([t for t in params[i].itertext()]) + if (i < n - 1): + paramdecl += ', ' + else: + paramdecl += 'void' + paramdecl += ");"; + return [ pdecl + indentdecl, tdecl + paramdecl ] + # + def newline(self): + write('', file=self.outFile) + + def setRegistry(self, registry): + self.registry = registry + # diff --git a/registry/genvk.py b/registry/genvk.py new file mode 100644 index 0000000..184ff0b --- /dev/null +++ b/registry/genvk.py @@ -0,0 +1,529 @@ +#!/usr/bin/python3 +# +# Copyright (c) 2013-2018 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse, cProfile, pdb, string, sys, time +from reg import * +from generator import write +from cgenerator import CGeneratorOptions, COutputGenerator +from docgenerator import DocGeneratorOptions, DocOutputGenerator +from extensionmetadocgenerator import ExtensionMetaDocGeneratorOptions, ExtensionMetaDocOutputGenerator +from pygenerator import PyOutputGenerator +from validitygenerator import ValidityOutputGenerator +from hostsyncgenerator import HostSynchronizationOutputGenerator +from extensionStubSource import ExtensionStubSourceOutputGenerator + +# Simple timer functions +startTime = None + +def startTimer(timeit): + global startTime + startTime = time.clock() + +def endTimer(timeit, msg): + global startTime + endTime = time.clock() + if (timeit): + write(msg, endTime - startTime, file=sys.stderr) + startTime = None + +# Turn a list of strings into a regexp string matching exactly those strings +def makeREstring(list, default = None): + if len(list) > 0 or default == None: + return '^(' + '|'.join(list) + ')$' + else: + return default + +# Returns a directory of [ generator function, generator options ] indexed +# by specified short names. The generator options incorporate the following +# parameters: +# +# args is an parsed argument object; see below for the fields that are used. +def makeGenOpts(args): + global genOpts + genOpts = {} + + # Default class of extensions to include, or None + defaultExtensions = args.defaultExtensions + + # Additional extensions to include (list of extensions) + extensions = args.extension + + # Extensions to remove (list of extensions) + removeExtensions = args.removeExtensions + + # Extensions to emit (list of extensions) + emitExtensions = args.emitExtensions + + # Features to include (list of features) + features = args.feature + + # Whether to disable inclusion protect in headers + protect = args.protect + + # Output target directory + directory = args.directory + + # Descriptive names for various regexp patterns used to select + # versions and extensions + allFeatures = allExtensions = '.*' + noFeatures = noExtensions = None + + # Turn lists of names/patterns into matching regular expressions + addExtensionsPat = makeREstring(extensions, None) + removeExtensionsPat = makeREstring(removeExtensions, None) + emitExtensionsPat = makeREstring(emitExtensions, allExtensions) + featuresPat = makeREstring(features, allFeatures) + + # Copyright text prefixing all headers (list of strings). + prefixStrings = [ + '/*', + '** Copyright (c) 2015-2018 The Khronos Group Inc.', + '**', + '** Licensed under the Apache License, Version 2.0 (the "License");', + '** you may not use this file except in compliance with the License.', + '** You may obtain a copy of the License at', + '**', + '** http://www.apache.org/licenses/LICENSE-2.0', + '**', + '** Unless required by applicable law or agreed to in writing, software', + '** distributed under the License is distributed on an "AS IS" BASIS,', + '** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.', + '** See the License for the specific language governing permissions and', + '** limitations under the License.', + '*/', + '' + ] + + # Text specific to Vulkan headers + vkPrefixStrings = [ + '/*', + '** This header is generated from the Khronos Vulkan XML API Registry.', + '**', + '*/', + '' + ] + + # Defaults for generating re-inclusion protection wrappers (or not) + protectFile = protect + protectFeature = protect + protectProto = protect + + # API include files for spec and ref pages + # Overwrites include subdirectories in spec source tree + # The generated include files do not include the calling convention + # macros (apientry etc.), unlike the header files. + # Because the 1.0 core branch includes ref pages for extensions, + # all the extension interfaces need to be generated, even though + # none are used by the core spec itself. + genOpts['apiinc'] = [ + DocOutputGenerator, + DocGeneratorOptions( + filename = 'timeMarker', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = None, + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + apicall = '', + apientry = '', + apientryp = '*', + alignFuncParam = 48, + expandEnumerants = False) + ] + + # API names to validate man/api spec includes & links + genOpts['vkapi.py'] = [ + PyOutputGenerator, + DocGeneratorOptions( + filename = 'vkapi.py', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = None, + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat) + ] + + # API validity files for spec + genOpts['validinc'] = [ + ValidityOutputGenerator, + DocGeneratorOptions( + filename = 'timeMarker', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = None, + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat) + ] + + # API host sync table files for spec + genOpts['hostsyncinc'] = [ + HostSynchronizationOutputGenerator, + DocGeneratorOptions( + filename = 'timeMarker', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = None, + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat) + ] + + # Extension stub source dispatcher + genOpts['vulkan_ext.c'] = [ + ExtensionStubSourceOutputGenerator, + CGeneratorOptions( + filename = 'vulkan_ext.c', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = None, + defaultExtensions = None, + addExtensions = '.*', + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + alignFuncParam = 48) + ] + + # Extension metainformation for spec extension appendices + genOpts['extinc'] = [ + ExtensionMetaDocOutputGenerator, + ExtensionMetaDocGeneratorOptions( + filename = 'timeMarker', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = None, + defaultExtensions = defaultExtensions, + addExtensions = None, + removeExtensions = None, + emitExtensions = emitExtensionsPat) + ] + + # Platform extensions, in their own header files + # Each element of the platforms[] array defines information for + # generating a single platform: + # [0] is the generated header file name + # [1] is the set of platform extensions to generate + # [2] is additional extensions whose interfaces should be considered, + # but suppressed in the output, to avoid duplicate definitions of + # dependent types like VkDisplayKHR and VkSurfaceKHR which come from + # non-platform extensions. + + # Track all platform extensions, for exclusion from vulkan_core.h + allPlatformExtensions = [] + + # Extensions suppressed for all platforms. + # Covers common WSI extension types. + commonSuppressExtensions = [ 'VK_KHR_display', 'VK_KHR_swapchain' ] + + platforms = [ + [ 'vulkan_android.h', [ 'VK_KHR_android_surface', + 'VK_ANDROID_external_memory_android_hardware_buffer' + ], commonSuppressExtensions ], + [ 'vulkan_ios.h', [ 'VK_MVK_ios_surface' ], commonSuppressExtensions ], + [ 'vulkan_macos.h', [ 'VK_MVK_macos_surface' ], commonSuppressExtensions ], + [ 'vulkan_mir.h', [ 'VK_KHR_mir_surface' ], commonSuppressExtensions ], + [ 'vulkan_vi.h', [ 'VK_NN_vi_surface' ], commonSuppressExtensions ], + [ 'vulkan_wayland.h', [ 'VK_KHR_wayland_surface' ], commonSuppressExtensions ], + [ 'vulkan_win32.h', [ 'VK_.*_win32(|_.*)' ], commonSuppressExtensions + [ 'VK_KHR_external_semaphore', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_NV_external_memory_capabilities' ] ], + [ 'vulkan_xcb.h', [ 'VK_KHR_xcb_surface' ], commonSuppressExtensions ], + [ 'vulkan_xlib.h', [ 'VK_KHR_xlib_surface' ], commonSuppressExtensions ], + [ 'vulkan_xlib_xrandr.h', [ 'VK_EXT_acquire_xlib_display' ], commonSuppressExtensions ], + ] + + for platform in platforms: + headername = platform[0] + + allPlatformExtensions += platform[1] + + addPlatformExtensionsRE = makeREstring(platform[1] + platform[2]) + emitPlatformExtensionsRE = makeREstring(platform[1]) + + opts = CGeneratorOptions( + filename = headername, + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = None, + defaultExtensions = None, + addExtensions = addPlatformExtensionsRE, + removeExtensions = None, + emitExtensions = emitPlatformExtensionsRE, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + + genOpts[headername] = [ COutputGenerator, opts ] + + # Header for core API + extensions. + # To generate just the core API, + # change to 'defaultExtensions = None' below. + # + # By default this adds all enabled, non-platform extensions. + # It removes all platform extensions (from the platform headers options + # constructed above) as well as any explicitly specified removals. + + removeExtensionsPat = makeREstring(allPlatformExtensions + removeExtensions, None) + + genOpts['vulkan_core.h'] = [ + COutputGenerator, + CGeneratorOptions( + filename = 'vulkan_core.h', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = defaultExtensions, + addExtensions = None, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + ] + + # Unused - vulkan10.h target. + # It is possible to generate a header with just the Vulkan 1.0 + + # extension interfaces defined, but since the promoted KHR extensions + # are now defined in terms of the 1.1 interfaces, such a header is very + # similar to vulkan_core.h. + genOpts['vulkan10.h'] = [ + COutputGenerator, + CGeneratorOptions( + filename = 'vulkan10.h', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = 'VK_VERSION_1_0', + emitversions = 'VK_VERSION_1_0', + defaultExtensions = defaultExtensions, + addExtensions = None, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + ] + + genOpts['alias.h'] = [ + COutputGenerator, + CGeneratorOptions( + filename = 'alias.h', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = defaultExtensions, + addExtensions = None, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = None, + genFuncPointers = False, + protectFile = False, + protectFeature = False, + protectProto = '', + protectProtoStr = '', + apicall = '', + apientry = '', + apientryp = '', + alignFuncParam = 36) + ] + +# Generate a target based on the options in the matching genOpts{} object. +# This is encapsulated in a function so it can be profiled and/or timed. +# The args parameter is an parsed argument object containing the following +# fields that are used: +# target - target to generate +# directory - directory to generate it in +# protect - True if re-inclusion wrappers should be created +# extensions - list of additional extensions to include in generated +# interfaces +def genTarget(args): + global genOpts + + # Create generator options with specified parameters + makeGenOpts(args) + + if (args.target in genOpts.keys()): + createGenerator = genOpts[args.target][0] + options = genOpts[args.target][1] + + if not args.quiet: + write('* Building', options.filename, file=sys.stderr) + write('* options.versions =', options.versions, file=sys.stderr) + write('* options.emitversions =', options.emitversions, file=sys.stderr) + write('* options.defaultExtensions =', options.defaultExtensions, file=sys.stderr) + write('* options.addExtensions =', options.addExtensions, file=sys.stderr) + write('* options.removeExtensions =', options.removeExtensions, file=sys.stderr) + write('* options.emitExtensions =', options.emitExtensions, file=sys.stderr) + + startTimer(args.time) + gen = createGenerator(errFile=errWarn, + warnFile=errWarn, + diagFile=diag) + reg.setGenerator(gen) + reg.apiGen(options) + + if not args.quiet: + write('* Generated', options.filename, file=sys.stderr) + endTimer(args.time, '* Time to generate ' + options.filename + ' =') + else: + write('No generator options for unknown target:', + args.target, file=sys.stderr) + +# -feature name +# -extension name +# For both, "name" may be a single name, or a space-separated list +# of names, or a regular expression. +if __name__ == '__main__': + parser = argparse.ArgumentParser() + + parser.add_argument('-defaultExtensions', action='store', + default='vulkan', + help='Specify a single class of extensions to add to targets') + parser.add_argument('-extension', action='append', + default=[], + help='Specify an extension or extensions to add to targets') + parser.add_argument('-removeExtensions', action='append', + default=[], + help='Specify an extension or extensions to remove from targets') + parser.add_argument('-emitExtensions', action='append', + default=[], + help='Specify an extension or extensions to emit in targets') + parser.add_argument('-feature', action='append', + default=[], + help='Specify a core API feature name or names to add to targets') + parser.add_argument('-debug', action='store_true', + help='Enable debugging') + parser.add_argument('-dump', action='store_true', + help='Enable dump to stderr') + parser.add_argument('-diagfile', action='store', + default=None, + help='Write diagnostics to specified file') + parser.add_argument('-errfile', action='store', + default=None, + help='Write errors and warnings to specified file instead of stderr') + parser.add_argument('-noprotect', dest='protect', action='store_false', + help='Disable inclusion protection in output headers') + parser.add_argument('-profile', action='store_true', + help='Enable profiling') + parser.add_argument('-registry', action='store', + default='vk.xml', + 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='Enable group validation') + parser.add_argument('-o', action='store', dest='directory', + default='.', + help='Create target and related files in specified directory') + parser.add_argument('target', metavar='target', nargs='?', + help='Specify target') + parser.add_argument('-quiet', action='store_true', default=True, + help='Suppress script output during normal execution.') + parser.add_argument('-verbose', action='store_false', dest='quiet', default=True, + help='Enable script output during normal execution.') + + args = parser.parse_args() + + # This splits arguments which are space-separated lists + args.feature = [name for arg in args.feature for name in arg.split()] + args.extension = [name for arg in args.extension for name in arg.split()] + + # Load & parse registry + reg = Registry() + + startTimer(args.time) + tree = etree.parse(args.registry) + endTimer(args.time, '* Time to make ElementTree =') + + if args.debug: + pdb.run('reg.loadElementTree(tree)') + else: + startTimer(args.time) + reg.loadElementTree(tree) + endTimer(args.time, '* Time to parse ElementTree =') + + if (args.validate): + reg.validateGroups() + + if (args.dump): + write('* Dumping registry to regdump.txt', file=sys.stderr) + reg.dumpReg(filehandle = open('regdump.txt', 'w', encoding='utf-8')) + + # create error/warning & diagnostic files + if (args.errfile): + errWarn = open(args.errfile, 'w', encoding='utf-8') + else: + errWarn = sys.stderr + + if (args.diagfile): + diag = open(args.diagfile, 'w', encoding='utf-8') + else: + diag = None + + if (args.debug): + pdb.run('genTarget(args)') + elif (args.profile): + import cProfile, pstats + cProfile.run('genTarget(args)', 'profile.txt') + p = pstats.Stats('profile.txt') + p.strip_dirs().sort_stats('time').print_stats(50) + else: + genTarget(args) diff --git a/registry/reg.py b/registry/reg.py new file mode 100644 index 0000000..5a59e03 --- /dev/null +++ b/registry/reg.py @@ -0,0 +1,1059 @@ +#!/usr/bin/python3 -i +# +# Copyright (c) 2013-2018 The Khronos Group Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import io,os,pdb,re,string,sys,copy +import xml.etree.ElementTree as etree +from collections import defaultdict + +# matchAPIProfile - returns whether an API and profile +# being generated matches an element's profile +# api - string naming the API to match +# profile - string naming the profile to match +# elem - Element which (may) have 'api' and 'profile' +# attributes to match to. +# If a tag is not present in the Element, the corresponding API +# or profile always matches. +# Otherwise, the tag must exactly match the API or profile. +# Thus, if 'profile' = core: +# <remove> with no attribute will match +# <remove profile='core'> will match +# <remove profile='compatibility'> will not match +# Possible match conditions: +# Requested Element +# Profile Profile +# --------- -------- +# None None Always matches +# 'string' None Always matches +# None 'string' Does not match. Can't generate multiple APIs +# or profiles, so if an API/profile constraint +# is present, it must be asked for explicitly. +# 'string' 'string' Strings must match +# +# ** In the future, we will allow regexes for the attributes, +# not just strings, so that api="^(gl|gles2)" will match. Even +# this isn't really quite enough, we might prefer something +# like "gl(core)|gles1(common-lite)". +def matchAPIProfile(api, profile, elem): + """Match a requested API & profile name to a api & profile attributes of an Element""" + match = True + # Match 'api', if present + if ('api' in elem.attrib): + if (api == None): + raise UserWarning("No API requested, but 'api' attribute is present with value '" + + elem.get('api') + "'") + elif (api != elem.get('api')): + # Requested API doesn't match attribute + return False + if ('profile' in elem.attrib): + if (profile == None): + raise UserWarning("No profile requested, but 'profile' attribute is present with value '" + + elem.get('profile') + "'") + elif (profile != elem.get('profile')): + # Requested profile doesn't match attribute + return False + return True + +# BaseInfo - base class for information about a registry feature +# (type/group/enum/command/API/extension). +# required - should this feature be defined during header generation +# (has it been removed by a profile or version)? +# declared - has this feature been defined already? +# elem - etree Element for this feature +# resetState() - reset required/declared to initial values. Used +# prior to generating a new API interface. +# compareElem(info) - return True if self.elem and info.elem have the +# same definition. +class BaseInfo: + """Represents the state of a registry feature, used during API generation""" + def __init__(self, elem): + self.required = False + self.declared = False + self.elem = elem + def resetState(self): + self.required = False + self.declared = False + def compareElem(self, info): + # Just compares the tag and attributes. + # @@ This should be virtualized. In particular, comparing <enum> + # tags requires special-casing on the attributes, as 'extnumber' is + # only relevant when 'offset' is present. + selfKeys = sorted(self.elem.keys()) + infoKeys = sorted(info.elem.keys()) + + if selfKeys != infoKeys: + return False + + # Ignore value of 'extname', as this will inherently be different + # when redefining the same interface in different feature and/or + # extension blocks. + for key in selfKeys: + if (key != 'extname' and + (self.elem.get(key) != info.elem.get(key))): + return False + + return True + +# TypeInfo - registry information about a type. No additional state +# beyond BaseInfo is required. +class TypeInfo(BaseInfo): + """Represents the state of a registry type""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.additionalValidity = [] + self.removedValidity = [] + def resetState(self): + BaseInfo.resetState(self) + self.additionalValidity = [] + self.removedValidity = [] + +# GroupInfo - registry information about a group of related enums +# in an <enums> block, generally corresponding to a C "enum" type. +class GroupInfo(BaseInfo): + """Represents the state of a registry <enums> group""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + +# EnumInfo - registry information about an enum +# type - numeric type of the value of the <enum> tag +# ( '' for GLint, 'u' for GLuint, 'ull' for GLuint64 ) +class EnumInfo(BaseInfo): + """Represents the state of a registry enum""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.type = elem.get('type') + if (self.type == None): + self.type = '' + +# CmdInfo - registry information about a command +class CmdInfo(BaseInfo): + """Represents the state of a registry command""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.additionalValidity = [] + self.removedValidity = [] + def resetState(self): + BaseInfo.resetState(self) + self.additionalValidity = [] + self.removedValidity = [] + +# FeatureInfo - registry information about an API <feature> +# or <extension> +# name - feature name string (e.g. 'VK_KHR_surface') +# version - feature version number (e.g. 1.2). <extension> +# features are unversioned and assigned version number 0. +# ** This is confusingly taken from the 'number' attribute of <feature>. +# Needs fixing. +# number - extension number, used for ordering and for +# assigning enumerant offsets. <feature> features do +# not have extension numbers and are assigned number 0. +# category - category, e.g. VERSION or khr/vendor tag +# emit - has this feature been defined already? +class FeatureInfo(BaseInfo): + """Represents the state of an API feature (version/extension)""" + def __init__(self, elem): + BaseInfo.__init__(self, elem) + self.name = elem.get('name') + # Determine element category (vendor). Only works + # for <extension> elements. + if (elem.tag == 'feature'): + self.category = 'VERSION' + self.version = elem.get('name') + self.versionNumber = elem.get('number') + self.number = "0" + self.supported = None + else: + self.category = self.name.split('_', 2)[1] + self.version = "0" + self.versionNumber = "0" + self.number = elem.get('number') + self.supported = elem.get('supported') + self.emit = False + +from generator import write, GeneratorOptions, OutputGenerator + +# Registry - object representing an API registry, loaded from an XML file +# Members +# tree - ElementTree containing the root <registry> +# typedict - dictionary of TypeInfo objects keyed by type name +# groupdict - dictionary of GroupInfo objects keyed by group name +# enumdict - dictionary of EnumInfo objects keyed by enum name +# cmddict - dictionary of CmdInfo objects keyed by command name +# apidict - dictionary of <api> Elements keyed by API name +# extensions - list of <extension> Elements +# extdict - dictionary of <extension> Elements keyed by extension name +# gen - OutputGenerator object used to write headers / messages +# genOpts - GeneratorOptions object used to control which +# fetures to write and how to format them +# emitFeatures - True to actually emit features for a version / extension, +# or False to just treat them as emitted +# breakPat - regexp pattern to break on when generatng names +# Public methods +# loadElementTree(etree) - load registry from specified ElementTree +# loadFile(filename) - load registry from XML file +# setGenerator(gen) - OutputGenerator to use +# breakOnName() - specify a feature name regexp to break on when +# generating features. +# parseTree() - parse the registry once loaded & create dictionaries +# dumpReg(maxlen, filehandle) - diagnostic to dump the dictionaries +# to specified file handle (default stdout). Truncates type / +# enum / command elements to maxlen characters (default 80) +# generator(g) - specify the output generator object +# apiGen(apiname, genOpts) - generate API headers for the API type +# and profile specified in genOpts, but only for the versions and +# extensions specified there. +# apiReset() - call between calls to apiGen() to reset internal state +# Private methods +# addElementInfo(elem,info,infoName,dictionary) - add feature info to dict +# lookupElementInfo(fname,dictionary) - lookup feature info in dict +class Registry: + """Represents an API registry loaded from XML""" + def __init__(self): + self.tree = None + self.typedict = {} + self.groupdict = {} + self.enumdict = {} + self.cmddict = {} + self.apidict = {} + self.extensions = [] + self.requiredextensions = [] # Hack - can remove it after validity generator goes away + self.validextensionstructs = defaultdict(list) + self.extdict = {} + # A default output generator, so commands prior to apiGen can report + # errors via the generator object. + self.gen = OutputGenerator() + self.genOpts = None + self.emitFeatures = False + self.breakPat = None + # self.breakPat = re.compile('VkFenceImportFlagBits.*') + def loadElementTree(self, tree): + """Load ElementTree into a Registry object and parse it""" + self.tree = tree + self.parseTree() + def loadFile(self, file): + """Load an API registry XML file into a Registry object and parse it""" + self.tree = etree.parse(file) + self.parseTree() + def setGenerator(self, gen): + """Specify output generator object. None restores the default generator""" + self.gen = gen + self.gen.setRegistry(self) + + # addElementInfo - add information about an element to the + # corresponding dictionary + # elem - <type>/<enums>/<enum>/<command>/<feature>/<extension> Element + # info - corresponding {Type|Group|Enum|Cmd|Feature}Info object + # infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' + # dictionary - self.{type|group|enum|cmd|api|ext}dict + # If the Element has an 'api' attribute, the dictionary key is the + # tuple (name,api). If not, the key is the name. 'name' is an + # attribute of the Element + def addElementInfo(self, elem, info, infoName, dictionary): + # self.gen.logMsg('diag', 'Adding ElementInfo.required =', + # info.required, 'name =', elem.get('name')) + + if ('api' in elem.attrib): + key = (elem.get('name'),elem.get('api')) + else: + key = elem.get('name') + if key in dictionary: + if not dictionary[key].compareElem(info): + self.gen.logMsg('warn', 'Attempt to redefine', key, + 'with different value (this may be benign)') + #else: + # self.gen.logMsg('warn', 'Benign redefinition of', key, + # 'with identical value') + else: + dictionary[key] = info + # + # lookupElementInfo - find a {Type|Enum|Cmd}Info object by name. + # If an object qualified by API name exists, use that. + # fname - name of type / enum / command + # dictionary - self.{type|enum|cmd}dict + def lookupElementInfo(self, fname, dictionary): + key = (fname, self.genOpts.apiname) + if (key in dictionary): + # self.gen.logMsg('diag', 'Found API-specific element for feature', fname) + return dictionary[key] + elif (fname in dictionary): + # self.gen.logMsg('diag', 'Found generic element for feature', fname) + return dictionary[fname] + else: + return None + def breakOnName(self, regexp): + self.breakPat = re.compile(regexp) + def parseTree(self): + """Parse the registry Element, once created""" + # This must be the Element for the root <registry> + self.reg = self.tree.getroot() + # + # Create dictionary of registry types from toplevel <types> tags + # and add 'name' attribute to each <type> tag (where missing) + # based on its <name> element. + # + # There's usually one <types> block; more are OK + # Required <type> attributes: 'name' or nested <name> tag contents + self.typedict = {} + for type in self.reg.findall('types/type'): + # If the <type> doesn't already have a 'name' attribute, set + # it from contents of its <name> tag. + if (type.get('name') == None): + type.attrib['name'] = type.find('name').text + self.addElementInfo(type, TypeInfo(type), 'type', self.typedict) + # + # Create dictionary of registry enum groups from <enums> tags. + # + # Required <enums> attributes: 'name'. If no name is given, one is + # generated, but that group can't be identified and turned into an + # enum type definition - it's just a container for <enum> tags. + self.groupdict = {} + for group in self.reg.findall('enums'): + self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict) + # + # Create dictionary of registry enums from <enum> tags + # + # <enums> tags usually define different namespaces for the values + # defined in those tags, but the actual names all share the + # same dictionary. + # Required <enum> attributes: 'name', 'value' + # For containing <enums> which have type="enum" or type="bitmask", + # tag all contained <enum>s are required. This is a stopgap until + # a better scheme for tagging core and extension enums is created. + self.enumdict = {} + for enums in self.reg.findall('enums'): + required = (enums.get('type') != None) + for enum in enums.findall('enum'): + enumInfo = EnumInfo(enum) + enumInfo.required = required + self.addElementInfo(enum, enumInfo, 'enum', self.enumdict) + # self.gen.logMsg('diag', 'parseTree: marked req =', + # required, 'for', enum.get('name')) + # + # Create dictionary of registry commands from <command> tags + # and add 'name' attribute to each <command> tag (where missing) + # based on its <proto><name> element. + # + # There's usually only one <commands> block; more are OK. + # Required <command> attributes: 'name' or <proto><name> tag contents + self.cmddict = {} + # List of commands which alias others. Contains + # [ aliasName, element ] + # for each alias + cmdAlias = [] + for cmd in self.reg.findall('commands/command'): + # If the <command> doesn't already have a 'name' attribute, set + # it from contents of its <proto><name> tag. + name = cmd.get('name') + if name == None: + name = cmd.attrib['name'] = cmd.find('proto/name').text + ci = CmdInfo(cmd) + self.addElementInfo(cmd, ci, 'command', self.cmddict) + alias = cmd.get('alias') + if alias: + cmdAlias.append([name, alias, cmd]) + # Now loop over aliases, injecting a copy of the aliased command's + # Element with the aliased prototype name replaced with the command + # name - if it exists. + for (name, alias, cmd) in cmdAlias: + if alias in self.cmddict: + #@ pdb.set_trace() + aliasInfo = self.cmddict[alias] + cmdElem = copy.deepcopy(aliasInfo.elem) + cmdElem.find('proto/name').text = name + cmdElem.attrib['name'] = name + cmdElem.attrib['alias'] = alias + ci = CmdInfo(cmdElem) + # Replace the dictionary entry for the CmdInfo element + self.cmddict[name] = ci + + #@ newString = etree.tostring(base, encoding="unicode").replace(aliasValue, aliasName) + #@elem.append(etree.fromstring(replacement)) + else: + self.gen.logMsg('warn', 'No matching <command> found for command', + cmd.get('name'), 'alias', alias) + + # + # Create dictionaries of API and extension interfaces + # from toplevel <api> and <extension> tags. + # + self.apidict = {} + for feature in self.reg.findall('feature'): + featureInfo = FeatureInfo(feature) + self.addElementInfo(feature, featureInfo, 'feature', self.apidict) + + # Add additional enums defined only in <feature> tags + # to the corresponding core type. + # When seen here, the <enum> element, processed to contain the + # numeric enum value, is added to the corresponding <enums> + # element, as well as adding to the enum dictionary. It is + # *removed* from the <require> element it is introduced in. + # Not doing this will cause spurious genEnum() + # calls to be made in output generation, and it's easier + # to handle here than in genEnum(). + # + # In lxml.etree, an Element can have only one parent, so the + # append() operation also removes the element. But in Python's + # ElementTree package, an Element can have multiple parents. So + # it must be explicitly removed from the <require> tag, leading + # to the nested loop traversal of <require>/<enum> elements + # below. + # + # This code also adds a 'version' attribute containing the + # api version. + # + # For <enum> tags which are actually just constants, if there's + # no 'extends' tag but there is a 'value' or 'bitpos' tag, just + # add an EnumInfo record to the dictionary. That works because + # output generation of constants is purely dependency-based, and + # doesn't need to iterate through the XML tags. + # + for elem in feature.findall('require'): + for enum in elem.findall('enum'): + addEnumInfo = False + groupName = enum.get('extends') + if (groupName != None): + # self.gen.logMsg('diag', 'Found extension enum', + # enum.get('name')) + # Add version number attribute to the <enum> element + enum.attrib['version'] = featureInfo.version + # Look up the GroupInfo with matching groupName + if (groupName in self.groupdict.keys()): + # self.gen.logMsg('diag', 'Matching group', + # groupName, 'found, adding element...') + gi = self.groupdict[groupName] + gi.elem.append(enum) + # Remove element from parent <require> tag + # This should be a no-op in lxml.etree + elem.remove(enum) + else: + self.gen.logMsg('warn', 'NO matching group', + groupName, 'for enum', enum.get('name'), 'found.') + addEnumInfo = True + elif (enum.get('value') or enum.get('bitpos') or enum.get('alias')): + # self.gen.logMsg('diag', 'Adding extension constant "enum"', + # enum.get('name')) + addEnumInfo = True + if (addEnumInfo): + enumInfo = EnumInfo(enum) + self.addElementInfo(enum, enumInfo, 'enum', self.enumdict) + + self.extensions = self.reg.findall('extensions/extension') + self.extdict = {} + for feature in self.extensions: + featureInfo = FeatureInfo(feature) + self.addElementInfo(feature, featureInfo, 'extension', self.extdict) + + # Add additional enums defined only in <extension> tags + # to the corresponding core type. + # Algorithm matches that of enums in a "feature" tag as above. + # + # This code also adds a 'extnumber' attribute containing the + # extension number, used for enumerant value calculation. + # + for elem in feature.findall('require'): + for enum in elem.findall('enum'): + addEnumInfo = False + groupName = enum.get('extends') + if (groupName != None): + # self.gen.logMsg('diag', 'Found extension enum', + # enum.get('name')) + + # Add <extension> block's extension number attribute to + # the <enum> element unless specified explicitly, such + # as when redefining an enum in another extension. + extnumber = enum.get('extnumber') + if not extnumber: + enum.attrib['extnumber'] = featureInfo.number + + enum.attrib['extname'] = featureInfo.name + enum.attrib['supported'] = featureInfo.supported + # Look up the GroupInfo with matching groupName + if (groupName in self.groupdict.keys()): + # self.gen.logMsg('diag', 'Matching group', + # groupName, 'found, adding element...') + gi = self.groupdict[groupName] + gi.elem.append(enum) + # Remove element from parent <require> tag + # This should be a no-op in lxml.etree + elem.remove(enum) + else: + self.gen.logMsg('warn', 'NO matching group', + groupName, 'for enum', enum.get('name'), 'found.') + addEnumInfo = True + elif (enum.get('value') or enum.get('bitpos') or enum.get('alias')): + # self.gen.logMsg('diag', 'Adding extension constant "enum"', + # enum.get('name')) + addEnumInfo = True + if (addEnumInfo): + enumInfo = EnumInfo(enum) + self.addElementInfo(enum, enumInfo, 'enum', self.enumdict) + + # Construct a "validextensionstructs" list for parent structures + # based on "structextends" tags in child structures + for type in self.reg.findall('types/type'): + parentStructs = type.get('structextends') + if (parentStructs != None): + for parent in parentStructs.split(','): + # self.gen.logMsg('diag', type.get('name'), 'extends', parent) + self.validextensionstructs[parent].append(type.get('name')) + # Sort the lists so they don't depend on the XML order + for parent in self.validextensionstructs: + self.validextensionstructs[parent].sort() + + def dumpReg(self, maxlen = 120, filehandle = sys.stdout): + """Dump all the dictionaries constructed from the Registry object""" + write('***************************************', file=filehandle) + write(' ** Dumping Registry contents **', file=filehandle) + write('***************************************', file=filehandle) + write('// Types', file=filehandle) + for name in self.typedict: + tobj = self.typedict[name] + write(' Type', name, '->', etree.tostring(tobj.elem)[0:maxlen], file=filehandle) + write('// Groups', file=filehandle) + for name in self.groupdict: + gobj = self.groupdict[name] + write(' Group', name, '->', etree.tostring(gobj.elem)[0:maxlen], file=filehandle) + write('// Enums', file=filehandle) + for name in self.enumdict: + eobj = self.enumdict[name] + write(' Enum', name, '->', etree.tostring(eobj.elem)[0:maxlen], file=filehandle) + write('// Commands', file=filehandle) + for name in self.cmddict: + cobj = self.cmddict[name] + write(' Command', name, '->', etree.tostring(cobj.elem)[0:maxlen], file=filehandle) + write('// APIs', file=filehandle) + for key in self.apidict: + write(' API Version ', key, '->', + etree.tostring(self.apidict[key].elem)[0:maxlen], file=filehandle) + write('// Extensions', file=filehandle) + for key in self.extdict: + write(' Extension', key, '->', + etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle) + # write('***************************************', file=filehandle) + # write(' ** Dumping XML ElementTree **', file=filehandle) + # write('***************************************', file=filehandle) + # write(etree.tostring(self.tree.getroot(),pretty_print=True), file=filehandle) + # + # typename - name of type + # required - boolean (to tag features as required or not) + def markTypeRequired(self, typename, required): + """Require (along with its dependencies) or remove (but not its dependencies) a type""" + self.gen.logMsg('diag', 'tagging type:', typename, '-> required =', required) + # Get TypeInfo object for <type> tag corresponding to typename + type = self.lookupElementInfo(typename, self.typedict) + if (type != None): + if (required): + # Tag type dependencies in 'alias' and 'required' attributes as + # required. This DOES NOT un-tag dependencies in a <remove> + # tag. See comments in markRequired() below for the reason. + for attrib in [ 'requires', 'alias' ]: + depname = type.elem.get(attrib) + if depname: + self.gen.logMsg('diag', 'Generating dependent type', + depname, 'for', attrib, 'type', typename) + self.markTypeRequired(depname, required) + # Tag types used in defining this type (e.g. in nested + # <type> tags) + # Look for <type> in entire <command> tree, + # not just immediate children + for subtype in type.elem.findall('.//type'): + self.gen.logMsg('diag', 'markRequired: type requires dependent <type>', subtype.text) + self.markTypeRequired(subtype.text, required) + # Tag enums used in defining this type, for example in + # <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member> + for subenum in type.elem.findall('.//enum'): + self.gen.logMsg('diag', 'markRequired: type requires dependent <enum>', subenum.text) + self.markEnumRequired(subenum.text, required) + type.required = required + else: + self.gen.logMsg('warn', 'type:', typename , 'IS NOT DEFINED') + # + # enumname - name of enum + # required - boolean (to tag features as required or not) + def markEnumRequired(self, enumname, required): + self.gen.logMsg('diag', 'tagging enum:', enumname, '-> required =', required) + enum = self.lookupElementInfo(enumname, self.enumdict) + if (enum != None): + enum.required = required + # Tag enum dependencies in 'alias' attribute as required + depname = enum.elem.get('alias') + if depname: + self.gen.logMsg('diag', 'Generating dependent enum', + depname, 'for alias', enumname, 'required =', enum.required) + self.markEnumRequired(depname, required) + else: + self.gen.logMsg('warn', 'enum:', enumname , 'IS NOT DEFINED') + # + # cmdname - name of command + # required - boolean (to tag features as required or not) + def markCmdRequired(self, cmdname, required): + self.gen.logMsg('diag', 'tagging command:', cmdname, '-> required =', required) + cmd = self.lookupElementInfo(cmdname, self.cmddict) + if (cmd != None): + cmd.required = required + # Tag command dependencies in 'alias' attribute as required + depname = cmd.elem.get('alias') + if depname: + self.gen.logMsg('diag', 'Generating dependent command', + depname, 'for alias', cmdname) + self.markCmdRequired(depname, required) + # Tag all parameter types of this command as required. + # 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. + if (required): + # Look for <type> in entire <command> tree, + # not just immediate children + for type in cmd.elem.findall('.//type'): + self.gen.logMsg('diag', 'markRequired: command implicitly requires dependent type', type.text) + self.markTypeRequired(type.text, required) + else: + self.gen.logMsg('warn', 'command:', name, 'IS NOT DEFINED') + # + # features - Element for <require> or <remove> tag + # required - boolean (to tag features as required or not) + def markRequired(self, features, required): + """Require or remove features specified in the Element""" + self.gen.logMsg('diag', 'markRequired (features = <too long to print>, required =', required, ')') + # Loop over types, enums, and commands in the tag + # @@ It would be possible to respect 'api' and 'profile' attributes + # in individual features, but that's not done yet. + for typeElem in features.findall('type'): + self.markTypeRequired(typeElem.get('name'), required) + for enumElem in features.findall('enum'): + self.markEnumRequired(enumElem.get('name'), required) + for cmdElem in features.findall('command'): + self.markCmdRequired(cmdElem.get('name'), required) + # + # interface - Element for <version> or <extension>, containing + # <require> and <remove> tags + # api - string specifying API name being generated + # profile - string specifying API profile being generated + def requireAndRemoveFeatures(self, interface, api, profile): + """Process <recquire> and <remove> tags for a <version> or <extension>""" + # <require> marks things that are required by this version/profile + for feature in interface.findall('require'): + if (matchAPIProfile(api, profile, feature)): + self.markRequired(feature,True) + # <remove> marks things that are removed by this version/profile + for feature in interface.findall('remove'): + if (matchAPIProfile(api, profile, feature)): + self.markRequired(feature,False) + + def assignAdditionalValidity(self, interface, api, profile): + # + # Loop over all usage inside all <require> tags. + for feature in interface.findall('require'): + if (matchAPIProfile(api, profile, feature)): + for v in feature.findall('usage'): + if v.get('command'): + self.cmddict[v.get('command')].additionalValidity.append(copy.deepcopy(v)) + if v.get('struct'): + self.typedict[v.get('struct')].additionalValidity.append(copy.deepcopy(v)) + + # + # Loop over all usage inside all <remove> tags. + for feature in interface.findall('remove'): + if (matchAPIProfile(api, profile, feature)): + for v in feature.findall('usage'): + if v.get('command'): + self.cmddict[v.get('command')].removedValidity.append(copy.deepcopy(v)) + if v.get('struct'): + self.typedict[v.get('struct')].removedValidity.append(copy.deepcopy(v)) + + # + # generateFeature - generate a single type / enum group / enum / command, + # and all its dependencies as needed. + # fname - name of feature (<type>/<enum>/<command>) + # ftype - type of feature, 'type' | 'enum' | 'command' + # dictionary - of *Info objects - self.{type|enum|cmd}dict + def generateFeature(self, fname, ftype, dictionary): + #@ # Break to debugger on matching name pattern + #@ if self.breakPat and re.match(self.breakPat, fname): + #@ pdb.set_trace() + + self.gen.logMsg('diag', 'generateFeature: generating', ftype, fname) + f = self.lookupElementInfo(fname, dictionary) + if (f == None): + # No such feature. This is an error, but reported earlier + self.gen.logMsg('diag', 'No entry found for feature', fname, + 'returning!') + return + # + # If feature isn't required, or has already been declared, return + if (not f.required): + self.gen.logMsg('diag', 'Skipping', ftype, fname, '(not required)') + return + if (f.declared): + self.gen.logMsg('diag', 'Skipping', ftype, fname, '(already declared)') + return + # Always mark feature declared, as though actually emitted + f.declared = True + + # Determine if this is an alias, and of what, if so + alias = f.elem.get('alias') + if alias: + self.gen.logMsg('diag', fname, 'is an alias of', alias) + + # + # Pull in dependent declaration(s) of the feature. + # For types, there may be one type in the 'required' attribute of + # the element, one in the 'alias' attribute, and many in + # imbedded <type> and <enum> tags within the element. + # For commands, there may be many in <type> tags within the element. + # For enums, no dependencies are allowed (though perhaps if you + # have a uint64 enum, it should require that type). + genProc = None + if (ftype == 'type'): + genProc = self.gen.genType + + # Generate type dependencies in 'alias' and 'required' attributes + if alias: + self.generateFeature(alias, 'type', self.typedict) + requires = f.elem.get('requires') + if requires: + self.generateFeature(requires, 'type', self.typedict) + + # Generate types used in defining this type (e.g. in nested + # <type> tags) + # Look for <type> in entire <command> tree, + # not just immediate children + for subtype in f.elem.findall('.//type'): + self.gen.logMsg('diag', 'Generating required dependent <type>', + subtype.text) + self.generateFeature(subtype.text, 'type', self.typedict) + + # Generate enums used in defining this type, for example in + # <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member> + for subtype in f.elem.findall('.//enum'): + self.gen.logMsg('diag', 'Generating required dependent <enum>', + subtype.text) + self.generateFeature(subtype.text, 'enum', self.enumdict) + + # If the type is an enum group, look up the corresponding + # group in the group dictionary and generate that instead. + if (f.elem.get('category') == 'enum'): + self.gen.logMsg('diag', 'Type', fname, 'is an enum group, so generate that instead') + group = self.lookupElementInfo(fname, self.groupdict) + if alias != None: + # An alias of another group name. + # Pass to genGroup with 'alias' parameter = aliased name + self.gen.logMsg('diag', 'Generating alias', fname, + 'for enumerated type', alias) + # Now, pass the *aliased* GroupInfo to the genGroup, but + # with an additional parameter which is the alias name. + genProc = self.gen.genGroup + f = self.lookupElementInfo(alias, self.groupdict) + elif group == None: + self.gen.logMsg('warn', 'Skipping enum type', fname, + ': No matching enumerant group') + return + else: + genProc = self.gen.genGroup + f = group + + #@ The enum group is not ready for generation. At this + #@ point, it contains all <enum> tags injected by + #@ <extension> tags without any verification of whether + #@ they're required or not. It may also contain + #@ duplicates injected by multiple consistent + #@ definitions of an <enum>. + + #@ Pass over each enum, marking its enumdict[] entry as + #@ required or not. Mark aliases of enums as required, + #@ too. + + enums = group.elem.findall('enum') + + self.gen.logMsg('diag', 'generateFeature: checking enums for group', fname) + + # Check for required enums, including aliases + # LATER - Check for, report, and remove duplicates? + enumAliases = [] + for elem in enums: + name = elem.get('name') + + required = False + + extname = elem.get('extname') + version = elem.get('version') + if extname is not None: + # 'supported' attribute was injected when the <enum> element was + # moved into the <enums> group in Registry.parseTree() + if self.genOpts.defaultExtensions == elem.get('supported'): + required = True + elif re.match(self.genOpts.addExtensions, extname) is not None: + required = True + elif version is not None: + required = re.match(self.genOpts.emitversions, version) is not None + else: + required = True + + self.gen.logMsg('diag', '* required =', required, 'for', name) + if required: + # Mark this element as required (in the element, not the EnumInfo) + elem.attrib['required'] = 'true' + # If it's an alias, track that for later use + enumAlias = elem.get('alias') + if enumAlias: + enumAliases.append(enumAlias) + for elem in enums: + name = elem.get('name') + if name in enumAliases: + elem.attrib['required'] = 'true' + self.gen.logMsg('diag', '* also need to require alias', name) + elif (ftype == 'command'): + # Generate command dependencies in 'alias' attribute + if alias: + self.generateFeature(alias, 'command', self.cmddict) + + genProc = self.gen.genCmd + for type in f.elem.findall('.//type'): + depname = type.text + self.gen.logMsg('diag', 'Generating required parameter type', + depname) + self.generateFeature(depname, 'type', self.typedict) + elif (ftype == 'enum'): + # Generate enum dependencies in 'alias' attribute + if alias: + self.generateFeature(alias, 'enum', self.enumdict) + genProc = self.gen.genEnum + + # Actually generate the type only if emitting declarations + if self.emitFeatures: + self.gen.logMsg('diag', 'Emitting', ftype, fname, 'declaration') + genProc(f, fname, alias) + else: + self.gen.logMsg('diag', 'Skipping', ftype, fname, + '(should not be emitted)') + # + # generateRequiredInterface - generate all interfaces required + # by an API version or extension + # interface - Element for <version> or <extension> + def generateRequiredInterface(self, interface): + """Generate required C interface for specified API version/extension""" + + # + # Loop over all features inside all <require> tags. + for features in interface.findall('require'): + for t in features.findall('type'): + self.generateFeature(t.get('name'), 'type', self.typedict) + for e in features.findall('enum'): + self.generateFeature(e.get('name'), 'enum', self.enumdict) + for c in features.findall('command'): + self.generateFeature(c.get('name'), 'command', self.cmddict) + + # + # apiGen(genOpts) - generate interface for specified versions + # genOpts - GeneratorOptions object with parameters used + # by the Generator object. + def apiGen(self, genOpts): + """Generate interfaces for the specified API type and range of versions""" + # + self.gen.logMsg('diag', '*******************************************') + self.gen.logMsg('diag', ' Registry.apiGen file:', genOpts.filename, + 'api:', genOpts.apiname, + 'profile:', genOpts.profile) + self.gen.logMsg('diag', '*******************************************') + # + self.genOpts = genOpts + # Reset required/declared flags for all features + self.apiReset() + # + # Compile regexps used to select versions & extensions + regVersions = re.compile(self.genOpts.versions) + regEmitVersions = re.compile(self.genOpts.emitversions) + regAddExtensions = re.compile(self.genOpts.addExtensions) + regRemoveExtensions = re.compile(self.genOpts.removeExtensions) + regEmitExtensions = re.compile(self.genOpts.emitExtensions) + # + # Get all matching API feature names & add to list of FeatureInfo + # Note we used to select on feature version attributes, not names. + features = [] + apiMatch = False + for key in self.apidict: + fi = self.apidict[key] + api = fi.elem.get('api') + if (api == self.genOpts.apiname): + apiMatch = True + if (regVersions.match(fi.name)): + # Matches API & version #s being generated. Mark for + # emission and add to the features[] list . + # @@ Could use 'declared' instead of 'emit'? + fi.emit = (regEmitVersions.match(fi.name) != None) + features.append(fi) + if (not fi.emit): + self.gen.logMsg('diag', 'NOT tagging feature api =', api, + 'name =', fi.name, 'version =', fi.version, + 'for emission (does not match emitversions pattern)') + else: + self.gen.logMsg('diag', 'Including feature api =', api, + 'name =', fi.name, 'version =', fi.version, + 'for emission (matches emitversions pattern)') + else: + self.gen.logMsg('diag', 'NOT including feature api =', api, + 'name =', fi.name, 'version =', fi.version, + '(does not match requested versions)') + else: + self.gen.logMsg('diag', 'NOT including feature api =', api, + 'name =', fi.name, + '(does not match requested API)') + if (not apiMatch): + self.gen.logMsg('warn', 'No matching API versions found!') + # + # Get all matching extensions, in order by their extension number, + # and add to the list of features. + # Start with extensions tagged with 'api' pattern matching the API + # being generated. Add extensions matching the pattern specified in + # regExtensions, then remove extensions matching the pattern + # specified in regRemoveExtensions + for (extName,ei) in sorted(self.extdict.items(),key = lambda x : x[1].number): + extName = ei.name + include = False + # + # Include extension if defaultExtensions is not None and if the + # 'supported' attribute matches defaultExtensions. The regexp in + # 'supported' must exactly match defaultExtensions, so bracket + # it with ^(pat)$. + pat = '^(' + ei.elem.get('supported') + ')$' + if (self.genOpts.defaultExtensions and + re.match(pat, self.genOpts.defaultExtensions)): + self.gen.logMsg('diag', 'Including extension', + extName, "(defaultExtensions matches the 'supported' attribute)") + include = True + # + # Include additional extensions if the extension name matches + # the regexp specified in the generator options. This allows + # forcing extensions into an interface even if they're not + # tagged appropriately in the registry. + if (regAddExtensions.match(extName) != None): + self.gen.logMsg('diag', 'Including extension', + extName, '(matches explicitly requested extensions to add)') + include = True + # Remove extensions if the name matches the regexp specified + # in generator options. This allows forcing removal of + # extensions from an interface even if they're tagged that + # way in the registry. + if (regRemoveExtensions.match(extName) != None): + self.gen.logMsg('diag', 'Removing extension', + extName, '(matches explicitly requested extensions to remove)') + include = False + # + # If the extension is to be included, add it to the + # extension features list. + if (include): + ei.emit = (regEmitExtensions.match(extName) != None) + features.append(ei) + if (not ei.emit): + self.gen.logMsg('diag', 'NOT tagging extension', + extName, + 'for emission (does not match emitextensions pattern)') + # Hack - can be removed when validity generator goes away + # (Jon) I'm not sure what this does, or if it should respect + # the ei.emit flag above. + self.requiredextensions.append(extName) + else: + self.gen.logMsg('diag', 'NOT including extension', + extName, '(does not match api attribute or explicitly requested extensions)') + # + # Sort the extension features list, if a sort procedure is defined + if (self.genOpts.sortProcedure): + self.genOpts.sortProcedure(features) + # + # Pass 1: loop over requested API versions and extensions tagging + # types/commands/features as required (in an <require> block) or no + # longer required (in an <remove> block). It is possible to remove + # a feature in one version and restore it later by requiring it in + # a later version. + # If a profile other than 'None' is being generated, it must + # match the profile attribute (if any) of the <require> and + # <remove> tags. + self.gen.logMsg('diag', '*******PASS 1: TAG FEATURES **********') + for f in features: + self.gen.logMsg('diag', 'PASS 1: Tagging required and removed features for', + f.name) + self.requireAndRemoveFeatures(f.elem, self.genOpts.apiname, self.genOpts.profile) + self.assignAdditionalValidity(f.elem, self.genOpts.apiname, self.genOpts.profile) + # + # Pass 2: loop over specified API versions and extensions printing + # declarations for required things which haven't already been + # generated. + self.gen.logMsg('diag', '*******PASS 2: GENERATE INTERFACES FOR FEATURES **********') + self.gen.beginFile(self.genOpts) + for f in features: + self.gen.logMsg('diag', 'PASS 2: Generating interface for', + f.name) + emit = self.emitFeatures = f.emit + if (not emit): + self.gen.logMsg('diag', 'PASS 2: NOT declaring feature', + f.elem.get('name'), 'because it is not tagged for emission') + # Generate the interface (or just tag its elements as having been + # emitted, if they haven't been). + self.gen.beginFeature(f.elem, emit) + self.generateRequiredInterface(f.elem) + self.gen.endFeature() + self.gen.endFile() + # + # apiReset - use between apiGen() calls to reset internal state + # + def apiReset(self): + """Reset type/enum/command dictionaries before generating another API""" + for type in self.typedict: + self.typedict[type].resetState() + for enum in self.enumdict: + self.enumdict[enum].resetState() + for cmd in self.cmddict: + self.cmddict[cmd].resetState() + for cmd in self.apidict: + self.apidict[cmd].resetState() + # + # validateGroups - check that group= attributes match actual groups + # + def validateGroups(self): + """Validate group= attributes on <param> and <proto> tags""" + # Keep track of group names not in <group> tags + badGroup = {} + self.gen.logMsg('diag', 'VALIDATING GROUP ATTRIBUTES ***') + for cmd in self.reg.findall('commands/command'): + proto = cmd.find('proto') + funcname = cmd.find('proto/name').text + if ('group' in proto.attrib.keys()): + group = proto.get('group') + # self.gen.logMsg('diag', 'Command ', funcname, ' has return group ', group) + if (group not in self.groupdict.keys()): + # self.gen.logMsg('diag', 'Command ', funcname, ' has UNKNOWN return group ', group) + if (group not in badGroup.keys()): + badGroup[group] = 1 + else: + badGroup[group] = badGroup[group] + 1 + for param in cmd.findall('param'): + pname = param.find('name') + if (pname != None): + pname = pname.text + else: + pname = type.get('name') + if ('group' in param.attrib.keys()): + group = param.get('group') + if (group not in self.groupdict.keys()): + # self.gen.logMsg('diag', 'Command ', funcname, ' param ', pname, ' has UNKNOWN group ', group) + if (group not in badGroup.keys()): + badGroup[group] = 1 + else: + badGroup[group] = badGroup[group] + 1 + if (len(badGroup.keys()) > 0): + self.gen.logMsg('diag', 'SUMMARY OF UNRECOGNIZED GROUPS ***') + for key in sorted(badGroup.keys()): + self.gen.logMsg('diag', ' ', key, ' occurred ', badGroup[key], ' times') diff --git a/registry/validusage.json b/registry/validusage.json new file mode 100644 index 0000000..d5bb46d --- /dev/null +++ b/registry/validusage.json @@ -0,0 +1,18392 @@ +{
+ "version info": {
+ "schema version": 2,
+ "api version": "1.1.74",
+ "comment": "from git branch: master commit: c51545d33f4fd791dc4109d0d338e79b572f6286",
+ "date": "2018-04-23 18:29:18Z"
+ },
+ "validation": {
+ "vkGetInstanceProcAddr": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
+ "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
+ "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkGetDeviceProcAddr": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
+ "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkEnumerateInstanceVersion": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
+ "text": " <code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ }
+ ]
+ },
+ "vkCreateInstance": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
+ "text": " All &amp;lt;&amp;lt;extended-functionality-extensions-dependencies, required extensions&amp;gt;&amp;gt; for each extension in the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
+ },
+ {
+ "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkInstanceCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateInstance-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateInstance-pInstance-parameter",
+ "text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkInstance</code> handle"
+ }
+ ]
+ },
+ "VkInstanceCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-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=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
+ "text": " If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkApplicationInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
+ "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
+ },
+ {
+ "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
+ "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
+ }
+ ]
+ },
+ "VkValidationFlagsEXT": {
+ "(VK_EXT_validation_flags)": [
+ {
+ "vuid": "VUID-VkValidationFlagsEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
+ "text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values"
+ },
+ {
+ "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
+ "text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkApplicationInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkApplicationInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkApplicationInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
+ "text": " If <code>pApplicationName</code> is not <code>NULL</code>, <code>pApplicationName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
+ "text": " If <code>pEngineName</code> is not <code>NULL</code>, <code>pEngineName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkDestroyInstance": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyInstance-instance-00629",
+ "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyInstance-instance-00630",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyInstance-instance-00631",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyInstance-instance-parameter",
+ "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ }
+ ]
+ },
+ "vkEnumeratePhysicalDevices": {
+ "core": [
+ {
+ "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
+ "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
+ "text": " If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <code>VkPhysicalDevice</code> handles"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
+ "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties</code> structure"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
+ "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties2</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>"
+ },
+ {
+ "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=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingPropertiesEXT\">VkPhysicalDeviceDescriptorIndexingPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT\">VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, or <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ }
+ ]
+ },
+ "VkPhysicalDeviceIDProperties": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceQueueFamilyProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
+ "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
+ "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties</code> structures"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceQueueFamilyProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
+ "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
+ "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties2</code> structures"
+ }
+ ]
+ },
+ "VkQueueFamilyProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>"
+ },
+ {
+ "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkEnumeratePhysicalDeviceGroups": {
+ "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
+ {
+ "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
+ "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
+ "text": " If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <code>VkPhysicalDeviceGroupProperties</code> structures"
+ }
+ ]
+ },
+ "vkCreateDevice": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
+ "text": " All &amp;lt;&amp;lt;extended-functionality-extensions-dependencies, required extensions&amp;gt;&amp;gt; for each extension in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
+ },
+ {
+ "vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDevice-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDevice-pDevice-parameter",
+ "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDevice</code> handle"
+ }
+ ]
+ },
+ "VkDeviceCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
+ "text": ""
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
+ },
+ {
+ "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=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, or <a href=\"#VkPhysicalDeviceVariablePointerFeatures\">VkPhysicalDeviceVariablePointerFeatures</a>"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
+ "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <code>VkDeviceQueueCreateInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
+ "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
+ "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
+ "text": " If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceFeatures</code> structure"
+ },
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
+ "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
+ "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure, then <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ],
+ "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
+ "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code>VK_AMD_negative_viewport_height</code>"
+ }
+ ],
+ "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
+ "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
+ }
+ ]
+ },
+ "VkDeviceGroupDeviceCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
+ {
+ "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
+ "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
+ "text": " All elements of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be in the same device group as enumerated by <a href=\"#vkEnumeratePhysicalDeviceGroups\">vkEnumeratePhysicalDeviceGroups</a>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
+ "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, the <code>physicalDevice</code> parameter of <a href=\"#vkCreateDevice\">vkCreateDevice</a> <strong class=\"purple\">must</strong> be an element of <code>pPhysicalDevices</code>."
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
+ "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <code>VkPhysicalDevice</code> handles"
+ }
+ ]
+ },
+ "vkDestroyDevice": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyDevice-device-00378",
+ "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDevice-device-00379",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyDevice-device-00380",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDevice-device-parameter",
+ "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ }
+ ]
+ },
+ "VkDeviceQueueCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
+ "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[<code>queueFamilyIndex</code>]"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
+ "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
+ "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
+ "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkDeviceQueueGlobalPriorityCreateInfoEXT": {
+ "(VK_EXT_global_priority)": [
+ {
+ "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
+ "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
+ }
+ ]
+ },
+ "vkGetDeviceQueue": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
+ "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceQueue-flags-01841",
+ "text": " <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> have been set to zero when <code>device</code> was created"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceQueue-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
+ "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
+ }
+ ]
+ },
+ "vkGetDeviceQueue2": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
+ "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceQueueInfo2</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
+ "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
+ }
+ ]
+ },
+ "VkDeviceQueueInfo2": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
+ "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <code>VkDeviceQueueCreateFlags</code> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateCommandPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateCommandPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandPoolCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
+ "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkCommandPool</code> handle"
+ }
+ ]
+ },
+ "VkCommandPoolCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkCommandPoolCreateInfo-queueFamilyIndex-00039",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the calling command’s <code>device</code> parameter"
+ },
+ {
+ "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values"
+ }
+ ]
+ },
+ "vkTrimCommandPool": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkTrimCommandPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkResetCommandPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkResetCommandPool-commandPool-00040",
+ "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkResetCommandPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetCommandPool-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkResetCommandPool-commandPool-parent",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkDestroyCommandPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
+ "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyCommandPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
+ "text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
+ "text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkAllocateCommandBuffers": {
+ "core": [
+ {
+ "vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
+ "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferAllocateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
+ "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::commandBufferCount <code>VkCommandBuffer</code> handles"
+ }
+ ]
+ },
+ "VkCommandBufferAllocateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
+ "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
+ "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
+ }
+ ]
+ },
+ "vkResetCommandBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated from a pool that was created with the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values"
+ }
+ ]
+ },
+ "vkFreeCommandBuffers": {
+ "core": [
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
+ "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
+ "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>VkCommandBuffer</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
+ "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
+ "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
+ "text": " Each element of <code>pCommandBuffers</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>commandPool</code>"
+ }
+ ]
+ },
+ "vkBeginCommandBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording or pending state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
+ "text": " If <code>commandBuffer</code> was allocated from a <a href=\"#VkCommandPool\">VkCommandPool</a> which did not have the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code> flag set, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, initial state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
+ "text": " If <code>commandBuffer</code> is a secondary command buffer, the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBufferInheritanceInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
+ "text": " If <code>commandBuffer</code> is a secondary command buffer and either the <code>occlusionQueryEnable</code> member of the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> is <code>VK_FALSE</code>, or the precise occlusion queries feature is not enabled, the <code>queryFlags</code> member of the <code>pInheritanceInfo</code> member <code>pBeginInfo</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
+ "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferBeginInfo</code> structure"
+ }
+ ]
+ },
+ "VkCommandBufferBeginInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
+ "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
+ "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
+ "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values"
+ }
+ ]
+ },
+ "VkCommandBufferInheritanceInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
+ "text": " If the &amp;lt;&amp;lt;features-features-inheritedQueries,inherited queries&amp;gt;&amp;gt; feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
+ "text": " If the &amp;lt;&amp;lt;features-features-inheritedQueries,inherited queries&amp;gt;&amp;gt; feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
+ "text": " If the &amp;lt;&amp;lt;features-features-pipelineStatisticsQuery,pipeline statistics queries&amp;gt;&amp;gt; feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
+ "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkEndCommandBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
+ "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance"
+ },
+ {
+ "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
+ "text": " All queries made &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt; during the recording of <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been made inactive"
+ },
+ {
+ "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ }
+ ],
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
+ "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdBeginDebugUtilsLabelEXT\">vkCmdBeginDebugUtilsLabelEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdEndDebugUtilsLabelEXT\">vkCmdEndDebugUtilsLabelEXT</a>."
+ }
+ ],
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
+ "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>."
+ }
+ ]
+ },
+ "vkQueueSubmit": {
+ "core": [
+ {
+ "vuid": "VUID-vkQueueSubmit-fence-00063",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled"
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-fence-00064",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
+ "text": " Any calls to <a href=\"#vkCmdSetEvent\">vkCmdSetEvent</a>, <a href=\"#vkCmdResetEvent\">vkCmdResetEvent</a> or <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that have been recorded into any of the command buffer elements of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code>, <strong class=\"purple\">must</strong> not reference any <a href=\"#VkEvent\">VkEvent</a> that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the <em>pending state</em>."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
+ "text": " Any stage flag included in any element of the <code>pWaitDstStageMask</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be a pipeline stage supported by one of the capabilities of <code>queue</code>, as specified in the &amp;lt;&amp;lt;synchronization-pipeline-stages-supported, table of supported pipeline stages&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
+ "text": " Each element of the <code>pSignalSemaphores</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device"
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
+ "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
+ "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have &amp;lt;&amp;lt;synchronization-semaphores-signaling, semaphore signal operations&amp;gt;&amp;gt; previously submitted for execution."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
+ "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending or executable state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
+ "text": " If any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
+ "text": " Any &amp;lt;&amp;lt;commandbuffers-secondary, secondary command buffers recorded&amp;gt;&amp;gt; into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending or executable state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
+ "text": " If any &amp;lt;&amp;lt;commandbuffers-secondary, secondary command buffers recorded&amp;gt;&amp;gt; into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
+ "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family <code>queue</code> belongs to."
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
+ "text": " If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <code>VkSubmitInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-fence-parameter",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueueSubmit-commonparent",
+ "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkSubmitInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
+ "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
+ "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>."
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-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=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
+ "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
+ "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid combinations of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
+ "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
+ "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
+ "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
+ },
+ {
+ "vuid": "VUID-VkSubmitInfo-commonparent",
+ "text": " Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkD3D12FenceSubmitInfoKHR": {
+ "(VK_KHR_external_semaphore_win32)": [
+ {
+ "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
+ "text": " <code>waitSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>waitSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure."
+ },
+ {
+ "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
+ "text": " <code>signalSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>signalSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure."
+ },
+ {
+ "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
+ "text": " If <code>waitSemaphoreValuesCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValuesCount</code> <code>uint64_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
+ "text": " If <code>signalSemaphoreValuesCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValuesCount</code> <code>uint64_t</code> values"
+ }
+ ]
+ },
+ "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
+ "(VK_KHR_win32_keyed_mutex)": [
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
+ "text": " Each member of <code>pAcquireSyncs</code> and <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a device memory object imported by setting <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>::<code>handleType</code> to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>."
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
+ "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
+ "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
+ "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
+ "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
+ "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
+ "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkWin32KeyedMutexAcquireReleaseInfoNV": {
+ "(VK_NV_win32_keyed_mutex)": [
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
+ "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
+ "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
+ "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeoutMilliseconds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
+ "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
+ "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
+ "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkProtectedSubmitInfo": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
+ "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>."
+ },
+ {
+ "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817",
+ "text": " If <code>protectedSubmit</code> is <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer."
+ },
+ {
+ "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818",
+ "text": " If <code>protectedSubmit</code> is <code>VK_FALSE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
+ },
+ {
+ "vuid": "VUID-VkProtectedSubmitInfo-pNext-01819",
+ "text": " If the <code>VkSubmitInfo</code>::<code>pNext</code> chain does not include a <code>VkProtectedSubmitInfo</code> structure, then each element of the command buffer of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
+ },
+ {
+ "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
+ }
+ ]
+ },
+ "VkDeviceGroupSubmitInfo": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
+ "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
+ "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
+ "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
+ "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
+ "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
+ "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
+ "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
+ "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> <code>uint32_t</code> values"
+ }
+ ]
+ },
+ "vkCmdExecuteCommands": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_PRIMARY</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
+ "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
+ "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending or executable state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00090",
+ "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, and it was recorded into any other primary command buffer, that primary command buffer <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
+ "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
+ "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not have already been recorded to <code>commandBuffer</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
+ "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not appear more than once in <code>pCommandBuffers</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
+ "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family as the <code>VkCommandPool</code> from which <code>commandBuffer</code> was allocated"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-contents-00095",
+ "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, that render pass instance <strong class=\"purple\">must</strong> have been begun with the <code>contents</code> parameter of <code>vkCmdBeginRenderPass</code> set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
+ "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
+ "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
+ "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the pname::pBeginInfo::<code>pInheritanceInfo</code>::<code>renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the current render pass."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
+ "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
+ "text": " If <code>vkCmdExecuteCommands</code> is not being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
+ "text": " If the &amp;lt;&amp;lt;features-features-inheritedQueries,inherited queries&amp;gt;&amp;gt; feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
+ "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt;, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>occlusionQueryEnable</code> set to <code>VK_TRUE</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
+ "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt;, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>queryFlags</code> having all bits set that are set for the query"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
+ "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> query &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt;, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>pipelineStatistics</code> having all bits set that are set in the <code>VkQueryPool</code> the query uses"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
+ "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not begin any query types that are &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt; in <code>commandBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
+ "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
+ "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer."
+ }
+ ]
+ },
+ "VkDeviceGroupCommandBufferBeginInfo": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>"
+ }
+ ]
+ },
+ "vkCmdSetDeviceMask": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>::<code>deviceMask</code> value when the command buffer began recording."
+ },
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
+ "text": " If <code>vkCmdSetDeviceMask</code> is called inside a render pass instance, <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceMask</code> value when the render pass instance began recording."
+ },
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
+ }
+ ]
+ },
+ "vkCreateFence": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateFence-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateFence-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateFence-pFence-parameter",
+ "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
+ }
+ ]
+ },
+ "VkFenceCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkFenceCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkFenceCreateInfo-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=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a> or <a href=\"#VkExportFenceWin32HandleInfoKHR\">VkExportFenceWin32HandleInfoKHR</a>"
+ },
+ {
+ "vuid": "VUID-VkFenceCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values"
+ }
+ ]
+ },
+ "VkExportFenceCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_fence)": [
+ {
+ "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
+ "text": " The bits in <code>handleTypes</code> must be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values"
+ }
+ ]
+ },
+ "VkExportFenceWin32HandleInfoKHR": {
+ "(VK_KHR_external_fence_win32)": [
+ {
+ "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
+ "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, VkExportFenceWin32HandleInfoKHR <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>."
+ },
+ {
+ "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
+ "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
+ }
+ ]
+ },
+ "vkGetFenceWin32HandleKHR": {
+ "(VK_KHR_external_fence_win32)": [
+ {
+ "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
+ "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetWin32HandleInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
+ "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
+ }
+ ]
+ },
+ "VkFenceGetWin32HandleInfoKHR": {
+ "(VK_KHR_external_fence_win32)": [
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when the <code>fence</code>’s current payload was created."
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
+ "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetFenceWin32HandleKHR\">vkGetFenceWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in &amp;lt;&amp;lt;synchronization-fences-importing,Importing Fence Payloads&amp;gt;&amp;gt; unless that imported payload’s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
+ "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated &amp;lt;&amp;lt;synchronization-fences-signaling,fence signal operation&amp;gt;&amp;gt; pending execution."
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetFenceFdKHR": {
+ "(VK_KHR_external_fence_fd)": [
+ {
+ "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
+ "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetFdInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
+ "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
+ }
+ ]
+ },
+ "VkFenceGetFdInfoKHR": {
+ "(VK_KHR_external_fence_fd)": [
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when <code>fence</code>’s current payload was created."
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
+ "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated &amp;lt;&amp;lt;synchronization-fences-signaling,fence signal operation&amp;gt;&amp;gt; pending execution."
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in &amp;lt;&amp;lt;synchronization-fences-importing,Importing Fence Payloads&amp;gt;&amp;gt; unless that imported payload’s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkDestroyFence": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyFence-fence-01120",
+ "text": " All &amp;lt;&amp;lt;devsandqueues-submission, queue submission&amp;gt;&amp;gt; commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyFence-fence-01121",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyFence-fence-01122",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyFence-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyFence-fence-parameter",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyFence-fence-parent",
+ "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetFenceStatus": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetFenceStatus-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetFenceStatus-fence-parameter",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetFenceStatus-fence-parent",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkResetFences": {
+ "core": [
+ {
+ "vuid": "VUID-vkResetFences-pFences-01123",
+ "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> not be currently associated with any queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-vkResetFences-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetFences-pFences-parameter",
+ "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
+ },
+ {
+ "vuid": "VUID-vkResetFences-fenceCount-arraylength",
+ "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkResetFences-pFences-parent",
+ "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkWaitForFences": {
+ "core": [
+ {
+ "vuid": "VUID-vkWaitForFences-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkWaitForFences-pFences-parameter",
+ "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
+ },
+ {
+ "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
+ "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkWaitForFences-pFences-parent",
+ "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkRegisterDeviceEventEXT": {
+ "(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
+ "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceEventInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
+ "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
+ }
+ ]
+ },
+ "VkDeviceEventInfoEXT": {
+ "(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
+ "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
+ }
+ ]
+ },
+ "vkRegisterDisplayEventEXT": {
+ "(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
+ "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayEventInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
+ "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
+ }
+ ]
+ },
+ "VkDisplayEventInfoEXT": {
+ "(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
+ "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
+ }
+ ]
+ },
+ "vkImportFenceWin32HandleKHR": {
+ "(VK_KHR_external_fence_win32)": [
+ {
+ "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
+ "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceWin32HandleInfoKHR</code> structure"
+ }
+ ]
+ },
+ "VkImportFenceWin32HandleInfoKHR": {
+ "(VK_KHR_external_fence_win32)": [
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the &amp;lt;&amp;lt;synchronization-fence-handletypes-win32, Handle Types Supported by VkImportFenceWin32HandleInfoKHR&amp;gt;&amp;gt; table."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
+ "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
+ "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
+ "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
+ "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
+ "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
+ "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
+ "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkImportFenceFdKHR": {
+ "(VK_KHR_external_fence_fd)": [
+ {
+ "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
+ "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceFdInfoKHR</code> structure"
+ }
+ ]
+ },
+ "VkImportFenceFdInfoKHR": {
+ "(VK_KHR_external_fence_fd)": [
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the &amp;lt;&amp;lt;synchronization-fence-handletypes-fd, Handle Types Supported by VkImportFenceFdInfoKHR&amp;gt;&amp;gt; table."
+ },
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
+ "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in &amp;lt;&amp;lt;external-fence-handle-types-compatibility,external fence handle types compatibility&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
+ "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkCreateSemaphore": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateSemaphore-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
+ "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSemaphore</code> handle"
+ }
+ ]
+ },
+ "VkSemaphoreCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreCreateInfo-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=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a> or <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "VkExportSemaphoreCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
+ {
+ "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
+ "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values"
+ }
+ ]
+ },
+ "VkExportSemaphoreWin32HandleInfoKHR": {
+ "(VK_KHR_external_semaphore_win32)": [
+ {
+ "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
+ "text": " If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>."
+ },
+ {
+ "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
+ "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
+ }
+ ]
+ },
+ "vkGetSemaphoreWin32HandleKHR": {
+ "(VK_KHR_external_semaphore_win32)": [
+ {
+ "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
+ "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetWin32HandleInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
+ "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
+ }
+ ]
+ },
+ "VkSemaphoreGetWin32HandleInfoKHR": {
+ "(VK_KHR_external_semaphore_win32)": [
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when the <code>semaphore</code>’s current payload was created."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
+ "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetSemaphoreWin32HandleKHR\">vkGetSemaphoreWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in &amp;lt;&amp;lt;synchronization-semaphores-importing,Importing Semaphore Payloads&amp;gt;&amp;gt; unless that imported payload’s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
+ "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in &amp;lt;&amp;lt;synchronization-semaphores-importing,Importing Semaphore Payloads&amp;gt;&amp;gt;, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
+ "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated &amp;lt;&amp;lt;synchronization-semaphores-signaling,semaphore signal operation&amp;gt;&amp;gt; pending execution."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetSemaphoreFdKHR": {
+ "(VK_KHR_external_semaphore_fd)": [
+ {
+ "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
+ "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetFdInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
+ "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
+ }
+ ]
+ },
+ "VkSemaphoreGetFdInfoKHR": {
+ "(VK_KHR_external_semaphore_fd)": [
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when <code>semaphore</code>’s current payload was created."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in &amp;lt;&amp;lt;synchronization-semaphores-importing,Importing Semaphore Payloads&amp;gt;&amp;gt; unless that imported payload’s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
+ "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in &amp;lt;&amp;lt;synchronization-semaphores-importing,Importing Semaphore Payloads&amp;gt;&amp;gt;, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
+ "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated &amp;lt;&amp;lt;synchronization-semaphores-signaling,semaphore signal operation&amp;gt;&amp;gt; pending execution."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkDestroySemaphore": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroySemaphore-semaphore-01137",
+ "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroySemaphore-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
+ "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkImportSemaphoreWin32HandleKHR": {
+ "(VK_KHR_external_semaphore_win32)": [
+ {
+ "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
+ "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreWin32HandleInfoKHR</code> structure"
+ }
+ ]
+ },
+ "VkImportSemaphoreWin32HandleInfoKHR": {
+ "(VK_KHR_external_semaphore_win32)": [
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the &amp;lt;&amp;lt;synchronization-semaphore-handletypes-win32,Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR&amp;gt;&amp;gt; table."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
+ "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
+ "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
+ "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
+ "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
+ "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
+ "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
+ "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkImportSemaphoreFdKHR": {
+ "(VK_KHR_external_semaphore_fd)": [
+ {
+ "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
+ "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreFdInfoKHR</code> structure"
+ }
+ ]
+ },
+ "VkImportSemaphoreFdInfoKHR": {
+ "(VK_KHR_external_semaphore_fd)": [
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the &amp;lt;&amp;lt;synchronization-semaphore-handletypes-fd,Handle Types Supported by VkImportSemaphoreFdInfoKHR&amp;gt;&amp;gt; table."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
+ "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in &amp;lt;&amp;lt;external-semaphore-handle-types-compatibility,external semaphore handle types compatibility&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
+ "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkCreateEvent": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateEvent-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkEventCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateEvent-pEvent-parameter",
+ "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkEvent</code> handle"
+ }
+ ]
+ },
+ "VkEventCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkEventCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroyEvent": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyEvent-event-01145",
+ "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyEvent-event-01146",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyEvent-event-01147",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyEvent-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyEvent-event-parameter",
+ "text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyEvent-event-parent",
+ "text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetEventStatus": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetEventStatus-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetEventStatus-event-parameter",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetEventStatus-event-parent",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkSetEvent": {
+ "core": [
+ {
+ "vuid": "VUID-vkSetEvent-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkSetEvent-event-parameter",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
+ },
+ {
+ "vuid": "VUID-vkSetEvent-event-parent",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkResetEvent": {
+ "core": [
+ {
+ "vuid": "VUID-vkResetEvent-event-01148",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
+ },
+ {
+ "vuid": "VUID-vkResetEvent-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetEvent-event-parameter",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetEvent-event-parent",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdSetEvent": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
+ "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-stageMask-01150",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-stageMask-01151",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-event-parameter",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
+ "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
+ "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdSetEvent-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
+ "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
+ }
+ ]
+ },
+ "vkCmdResetEvent": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
+ "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-stageMask-01154",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-stageMask-01155",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-event-01156",
+ "text": " When this command executes, <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-event-parameter",
+ "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
+ "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
+ "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdResetEvent-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
+ "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
+ }
+ ]
+ },
+ "vkCmdWaitEvents": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be the bitwise OR of the <code>stageMask</code> parameter used in previous calls to <code>vkCmdSetEvent</code> with any of the members of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the members of <code>pEvents</code> was set using <code>vkSetEvent</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
+ "text": " If <code>pEvents</code> includes one or more events that will be signaled by <code>vkSetEvent</code> after <code>commandBuffer</code> has been submitted to a queue, then <code>vkCmdWaitEvents</code> <strong class=\"purple\">must</strong> not be called inside a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164",
+ "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the &amp;lt;&amp;lt;synchronization-pipeline-stages-supported, table of supported pipeline stages&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165",
+ "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the &amp;lt;&amp;lt;synchronization-access-types-supported, table of supported access types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166",
+ "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the &amp;lt;&amp;lt;synchronization-access-types-supported, table of supported access types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
+ "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <code>VkEvent</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
+ "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
+ "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
+ "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
+ "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
+ "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
+ "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWaitEvents-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
+ "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
+ }
+ ]
+ },
+ "vkCmdPipelineBarrier": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-01172",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with a <code>VkSubpassDependency</code> instance in <code>pDependencies</code> that expresses a dependency from the current subpass to itself."
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01173",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>srcStageMask</code> <strong class=\"purple\">must</strong> contain a subset of the bit values in the <code>srcStageMask</code> member of that instance of <code>VkSubpassDependency</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01174",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>dstStageMask</code> <strong class=\"purple\">must</strong> contain a subset of the bit values in the <code>dstStageMask</code> member of that instance of <code>VkSubpassDependency</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-01175",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcAccessMask</code> of any element of <code>pMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> contain a subset of the bit values the <code>srcAccessMask</code> member of that instance of <code>VkSubpassDependency</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-01176",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>dstAccessMask</code> of any element of <code>pMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> contain a subset of the bit values the <code>dstAccessMask</code> member of that instance of <code>VkSubpassDependency</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01177",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be equal to the <code>dependencyFlags</code> member of that instance of <code>VkSubpassDependency</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>bufferMemoryBarrierCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-image-01179",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01180",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with, that refers to the same <code>image</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of an element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183",
+ "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the &amp;lt;&amp;lt;synchronization-pipeline-stages-supported, table of supported pipeline stages&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184",
+ "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the &amp;lt;&amp;lt;synchronization-access-types-supported, table of supported access types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185",
+ "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the &amp;lt;&amp;lt;synchronization-access-types-supported, table of supported access types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
+ "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
+ "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
+ "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
+ "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
+ "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
+ "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
+ "text": " If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
+ }
+ ]
+ },
+ "VkMemoryBarrier": {
+ "core": [
+ {
+ "vuid": "VUID-VkMemoryBarrier-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
+ "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
+ "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ }
+ ]
+ },
+ "VkBufferMemoryBarrier": {
+ "core": [
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to than the size of <code>buffer</code> minus <code>offset</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01196",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter",
+ "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter",
+ "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01192",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see &amp;lt;&amp;lt;devsandqueues-queueprops&amp;gt;&amp;gt;)"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01763",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory ownership transfers, as described in &amp;lt;&amp;lt;synchronization-queue-transfers&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01193",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01764",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in &amp;lt;&amp;lt;synchronization-queue-transfers&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryBarrier-buffer-01765",
+ "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in &amp;lt;&amp;lt;synchronization-queue-transfers&amp;gt;&amp;gt;."
+ }
+ ]
+ },
+ "VkImageMemoryBarrier": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
+ "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
+ "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01205",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
+ "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
+ "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
+ "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
+ "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01207",
+ "text": " If <code>image</code> has a depth/stencil format with both depth and stencil components, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01932",
+ "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter",
+ "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter",
+ "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
+ "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
+ "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
+ "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01199",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01200",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see &amp;lt;&amp;lt;devsandqueues-queueprops&amp;gt;&amp;gt;)."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01381",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01766",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory transfers, as described in &amp;lt;&amp;lt;synchronization-queue-transfers&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01201",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>."
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01767",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in &amp;lt;&amp;lt;synchronization-queue-transfers&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01768",
+ "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in &amp;lt;&amp;lt;synchronization-queue-transfers&amp;gt;&amp;gt;."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01671",
+ "text": " If <code>image</code> has a single-plane color format or is not <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01672",
+ "text": " If <code>image</code> has a multi-planar format and the image is <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either at least one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>; or <strong class=\"purple\">must</strong> include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-image-01673",
+ "text": " If <code>image</code> has a multi-planar format with only two planes, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
+ "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+ }
+ ]
+ },
+ "vkQueueWaitIdle": {
+ "core": [
+ {
+ "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ }
+ ]
+ },
+ "vkDeviceWaitIdle": {
+ "core": [
+ {
+ "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ }
+ ]
+ },
+ "vkCreateRenderPass": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateRenderPass-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
+ "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
+ }
+ ]
+ },
+ "VkRenderPassCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-None-00832",
+ "text": " If any two subpasses operate on attachments with overlapping ranges of the same <code>VkDeviceMemory</code> object, and at least one subpass writes to that area of <code>VkDeviceMemory</code>, a subpass dependency <strong class=\"purple\">must</strong> be included (either directly or via some intermediate subpasses) between them"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-attachment-00833",
+ "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or the attachment indexed by any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
+ "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pPreserveAttachments-00835",
+ "text": " The value of each element of the <code>pPreserveAttachments</code> member in each element of <code>pSubpasses</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
+ "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>."
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
+ "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the &amp;lt;&amp;lt;synchronization-pipeline-stages-types, pipeline&amp;gt;&amp;gt; identified by the <code>pipelineBindPoint</code> member of the source subpass."
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
+ "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the &amp;lt;&amp;lt;synchronization-pipeline-stages-types, pipeline&amp;gt;&amp;gt; identified by the <code>pipelineBindPoint</code> member of the source subpass."
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-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=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> or <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
+ "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription</code> structures"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
+ "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription</code> structures"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
+ "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency</code> structures"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
+ "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
+ "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>."
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
+ "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>."
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
+ "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
+ "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
+ "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
+ "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
+ "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal"
+ }
+ ]
+ },
+ "VkRenderPassMultiviewCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
+ "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
+ "text": " If <code>subpassCount</code> is not <code>0</code>, <code>pViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
+ "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pViewOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> <code>int32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
+ "text": " If <code>correlationMaskCount</code> is not <code>0</code>, <code>pCorrelationMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlationMaskCount</code> <code>uint32_t</code> values"
+ }
+ ]
+ },
+ "VkAttachmentDescription": {
+ "core": [
+ {
+ "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
+ "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-samples-parameter",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
+ "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
+ "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
+ "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
+ "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
+ "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
+ "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ }
+ ]
+ },
+ "VkRenderPassInputAttachmentAspectCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
+ "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <code>VkInputAttachmentAspectReference</code> structures"
+ },
+ {
+ "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
+ "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkInputAttachmentAspectReference": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkInputAttachmentAspectReference-pCreateInfo-01568",
+ "text": " There <strong class=\"purple\">must</strong> be an input attachment at <code>pCreateInfo</code>::<code>pSubpasses</code>[<code>subpass</code>].<code>pInputAttachments</code>[<code>inputAttachmentIndex</code>]."
+ },
+ {
+ "vuid": "VUID-VkInputAttachmentAspectReference-None-01569",
+ "text": " The specified input attachment <strong class=\"purple\">must</strong> have more than one aspect mask."
+ },
+ {
+ "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01570",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a subset of the aspect masks in the specified input attachment."
+ },
+ {
+ "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "VkSubpassDescription": {
+ "core": [
+ {
+ "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
+ "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-loadOp-00846",
+ "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
+ "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
+ "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, the sample count of each element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be anything other than <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
+ "text": " Each element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
+ "text": " Each element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
+ "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-None-00852",
+ "text": " If any input attachments are <code>VK_ATTACHMENT_UNUSED</code>, then any pipelines bound during the subpass <strong class=\"purple\">must</strong> not access those input attachments from the fragment shader"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-attachment-00853",
+ "text": " The <code>attachment</code> member of each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
+ "text": " Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-layout-00855",
+ "text": " If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
+ "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
+ "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
+ "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
+ "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference</code> structure"
+ },
+ {
+ "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
+ "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values"
+ }
+ ],
+ "(VK_AMD_mixed_attachment_samples)": [
+ {
+ "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
+ "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>"
+ }
+ ],
+ "!(VK_AMD_mixed_attachment_samples)+!(VK_NV_framebuffer_mixed_samples)": [
+ {
+ "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
+ "text": " If <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count"
+ }
+ ],
+ "(VK_NVX_multiview_per_view_attributes)": [
+ {
+ "vuid": "VUID-VkSubpassDescription-flags-00856",
+ "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>."
+ }
+ ]
+ },
+ "VkAttachmentReference": {
+ "core": [
+ {
+ "vuid": "VUID-VkAttachmentReference-layout-00857",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
+ },
+ {
+ "vuid": "VUID-VkAttachmentReference-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ }
+ ]
+ },
+ "VkSubpassDependency": {
+ "core": [
+ {
+ "vuid": "VUID-VkSubpassDependency-srcSubpass-00858",
+ "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstSubpass-00859",
+ "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
+ "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
+ "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcSubpass-00866",
+ "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> only contain one of <code>VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT</code>, <code>VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_VERTEX_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT</code>, <code>VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT</code>, or <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
+ "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are &amp;lt;&amp;lt;synchronization-framebuffer-regions,framebuffer-space stages&amp;gt;&amp;gt;, the &amp;lt;&amp;lt;synchronization-pipeline-stages-order, logically latest&amp;gt;&amp;gt; pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;synchronization-pipeline-stages-order, logically earlier&amp;gt;&amp;gt; than or equal to the &amp;lt;&amp;lt;synchronization-pipeline-stages-order, logically earliest&amp;gt;&amp;gt; pipeline stage in <code>dstStageMask</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
+ "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the &amp;lt;&amp;lt;synchronization-access-types-supported, table of supported access types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
+ "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the &amp;lt;&amp;lt;synchronization-access-types-supported, table of supported access types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
+ "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
+ "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
+ "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
+ "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
+ "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
+ "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-VkSubpassDependency-dependencyFlags-00870",
+ "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, then both <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not equal <code>VK_SUBPASS_EXTERNAL</code>"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-dependencyFlags-00871",
+ "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, then the render pass <strong class=\"purple\">must</strong> have multiview enabled"
+ },
+ {
+ "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
+ "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code> and that subpass has more than one bit set in the view mask, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
+ }
+ ]
+ },
+ "vkDestroyRenderPass": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
+ "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyRenderPass-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
+ "text": " If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
+ "text": " If <code>renderPass</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateFramebuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateFramebuffer-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFramebufferCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
+ "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFramebuffer</code> handle"
+ }
+ ]
+ },
+ "VkFramebufferCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
+ "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
+ "text": " Each element of <code>pAttachments</code> that is used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00878",
+ "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
+ "text": " Each element of <code>pAttachments</code> that is used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
+ "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with an <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
+ "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value that matches the <code>samples</code> value specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882",
+ "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
+ "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
+ "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
+ "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
+ "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
+ "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
+ "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
+ "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
+ "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
+ "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-parameter",
+ "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkImageView</code> handles"
+ },
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
+ "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
+ "text": " Each element of <code>pAttachments</code> that is a 2D or 2D array image view taken from a 3D image <strong class=\"purple\">must</strong> not be a depth/stencil format"
+ }
+ ]
+ },
+ "vkDestroyFramebuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
+ "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
+ "text": " If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
+ "text": " If <code>framebuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdBeginRenderPass": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
+ "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
+ "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
+ "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
+ "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
+ "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
+ "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from."
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
+ "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
+ "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
+ "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
+ "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+ }
+ ]
+ },
+ "VkRenderPassBeginInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
+ "text": " <code>clearValueCount</code> <strong class=\"purple\">must</strong> be greater than the largest attachment index in <code>renderPass</code> that specifies a <code>loadOp</code> (or <code>stencilLoadOp</code>, if the attachment has a depth/stencil format) of <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00903",
+ "text": " If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> valid <code>VkClearValue</code> unions"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
+ "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkFramebufferCreateInfo</code> structure specified when creating <code>framebuffer</code>."
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-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=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
+ "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
+ "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
+ "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkRenderPassSampleLocationsBeginInfoEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
+ "text": " If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <code>VkAttachmentSampleLocationsEXT</code> structures"
+ },
+ {
+ "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
+ "text": " If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <code>VkSubpassSampleLocationsEXT</code> structures"
+ }
+ ]
+ },
+ "VkAttachmentSampleLocationsEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
+ "text": " <code>attachmentIndex</code> <strong class=\"purple\">must</strong> be less than the <code>attachmentCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with"
+ },
+ {
+ "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
+ "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkSubpassSampleLocationsEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
+ "text": " <code>subpassIndex</code> <strong class=\"purple\">must</strong> be less than the <code>subpassCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with"
+ },
+ {
+ "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
+ "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkDeviceGroupRenderPassBeginInfo": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer’s initial device mask"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
+ "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device."
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
+ "text": " If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <code>VkRect2D</code> structures"
+ }
+ ]
+ },
+ "vkGetRenderAreaGranularity": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
+ "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
+ "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExtent2D</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
+ "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdNextSubpass": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdNextSubpass-None-00909",
+ "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
+ },
+ {
+ "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
+ "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdNextSubpass-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
+ }
+ ]
+ },
+ "vkCmdEndRenderPass": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdEndRenderPass-None-00910",
+ "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
+ },
+ {
+ "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdEndRenderPass-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
+ }
+ ]
+ },
+ "vkCreateShaderModule": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateShaderModule-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkShaderModuleCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
+ "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkShaderModule</code> handle"
+ }
+ ]
+ },
+ "VkShaderModuleCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
+ "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
+ "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
+ "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any capability that is not supported by the API, as described by the &amp;lt;&amp;lt;spirvenv-module-validation, Capabilities&amp;gt;&amp;gt; section of the &amp;lt;&amp;lt;spirvenv-capabilities,SPIR-V Environment&amp;gt;&amp;gt; appendix"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
+ "text": " If <code>pCode</code> declares any of the capabilities listed as <strong class=\"purple\">optional</strong> in the &amp;lt;&amp;lt;spirvenv-capabilities-table,SPIR-V Environment&amp;gt;&amp;gt; appendix, the corresponding feature(s) <strong class=\"purple\">must</strong> be enabled."
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
+ "text": " <code>pCode</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(codeSize \\over 4\\) <code>uint32_t</code> values"
+ }
+ ],
+ "!(VK_NV_glsl_shader)": [
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
+ "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
+ "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to valid SPIR-V code, formatted and packed as described by the &amp;lt;&amp;lt;spirv-spec,Khronos SPIR-V Specification&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
+ "text": " <code>pCode</code> <strong class=\"purple\">must</strong> adhere to the validation rules described by the &amp;lt;&amp;lt;spirvenv-module-validation, Validation Rules within a Module&amp;gt;&amp;gt; section of the &amp;lt;&amp;lt;spirvenv-capabilities,SPIR-V Environment&amp;gt;&amp;gt; appendix"
+ }
+ ],
+ "(VK_NV_glsl_shader)": [
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
+ "text": " If <code>pCode</code> points to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
+ "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to either valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> or valid GLSL code which <strong class=\"purple\">must</strong> be written to the GL_KHR_vulkan_glsl extension specification"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
+ "text": " If <code>pCode</code> points to SPIR-V code, that code <strong class=\"purple\">must</strong> adhere to the validation rules described by the &amp;lt;&amp;lt;spirvenv-module-validation, Validation Rules within a Module&amp;gt;&amp;gt; section of the &amp;lt;&amp;lt;spirvenv-capabilities,SPIR-V Environment&amp;gt;&amp;gt; appendix"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
+ "text": " If <code>pCode</code> points to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specification"
+ }
+ ]
+ },
+ "VkShaderModuleValidationCacheCreateInfoEXT": {
+ "(VK_EXT_validation_cache)": [
+ {
+ "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
+ "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
+ }
+ ]
+ },
+ "vkDestroyShaderModule": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyShaderModule-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
+ "text": " If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
+ "text": " If <code>shaderModule</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateValidationCacheEXT": {
+ "(VK_EXT_validation_cache)": [
+ {
+ "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkValidationCacheCreateInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
+ "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkValidationCacheEXT</code> handle"
+ }
+ ]
+ },
+ "VkValidationCacheCreateInfoEXT": {
+ "(VK_EXT_validation_cache)": [
+ {
+ "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
+ "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetValidationCacheDataEXT</code> when <code>pInitialData</code> was originally retrieved"
+ },
+ {
+ "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
+ "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetValidationCacheDataEXT</code>"
+ },
+ {
+ "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
+ "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
+ }
+ ]
+ },
+ "vkMergeValidationCachesEXT": {
+ "(VK_EXT_validation_cache)": [
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
+ "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
+ },
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
+ "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
+ },
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
+ "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkValidationCacheEXT</code> handles"
+ },
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
+ "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
+ "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
+ "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetValidationCacheDataEXT": {
+ "(VK_EXT_validation_cache)": [
+ {
+ "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
+ "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
+ "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
+ "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
+ "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkDestroyValidationCacheEXT": {
+ "(VK_EXT_validation_cache)": [
+ {
+ "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
+ "text": " If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
+ "text": " If <code>validationCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateComputePipelines": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateComputePipelines-flags-00695",
+ "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-flags-00696",
+ "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
+ "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
+ "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkComputePipelineCreateInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
+ "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
+ "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
+ "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkComputePipelineCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
+ "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
+ "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
+ "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
+ "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-VkComputePipelineCreateInfo-stage-00701",
+ "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
+ "text": " The shader code for the entry point identified by <code>stage</code> and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the &amp;lt;&amp;lt;interfaces,Shader Interfaces&amp;gt;&amp;gt; chapter"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;descriptorsets-pipelinelayout-consistency,consistent&amp;gt;&amp;gt; with the layout of the compute shader specified in <code>stage</code>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
+ "text": " The number of resources in <code>layout</code> accessible to the compute shader stage <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
+ "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineShaderStageCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
+ "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkPipelineShaderStageCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
+ "text": " <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_ALL_GRAPHICS</code>, or <code>VK_SHADER_STAGE_ALL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
+ "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
+ "text": " If the identified entry point includes any variable in its interface that is declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxClipDistances</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
+ "text": " If the identified entry point includes any variable in its interface that is declared with the <code>CullDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxCullDistances</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
+ "text": " If the identified entry point includes any variables in its interface that are declared with the <code>ClipDistance</code> or <code>CullDistance</code> <code>BuiltIn</code> decoration, those variables <strong class=\"purple\">must</strong> not have array sizes which sum to more than <code>VkPhysicalDeviceLimits</code>::<code>maxCombinedClipAndCullDistances</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
+ "text": " If the identified entry point includes any variable in its interface that is declared with the <code>SampleMask</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxSampleMaskWords</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any input variable in its interface that is decorated with <code>CullDistance</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, and the identified entry point has an <code>OpExecutionMode</code> instruction that specifies a patch size with <code>OutputVertices</code>, the patch size <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00716",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, and the identified entry point writes to <code>Layer</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>Layer</code> for all vertices of a given primitive"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00717",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, and the identified entry point writes to <code>ViewportIndex</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>ViewportIndex</code> for all vertices of a given primitive"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any output variables in its interface decorated with <code>CullDistance</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragDepth</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragDepth</code> in all execution paths"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
+ "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
+ "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
+ "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
+ "text": " If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSpecializationInfo</code> structure"
+ }
+ ],
+ "(VK_EXT_shader_stencil_export)": [
+ {
+ "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
+ "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragStencilRefEXT</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragStencilRefEXT</code> in all execution paths"
+ }
+ ]
+ },
+ "vkCreateGraphicsPipelines": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
+ "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
+ "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
+ "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
+ "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkGraphicsPipelineCreateInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
+ "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
+ "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
+ "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkGraphicsPipelineCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
+ "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
+ "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
+ "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
+ "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-stage-00727",
+ "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_VERTEX_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
+ "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
+ "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
+ "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
+ "text": " If <code>pStages</code> includes a tessellation control shader stage and a tessellation evaluation shader stage, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineTessellationStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
+ "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
+ "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both stages contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline, they <strong class=\"purple\">must</strong> both specify the same subdivision mode"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
+ "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the output patch size in the pipeline"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
+ "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both contain an <code>OpExecutionMode</code> instruction that specifies the out patch size in the pipeline, they <strong class=\"purple\">must</strong> both specify the same patch size"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
+ "text": " If <code>pStages</code> includes tessellation shader stages, the <code>topology</code> member of <code>pInputAssembly</code> <strong class=\"purple\">must</strong> be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
+ "text": " If the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>pStages</code> <strong class=\"purple\">must</strong> include tessellation shader stages"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
+ "text": " If <code>pStages</code> includes a geometry shader stage, and does not include any tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is &amp;lt;&amp;lt;shaders-geometry-execution, compatible&amp;gt;&amp;gt; with the primitive topology specified in <code>pInputAssembly</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
+ "text": " If <code>pStages</code> includes a geometry shader stage, and also includes tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is &amp;lt;&amp;lt;shaders-geometry-execution, compatible&amp;gt;&amp;gt; with the primitive topology that is output by the tessellation stages"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
+ "text": " If <code>pStages</code> includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with <code>PrimitiveID</code>, then the geometry shader code <strong class=\"purple\">must</strong> write to a matching output variable, decorated with <code>PrimitiveID</code>, in all execution paths"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
+ "text": " If <code>pStages</code> includes a fragment shader stage, its shader code <strong class=\"purple\">must</strong> not read from any input attachment that is defined as <code>VK_ATTACHMENT_UNUSED</code> in <code>subpass</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
+ "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the &amp;lt;&amp;lt;interfaces,Shader Interfaces&amp;gt;&amp;gt; chapter"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00745",
+ "text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the <code>blendEnable</code> member of the corresponding element of the <code>pAttachment</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code> if the <code>format</code> of the attachment does not support color blend operations, as specified by the <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
+ "text": " If rasterization is not disabled and the subpass uses color attachments, the <code>attachmentCount</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be equal to the <code>colorAttachmentCount</code> used to create <code>subpass</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>viewportCount</code> <code>VkViewport</code> structures"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>scissorCount</code> <code>VkRect2D</code> structures"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
+ "text": " If the wide lines feature is not enabled, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_WIDTH</code>, the <code>lineWidth</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>1.0</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
+ "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineViewportStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
+ "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineMultisampleStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
+ "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses a depth/stencil attachment, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDepthStencilStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
+ "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses color attachments, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineColorBlendStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
+ "text": " If the depth bias clamping feature is not enabled, no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code>, and the <code>depthBiasEnable</code> member of <code>pRasterizationState</code> is <code>VK_TRUE</code>, the <code>depthBiasClamp</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>0.0</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;descriptorsets-pipelinelayout-consistency,consistent&amp;gt;&amp;gt; with all shaders specified in <code>pStages</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
+ "text": " If <code>subpass</code> does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> follow the rules for a &amp;lt;&amp;lt;renderpass-noattachments, zero-attachment subpass&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
+ "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
+ "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
+ "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-parameter",
+ "text": " <code>pVertexInputState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineVertexInputStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pInputAssemblyState-parameter",
+ "text": " <code>pInputAssemblyState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineInputAssemblyStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
+ "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineRasterizationStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
+ "text": " If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDynamicStateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
+ "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
+ "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
+ "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
+ "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
+ "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
+ "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
+ "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
+ "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by the <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> at <code>renderPass</code> create time, its shader code <strong class=\"purple\">must</strong> not read from any aspect that was not specified in the <code>aspectMask</code> of the corresponding <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structure."
+ }
+ ],
+ "!(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ],
+ "(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
+ "text": " If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
+ "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>"
+ }
+ ],
+ "!(VK_AMD_mixed_attachment_samples)+!(VK_NV_framebuffer_mixed_samples)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
+ "text": " If <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count for those subpass attachments"
+ }
+ ],
+ "(VK_AMD_mixed_attachment_samples)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
+ "text": " If <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> equal the maximum of the sample counts of those subpass attachments"
+ }
+ ],
+ "(VK_NV_framebuffer_mixed_samples)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
+ "text": " If <code>subpass</code> has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
+ "text": " If <code>subpass</code> has any color attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be greater than or equal to the sample count for those subpass attachments"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
+ "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewTessellationShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders."
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
+ "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewGeometryShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader."
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
+ "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask, shaders in the pipeline <strong class=\"purple\">must</strong> not write to the <code>Layer</code> built-in output"
+ },
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
+ "text": " If the <code>renderPass</code> has multiview enabled, then all shaders <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
+ }
+ ],
+ "(VK_NV_clip_space_w_scaling)": [
+ {
+ "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
+ "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, chained to the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures"
+ }
+ ]
+ },
+ "VkPipelineDynamicStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
+ "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
+ "text": " <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicStateCount</code> valid <a href=\"#VkDynamicState\">VkDynamicState</a> values"
+ },
+ {
+ "vuid": "VUID-VkPipelineDynamicStateCreateInfo-dynamicStateCount-arraylength",
+ "text": " <code>dynamicStateCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroyPipeline": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
+ "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipeline-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
+ "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
+ "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreatePipelineCache": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreatePipelineCache-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineCacheCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
+ "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineCache</code> handle"
+ }
+ ]
+ },
+ "VkPipelineCacheCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
+ "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved"
+ },
+ {
+ "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
+ "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
+ "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
+ }
+ ]
+ },
+ "vkMergePipelineCaches": {
+ "core": [
+ {
+ "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
+ "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
+ },
+ {
+ "vuid": "VUID-vkMergePipelineCaches-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
+ "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
+ },
+ {
+ "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
+ "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkPipelineCache</code> handles"
+ },
+ {
+ "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
+ "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
+ "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
+ "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetPipelineCacheData": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
+ "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
+ "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
+ "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
+ "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkDestroyPipelineCache": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
+ "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
+ "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkSpecializationInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSpecializationInfo-offset-00773",
+ "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
+ },
+ {
+ "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
+ "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>"
+ },
+ {
+ "vuid": "VUID-VkSpecializationInfo-mapEntryCount-00775",
+ "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <code>VkSpecializationMapEntry</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSpecializationInfo-pData-parameter",
+ "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+ }
+ ]
+ },
+ "VkSpecializationMapEntry": {
+ "core": [
+ {
+ "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
+ "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>"
+ }
+ ]
+ },
+ "vkCmdBindPipeline": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
+ "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
+ "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
+ "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
+ "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
+ "text": " If the &amp;lt;&amp;lt;features-features-variableMultisampleRate,variable multisample rate&amp;gt;&amp;gt; feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
+ "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBindPipeline-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
+ "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created"
+ }
+ ]
+ },
+ "vkGetShaderInfoAMD": {
+ "(VK_AMD_shader_info)": [
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
+ "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
+ "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
+ "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
+ "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
+ "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
+ "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkAllocationCallbacks": {
+ "core": [
+ {
+ "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
+ "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>"
+ },
+ {
+ "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
+ "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>"
+ },
+ {
+ "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
+ "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>"
+ },
+ {
+ "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
+ "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceMemoryProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
+ "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties</code> structure"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceMemoryProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
+ "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties2</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceMemoryProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkAllocateMemory": {
+ "core": [
+ {
+ "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
+ "text": " <code>pAllocateInfo</code>\\-&amp;gt;<code>allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[<code>pAllocateInfo</code>\\-&amp;gt;<code>memoryTypeIndex</code>].<code>size</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
+ },
+ {
+ "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
+ "text": " <code>pAllocateInfo</code>\\-&amp;gt;<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
+ },
+ {
+ "vuid": "VUID-vkAllocateMemory-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
+ "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryAllocateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
+ "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceMemory</code> handle"
+ }
+ ]
+ },
+ "VkMemoryAllocateInfo": {
+ "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
+ "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ],
+ "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
+ "text": " If the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code>, and any of the handle types specified in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated allocation, as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code> or <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>, the <code>pNext</code> chain must contain an instance of ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
+ }
+ ],
+ "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>."
+ }
+ ],
+ "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>."
+ }
+ ],
+ "(VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
+ "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
+ "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>."
+ }
+ ],
+ "(VK_KHR_external_memory+VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
+ "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the memory object being imported was allocated."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
+ "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the memory was originally allocated."
+ }
+ ],
+ "(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
+ "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
+ "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646",
+ "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size reported in the memory requirements of the <code>image</code> or <code>buffer</code> member of the instance of <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> included in the <code>pNext</code> chain."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
+ "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the external handle was extracted."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
+ "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>."
+ }
+ ],
+ "(VK_EXT_external_memory_host)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
+ "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
+ "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
+ }
+ ],
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-None-01873",
+ "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BIT_ANDROID</code>:"
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
+ "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code> with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> contains an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-pNext-01875",
+ "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>:"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-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=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ }
+ ]
+ },
+ "VkMemoryDedicatedAllocateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
+ "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <code>VkImageCreateInfo</code>::<code>flags</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
+ "text": " If <code>image</code> is not <code>VK_NULL_HANDLE</code> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
+ "text": " If <code>image</code> is not <code>VK_NULL_HANDLE</code> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
+ },
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
+ "text": " If <code>buffer</code> is not <code>VK_NULL_HANDLE</code> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
+ }
+ ]
+ },
+ "VkDedicatedAllocationMemoryAllocateInfoNV": {
+ "(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
+ "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationImageCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationBufferCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory."
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory."
+ }
+ ]
+ },
+ "VkExportMemoryAllocateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
+ "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+ }
+ ]
+ },
+ "VkExportMemoryWin32HandleInfoKHR": {
+ "(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
+ "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, VkExportMemoryWin32HandleInfoKHR <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>."
+ },
+ {
+ "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
+ "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
+ }
+ ]
+ },
+ "VkImportMemoryWin32HandleInfoKHR": {
+ "(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
+ "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
+ "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
+ "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
+ "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
+ "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
+ "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
+ "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
+ "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
+ "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
+ "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetMemoryWin32HandleKHR": {
+ "(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
+ "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetWin32HandleInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
+ "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
+ }
+ ]
+ },
+ "VkMemoryGetWin32HandleInfoKHR": {
+ "(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created."
+ },
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
+ "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
+ },
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetMemoryWin32HandlePropertiesKHR": {
+ "(VK_KHR_external_memory_win32)": [
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
+ "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque."
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
+ "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryWin32HandlePropertiesKHR</code> structure"
+ }
+ ]
+ },
+ "VkImportMemoryFdInfoKHR": {
+ "(VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
+ "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
+ "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
+ "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
+ "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
+ "text": " The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in &amp;lt;&amp;lt;external-memory-handle-types-compatibility&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
+ "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in &amp;lt;&amp;lt;external-memory-handle-types-compatibility,external memory handle types compatibility&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
+ "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetMemoryFdKHR": {
+ "(VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
+ "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetFdInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
+ "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
+ }
+ ]
+ },
+ "VkMemoryGetFdInfoKHR": {
+ "(VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created."
+ },
+ {
+ "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
+ },
+ {
+ "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetMemoryFdPropertiesKHR": {
+ "(VK_KHR_external_memory_fd)": [
+ {
+ "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
+ "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
+ },
+ {
+ "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>."
+ },
+ {
+ "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
+ "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryFdPropertiesKHR</code> structure"
+ }
+ ]
+ },
+ "VkImportMemoryHostPointerInfoEXT": {
+ "(VK_EXT_external_memory_host)": [
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
+ "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryPropertiesKHR\">VkExternalMemoryPropertiesKHR</a>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
+ "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
+ "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
+ "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
+ "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "vkGetMemoryHostPointerPropertiesEXT": {
+ "(VK_EXT_external_memory_host)": [
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
+ "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
+ "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
+ "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
+ "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryHostPointerPropertiesEXT</code> structure"
+ }
+ ]
+ },
+ "VkMemoryHostPointerPropertiesEXT": {
+ "(VK_EXT_external_memory_host)": [
+ {
+ "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "VkImportAndroidHardwareBufferInfoANDROID": {
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
+ "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
+ "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with format and usage compatible with Vulkan as described by <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a>."
+ },
+ {
+ "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
+ },
+ {
+ "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>AHardwareBuffer</code> value"
+ }
+ ]
+ },
+ "vkGetMemoryAndroidHardwareBufferANDROID": {
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
+ "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetAndroidHardwareBufferInfoANDROID</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
+ "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to a <code>AHardwareBuffer</code> value"
+ }
+ ]
+ },
+ "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
+ "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfoKHR\">VkExportMemoryAllocateInfoKHR</a>::<code>handleTypes</code> when <code>memory</code> was created."
+ },
+ {
+ "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
+ "text": " If the <code>pNext</code> chain of the <code>VkMemoryAllocateInfo</code> used to allocate <code>memory</code> included a <code>VkMemoryDedicatedAllocateInfo</code> with non-NULL <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>."
+ }
+ ]
+ },
+ "vkGetAndroidHardwareBufferPropertiesANDROID": {
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* usage flags."
+ },
+ {
+ "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
+ "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAndroidHardwareBufferPropertiesANDROID</code> structure"
+ }
+ ]
+ },
+ "VkAndroidHardwareBufferFormatPropertiesANDROID": {
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
+ }
+ ]
+ },
+ "VkExportMemoryAllocateInfoNV": {
+ "(VK_NV_external_memory)": [
+ {
+ "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+ }
+ ]
+ },
+ "VkExportMemoryWin32HandleInfoNV": {
+ "(VK_NV_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
+ "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
+ }
+ ]
+ },
+ "VkImportMemoryWin32HandleInfoNV": {
+ "(VK_NV_external_memory_win32)": [
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
+ "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>."
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+ }
+ ]
+ },
+ "vkGetMemoryWin32HandleNV": {
+ "(VK_NV_external_memory_win32)": [
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
+ "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkMemoryAllocateFlagsInfo": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
+ "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask."
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
+ "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
+ }
+ ]
+ },
+ "vkFreeMemory": {
+ "core": [
+ {
+ "vuid": "VUID-vkFreeMemory-memory-00677",
+ "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkFreeMemory-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFreeMemory-memory-parameter",
+ "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkFreeMemory-memory-parent",
+ "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkMapMemory": {
+ "core": [
+ {
+ "vuid": "VUID-vkMapMemory-memory-00678",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently mapped"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-offset-00679",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-size-00680",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-size-00681",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-memory-00682",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-ppData-parameter",
+ "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
+ },
+ {
+ "vuid": "VUID-vkMapMemory-memory-parent",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ],
+ "(VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkMapMemory-memory-00683",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances."
+ }
+ ]
+ },
+ "vkFlushMappedMemoryRanges": {
+ "core": [
+ {
+ "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
+ "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
+ },
+ {
+ "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
+ "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkInvalidateMappedMemoryRanges": {
+ "core": [
+ {
+ "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
+ "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
+ },
+ {
+ "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
+ "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkMappedMemoryRange": {
+ "core": [
+ {
+ "vuid": "VUID-VkMappedMemoryRange-memory-00684",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently mapped"
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-size-00685",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-size-00686",
+ "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-size-01389",
+ "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object."
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-offset-00687",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-size-01390",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>."
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ }
+ ]
+ },
+ "vkUnmapMemory": {
+ "core": [
+ {
+ "vuid": "VUID-vkUnmapMemory-memory-00689",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently mapped"
+ },
+ {
+ "vuid": "VUID-vkUnmapMemory-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUnmapMemory-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUnmapMemory-memory-parent",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetDeviceMemoryCommitment": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
+ "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetDeviceGroupPeerMemoryFeatures": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
+ "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
+ "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
+ "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
+ "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal remoteDeviceIndex"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
+ "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-requiredbitmask",
+ "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateBuffer-flags-00911",
+ "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
+ },
+ {
+ "vuid": "VUID-vkCreateBuffer-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
+ "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBuffer</code> handle"
+ }
+ ]
+ },
+ "VkBufferCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkBufferCreateInfo-size-00912",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-flags-00915",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseBinding,sparse bindings&amp;gt;&amp;gt; feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-flags-00916",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidencyBuffer,sparse buffer residency&amp;gt;&amp;gt; feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-flags-00917",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidencyAliased,sparse aliased residency&amp;gt;&amp;gt; feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-flags-00918",
+ "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-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=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a> or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
+ "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.pname</code>:compatibleHandleTypes, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo</code>\\-&amp;gt;<code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkBufferCreateInfo-flags-01887",
+ "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferCreateInfo-None-01888",
+ "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set"
+ }
+ ],
+ "(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
+ }
+ ]
+ },
+ "VkDedicatedAllocationBufferCreateInfoNV": {
+ "(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
+ }
+ ]
+ },
+ "VkExternalMemoryBufferCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+ }
+ ]
+ },
+ "vkDestroyBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyBuffer-buffer-00922",
+ "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyBuffer-buffer-00923",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyBuffer-buffer-00924",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyBuffer-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
+ "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyBuffer-buffer-parent",
+ "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateBufferView": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateBufferView-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferViewCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateBufferView-pView-parameter",
+ "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBufferView</code> handle"
+ }
+ ]
+ },
+ "VkBufferViewCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
+ "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
+ "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
+ "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> divided by the element size of <code>format</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
+ "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
+ "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
+ "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ }
+ ]
+ },
+ "vkDestroyBufferView": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
+ "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyBufferView-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
+ "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <code>VkBufferView</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
+ "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateImage": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateImage-flags-00939",
+ "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
+ },
+ {
+ "vuid": "VUID-vkCreateImage-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateImage-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateImage-pImage-parameter",
+ "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImage</code> handle"
+ }
+ ]
+ },
+ "VkImageCreateInfo": {
+ "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-format-00940",
+ "text": " The combination of <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> <strong class=\"purple\">must</strong> be supported, as indicated by a <code>VK_SUCCESS</code> return value from <code>vkGetPhysicalDeviceImageFormatProperties</code> invoked with the same values passed to the corresponding parameters."
+ }
+ ],
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-01889",
+ "text": " If the <code>pNext</code> chain doesn’t contain an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, or if <code>format</code> is not VK_FORMAT_UNDEFINED, the combination of <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> <strong class=\"purple\">must</strong> be supported, as indicated by a <code>VK_SUCCESS</code> return value from <code>vkGetPhysicalDeviceImageFormatProperties</code> invoked with the same values passed to the corresponding parameters."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-01892",
+ "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>:"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-01893",
+ "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>:"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-format-00943",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-extent-00944",
+ "text": " <code>extent</code>::<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-extent-00945",
+ "text": " <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-extent-00946",
+ "text": " <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
+ "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
+ "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-00949",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00951",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxImageDimension1D</code>, or <code>VkImageFormatProperties</code>::<code>maxExtent.width</code> (as returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure) - whichever is higher"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00952",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> does not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxImageDimension2D</code>, or <code>VkImageFormatProperties</code>::<code>maxExtent.width</code>/<code>height</code> (as returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure) - whichever is higher"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00953",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxImageDimensionCube</code>, or <code>VkImageFormatProperties</code>::<code>maxExtent.width</code>/<code>height</code> (as returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure) - whichever is higher"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00954",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00955",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent.width</code>, <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxImageDimension3D</code>, or <code>VkImageFormatProperties</code>::<code>maxExtent.width</code>/<code>height</code>/<code>depth</code> (as returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure) - whichever is higher"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00956",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00957",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
+ "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">{lfloor}log<sub>2</sub>(max(<code>extent.width</code>, <code>extent.height</code>, <code>extent.depth</code>)){rfloor} + 1</span>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-extent-00959",
+ "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkImageFormatProperties</code>::<code>maxMipLevels</code> (as returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure)"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-arrayLayers-00960",
+ "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkImageFormatProperties</code>::<code>maxArrayLayers</code> (as returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure)"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00961",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-samples-00962",
+ "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>, and <code>mipLevels</code> <strong class=\"purple\">must</strong> be equal to <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-00963",
+ "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-00964",
+ "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-00965",
+ "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-00966",
+ "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> also contain at least one of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-samples-00967",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-00968",
+ "text": " If the &amp;lt;&amp;lt;features-features-shaderStorageImageMultisample,multisampled storage images&amp;gt;&amp;gt; feature is not enabled, and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-00969",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseBinding,sparse bindings&amp;gt;&amp;gt; feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-01924",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidencyAliased,sparse aliased residency&amp;gt;&amp;gt; feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00970",
+ "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00971",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidencyImage2D,sparse residency for 2D images&amp;gt;&amp;gt; feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00972",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidencyImage3D,sparse residency for 3D images&amp;gt;&amp;gt; feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00973",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidency2Samples,sparse residency for images with 2 samples&amp;gt;&amp;gt; feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00974",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidency4Samples,sparse residency for images with 4 samples&amp;gt;&amp;gt; feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00975",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidency8Samples,sparse residency for images with 8 samples&amp;gt;&amp;gt; feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-00976",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidency16Samples,sparse residency for images with 16 samples&amp;gt;&amp;gt; feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-00987",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-None-01925",
+ "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
+ "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-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=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
+ "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-samples-parameter",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
+ "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
+ "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
+ "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
+ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-00950",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-01890",
+ "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-None-01891",
+ "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-00988",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-00990",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties</code>::<code>compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>"
+ }
+ ],
+ "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-00991",
+ "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties</code>::<code>compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
+ "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-00992",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be one, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be one, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>, and <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-01572",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be a &amp;lt;&amp;lt;appendix-compressedtex-bc,block-compressed image format&amp;gt;&amp;gt;, an &amp;lt;&amp;lt;appendix-compressedtex-etc2, ETC compressed image format&amp;gt;&amp;gt;, or an &amp;lt;&amp;lt;appendix-compressedtex-astc, ASTC compressed image format&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-01573",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-01443",
+ "text": " If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-format-01574",
+ "text": " If the image <code>format</code> is one of those listed in &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion&amp;gt;&amp;gt;:"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-tiling-01575",
+ "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_OPTIMAL</code>, <code>format</code> is a <em>multi-planar</em> format, and <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (as returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>) does not include <code>VK_FORMAT_FEATURE_DISJOINT_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-tiling-01576",
+ "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code>, <code>format</code> is a <em>multi-planar</em> format, and <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (as returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>) does not include <code>VK_FORMAT_FEATURE_DISJOINT_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-format-01577",
+ "text": " If <code>format</code> is not a <em>multi-planar</em> format, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_ALIAS_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>"
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkImageCreateInfo-flags-01533",
+ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> <code>format</code> <strong class=\"purple\">must</strong> be a depth or depth/stencil format"
+ }
+ ]
+ },
+ "VkDedicatedAllocationImageCreateInfoNV": {
+ "(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
+ "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <code>VkImageCreateInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>"
+ }
+ ]
+ },
+ "VkExternalMemoryImageCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+ {
+ "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "VkExternalMemoryImageCreateInfoNV": {
+ "(VK_NV_external_memory)": [
+ {
+ "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
+ "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+ }
+ ]
+ },
+ "VkExternalFormatANDROID": {
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
+ "text": " <code>externalFormat</code> <strong class=\"purple\">must</strong> be <code>0</code> or a value returned in the <code>externalFormat</code> member of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a> by an earlier call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a>"
+ },
+ {
+ "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>"
+ }
+ ]
+ },
+ "VkImageSwapchainCreateInfoKHR": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
+ "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the fields of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> <strong class=\"purple\">must</strong> match the &amp;lt;&amp;lt;swapchain-wsi-image-create-info, implied image creation parameters&amp;gt;&amp;gt; of the swapchain"
+ },
+ {
+ "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
+ "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ }
+ ]
+ },
+ "VkImageFormatListCreateInfoKHR": {
+ "(VK_KHR_image_format_list)": [
+ {
+ "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578",
+ "text": " If <code>viewFormatCount</code> is not <code>0</code>, all of the formats in the <code>pViewFormats</code> array <strong class=\"purple\">must</strong> be compatible with the format specified in the <code>format</code> field of <code>VkImageCreateInfo</code>, as described in the <a href=\"#resources-image-views-compatibility\">compatibility table</a>."
+ },
+ {
+ "vuid": "VUID-VkImageFormatListCreateInfoKHR-flags-01579",
+ "text": " If <code>VkImageCreateInfo</code>::<code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, <code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580",
+ "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>VkImageCreateInfo</code>::<code>format</code> <strong class=\"purple\">must</strong> be in <code>pViewFormats</code>."
+ },
+ {
+ "vuid": "VUID-VkImageFormatListCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkImageFormatListCreateInfoKHR-pViewFormats-parameter",
+ "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>pViewFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewFormatCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values"
+ }
+ ]
+ },
+ "vkGetImageSubresourceLayout": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
+ "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
+ "text": " The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
+ "text": " The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
+ "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSubresource</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
+ "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSubresourceLayout</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
+ "text": " If the <code>format</code> of <code>image</code> is a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt; with two planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
+ "text": " If the <code>format</code> of <code>image</code> is a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt; with three planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ }
+ ],
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
+ "text": " If <code>image</code> was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory."
+ }
+ ]
+ },
+ "VkImageSubresource": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroyImage": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyImage-image-01000",
+ "text": " All submitted commands that refer to <code>image</code>, either directly or via a <code>VkImageView</code>, <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyImage-image-01001",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyImage-image-01002",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyImage-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyImage-image-parameter",
+ "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyImage-image-parent",
+ "text": " If <code>image</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateImageView": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateImageView-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateImageView-pView-parameter",
+ "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageView</code> handle"
+ }
+ ]
+ },
+ "VkImageViewCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01003",
+ "text": " If <code>image</code> was not created with <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
+ "text": " If the &amp;lt;&amp;lt;features-features-imageCubeArray,image cubemap arrays&amp;gt;&amp;gt; feature is not enabled, <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01006",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_LINEAR</code>, <code>format</code> <strong class=\"purple\">must</strong> be format that has at least one supported feature bit present in the value of <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01007",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01008",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_LINEAR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for sampled images, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01009",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_LINEAR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage images, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01010",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_LINEAR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for color attachments, as specified by the <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01011",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_LINEAR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for depth/stencil attachments, as specified by the <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01012",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_OPTIMAL</code>, <code>format</code> <strong class=\"purple\">must</strong> be format that has at least one supported feature bit present in the value of <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01013",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_OPTIMAL</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for sampled images, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code> flag in <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01014",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_OPTIMAL</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage images, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code> flag in <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01015",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_OPTIMAL</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for color attachments, as specified by the <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> flag in <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01016",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TILING_OPTIMAL</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for depth/stencil attachments, as specified by the <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code> flag in <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code> with the same value of <code>format</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
+ "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
+ "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01018",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in &amp;lt;&amp;lt;features-formats-compatibility-classes,Format Compatibility Classes&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01020",
+ "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
+ "text": " <code>subresourceRange</code> and <code>viewType</code> <strong class=\"purple\">must</strong> be compatible with the image, as described in the &amp;lt;&amp;lt;resources-image-views-compatibility,compatibility table&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>"
+ },
+ {
+ "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=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
+ "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
+ "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
+ "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01005",
+ "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> but without <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01482",
+ "text": " If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
+ "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> + <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01484",
+ "text": " If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01485",
+ "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> + <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
+ "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
+ "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01759",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in &amp;lt;&amp;lt;features-formats-compatibility-classes,Format Compatibility Classes&amp;gt;&amp;gt;"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01760",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar&amp;gt;&amp;gt; format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in &amp;lt;&amp;lt;features-formats-compatibility-classes,Format Compatibility Classes&amp;gt;&amp;gt;"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01761",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar&amp;gt;&amp;gt; format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in &amp;lt;&amp;lt;features-formats-compatibility-classes,Format Compatibility Classes&amp;gt;&amp;gt;"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01583",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with, or <strong class=\"purple\">must</strong> be an uncompressed format that is size-compatible with, the <code>format</code> used to create <code>image</code>."
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01584",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, the <code>levelCount</code> and <code>layerCount</code> members of <code>subresourceRange</code> <strong class=\"purple\">must</strong> both be <code>1</code>."
+ }
+ ],
+ "(VK_KHR_image_format_list)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
+ "text": " If a <code>VkImageFormatListCreateInfoKHR</code> structure was included in the <code>pNext</code> chain of the <code>VkImageCreateInfo</code> struct used when creating <code>image</code> and the <code>viewFormatCount</code> field of <code>VkImageFormatListCreateInfoKHR</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <code>VkImageFormatListCreateInfoKHR</code>::<code>pViewFormats</code>."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01586",
+ "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, if the <code>format</code> of the <code>image</code> is a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar&amp;gt;&amp;gt; format, and if <code>subresourceRange.aspectMask</code> is one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <a href=\"#VkFormat\">VkFormat</a> for the plane of the <code>image</code> <code>format</code> indicated by <code>subresourceRange.aspectMask</code>, as defined in &amp;lt;&amp;lt;features-formats-compatible-planes&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01762",
+ "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag,"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01019",
+ "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>"
+ }
+ ],
+ "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkImageViewCreateInfo-image-01896",
+ "text": " If <code>image</code> has an &amp;lt;&amp;lt;memory-external-android-hardware-buffer-external-formats,external format&amp;gt;&amp;gt;:"
+ }
+ ]
+ },
+ "VkImageViewUsageCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkImageViewUsageCreateInfo-usage-01587",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not include any set bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create the image this image view is created from."
+ },
+ {
+ "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "VkImageSubresourceRange": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
+ "text": " If <code>levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
+ "text": " If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
+ "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then it <strong class=\"purple\">must</strong> not include any of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ }
+ ]
+ },
+ "VkComponentMapping": {
+ "core": [
+ {
+ "vuid": "VUID-VkComponentMapping-r-parameter",
+ "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
+ },
+ {
+ "vuid": "VUID-VkComponentMapping-g-parameter",
+ "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
+ },
+ {
+ "vuid": "VUID-VkComponentMapping-b-parameter",
+ "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
+ },
+ {
+ "vuid": "VUID-VkComponentMapping-a-parameter",
+ "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
+ }
+ ]
+ },
+ "vkDestroyImageView": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyImageView-imageView-01026",
+ "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyImageView-imageView-01027",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyImageView-imageView-01028",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyImageView-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyImageView-imageView-parameter",
+ "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyImageView-imageView-parent",
+ "text": " If <code>imageView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetBufferMemoryRequirements": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
+ "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetImageMemoryRequirements": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
+ "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetBufferMemoryRequirements2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
+ "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferMemoryRequirementsInfo2</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
+ "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
+ }
+ ]
+ },
+ "VkBufferMemoryRequirementsInfo2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ }
+ ]
+ },
+ "vkGetImageMemoryRequirements2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
+ "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageMemoryRequirementsInfo2</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
+ "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
+ }
+ ]
+ },
+ "VkImageMemoryRequirementsInfo2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
+ "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
+ "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
+ "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
+ "text": " If <code>image</code> was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ }
+ ]
+ },
+ "VkImagePlaneMemoryRequirementsInfo": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-01592",
+ "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be an aspect that exists in the format; that is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
+ "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
+ }
+ ]
+ },
+ "VkMemoryRequirements2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-VkMemoryRequirements2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
+ },
+ {
+ "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>"
+ }
+ ]
+ },
+ "VkMemoryDedicatedRequirements": {
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
+ }
+ ]
+ },
+ "vkBindBufferMemory": {
+ "core": [
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01029",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01030",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01032",
+ "text": " If <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01033",
+ "text": " If <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code>, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01034",
+ "text": " If <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code>, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-memory-01035",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-size-01037",
+ "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-parent",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-memory-parent",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01444",
+ "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-memory-01508",
+ "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <code>VK_NULL_HANDLE</code>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkBindBufferMemory-None-01898",
+ "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory-None-01899",
+ "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+ }
+ ],
+ "(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01038",
+ "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+ }
+ ],
+ "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-vkBindBufferMemory-buffer-01039",
+ "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+ }
+ ]
+ },
+ "vkBindBufferMemory2": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
+ {
+ "vuid": "VUID-vkBindBufferMemory2-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
+ "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindBufferMemoryInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
+ "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkBindBufferMemoryInfo": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01596",
+ "text": " If <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01597",
+ "text": " If <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code>, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01598",
+ "text": " If <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code>, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-memory-01599",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-size-01601",
+ "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602",
+ "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-memory-01900",
+ "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <code>VK_NULL_HANDLE</code>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603",
+ "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604",
+ "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
+ }
+ ]
+ },
+ "VkBindBufferMemoryDeviceGroupInfo": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
+ "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
+ "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
+ "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
+ }
+ ]
+ },
+ "vkBindImageMemory": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkBindImageMemory-image-01608",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set."
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-vkBindImageMemory-image-01044",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-image-01045",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-memory-01047",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-size-01049",
+ "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-memory-parameter",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-image-parent",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-memory-parent",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-vkBindImageMemory-image-01445",
+ "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-memory-01509",
+ "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <code>VK_NULL_HANDLE</code>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkBindImageMemory-None-01901",
+ "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory-None-01902",
+ "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+ }
+ ],
+ "(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-vkBindImageMemory-image-01050",
+ "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+ }
+ ],
+ "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-vkBindImageMemory-image-01051",
+ "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+ }
+ ]
+ },
+ "vkBindImageMemory2": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
+ {
+ "vuid": "VUID-vkBindImageMemory2-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
+ "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindImageMemoryInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
+ "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkBindImageMemoryInfo": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-01609",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-01610",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-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=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
+ "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
+ "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
+ "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
+ "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
+ "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
+ "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set."
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
+ "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>’s <code>pNext</code> chain"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
+ "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>’s <code>pNext</code> chain"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
+ "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>’s <code>pNext</code> chain"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-01622",
+ "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-memory-01903",
+ "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <code>VK_NULL_HANDLE</code>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-01623",
+ "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-01624",
+ "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
+ "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
+ "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
+ "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
+ "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
+ "text": " If the <code>pNext</code> chain does not include an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ }
+ ]
+ },
+ "VkBindImageMemoryDeviceGroupInfo": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
+ "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero."
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
+ "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
+ "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices."
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
+ "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
+ "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap."
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
+ "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
+ "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
+ "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> + <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
+ "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code><br> <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
+ "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
+ "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <code>VkRect2D</code> structures"
+ }
+ ]
+ },
+ "VkBindImageMemorySwapchainInfoKHR": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
+ "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ }
+ ]
+ },
+ "VkBindImagePlaneMemoryInfo": {
+ "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-01642",
+ "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid plane aspect for the image format (that is, <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> for “<code>_2PLANE</code>” formats and <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> for “<code>_3PLANE</code>” formats)"
+ },
+ {
+ "vuid": "VUID-VkBindImagePlaneMemoryInfo-None-01643",
+ "text": " A single call to <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> <strong class=\"purple\">must</strong> bind all or none of the planes of an image (i.e. bindings to all planes of an image <strong class=\"purple\">must</strong> be made in a single <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> call), as separate bindings"
+ },
+ {
+ "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
+ "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
+ }
+ ]
+ },
+ "vkCreateSampler": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateSampler-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSampler-pSampler-parameter",
+ "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSampler</code> handle"
+ }
+ ]
+ },
+ "VkSamplerCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
+ "text": " The absolute value of <code>mipLodBias</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerLodBias</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
+ "text": " If the &amp;lt;&amp;lt;features-features-samplerAnisotropy,anisotropic sampling&amp;gt;&amp;gt; feature is not enabled, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
+ "text": " If <code>anisotropyEnable</code> is <code>VK_TRUE</code>, <code>maxAnisotropy</code> <strong class=\"purple\">must</strong> be between <code>1.0</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAnisotropy</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
+ "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
+ "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
+ "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
+ "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <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-unnormalizedCoordinates-01076",
+ "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
+ "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
+ "text": " If any of <code>addressModeU</code>, <code>addressModeV</code> or <code>addressModeW</code> are <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, <code>borderColor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBorderColor\">VkBorderColor</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
+ "text": " If the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
+ "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-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=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
+ "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
+ "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
+ "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
+ "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
+ "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
+ "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
+ "text": " If &amp;lt;&amp;lt;samplers-YCbCr-conversion,sampler Y’C<sub>B</sub>C<sub>R</sub> conversion&amp;gt;&amp;gt; is enabled and <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code> is not set for the format, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler Y’C<sub>B</sub>C<sub>R</sub> conversion’s <code>chromaFilter</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
+ "text": " If &amp;lt;&amp;lt;samplers-YCbCr-conversion,sampler Y’C<sub>B</sub>C<sub>R</sub> conversion&amp;gt;&amp;gt; is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_sampler_filter_minmax)": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-None-01647",
+ "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code> if &amp;lt;&amp;lt;samplers-YCbCr-conversion,sampler Y’C<sub>B</sub>C<sub>R</sub> conversion&amp;gt;&amp;gt; is enabled"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
+ "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_IMG</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ }
+ ],
+ "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
+ "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_IMG</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
+ }
+ ],
+ "(VK_EXT_sampler_filter_minmax)": [
+ {
+ "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
+ "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
+ }
+ ]
+ },
+ "VkSamplerReductionModeCreateInfoEXT": {
+ "(VK_EXT_sampler_filter_minmax)": [
+ {
+ "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter",
+ "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionModeEXT\">VkSamplerReductionModeEXT</a> value"
+ }
+ ]
+ },
+ "vkDestroySampler": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroySampler-sampler-01082",
+ "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroySampler-sampler-01083",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroySampler-sampler-01084",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroySampler-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySampler-sampler-parameter",
+ "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroySampler-sampler-parent",
+ "text": " If <code>sampler</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkSamplerYcbcrConversionInfo": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
+ "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
+ }
+ ]
+ },
+ "vkCreateSamplerYcbcrConversion": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
+ "text": " The &amp;lt;&amp;lt;features-features-sampler-YCbCr-conversion, sampler Y’C<sub>B</sub>C<sub>R</sub> conversion feature&amp;gt;&amp;gt; <strong class=\"purple\">must</strong> be enabled"
+ },
+ {
+ "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerYcbcrConversionCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
+ "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSamplerYcbcrConversion</code> handle"
+ }
+ ]
+ },
+ "VkSamplerYcbcrConversionCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
+ "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>, otherwise it <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
+ "text": " If the format does not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
+ "text": " If the format does not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01653",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-None-01654",
+ "text": " If the format has a <code>_422</code> or <code>_420</code> suffix:"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
+ "text": " If <code>ycbcrModel</code> is not <code>VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY</code>, then <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> correspond to channels of the <code>format</code>; that is, <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> not be <code>VK_COMPONENT_SWIZZLE_ZERO</code> or <code>VK_COMPONENT_SWIZZLE_ONE</code>, and <strong class=\"purple\">must</strong> not correspond to a channel which contains zero or one as a consequence of &amp;lt;&amp;lt;textures-conversion-to-rgba,conversion to RGBA&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
+ "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code>, <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be FALSE"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
+ "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
+ "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
+ "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
+ "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
+ "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
+ "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
+ },
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
+ "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
+ }
+ ]
+ },
+ "vkDestroySamplerYcbcrConversion": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
+ "text": " If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
+ "text": " If <code>ycbcrConversion</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateDescriptorSetLayout": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
+ "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayout</code> handle"
+ }
+ ]
+ },
+ "VkDescriptorSetLayoutCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
+ "text": " The <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>binding</code> members of the elements of the <code>pBindings</code> array <strong class=\"purple\">must</strong> each have different values."
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT\">VkDescriptorSetLayoutBindingFlagsCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
+ "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkDescriptorSetLayoutBinding</code> structures"
+ }
+ ],
+ "(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
+ "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
+ "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then the total number of elements of all bindings <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>::<code>maxPushDescriptors</code>"
+ }
+ ],
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
+ "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
+ "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
+ }
+ ]
+ },
+ "VkDescriptorSetLayoutBinding": {
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>descriptorCount</code> is not <code>0</code> and <code>pImmutableSamplers</code> is not <code>NULL</code>, <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkSampler</code> handles"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
+ "text": " If <code>descriptorCount</code> is not <code>0</code>, <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> and <code>descriptorCount</code> is not <code>0</code>, then <code>stageFlags</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
+ "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
+ }
+ ]
+ },
+ "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT": {
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002",
+ "text": " If <code>bindingCount</code> is not zero, <code>bindingCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>bindingCount</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004",
+ "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, then all other elements of <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>pBindings</code> <strong class=\"purple\">must</strong> have a smaller value of <code>binding</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011",
+ "text": " All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014",
+ "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015",
+ "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, that element’s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-parameter",
+ "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a> values"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-requiredbitmask",
+ "text": " Each element of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ],
+ "(VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003",
+ "text": " If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
+ }
+ ]
+ },
+ "vkGetDescriptorSetLayoutSupport": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
+ {
+ "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
+ "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayoutSupport</code> structure"
+ }
+ ]
+ },
+ "VkDescriptorSetLayoutSupport": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT\">VkDescriptorSetVariableDescriptorCountLayoutSupportEXT</a>"
+ }
+ ]
+ },
+ "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT": {
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupportEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT</code>"
+ }
+ ]
+ },
+ "vkDestroyDescriptorSetLayout": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
+ "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
+ "text": " If <code>descriptorSetLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreatePipelineLayout": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineLayoutCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
+ "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineLayout</code> handle"
+ }
+ ]
+ },
+ "VkPipelineLayoutCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
+ "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
+ "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
+ "text": " If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <code>VkDescriptorSetLayout</code> handles"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
+ "text": " If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <code>VkPushConstantRange</code> structures"
+ }
+ ],
+ "!(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</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>maxPerStageDescriptorSamplers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_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>maxPerStageDescriptorUniformBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
+ "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>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</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>maxPerStageDescriptorInputAttachments</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</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>maxDescriptorSetSamplers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stagess and and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</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>maxDescriptorSetUniformBuffersDynamic</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</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>maxDescriptorSetStorageBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</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>maxDescriptorSetStorageBuffersDynamic</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
+ "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 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>maxDescriptorSetSampledImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
+ "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 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>maxDescriptorSetStorageImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
+ "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_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</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>maxPerStageDescriptorSamplers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_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>maxPerStageDescriptorUniformBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</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_EXT</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_EXT</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>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</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>maxPerStageDescriptorInputAttachments</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
+ "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
+ "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
+ "text": " The total number of descriptors 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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
+ "text": " The total number of descriptors 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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
+ "text": " The total number of descriptors 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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
+ "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</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>maxDescriptorSetSamplers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stagess and and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</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>maxDescriptorSetUniformBuffersDynamic</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</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>maxDescriptorSetStorageBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</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>maxDescriptorSetStorageBuffersDynamic</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</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 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>maxDescriptorSetSampledImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</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 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>maxDescriptorSetStorageImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
+ "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <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>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stagess and and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
+ "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
+ "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 across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
+ "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 across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
+ "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>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>"
+ }
+ ],
+ "(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
+ "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain more than one descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set"
+ }
+ ]
+ },
+ "VkPushConstantRange": {
+ "core": [
+ {
+ "vuid": "VUID-VkPushConstantRange-offset-00294",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
+ },
+ {
+ "vuid": "VUID-VkPushConstantRange-offset-00295",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-VkPushConstantRange-size-00296",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPushConstantRange-size-00297",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-VkPushConstantRange-size-00298",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>"
+ },
+ {
+ "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
+ "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
+ "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroyPipelineLayout": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
+ "text": " If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
+ "text": " If <code>pipelineLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCreateDescriptorPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorPoolCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
+ "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorPool</code> handle"
+ }
+ ]
+ },
+ "VkDescriptorPoolCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
+ "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
+ "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <code>VkDescriptorPoolSize</code> structures"
+ },
+ {
+ "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
+ "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkDescriptorPoolSize": {
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
+ "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
+ }
+ ]
+ },
+ "vkDestroyDescriptorPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
+ "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
+ "text": " If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
+ "text": " If <code>descriptorPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkAllocateDescriptorSets": {
+ "core": [
+ {
+ "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
+ "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetAllocateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
+ "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::descriptorSetCount <code>VkDescriptorSet</code> handles"
+ }
+ ]
+ },
+ "VkDescriptorSetAllocateInfo": {
+ "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
+ "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> not be greater than the number of sets that are currently available for allocation in <code>descriptorPool</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
+ }
+ ],
+ "(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
+ "text": " Each element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set"
+ }
+ ],
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
+ "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT\">VkDescriptorSetVariableDescriptorCountAllocateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
+ "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSetLayout</code> handles"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
+ "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
+ "text": " Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT": {
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045",
+ "text": " If <code>descriptorSetCount</code> is not zero, <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>descriptorSetCount</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046",
+ "text": " If <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>pSetLayouts</code>[i] has a variable descriptor count binding, then <code>pDescriptorCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to the descriptor count specified for that binding when the descriptor set layout was created."
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter",
+ "text": " If <code>descriptorSetCount</code> is not <code>0</code>, <code>pDescriptorCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>uint32_t</code> values"
+ }
+ ]
+ },
+ "vkFreeDescriptorSets": {
+ "core": [
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
+ "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
+ "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>VkDescriptorSet</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
+ "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT</code> flag"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
+ "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
+ "text": " Each element of <code>pDescriptorSets</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>descriptorPool</code>"
+ }
+ ]
+ },
+ "vkResetDescriptorPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
+ "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkResetDescriptorPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
+ "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkUpdateDescriptorSets": {
+ "!(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
+ "text": " The <code>dstSet</code> member of each element of <code>pDescriptorWrites</code> or <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the &amp;lt;&amp;lt;commandbuffers-lifecycle, pending state&amp;gt;&amp;gt;."
+ }
+ ],
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
+ "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the &amp;lt;&amp;lt;commandbuffers-lifecycle,pending state&amp;gt;&amp;gt;."
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
+ "text": " If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
+ "text": " If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <code>VkCopyDescriptorSet</code> structures"
+ }
+ ]
+ },
+ "VkWriteDescriptorSet": {
+ "core": [
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
+ "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum value of <code>binding</code> of all <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures specified when <code>dstSet</code>’s descriptor set layout was created"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
+ "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
+ "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <code>descriptorType</code> and <code>stageFlags</code>."
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
+ "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> all either use immutable samplers or <strong class=\"purple\">must</strong> all not use immutable samplers."
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
+ "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
+ "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
+ "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by &amp;lt;&amp;lt;descriptorsets-updates-consecutive&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00323",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkBufferView</code> handles"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorBufferInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was not allocated with a layout that included immutable samplers for <code>dstBinding</code> with <code>descriptorType</code>, the <code>sampler</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> object"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00326",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> and <code>imageLayout</code> members of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> and <a href=\"#VkImageLayout\">VkImageLayout</a>, respectively"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, for each descriptor that will be accessed via load or store operations the <code>imageLayout</code> member for corresponding elements of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, and the <code>buffer</code> member of any element of <code>pBufferInfo</code> is the handle of a non-sparse buffer, then that buffer <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxUniformBufferRange</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxStorageBufferRange</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> or <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 been created with the identity swizzle"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
+ "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 been created with <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
+ "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_STORAGE_BIT</code> set"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
+ "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
+ "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-commonparent",
+ "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
+ "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a>."
+ }
+ ]
+ },
+ "VkDescriptorBufferInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
+ "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
+ "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code> minus <code>offset</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ }
+ ]
+ },
+ "VkDescriptorImageInfo": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
+ "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time this descriptor is accessed"
+ },
+ {
+ "vuid": "VUID-VkDescriptorImageInfo-commonparent",
+ "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkDescriptorImageInfo-sampler-01563",
+ "text": " If <code>sampler</code> is used and enables &amp;lt;&amp;lt;samplers-YCbCr-conversion,sampler Y’C<sub>B</sub>C<sub>R</sub> conversion&amp;gt;&amp;gt;:"
+ },
+ {
+ "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
+ "text": " If <code>sampler</code> is used and does not enable &amp;lt;&amp;lt;samplers-YCbCr-conversion, sampler Y’C<sub>B</sub>C<sub>R</sub> conversion&amp;gt;&amp;gt; and the <a href=\"#VkFormat\">VkFormat</a> of the image is a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt;, the image <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, and the <code>aspectMask</code> of the <code>imageView</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or (for three-plane formats only) <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ }
+ ]
+ },
+ "VkCopyDescriptorSet": {
+ "core": [
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
+ "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
+ "text": " The sum of <code>srcArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>srcBinding</code>, and all applicable consecutive bindings, as described by &amp;lt;&amp;lt;descriptorsets-updates-consecutive&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
+ "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
+ "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by &amp;lt;&amp;lt;descriptorsets-updates-consecutive&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
+ "text": " If <code>srcSet</code> is equal to <code>dstSet</code>, then the source and destination ranges of descriptors <strong class=\"purple\">must</strong> not overlap, where the ranges <strong class=\"purple\">may</strong> include array elements from consecutive bindings as described by &amp;lt;&amp;lt;descriptorsets-updates-consecutive&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
+ "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
+ "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-commonparent",
+ "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
+ "text": " If <code>srcSet</code>’s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>’s layout <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
+ "text": " If <code>srcSet</code>’s layout was created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>’s layout <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
+ "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
+ },
+ {
+ "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
+ "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
+ }
+ ]
+ },
+ "vkCreateDescriptorUpdateTemplate": {
+ "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
+ {
+ "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorUpdateTemplateCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
+ "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorUpdateTemplate</code> handle"
+ }
+ ]
+ },
+ "VkDescriptorUpdateTemplateCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
+ "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
+ "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <code>VkDescriptorUpdateTemplateEntry</code> structures"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
+ "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter",
+ "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
+ "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
+ "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
+ "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
+ "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
+ "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>"
+ }
+ ]
+ },
+ "VkDescriptorUpdateTemplateEntry": {
+ "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
+ "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors."
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
+ "text": " <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by &amp;lt;&amp;lt;descriptorsets-updates-consecutive&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
+ "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
+ }
+ ]
+ },
+ "vkDestroyDescriptorUpdateTemplate": {
+ "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
+ {
+ "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
+ "text": " If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
+ "text": " If <code>descriptorUpdateTemplate</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkUpdateDescriptorSetWithTemplate": {
+ "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
+ {
+ "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
+ "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
+ "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
+ "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
+ "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdBindDescriptorSets": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
+ "text": " Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> that matches (is the same as, or identically defined as) the <code>VkDescriptorSetLayout</code> at set <em>n</em> in <code>layout</code>, where <em>n</em> is the sum of <code>firstSet</code> and the index into <code>pDescriptorSets</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
+ "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
+ "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-00362",
+ "text": " Each element of <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> satisfy the required alignment for the corresponding descriptor binding’s descriptor type"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
+ "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSet</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
+ "text": " If <code>dynamicOffsetCount</code> is not <code>0</code>, <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicOffsetCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
+ "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdPushDescriptorSetKHR": {
+ "(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
+ "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
+ "text": " <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
+ "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
+ "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdPushDescriptorSetWithTemplateKHR": {
+ "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
+ "text": " The pipelineBindPoint specified during the creation of the descriptor update template <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
+ "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
+ "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdPushConstants": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdPushConstants-offset-01795",
+ "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each shader stage in <code>stageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>layout</code> that includes that byte and that stage"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-offset-01796",
+ "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each push constant range that overlaps that byte, <code>stageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range’s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>stageFlags</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-offset-00368",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-size-00369",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-offset-00370",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-size-00371",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-layout-parameter",
+ "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
+ "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
+ "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
+ "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-size-arraylength",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdPushConstants-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCreateQueryPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkCreateQueryPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkQueryPoolCreateInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
+ "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueryPool</code> handle"
+ }
+ ]
+ },
+ "VkQueryPoolCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
+ "text": " If the &amp;lt;&amp;lt;features-features-pipelineStatisticsQuery,pipeline statistics queries&amp;gt;&amp;gt; feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>"
+ },
+ {
+ "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
+ "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
+ "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
+ }
+ ]
+ },
+ "vkDestroyQueryPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
+ "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyQueryPool-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
+ "text": " If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
+ "text": " If <code>queryPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdResetQueryPool": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
+ "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
+ "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdBeginQuery": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt; within <code>commandBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-None-00807",
+ "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
+ "text": " If the &amp;lt;&amp;lt;features-features-occlusionQueryPrecise,precise occlusion queries&amp;gt;&amp;gt; feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-query-00802",
+ "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
+ "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
+ "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
+ "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginQuery-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdBeginQuery-query-00808",
+ "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
+ }
+ ]
+ },
+ "vkCmdEndQuery": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdEndQuery-None-01923",
+ "text": " All queries used by the command <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;queries-operation-active,active&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdEndQuery-query-00810",
+ "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdEndQuery-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdEndQuery-query-00812",
+ "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
+ }
+ ]
+ },
+ "vkGetQueryPoolResults": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
+ "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-flags-00814",
+ "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
+ "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
+ "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
+ "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of each query, as described &amp;lt;&amp;lt;queries-operation-memorylayout,here&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
+ "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
+ "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
+ "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdCopyQueryPoolResults": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
+ "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
+ "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
+ "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
+ "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have enough storage, from <code>dstOffset</code>, to contain the result of each query, as described &amp;lt;&amp;lt;queries-operation-memorylayout,here&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
+ "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
+ "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdWriteTimestamp": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
+ "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
+ "text": " The command pool’s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
+ "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
+ "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
+ "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
+ "text": " If <code>vkCmdWriteTimestamp</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
+ }
+ ]
+ },
+ "vkCmdClearColorImage": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkCmdClearColorImage-image-00001",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-vkCmdClearColorImage-image-00002",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-image-00003",
+ "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
+ "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
+ "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> + <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
+ "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
+ "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> + <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-image-00007",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
+ "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearColorValue</code> union"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
+ "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
+ "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkCmdClearColorImage-image-01545",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> not use a format listed in &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion&amp;gt;&amp;gt;"
+ }
+ ],
+ "!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
+ }
+ ]
+ },
+ "vkCmdClearDepthStencilImage": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-image-00008",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
+ "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be either of <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
+ "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
+ "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> + <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
+ "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
+ "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> + <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
+ "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
+ "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearDepthStencilValue</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
+ "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
+ "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
+ }
+ ]
+ },
+ "vkCmdClearAttachments": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdClearAttachments-aspectMask-00015",
+ "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, the <code>colorAttachment</code> member of that element <strong class=\"purple\">must</strong> refer to a valid color attachment in the current subpass"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
+ "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-layerCount-01934",
+ "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
+ "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkClearAttachment</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
+ "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <code>VkClearRect</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
+ "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
+ "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
+ "text": " If the render pass instance this is recorded in uses multiview, then <code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be zero and <code>layerCount</code> <strong class=\"purple\">must</strong> be one."
+ }
+ ]
+ },
+ "VkClearAttachment": {
+ "core": [
+ {
+ "vuid": "VUID-VkClearAttachment-aspectMask-00019",
+ "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkClearAttachment-aspectMask-00020",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkClearAttachment-clearValue-00021",
+ "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union"
+ },
+ {
+ "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkClearAttachment-commandBuffer-01809",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then the attachment to be cleared <strong class=\"purple\">must</strong> not be a protected image."
+ },
+ {
+ "vuid": "VUID-VkClearAttachment-commandBuffer-01810",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then the attachment to be cleared <strong class=\"purple\">must</strong> not be an unprotected image."
+ }
+ ]
+ },
+ "VkClearDepthStencilValue": {
+ "(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
+ "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ],
+ "!(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
+ "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ]
+ },
+ "VkClearValue": {
+ "core": [
+ {
+ "vuid": "VUID-VkClearValue-depthStencil-00023",
+ "text": " <code>depthStencil</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearDepthStencilValue</code> structure"
+ }
+ ]
+ },
+ "vkCmdFillBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-size-00026",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-size-00027",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-size-00028",
+ "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
+ "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
+ }
+ ]
+ },
+ "vkCmdUpdateBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
+ "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
+ "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
+ "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
+ "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
+ "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
+ "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
+ }
+ ]
+ },
+ "vkCmdCopyBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-size-00112",
+ "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
+ "text": " The <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
+ "text": " The <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-size-00115",
+ "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcOffset</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-size-00116",
+ "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
+ "text": " The union of the source regions, and the union of the destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
+ "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
+ "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
+ "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
+ "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
+ "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> <code>VkBufferCopy</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
+ "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
+ }
+ ]
+ },
+ "vkCmdCopyImage": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-pRegions-00122",
+ "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-pRegions-00123",
+ "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
+ "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-00126",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImage-00131",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
+ "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
+ "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
+ "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
+ "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
+ "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
+ "text": " The <code>srcOffset</code> and and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
+ "text": " The <code>dstOffset</code> and and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
+ "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageCopy</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
+ "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-00125",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties\">vkGetPhysicalDeviceFormatProperties</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImage-00130",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties\">vkGetPhysicalDeviceFormatProperties</a>"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-00127",
+ "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImage-00132",
+ "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-00135",
+ "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined &amp;lt;&amp;lt;copies-images-format-compatibility, below&amp;gt;&amp;gt;"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-01546",
+ "text": " If <code>srcImage</code> is non-sparse then the image or <em>disjoint</em> plane to be copied <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImage-01547",
+ "text": " If <code>dstImage</code> is non-sparse then the image or <em>disjoint</em> plane that is the destination of the copy <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
+ "text": " If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is not a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,<em>multi-planar format</em>&amp;gt;&amp;gt;, the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined &amp;lt;&amp;lt;copies-images-format-compatibility, below&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-None-01549",
+ "text": " In a copy to or from a plane of a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar image&amp;gt;&amp;gt;, the <a href=\"#VkFormat\">VkFormat</a> of the image and plane <strong class=\"purple\">must</strong> be compatible according to &amp;lt;&amp;lt;features-formats-compatible-planes,the description of compatible planes&amp;gt;&amp;gt; for the plane being copied"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-aspectMask-01550",
+ "text": " When a copy is performed to or from an image with a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt;, the <code>aspectMask</code> of the <code>srcSubresource</code> and/or <code>dstSubresource</code> that refers to the multi-planar image <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for a <a href=\"#VkFormat\">VkFormat</a> with three planes)"
+ }
+ ],
+ "!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
+ }
+ ]
+ },
+ "VkImageCopy": {
+ "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageCopy-aspectMask-00137",
+ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcOffset-00157",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-extent-00158",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-extent-00159",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-extent-00160",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstOffset-00162",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-extent-00163",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-extent-00164",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-extent-00165",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01551",
+ "text": " If neither the calling command’s <code>srcImage</code> nor the calling command’s <code>dstImage</code> has a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion, multi-planar image format&amp;gt;&amp;gt; then the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01552",
+ "text": " If the calling command’s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,two planes&amp;gt;&amp;gt; then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01553",
+ "text": " If the calling command’s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,three planes&amp;gt;&amp;gt; then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01554",
+ "text": " If the calling command’s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,two planes&amp;gt;&amp;gt; then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01555",
+ "text": " If the calling command’s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,three planes&amp;gt;&amp;gt; then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01556",
+ "text": " If the calling command’s <code>srcImage</code> has a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar image format&amp;gt;&amp;gt; and the <code>dstImage</code> does not have a multi-planar image format, the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01557",
+ "text": " If the calling command’s <code>dstImage</code> has a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar image format&amp;gt;&amp;gt; and the <code>srcImage</code> does not have a multi-planar image format, the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01727",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01728",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01729",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01730",
+ "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01731",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” image format, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01732",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01733",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01734",
+ "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkImageCopy-layerCount-00138",
+ "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-00139",
+ "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01789",
+ "text": " If the calling command’s <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-VkImageCopy-extent-00140",
+ "text": " The number of slices of the <code>extent</code> (for 3D) or layers of the <code>srcSubresource</code> (for non-3D) <strong class=\"purple\">must</strong> match the number of slices of the <code>extent</code> (for 3D) or layers of the <code>dstSubresource</code> (for non-3D)"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-00141",
+ "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of the corresponding subresource <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01790",
+ "text": " If both <code>srcImage</code> and <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_2D</code> then then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01791",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>srcSubresource</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01792",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>dstSubresource</code>."
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-VkImageCopy-aspectMask-00142",
+ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>srcImage</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-aspectMask-00143",
+ "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>dstImage</code>"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcOffset-00144",
+ "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcOffset-00145",
+ "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-00146",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcOffset-00147",
+ "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01785",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01786",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcImage-01787",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-01788",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstOffset-00150",
+ "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstOffset-00151",
+ "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstImage-00152",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstOffset-00153",
+ "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
+ "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ },
+ {
+ "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
+ "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ }
+ ]
+ },
+ "VkImageSubresourceLayers": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
+ "text": " If <code>aspectMask</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not contain either of <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
+ "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
+ "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdCopyBufferToImage": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
+ "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to &amp;lt;&amp;lt;copies-buffers-images-addressing,Buffer and Image Addressing&amp;gt;&amp;gt;, for each element of <code>pRegions</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
+ "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
+ "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
+ "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
+ "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
+ "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
+ "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
+ "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
+ "text": " The <code>imageOffset</code> and and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
+ "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
+ "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
+ "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00175",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties\">vkGetPhysicalDeviceFormatProperties</a>"
+ }
+ ],
+ "!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
+ }
+ ]
+ },
+ "vkCmdCopyImageToBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
+ "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to &amp;lt;&amp;lt;copies-buffers-images-addressing,Buffer and Image Addressing&amp;gt;&amp;gt;, for each element of <code>pRegions</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
+ "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
+ "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
+ "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
+ "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
+ "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
+ "text": " The <code>imageOffset</code> and and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
+ "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
+ "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00185",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties\">vkGetPhysicalDeviceFormatProperties</a>"
+ }
+ ],
+ "!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
+ }
+ ]
+ },
+ "VkBufferImageCopy": {
+ "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferOffset-00193",
+ "text": " If the calling command’s <code>VkImage</code> parameter’s format is not a depth/stencil format, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s element size"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageOffset-00205",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferOffset-00206",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageExtent-00207",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageExtent-00208",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageExtent-00209",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferOffset-01558",
+ "text": " If the calling command’s <code>VkImage</code> parameter’s format is not a depth/stencil format or a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt;, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s element size"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
+ "text": " If the calling command’s <code>VkImage</code> parameter’s format is a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt;, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in &amp;lt;&amp;lt;features-formats-compatible-planes&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01735",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01736",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01737",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01738",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01739",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01740",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-01741",
+ "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-aspectMask-01560",
+ "text": " If the calling command’s <code>VkImage</code> parameter’s format is a &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion,multi-planar format&amp;gt;&amp;gt;, then the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
+ }
+ ],
+ "core": [
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferOffset-00194",
+ "text": " <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
+ "text": " <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>width</code> member of <code>imageExtent</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
+ "text": " <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>height</code> member of <code>imageExtent</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageOffset-00197",
+ "text": " <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource width"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageOffset-00198",
+ "text": " <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource height"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-srcImage-00199",
+ "text": " If the calling command’s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageOffset-00200",
+ "text": " <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-srcImage-00201",
+ "text": " If the calling command’s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-aspectMask-00211",
+ "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>VkImage</code> parameter"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
+ "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213",
+ "text": " If the calling command’s <code>VkImage</code> parameter is of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-None-00214",
+ "text": " When copying to the depth aspect of an image subresource, the data in the source buffer <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
+ },
+ {
+ "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
+ "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ }
+ ]
+ },
+ "vkCmdBlitImage": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
+ "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
+ "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
+ "text": " The union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory with any texel that <strong class=\"purple\">may</strong> be sampled during the blit operation"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00218",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_BLIT_SRC_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
+ "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImage-00223",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> use a format that supports <code>VK_FORMAT_FEATURE_BLIT_DST_BIT</code>, which is indicated by <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for linearly tiled images) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> (for optimally tiled images) - as returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
+ "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00228",
+ "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> both be equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
+ "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a signed integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with a signed integer <a href=\"#VkFormat\">VkFormat</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
+ "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
+ "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a depth/stencil format, the other <strong class=\"purple\">must</strong> have exactly the same format"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
+ "text": " If <code>srcImage</code> was created with a depth/stencil format, <code>filter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-filter-00235",
+ "text": " If <code>filter</code> is <code>VK_FILTER_LINEAR</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
+ "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
+ "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
+ "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
+ "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
+ "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageBlit</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-filter-parameter",
+ "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
+ "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImage-01561",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImage-01562",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in &amp;lt;&amp;lt;features-formats-requiring-sampler-ycbcr-conversion&amp;gt;&amp;gt;"
+ }
+ ],
+ "!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdBlitImage-filter-00236",
+ "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_IMG</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-filter-00237",
+ "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_IMG</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkImageType\">VkImageType</a> of <code>VK_IMAGE_TYPE_3D</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
+ }
+ ]
+ },
+ "VkImageBlit": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageBlit-aspectMask-00238",
+ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-layerCount-00239",
+ "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcImage-00240",
+ "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-aspectMask-00241",
+ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>srcImage</code>"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-aspectMask-00242",
+ "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>dstImage</code>"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcOffset-00243",
+ "text": " <code>srcOffset</code>[0].<code>x</code> and <code>srcOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcOffset-00244",
+ "text": " <code>srcOffset</code>[0].<code>y</code> and <code>srcOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcImage-00245",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcOffset-00246",
+ "text": " <code>srcOffset</code>[0].<code>z</code> and <code>srcOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcImage-00247",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageBlit-dstOffset-00248",
+ "text": " <code>dstOffset</code>[0].<code>x</code> and <code>dstOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-dstOffset-00249",
+ "text": " <code>dstOffset</code>[0].<code>y</code> and <code>dstOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-dstImage-00250",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageBlit-dstOffset-00251",
+ "text": " <code>dstOffset</code>[0].<code>z</code> and <code>dstOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-dstImage-00252",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
+ "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ },
+ {
+ "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
+ "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ }
+ ]
+ },
+ "vkCmdResolveImage": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdResolveImage-pRegions-00253",
+ "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-pRegions-00254",
+ "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
+ "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
+ "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to any valid sample count value other than <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
+ "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImage-00264",
+ "text": " If <code>dstImage</code> was created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>format</code> that supports being a color attachment, as specified by the <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImage-00265",
+ "text": " If <code>dstImage</code> was created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_OPTIMAL</code>, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>format</code> that supports being a color attachment, as specified by the <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> flag in <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
+ "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
+ "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
+ "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
+ "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
+ "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
+ "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
+ "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
+ "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageResolve</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
+ "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-commonparent",
+ "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
+ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
+ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
+ },
+ {
+ "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
+ }
+ ]
+ },
+ "VkImageResolve": {
+ "core": [
+ {
+ "vuid": "VUID-VkImageResolve-aspectMask-00266",
+ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> only contain <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-layerCount-00267",
+ "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcImage-00268",
+ "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcOffset-00269",
+ "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcOffset-00270",
+ "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcImage-00271",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcOffset-00272",
+ "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcImage-00273",
+ "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageResolve-dstOffset-00274",
+ "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-dstOffset-00275",
+ "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-dstImage-00276",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageResolve-dstOffset-00277",
+ "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-dstImage-00278",
+ "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
+ },
+ {
+ "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
+ "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ },
+ {
+ "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
+ "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
+ }
+ ]
+ },
+ "vkCmdWriteBufferMarkerAMD": {
+ "(VK_AMD_buffer_marker)": [
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>4</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
+ "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
+ "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
+ "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
+ "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkPipelineInputAssemblyStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
+ "text": " If <code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
+ "text": " If the &amp;lt;&amp;lt;features-features-geometryShader,geometry shaders&amp;gt;&amp;gt; feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be any of <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
+ "text": " If the &amp;lt;&amp;lt;features-features-tessellationShader,tessellation shaders&amp;gt;&amp;gt; feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
+ "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
+ }
+ ]
+ },
+ "vkCmdBindIndexBuffer": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
+ "text": " The sum of <code>offset</code> and the address of the range of <code>VkDeviceMemory</code> object that is backing <code>buffer</code>, <strong class=\"purple\">must</strong> be a multiple of the type indicated by <code>indexType</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
+ "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdDraw": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdDraw-renderPass-00435",
+ "text": " The current render pass <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-subpass-00436",
+ "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00437",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00438",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00439",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00440",
+ "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00441",
+ "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in &amp;lt;&amp;lt;fxvertex-input&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00442",
+ "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00443",
+ "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00444",
+ "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00445",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00446",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00447",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00448",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00449",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-linearTilingFeatures-00450",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-01499",
+ "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdDraw-linearTilingFeatures-00451",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-None-00452",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-00453",
+ "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDraw-commandBuffer-01850",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-commandBuffer-01851",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDraw-commandBuffer-01852",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-01512",
+ "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
+ }
+ ]
+ },
+ "vkCmdDrawIndexed": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-renderPass-00454",
+ "text": " The current render pass <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-subpass-00455",
+ "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00456",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00457",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00458",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00459",
+ "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00460",
+ "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in &amp;lt;&amp;lt;fxvertex-input&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00461",
+ "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00462",
+ "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
+ "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> + <code>indexCount</code>) + <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with indexSize being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00464",
+ "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00465",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00466",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00467",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00468",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00469",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-linearTilingFeatures-00470",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-01500",
+ "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-linearTilingFeatures-00471",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-None-00472",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-00473",
+ "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01853",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01854",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01855",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513",
+ "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
+ }
+ ]
+ },
+ "vkCmdDrawIndirect": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-buffer-00474",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-buffer-01660",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-offset-00475",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
+ "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-drawCount-00477",
+ "text": " If the <a href=\"#features-features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
+ "text": " If the &amp;lt;&amp;lt;features-features-drawIndirectFirstInstance,drawIndirectFirstInstance&amp;gt;&amp;gt; feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-renderPass-00479",
+ "text": " The current render pass <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-subpass-00480",
+ "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00481",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00482",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00483",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00484",
+ "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00485",
+ "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00486",
+ "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
+ "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
+ "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-drawCount-00489",
+ "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00490",
+ "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00491",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00492",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00493",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00494",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00495",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-linearTilingFeatures-00496",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-01501",
+ "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-linearTilingFeatures-00497",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-None-00498",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-00499",
+ "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01856",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01857",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01858",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514",
+ "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
+ }
+ ]
+ },
+ "VkDrawIndirectCommand": {
+ "core": [
+ {
+ "vuid": "VUID-VkDrawIndirectCommand-None-00500",
+ "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in &amp;lt;&amp;lt;fxvertex-input&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
+ "text": " If the &amp;lt;&amp;lt;features-features-drawIndirectFirstInstance,drawIndirectFirstInstance&amp;gt;&amp;gt; feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdDrawIndirectCountAMD": {
+ "(VK_AMD_draw_indirect_count)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01661",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01662",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663",
+ "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664",
+ "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-offset-00502",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503",
+ "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-stride-00504",
+ "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxDrawCount-00505",
+ "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-firstInstance-00506",
+ "text": " If the &amp;lt;&amp;lt;features-features-drawIndirectFirstInstance,drawIndirectFirstInstance&amp;gt;&amp;gt; feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderPass-00507",
+ "text": " The current render pass <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-subpass-00508",
+ "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00509",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00510",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00511",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00512",
+ "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00513",
+ "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00514",
+ "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00515",
+ "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00516",
+ "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00517",
+ "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00518",
+ "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00519",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00520",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00521",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00522",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00523",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-linearTilingFeatures-00524",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-01502",
+ "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-parameter",
+ "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commonparent",
+ "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxMultiviewInstanceIndex-00525",
+ "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
+ }
+ ],
+ "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01859",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01860",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01861",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ],
+ "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515",
+ "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
+ }
+ ]
+ },
+ "vkCmdDrawIndexedIndirect": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-00526",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-01665",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-00527",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
+ "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00529",
+ "text": " If the <a href=\"#features-features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
+ "text": " If the &amp;lt;&amp;lt;features-features-drawIndirectFirstInstance,drawIndirectFirstInstance&amp;gt;&amp;gt; feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-00531",
+ "text": " The current render pass <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-00532",
+ "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00533",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00534",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00535",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00536",
+ "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00537",
+ "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00538",
+ "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
+ "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
+ "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00541",
+ "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00542",
+ "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00543",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00544",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00545",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00546",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00547",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00548",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-01503",
+ "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00549",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00550",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-00551",
+ "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01862",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01863",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01864",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ],
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516",
+ "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
+ }
+ ]
+ },
+ "VkDrawIndexedIndirectCommand": {
+ "core": [
+ {
+ "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
+ "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in &amp;lt;&amp;lt;fxvertex-input&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
+ "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> + <code>indexCount</code>) + <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
+ },
+ {
+ "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
+ "text": " If the &amp;lt;&amp;lt;features-features-drawIndirectFirstInstance,drawIndirectFirstInstance&amp;gt;&amp;gt; feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdDrawIndexedIndirectCountAMD": {
+ "(VK_AMD_draw_indirect_count)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668",
+ "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669",
+ "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556",
+ "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-stride-00557",
+ "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxDrawCount-00558",
+ "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-firstInstance-00559",
+ "text": " If the <a href=\"#features-features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderPass-00560",
+ "text": " The current render pass <strong class=\"purple\">must</strong> be &amp;lt;&amp;lt;renderpass-compatibility,compatible&amp;gt;&amp;gt; with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-subpass-00561",
+ "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00562",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00563",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00564",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00565",
+ "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00566",
+ "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00567",
+ "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00568",
+ "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00569",
+ "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-drawCount-00570",
+ "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00571",
+ "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00572",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00573",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00574",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00575",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00576",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-linearTilingFeatures-00577",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-01504",
+ "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-parameter",
+ "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commonparent",
+ "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxMultiviewInstanceIndex-00578",
+ "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
+ }
+ ],
+ "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01865",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01866",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01867",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ],
+ "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517",
+ "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
+ }
+ ]
+ },
+ "VkPipelineVertexInputStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
+ "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
+ "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
+ "text": " For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <code>VkVertexInputBindingDescription</code> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
+ "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
+ "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoEXT\">VkPipelineVertexInputDivisorStateCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
+ "text": " If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <code>VkVertexInputBindingDescription</code> structures"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
+ "text": " If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <code>VkVertexInputAttributeDescription</code> structures"
+ }
+ ]
+ },
+ "VkVertexInputBindingDescription": {
+ "core": [
+ {
+ "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
+ "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
+ "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
+ "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value"
+ }
+ ]
+ },
+ "VkVertexInputAttributeDescription": {
+ "core": [
+ {
+ "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
+ "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
+ "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be allowed as a vertex buffer format, as specified by the <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ }
+ ]
+ },
+ "vkCmdBindVertexBuffers": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
+ "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
+ "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
+ "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
+ "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> flag"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
+ "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
+ "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
+ "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
+ "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
+ "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkPipelineVertexInputDivisorStateCreateInfoEXT": {
+ "(VK_EXT_vertex_attribute_divisor)": [
+ {
+ "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
+ "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <code>VkVertexInputBindingDivisorDescriptionEXT</code> structures"
+ },
+ {
+ "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
+ "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkVertexInputBindingDivisorDescriptionEXT": {
+ "(VK_EXT_vertex_attribute_divisor)": [
+ {
+ "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
+ "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
+ },
+ {
+ "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
+ "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive."
+ },
+ {
+ "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
+ "text": " <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a>::<code>inputRate</code> <strong class=\"purple\">must</strong> be of type <code>VK_VERTEX_INPUT_RATE_INSTANCE</code> for this <code>binding</code>."
+ }
+ ]
+ },
+ "VkPipelineTessellationStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
+ "text": " <code>patchControlPoints</code> <strong class=\"purple\">must</strong> be greater than zero and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineTessellationDomainOriginStateCreateInfo\">VkPipelineTessellationDomainOriginStateCreateInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "VkPipelineTessellationDomainOriginStateCreateInfo": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
+ "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value"
+ }
+ ]
+ },
+ "VkPipelineViewportSwizzleStateCreateInfoNV": {
+ "(VK_NV_viewport_swizzle)": [
+ {
+ "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> match the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkViewportSwizzleNV": {
+ "(VK_NV_viewport_swizzle)": [
+ {
+ "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
+ "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
+ },
+ {
+ "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
+ "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
+ },
+ {
+ "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
+ "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
+ },
+ {
+ "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
+ "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
+ }
+ ]
+ },
+ "VkPipelineViewportWScalingStateCreateInfoNV": {
+ "(VK_NV_clip_space_w_scaling)": [
+ {
+ "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdSetViewportWScalingNV": {
+ "(VK_NV_clip_space_w_scaling)": [
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-None-01322",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
+ "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
+ "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
+ "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkViewportWScalingNV</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkPipelineViewportStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
+ "text": " If the <a href=\"#features-features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
+ "text": " If the <a href=\"#features-features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
+ "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
+ "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-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=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
+ "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ],
+ "(VK_NV_clip_space_w_scaling)": [
+ {
+ "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
+ "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure chained to the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be equal to <code>viewportCount</code>"
+ }
+ ]
+ },
+ "vkCmdSetViewport": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetViewport-None-01221",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
+ "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
+ "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
+ "text": " If the <a href=\"#features-features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
+ "text": " If the <a href=\"#features-features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
+ "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkViewport</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
+ "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkViewport": {
+ "core": [
+ {
+ "vuid": "VUID-VkViewport-width-01770",
+ "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
+ },
+ {
+ "vuid": "VUID-VkViewport-width-01771",
+ "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]"
+ },
+ {
+ "vuid": "VUID-VkViewport-height-01773",
+ "text": " The absolute value of <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[1]"
+ },
+ {
+ "vuid": "VUID-VkViewport-x-01774",
+ "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
+ },
+ {
+ "vuid": "VUID-VkViewport-x-01232",
+ "text": " <span class=\"eq\">(<code>x</code> + <code>width</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
+ },
+ {
+ "vuid": "VUID-VkViewport-y-01775",
+ "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
+ },
+ {
+ "vuid": "VUID-VkViewport-y-01233",
+ "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
+ }
+ ],
+ "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
+ {
+ "vuid": "VUID-VkViewport-height-01772",
+ "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
+ {
+ "vuid": "VUID-VkViewport-y-01776",
+ "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
+ },
+ {
+ "vuid": "VUID-VkViewport-y-01777",
+ "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
+ }
+ ],
+ "(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-VkViewport-minDepth-01234",
+ "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkViewport-maxDepth-01235",
+ "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ],
+ "!(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-VkViewport-minDepth-01234",
+ "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkViewport-maxDepth-01235",
+ "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ]
+ },
+ "VkPipelineRasterizationStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
+ "text": " If the &amp;lt;&amp;lt;features-features-depthClamp,depth clamping&amp;gt;&amp;gt; feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-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=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a> or <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
+ "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
+ "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
+ "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
+ }
+ ],
+ "!(VK_NV_fill_rectangle)": [
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
+ "text": " If the &amp;lt;&amp;lt;features-features-fillModeNonSolid,non-solid fill modes&amp;gt;&amp;gt; feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code>"
+ }
+ ],
+ "(VK_NV_fill_rectangle)": [
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
+ "text": " If the &amp;lt;&amp;lt;features-features-fillModeNonSolid,non-solid fill modes&amp;gt;&amp;gt; feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code> or <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
+ "text": " If the <code><a href=\"#VK_NV_fill_rectangle\">VK_NV_fill_rectangle</a></code> extension is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>"
+ }
+ ]
+ },
+ "VkPipelineMultisampleStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
+ "text": " If the &amp;lt;&amp;lt;features-features-sampleRateShading,sample rate shading&amp;gt;&amp;gt; feature is not enabled, <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
+ "text": " If the &amp;lt;&amp;lt;features-features-alphaToOne,alpha to one&amp;gt;&amp;gt; feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
+ "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-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=\"#VkPipelineCoverageModulationStateCreateInfoNV\">VkPipelineCoverageModulationStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
+ "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
+ "text": " If <code>pSampleMask</code> is not <code>NULL</code>, <code>pSampleMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) <code>VkSampleMask</code> values"
+ }
+ ],
+ "(VK_NV_framebuffer_mixed_samples)": [
+ {
+ "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
+ "text": " If the subpass has any color attachments and <code>rasterizationSamples</code> is greater than the number of color samples, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ }
+ ]
+ },
+ "VkPipelineRasterizationStateRasterizationOrderAMD": {
+ "(VK_AMD_rasterization_order)": [
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
+ "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value"
+ }
+ ]
+ },
+ "VkPipelineSampleLocationsStateCreateInfoEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
+ "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkSampleLocationsInfoEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
+ "text": " <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a bit value that is set in <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>sampleLocationSampleCounts</code>"
+ },
+ {
+ "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
+ "text": " <code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\"><code>sampleLocationsPerPixel</code> {times} <code>sampleLocationGridSize.width</code> {times} <code>sampleLocationGridSize.height</code></span>"
+ },
+ {
+ "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
+ "text": " <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
+ "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <code>VkSampleLocationEXT</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-arraylength",
+ "text": " <code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdSetSampleLocationsEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-None-01528",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
+ "text": " The <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with"
+ },
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
+ "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code> then the current render pass <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the sample locations state pointed to by <code>pSampleLocationsInfo</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
+ "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSampleLocationsInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "vkCmdSetLineWidth": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetLineWidth-None-00787",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
+ "text": " If the <a href=\"#features-features-wideLines\">wide lines</a> feature is not enabled, <code>lineWidth</code> <strong class=\"purple\">must</strong> be <code>1.0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "vkCmdSetDepthBias": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetDepthBias-None-00789",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
+ "text": " If the <a href=\"#features-features-depthBiasClamp\">depth bias clamping</a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
+ "(VK_EXT_conservative_rasterization)": [
+ {
+ "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
+ "text": " <code>extraPrimitiveOverestimationSize</code> <strong class=\"purple\">must</strong> be in the range of <code>0.0</code> to <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>maxExtraPrimitiveOverestimationSize</code> inclusive"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
+ "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value"
+ }
+ ]
+ },
+ "VkPipelineDiscardRectangleStateCreateInfoEXT": {
+ "(VK_EXT_discard_rectangles)": [
+ {
+ "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
+ "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
+ "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value"
+ }
+ ]
+ },
+ "vkCmdSetDiscardRectangleEXT": {
+ "(VK_EXT_discard_rectangles)": [
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-None-00583",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
+ "text": " The sum of <code>firstDiscardRectangle</code> and <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>::<code>maxDiscardRectangles</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
+ "text": " The <code>x</code> and <code>y</code> member of <code>offset</code> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
+ "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
+ "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
+ "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <code>VkRect2D</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
+ "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdSetScissor": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetScissor-None-00590",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
+ "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
+ "text": " The sum of <code>firstScissor</code> and <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
+ "text": " If the <a href=\"#features-features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
+ "text": " If the <a href=\"#features-features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-x-00595",
+ "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-offset-00596",
+ "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-offset-00597",
+ "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
+ "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <code>VkRect2D</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ },
+ {
+ "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
+ "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkPipelineDepthStencilStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
+ "text": " If the &amp;lt;&amp;lt;features-features-depthBounds,depth bounds testing&amp;gt;&amp;gt; feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
+ "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
+ "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
+ },
+ {
+ "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
+ "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
+ }
+ ]
+ },
+ "vkCmdSetDepthBounds": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-None-00599",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ],
+ "(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
+ "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
+ "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ],
+ "!(VK_EXT_depth_range_unrestricted)": [
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
+ "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
+ "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
+ }
+ ]
+ },
+ "VkStencilOpState": {
+ "core": [
+ {
+ "vuid": "VUID-VkStencilOpState-failOp-parameter",
+ "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkStencilOpState-passOp-parameter",
+ "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
+ "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkStencilOpState-compareOp-parameter",
+ "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
+ }
+ ]
+ },
+ "vkCmdSetStencilCompareMask": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetStencilCompareMask-None-00602",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
+ "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
+ "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "vkCmdSetStencilWriteMask": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetStencilWriteMask-None-00603",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
+ "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
+ "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "vkCmdSetStencilReference": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetStencilReference-None-00604",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
+ "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
+ "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "VkPipelineCoverageToColorStateCreateInfoNV": {
+ "(VK_NV_fragment_coverage_to_color)": [
+ {
+ "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
+ "text": " If <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then the render pass subpass indicated by <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> and <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>subpass</code> <strong class=\"purple\">must</strong> have a color attachment at the location selected by <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "VkPipelineCoverageModulationStateCreateInfoNV": {
+ "(VK_NV_framebuffer_mixed_samples)": [
+ {
+ "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
+ "text": " If <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, <code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be equal to the number of rasterization samples divided by the number of color samples in the subpass."
+ },
+ {
+ "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
+ "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableCount-arraylength",
+ "text": " <code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkPipelineColorBlendStateCreateInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
+ "text": " If the &amp;lt;&amp;lt;features-features-independentBlend,independent blending&amp;gt;&amp;gt; feature is not enabled, all elements of <code>pAttachments</code> <strong class=\"purple\">must</strong> be identical"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
+ "text": " If the &amp;lt;&amp;lt;features-features-logicOp,logic operations&amp;gt;&amp;gt; feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
+ "text": " If <code>logicOpEnable</code> is <code>VK_TRUE</code>, <code>logicOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLogicOp\">VkLogicOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineColorBlendAdvancedStateCreateInfoEXT\">VkPipelineColorBlendAdvancedStateCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
+ "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkPipelineColorBlendAttachmentState</code> structures"
+ }
+ ]
+ },
+ "VkPipelineColorBlendAttachmentState": {
+ "core": [
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
+ "text": " If the &amp;lt;&amp;lt;features-features-dualSrcBlend,dual source blending&amp;gt;&amp;gt; feature is not enabled, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
+ "text": " If the &amp;lt;&amp;lt;features-features-dualSrcBlend,dual source blending&amp;gt;&amp;gt; feature is not enabled, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
+ "text": " If the &amp;lt;&amp;lt;features-features-dualSrcBlend,dual source blending&amp;gt;&amp;gt; feature is not enabled, <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
+ "text": " If the &amp;lt;&amp;lt;features-features-dualSrcBlend,dual source blending&amp;gt;&amp;gt; feature is not enabled, <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
+ "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
+ "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
+ "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
+ "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
+ "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
+ "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
+ "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values"
+ }
+ ],
+ "(VK_EXT_blend_operation_advanced)": [
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
+ "text": " If either of <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an &amp;lt;&amp;lt;framebuffer-blend-advanced,advanced blend operation&amp;gt;&amp;gt;, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> equal <code>alphaBlendOp</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
+ "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>colorBlendOp</code> is an &amp;lt;&amp;lt;framebuffer-blend-advanced,advanced blend operation&amp;gt;&amp;gt;, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments."
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
+ "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>alphaBlendOp</code> is an &amp;lt;&amp;lt;framebuffer-blend-advanced,advanced blend operation&amp;gt;&amp;gt;, then <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments."
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
+ "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendAllOperations</code> is <code>VK_FALSE</code>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_OP_ZERO_EXT</code>, <code>VK_BLEND_OP_SRC_EXT</code>, <code>VK_BLEND_OP_DST_EXT</code>, <code>VK_BLEND_OP_SRC_OVER_EXT</code>, <code>VK_BLEND_OP_DST_OVER_EXT</code>, <code>VK_BLEND_OP_SRC_IN_EXT</code>, <code>VK_BLEND_OP_DST_IN_EXT</code>, <code>VK_BLEND_OP_SRC_OUT_EXT</code>, <code>VK_BLEND_OP_DST_OUT_EXT</code>, <code>VK_BLEND_OP_SRC_ATOP_EXT</code>, <code>VK_BLEND_OP_DST_ATOP_EXT</code>, <code>VK_BLEND_OP_XOR_EXT</code>, <code>VK_BLEND_OP_INVERT_EXT</code>, <code>VK_BLEND_OP_INVERT_RGB_EXT</code>, <code>VK_BLEND_OP_LINEARDODGE_EXT</code>, <code>VK_BLEND_OP_LINEARBURN_EXT</code>, <code>VK_BLEND_OP_VIVIDLIGHT_EXT</code>, <code>VK_BLEND_OP_LINEARLIGHT_EXT</code>, <code>VK_BLEND_OP_PINLIGHT_EXT</code>, <code>VK_BLEND_OP_HARDMIX_EXT</code>, <code>VK_BLEND_OP_PLUS_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT</code>, <code>VK_BLEND_OP_PLUS_DARKER_EXT</code>, <code>VK_BLEND_OP_MINUS_EXT</code>, <code>VK_BLEND_OP_MINUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_CONTRAST_EXT</code>, <code>VK_BLEND_OP_INVERT_OVG_EXT</code>, <code>VK_BLEND_OP_RED_EXT</code>, <code>VK_BLEND_OP_GREEN_EXT</code>, or <code>VK_BLEND_OP_BLUE_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
+ "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an &amp;lt;&amp;lt;framebuffer-blend-advanced,advanced blend operation&amp;gt;&amp;gt;, then <a href=\"#VkSubpassDescription\">VkSubpassDescription</a>::<code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::advancedBlendMaxColorAttachments"
+ }
+ ]
+ },
+ "vkCmdSetBlendConstants": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdSetBlendConstants-None-00612",
+ "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled"
+ },
+ {
+ "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+ }
+ ]
+ },
+ "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
+ "(VK_EXT_blend_operation_advanced)": [
+ {
+ "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
+ "text": " If the &amp;lt;&amp;lt;features-limits-advancedBlendNonPremultipliedSrcColor,non-premultiplied source color&amp;gt;&amp;gt; property is not supported, <code>srcPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
+ "text": " If the &amp;lt;&amp;lt;features-limits-advancedBlendNonPremultipliedDstColor,non-premultiplied destination color&amp;gt;&amp;gt; property is not supported, <code>dstPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
+ "text": " If the &amp;lt;&amp;lt;features-limits-advancedBlendCorrelatedOverlap,correlated overlap&amp;gt;&amp;gt; property is not supported, <code>blendOverlap</code> <strong class=\"purple\">must</strong> be <code>VK_BLEND_OVERLAP_UNCORRELATED_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
+ "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value"
+ }
+ ]
+ },
+ "vkCmdDispatch": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
+ "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
+ "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
+ "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00389",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00390",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00391",
+ "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00392",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00393",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00394",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00395",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00396",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00397",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-linearTilingFeatures-00398",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdDispatch-linearTilingFeatures-00399",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-None-00400",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDispatch-commandBuffer-01844",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-commandBuffer-01845",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_POINT_COMPUTE</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatch-commandBuffer-01846",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_POINT_COMPUTE</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ]
+ },
+ "vkCmdDispatchIndirect": {
+ "core": [
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-buffer-00401",
+ "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00402",
+ "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00403",
+ "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00404",
+ "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-buffer-00405",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-offset-00406",
+ "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
+ "text": " The sum of <code>offset</code> and the size of <code>VkDispatchIndirectCommand</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00408",
+ "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in &amp;lt;&amp;lt;descriptorsets-compatibility&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00409",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00410",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00411",
+ "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00412",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00413",
+ "text": " If the &amp;lt;&amp;lt;features-features-robustBufferAccess,robust buffer access&amp;gt;&amp;gt; feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-linearTilingFeatures-00414",
+ "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
+ "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ],
+ "(VK_IMG_filter_cubic)": [
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-linearTilingFeatures-00415",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-None-00416",
+ "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
+ }
+ ],
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01847",
+ "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01848",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_POINT_COMPUTE</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01849",
+ "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_POINT_COMPUTE</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
+ }
+ ]
+ },
+ "VkDispatchIndirectCommand": {
+ "core": [
+ {
+ "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
+ "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
+ },
+ {
+ "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
+ "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
+ },
+ {
+ "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
+ "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
+ }
+ ]
+ },
+ "vkCmdDispatchBase": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkCmdDispatchBase-None-00420",
+ "text": " All valid usage rules from <a href=\"#vkCmdDispatch\">vkCmdDispatch</a> apply"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
+ "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
+ "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
+ "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
+ "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] minus <code>baseGroupX</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
+ "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] minus <code>baseGroupY</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
+ "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] minus <code>baseGroupZ</code>"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
+ "text": " If any of <code>baseGroupX</code>, <code>baseGroupY</code>, or <code>baseGroupZ</code> are not zero, then the bound compute pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdDispatchBase-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter",
+ "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsFeaturesNVX</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter",
+ "text": " <code>pLimits</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsLimitsNVX</code> structure"
+ }
+ ]
+ },
+ "VkDeviceGeneratedCommandsFeaturesNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "VkDeviceGeneratedCommandsLimitsNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkCreateObjectTableNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkCreateObjectTableNVX-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkObjectTableCreateInfoNVX</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateObjectTableNVX-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateObjectTableNVX-pObjectTable-parameter",
+ "text": " <code>pObjectTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkObjectTableNVX</code> handle"
+ }
+ ]
+ },
+ "VkObjectTableCreateInfoNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-computeBindingPointSupport-01355",
+ "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-01356",
+ "text": " Any value within <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> not exceed <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxObjectEntryCounts</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-maxUniformBuffersPerDescriptor-01357",
+ "text": " <code>maxUniformBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageBuffersPerDescriptor-01358",
+ "text": " <code>maxStorageBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageImagesPerDescriptor-01359",
+ "text": " <code>maxStorageImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-maxSampledImagesPerDescriptor-01360",
+ "text": " <code>maxSampledImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryTypes-parameter",
+ "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter",
+ "text": " <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-parameter",
+ "text": " <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid combinations of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-requiredbitmask",
+ "text": " Each element of <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength",
+ "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroyObjectTableNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01361",
+ "text": " All submitted commands that refer to <code>objectTable</code> <strong class=\"purple\">must</strong> have completed execution."
+ },
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01362",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here."
+ },
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01363",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
+ },
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parameter",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parent",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkRegisterObjectsNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-pObjectTableEntry-01364",
+ "text": " The contents of <code>pObjectTableEntry</code> <strong class=\"purple\">must</strong> yield plausible bindings supported by the device."
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01365",
+ "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> not be a registered resource already."
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01366",
+ "text": " Any value inside <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be below the appropriate <code>VkObjectTableCreateInfoNVX</code>::<code>pObjectEntryCounts</code> limits provided at <code>objectTable</code> creation time."
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parameter",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter",
+ "text": " <code>ppObjectTableEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkObjectTableEntryNVX</code> structures"
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter",
+ "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-objectCount-arraylength",
+ "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parent",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkObjectTableEntryNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTableEntryNVX-computeBindingPointSupport-01367",
+ "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableEntryNVX-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkObjectTableEntryNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableEntryNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "VkObjectTablePipelineEntryNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-01368",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePipelineEntryNVX-pipeline-parameter",
+ "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
+ }
+ ]
+ },
+ "VkObjectTableDescriptorSetEntryNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-01369",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-pipelineLayout-parameter",
+ "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-descriptorSet-parameter",
+ "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
+ },
+ {
+ "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-commonparent",
+ "text": " Both of <code>descriptorSet</code>, and <code>pipelineLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkObjectTableVertexBufferEntryNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-01370",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ }
+ ]
+ },
+ "VkObjectTableIndexBufferEntryNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-01371",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-parameter",
+ "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
+ }
+ ]
+ },
+ "VkObjectTablePushConstantEntryNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-01372",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-pipelineLayout-parameter",
+ "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-parameter",
+ "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-requiredbitmask",
+ "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "vkUnregisterObjectsNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-01373",
+ "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> be a registered resource already."
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-01374",
+ "text": " The <code>pObjectEntryTypes</code> of the resource at <code>pObjectIndices</code> <strong class=\"purple\">must</strong> match."
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-None-01375",
+ "text": " All operations on the device using the registered resource <strong class=\"purple\">must</strong> have been completed."
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parameter",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter",
+ "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter",
+ "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-objectCount-arraylength",
+ "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parent",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "VkIndirectCommandsLayoutTokenNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-bindingUnit-01342",
+ "text": " <code>bindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-dynamicCount-01343",
+ "text": " <code>dynamicCount</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-divisor-01344",
+ "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and a power of two."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter",
+ "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
+ }
+ ]
+ },
+ "VkIndirectCommandsTokenNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-01345",
+ "text": " The <code>buffer</code>’s usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsTokenNVX-offset-01346",
+ "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minCommandsTokenBufferOffsetAlignment</code>."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter",
+ "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ }
+ ]
+ },
+ "vkCreateIndirectCommandsLayoutNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIndirectCommandsLayoutCreateInfoNVX</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter",
+ "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkIndirectCommandsLayoutNVX</code> handle"
+ }
+ ]
+ },
+ "VkIndirectCommandsLayoutCreateInfoNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-01347",
+ "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and below <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxIndirectCommandsLayoutTokenCount</code>"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-computeBindingPointSupport-01348",
+ "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, then <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01349",
+ "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01350",
+ "text": " All state binding tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX</code>)."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01351",
+ "text": " The content of <code>pTokens</code> <strong class=\"purple\">must</strong> include one single work provoking token that is compatible with the <code>pipelineBindPoint</code>."
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter",
+ "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNVX\">VkIndirectCommandsLayoutUsageFlagBitsNVX</a> values"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter",
+ "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <code>VkIndirectCommandsLayoutTokenNVX</code> structures"
+ },
+ {
+ "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength",
+ "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroyIndirectCommandsLayoutNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-01352",
+ "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01353",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01354",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter",
+ "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent",
+ "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkCmdReserveSpaceForCommandsNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01329",
+ "text": " The provided <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have had a prior space reservation since its creation or the last reset."
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01330",
+ "text": " The state of the <code>commandBuffer</code> <strong class=\"purple\">must</strong> be legal to execute all commands within the sequence provided by the <code>indirectCommandsLayout</code> member of <code>pProcessCommandsInfo</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter",
+ "text": " <code>pReserveSpaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdReserveSpaceForCommandsInfoNVX</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ },
+ {
+ "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a secondary <code>VkCommandBuffer</code>"
+ }
+ ]
+ },
+ "VkCmdReserveSpaceForCommandsInfoNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-indirectCommandsLayout-parameter",
+ "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent",
+ "text": " Both of <code>indirectCommandsLayout</code>, and <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkCmdProcessCommandsNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter",
+ "text": " <code>pProcessCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdProcessCommandsInfoNVX</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ },
+ {
+ "vuid": "VUID-vkCmdProcessCommandsNVX-renderpass",
+ "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
+ }
+ ]
+ },
+ "VkCmdProcessCommandsInfoNVX": {
+ "(VK_NVX_device_generated_commands)": [
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-01331",
+ "text": " The provided <code>objectTable</code> <strong class=\"purple\">must</strong> include all objects referenced by the generation process."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-01332",
+ "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>’s <code>tokenCount</code>."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-tokenType-01333",
+ "text": " The <code>tokenType</code> member of each entry in the <code>pIndirectCommandsTokens</code> array <strong class=\"purple\">must</strong> match the values used at creation time of <code>indirectCommandsLayout</code>"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01334",
+ "text": " If <code>targetCommandBuffer</code> is provided, it <strong class=\"purple\">must</strong> have reserved command space."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01335",
+ "text": " If <code>targetCommandBuffer</code> is provided, the <code>objectTable</code> <strong class=\"purple\">must</strong> match the reservation’s objectTable and <strong class=\"purple\">must</strong> have had all referenced objects registered at reservation time."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01336",
+ "text": " If <code>targetCommandBuffer</code> is provided, the <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> match the reservation’s indirectCommandsLayout."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01337",
+ "text": " If <code>targetCommandBuffer</code> is provided, the <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> not exceed the reservation’s maxSequencesCount."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338",
+ "text": " If <code>sequencesCountBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339",
+ "text": " If <code>sequencesCountBuffer</code> is used, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceCountBufferOffsetAlignment</code>."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340",
+ "text": " If <code>sequencesIndexBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341",
+ "text": " If <code>sequencesIndexBuffer</code> is used, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceIndexBufferOffsetAlignment</code>."
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX</code>"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter",
+ "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsLayout-parameter",
+ "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter",
+ "text": " <code>pIndirectCommandsTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indirectCommandsTokenCount</code> valid <code>VkIndirectCommandsTokenNVX</code> structures"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-parameter",
+ "text": " If <code>targetCommandBuffer</code> is not <code>NULL</code>, <code>targetCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-parameter",
+ "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-parameter",
+ "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength",
+ "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkCmdProcessCommandsInfoNVX-commonparent",
+ "text": " Each of <code>indirectCommandsLayout</code>, <code>objectTable</code>, <code>sequencesCountBuffer</code>, <code>sequencesIndexBuffer</code>, and <code>targetCommandBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSparseImageFormatProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
+ "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkSparseImageFormatProperties</code> structures"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSparseImageFormatProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
+ "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSparseImageFormatInfo2</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkSparseImageFormatProperties2</code> structures"
+ }
+ ]
+ },
+ "VkPhysicalDeviceSparseImageFormatInfo2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
+ "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
+ }
+ ]
+ },
+ "VkSparseImageFormatProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetImageSparseMemoryRequirements": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
+ "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
+ "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements</code> structures"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ }
+ ]
+ },
+ "vkGetImageSparseMemoryRequirements2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
+ "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSparseMemoryRequirementsInfo2</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
+ "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
+ "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements2</code> structures"
+ }
+ ]
+ },
+ "VkImageSparseMemoryRequirementsInfo2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ }
+ ]
+ },
+ "VkSparseImageMemoryRequirements2": {
+ "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+ {
+ "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "VkSparseMemoryBind": {
+ "core": [
+ {
+ "vuid": "VUID-VkSparseMemoryBind-memory-01096",
+ "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the resource, as described in section &amp;lt;&amp;lt;resources-association&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-memory-01097",
+ "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> not have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code> bit set"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-size-01098",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
+ "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-size-01100",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
+ "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-size-01102",
+ "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
+ "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
+ }
+ ]
+ },
+ "VkSparseBufferMemoryBindInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
+ "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
+ "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
+ "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkSparseImageOpaqueMemoryBindInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
+ "text": " If the <code>flags</code> member of any element of <code>pBinds</code> contains <code>VK_SPARSE_MEMORY_BIND_METADATA_BIT</code>, the binding range defined <strong class=\"purple\">must</strong> be within the mip tail region of the metadata aspect of <code>image</code>"
+ },
+ {
+ "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
+ "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
+ "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkSparseImageMemoryBindInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
+ "text": " The <code>subresource.mipLevel</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
+ "text": " The <code>subresource.arrayLayer</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
+ "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
+ "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseImageMemoryBind</code> structures"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
+ "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkSparseImageMemoryBind": {
+ "core": [
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
+ "text": " If the &amp;lt;&amp;lt;features-features-sparseResidencyAliased,sparse aliased residency&amp;gt;&amp;gt; feature is not enabled, and if any other resources are bound to ranges of <code>memory</code>, the range of <code>memory</code> being bound <strong class=\"purple\">must</strong> not overlap with those bound ranges"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
+ "text": " <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the calling command’s <code>image</code>, as described in section &amp;lt;&amp;lt;resources-association&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
+ "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid image subresource for <code>image</code> (see &amp;lt;&amp;lt;resources-image-views&amp;gt;&amp;gt;)"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
+ "text": " <code>offset.x</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of the image"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
+ "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of the image, or else <span class=\"eq\">(<code>extent.width</code> + <code>offset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the image subresource"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
+ "text": " <code>offset.y</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of the image"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
+ "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of the image, or else <span class=\"eq\">(<code>extent.height</code> + <code>offset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the image subresource"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
+ "text": " <code>offset.z</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block depth (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.depth</code>) of the image"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
+ "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block depth of the image, or else <span class=\"eq\">(<code>extent.depth</code> + <code>offset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the image subresource"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
+ "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresource</code> structure"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
+ "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
+ }
+ ]
+ },
+ "vkQueueBindSparse": {
+ "core": [
+ {
+ "vuid": "VUID-vkQueueBindSparse-fence-01113",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-fence-01114",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
+ "text": " Each element of the <code>pSignalSemaphores</code> member of each element of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
+ "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
+ "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have &amp;lt;&amp;lt;synchronization-semaphores-signaling, semaphore signal operations&amp;gt;&amp;gt; previously submitted for execution."
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
+ "text": " If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindSparseInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-fence-parameter",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-queuetype",
+ "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations"
+ },
+ {
+ "vuid": "VUID-vkQueueBindSparse-commonparent",
+ "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkBindSparseInfo": {
+ "core": [
+ {
+ "vuid": "VUID-VkBindSparseInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
+ "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
+ "text": " If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <code>VkSparseBufferMemoryBindInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
+ "text": " If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <code>VkSparseImageOpaqueMemoryBindInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
+ "text": " If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <code>VkSparseImageMemoryBindInfo</code> structures"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
+ "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
+ },
+ {
+ "vuid": "VUID-VkBindSparseInfo-commonparent",
+ "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
+ }
+ ]
+ },
+ "VkDeviceGroupBindSparseInfo": {
+ "(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
+ "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices."
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
+ "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>."
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>"
+ }
+ ]
+ },
+ "vkCreateAndroidSurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_android_surface)": [
+ {
+ "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAndroidSurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkAndroidSurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_android_surface)": [
+ {
+ "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
+ "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <code>ANativeWindow</code>."
+ },
+ {
+ "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateMirSurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_mir_surface)": [
+ {
+ "vuid": "VUID-vkCreateMirSurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateMirSurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMirSurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateMirSurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateMirSurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkMirSurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_mir_surface)": [
+ {
+ "vuid": "VUID-VkMirSurfaceCreateInfoKHR-connection-01263",
+ "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid <code>MirConnection</code>."
+ },
+ {
+ "vuid": "VUID-VkMirSurfaceCreateInfoKHR-surface-01264",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid <code>MirSurface</code>."
+ },
+ {
+ "vuid": "VUID-VkMirSurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkMirSurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkMirSurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateWaylandSurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
+ {
+ "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWaylandSurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkWaylandSurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
+ {
+ "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>."
+ },
+ {
+ "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>."
+ },
+ {
+ "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateWin32SurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
+ {
+ "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWin32SurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkWin32SurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
+ {
+ "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
+ "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>."
+ },
+ {
+ "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
+ "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>."
+ },
+ {
+ "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateXcbSurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
+ {
+ "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXcbSurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkXcbSurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
+ {
+ "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
+ "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>."
+ },
+ {
+ "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
+ "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>."
+ },
+ {
+ "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateXlibSurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
+ {
+ "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXlibSurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkXlibSurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
+ {
+ "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
+ "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>."
+ },
+ {
+ "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
+ "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>."
+ },
+ {
+ "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateIOSSurfaceMVK": {
+ "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
+ {
+ "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIOSSurfaceCreateInfoMVK</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkIOSSurfaceCreateInfoMVK": {
+ "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
+ {
+ "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
+ "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>UIView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <code>CAMetalLayer</code>."
+ },
+ {
+ "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>"
+ },
+ {
+ "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateMacOSSurfaceMVK": {
+ "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
+ {
+ "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMacOSSurfaceCreateInfoMVK</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkMacOSSurfaceCreateInfoMVK": {
+ "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
+ {
+ "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
+ "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>NSView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <code>CAMetalLayer</code>."
+ },
+ {
+ "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>"
+ },
+ {
+ "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkCreateViSurfaceNN": {
+ "(VK_KHR_surface)+(VK_NN_vi_surface)": [
+ {
+ "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkViSurfaceCreateInfoNN</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkViSurfaceCreateInfoNN": {
+ "(VK_KHR_surface)+(VK_NN_vi_surface)": [
+ {
+ "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
+ "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>"
+ },
+ {
+ "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>"
+ },
+ {
+ "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkDestroySurfaceKHR": {
+ "(VK_KHR_surface)": [
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
+ "text": " All <code>VkSwapchainKHR</code> objects created for <code>surface</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>surface</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
+ "text": " If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
+ "text": " If <code>surface</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceDisplayPropertiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkDisplayPropertiesKHR</code> structures"
+ }
+ ]
+ },
+ "vkAcquireXlibDisplayEXT": {
+ "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
+ {
+ "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
+ "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
+ },
+ {
+ "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
+ }
+ ]
+ },
+ "vkGetRandROutputDisplayEXT": {
+ "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
+ {
+ "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
+ "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
+ "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayKHR</code> handle"
+ }
+ ]
+ },
+ "vkReleaseDisplayEXT": {
+ "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
+ {
+ "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkDisplayPlanePropertiesKHR</code> structures"
+ }
+ ]
+ },
+ "vkGetDisplayPlaneSupportedDisplaysKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
+ "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
+ "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
+ "text": " If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <code>VkDisplayKHR</code> handles"
+ }
+ ]
+ },
+ "vkGetDisplayModePropertiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkDisplayModePropertiesKHR</code> structures"
+ }
+ ]
+ },
+ "vkCreateDisplayModeKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayModeCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
+ "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayModeKHR</code> handle"
+ }
+ ]
+ },
+ "VkDisplayModeCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-VkDisplayModeCreateInfoKHR-width-01250",
+ "text": " The <code>width</code> and <code>height</code> members of the <code>visibleRegion</code> member of <code>parameters</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayModeCreateInfoKHR-refreshRate-01251",
+ "text": " The <code>refreshRate</code> member of <code>parameters</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ }
+ ]
+ },
+ "vkGetDisplayPlaneCapabilitiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
+ "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
+ "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilitiesKHR</code> structure"
+ }
+ ]
+ },
+ "vkDisplayPowerControlEXT": {
+ "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
+ "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPowerInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkDisplayPowerInfoEXT": {
+ "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
+ "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value"
+ }
+ ]
+ },
+ "vkCreateDisplayPlaneSurfaceKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplaySurfaceCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
+ "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkDisplaySurfaceCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_display)": [
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
+ "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
+ "text": " If the <code>planeReorderPossible</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display corresponding to <code>displayMode</code> is <code>VK_TRUE</code> then <code>planeStackIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>; otherwise <code>planeStackIndex</code> <strong class=\"purple\">must</strong> equal the <code>currentStackIndex</code> member of <code>VkDisplayPlanePropertiesKHR</code> returned by <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
+ "text": " If <code>alphaMode</code> is <code>VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</code> then <code>globalAlpha</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
+ "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be <code>0</code> or one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> returned by <code>vkGetDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
+ "text": " The <code>width</code> and <code>height</code> members of <code>imageExtent</code> <strong class=\"purple\">must</strong> be less than the <code>maxImageDimensions2D</code> member of <code>VkPhysicalDeviceLimits</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
+ "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
+ "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
+ },
+ {
+ "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
+ "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfaceSupportKHR": {
+ "(VK_KHR_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
+ "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
+ "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceMirPresentationSupportKHR": {
+ "(VK_KHR_surface)+(VK_KHR_mir_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMirPresentationSupportKHR-queueFamilyIndex-01265",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMirPresentationSupportKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMirPresentationSupportKHR-connection-parameter",
+ "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>MirConnection</code> value"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
+ "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
+ "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
+ "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
+ "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
+ "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>xcb_connection_t</code> value"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
+ "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
+ "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
+ "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
+ "(VK_KHR_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
+ "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilitiesKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
+ "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
+ "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
+ "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
+ "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2KHR</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceSurfaceInfo2KHR": {
+ "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ }
+ ]
+ },
+ "VkSurfaceCapabilities2KHR": {
+ "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
+ {
+ "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>"
+ }
+ ]
+ },
+ "VkSharedPresentSurfaceCapabilitiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
+ "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
+ "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2EXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
+ "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "VkSurfaceCapabilities2EXT": {
+ "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
+ {
+ "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
+ "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a &amp;lt;&amp;lt;wsi-display-surfaces,display surface&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfaceFormatsKHR": {
+ "(VK_KHR_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
+ "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
+ "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormatKHR</code> structures"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
+ "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfaceFormats2KHR": {
+ "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
+ "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
+ "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
+ "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormat2KHR</code> structures"
+ }
+ ]
+ },
+ "VkSurfaceFormat2KHR": {
+ "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
+ {
+ "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceSurfacePresentModesKHR": {
+ "(VK_KHR_surface)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
+ "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
+ "text": " If the value referenced by <code>pPresentModeCount</code> is not <code>0</code>, and <code>pPresentModes</code> is not <code>NULL</code>, <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
+ "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetDeviceGroupPresentCapabilitiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
+ "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGroupPresentCapabilitiesKHR</code> structure"
+ }
+ ]
+ },
+ "VkDeviceGroupPresentCapabilitiesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetDeviceGroupSurfacePresentModesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
+ "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
+ "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDevicePresentRectanglesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
+ "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
+ "text": " If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <code>VkRect2D</code> structures"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
+ "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetRefreshCycleDurationGOOGLE": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
+ {
+ "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
+ "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRefreshCycleDurationGOOGLE</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetPastPresentationTimingGOOGLE": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
+ {
+ "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
+ "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
+ "text": " If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <code>VkPastPresentationTimingGOOGLE</code> structures"
+ },
+ {
+ "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkGetSwapchainStatusKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkCreateSwapchainKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSwapchainCreateInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
+ "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSwapchainKHR</code> handle"
+ }
+ ]
+ },
+ "VkSwapchainCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
+ "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
+ "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value returned in the <code>maxImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface if the returned <code>maxImageCount</code> is not zero"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
+ "text": " <code>imageFormat</code> and <code>imageColorSpace</code> <strong class=\"purple\">must</strong> match the <code>format</code> and <code>colorSpace</code> members, respectively, of one of the <code>VkSurfaceFormatKHR</code> structures returned by <code>vkGetPhysicalDeviceSurfaceFormatsKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
+ "text": " <code>imageExtent</code> <strong class=\"purple\">must</strong> be between <code>minImageExtent</code> and <code>maxImageExtent</code>, inclusive, where <code>minImageExtent</code> and <code>maxImageExtent</code> are members of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
+ "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
+ "text": " <code>imageArrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to the <code>maxImageArrayLayers</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
+ "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
+ "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
+ "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedTransforms</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
+ "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedCompositeAlpha</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
+ "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
+ "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
+ "text": " <code>imageFormat</code>, <code>imageUsage</code>, <code>imageExtent</code>, and <code>imageArrayLayers</code> <strong class=\"purple\">must</strong> be supported for <code>VK_IMAGE_TYPE_2D</code> <code>VK_IMAGE_TILING_OPTIMAL</code> images as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties\">vkGetPhysicalDeviceImageFormatProperties</a>."
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-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=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a> or <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
+ "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
+ "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
+ "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
+ "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
+ "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
+ "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
+ "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
+ "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
+ "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
+ "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
+ "text": " If <code>oldSwapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>surface</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
+ "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
+ "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be <code>1</code> if <code>presentMode</code> is either <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
+ "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_IMMEDIATE_KHR</code>, <code>VK_PRESENT_MODE_MAILBOX_KHR</code>, <code>VK_PRESENT_MODE_FIFO_KHR</code> or <code>VK_PRESENT_MODE_FIFO_RELAXED_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for <code>surface</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
+ "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>sharedPresentSupportedUsageFlags</code> member of the <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
+ "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
+ "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
+ "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
+ "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>"
+ }
+ ]
+ },
+ "VkDeviceGroupSwapchainCreateInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
+ "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
+ "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "VkSwapchainCounterCreateInfoEXT": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
+ "text": " The bits in <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>surface</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2EXT\">vkGetPhysicalDeviceSurfaceCapabilities2EXT</a>."
+ },
+ {
+ "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
+ "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values"
+ }
+ ]
+ },
+ "vkGetSwapchainCounterEXT": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
+ {
+ "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
+ "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine."
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
+ "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
+ "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkDestroySwapchainKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
+ "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution"
+ },
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
+ "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroySwapchainKHR-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkCreateSharedSwapchainsKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
+ {
+ "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
+ "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainCreateInfoKHR</code> structures"
+ },
+ {
+ "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
+ "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkSwapchainKHR</code> handles"
+ },
+ {
+ "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkGetSwapchainImagesKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
+ "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
+ "text": " If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <code>VkImage</code> handles"
+ },
+ {
+ "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkAcquireNextImageKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
+ "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
+ "text": " If the number of currently acquired images is greater than the difference between the number of images in <code>swapchain</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
+ "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
+ "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
+ "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImageKHR-commonparent",
+ "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkAcquireNextImage2KHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
+ "text": " If the number of currently acquired images is greater than the difference between the number of images in the <code>swapchain</code> member of <code>pAcquireInfo</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, the <code>timeout</code> member of <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
+ "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAcquireNextImageInfoKHR</code> structure"
+ },
+ {
+ "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
+ "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ }
+ ]
+ },
+ "VkAcquireNextImageInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
+ "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
+ "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01804",
+ "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>."
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
+ "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
+ "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
+ "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
+ },
+ {
+ "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
+ "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkQueuePresentKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
+ "text": " Each element of <code>pSwapchains</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a swapchain that is created for a surface for which presentation is supported from <code>queue</code> as determined using a call to <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>"
+ },
+ {
+ "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
+ "text": " When a semaphore unsignal operation defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
+ },
+ {
+ "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
+ "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have &amp;lt;&amp;lt;synchronization-semaphores-signaling, semaphore signal operations&amp;gt;&amp;gt; previously submitted for execution."
+ },
+ {
+ "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
+ "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPresentInfoKHR</code> structure"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
+ {
+ "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
+ "text": " If more than one member of <code>pSwapchains</code> was created from a display surface, all display surfaces referenced that refer to the same display <strong class=\"purple\">must</strong> use the same display mode"
+ }
+ ]
+ },
+ "VkPresentInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
+ "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
+ {
+ "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
+ "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>"
+ }
+ ],
+ "(VK_KHR_surface)+(VK_KHR_swapchain)": [
+ {
+ "vuid": "VUID-VkPresentInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-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=\"#VkDeviceGroupPresentInfoKHR\">VkDeviceGroupPresentInfoKHR</a>, <a href=\"#VkDisplayPresentInfoKHR\">VkDisplayPresentInfoKHR</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, or <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
+ "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
+ "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
+ "text": " <code>pImageIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
+ "text": " If <code>pResults</code> is not <code>NULL</code>, <code>pResults</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkResult\">VkResult</a> values"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPresentInfoKHR-commonparent",
+ "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "VkPresentRegionsKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
+ {
+ "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the pNext-chain of this <code>VkPresentRegionsKHR</code> structure."
+ },
+ {
+ "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
+ "text": " If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkPresentRegionKHR</code> structures"
+ },
+ {
+ "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "VkPresentRegionKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
+ {
+ "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
+ "text": " If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> <code>VkRectLayerKHR</code> structures"
+ }
+ ]
+ },
+ "VkRectLayerKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
+ {
+ "vuid": "VUID-VkRectLayerKHR-offset-01261",
+ "text": " The sum of <code>offset</code> and <code>extent</code> <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
+ },
+ {
+ "vuid": "VUID-VkRectLayerKHR-layer-01262",
+ "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than <code>imageArrayLayers</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
+ }
+ ]
+ },
+ "VkDisplayPresentInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
+ {
+ "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
+ "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented"
+ },
+ {
+ "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
+ "text": " <code>dstRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the <code>visibleRegion</code> parameter of the display mode the swapchain being presented uses"
+ },
+ {
+ "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
+ "text": " If the <code>persistentContent</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display the present operation targets then <code>persistent</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
+ },
+ {
+ "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>"
+ }
+ ]
+ },
+ "VkDeviceGroupPresentInfoKHR": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
+ "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
+ "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and some physical device in the logical device <strong class=\"purple\">must</strong> include that bit in its <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>."
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
+ "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have a value for which all set bits are set in one of the elements of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
+ "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</code>, then for each bit set in each element of <code>pDeviceMasks</code>, the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
+ "text": " The value of each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be equal to the device mask passed in <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a>::<code>deviceMask</code> when the image index was last acquired"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
+ "text": " <code>mode</code> <strong class=\"purple\">must</strong> have exactly one bit set, and that bit <strong class=\"purple\">must</strong> have been included in <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>::<code>modes</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
+ "text": " If <code>swapchainCount</code> is not <code>0</code>, <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values"
+ },
+ {
+ "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
+ "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value"
+ }
+ ]
+ },
+ "VkPresentTimesInfoGOOGLE": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
+ {
+ "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure."
+ },
+ {
+ "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>"
+ },
+ {
+ "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
+ "text": " If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkPresentTimeGOOGLE</code> structures"
+ },
+ {
+ "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkSetHdrMetadataEXT": {
+ "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
+ {
+ "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
+ "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
+ },
+ {
+ "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
+ "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkHdrMetadataEXT</code> structures"
+ },
+ {
+ "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
+ "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
+ "text": " Both of <code>device</code>, and the elements of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
+ }
+ ]
+ },
+ "vkEnumerateInstanceLayerProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkLayerProperties</code> structures"
+ }
+ ]
+ },
+ "vkEnumerateDeviceLayerProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkLayerProperties</code> structures"
+ }
+ ]
+ },
+ "vkEnumerateInstanceExtensionProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
+ "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
+ }
+ ]
+ },
+ "vkEnumerateDeviceExtensionProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
+ "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
+ "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+ },
+ {
+ "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
+ "text": " If the value referenced by <code>pPropertyCount</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>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceFeatures": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
+ "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures</code> structure"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceFeatures2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
+ "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures2</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceFeatures2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceVariablePointerFeatures": {
+ "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-variablePointers-01431",
+ "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled."
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceMultiviewFeatures": {
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
+ "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
+ "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDevice16BitStorageFeatures": {
+ "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
+ {
+ "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
+ "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceProtectedMemoryFeatures": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
+ "(VK_EXT_blend_operation_advanced)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceShaderDrawParameterFeatures": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceShaderDrawParameterFeatures-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceDescriptorIndexingFeaturesEXT": {
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDevicePushDescriptorPropertiesKHR": {
+ "(VK_KHR_push_descriptor)": [
+ {
+ "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceMultiviewProperties": {
+ "(VK_VERSION_1_1,VK_KHR_multiview)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
+ "(VK_EXT_discard_rectangles)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
+ "(VK_EXT_external_memory_host)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
+ "(VK_NVX_multiview_per_view_attributes)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>"
+ }
+ ]
+ },
+ "VkPhysicalDevicePointClippingProperties": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
+ {
+ "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceSubgroupProperties": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
+ "(VK_EXT_blend_operation_advanced)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
+ "(VK_EXT_vertex_attribute_divisor)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT": {
+ "(VK_EXT_sampler_filter_minmax)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceProtectedMemoryProperties": {
+ "(VK_VERSION_1_1)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceMaintenance3Properties": {
+ "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceDescriptorIndexingPropertiesEXT": {
+ "(VK_EXT_descriptor_indexing)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
+ "(VK_EXT_conservative_rasterization)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>"
+ }
+ ]
+ },
+ "VkPhysicalDeviceShaderCorePropertiesAMD": {
+ "(VK_AMD_shader_core_properties)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
+ "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
+ "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMultisamplePropertiesEXT</code> structure"
+ }
+ ]
+ },
+ "VkMultisamplePropertiesEXT": {
+ "(VK_EXT_sample_locations)": [
+ {
+ "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceFormatProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
+ "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties</code> structure"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceFormatProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
+ "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties2</code> structure"
+ }
+ ]
+ },
+ "VkFormatProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkFormatProperties2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>"
+ },
+ {
+ "vuid": "VUID-VkFormatProperties2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceImageFormatProperties": {
+ "core": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
+ "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
+ "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties</code> structure"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
+ "(VK_NV_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
+ "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
+ "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
+ "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalImageFormatPropertiesNV</code> structure"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceImageFormatProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
+ "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> contains an instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>."
+ }
+ ],
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
+ "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceImageFormatInfo2</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
+ "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties2</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceImageFormatInfo2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
+ "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
+ "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
+ "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
+ }
+ ]
+ },
+ "VkImageFormatProperties2": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+ {
+ "vuid": "VUID-VkImageFormatProperties2-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>"
+ },
+ {
+ "vuid": "VUID-VkImageFormatProperties2-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=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>, <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>, or <a href=\"#VkTextureLODGatherFormatPropertiesAMD\">VkTextureLODGatherFormatPropertiesAMD</a>"
+ },
+ {
+ "vuid": "VUID-VkImageFormatProperties2-sType-unique",
+ "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+ }
+ ]
+ },
+ "VkPhysicalDeviceExternalImageFormatInfo": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
+ "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "VkExternalImageFormatProperties": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkSamplerYcbcrConversionImageFormatProperties": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+ {
+ "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>"
+ }
+ ]
+ },
+ "VkAndroidHardwareBufferUsageANDROID": {
+ "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+ {
+ "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceExternalBufferProperties": {
+ "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
+ "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalBufferInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
+ "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalBufferProperties</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceExternalBufferInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
+ "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "VkExternalBufferProperties": {
+ "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
+ {
+ "vuid": "VUID-VkExternalBufferProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>"
+ },
+ {
+ "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceExternalSemaphoreProperties": {
+ "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
+ "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalSemaphoreInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
+ "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalSemaphoreProperties</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceExternalSemaphoreInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "VkExternalSemaphoreProperties": {
+ "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
+ {
+ "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>"
+ },
+ {
+ "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkGetPhysicalDeviceExternalFenceProperties": {
+ "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
+ "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
+ "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalFenceInfo</code> structure"
+ },
+ {
+ "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
+ "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalFenceProperties</code> structure"
+ }
+ ]
+ },
+ "VkPhysicalDeviceExternalFenceInfo": {
+ "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
+ "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
+ }
+ ]
+ },
+ "VkExternalFenceProperties": {
+ "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
+ {
+ "vuid": "VUID-VkExternalFenceProperties-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>"
+ },
+ {
+ "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ }
+ ]
+ },
+ "vkSetDebugUtilsObjectNameEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
+ "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectNameInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkDebugUtilsObjectNameInfoEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-01905",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectHandle-01906",
+ "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectHandle-01907",
+ "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in &amp;lt;&amp;lt;debugging-object-types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
+ "text": " If <code>pObjectName</code> is not <code>NULL</code>, <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkSetDebugUtilsObjectTagEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
+ "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectTagInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkDebugUtilsObjectTagInfoEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01909",
+ "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
+ "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in &amp;lt;&amp;lt;debugging-object-types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
+ "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
+ "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkQueueBeginDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
+ "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
+ }
+ ]
+ },
+ "VkDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
+ "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkQueueEndDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
+ "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue"
+ },
+ {
+ "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ }
+ ]
+ },
+ "vkQueueInsertDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
+ "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
+ },
+ {
+ "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
+ "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
+ }
+ ]
+ },
+ "vkCmdBeginDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
+ "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ }
+ ]
+ },
+ "vkCmdEndDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
+ "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command prior to the <code>vkCmdEndDebugUtilsLabelEXT</code> on the queue that <code>commandBuffer</code> is submitted to"
+ },
+ {
+ "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
+ "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <code>vkCmdEndDebugUtilsLabelEXT</code>."
+ },
+ {
+ "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ }
+ ]
+ },
+ "vkCmdInsertDebugUtilsLabelEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
+ "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ }
+ ]
+ },
+ "vkCreateDebugUtilsMessengerEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
+ "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugUtilsMessengerEXT</code> handle"
+ }
+ ]
+ },
+ "VkDebugUtilsMessengerCreateInfoEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
+ "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
+ "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
+ "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
+ "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
+ "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ }
+ ]
+ },
+ "VkDebugUtilsMessengerCallbackDataEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
+ "text": " If <code>pMessageIdName</code> is not <code>NULL</code>, <code>pMessageIdName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
+ "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-objectCount-arraylength",
+ "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkSubmitDebugUtilsMessageEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
+ "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value"
+ },
+ {
+ "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
+ "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
+ },
+ {
+ "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
+ "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
+ "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCallbackDataEXT</code> structure"
+ }
+ ]
+ },
+ "vkDestroyDebugUtilsMessengerEXT": {
+ "(VK_EXT_debug_utils)": [
+ {
+ "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
+ "text": " <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugUtilsMessengerEXT</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
+ "text": " <code>messenger</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
+ }
+ ]
+ },
+ "vkDebugMarkerSetObjectNameEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
+ "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectNameInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkDebugMarkerObjectNameInfoEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
+ "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
+ "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in &amp;lt;&amp;lt;debug-report-object-types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
+ "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkDebugMarkerSetObjectTagEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
+ "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
+ "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectTagInfoEXT</code> structure"
+ }
+ ]
+ },
+ "VkDebugMarkerObjectTagInfoEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
+ "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
+ "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in &amp;lt;&amp;lt;debug-report-object-types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
+ "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
+ "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+ }
+ ]
+ },
+ "vkCmdDebugMarkerBeginEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
+ "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ }
+ ]
+ },
+ "VkDebugMarkerMarkerInfoEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
+ "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
+ "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkCmdDebugMarkerEndEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
+ "text": " There <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command prior to the <code>vkCmdDebugMarkerEndEXT</code> on the queue that <code>commandBuffer</code> is submitted to"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
+ "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>."
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ }
+ ]
+ },
+ "vkCmdDebugMarkerInsertEXT": {
+ "(VK_EXT_debug_marker)": [
+ {
+ "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
+ "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
+ "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the &amp;lt;&amp;lt;commandbuffers-lifecycle, recording state&amp;gt;&amp;gt;"
+ },
+ {
+ "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
+ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+ }
+ ]
+ },
+ "vkCreateDebugReportCallbackEXT": {
+ "(VK_EXT_debug_report)": [
+ {
+ "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
+ "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugReportCallbackCreateInfoEXT</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
+ "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugReportCallbackEXT</code> handle"
+ }
+ ]
+ },
+ "VkDebugReportCallbackCreateInfoEXT": {
+ "(VK_EXT_debug_report)": [
+ {
+ "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-01385",
+ "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a>"
+ },
+ {
+ "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
+ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>"
+ },
+ {
+ "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
+ }
+ ]
+ },
+ "vkDebugReportMessageEXT": {
+ "(VK_EXT_debug_report)": [
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
+ "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <code>VK_NULL_HANDLE</code>"
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
+ "text": " If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <code>VK_NULL_HANDLE</code>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in &amp;lt;&amp;lt;debug-report-object-types&amp;gt;&amp;gt;."
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
+ "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
+ "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
+ "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ },
+ {
+ "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
+ "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
+ }
+ ]
+ },
+ "vkDestroyDebugReportCallbackEXT": {
+ "(VK_EXT_debug_report)": [
+ {
+ "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
+ "text": " If <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
+ "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
+ "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
+ "text": " <code>callback</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugReportCallbackEXT</code> handle"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
+ "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
+ },
+ {
+ "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
+ "text": " <code>callback</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file diff --git a/registry/vk.xml b/registry/vk.xml new file mode 100644 index 0000000..8f4c13d --- /dev/null +++ b/registry/vk.xml @@ -0,0 +1,8699 @@ +<?xml version="1.0" encoding="UTF-8"?> +<registry> + <comment> +Copyright (c) 2015-2018 The Khronos Group Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------ + +This file, vk.xml, is the Vulkan API Registry. It is a critically important +and normative part of the Vulkan Specification, including a canonical +machine-readable definition of the API, parameter and member validation +language incorporated into the Specification and reference pages, and other +material which is registered by Khronos, such as tags used by extension and +layer authors. The authoritative public version of vk.xml is maintained in +the master branch of the Khronos Vulkan GitHub project. The authoritative +private version is maintained in the master branch of the member gitlab +server. + </comment> + + <vendorids comment="Vulkan vendor IDs for physical devices without PCI vendor IDs"> + <vendorid name="KHR" id="0x10000" comment="This is the next available Khronos vendor ID"/> + <vendorid name="VIV" id="0x10001" comment="Vivante vendor ID"/> + <vendorid name="VSI" id="0x10002" comment="VeriSilicon vendor ID"/> + <vendorid name="KAZAN" id="0x10003" comment="Kazan Software Renderer"/> + </vendorids> + + <platforms comment="Vulkan platform names, reserved for use with platform- and window system-specific extensions"> + <platform name="xlib" protect="VK_USE_PLATFORM_XLIB_KHR" comment="X Window System, Xlib client library"/> + <platform name="xlib_xrandr" protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT" comment="X Window System, Xlib client library, XRandR extension"/> + <platform name="xcb" protect="VK_USE_PLATFORM_XCB_KHR" comment="X Window System, Xcb client library"/> + <platform name="wayland" protect="VK_USE_PLATFORM_WAYLAND_KHR" comment="Wayland display server protocol"/> + <platform name="mir" protect="VK_USE_PLATFORM_MIR_KHR" comment="Mir display server"/> + <platform name="android" protect="VK_USE_PLATFORM_ANDROID_KHR" comment="Android OS"/> + <platform name="win32" protect="VK_USE_PLATFORM_WIN32_KHR" comment="Microsoft Win32 API (also refers to Win64 apps)"/> + <platform name="vi" protect="VK_USE_PLATFORM_VI_NN" comment="Nintendo Vi"/> + <platform name="ios" protect="VK_USE_PLATFORM_IOS_MVK" comment="Apple IOS"/> + <platform name="macos" protect="VK_USE_PLATFORM_MACOS_MVK" comment="Apple MacOS"/> + </platforms> + + <tags comment="Vulkan vendor/author tags for extensions and layers"> + <tag name="IMG" author="Imagination Technologies" contact="Michael Worcester @michaelworcester"/> + <tag name="AMD" author="Advanced Micro Devices, Inc." contact="Daniel Rakos @aqnuep"/> + <tag name="AMDX" author="Advanced Micro Devices, Inc." contact="Daniel Rakos @aqnuep"/> + <tag name="ARM" author="ARM Limited" contact="Jan-Harald Fredriksen @janharald"/> + <tag name="FSL" author="Freescale Semiconductor, Inc." contact="Norbert Nopper @FslNopper"/> + <tag name="BRCM" author="Broadcom Corporation" contact="Graeme Leese @gnl21"/> + <tag name="NXP" author="NXP Semiconductors N.V." contact="Norbert Nopper @FslNopper"/> + <tag name="NV" author="NVIDIA Corporation" contact="Daniel Koch @dgkoch"/> + <tag name="NVX" author="NVIDIA Corporation" contact="Daniel Koch @dgkoch"/> + <tag name="VIV" author="Vivante Corporation" contact="Yanjun Zhang @yanjunzhang"/> + <tag name="VSI" author="VeriSilicon Holdings Co., Ltd." contact="Yanjun Zhang @yanjunzhang"/> + <tag name="KDAB" author="KDAB" contact="Sean Harmer @seanharmer"/> + <tag name="ANDROID" author="Google, Inc." contact="Jesse Hall @jessehall"/> + <tag name="CHROMIUM" author="Google, Inc." contact="Jesse Hall @jessehall"/> + <tag name="GOOGLE" author="Google, Inc." contact="Jesse Hall @jessehall"/> + <tag name="QCOM" author="Qualcomm Technologies, Inc." contact="Maurice Ribble @mribble"/> + <tag name="LUNARG" author="LunarG, Inc." contact="Karen Ghavam @KarenGhavam"/> + <tag name="SAMSUNG" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/> + <tag name="SEC" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/> + <tag name="TIZEN" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/> + <tag name="RENDERDOC" author="RenderDoc (renderdoc.org)" contact="[email protected]"/> + <tag name="NN" author="Nintendo Co., Ltd." contact="Yasuhiro Yoshioka @yoshioka_yasuhiro"/> + <tag name="MVK" author="The Brenwill Workshop Ltd." contact="Bill Hollings @billhollings"/> + <tag name="KHR" author="Khronos" contact="Tom Olson @tom.olson"/> + <tag name="KHX" author="Khronos" contact="Tom Olson @tom.olson"/> + <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"/> + </tags> + + <types comment="Vulkan type definitions"> + <type name="vk_platform" category="include">#include "vk_platform.h"</type> + + <comment>WSI extensions</comment> + + <type category="include" name="X11/Xlib.h"/> + <type category="include" name="X11/extensions/Xrandr.h"/> + <type category="include" name="mir_toolkit/client_types.h"/> + <type category="include" name="wayland-client.h"/> + <type category="include" name="windows.h"/> + <type category="include" name="xcb/xcb.h"/> + <comment> + In the current header structure, each platform's interfaces + are confined to a platform-specific header (vulkan_xlib.h, + vulkan_win32.h, etc.). These headers are not self-contained, + and should not include native headers (X11/Xlib.h, + windows.h, etc.). Code should either include vulkan.h after + defining the appropriate VK_USE_PLATFORM_platform_KHR + macros, or include the required native headers prior to + explicitly including the corresponding platform header. + + To accomplish this, the dependencies of native types require + native headers, but the XML defines the content for those + native headers as empty. The actual native header includes + can be restored by modifying the native header tags above + to #include the header file in the 'name' attribute. + </comment> + + <type requires="X11/Xlib.h" name="Display"/> + <type requires="X11/Xlib.h" name="VisualID"/> + <type requires="X11/Xlib.h" name="Window"/> + <type requires="X11/extensions/Xrandr.h" name="RROutput"/> + <type requires="mir_toolkit/client_types.h" name="MirConnection"/> + <type requires="mir_toolkit/client_types.h" name="MirSurface"/> + <type requires="wayland-client.h" name="wl_display"/> + <type requires="wayland-client.h" name="wl_surface"/> + <type requires="windows.h" name="HINSTANCE"/> + <type requires="windows.h" name="HWND"/> + <type requires="windows.h" name="HANDLE"/> + <type requires="windows.h" name="SECURITY_ATTRIBUTES"/> + <type requires="windows.h" name="DWORD"/> + <type requires="windows.h" name="LPCWSTR"/> + <type requires="xcb/xcb.h" name="xcb_connection_t"/> + <type requires="xcb/xcb.h" name="xcb_visualid_t"/> + <type requires="xcb/xcb.h" name="xcb_window_t"/> + + <type category="define">#define <name>VK_MAKE_VERSION</name>(major, minor, patch) \ + (((major) << 22) | ((minor) << 12) | (patch))</type> + <type category="define">#define <name>VK_VERSION_MAJOR</name>(version) ((uint32_t)(version) >> 22)</type> + <type category="define">#define <name>VK_VERSION_MINOR</name>(version) (((uint32_t)(version) >> 12) & 0x3ff)</type> + <type category="define">#define <name>VK_VERSION_PATCH</name>(version) ((uint32_t)(version) & 0xfff)</type> + + <type category="define">// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. +//#define <name>VK_API_VERSION</name> <type>VK_MAKE_VERSION</type>(1, 0, 0) // Patch version should always be set to 0</type> + <type category="define">// Vulkan 1.0 version number +#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type> + <type category="define">// Vulkan 1.1 version number +#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type> + <type category="define">// Version of this file +#define <name>VK_HEADER_VERSION</name> 74</type> + + <type category="define"> +#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> + + <type category="define" name="VK_DEFINE_NON_DISPATCHABLE_HANDLE"> +#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE) +#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif +#endif + </type> + + <type category="define"> +#define <name>VK_NULL_HANDLE</name> 0 + </type> + + <type category="define">struct <name>ANativeWindow</name>;</type> + <type category="define">struct <name>AHardwareBuffer</name>;</type> + + <type category="basetype">typedef <type>uint32_t</type> <name>VkSampleMask</name>;</type> + <type category="basetype">typedef <type>uint32_t</type> <name>VkBool32</name>;</type> + <type category="basetype">typedef <type>uint32_t</type> <name>VkFlags</name>;</type> + <type category="basetype">typedef <type>uint64_t</type> <name>VkDeviceSize</name>;</type> + + <comment>Basic C types, pulled in via vk_platform.h</comment> + <type requires="vk_platform" name="void"/> + <type requires="vk_platform" name="char"/> + <type requires="vk_platform" name="float"/> + <type requires="vk_platform" name="uint8_t"/> + <type requires="vk_platform" name="uint32_t"/> + <type requires="vk_platform" name="uint64_t"/> + <type requires="vk_platform" name="int32_t"/> + <type requires="vk_platform" name="size_t"/> + <type name="int"/> + + <comment>Bitmask types</comment> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkFramebufferCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkQueryPoolCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkRenderPassCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkSamplerCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineLayoutCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCacheCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDepthStencilStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDynamicStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineColorBlendStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineMultisampleStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineViewportStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineTessellationStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineInputAssemblyStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineVertexInputStateCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineShaderStageCreateFlags</name>;</type> + <type requires="VkDescriptorSetLayoutCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorSetLayoutCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkBufferViewCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkInstanceCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceCreateFlags</name>;</type> + <type requires="VkDeviceQueueCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceQueueCreateFlags</name>;</type> + <type requires="VkQueueFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueueFlags</name>;</type> + <type requires="VkMemoryPropertyFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryPropertyFlags</name>;</type> + <type requires="VkMemoryHeapFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryHeapFlags</name>;</type> + <type requires="VkAccessFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkAccessFlags</name>;</type> + <type requires="VkBufferUsageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkBufferUsageFlags</name>;</type> + <type requires="VkBufferCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkBufferCreateFlags</name>;</type> + <type requires="VkShaderStageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkShaderStageFlags</name>;</type> + <type requires="VkImageUsageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageUsageFlags</name>;</type> + <type requires="VkImageCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkImageViewCreateFlags</name>;</type> + <type requires="VkPipelineCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCreateFlags</name>;</type> + <type requires="VkColorComponentFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkColorComponentFlags</name>;</type> + <type requires="VkFenceCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFenceCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreCreateFlags</name>;</type> + <type requires="VkFormatFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFormatFeatureFlags</name>;</type> + <type requires="VkQueryControlFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryControlFlags</name>;</type> + <type requires="VkQueryResultFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryResultFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkShaderModuleCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkEventCreateFlags</name>;</type> + <type requires="VkCommandPoolCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolCreateFlags</name>;</type> + <type requires="VkCommandPoolResetFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolResetFlags</name>;</type> + <type requires="VkCommandBufferResetFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandBufferResetFlags</name>;</type> + <type requires="VkCommandBufferUsageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandBufferUsageFlags</name>;</type> + <type requires="VkQueryPipelineStatisticFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryPipelineStatisticFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryMapFlags</name>;</type> + <type requires="VkImageAspectFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageAspectFlags</name>;</type> + <type requires="VkSparseMemoryBindFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSparseMemoryBindFlags</name>;</type> + <type requires="VkSparseImageFormatFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSparseImageFormatFlags</name>;</type> + <type requires="VkSubpassDescriptionFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSubpassDescriptionFlags</name>;</type> + <type requires="VkPipelineStageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineStageFlags</name>;</type> + <type requires="VkSampleCountFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSampleCountFlags</name>;</type> + <type requires="VkAttachmentDescriptionFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkAttachmentDescriptionFlags</name>;</type> + <type requires="VkStencilFaceFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkStencilFaceFlags</name>;</type> + <type requires="VkCullModeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCullModeFlags</name>;</type> + <type requires="VkDescriptorPoolCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorPoolCreateFlags</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorPoolResetFlags</name>;</type> + <type requires="VkDependencyFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDependencyFlags</name>;</type> + <type requires="VkSubgroupFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSubgroupFeatureFlags</name>;</type> + <type requires="VkIndirectCommandsLayoutUsageFlagBitsNVX" category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectCommandsLayoutUsageFlagsNVX</name>;</type> + <type requires="VkObjectEntryUsageFlagBitsNVX" category="bitmask">typedef <type>VkFlags</type> <name>VkObjectEntryUsageFlagsNVX</name>;</type> + + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorUpdateTemplateCreateFlags</name>;</type> + <type category="bitmask" name="VkDescriptorUpdateTemplateCreateFlagsKHR" alias="VkDescriptorUpdateTemplateCreateFlags"/> + + <comment>WSI extensions</comment> + <type requires="VkCompositeAlphaFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkCompositeAlphaFlagsKHR</name>;</type> + <type requires="VkDisplayPlaneAlphaFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkDisplayPlaneAlphaFlagsKHR</name>;</type> + <type requires="VkSurfaceTransformFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceTransformFlagsKHR</name>;</type> + <type requires="VkSwapchainCreateFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDisplayModeCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDisplaySurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkAndroidSurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkMirSurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkViSurfaceCreateFlagsNN</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkWaylandSurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkWin32SurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkXlibSurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkXcbSurfaceCreateFlagsKHR</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkIOSSurfaceCreateFlagsMVK</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkMacOSSurfaceCreateFlagsMVK</name>;</type> + <type requires="VkPeerMemoryFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPeerMemoryFeatureFlags</name>;</type> + <type category="bitmask" name="VkPeerMemoryFeatureFlagsKHR" alias="VkPeerMemoryFeatureFlags"/> + <type requires="VkMemoryAllocateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryAllocateFlags</name>;</type> + <type category="bitmask" name="VkMemoryAllocateFlagsKHR" alias="VkMemoryAllocateFlags"/> + <type requires="VkDeviceGroupPresentModeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceGroupPresentModeFlagsKHR</name>;</type> + + <type requires="VkDebugReportFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugReportFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolTrimFlags</name>;</type> + <type category="bitmask" name="VkCommandPoolTrimFlagsKHR" alias="VkCommandPoolTrimFlags"/> + <type requires="VkExternalMemoryHandleTypeFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlagsNV</name>;</type> + <type requires="VkExternalMemoryFeatureFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlagsNV</name>;</type> + <type requires="VkExternalMemoryHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlags</name>;</type> + <type category="bitmask" name="VkExternalMemoryHandleTypeFlagsKHR" alias="VkExternalMemoryHandleTypeFlags"/> + <type requires="VkExternalMemoryFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlags</name>;</type> + <type category="bitmask" name="VkExternalMemoryFeatureFlagsKHR" alias="VkExternalMemoryFeatureFlags"/> + <type requires="VkExternalSemaphoreHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalSemaphoreHandleTypeFlags</name>;</type> + <type category="bitmask" name="VkExternalSemaphoreHandleTypeFlagsKHR" alias="VkExternalSemaphoreHandleTypeFlags"/> + <type requires="VkExternalSemaphoreFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalSemaphoreFeatureFlags</name>;</type> + <type category="bitmask" name="VkExternalSemaphoreFeatureFlagsKHR" alias="VkExternalSemaphoreFeatureFlags"/> + <type requires="VkSemaphoreImportFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreImportFlags</name>;</type> + <type category="bitmask" name="VkSemaphoreImportFlagsKHR" alias="VkSemaphoreImportFlags"/> + <type requires="VkExternalFenceHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalFenceHandleTypeFlags</name>;</type> + <type category="bitmask" name="VkExternalFenceHandleTypeFlagsKHR" alias="VkExternalFenceHandleTypeFlags"/> + <type requires="VkExternalFenceFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalFenceFeatureFlags</name>;</type> + <type category="bitmask" name="VkExternalFenceFeatureFlagsKHR" alias="VkExternalFenceFeatureFlags"/> + <type requires="VkFenceImportFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFenceImportFlags</name>;</type> + <type category="bitmask" name="VkFenceImportFlagsKHR" alias="VkFenceImportFlags"/> + <type requires="VkSurfaceCounterFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceCounterFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineViewportSwizzleStateCreateFlagsNV</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDiscardRectangleStateCreateFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageToColorStateCreateFlagsNV</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageModulationStateCreateFlagsNV</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkValidationCacheCreateFlagsEXT</name>;</type> + <type requires="VkDebugUtilsMessageSeverityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageSeverityFlagsEXT</name>;</type> + <type requires="VkDebugUtilsMessageTypeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageTypeFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCreateFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCallbackDataFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type> + <type requires="VkDescriptorBindingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlagsEXT</name>;</type> + + <comment>Types which can be void pointers or class pointers, selected at compile time</comment> + <type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type> + <type category="handle" parent="VkInstance"><type>VK_DEFINE_HANDLE</type>(<name>VkPhysicalDevice</name>)</type> + <type category="handle" parent="VkPhysicalDevice"><type>VK_DEFINE_HANDLE</type>(<name>VkDevice</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_HANDLE</type>(<name>VkQueue</name>)</type> + <type category="handle" parent="VkCommandPool"><type>VK_DEFINE_HANDLE</type>(<name>VkCommandBuffer</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDeviceMemory</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCommandPool</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBuffer</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBufferView</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkImage</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkImageView</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkShaderModule</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipeline</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineLayout</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSampler</name>)</type> + <type category="handle" parent="VkDescriptorPool"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorSet</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorSetLayout</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorPool</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkFence</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSemaphore</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkEvent</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkQueryPool</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkFramebuffer</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkRenderPass</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineCache</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkObjectTableNVX</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectCommandsLayoutNVX</name>)</type> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorUpdateTemplate</name>)</type> + <type category="handle" name="VkDescriptorUpdateTemplateKHR" alias="VkDescriptorUpdateTemplate"/> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSamplerYcbcrConversion</name>)</type> + <type category="handle" name="VkSamplerYcbcrConversionKHR" alias="VkSamplerYcbcrConversion"/> + <type category="handle" parent="VkDevice"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkValidationCacheEXT</name>)</type> + + <comment>WSI extensions</comment> + <type category="handle"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayKHR</name>)</type> + <type category="handle" parent="VkPhysicalDevice,VkDisplayKHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayModeKHR</name>)</type> + <type category="handle" parent="VkInstance"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSurfaceKHR</name>)</type> + <type category="handle" parent="VkSurfaceKHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSwapchainKHR</name>)</type> + <type category="handle" parent="VkInstance"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDebugReportCallbackEXT</name>)</type> + <type category="handle" parent="VkInstance"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDebugUtilsMessengerEXT</name>)</type> + + <comment>Types generated from corresponding enums tags below</comment> + <type name="VkAttachmentLoadOp" category="enum"/> + <type name="VkAttachmentStoreOp" category="enum"/> + <type name="VkBlendFactor" category="enum"/> + <type name="VkBlendOp" category="enum"/> + <type name="VkBorderColor" category="enum"/> + <type name="VkFramebufferCreateFlagBits" category="enum"/> + <type name="VkQueryPoolCreateFlagBits" category="enum"/> + <type name="VkRenderPassCreateFlagBits" category="enum"/> + <type name="VkSamplerCreateFlagBits" category="enum"/> + <type name="VkPipelineCacheHeaderVersion" category="enum"/> + <type name="VkPipelineLayoutCreateFlagBits" category="enum"/> + <type name="VkPipelineCacheCreateFlagBits" category="enum"/> + <type name="VkPipelineDepthStencilStateCreateFlagBits" category="enum"/> + <type name="VkPipelineDynamicStateCreateFlagBits" category="enum"/> + <type name="VkPipelineColorBlendStateCreateFlagBits" category="enum"/> + <type name="VkPipelineMultisampleStateCreateFlagBits" category="enum"/> + <type name="VkPipelineRasterizationStateCreateFlagBits" category="enum"/> + <type name="VkPipelineViewportStateCreateFlagBits" category="enum"/> + <type name="VkPipelineTessellationStateCreateFlagBits" category="enum"/> + <type name="VkPipelineInputAssemblyStateCreateFlagBits" category="enum"/> + <type name="VkPipelineVertexInputStateCreateFlagBits" category="enum"/> + <type name="VkPipelineShaderStageCreateFlagBits" category="enum"/> + <type name="VkDescriptorSetLayoutCreateFlagBits" category="enum"/> + <type name="VkBufferViewCreateFlagBits" category="enum"/> + <type name="VkInstanceCreateFlagBits" category="enum"/> + <type name="VkDeviceQueueCreateFlagBits" category="enum"/> + <type name="VkBufferCreateFlagBits" category="enum"/> + <type name="VkBufferUsageFlagBits" category="enum"/> + <type name="VkColorComponentFlagBits" category="enum"/> + <type name="VkComponentSwizzle" category="enum"/> + <type name="VkCommandPoolCreateFlagBits" category="enum"/> + <type name="VkCommandPoolResetFlagBits" category="enum"/> + <type name="VkCommandBufferResetFlagBits" category="enum"/> + <type name="VkCommandBufferLevel" category="enum"/> + <type name="VkCommandBufferUsageFlagBits" category="enum"/> + <type name="VkCompareOp" category="enum"/> + <type name="VkCullModeFlagBits" category="enum"/> + <type name="VkDescriptorType" category="enum"/> + <type name="VkDeviceCreateFlagBits" category="enum"/> + <type name="VkDynamicState" category="enum"/> + <type name="VkFenceCreateFlagBits" category="enum"/> + <type name="VkPolygonMode" category="enum"/> + <type name="VkFormat" category="enum"/> + <type name="VkFormatFeatureFlagBits" category="enum"/> + <type name="VkFrontFace" category="enum"/> + <type name="VkImageAspectFlagBits" category="enum"/> + <type name="VkImageCreateFlagBits" category="enum"/> + <type name="VkImageLayout" category="enum"/> + <type name="VkImageTiling" category="enum"/> + <type name="VkImageType" category="enum"/> + <type name="VkImageUsageFlagBits" category="enum"/> + <type name="VkImageViewType" category="enum"/> + <type name="VkSharingMode" category="enum"/> + <type name="VkIndexType" category="enum"/> + <type name="VkLogicOp" category="enum"/> + <type name="VkMemoryHeapFlagBits" category="enum"/> + <type name="VkAccessFlagBits" category="enum"/> + <type name="VkMemoryPropertyFlagBits" category="enum"/> + <type name="VkPhysicalDeviceType" category="enum"/> + <type name="VkPipelineBindPoint" category="enum"/> + <type name="VkPipelineCreateFlagBits" category="enum"/> + <type name="VkPrimitiveTopology" category="enum"/> + <type name="VkQueryControlFlagBits" category="enum"/> + <type name="VkQueryPipelineStatisticFlagBits" category="enum"/> + <type name="VkQueryResultFlagBits" category="enum"/> + <type name="VkQueryType" category="enum"/> + <type name="VkQueueFlagBits" category="enum"/> + <type name="VkSubpassContents" category="enum"/> + <type name="VkResult" category="enum"/> + <type name="VkShaderStageFlagBits" category="enum"/> + <type name="VkSparseMemoryBindFlagBits" category="enum"/> + <type name="VkStencilFaceFlagBits" category="enum"/> + <type name="VkStencilOp" category="enum"/> + <type name="VkStructureType" category="enum"/> + <type name="VkSystemAllocationScope" category="enum"/> + <type name="VkInternalAllocationType" category="enum"/> + <type name="VkSamplerAddressMode" category="enum"/> + <type name="VkFilter" category="enum"/> + <type name="VkSamplerMipmapMode" category="enum"/> + <type name="VkVertexInputRate" category="enum"/> + <type name="VkPipelineStageFlagBits" category="enum"/> + <type name="VkSparseImageFormatFlagBits" category="enum"/> + <type name="VkSampleCountFlagBits" category="enum"/> + <type name="VkAttachmentDescriptionFlagBits" category="enum"/> + <type name="VkDescriptorPoolCreateFlagBits" category="enum"/> + <type name="VkDependencyFlagBits" category="enum"/> + <type name="VkObjectType" category="enum"/> + <type name="VkDescriptorBindingFlagBitsEXT" category="enum"/> + + <comment>Extensions</comment> + <type name="VkIndirectCommandsLayoutUsageFlagBitsNVX" category="enum"/> + <type name="VkIndirectCommandsTokenTypeNVX" category="enum"/> + <type name="VkObjectEntryUsageFlagBitsNVX" category="enum"/> + <type name="VkObjectEntryTypeNVX" category="enum"/> + <type name="VkDescriptorUpdateTemplateType" category="enum"/> + <type category="enum" name="VkDescriptorUpdateTemplateTypeKHR" alias="VkDescriptorUpdateTemplateType"/> + <type name="VkViewportCoordinateSwizzleNV" category="enum"/> + <type name="VkDiscardRectangleModeEXT" category="enum"/> + <type name="VkSubpassDescriptionFlagBits" category="enum"/> + <type name="VkPointClippingBehavior" category="enum"/> + <type category="enum" name="VkPointClippingBehaviorKHR" alias="VkPointClippingBehavior"/> + <type name="VkCoverageModulationModeNV" category="enum"/> + <type name="VkValidationCacheHeaderVersionEXT" category="enum"/> + <type name="VkShaderInfoTypeAMD" category="enum"/> + <type name="VkQueueGlobalPriorityEXT" category="enum"/> + <type name="VkConservativeRasterizationModeEXT" category="enum"/> + + <comment>WSI extensions</comment> + <type name="VkColorSpaceKHR" category="enum"/> + <type name="VkCompositeAlphaFlagBitsKHR" category="enum"/> + <type name="VkDisplayPlaneAlphaFlagBitsKHR" category="enum"/> + <type name="VkPresentModeKHR" category="enum"/> + <type name="VkSurfaceTransformFlagBitsKHR" category="enum"/> + <type name="VkDebugReportFlagBitsEXT" category="enum"/> + <type name="VkDebugReportObjectTypeEXT" category="enum"/> + <type name="VkRasterizationOrderAMD" category="enum"/> + <type name="VkExternalMemoryHandleTypeFlagBitsNV" category="enum"/> + <type name="VkExternalMemoryFeatureFlagBitsNV" category="enum"/> + <type name="VkValidationCheckEXT" category="enum"/> + <type name="VkExternalMemoryHandleTypeFlagBits" category="enum"/> + <type category="enum" name="VkExternalMemoryHandleTypeFlagBitsKHR" alias="VkExternalMemoryHandleTypeFlagBits"/> + <type name="VkExternalMemoryFeatureFlagBits" category="enum"/> + <type category="enum" name="VkExternalMemoryFeatureFlagBitsKHR" alias="VkExternalMemoryFeatureFlagBits"/> + <type name="VkExternalSemaphoreHandleTypeFlagBits" category="enum"/> + <type category="enum" name="VkExternalSemaphoreHandleTypeFlagBitsKHR" alias="VkExternalSemaphoreHandleTypeFlagBits"/> + <type name="VkExternalSemaphoreFeatureFlagBits" category="enum"/> + <type category="enum" name="VkExternalSemaphoreFeatureFlagBitsKHR" alias="VkExternalSemaphoreFeatureFlagBits"/> + <type name="VkSemaphoreImportFlagBits" category="enum"/> + <type category="enum" name="VkSemaphoreImportFlagBitsKHR" alias="VkSemaphoreImportFlagBits"/> + <type name="VkExternalFenceHandleTypeFlagBits" category="enum"/> + <type category="enum" name="VkExternalFenceHandleTypeFlagBitsKHR" alias="VkExternalFenceHandleTypeFlagBits"/> + <type name="VkExternalFenceFeatureFlagBits" category="enum"/> + <type category="enum" name="VkExternalFenceFeatureFlagBitsKHR" alias="VkExternalFenceFeatureFlagBits"/> + <type name="VkFenceImportFlagBits" category="enum"/> + <type category="enum" name="VkFenceImportFlagBitsKHR" alias="VkFenceImportFlagBits"/> + <type name="VkSurfaceCounterFlagBitsEXT" category="enum"/> + <type name="VkDisplayPowerStateEXT" category="enum"/> + <type name="VkDeviceEventTypeEXT" category="enum"/> + <type name="VkDisplayEventTypeEXT" category="enum"/> + <type name="VkPeerMemoryFeatureFlagBits" category="enum"/> + <type category="enum" name="VkPeerMemoryFeatureFlagBitsKHR" alias="VkPeerMemoryFeatureFlagBits"/> + <type name="VkMemoryAllocateFlagBits" category="enum"/> + <type category="enum" name="VkMemoryAllocateFlagBitsKHR" alias="VkMemoryAllocateFlagBits"/> + <type name="VkDeviceGroupPresentModeFlagBitsKHR" category="enum"/> + <type name="VkSwapchainCreateFlagBitsKHR" category="enum"/> + <type name="VkSubgroupFeatureFlagBits" category="enum"/> + <type name="VkTessellationDomainOrigin" category="enum"/> + <type category="enum" name="VkTessellationDomainOriginKHR" alias="VkTessellationDomainOrigin"/> + <type name="VkSamplerYcbcrModelConversion" category="enum"/> + <type category="enum" name="VkSamplerYcbcrModelConversionKHR" alias="VkSamplerYcbcrModelConversion"/> + <type name="VkSamplerYcbcrRange" category="enum"/> + <type category="enum" name="VkSamplerYcbcrRangeKHR" alias="VkSamplerYcbcrRange"/> + <type name="VkChromaLocation" category="enum"/> + <type category="enum" name="VkChromaLocationKHR" alias="VkChromaLocation"/> + <type name="VkSamplerReductionModeEXT" category="enum"/> + <type name="VkBlendOverlapEXT" category="enum"/> + <type name="VkDebugUtilsMessageSeverityFlagBitsEXT" category="enum"/> + <type name="VkDebugUtilsMessageTypeFlagBitsEXT" category="enum"/> + + <comment>The PFN_vk*Function types are used by VkAllocationCallbacks below</comment> + <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalAllocationNotification</name>)( + <type>void</type>* pUserData, + <type>size_t</type> size, + <type>VkInternalAllocationType</type> allocationType, + <type>VkSystemAllocationScope</type> allocationScope);</type> + <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalFreeNotification</name>)( + <type>void</type>* pUserData, + <type>size_t</type> size, + <type>VkInternalAllocationType</type> allocationType, + <type>VkSystemAllocationScope</type> allocationScope);</type> + <type category="funcpointer">typedef void* (VKAPI_PTR *<name>PFN_vkReallocationFunction</name>)( + <type>void</type>* pUserData, + <type>void</type>* pOriginal, + <type>size_t</type> size, + <type>size_t</type> alignment, + <type>VkSystemAllocationScope</type> allocationScope);</type> + <type category="funcpointer">typedef void* (VKAPI_PTR *<name>PFN_vkAllocationFunction</name>)( + <type>void</type>* pUserData, + <type>size_t</type> size, + <type>size_t</type> alignment, + <type>VkSystemAllocationScope</type> allocationScope);</type> + <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkFreeFunction</name>)( + <type>void</type>* pUserData, + <type>void</type>* pMemory);</type> + + <comment>The PFN_vkVoidFunction type are used by VkGet*ProcAddr below</comment> + <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkVoidFunction</name>)(void);</type> + + <comment>The PFN_vkDebugReportCallbackEXT type are used by the DEBUG_REPORT extension</comment> + <type category="funcpointer">typedef VkBool32 (VKAPI_PTR *<name>PFN_vkDebugReportCallbackEXT</name>)( + <type>VkDebugReportFlagsEXT</type> flags, + <type>VkDebugReportObjectTypeEXT</type> objectType, + <type>uint64_t</type> object, + <type>size_t</type> location, + <type>int32_t</type> messageCode, + const <type>char</type>* pLayerPrefix, + const <type>char</type>* pMessage, + <type>void</type>* pUserData);</type> + + <comment>The PFN_vkDebugUtilsMessengerCallbackEXT type are used by the VK_EXT_debug_utils extension</comment> + <type category="funcpointer" requires="VkDebugUtilsMessengerCallbackDataEXT">typedef VkBool32 (VKAPI_PTR *<name>PFN_vkDebugUtilsMessengerCallbackEXT</name>)( + <type>VkDebugUtilsMessageSeverityFlagBitsEXT</type> messageSeverity, + <type>VkDebugUtilsMessageTypeFlagsEXT</type> messageType, + const <type>VkDebugUtilsMessengerCallbackDataEXT</type>* pCallbackData, + <type>void</type>* pUserData);</type> + + <comment>Struct types</comment> + <type category="struct" name="VkOffset2D"> + <member><type>int32_t</type> <name>x</name></member> + <member><type>int32_t</type> <name>y</name></member> + </type> + <type category="struct" name="VkOffset3D"> + <member><type>int32_t</type> <name>x</name></member> + <member><type>int32_t</type> <name>y</name></member> + <member><type>int32_t</type> <name>z</name></member> + </type> + <type category="struct" name="VkExtent2D"> + <member><type>uint32_t</type> <name>width</name></member> + <member><type>uint32_t</type> <name>height</name></member> + </type> + <type category="struct" name="VkExtent3D"> + <member><type>uint32_t</type> <name>width</name></member> + <member><type>uint32_t</type> <name>height</name></member> + <member><type>uint32_t</type> <name>depth</name></member> + </type> + <type category="struct" name="VkViewport"> + <member><type>float</type> <name>x</name></member> + <member><type>float</type> <name>y</name></member> + <member><type>float</type> <name>width</name></member> + <member><type>float</type> <name>height</name></member> + <member><type>float</type> <name>minDepth</name></member> + <member><type>float</type> <name>maxDepth</name></member> + </type> + <type category="struct" name="VkRect2D"> + <member><type>VkOffset2D</type> <name>offset</name></member> + <member><type>VkExtent2D</type> <name>extent</name></member> + </type> + <type category="struct" name="VkClearRect"> + <member><type>VkRect2D</type> <name>rect</name></member> + <member><type>uint32_t</type> <name>baseArrayLayer</name></member> + <member><type>uint32_t</type> <name>layerCount</name></member> + </type> + <type category="struct" name="VkComponentMapping"> + <member><type>VkComponentSwizzle</type> <name>r</name></member> + <member><type>VkComponentSwizzle</type> <name>g</name></member> + <member><type>VkComponentSwizzle</type> <name>b</name></member> + <member><type>VkComponentSwizzle</type> <name>a</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceProperties" returnedonly="true"> + <member><type>uint32_t</type> <name>apiVersion</name></member> + <member><type>uint32_t</type> <name>driverVersion</name></member> + <member><type>uint32_t</type> <name>vendorID</name></member> + <member><type>uint32_t</type> <name>deviceID</name></member> + <member><type>VkPhysicalDeviceType</type> <name>deviceType</name></member> + <member><type>char</type> <name>deviceName</name>[<enum>VK_MAX_PHYSICAL_DEVICE_NAME_SIZE</enum>]</member> + <member><type>uint8_t</type> <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member> + <member><type>VkPhysicalDeviceLimits</type> <name>limits</name></member> + <member><type>VkPhysicalDeviceSparseProperties</type> <name>sparseProperties</name></member> + </type> + <type category="struct" name="VkExtensionProperties" returnedonly="true"> + <member><type>char</type> <name>extensionName</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]<comment>extension name</comment></member> + <member><type>uint32_t</type> <name>specVersion</name><comment>version of the extension specification implemented</comment></member> + </type> + <type category="struct" name="VkLayerProperties" returnedonly="true"> + <member><type>char</type> <name>layerName</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]<comment>layer name</comment></member> + <member><type>uint32_t</type> <name>specVersion</name><comment>version of the layer specification implemented</comment></member> + <member><type>uint32_t</type> <name>implementationVersion</name><comment>build or release version of the layer's library</comment></member> + <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]<comment>Free-form description of the layer</comment></member> + </type> + <type category="struct" name="VkApplicationInfo"> + <member values="VK_STRUCTURE_TYPE_APPLICATION_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true" len="null-terminated">const <type>char</type>* <name>pApplicationName</name></member> + <member><type>uint32_t</type> <name>applicationVersion</name></member> + <member optional="true" len="null-terminated">const <type>char</type>* <name>pEngineName</name></member> + <member><type>uint32_t</type> <name>engineVersion</name></member> + <member><type>uint32_t</type> <name>apiVersion</name></member> + </type> + <type category="struct" name="VkAllocationCallbacks"> + <member optional="true"><type>void</type>* <name>pUserData</name></member> + <member><type>PFN_vkAllocationFunction</type> <name>pfnAllocation</name></member> + <member><type>PFN_vkReallocationFunction</type> <name>pfnReallocation</name></member> + <member><type>PFN_vkFreeFunction</type> <name>pfnFree</name></member> + <member optional="true"><type>PFN_vkInternalAllocationNotification</type> <name>pfnInternalAllocation</name></member> + <member optional="true"><type>PFN_vkInternalFreeNotification</type> <name>pfnInternalFree</name></member> + </type> + <type category="struct" name="VkDeviceQueueCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDeviceQueueCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>queueFamilyIndex</name></member> + <member><type>uint32_t</type> <name>queueCount</name></member> + <member len="queueCount">const <type>float</type>* <name>pQueuePriorities</name></member> + </type> + <type category="struct" name="VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDeviceCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>queueCreateInfoCount</name></member> + <member len="queueCreateInfoCount">const <type>VkDeviceQueueCreateInfo</type>* <name>pQueueCreateInfos</name></member> + <member optional="true"><type>uint32_t</type> <name>enabledLayerCount</name></member> + <member len="enabledLayerCount,null-terminated">const <type>char</type>* const* <name>ppEnabledLayerNames</name><comment>Ordered list of layer names to be enabled</comment></member> + <member optional="true"><type>uint32_t</type> <name>enabledExtensionCount</name></member> + <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name></member> + <member optional="true">const <type>VkPhysicalDeviceFeatures</type>* <name>pEnabledFeatures</name></member> + </type> + <type category="struct" name="VkInstanceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkInstanceCreateFlags</type> <name>flags</name></member> + <member optional="true">const <type>VkApplicationInfo</type>* <name>pApplicationInfo</name></member> + <member optional="true"><type>uint32_t</type> <name>enabledLayerCount</name></member> + <member len="enabledLayerCount,null-terminated">const <type>char</type>* const* <name>ppEnabledLayerNames</name><comment>Ordered list of layer names to be enabled</comment></member> + <member optional="true"><type>uint32_t</type> <name>enabledExtensionCount</name></member> + <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name><comment>Extension names to be enabled</comment></member> + </type> + <type category="struct" name="VkQueueFamilyProperties" returnedonly="true"> + <member optional="true"><type>VkQueueFlags</type> <name>queueFlags</name><comment>Queue flags</comment></member> + <member><type>uint32_t</type> <name>queueCount</name></member> + <member><type>uint32_t</type> <name>timestampValidBits</name></member> + <member><type>VkExtent3D</type> <name>minImageTransferGranularity</name><comment>Minimum alignment requirement for image transfers</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceMemoryProperties" returnedonly="true"> + <member><type>uint32_t</type> <name>memoryTypeCount</name></member> + <member><type>VkMemoryType</type> <name>memoryTypes</name>[<enum>VK_MAX_MEMORY_TYPES</enum>]</member> + <member><type>uint32_t</type> <name>memoryHeapCount</name></member> + <member><type>VkMemoryHeap</type> <name>memoryHeaps</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member> + </type> + <type category="struct" name="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceSize</type> <name>allocationSize</name><comment>Size of memory allocation</comment></member> + <member><type>uint32_t</type> <name>memoryTypeIndex</name><comment>Index of the of the memory type to allocate from</comment></member> + </type> + <type category="struct" name="VkMemoryRequirements" returnedonly="true"> + <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>alignment</name><comment>Specified in bytes</comment></member> + <member><type>uint32_t</type> <name>memoryTypeBits</name><comment>Bitmask of the allowed memory type indices into memoryTypes[] for this object</comment></member> + </type> + <type category="struct" name="VkSparseImageFormatProperties" returnedonly="true"> + <member optional="true"><type>VkImageAspectFlags</type> <name>aspectMask</name></member> + <member><type>VkExtent3D</type> <name>imageGranularity</name></member> + <member optional="true"><type>VkSparseImageFormatFlags</type> <name>flags</name></member> + </type> + <type category="struct" name="VkSparseImageMemoryRequirements" returnedonly="true"> + <member><type>VkSparseImageFormatProperties</type> <name>formatProperties</name></member> + <member><type>uint32_t</type> <name>imageMipTailFirstLod</name></member> + <member><type>VkDeviceSize</type> <name>imageMipTailSize</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member> + <member><type>VkDeviceSize</type> <name>imageMipTailOffset</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member> + <member><type>VkDeviceSize</type> <name>imageMipTailStride</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member> + </type> + <type category="struct" name="VkMemoryType" returnedonly="true"> + <member optional="true"><type>VkMemoryPropertyFlags</type> <name>propertyFlags</name><comment>Memory properties of this memory type</comment></member> + <member><type>uint32_t</type> <name>heapIndex</name><comment>Index of the memory heap allocations of this memory type are taken from</comment></member> + </type> + <type category="struct" name="VkMemoryHeap" returnedonly="true"> + <member><type>VkDeviceSize</type> <name>size</name><comment>Available memory in the heap</comment></member> + <member optional="true"><type>VkMemoryHeapFlags</type> <name>flags</name><comment>Flags for the heap</comment></member> + </type> + <type category="struct" name="VkMappedMemoryRange"> + <member values="VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceMemory</type> <name>memory</name><comment>Mapped memory object</comment></member> + <member><type>VkDeviceSize</type> <name>offset</name><comment>Offset within the memory object where the range starts</comment></member> + <member><type>VkDeviceSize</type> <name>size</name><comment>Size of the range within the memory object</comment></member> + </type> + <type category="struct" name="VkFormatProperties" returnedonly="true"> + <member optional="true"><type>VkFormatFeatureFlags</type> <name>linearTilingFeatures</name><comment>Format features in case of linear tiling</comment></member> + <member optional="true"><type>VkFormatFeatureFlags</type> <name>optimalTilingFeatures</name><comment>Format features in case of optimal tiling</comment></member> + <member optional="true"><type>VkFormatFeatureFlags</type> <name>bufferFeatures</name><comment>Format features supported by buffers</comment></member> + </type> + <type category="struct" name="VkImageFormatProperties" returnedonly="true"> + <member><type>VkExtent3D</type> <name>maxExtent</name><comment>max image dimensions for this resource type</comment></member> + <member><type>uint32_t</type> <name>maxMipLevels</name><comment>max number of mipmap levels for this resource type</comment></member> + <member><type>uint32_t</type> <name>maxArrayLayers</name><comment>max array size for this resource type</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>sampleCounts</name><comment>supported sample counts for this resource type</comment></member> + <member><type>VkDeviceSize</type> <name>maxResourceSize</name><comment>max size (in bytes) of this resource type</comment></member> + </type> + <type category="struct" name="VkDescriptorBufferInfo"> + <member><type>VkBuffer</type> <name>buffer</name><comment>Buffer used for this descriptor slot when the descriptor is UNIFORM_BUFFER[_DYNAMIC] or STORAGE_BUFFER[_DYNAMIC]. VK_NULL_HANDLE otherwise.</comment></member> + <member><type>VkDeviceSize</type> <name>offset</name><comment>Base offset from buffer start in bytes to update in the descriptor set.</comment></member> + <member><type>VkDeviceSize</type> <name>range</name><comment>Size in bytes of the buffer resource for this descriptor update.</comment></member> + </type> + <type category="struct" name="VkDescriptorImageInfo"> + <member noautovalidity="true"><type>VkSampler</type> <name>sampler</name><comment>Sampler to write to the descriptor in case it is a SAMPLER or COMBINED_IMAGE_SAMPLER descriptor. Ignored otherwise.</comment></member> + <member noautovalidity="true"><type>VkImageView</type> <name>imageView</name><comment>Image view to write to the descriptor in case it is a SAMPLED_IMAGE, STORAGE_IMAGE, COMBINED_IMAGE_SAMPLER, or INPUT_ATTACHMENT descriptor. Ignored otherwise.</comment></member> + <member noautovalidity="true"><type>VkImageLayout</type> <name>imageLayout</name><comment>Layout the image is expected to be in when accessed using this descriptor (only used if imageView is not VK_NULL_HANDLE).</comment></member> + </type> + <type category="struct" name="VkWriteDescriptorSet"> + <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member noautovalidity="true"><type>VkDescriptorSet</type> <name>dstSet</name><comment>Destination descriptor set</comment></member> + <member><type>uint32_t</type> <name>dstBinding</name><comment>Binding within the destination descriptor set to write</comment></member> + <member><type>uint32_t</type> <name>dstArrayElement</name><comment>Array element within the destination binding to write</comment></member> + <member><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors to write (determines the size of the array pointed by pDescriptors)</comment></member> + <member><type>VkDescriptorType</type> <name>descriptorType</name><comment>Descriptor type to write (determines which members of the array pointed by pDescriptors are going to be used)</comment></member> + <member noautovalidity="true" len="descriptorCount">const <type>VkDescriptorImageInfo</type>* <name>pImageInfo</name><comment>Sampler, image view, and layout for SAMPLER, COMBINED_IMAGE_SAMPLER, {SAMPLED,STORAGE}_IMAGE, and INPUT_ATTACHMENT descriptor types.</comment></member> + <member noautovalidity="true" len="descriptorCount">const <type>VkDescriptorBufferInfo</type>* <name>pBufferInfo</name><comment>Raw buffer, size, and offset for {UNIFORM,STORAGE}_BUFFER[_DYNAMIC] descriptor types.</comment></member> + <member noautovalidity="true" len="descriptorCount">const <type>VkBufferView</type>* <name>pTexelBufferView</name><comment>Buffer view to write to the descriptor for {UNIFORM,STORAGE}_TEXEL_BUFFER descriptor types.</comment></member> + </type> + <type category="struct" name="VkCopyDescriptorSet"> + <member values="VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDescriptorSet</type> <name>srcSet</name><comment>Source descriptor set</comment></member> + <member><type>uint32_t</type> <name>srcBinding</name><comment>Binding within the source descriptor set to copy from</comment></member> + <member><type>uint32_t</type> <name>srcArrayElement</name><comment>Array element within the source binding to copy from</comment></member> + <member><type>VkDescriptorSet</type> <name>dstSet</name><comment>Destination descriptor set</comment></member> + <member><type>uint32_t</type> <name>dstBinding</name><comment>Binding within the destination descriptor set to copy to</comment></member> + <member><type>uint32_t</type> <name>dstArrayElement</name><comment>Array element within the destination binding to copy to</comment></member> + <member><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors to write (determines the size of the array pointed by pDescriptors)</comment></member> + </type> + <type category="struct" name="VkBufferCreateInfo"> + <member values="VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkBufferCreateFlags</type> <name>flags</name><comment>Buffer creation flags</comment></member> + <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member> + <member><type>VkBufferUsageFlags</type> <name>usage</name><comment>Buffer usage flags</comment></member> + <member><type>VkSharingMode</type> <name>sharingMode</name></member> + <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name></member> + <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name></member> + </type> + <type category="struct" name="VkBufferViewCreateInfo"> + <member values="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</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> + <member><type>VkDeviceSize</type> <name>range</name><comment>View size specified in bytes</comment></member> + </type> + <type category="struct" name="VkImageSubresource"> + <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member> + <member><type>uint32_t</type> <name>mipLevel</name></member> + <member><type>uint32_t</type> <name>arrayLayer</name></member> + </type> + <type category="struct" name="VkImageSubresourceLayers"> + <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member> + <member><type>uint32_t</type> <name>mipLevel</name></member> + <member><type>uint32_t</type> <name>baseArrayLayer</name></member> + <member><type>uint32_t</type> <name>layerCount</name></member> + </type> + <type category="struct" name="VkImageSubresourceRange"> + <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member> + <member><type>uint32_t</type> <name>baseMipLevel</name></member> + <member><type>uint32_t</type> <name>levelCount</name></member> + <member><type>uint32_t</type> <name>baseArrayLayer</name></member> + <member><type>uint32_t</type> <name>layerCount</name></member> + </type> + <type category="struct" name="VkMemoryBarrier"> + <member values="VK_STRUCTURE_TYPE_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member> + <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member> + </type> + <type category="struct" name="VkBufferMemoryBarrier"> + <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member> + <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member> + <member><type>uint32_t</type> <name>srcQueueFamilyIndex</name><comment>Queue family to transition ownership from</comment></member> + <member><type>uint32_t</type> <name>dstQueueFamilyIndex</name><comment>Queue family to transition ownership to</comment></member> + <member><type>VkBuffer</type> <name>buffer</name><comment>Buffer to sync</comment></member> + <member><type>VkDeviceSize</type> <name>offset</name><comment>Offset within the buffer to sync</comment></member> + <member><type>VkDeviceSize</type> <name>size</name><comment>Amount of bytes to sync</comment></member> + </type> + <type category="struct" name="VkImageMemoryBarrier"> + <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member> + <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member> + <member><type>VkImageLayout</type> <name>oldLayout</name><comment>Current layout of the image</comment></member> + <member><type>VkImageLayout</type> <name>newLayout</name><comment>New layout to transition the image to</comment></member> + <member><type>uint32_t</type> <name>srcQueueFamilyIndex</name><comment>Queue family to transition ownership from</comment></member> + <member><type>uint32_t</type> <name>dstQueueFamilyIndex</name><comment>Queue family to transition ownership to</comment></member> + <member><type>VkImage</type> <name>image</name><comment>Image to sync</comment></member> + <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name><comment>Subresource range to sync</comment></member> + </type> + <type category="struct" name="VkImageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkImageCreateFlags</type> <name>flags</name><comment>Image creation flags</comment></member> + <member><type>VkImageType</type> <name>imageType</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>VkExtent3D</type> <name>extent</name></member> + <member><type>uint32_t</type> <name>mipLevels</name></member> + <member><type>uint32_t</type> <name>arrayLayers</name></member> + <member><type>VkSampleCountFlagBits</type> <name>samples</name></member> + <member><type>VkImageTiling</type> <name>tiling</name></member> + <member><type>VkImageUsageFlags</type> <name>usage</name><comment>Image usage flags</comment></member> + <member><type>VkSharingMode</type> <name>sharingMode</name><comment>Cross-queue-family sharing mode</comment></member> + <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name><comment>Number of queue families to share across</comment></member> + <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name><comment>Array of queue family indices to share across</comment></member> + <member><type>VkImageLayout</type> <name>initialLayout</name><comment>Initial image layout for all subresources</comment></member> + </type> + <type category="struct" name="VkSubresourceLayout" returnedonly="true"> + <member><type>VkDeviceSize</type> <name>offset</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>rowPitch</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>arrayPitch</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>depthPitch</name><comment>Specified in bytes</comment></member> + </type> + <type category="struct" name="VkImageViewCreateInfo"> + <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkImageViewCreateFlags</type> <name>flags</name></member> + <member><type>VkImage</type> <name>image</name></member> + <member><type>VkImageViewType</type> <name>viewType</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>VkComponentMapping</type> <name>components</name></member> + <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name></member> + </type> + <type category="struct" name="VkBufferCopy"> + <member><type>VkDeviceSize</type> <name>srcOffset</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>dstOffset</name><comment>Specified in bytes</comment></member> + <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member> + </type> + <type category="struct" name="VkSparseMemoryBind"> + <member><type>VkDeviceSize</type> <name>resourceOffset</name><comment>Specified in bytes</comment></member> + <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> + </type> + <type category="struct" name="VkSparseImageMemoryBind"> + <member><type>VkImageSubresource</type> <name>subresource</name></member> + <member><type>VkOffset3D</type> <name>offset</name></member> + <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> + </type> + <type category="struct" name="VkSparseBufferMemoryBindInfo"> + <member><type>VkBuffer</type> <name>buffer</name></member> + <member><type>uint32_t</type> <name>bindCount</name></member> + <member len="bindCount">const <type>VkSparseMemoryBind</type>* <name>pBinds</name></member> + </type> + <type category="struct" name="VkSparseImageOpaqueMemoryBindInfo"> + <member><type>VkImage</type> <name>image</name></member> + <member><type>uint32_t</type> <name>bindCount</name></member> + <member len="bindCount">const <type>VkSparseMemoryBind</type>* <name>pBinds</name></member> + </type> + <type category="struct" name="VkSparseImageMemoryBindInfo"> + <member><type>VkImage</type> <name>image</name></member> + <member><type>uint32_t</type> <name>bindCount</name></member> + <member len="bindCount">const <type>VkSparseImageMemoryBind</type>* <name>pBinds</name></member> + </type> + <type category="struct" name="VkBindSparseInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> + <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member> + <member optional="true"><type>uint32_t</type> <name>bufferBindCount</name></member> + <member len="bufferBindCount">const <type>VkSparseBufferMemoryBindInfo</type>* <name>pBufferBinds</name></member> + <member optional="true"><type>uint32_t</type> <name>imageOpaqueBindCount</name></member> + <member len="imageOpaqueBindCount">const <type>VkSparseImageOpaqueMemoryBindInfo</type>* <name>pImageOpaqueBinds</name></member> + <member optional="true"><type>uint32_t</type> <name>imageBindCount</name></member> + <member len="imageBindCount">const <type>VkSparseImageMemoryBindInfo</type>* <name>pImageBinds</name></member> + <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member> + <member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member> + </type> + <type category="struct" name="VkImageCopy"> + <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member> + <member><type>VkOffset3D</type> <name>srcOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member> + <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member> + <member><type>VkOffset3D</type> <name>dstOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member> + <member><type>VkExtent3D</type> <name>extent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member> + </type> + <type category="struct" name="VkImageBlit"> + <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member> + <member><type>VkOffset3D</type> <name>srcOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member> + <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member> + <member><type>VkOffset3D</type> <name>dstOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member> + </type> + <type category="struct" name="VkBufferImageCopy"> + <member><type>VkDeviceSize</type> <name>bufferOffset</name><comment>Specified in bytes</comment></member> + <member><type>uint32_t</type> <name>bufferRowLength</name><comment>Specified in texels</comment></member> + <member><type>uint32_t</type> <name>bufferImageHeight</name></member> + <member><type>VkImageSubresourceLayers</type> <name>imageSubresource</name></member> + <member><type>VkOffset3D</type> <name>imageOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member> + <member><type>VkExtent3D</type> <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member> + </type> + <type category="struct" name="VkImageResolve"> + <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member> + <member><type>VkOffset3D</type> <name>srcOffset</name></member> + <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member> + <member><type>VkOffset3D</type> <name>dstOffset</name></member> + <member><type>VkExtent3D</type> <name>extent</name></member> + </type> + <type category="struct" name="VkShaderModuleCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkShaderModuleCreateFlags</type> <name>flags</name></member> + <member><type>size_t</type> <name>codeSize</name><comment>Specified in bytes</comment></member> + <member len="latexmath:[codeSize \over 4]" altlen="codeSize / 4">const <type>uint32_t</type>* <name>pCode</name><comment>Binary code of size codeSize</comment></member> + </type> + <type category="struct" name="VkDescriptorSetLayoutBinding"> + <member><type>uint32_t</type> <name>binding</name><comment>Binding number for this entry</comment></member> + <member><type>VkDescriptorType</type> <name>descriptorType</name><comment>Type of the descriptors in this binding</comment></member> + <member optional="true"><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors in this binding</comment></member> + <member noautovalidity="true"><type>VkShaderStageFlags</type> <name>stageFlags</name><comment>Shader stages this binding is visible to</comment></member> + <member noautovalidity="true" optional="true" len="descriptorCount">const <type>VkSampler</type>* <name>pImmutableSamplers</name><comment>Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains count number of elements)</comment></member> + </type> + <type category="struct" name="VkDescriptorSetLayoutCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDescriptorSetLayoutCreateFlags</type> <name>flags</name></member> + <member optional="true"><type>uint32_t</type> <name>bindingCount</name><comment>Number of bindings in the descriptor set layout</comment></member> + <member len="bindingCount">const <type>VkDescriptorSetLayoutBinding</type>* <name>pBindings</name><comment>Array of descriptor set layout bindings</comment></member> + </type> + <type category="struct" name="VkDescriptorPoolSize"> + <member><type>VkDescriptorType</type> <name>type</name></member> + <member><type>uint32_t</type> <name>descriptorCount</name></member> + </type> + <type category="struct" name="VkDescriptorPoolCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDescriptorPoolCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>maxSets</name></member> + <member><type>uint32_t</type> <name>poolSizeCount</name></member> + <member len="poolSizeCount">const <type>VkDescriptorPoolSize</type>* <name>pPoolSizes</name></member> + </type> + <type category="struct" name="VkDescriptorSetAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDescriptorPool</type> <name>descriptorPool</name></member> + <member><type>uint32_t</type> <name>descriptorSetCount</name></member> + <member len="descriptorSetCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></member> + </type> + <type category="struct" name="VkSpecializationMapEntry"> + <member><type>uint32_t</type> <name>constantID</name><comment>The SpecConstant ID specified in the BIL</comment></member> + <member><type>uint32_t</type> <name>offset</name><comment>Offset of the value in the data block</comment></member> + <member><type>size_t</type> <name>size</name><comment>Size in bytes of the SpecConstant</comment></member> + </type> + <type category="struct" name="VkSpecializationInfo"> + <member optional="true"><type>uint32_t</type> <name>mapEntryCount</name><comment>Number of entries in the map</comment></member> + <member len="mapEntryCount" noautovalidity="true">const <type>VkSpecializationMapEntry</type>* <name>pMapEntries</name><comment>Array of map entries</comment></member> + <member optional="true"><type>size_t</type> <name>dataSize</name><comment>Size in bytes of pData</comment></member> + <member len="dataSize">const <type>void</type>* <name>pData</name><comment>Pointer to SpecConstant data</comment></member> + </type> + <type category="struct" name="VkPipelineShaderStageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineShaderStageCreateFlags</type> <name>flags</name></member> + <member><type>VkShaderStageFlagBits</type> <name>stage</name><comment>Shader stage</comment></member> + <member><type>VkShaderModule</type> <name>module</name><comment>Module containing entry point</comment></member> + <member len="null-terminated">const <type>char</type>* <name>pName</name><comment>Null-terminated entry point name</comment></member> + <member optional="true">const <type>VkSpecializationInfo</type>* <name>pSpecializationInfo</name></member> + </type> + <type category="struct" name="VkComputePipelineCreateInfo"> + <member values="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineCreateFlags</type> <name>flags</name><comment>Pipeline creation flags</comment></member> + <member><type>VkPipelineShaderStageCreateInfo</type> <name>stage</name></member> + <member><type>VkPipelineLayout</type> <name>layout</name><comment>Interface layout of the pipeline</comment></member> + <member noautovalidity="true" optional="true"><type>VkPipeline</type> <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member> + <member><type>int32_t</type> <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member> + </type> + <type category="struct" name="VkVertexInputBindingDescription"> + <member><type>uint32_t</type> <name>binding</name><comment>Vertex buffer binding id</comment></member> + <member><type>uint32_t</type> <name>stride</name><comment>Distance between vertices in bytes (0 = no advancement)</comment></member> + <member><type>VkVertexInputRate</type> <name>inputRate</name><comment>The rate at which the vertex data is consumed</comment></member> + </type> + <type category="struct" name="VkVertexInputAttributeDescription"> + <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> + <member><type>VkFormat</type> <name>format</name><comment>format of source data</comment></member> + <member><type>uint32_t</type> <name>offset</name><comment>Offset of first element in bytes from base of vertex</comment></member> + </type> + <type category="struct" name="VkPipelineVertexInputStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineVertexInputStateCreateFlags</type> <name>flags</name></member> + <member optional="true"><type>uint32_t</type> <name>vertexBindingDescriptionCount</name><comment>number of bindings</comment></member> + <member len="vertexBindingDescriptionCount">const <type>VkVertexInputBindingDescription</type>* <name>pVertexBindingDescriptions</name></member> + <member optional="true"><type>uint32_t</type> <name>vertexAttributeDescriptionCount</name><comment>number of attributes</comment></member> + <member len="vertexAttributeDescriptionCount">const <type>VkVertexInputAttributeDescription</type>* <name>pVertexAttributeDescriptions</name></member> + </type> + <type category="struct" name="VkPipelineInputAssemblyStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineInputAssemblyStateCreateFlags</type> <name>flags</name></member> + <member><type>VkPrimitiveTopology</type> <name>topology</name></member> + <member><type>VkBool32</type> <name>primitiveRestartEnable</name></member> + </type> + <type category="struct" name="VkPipelineTessellationStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineTessellationStateCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>patchControlPoints</name></member> + </type> + <type category="struct" name="VkPipelineViewportStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineViewportStateCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>viewportCount</name></member> + <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></member> + <member><type>uint32_t</type> <name>scissorCount</name></member> + <member noautovalidity="true" optional="true" len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></member> + </type> + <type category="struct" name="VkPipelineRasterizationStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineRasterizationStateCreateFlags</type> <name>flags</name></member> + <member><type>VkBool32</type> <name>depthClampEnable</name></member> + <member><type>VkBool32</type> <name>rasterizerDiscardEnable</name></member> + <member><type>VkPolygonMode</type> <name>polygonMode</name><comment>optional (GL45)</comment></member> + <member optional="true"><type>VkCullModeFlags</type> <name>cullMode</name></member> + <member><type>VkFrontFace</type> <name>frontFace</name></member> + <member><type>VkBool32</type> <name>depthBiasEnable</name></member> + <member><type>float</type> <name>depthBiasConstantFactor</name></member> + <member><type>float</type> <name>depthBiasClamp</name></member> + <member><type>float</type> <name>depthBiasSlopeFactor</name></member> + <member><type>float</type> <name>lineWidth</name></member> + </type> + <type category="struct" name="VkPipelineMultisampleStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineMultisampleStateCreateFlags</type> <name>flags</name></member> + <member><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name><comment>Number of samples used for rasterization</comment></member> + <member><type>VkBool32</type> <name>sampleShadingEnable</name><comment>optional (GL45)</comment></member> + <member><type>float</type> <name>minSampleShading</name><comment>optional (GL45)</comment></member> + <member optional="true" len="latexmath:[\lceil{\mathit{rasterizationSamples} \over 32}\rceil]" altlen="(rasterizationSamples + 31) / 32">const <type>VkSampleMask</type>* <name>pSampleMask</name><comment>Array of sampleMask words</comment></member> + <member><type>VkBool32</type> <name>alphaToCoverageEnable</name></member> + <member><type>VkBool32</type> <name>alphaToOneEnable</name></member> + </type> + <type category="struct" name="VkPipelineColorBlendAttachmentState"> + <member><type>VkBool32</type> <name>blendEnable</name></member> + <member><type>VkBlendFactor</type> <name>srcColorBlendFactor</name></member> + <member><type>VkBlendFactor</type> <name>dstColorBlendFactor</name></member> + <member><type>VkBlendOp</type> <name>colorBlendOp</name></member> + <member><type>VkBlendFactor</type> <name>srcAlphaBlendFactor</name></member> + <member><type>VkBlendFactor</type> <name>dstAlphaBlendFactor</name></member> + <member><type>VkBlendOp</type> <name>alphaBlendOp</name></member> + <member optional="true"><type>VkColorComponentFlags</type> <name>colorWriteMask</name></member> + </type> + <type category="struct" name="VkPipelineColorBlendStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineColorBlendStateCreateFlags</type> <name>flags</name></member> + <member><type>VkBool32</type> <name>logicOpEnable</name></member> + <member noautovalidity="true"><type>VkLogicOp</type> <name>logicOp</name></member> + <member optional="true"><type>uint32_t</type> <name>attachmentCount</name><comment># of pAttachments</comment></member> + <member len="attachmentCount">const <type>VkPipelineColorBlendAttachmentState</type>* <name>pAttachments</name></member> + <member><type>float</type> <name>blendConstants</name>[4]</member> + </type> + <type category="struct" name="VkPipelineDynamicStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineDynamicStateCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>dynamicStateCount</name></member> + <member len="dynamicStateCount">const <type>VkDynamicState</type>* <name>pDynamicStates</name></member> + </type> + <type category="struct" name="VkStencilOpState"> + <member><type>VkStencilOp</type> <name>failOp</name></member> + <member><type>VkStencilOp</type> <name>passOp</name></member> + <member><type>VkStencilOp</type> <name>depthFailOp</name></member> + <member><type>VkCompareOp</type> <name>compareOp</name></member> + <member><type>uint32_t</type> <name>compareMask</name></member> + <member><type>uint32_t</type> <name>writeMask</name></member> + <member><type>uint32_t</type> <name>reference</name></member> + </type> + <type category="struct" name="VkPipelineDepthStencilStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineDepthStencilStateCreateFlags</type> <name>flags</name></member> + <member><type>VkBool32</type> <name>depthTestEnable</name></member> + <member><type>VkBool32</type> <name>depthWriteEnable</name></member> + <member><type>VkCompareOp</type> <name>depthCompareOp</name></member> + <member><type>VkBool32</type> <name>depthBoundsTestEnable</name><comment>optional (depth_bounds_test)</comment></member> + <member><type>VkBool32</type> <name>stencilTestEnable</name></member> + <member><type>VkStencilOpState</type> <name>front</name></member> + <member><type>VkStencilOpState</type> <name>back</name></member> + <member><type>float</type> <name>minDepthBounds</name></member> + <member><type>float</type> <name>maxDepthBounds</name></member> + </type> + <type category="struct" name="VkGraphicsPipelineCreateInfo"> + <member values="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineCreateFlags</type> <name>flags</name><comment>Pipeline creation flags</comment></member> + <member><type>uint32_t</type> <name>stageCount</name></member> + <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member> + <member>const <type>VkPipelineVertexInputStateCreateInfo</type>* <name>pVertexInputState</name></member> + <member>const <type>VkPipelineInputAssemblyStateCreateInfo</type>* <name>pInputAssemblyState</name></member> + <member noautovalidity="true" optional="true">const <type>VkPipelineTessellationStateCreateInfo</type>* <name>pTessellationState</name></member> + <member noautovalidity="true" optional="true">const <type>VkPipelineViewportStateCreateInfo</type>* <name>pViewportState</name></member> + <member>const <type>VkPipelineRasterizationStateCreateInfo</type>* <name>pRasterizationState</name></member> + <member noautovalidity="true" optional="true">const <type>VkPipelineMultisampleStateCreateInfo</type>* <name>pMultisampleState</name></member> + <member noautovalidity="true" optional="true">const <type>VkPipelineDepthStencilStateCreateInfo</type>* <name>pDepthStencilState</name></member> + <member noautovalidity="true" optional="true">const <type>VkPipelineColorBlendStateCreateInfo</type>* <name>pColorBlendState</name></member> + <member optional="true">const <type>VkPipelineDynamicStateCreateInfo</type>* <name>pDynamicState</name></member> + <member><type>VkPipelineLayout</type> <name>layout</name><comment>Interface layout of the pipeline</comment></member> + <member><type>VkRenderPass</type> <name>renderPass</name></member> + <member><type>uint32_t</type> <name>subpass</name></member> + <member noautovalidity="true" optional="true"><type>VkPipeline</type> <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member> + <member><type>int32_t</type> <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member> + </type> + <type category="struct" name="VkPipelineCacheCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineCacheCreateFlags</type> <name>flags</name></member> + <member optional="true"><type>size_t</type> <name>initialDataSize</name><comment>Size of initial data to populate cache, in bytes</comment></member> + <member len="initialDataSize">const <type>void</type>* <name>pInitialData</name><comment>Initial data to populate cache</comment></member> + </type> + <type category="struct" name="VkPushConstantRange"> + <member><type>VkShaderStageFlags</type> <name>stageFlags</name><comment>Which stages use the range</comment></member> + <member><type>uint32_t</type> <name>offset</name><comment>Start of the range, in bytes</comment></member> + <member><type>uint32_t</type> <name>size</name><comment>Size of the range, in bytes</comment></member> + </type> + <type category="struct" name="VkPipelineLayoutCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineLayoutCreateFlags</type> <name>flags</name></member> + <member optional="true"><type>uint32_t</type> <name>setLayoutCount</name><comment>Number of descriptor sets interfaced by the pipeline</comment></member> + <member len="setLayoutCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name><comment>Array of setCount number of descriptor set layout objects defining the layout of the</comment></member> + <member optional="true"><type>uint32_t</type> <name>pushConstantRangeCount</name><comment>Number of push-constant ranges used by the pipeline</comment></member> + <member len="pushConstantRangeCount">const <type>VkPushConstantRange</type>* <name>pPushConstantRanges</name><comment>Array of pushConstantRangeCount number of ranges used by various shader stages</comment></member> + </type> + <type category="struct" name="VkSamplerCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkSamplerCreateFlags</type> <name>flags</name></member> + <member><type>VkFilter</type> <name>magFilter</name><comment>Filter mode for magnification</comment></member> + <member><type>VkFilter</type> <name>minFilter</name><comment>Filter mode for minifiation</comment></member> + <member><type>VkSamplerMipmapMode</type> <name>mipmapMode</name><comment>Mipmap selection mode</comment></member> + <member><type>VkSamplerAddressMode</type> <name>addressModeU</name></member> + <member><type>VkSamplerAddressMode</type> <name>addressModeV</name></member> + <member><type>VkSamplerAddressMode</type> <name>addressModeW</name></member> + <member><type>float</type> <name>mipLodBias</name></member> + <member><type>VkBool32</type> <name>anisotropyEnable</name></member> + <member><type>float</type> <name>maxAnisotropy</name></member> + <member><type>VkBool32</type> <name>compareEnable</name></member> + <member noautovalidity="true"><type>VkCompareOp</type> <name>compareOp</name></member> + <member><type>float</type> <name>minLod</name></member> + <member><type>float</type> <name>maxLod</name></member> + <member noautovalidity="true"><type>VkBorderColor</type> <name>borderColor</name></member> + <member><type>VkBool32</type> <name>unnormalizedCoordinates</name></member> + </type> + <type category="struct" name="VkCommandPoolCreateInfo"> + <member values="VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkCommandPoolCreateFlags</type> <name>flags</name><comment>Command pool creation flags</comment></member> + <member><type>uint32_t</type> <name>queueFamilyIndex</name></member> + </type> + <type category="struct" name="VkCommandBufferAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkCommandPool</type> <name>commandPool</name></member> + <member><type>VkCommandBufferLevel</type> <name>level</name></member> + <member><type>uint32_t</type> <name>commandBufferCount</name></member> + </type> + <type category="struct" name="VkCommandBufferInheritanceInfo"> + <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true" noautovalidity="true"><type>VkRenderPass</type> <name>renderPass</name><comment>Render pass for secondary command buffers</comment></member> + <member><type>uint32_t</type> <name>subpass</name></member> + <member optional="true" noautovalidity="true"><type>VkFramebuffer</type> <name>framebuffer</name><comment>Framebuffer for secondary command buffers</comment></member> + <member><type>VkBool32</type> <name>occlusionQueryEnable</name><comment>Whether this secondary command buffer may be executed during an occlusion query</comment></member> + <member optional="true" noautovalidity="true"><type>VkQueryControlFlags</type> <name>queryFlags</name><comment>Query flags used by this secondary command buffer, if executed during an occlusion query</comment></member> + <member optional="true" noautovalidity="true"><type>VkQueryPipelineStatisticFlags</type> <name>pipelineStatistics</name><comment>Pipeline statistics that may be counted for this secondary command buffer</comment></member> + </type> + <type category="struct" name="VkCommandBufferBeginInfo"> + <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkCommandBufferUsageFlags</type> <name>flags</name><comment>Command buffer usage flags</comment></member> + <member optional="true" noautovalidity="true">const <type>VkCommandBufferInheritanceInfo</type>* <name>pInheritanceInfo</name><comment>Pointer to inheritance info for secondary command buffers</comment></member> + </type> + <type category="struct" name="VkRenderPassBeginInfo"> + <member values="VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkRenderPass</type> <name>renderPass</name></member> + <member><type>VkFramebuffer</type> <name>framebuffer</name></member> + <member><type>VkRect2D</type> <name>renderArea</name></member> + <member optional="true"><type>uint32_t</type> <name>clearValueCount</name></member> + <member len="clearValueCount" noautovalidity="true">const <type>VkClearValue</type>* <name>pClearValues</name></member> + </type> + <type category="union" name="VkClearColorValue" comment="// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared."> + <member><type>float</type> <name>float32</name>[4]</member> + <member><type>int32_t</type> <name>int32</name>[4]</member> + <member><type>uint32_t</type> <name>uint32</name>[4]</member> + </type> + <type category="struct" name="VkClearDepthStencilValue"> + <member><type>float</type> <name>depth</name></member> + <member><type>uint32_t</type> <name>stencil</name></member> + </type> + <type category="union" name="VkClearValue" comment="// Union allowing specification of color or depth and stencil values. Actual value selected is based on attachment being cleared."> + <member><type>VkClearColorValue</type> <name>color</name></member> + <member><type>VkClearDepthStencilValue</type> <name>depthStencil</name></member> + </type> + <type category="struct" name="VkClearAttachment"> + <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member> + <member><type>uint32_t</type> <name>colorAttachment</name></member> + <member><type>VkClearValue</type> <name>clearValue</name></member> + </type> + <type category="struct" name="VkAttachmentDescription"> + <member optional="true"><type>VkAttachmentDescriptionFlags</type> <name>flags</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>VkSampleCountFlagBits</type> <name>samples</name></member> + <member><type>VkAttachmentLoadOp</type> <name>loadOp</name><comment>Load operation for color or depth data</comment></member> + <member><type>VkAttachmentStoreOp</type> <name>storeOp</name><comment>Store operation for color or depth data</comment></member> + <member><type>VkAttachmentLoadOp</type> <name>stencilLoadOp</name><comment>Load operation for stencil data</comment></member> + <member><type>VkAttachmentStoreOp</type> <name>stencilStoreOp</name><comment>Store operation for stencil data</comment></member> + <member><type>VkImageLayout</type> <name>initialLayout</name></member> + <member><type>VkImageLayout</type> <name>finalLayout</name></member> + </type> + <type category="struct" name="VkAttachmentReference"> + <member><type>uint32_t</type> <name>attachment</name></member> + <member><type>VkImageLayout</type> <name>layout</name></member> + </type> + <type category="struct" name="VkSubpassDescription"> + <member optional="true"><type>VkSubpassDescriptionFlags</type> <name>flags</name></member> + <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name><comment>Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now</comment></member> + <member optional="true"><type>uint32_t</type> <name>inputAttachmentCount</name></member> + <member len="inputAttachmentCount">const <type>VkAttachmentReference</type>* <name>pInputAttachments</name></member> + <member optional="true"><type>uint32_t</type> <name>colorAttachmentCount</name></member> + <member len="colorAttachmentCount">const <type>VkAttachmentReference</type>* <name>pColorAttachments</name></member> + <member optional="true" len="colorAttachmentCount">const <type>VkAttachmentReference</type>* <name>pResolveAttachments</name></member> + <member optional="true">const <type>VkAttachmentReference</type>* <name>pDepthStencilAttachment</name></member> + <member optional="true"><type>uint32_t</type> <name>preserveAttachmentCount</name></member> + <member len="preserveAttachmentCount">const <type>uint32_t</type>* <name>pPreserveAttachments</name></member> + </type> + <type category="struct" name="VkSubpassDependency"> + <member><type>uint32_t</type> <name>srcSubpass</name></member> + <member><type>uint32_t</type> <name>dstSubpass</name></member> + <member><type>VkPipelineStageFlags</type> <name>srcStageMask</name></member> + <member><type>VkPipelineStageFlags</type> <name>dstStageMask</name></member> + <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member> + <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member> + <member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member> + </type> + <type category="struct" name="VkRenderPassCreateInfo"> + <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member> + <member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member> + <member len="attachmentCount">const <type>VkAttachmentDescription</type>* <name>pAttachments</name></member> + <member><type>uint32_t</type> <name>subpassCount</name></member> + <member len="subpassCount">const <type>VkSubpassDescription</type>* <name>pSubpasses</name></member> + <member optional="true"><type>uint32_t</type> <name>dependencyCount</name></member> + <member len="dependencyCount">const <type>VkSubpassDependency</type>* <name>pDependencies</name></member> + </type> + <type category="struct" name="VkEventCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkEventCreateFlags</type> <name>flags</name><comment>Event creation flags</comment></member> + </type> + <type category="struct" name="VkFenceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkFenceCreateFlags</type> <name>flags</name><comment>Fence creation flags</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceFeatures"> + <member><type>VkBool32</type> <name>robustBufferAccess</name><comment>out of bounds buffer accesses are well defined</comment></member> + <member><type>VkBool32</type> <name>fullDrawIndexUint32</name><comment>full 32-bit range of indices for indexed draw calls</comment></member> + <member><type>VkBool32</type> <name>imageCubeArray</name><comment>image views which are arrays of cube maps</comment></member> + <member><type>VkBool32</type> <name>independentBlend</name><comment>blending operations are controlled per-attachment</comment></member> + <member><type>VkBool32</type> <name>geometryShader</name><comment>geometry stage</comment></member> + <member><type>VkBool32</type> <name>tessellationShader</name><comment>tessellation control and evaluation stage</comment></member> + <member><type>VkBool32</type> <name>sampleRateShading</name><comment>per-sample shading and interpolation</comment></member> + <member><type>VkBool32</type> <name>dualSrcBlend</name><comment>blend operations which take two sources</comment></member> + <member><type>VkBool32</type> <name>logicOp</name><comment>logic operations</comment></member> + <member><type>VkBool32</type> <name>multiDrawIndirect</name><comment>multi draw indirect</comment></member> + <member><type>VkBool32</type> <name>drawIndirectFirstInstance</name><comment>indirect draws can use non-zero firstInstance</comment></member> + <member><type>VkBool32</type> <name>depthClamp</name><comment>depth clamping</comment></member> + <member><type>VkBool32</type> <name>depthBiasClamp</name><comment>depth bias clamping</comment></member> + <member><type>VkBool32</type> <name>fillModeNonSolid</name><comment>point and wireframe fill modes</comment></member> + <member><type>VkBool32</type> <name>depthBounds</name><comment>depth bounds test</comment></member> + <member><type>VkBool32</type> <name>wideLines</name><comment>lines with width greater than 1</comment></member> + <member><type>VkBool32</type> <name>largePoints</name><comment>points with size greater than 1</comment></member> + <member><type>VkBool32</type> <name>alphaToOne</name><comment>the fragment alpha component can be forced to maximum representable alpha value</comment></member> + <member><type>VkBool32</type> <name>multiViewport</name><comment>viewport arrays</comment></member> + <member><type>VkBool32</type> <name>samplerAnisotropy</name><comment>anisotropic sampler filtering</comment></member> + <member><type>VkBool32</type> <name>textureCompressionETC2</name><comment>ETC texture compression formats</comment></member> + <member><type>VkBool32</type> <name>textureCompressionASTC_LDR</name><comment>ASTC LDR texture compression formats</comment></member> + <member><type>VkBool32</type> <name>textureCompressionBC</name><comment>BC1-7 texture compressed formats</comment></member> + <member><type>VkBool32</type> <name>occlusionQueryPrecise</name><comment>precise occlusion queries returning actual sample counts</comment></member> + <member><type>VkBool32</type> <name>pipelineStatisticsQuery</name><comment>pipeline statistics query</comment></member> + <member><type>VkBool32</type> <name>vertexPipelineStoresAndAtomics</name><comment>stores and atomic ops on storage buffers and images are supported in vertex, tessellation, and geometry stages</comment></member> + <member><type>VkBool32</type> <name>fragmentStoresAndAtomics</name><comment>stores and atomic ops on storage buffers and images are supported in the fragment stage</comment></member> + <member><type>VkBool32</type> <name>shaderTessellationAndGeometryPointSize</name><comment>tessellation and geometry stages can export point size</comment></member> + <member><type>VkBool32</type> <name>shaderImageGatherExtended</name><comment>image gather with run-time values and independent offsets</comment></member> + <member><type>VkBool32</type> <name>shaderStorageImageExtendedFormats</name><comment>the extended set of formats can be used for storage images</comment></member> + <member><type>VkBool32</type> <name>shaderStorageImageMultisample</name><comment>multisample images can be used for storage images</comment></member> + <member><type>VkBool32</type> <name>shaderStorageImageReadWithoutFormat</name><comment>read from storage image does not require format qualifier</comment></member> + <member><type>VkBool32</type> <name>shaderStorageImageWriteWithoutFormat</name><comment>write to storage image does not require format qualifier</comment></member> + <member><type>VkBool32</type> <name>shaderUniformBufferArrayDynamicIndexing</name><comment>arrays of uniform buffers can be accessed with dynamically uniform indices</comment></member> + <member><type>VkBool32</type> <name>shaderSampledImageArrayDynamicIndexing</name><comment>arrays of sampled images can be accessed with dynamically uniform indices</comment></member> + <member><type>VkBool32</type> <name>shaderStorageBufferArrayDynamicIndexing</name><comment>arrays of storage buffers can be accessed with dynamically uniform indices</comment></member> + <member><type>VkBool32</type> <name>shaderStorageImageArrayDynamicIndexing</name><comment>arrays of storage images can be accessed with dynamically uniform indices</comment></member> + <member><type>VkBool32</type> <name>shaderClipDistance</name><comment>clip distance in shaders</comment></member> + <member><type>VkBool32</type> <name>shaderCullDistance</name><comment>cull distance in shaders</comment></member> + <member><type>VkBool32</type> <name>shaderFloat64</name><comment>64-bit floats (doubles) in shaders</comment></member> + <member><type>VkBool32</type> <name>shaderInt64</name><comment>64-bit integers in shaders</comment></member> + <member><type>VkBool32</type> <name>shaderInt16</name><comment>16-bit integers in shaders</comment></member> + <member><type>VkBool32</type> <name>shaderResourceResidency</name><comment>shader can use texture operations that return resource residency information (requires sparseNonResident support)</comment></member> + <member><type>VkBool32</type> <name>shaderResourceMinLod</name><comment>shader can use texture operations that specify minimum resource LOD</comment></member> + <member><type>VkBool32</type> <name>sparseBinding</name><comment>Sparse resources support: Resource memory can be managed at opaque page level rather than object level</comment></member> + <member><type>VkBool32</type> <name>sparseResidencyBuffer</name><comment>Sparse resources support: GPU can access partially resident buffers </comment></member> + <member><type>VkBool32</type> <name>sparseResidencyImage2D</name><comment>Sparse resources support: GPU can access partially resident 2D (non-MSAA non-depth/stencil) images </comment></member> + <member><type>VkBool32</type> <name>sparseResidencyImage3D</name><comment>Sparse resources support: GPU can access partially resident 3D images </comment></member> + <member><type>VkBool32</type> <name>sparseResidency2Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples</comment></member> + <member><type>VkBool32</type> <name>sparseResidency4Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples</comment></member> + <member><type>VkBool32</type> <name>sparseResidency8Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples</comment></member> + <member><type>VkBool32</type> <name>sparseResidency16Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples</comment></member> + <member><type>VkBool32</type> <name>sparseResidencyAliased</name><comment>Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)</comment></member> + <member><type>VkBool32</type> <name>variableMultisampleRate</name><comment>multisample rate must be the same for all pipelines in a subpass</comment></member> + <member><type>VkBool32</type> <name>inheritedQueries</name><comment>Queries may be inherited from primary to secondary command buffers</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceSparseProperties" returnedonly="true"> + <member><type>VkBool32</type> <name>residencyStandard2DBlockShape</name><comment>Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member> + <member><type>VkBool32</type> <name>residencyStandard2DMultisampleBlockShape</name><comment>Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member> + <member><type>VkBool32</type> <name>residencyStandard3DBlockShape</name><comment>Sparse resources support: GPU will access all 3D sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member> + <member><type>VkBool32</type> <name>residencyAlignedMipSize</name><comment>Sparse resources support: Images with mip level dimensions that are NOT a multiple of the sparse image block dimensions will be placed in the mip tail</comment></member> + <member><type>VkBool32</type> <name>residencyNonResidentStrict</name><comment>Sparse resources support: GPU can consistently access non-resident regions of a resource, all reads return as if data is 0, writes are discarded</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceLimits" returnedonly="true"> + <comment>resource maximum sizes</comment> + <member><type>uint32_t</type> <name>maxImageDimension1D</name><comment>max 1D image dimension</comment></member> + <member><type>uint32_t</type> <name>maxImageDimension2D</name><comment>max 2D image dimension</comment></member> + <member><type>uint32_t</type> <name>maxImageDimension3D</name><comment>max 3D image dimension</comment></member> + <member><type>uint32_t</type> <name>maxImageDimensionCube</name><comment>max cubemap image dimension</comment></member> + <member><type>uint32_t</type> <name>maxImageArrayLayers</name><comment>max layers for image arrays</comment></member> + <member><type>uint32_t</type> <name>maxTexelBufferElements</name><comment>max texel buffer size (fstexels)</comment></member> + <member><type>uint32_t</type> <name>maxUniformBufferRange</name><comment>max uniform buffer range (bytes)</comment></member> + <member><type>uint32_t</type> <name>maxStorageBufferRange</name><comment>max storage buffer range (bytes)</comment></member> + <member><type>uint32_t</type> <name>maxPushConstantsSize</name><comment>max size of the push constants pool (bytes)</comment></member> + <comment>memory limits</comment> + <member><type>uint32_t</type> <name>maxMemoryAllocationCount</name><comment>max number of device memory allocations supported</comment></member> + <member><type>uint32_t</type> <name>maxSamplerAllocationCount</name><comment>max number of samplers that can be allocated on a device</comment></member> + <member><type>VkDeviceSize</type> <name>bufferImageGranularity</name><comment>Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage</comment></member> + <member><type>VkDeviceSize</type> <name>sparseAddressSpaceSize</name><comment>Total address space available for sparse allocations (bytes)</comment></member> + <comment>descriptor set limits</comment> + <member><type>uint32_t</type> <name>maxBoundDescriptorSets</name><comment>max number of descriptors sets that can be bound to a pipeline</comment></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorSamplers</name><comment>max number of samplers allowed per-stage in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUniformBuffers</name><comment>max number of uniform buffers allowed per-stage in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorStorageBuffers</name><comment>max number of storage buffers allowed per-stage in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorSampledImages</name><comment>max number of sampled images allowed per-stage in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorStorageImages</name><comment>max number of storage images allowed per-stage in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorInputAttachments</name><comment>max number of input attachments allowed per-stage in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxPerStageResources</name><comment>max number of resources allowed by a single stage</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetSamplers</name><comment>max number of samplers allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUniformBuffers</name><comment>max number of uniform buffers allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUniformBuffersDynamic</name><comment>max number of dynamic uniform buffers allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetStorageBuffers</name><comment>max number of storage buffers allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetStorageBuffersDynamic</name><comment>max number of dynamic storage buffers allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetSampledImages</name><comment>max number of sampled images allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetStorageImages</name><comment>max number of storage images allowed in all stages in a descriptor set</comment></member> + <member><type>uint32_t</type> <name>maxDescriptorSetInputAttachments</name><comment>max number of input attachments allowed in all stages in a descriptor set</comment></member> + <comment>vertex stage limits</comment> + <member><type>uint32_t</type> <name>maxVertexInputAttributes</name><comment>max number of vertex input attribute slots</comment></member> + <member><type>uint32_t</type> <name>maxVertexInputBindings</name><comment>max number of vertex input binding slots</comment></member> + <member><type>uint32_t</type> <name>maxVertexInputAttributeOffset</name><comment>max vertex input attribute offset added to vertex buffer offset</comment></member> + <member><type>uint32_t</type> <name>maxVertexInputBindingStride</name><comment>max vertex input binding stride</comment></member> + <member><type>uint32_t</type> <name>maxVertexOutputComponents</name><comment>max number of output components written by vertex shader</comment></member> + <comment>tessellation control stage limits</comment> + <member><type>uint32_t</type> <name>maxTessellationGenerationLevel</name><comment>max level supported by tessellation primitive generator</comment></member> + <member><type>uint32_t</type> <name>maxTessellationPatchSize</name><comment>max patch size (vertices)</comment></member> + <member><type>uint32_t</type> <name>maxTessellationControlPerVertexInputComponents</name><comment>max number of input components per-vertex in TCS</comment></member> + <member><type>uint32_t</type> <name>maxTessellationControlPerVertexOutputComponents</name><comment>max number of output components per-vertex in TCS</comment></member> + <member><type>uint32_t</type> <name>maxTessellationControlPerPatchOutputComponents</name><comment>max number of output components per-patch in TCS</comment></member> + <member><type>uint32_t</type> <name>maxTessellationControlTotalOutputComponents</name><comment>max total number of per-vertex and per-patch output components in TCS</comment></member> + <comment>tessellation evaluation stage limits</comment> + <member><type>uint32_t</type> <name>maxTessellationEvaluationInputComponents</name><comment>max number of input components per vertex in TES</comment></member> + <member><type>uint32_t</type> <name>maxTessellationEvaluationOutputComponents</name><comment>max number of output components per vertex in TES</comment></member> + <comment>geometry stage limits</comment> + <member><type>uint32_t</type> <name>maxGeometryShaderInvocations</name><comment>max invocation count supported in geometry shader</comment></member> + <member><type>uint32_t</type> <name>maxGeometryInputComponents</name><comment>max number of input components read in geometry stage</comment></member> + <member><type>uint32_t</type> <name>maxGeometryOutputComponents</name><comment>max number of output components written in geometry stage</comment></member> + <member><type>uint32_t</type> <name>maxGeometryOutputVertices</name><comment>max number of vertices that can be emitted in geometry stage</comment></member> + <member><type>uint32_t</type> <name>maxGeometryTotalOutputComponents</name><comment>max total number of components (all vertices) written in geometry stage</comment></member> + <comment>fragment stage limits</comment> + <member><type>uint32_t</type> <name>maxFragmentInputComponents</name><comment>max number of input components read in fragment stage</comment></member> + <member><type>uint32_t</type> <name>maxFragmentOutputAttachments</name><comment>max number of output attachments written in fragment stage</comment></member> + <member><type>uint32_t</type> <name>maxFragmentDualSrcAttachments</name><comment>max number of output attachments written when using dual source blending</comment></member> + <member><type>uint32_t</type> <name>maxFragmentCombinedOutputResources</name><comment>max total number of storage buffers, storage images and output buffers</comment></member> + <comment>compute stage limits</comment> + <member><type>uint32_t</type> <name>maxComputeSharedMemorySize</name><comment>max total storage size of work group local storage (bytes)</comment></member> + <member><type>uint32_t</type> <name>maxComputeWorkGroupCount</name>[3]<comment>max num of compute work groups that may be dispatched by a single command (x,y,z)</comment></member> + <member><type>uint32_t</type> <name>maxComputeWorkGroupInvocations</name><comment>max total compute invocations in a single local work group</comment></member> + <member><type>uint32_t</type> <name>maxComputeWorkGroupSize</name>[3]<comment>max local size of a compute work group (x,y,z)</comment></member> + <member><type>uint32_t</type> <name>subPixelPrecisionBits</name><comment>number bits of subpixel precision in screen x and y</comment></member> + <member><type>uint32_t</type> <name>subTexelPrecisionBits</name><comment>number bits of precision for selecting texel weights</comment></member> + <member><type>uint32_t</type> <name>mipmapPrecisionBits</name><comment>number bits of precision for selecting mipmap weights</comment></member> + <member><type>uint32_t</type> <name>maxDrawIndexedIndexValue</name><comment>max index value for indexed draw calls (for 32-bit indices)</comment></member> + <member><type>uint32_t</type> <name>maxDrawIndirectCount</name><comment>max draw count for indirect draw calls</comment></member> + <member><type>float</type> <name>maxSamplerLodBias</name><comment>max absolute sampler LOD bias</comment></member> + <member><type>float</type> <name>maxSamplerAnisotropy</name><comment>max degree of sampler anisotropy</comment></member> + <member><type>uint32_t</type> <name>maxViewports</name><comment>max number of active viewports</comment></member> + <member><type>uint32_t</type> <name>maxViewportDimensions</name>[2]<comment>max viewport dimensions (x,y)</comment></member> + <member><type>float</type> <name>viewportBoundsRange</name>[2]<comment>viewport bounds range (min,max)</comment></member> + <member><type>uint32_t</type> <name>viewportSubPixelBits</name><comment>number bits of subpixel precision for viewport</comment></member> + <member><type>size_t</type> <name>minMemoryMapAlignment</name><comment>min required alignment of pointers returned by MapMemory (bytes)</comment></member> + <member><type>VkDeviceSize</type> <name>minTexelBufferOffsetAlignment</name><comment>min required alignment for texel buffer offsets (bytes) </comment></member> + <member><type>VkDeviceSize</type> <name>minUniformBufferOffsetAlignment</name><comment>min required alignment for uniform buffer sizes and offsets (bytes)</comment></member> + <member><type>VkDeviceSize</type> <name>minStorageBufferOffsetAlignment</name><comment>min required alignment for storage buffer offsets (bytes)</comment></member> + <member><type>int32_t</type> <name>minTexelOffset</name><comment>min texel offset for OpTextureSampleOffset</comment></member> + <member><type>uint32_t</type> <name>maxTexelOffset</name><comment>max texel offset for OpTextureSampleOffset</comment></member> + <member><type>int32_t</type> <name>minTexelGatherOffset</name><comment>min texel offset for OpTextureGatherOffset</comment></member> + <member><type>uint32_t</type> <name>maxTexelGatherOffset</name><comment>max texel offset for OpTextureGatherOffset</comment></member> + <member><type>float</type> <name>minInterpolationOffset</name><comment>furthest negative offset for interpolateAtOffset</comment></member> + <member><type>float</type> <name>maxInterpolationOffset</name><comment>furthest positive offset for interpolateAtOffset</comment></member> + <member><type>uint32_t</type> <name>subPixelInterpolationOffsetBits</name><comment>number of subpixel bits for interpolateAtOffset</comment></member> + <member><type>uint32_t</type> <name>maxFramebufferWidth</name><comment>max width for a framebuffer</comment></member> + <member><type>uint32_t</type> <name>maxFramebufferHeight</name><comment>max height for a framebuffer</comment></member> + <member><type>uint32_t</type> <name>maxFramebufferLayers</name><comment>max layer count for a layered framebuffer</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>framebufferColorSampleCounts</name><comment>supported color sample counts for a framebuffer</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>framebufferDepthSampleCounts</name><comment>supported depth sample counts for a framebuffer</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>framebufferStencilSampleCounts</name><comment>supported stencil sample counts for a framebuffer</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>framebufferNoAttachmentsSampleCounts</name><comment>supported sample counts for a framebuffer with no attachments</comment></member> + <member><type>uint32_t</type> <name>maxColorAttachments</name><comment>max number of color attachments per subpass</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>sampledImageColorSampleCounts</name><comment>supported color sample counts for a non-integer sampled image</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>sampledImageIntegerSampleCounts</name><comment>supported sample counts for an integer image</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>sampledImageDepthSampleCounts</name><comment>supported depth sample counts for a sampled image</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>sampledImageStencilSampleCounts</name><comment>supported stencil sample counts for a sampled image</comment></member> + <member optional="true"><type>VkSampleCountFlags</type> <name>storageImageSampleCounts</name><comment>supported sample counts for a storage image</comment></member> + <member><type>uint32_t</type> <name>maxSampleMaskWords</name><comment>max number of sample mask words</comment></member> + <member><type>VkBool32</type> <name>timestampComputeAndGraphics</name><comment>timestamps on graphics and compute queues</comment></member> + <member><type>float</type> <name>timestampPeriod</name><comment>number of nanoseconds it takes for timestamp query value to increment by 1</comment></member> + <member><type>uint32_t</type> <name>maxClipDistances</name><comment>max number of clip distances</comment></member> + <member><type>uint32_t</type> <name>maxCullDistances</name><comment>max number of cull distances</comment></member> + <member><type>uint32_t</type> <name>maxCombinedClipAndCullDistances</name><comment>max combined number of user clipping</comment></member> + <member><type>uint32_t</type> <name>discreteQueuePriorities</name><comment>distinct queue priorities available </comment></member> + <member><type>float</type> <name>pointSizeRange</name>[2]<comment>range (min,max) of supported point sizes</comment></member> + <member><type>float</type> <name>lineWidthRange</name>[2]<comment>range (min,max) of supported line widths</comment></member> + <member><type>float</type> <name>pointSizeGranularity</name><comment>granularity of supported point sizes</comment></member> + <member><type>float</type> <name>lineWidthGranularity</name><comment>granularity of supported line widths</comment></member> + <member><type>VkBool32</type> <name>strictLines</name><comment>line rasterization follows preferred rules</comment></member> + <member><type>VkBool32</type> <name>standardSampleLocations</name><comment>supports standard sample locations for all supported sample counts</comment></member> + <member><type>VkDeviceSize</type> <name>optimalBufferCopyOffsetAlignment</name><comment>optimal offset of buffer copies</comment></member> + <member><type>VkDeviceSize</type> <name>optimalBufferCopyRowPitchAlignment</name><comment>optimal pitch of buffer copies</comment></member> + <member><type>VkDeviceSize</type> <name>nonCoherentAtomSize</name><comment>minimum size and alignment for non-coherent host-mapped device memory access</comment></member> + </type> + <type category="struct" name="VkSemaphoreCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkSemaphoreCreateFlags</type> <name>flags</name><comment>Semaphore creation flags</comment></member> + </type> + <type category="struct" name="VkQueryPoolCreateInfo"> + <member values="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkQueryPoolCreateFlags</type> <name>flags</name></member> + <member><type>VkQueryType</type> <name>queryType</name></member> + <member><type>uint32_t</type> <name>queryCount</name></member> + <member optional="true" noautovalidity="true"><type>VkQueryPipelineStatisticFlags</type> <name>pipelineStatistics</name><comment>Optional</comment></member> + </type> + <type category="struct" name="VkFramebufferCreateInfo"> + <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkFramebufferCreateFlags</type> <name>flags</name></member> + <member><type>VkRenderPass</type> <name>renderPass</name></member> + <member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member> + <member len="attachmentCount">const <type>VkImageView</type>* <name>pAttachments</name></member> + <member><type>uint32_t</type> <name>width</name></member> + <member><type>uint32_t</type> <name>height</name></member> + <member><type>uint32_t</type> <name>layers</name></member> + </type> + <type category="struct" name="VkDrawIndirectCommand"> + <member><type>uint32_t</type> <name>vertexCount</name></member> + <member><type>uint32_t</type> <name>instanceCount</name></member> + <member><type>uint32_t</type> <name>firstVertex</name></member> + <member><type>uint32_t</type> <name>firstInstance</name></member> + </type> + <type category="struct" name="VkDrawIndexedIndirectCommand"> + <member><type>uint32_t</type> <name>indexCount</name></member> + <member><type>uint32_t</type> <name>instanceCount</name></member> + <member><type>uint32_t</type> <name>firstIndex</name></member> + <member><type>int32_t</type> <name>vertexOffset</name></member> + <member><type>uint32_t</type> <name>firstInstance</name></member> + </type> + <type category="struct" name="VkDispatchIndirectCommand"> + <member><type>uint32_t</type> <name>x</name></member> + <member><type>uint32_t</type> <name>y</name></member> + <member><type>uint32_t</type> <name>z</name></member> + </type> + <type category="struct" name="VkSubmitInfo"> + <member values="VK_STRUCTURE_TYPE_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> + <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member> + <member len="waitSemaphoreCount">const <type>VkPipelineStageFlags</type>* <name>pWaitDstStageMask</name></member> + <member optional="true"><type>uint32_t</type> <name>commandBufferCount</name></member> + <member len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></member> + <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member> + <member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member> + </type> + <comment>WSI extensions</comment> + <type category="struct" name="VkDisplayPropertiesKHR" returnedonly="true"> + <member><type>VkDisplayKHR</type> <name>display</name><comment>Handle of the display object</comment></member> + <member len="null-terminated">const <type>char</type>* <name>displayName</name><comment>Name of the display</comment></member> + <member><type>VkExtent2D</type> <name>physicalDimensions</name><comment>In millimeters?</comment></member> + <member><type>VkExtent2D</type> <name>physicalResolution</name><comment>Max resolution for CRT?</comment></member> + <member optional="true"><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name><comment>one or more bits from VkSurfaceTransformFlagsKHR</comment></member> + <member><type>VkBool32</type> <name>planeReorderPossible</name><comment>VK_TRUE if the overlay plane's z-order can be changed on this display.</comment></member> + <member><type>VkBool32</type> <name>persistentContent</name><comment>VK_TRUE if this is a "smart" display that supports self-refresh/internal buffering.</comment></member> + </type> + <type category="struct" name="VkDisplayPlanePropertiesKHR" returnedonly="true"> + <member><type>VkDisplayKHR</type> <name>currentDisplay</name><comment>Display the plane is currently associated with. Will be VK_NULL_HANDLE if the plane is not in use.</comment></member> + <member><type>uint32_t</type> <name>currentStackIndex</name><comment>Current z-order of the plane.</comment></member> + </type> + <type category="struct" name="VkDisplayModeParametersKHR"> + <member><type>VkExtent2D</type> <name>visibleRegion</name><comment>Visible scanout region.</comment></member> + <member><type>uint32_t</type> <name>refreshRate</name><comment>Number of times per second the display is updated.</comment></member> + </type> + <type category="struct" name="VkDisplayModePropertiesKHR" returnedonly="true"> + <member><type>VkDisplayModeKHR</type> <name>displayMode</name><comment>Handle of this display mode.</comment></member> + <member><type>VkDisplayModeParametersKHR</type> <name>parameters</name><comment>The parameters this mode uses.</comment></member> + </type> + <type category="struct" name="VkDisplayModeCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDisplayModeCreateFlagsKHR</type> <name>flags</name></member> + <member><type>VkDisplayModeParametersKHR</type> <name>parameters</name><comment>The parameters this mode uses.</comment></member> + </type> + <type category="struct" name="VkDisplayPlaneCapabilitiesKHR" returnedonly="true"> + <member optional="true"><type>VkDisplayPlaneAlphaFlagsKHR</type> <name>supportedAlpha</name><comment>Types of alpha blending supported, if any.</comment></member> + <member><type>VkOffset2D</type> <name>minSrcPosition</name><comment>Does the plane have any position and extent restrictions?</comment></member> + <member><type>VkOffset2D</type> <name>maxSrcPosition</name></member> + <member><type>VkExtent2D</type> <name>minSrcExtent</name></member> + <member><type>VkExtent2D</type> <name>maxSrcExtent</name></member> + <member><type>VkOffset2D</type> <name>minDstPosition</name></member> + <member><type>VkOffset2D</type> <name>maxDstPosition</name></member> + <member><type>VkExtent2D</type> <name>minDstExtent</name></member> + <member><type>VkExtent2D</type> <name>maxDstExtent</name></member> + </type> + <type category="struct" name="VkDisplaySurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDisplaySurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member><type>VkDisplayModeKHR</type> <name>displayMode</name><comment>The mode to use when displaying this surface</comment></member> + <member><type>uint32_t</type> <name>planeIndex</name><comment>The plane on which this surface appears. Must be between 0 and the value returned by vkGetPhysicalDeviceDisplayPlanePropertiesKHR() in pPropertyCount.</comment></member> + <member><type>uint32_t</type> <name>planeStackIndex</name><comment>The z-order of the plane.</comment></member> + <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name><comment>Transform to apply to the images as part of the scanout operation</comment></member> + <member><type>float</type> <name>globalAlpha</name><comment>Global alpha value. Must be between 0 and 1, inclusive. Ignored if alphaMode is not VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</comment></member> + <member><type>VkDisplayPlaneAlphaFlagBitsKHR</type> <name>alphaMode</name><comment>What type of alpha blending to use. Must be a bit from vkGetDisplayPlanePropertiesKHR::supportedAlpha.</comment></member> + <member><type>VkExtent2D</type> <name>imageExtent</name><comment>size of the images to use with this surface</comment></member> + </type> + <type category="struct" name="VkDisplayPresentInfoKHR" structextends="VkPresentInfoKHR"> + <member values="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkRect2D</type> <name>srcRect</name><comment>Rectangle within the presentable image to read pixel data from when presenting to the display.</comment></member> + <member><type>VkRect2D</type> <name>dstRect</name><comment>Rectangle within the current display mode's visible region to display srcRectangle in.</comment></member> + <member><type>VkBool32</type> <name>persistent</name><comment>For smart displays, use buffered mode. If the display properties member "persistentMode" is VK_FALSE, this member must always be VK_FALSE.</comment></member> + </type> + <type category="struct" name="VkSurfaceCapabilitiesKHR" returnedonly="true"> + <member><type>uint32_t</type> <name>minImageCount</name><comment>Supported minimum number of images for the surface</comment></member> + <member><type>uint32_t</type> <name>maxImageCount</name><comment>Supported maximum number of images for the surface, 0 for unlimited</comment></member> + <member><type>VkExtent2D</type> <name>currentExtent</name><comment>Current image width and height for the surface, (0, 0) if undefined</comment></member> + <member><type>VkExtent2D</type> <name>minImageExtent</name><comment>Supported minimum image width and height for the surface</comment></member> + <member><type>VkExtent2D</type> <name>maxImageExtent</name><comment>Supported maximum image width and height for the surface</comment></member> + <member><type>uint32_t</type> <name>maxImageArrayLayers</name><comment>Supported maximum number of image layers for the surface</comment></member> + <member optional="true"><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name><comment>1 or more bits representing the transforms supported</comment></member> + <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>currentTransform</name><comment>The surface's current transform relative to the device's natural orientation</comment></member> + <member optional="true"><type>VkCompositeAlphaFlagsKHR</type> <name>supportedCompositeAlpha</name><comment>1 or more bits representing the alpha compositing modes supported</comment></member> + <member optional="true"><type>VkImageUsageFlags</type> <name>supportedUsageFlags</name><comment>Supported image usage flags for the surface</comment></member> + </type> + <type category="struct" name="VkAndroidSurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkAndroidSurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member noautovalidity="true">struct <type>ANativeWindow</type>* <name>window</name></member> + </type> + <type category="struct" name="VkMirSurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkMirSurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member noautovalidity="true"><type>MirConnection</type>* <name>connection</name></member> + <member noautovalidity="true"><type>MirSurface</type>* <name>mirSurface</name></member> + </type> + <type category="struct" name="VkViSurfaceCreateInfoNN"> + <member values="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkViSurfaceCreateFlagsNN</type> <name>flags</name></member> + <member noautovalidity="true"><type>void</type>* <name>window</name></member> + </type> + <type category="struct" name="VkWaylandSurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkWaylandSurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member noautovalidity="true">struct <type>wl_display</type>* <name>display</name></member> + <member noautovalidity="true">struct <type>wl_surface</type>* <name>surface</name></member> + </type> + <type category="struct" name="VkWin32SurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkWin32SurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member><type>HINSTANCE</type> <name>hinstance</name></member> + <member><type>HWND</type> <name>hwnd</name></member> + </type> + <type category="struct" name="VkXlibSurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkXlibSurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member noautovalidity="true"><type>Display</type>* <name>dpy</name></member> + <member><type>Window</type> <name>window</name></member> + </type> + <type category="struct" name="VkXcbSurfaceCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkXcbSurfaceCreateFlagsKHR</type> <name>flags</name></member> + <member noautovalidity="true"><type>xcb_connection_t</type>* <name>connection</name></member> + <member><type>xcb_window_t</type> <name>window</name></member> + </type> + <type category="struct" name="VkSurfaceFormatKHR" returnedonly="true"> + <member><type>VkFormat</type> <name>format</name><comment>Supported pair of rendering format</comment></member> + <member><type>VkColorSpaceKHR</type> <name>colorSpace</name><comment>and color space for the surface</comment></member> + </type> + <type category="struct" name="VkSwapchainCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkSwapchainCreateFlagsKHR</type> <name>flags</name></member> + <member><type>VkSurfaceKHR</type> <name>surface</name><comment>The swapchain's target surface</comment></member> + <member><type>uint32_t</type> <name>minImageCount</name><comment>Minimum number of presentation images the application needs</comment></member> + <member><type>VkFormat</type> <name>imageFormat</name><comment>Format of the presentation images</comment></member> + <member><type>VkColorSpaceKHR</type> <name>imageColorSpace</name><comment>Colorspace of the presentation images</comment></member> + <member><type>VkExtent2D</type> <name>imageExtent</name><comment>Dimensions of the presentation images</comment></member> + <member><type>uint32_t</type> <name>imageArrayLayers</name><comment>Determines the number of views for multiview/stereo presentation</comment></member> + <member><type>VkImageUsageFlags</type> <name>imageUsage</name><comment>Bits indicating how the presentation images will be used</comment></member> + <member><type>VkSharingMode</type> <name>imageSharingMode</name><comment>Sharing mode used for the presentation images</comment></member> + <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name><comment>Number of queue families having access to the images in case of concurrent sharing mode</comment></member> + <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name><comment>Array of queue family indices having access to the images in case of concurrent sharing mode</comment></member> + <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>preTransform</name><comment>The transform, relative to the device's natural orientation, applied to the image content prior to presentation</comment></member> + <member><type>VkCompositeAlphaFlagBitsKHR</type> <name>compositeAlpha</name><comment>The alpha blending mode used when compositing this surface with other surfaces in the window system</comment></member> + <member><type>VkPresentModeKHR</type> <name>presentMode</name><comment>Which presentation mode to use for presents on this swap chain</comment></member> + <member><type>VkBool32</type> <name>clipped</name><comment>Specifies whether presentable images may be affected by window clip regions</comment></member> + <member optional="true"><type>VkSwapchainKHR</type> <name>oldSwapchain</name><comment>Existing swap chain to replace, if any</comment></member> + </type> + <type category="struct" name="VkPresentInfoKHR"> + <member values="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name><comment>Number of semaphores to wait for before presenting</comment></member> + <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name><comment>Semaphores to wait for before presenting</comment></member> + <member><type>uint32_t</type> <name>swapchainCount</name><comment>Number of swapchains to present in this call</comment></member> + <member len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name><comment>Swapchains to present an image from</comment></member> + <member len="swapchainCount">const <type>uint32_t</type>* <name>pImageIndices</name><comment>Indices of which presentable images to present</comment></member> + <member optional="true" len="swapchainCount"><type>VkResult</type>* <name>pResults</name><comment>Optional (i.e. if non-NULL) VkResult for each swapchain</comment></member> + </type> + <type category="struct" name="VkDebugReportCallbackCreateInfoEXT" structextends="VkInstanceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDebugReportFlagsEXT</type> <name>flags</name><comment>Indicates which events call this callback</comment></member> + <member><type>PFN_vkDebugReportCallbackEXT</type> <name>pfnCallback</name><comment>Function pointer of a callback function</comment></member> + <member optional="true"><type>void</type>* <name>pUserData</name><comment>User data provided to callback function</comment></member> + </type> + <type category="struct" name="VkValidationFlagsEXT" structextends="VkInstanceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"><type>VkStructureType</type> <name>sType</name><comment>Must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</comment></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>disabledValidationCheckCount</name><comment>Number of validation checks to disable</comment></member> + <member len="disabledValidationCheckCount"><type>VkValidationCheckEXT</type>* <name>pDisabledValidationChecks</name><comment>Validation checks to disable</comment></member> + </type> + <type category="struct" name="VkPipelineRasterizationStateRasterizationOrderAMD" structextends="VkPipelineRasterizationStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkRasterizationOrderAMD</type> <name>rasterizationOrder</name><comment>Rasterization order to use for the pipeline</comment></member> + </type> + <type category="struct" name="VkDebugMarkerObjectNameInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name><comment>The type of the object</comment></member> + <member><type>uint64_t</type> <name>object</name><comment>The handle of the object, cast to uint64_t</comment></member> + <member len="null-terminated">const <type>char</type>* <name>pObjectName</name><comment>Name to apply to the object</comment></member> + </type> + <type category="struct" name="VkDebugMarkerObjectTagInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name><comment>The type of the object</comment></member> + <member><type>uint64_t</type> <name>object</name><comment>The handle of the object, cast to uint64_t</comment></member> + <member><type>uint64_t</type> <name>tagName</name><comment>The name of the tag to set on the object</comment></member> + <member><type>size_t</type> <name>tagSize</name><comment>The length in bytes of the tag data</comment></member> + <member len="tagSize">const <type>void</type>* <name>pTag</name><comment>Tag data to attach to the object</comment></member> + </type> + <type category="struct" name="VkDebugMarkerMarkerInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member len="null-terminated">const <type>char</type>* <name>pMarkerName</name><comment>Name of the debug marker</comment></member> + <member optional="true"><type>float</type> <name>color</name>[4]<comment>Optional color for debug marker</comment></member> + </type> + <type category="struct" name="VkDedicatedAllocationImageCreateInfoNV" structextends="VkImageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>dedicatedAllocation</name><comment>Whether this image uses a dedicated allocation</comment></member> + </type> + <type category="struct" name="VkDedicatedAllocationBufferCreateInfoNV" structextends="VkBufferCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>dedicatedAllocation</name><comment>Whether this buffer uses a dedicated allocation</comment></member> + </type> + <type category="struct" name="VkDedicatedAllocationMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkImage</type> <name>image</name><comment>Image that this allocation will be bound to</comment></member> + <member optional="true"><type>VkBuffer</type> <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member> + </type> + <type category="struct" name="VkExternalImageFormatPropertiesNV" returnedonly="true"> + <member><type>VkImageFormatProperties</type> <name>imageFormatProperties</name></member> + <member optional="true"><type>VkExternalMemoryFeatureFlagsNV</type> <name>externalMemoryFeatures</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>exportFromImportedHandleTypes</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>compatibleHandleTypes</name></member> + </type> + <type category="struct" name="VkExternalMemoryImageCreateInfoNV" structextends="VkImageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkExportMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkImportMemoryWin32HandleInfoNV" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleType</name></member> + <member optional="true"><type>HANDLE</type> <name>handle</name></member> + </type> + <type category="struct" name="VkExportMemoryWin32HandleInfoNV" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member> + <member optional="true"><type>DWORD</type> <name>dwAccess</name></member> + </type> + <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoNV" structextends="VkSubmitInfo"> + <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>acquireCount</name></member> + <member len="acquireCount">const <type>VkDeviceMemory</type>* <name>pAcquireSyncs</name></member> + <member len="acquireCount">const <type>uint64_t</type>* <name>pAcquireKeys</name></member> + <member len="acquireCount">const <type>uint32_t</type>* <name>pAcquireTimeoutMilliseconds</name></member> + <member optional="true"><type>uint32_t</type> <name>releaseCount</name></member> + <member len="releaseCount">const <type>VkDeviceMemory</type>* <name>pReleaseSyncs</name></member> + <member len="releaseCount">const <type>uint64_t</type>* <name>pReleaseKeys</name></member> + </type> + <type category="struct" name="VkDeviceGeneratedCommandsFeaturesNVX"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>computeBindingPointSupport</name></member> + </type> + <type category="struct" name="VkDeviceGeneratedCommandsLimitsNVX"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxIndirectCommandsLayoutTokenCount</name></member> + <member><type>uint32_t</type> <name>maxObjectEntryCounts</name></member> + <member><type>uint32_t</type> <name>minSequenceCountBufferOffsetAlignment</name></member> + <member><type>uint32_t</type> <name>minSequenceIndexBufferOffsetAlignment</name></member> + <member><type>uint32_t</type> <name>minCommandsTokenBufferOffsetAlignment</name></member> + </type> + <type category="struct" name="VkIndirectCommandsTokenNVX"> + <member><type>VkIndirectCommandsTokenTypeNVX</type> <name>tokenType</name></member> + <member><type>VkBuffer</type> <name>buffer</name><comment>buffer containing tableEntries and additional data for indirectCommands</comment></member> + <member><type>VkDeviceSize</type> <name>offset</name><comment>offset from the base address of the buffer</comment></member> + </type> + <type category="struct" name="VkIndirectCommandsLayoutTokenNVX"> + <member><type>VkIndirectCommandsTokenTypeNVX</type> <name>tokenType</name></member> + <member><type>uint32_t</type> <name>bindingUnit</name><comment>Binding unit for vertex attribute / descriptor set, offset for pushconstants</comment></member> + <member><type>uint32_t</type> <name>dynamicCount</name><comment>Number of variable dynamic values for descriptor set / push constants</comment></member> + <member><type>uint32_t</type> <name>divisor</name><comment>Rate the which the array is advanced per element (must be power of 2, minimum 1)</comment></member> + </type> + <type category="struct" name="VkIndirectCommandsLayoutCreateInfoNVX"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member> + <member><type>VkIndirectCommandsLayoutUsageFlagsNVX</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>tokenCount</name></member> + <member len="tokenCount">const <type>VkIndirectCommandsLayoutTokenNVX</type>* <name>pTokens</name></member> + </type> + <type category="struct" name="VkCmdProcessCommandsInfoNVX"> + <member values="VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkObjectTableNVX</type> <name>objectTable</name></member> + <member><type>VkIndirectCommandsLayoutNVX</type> <name>indirectCommandsLayout</name></member> + <member><type>uint32_t</type> <name>indirectCommandsTokenCount</name></member> + <member len="indirectCommandsTokenCount">const <type>VkIndirectCommandsTokenNVX</type>* <name>pIndirectCommandsTokens</name></member> + <member><type>uint32_t</type> <name>maxSequencesCount</name></member> + <member optional="true" externsync="true"><type>VkCommandBuffer</type> <name>targetCommandBuffer</name></member> + <member optional="true"><type>VkBuffer</type> <name>sequencesCountBuffer</name></member> + <member optional="true"><type>VkDeviceSize</type> <name>sequencesCountOffset</name></member> + <member optional="true"><type>VkBuffer</type> <name>sequencesIndexBuffer</name></member> + <member optional="true"><type>VkDeviceSize</type> <name>sequencesIndexOffset</name></member> + </type> + <type category="struct" name="VkCmdReserveSpaceForCommandsInfoNVX"> + <member values="VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkObjectTableNVX</type> <name>objectTable</name></member> + <member><type>VkIndirectCommandsLayoutNVX</type> <name>indirectCommandsLayout</name></member> + <member><type>uint32_t</type> <name>maxSequencesCount</name></member> + </type> + <type category="struct" name="VkObjectTableCreateInfoNVX"> + <member values="VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>objectCount</name></member> + <member len="objectCount">const <type>VkObjectEntryTypeNVX</type>* <name>pObjectEntryTypes</name></member> + <member len="objectCount">const <type>uint32_t</type>* <name>pObjectEntryCounts</name></member> + <member len="objectCount">const <type>VkObjectEntryUsageFlagsNVX</type>* <name>pObjectEntryUsageFlags</name></member> + + <member><type>uint32_t</type> <name>maxUniformBuffersPerDescriptor</name></member> + <member><type>uint32_t</type> <name>maxStorageBuffersPerDescriptor</name></member> + <member><type>uint32_t</type> <name>maxStorageImagesPerDescriptor</name></member> + <member><type>uint32_t</type> <name>maxSampledImagesPerDescriptor</name></member> + <member><type>uint32_t</type> <name>maxPipelineLayouts</name></member> + </type> + <type category="struct" name="VkObjectTableEntryNVX"> + <member><type>VkObjectEntryTypeNVX</type> <name>type</name></member> + <member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member> + </type> + <type category="struct" name="VkObjectTablePipelineEntryNVX"> + <member><type>VkObjectEntryTypeNVX</type> <name>type</name></member> + <member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member> + <member><type>VkPipeline</type> <name>pipeline</name></member> + </type> + <type category="struct" name="VkObjectTableDescriptorSetEntryNVX"> + <member><type>VkObjectEntryTypeNVX</type> <name>type</name></member> + <member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member> + <member><type>VkPipelineLayout</type> <name>pipelineLayout</name></member> + <member><type>VkDescriptorSet</type> <name>descriptorSet</name></member> + </type> + <type category="struct" name="VkObjectTableVertexBufferEntryNVX"> + <member><type>VkObjectEntryTypeNVX</type> <name>type</name></member> + <member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member> + <member><type>VkBuffer</type> <name>buffer</name></member> + </type> + <type category="struct" name="VkObjectTableIndexBufferEntryNVX"> + <member><type>VkObjectEntryTypeNVX</type> <name>type</name></member> + <member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member> + <member><type>VkBuffer</type> <name>buffer</name></member> + <member><type>VkIndexType</type> <name>indexType</name></member> + </type> + <type category="struct" name="VkObjectTablePushConstantEntryNVX"> + <member><type>VkObjectEntryTypeNVX</type> <name>type</name></member> + <member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member> + <member><type>VkPipelineLayout</type> <name>pipelineLayout</name></member> + <member><type>VkShaderStageFlags</type> <name>stageFlags</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceFeatures2" structextends="VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkPhysicalDeviceFeatures</type> <name>features</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceFeatures2KHR" alias="VkPhysicalDeviceFeatures2"/> + <type category="struct" name="VkPhysicalDeviceProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkPhysicalDeviceProperties</type> <name>properties</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceProperties2KHR" alias="VkPhysicalDeviceProperties2"/> + <type category="struct" name="VkFormatProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkFormatProperties</type> <name>formatProperties</name></member> + </type> + <type category="struct" name="VkFormatProperties2KHR" alias="VkFormatProperties2"/> + <type category="struct" name="VkImageFormatProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkImageFormatProperties</type> <name>imageFormatProperties</name></member> + </type> + <type category="struct" name="VkImageFormatProperties2KHR" alias="VkImageFormatProperties2"/> + <type category="struct" name="VkPhysicalDeviceImageFormatInfo2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>VkImageType</type> <name>type</name></member> + <member><type>VkImageTiling</type> <name>tiling</name></member> + <member><type>VkImageUsageFlags</type> <name>usage</name></member> + <member optional="true"><type>VkImageCreateFlags</type> <name>flags</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceImageFormatInfo2KHR" alias="VkPhysicalDeviceImageFormatInfo2"/> + <type category="struct" name="VkQueueFamilyProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkQueueFamilyProperties</type> <name>queueFamilyProperties</name></member> + </type> + <type category="struct" name="VkQueueFamilyProperties2KHR" alias="VkQueueFamilyProperties2"/> + <type category="struct" name="VkPhysicalDeviceMemoryProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkPhysicalDeviceMemoryProperties</type> <name>memoryProperties</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceMemoryProperties2KHR" alias="VkPhysicalDeviceMemoryProperties2"/> + <type category="struct" name="VkSparseImageFormatProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkSparseImageFormatProperties</type> <name>properties</name></member> + </type> + <type category="struct" name="VkSparseImageFormatProperties2KHR" alias="VkSparseImageFormatProperties2"/> + <type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>VkImageType</type> <name>type</name></member> + <member><type>VkSampleCountFlagBits</type> <name>samples</name></member> + <member><type>VkImageUsageFlags</type> <name>usage</name></member> + <member><type>VkImageTiling</type> <name>tiling</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2KHR" alias="VkPhysicalDeviceSparseImageFormatInfo2"/> + <type category="struct" name="VkPhysicalDevicePushDescriptorPropertiesKHR" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxPushDescriptors</name></member> + </type> + <type category="struct" name="VkPresentRegionsKHR" structextends="VkPresentInfoKHR"> + <member values="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member> + <member len="swapchainCount" optional="true">const <type>VkPresentRegionKHR</type>* <name>pRegions</name><comment>The regions that have changed</comment></member> + </type> + <type category="struct" name="VkPresentRegionKHR"> + <member optional="true"><type>uint32_t</type> <name>rectangleCount</name><comment>Number of rectangles in pRectangles</comment></member> + <member optional="true" len="rectangleCount">const <type>VkRectLayerKHR</type>* <name>pRectangles</name><comment>Array of rectangles that have changed in a swapchain's image(s)</comment></member> + </type> + <type category="struct" name="VkRectLayerKHR"> + <member><type>VkOffset2D</type> <name>offset</name><comment>upper-left corner of a rectangle that has not changed, in pixels of a presentation images</comment></member> + <member><type>VkExtent2D</type> <name>extent</name><comment>Dimensions of a rectangle that has not changed, in pixels of a presentation images</comment></member> + <member><type>uint32_t</type> <name>layer</name><comment>Layer of a swapchain's image(s), for stereoscopic-3D images</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceVariablePointerFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>variablePointersStorageBuffer</name></member> + <member><type>VkBool32</type> <name>variablePointers</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceVariablePointerFeaturesKHR" alias="VkPhysicalDeviceVariablePointerFeatures"/> + <type category="struct" name="VkExternalMemoryProperties" returnedonly="true"> + <member><type>VkExternalMemoryFeatureFlags</type> <name>externalMemoryFeatures</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member> + <member><type>VkExternalMemoryHandleTypeFlags</type> <name>compatibleHandleTypes</name></member> + </type> + <type category="struct" name="VkExternalMemoryPropertiesKHR" alias="VkExternalMemoryProperties"/> + <type category="struct" name="VkPhysicalDeviceExternalImageFormatInfo" structextends="VkPhysicalDeviceImageFormatInfo2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalImageFormatInfoKHR" alias="VkPhysicalDeviceExternalImageFormatInfo"/> + <type category="struct" name="VkExternalImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkExternalMemoryProperties</type> <name>externalMemoryProperties</name></member> + </type> + <type category="struct" name="VkExternalImageFormatPropertiesKHR" alias="VkExternalImageFormatProperties"/> + <type category="struct" name="VkPhysicalDeviceExternalBufferInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkBufferCreateFlags</type> <name>flags</name></member> + <member><type>VkBufferUsageFlags</type> <name>usage</name></member> + <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalBufferInfoKHR" alias="VkPhysicalDeviceExternalBufferInfo"/> + <type category="struct" name="VkExternalBufferProperties" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkExternalMemoryProperties</type> <name>externalMemoryProperties</name></member> + </type> + <type category="struct" name="VkExternalBufferPropertiesKHR" alias="VkExternalBufferProperties"/> + <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><type>void</type>* <name>pNext</name></member> + <member><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member> + <member><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member> + <member><type>uint8_t</type> <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member> + <member><type>uint32_t</type> <name>deviceNodeMask</name></member> + <member><type>VkBool32</type> <name>deviceLUIDValid</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceIDPropertiesKHR" alias="VkPhysicalDeviceIDProperties"/> + <type category="struct" name="VkExternalMemoryImageCreateInfo" structextends="VkImageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkExternalMemoryImageCreateInfoKHR" alias="VkExternalMemoryImageCreateInfo"/> + <type category="struct" name="VkExternalMemoryBufferCreateInfo" structextends="VkBufferCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkExternalMemoryBufferCreateInfoKHR" alias="VkExternalMemoryBufferCreateInfo"/> + <type category="struct" name="VkExportMemoryAllocateInfo" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkExportMemoryAllocateInfoKHR" alias="VkExportMemoryAllocateInfo"/> + <type category="struct" name="VkImportMemoryWin32HandleInfoKHR" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + <member optional="true"><type>HANDLE</type> <name>handle</name></member> + <member optional="true"><type>LPCWSTR</type> <name>name</name></member> + </type> + <type category="struct" name="VkExportMemoryWin32HandleInfoKHR" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member> + <member><type>DWORD</type> <name>dwAccess</name></member> + <member><type>LPCWSTR</type> <name>name</name></member> + </type> + <type category="struct" name="VkMemoryWin32HandlePropertiesKHR" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>memoryTypeBits</name></member> + </type> + <type category="struct" name="VkMemoryGetWin32HandleInfoKHR"> + <member values="VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceMemory</type> <name>memory</name></member> + <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkImportMemoryFdInfoKHR" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + <member><type>int</type> <name>fd</name></member> + </type> + <type category="struct" name="VkMemoryFdPropertiesKHR" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>memoryTypeBits</name></member> + </type> + <type category="struct" name="VkMemoryGetFdInfoKHR"> + <member values="VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceMemory</type> <name>memory</name></member> + <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoKHR" structextends="VkSubmitInfo"> + <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>acquireCount</name></member> + <member len="acquireCount">const <type>VkDeviceMemory</type>* <name>pAcquireSyncs</name></member> + <member len="acquireCount">const <type>uint64_t</type>* <name>pAcquireKeys</name></member> + <member len="acquireCount">const <type>uint32_t</type>* <name>pAcquireTimeouts</name></member> + <member optional="true"><type>uint32_t</type> <name>releaseCount</name></member> + <member len="releaseCount">const <type>VkDeviceMemory</type>* <name>pReleaseSyncs</name></member> + <member len="releaseCount">const <type>uint64_t</type>* <name>pReleaseKeys</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalSemaphoreInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalSemaphoreInfoKHR" alias="VkPhysicalDeviceExternalSemaphoreInfo"/> + <type category="struct" name="VkExternalSemaphoreProperties" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkExternalSemaphoreHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member> + <member><type>VkExternalSemaphoreHandleTypeFlags</type> <name>compatibleHandleTypes</name></member> + <member optional="true"><type>VkExternalSemaphoreFeatureFlags</type> <name>externalSemaphoreFeatures</name></member> + </type> + <type category="struct" name="VkExternalSemaphorePropertiesKHR" alias="VkExternalSemaphoreProperties"/> + <type category="struct" name="VkExportSemaphoreCreateInfo" structextends="VkSemaphoreCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalSemaphoreHandleTypeFlags</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkExportSemaphoreCreateInfoKHR" alias="VkExportSemaphoreCreateInfo"/> + <type category="struct" name="VkImportSemaphoreWin32HandleInfoKHR"> + <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member> + <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member> + <member optional="true"><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member> + <member optional="true"><type>HANDLE</type> <name>handle</name></member> + <member optional="true"><type>LPCWSTR</type> <name>name</name></member> + </type> + <type category="struct" name="VkExportSemaphoreWin32HandleInfoKHR" structextends="VkSemaphoreCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member> + <member><type>DWORD</type> <name>dwAccess</name></member> + <member><type>LPCWSTR</type> <name>name</name></member> + </type> + <type category="struct" name="VkD3D12FenceSubmitInfoKHR" structextends="VkSubmitInfo"> + <member values="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>waitSemaphoreValuesCount</name></member> + <member optional="true" len="waitSemaphoreValuesCount">const <type>uint64_t</type>* <name>pWaitSemaphoreValues</name></member> + <member optional="true"><type>uint32_t</type> <name>signalSemaphoreValuesCount</name></member> + <member optional="true" len="signalSemaphoreValuesCount">const <type>uint64_t</type>* <name>pSignalSemaphoreValues</name></member> + </type> + <type category="struct" name="VkSemaphoreGetWin32HandleInfoKHR"> + <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkSemaphore</type> <name>semaphore</name></member> + <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkImportSemaphoreFdInfoKHR"> + <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member> + <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member> + <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member> + <member><type>int</type> <name>fd</name></member> + </type> + <type category="struct" name="VkSemaphoreGetFdInfoKHR"> + <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkSemaphore</type> <name>semaphore</name></member> + <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalFenceInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalFenceInfoKHR" alias="VkPhysicalDeviceExternalFenceInfo"/> + <type category="struct" name="VkExternalFenceProperties" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkExternalFenceHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member> + <member><type>VkExternalFenceHandleTypeFlags</type> <name>compatibleHandleTypes</name></member> + <member optional="true"><type>VkExternalFenceFeatureFlags</type> <name>externalFenceFeatures</name></member> + </type> + <type category="struct" name="VkExternalFencePropertiesKHR" alias="VkExternalFenceProperties"/> + <type category="struct" name="VkExportFenceCreateInfo" structextends="VkFenceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkExternalFenceHandleTypeFlags</type> <name>handleTypes</name></member> + </type> + <type category="struct" name="VkExportFenceCreateInfoKHR" alias="VkExportFenceCreateInfo"/> + <type category="struct" name="VkImportFenceWin32HandleInfoKHR"> + <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkFence</type> <name>fence</name></member> + <member optional="true"><type>VkFenceImportFlags</type> <name>flags</name></member> + <member optional="true"><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member> + <member optional="true"><type>HANDLE</type> <name>handle</name></member> + <member optional="true"><type>LPCWSTR</type> <name>name</name></member> + </type> + <type category="struct" name="VkExportFenceWin32HandleInfoKHR" structextends="VkFenceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member> + <member><type>DWORD</type> <name>dwAccess</name></member> + <member><type>LPCWSTR</type> <name>name</name></member> + </type> + <type category="struct" name="VkFenceGetWin32HandleInfoKHR"> + <member values="VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkFence</type> <name>fence</name></member> + <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkImportFenceFdInfoKHR"> + <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkFence</type> <name>fence</name></member> + <member optional="true"><type>VkFenceImportFlags</type> <name>flags</name></member> + <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member> + <member><type>int</type> <name>fd</name></member> + </type> + <type category="struct" name="VkFenceGetFdInfoKHR"> + <member values="VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkFence</type> <name>fence</name></member> + <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceMultiviewFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>multiview</name><comment>Multiple views in a renderpass</comment></member> + <member><type>VkBool32</type> <name>multiviewGeometryShader</name><comment>Multiple views in a renderpass w/ geometry shader</comment></member> + <member><type>VkBool32</type> <name>multiviewTessellationShader</name><comment>Multiple views in a renderpass w/ tessellation shader</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceMultiviewFeaturesKHR" alias="VkPhysicalDeviceMultiviewFeatures"/> + <type category="struct" name="VkPhysicalDeviceMultiviewProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxMultiviewViewCount</name><comment>max number of views in a subpass</comment></member> + <member><type>uint32_t</type> <name>maxMultiviewInstanceIndex</name><comment>max instance index for a draw in a multiview subpass</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceMultiviewPropertiesKHR" alias="VkPhysicalDeviceMultiviewProperties"/> + <type category="struct" name="VkRenderPassMultiviewCreateInfo" structextends="VkRenderPassCreateInfo"> + <member values="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>subpassCount</name></member> + <member len="subpassCount">const <type>uint32_t</type>* <name>pViewMasks</name></member> + <member optional="true"><type>uint32_t</type> <name>dependencyCount</name></member> + <member len="dependencyCount">const <type>int32_t</type>* <name>pViewOffsets</name></member> + <member optional="true"><type>uint32_t</type> <name>correlationMaskCount</name></member> + <member len="correlationMaskCount">const <type>uint32_t</type>* <name>pCorrelationMasks</name></member> + </type> + <type category="struct" name="VkRenderPassMultiviewCreateInfoKHR" alias="VkRenderPassMultiviewCreateInfo"/> + <type category="struct" name="VkSurfaceCapabilities2EXT" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>minImageCount</name><comment>Supported minimum number of images for the surface</comment></member> + <member><type>uint32_t</type> <name>maxImageCount</name><comment>Supported maximum number of images for the surface, 0 for unlimited</comment></member> + <member><type>VkExtent2D</type> <name>currentExtent</name><comment>Current image width and height for the surface, (0, 0) if undefined</comment></member> + <member><type>VkExtent2D</type> <name>minImageExtent</name><comment>Supported minimum image width and height for the surface</comment></member> + <member><type>VkExtent2D</type> <name>maxImageExtent</name><comment>Supported maximum image width and height for the surface</comment></member> + <member><type>uint32_t</type> <name>maxImageArrayLayers</name><comment>Supported maximum number of image layers for the surface</comment></member> + <member optional="true"><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name><comment>1 or more bits representing the transforms supported</comment></member> + <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>currentTransform</name><comment>The surface's current transform relative to the device's natural orientation</comment></member> + <member optional="true"><type>VkCompositeAlphaFlagsKHR</type> <name>supportedCompositeAlpha</name><comment>1 or more bits representing the alpha compositing modes supported</comment></member> + <member optional="true"><type>VkImageUsageFlags</type> <name>supportedUsageFlags</name><comment>Supported image usage flags for the surface</comment></member> + <member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>supportedSurfaceCounters</name></member> + </type> + <type category="struct" name="VkDisplayPowerInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDisplayPowerStateEXT</type> <name>powerState</name></member> + </type> + <type category="struct" name="VkDeviceEventInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceEventTypeEXT</type> <name>deviceEvent</name></member> + </type> + <type category="struct" name="VkDisplayEventInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDisplayEventTypeEXT</type> <name>displayEvent</name></member> + </type> + <type category="struct" name="VkSwapchainCounterCreateInfoEXT" structextends="VkSwapchainCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>surfaceCounters</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceGroupProperties" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>physicalDeviceCount</name></member> + <member><type>VkPhysicalDevice</type> <name>physicalDevices</name>[<enum>VK_MAX_DEVICE_GROUP_SIZE</enum>]</member> + <member><type>VkBool32</type> <name>subsetAllocation</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceGroupPropertiesKHR" alias="VkPhysicalDeviceGroupProperties"/> + <type category="struct" name="VkMemoryAllocateFlagsInfo" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkMemoryAllocateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>deviceMask</name></member> + </type> + <type category="struct" name="VkMemoryAllocateFlagsInfoKHR" alias="VkMemoryAllocateFlagsInfo"/> + <type category="struct" name="VkBindBufferMemoryInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBuffer</type> <name>buffer</name></member> + <member><type>VkDeviceMemory</type> <name>memory</name></member> + <member><type>VkDeviceSize</type> <name>memoryOffset</name></member> + </type> + <type category="struct" name="VkBindBufferMemoryInfoKHR" alias="VkBindBufferMemoryInfo"/> + <type category="struct" name="VkBindBufferMemoryDeviceGroupInfo" structextends="VkBindBufferMemoryInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>deviceIndexCount</name></member> + <member len="deviceIndexCount">const <type>uint32_t</type>* <name>pDeviceIndices</name></member> + </type> + <type category="struct" name="VkBindBufferMemoryDeviceGroupInfoKHR" alias="VkBindBufferMemoryDeviceGroupInfo"/> + <type category="struct" name="VkBindImageMemoryInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkImage</type> <name>image</name></member> + <member noautovalidity="true"><type>VkDeviceMemory</type> <name>memory</name></member> + <member><type>VkDeviceSize</type> <name>memoryOffset</name></member> + </type> + <type category="struct" name="VkBindImageMemoryInfoKHR" alias="VkBindImageMemoryInfo"/> + <type category="struct" name="VkBindImageMemoryDeviceGroupInfo" structextends="VkBindImageMemoryInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>deviceIndexCount</name></member> + <member len="deviceIndexCount">const <type>uint32_t</type>* <name>pDeviceIndices</name></member> + <member optional="true"><type>uint32_t</type> <name>splitInstanceBindRegionCount</name></member> + <member len="splitInstanceBindRegionCount">const <type>VkRect2D</type>* <name>pSplitInstanceBindRegions</name></member> + </type> + <type category="struct" name="VkBindImageMemoryDeviceGroupInfoKHR" alias="VkBindImageMemoryDeviceGroupInfo"/> + <type category="struct" name="VkDeviceGroupRenderPassBeginInfo" structextends="VkRenderPassBeginInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>deviceMask</name></member> + <member optional="true"><type>uint32_t</type> <name>deviceRenderAreaCount</name></member> + <member len="deviceRenderAreaCount">const <type>VkRect2D</type>* <name>pDeviceRenderAreas</name></member> + </type> + <type category="struct" name="VkDeviceGroupRenderPassBeginInfoKHR" alias="VkDeviceGroupRenderPassBeginInfo"/> + <type category="struct" name="VkDeviceGroupCommandBufferBeginInfo" structextends="VkCommandBufferBeginInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>deviceMask</name></member> + </type> + <type category="struct" name="VkDeviceGroupCommandBufferBeginInfoKHR" alias="VkDeviceGroupCommandBufferBeginInfo"/> + <type category="struct" name="VkDeviceGroupSubmitInfo" structextends="VkSubmitInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> + <member len="waitSemaphoreCount">const <type>uint32_t</type>* <name>pWaitSemaphoreDeviceIndices</name></member> + <member optional="true"><type>uint32_t</type> <name>commandBufferCount</name></member> + <member len="commandBufferCount">const <type>uint32_t</type>* <name>pCommandBufferDeviceMasks</name></member> + <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member> + <member len="signalSemaphoreCount">const <type>uint32_t</type>* <name>pSignalSemaphoreDeviceIndices</name></member> + </type> + <type category="struct" name="VkDeviceGroupSubmitInfoKHR" alias="VkDeviceGroupSubmitInfo"/> + <type category="struct" name="VkDeviceGroupBindSparseInfo" structextends="VkBindSparseInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>resourceDeviceIndex</name></member> + <member><type>uint32_t</type> <name>memoryDeviceIndex</name></member> + </type> + <type category="struct" name="VkDeviceGroupBindSparseInfoKHR" alias="VkDeviceGroupBindSparseInfo"/> + <type category="struct" name="VkDeviceGroupPresentCapabilitiesKHR" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>presentMask</name>[<enum>VK_MAX_DEVICE_GROUP_SIZE</enum>]</member> + <member><type>VkDeviceGroupPresentModeFlagsKHR</type> <name>modes</name></member> + </type> + <type category="struct" name="VkImageSwapchainCreateInfoKHR" structextends="VkImageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member> + </type> + <type category="struct" name="VkBindImageMemorySwapchainInfoKHR" structextends="VkBindImageMemoryInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member> + <member><type>uint32_t</type> <name>imageIndex</name></member> + </type> + <type category="struct" name="VkAcquireNextImageInfoKHR"> + <member values="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member> + <member><type>uint64_t</type> <name>timeout</name></member> + <member optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member> + <member optional="true" externsync="true"><type>VkFence</type> <name>fence</name></member> + <member><type>uint32_t</type> <name>deviceMask</name></member> + </type> + <type category="struct" name="VkDeviceGroupPresentInfoKHR" structextends="VkPresentInfoKHR"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>swapchainCount</name></member> + <member len="swapchainCount">const <type>uint32_t</type>* <name>pDeviceMasks</name></member> + <member><type>VkDeviceGroupPresentModeFlagBitsKHR</type> <name>mode</name></member> + </type> + <type category="struct" name="VkDeviceGroupDeviceCreateInfo" structextends="VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>physicalDeviceCount</name></member> + <member len="physicalDeviceCount">const <type>VkPhysicalDevice</type>* <name>pPhysicalDevices</name></member> + </type> + <type category="struct" name="VkDeviceGroupDeviceCreateInfoKHR" alias="VkDeviceGroupDeviceCreateInfo"/> + <type category="struct" name="VkDeviceGroupSwapchainCreateInfoKHR" structextends="VkSwapchainCreateInfoKHR"> + <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceGroupPresentModeFlagsKHR</type> <name>modes</name></member> + </type> + <type category="struct" name="VkDescriptorUpdateTemplateEntry"> + <member><type>uint32_t</type> <name>dstBinding</name><comment>Binding within the destination descriptor set to write</comment></member> + <member><type>uint32_t</type> <name>dstArrayElement</name><comment>Array element within the destination binding to write</comment></member> + <member><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors to write</comment></member> + <member><type>VkDescriptorType</type> <name>descriptorType</name><comment>Descriptor type to write</comment></member> + <member><type>size_t</type> <name>offset</name><comment>Offset into pData where the descriptors to update are stored</comment></member> + <member><type>size_t</type> <name>stride</name><comment>Stride between two descriptors in pData when writing more than one descriptor</comment></member> + </type> + <type category="struct" name="VkDescriptorUpdateTemplateEntryKHR" alias="VkDescriptorUpdateTemplateEntry"/> + <type category="struct" name="VkDescriptorUpdateTemplateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDescriptorUpdateTemplateCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>descriptorUpdateEntryCount</name><comment>Number of descriptor update entries to use for the update template</comment></member> + <member len="descriptorUpdateEntryCount">const <type>VkDescriptorUpdateTemplateEntry</type>* <name>pDescriptorUpdateEntries</name><comment>Descriptor update entries for the template</comment></member> + <member><type>VkDescriptorUpdateTemplateType</type> <name>templateType</name></member> + <member optional="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>uint32_t</type> <name>set</name></member> + </type> + <type category="struct" name="VkDescriptorUpdateTemplateCreateInfoKHR" alias="VkDescriptorUpdateTemplateCreateInfo"/> + <type category="struct" name="VkXYColorEXT" comment="Chromaticity coordinate"> + <member><type>float</type> <name>x</name></member> + <member><type>float</type> <name>y</name></member> + </type> + <type category="struct" name="VkHdrMetadataEXT"> + <comment>Display primary in chromaticity coordinates</comment> + <member values="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <comment> From SMPTE 2086</comment> + <member><type>VkXYColorEXT</type> <name>displayPrimaryRed</name><comment>Display primary's Red</comment></member> + <member><type>VkXYColorEXT</type> <name>displayPrimaryGreen</name><comment>Display primary's Green</comment></member> + <member><type>VkXYColorEXT</type> <name>displayPrimaryBlue</name><comment>Display primary's Blue</comment></member> + <member><type>VkXYColorEXT</type> <name>whitePoint</name><comment>Display primary's Blue</comment></member> + <member><type>float</type> <name>maxLuminance</name><comment>Display maximum luminance</comment></member> + <member><type>float</type> <name>minLuminance</name><comment>Display minimum luminance</comment></member> + <comment> From CTA 861.3</comment> + <member><type>float</type> <name>maxContentLightLevel</name><comment>Content maximum luminance</comment></member> + <member><type>float</type> <name>maxFrameAverageLightLevel</name></member> + </type> + <type category="struct" name="VkRefreshCycleDurationGOOGLE"> + <member><type>uint64_t</type> <name>refreshDuration</name><comment>Number of nanoseconds from the start of one refresh cycle to the next</comment></member> + </type> + <type category="struct" name="VkPastPresentationTimingGOOGLE"> + <member><type>uint32_t</type> <name>presentID</name><comment>Application-provided identifier, previously given to vkQueuePresentKHR</comment></member> + <member><type>uint64_t</type> <name>desiredPresentTime</name><comment>Earliest time an image should have been presented, previously given to vkQueuePresentKHR</comment></member> + <member><type>uint64_t</type> <name>actualPresentTime</name><comment>Time the image was actually displayed</comment></member> + <member><type>uint64_t</type> <name>earliestPresentTime</name><comment>Earliest time the image could have been displayed</comment></member> + <member><type>uint64_t</type> <name>presentMargin</name><comment>How early vkQueuePresentKHR was processed vs. how soon it needed to be and make earliestPresentTime</comment></member> + </type> + <type category="struct" name="VkPresentTimesInfoGOOGLE" structextends="VkPresentInfoKHR"> + <member values="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member> + <member len="swapchainCount" optional="true">const <type>VkPresentTimeGOOGLE</type>* <name>pTimes</name><comment>The earliest times to present images</comment></member> + </type> + <type category="struct" name="VkPresentTimeGOOGLE"> + <member><type>uint32_t</type> <name>presentID</name><comment>Application-provided identifier</comment></member> + <member><type>uint64_t</type> <name>desiredPresentTime</name><comment>Earliest time an image should be presented</comment></member> + </type> + <type category="struct" name="VkIOSSurfaceCreateInfoMVK"> + <member values="VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkIOSSurfaceCreateFlagsMVK</type> <name>flags</name></member> + <member noautovalidity="true">const <type>void</type>* <name>pView</name></member> + </type> + <type category="struct" name="VkMacOSSurfaceCreateInfoMVK"> + <member values="VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkMacOSSurfaceCreateFlagsMVK</type> <name>flags</name></member> + <member noautovalidity="true">const <type>void</type>* <name>pView</name></member> + </type> + <type category="struct" name="VkViewportWScalingNV"> + <member><type>float</type> <name>xcoeff</name></member> + <member><type>float</type> <name>ycoeff</name></member> + </type> + <type category="struct" name="VkPipelineViewportWScalingStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>viewportWScalingEnable</name></member> + <member><type>uint32_t</type> <name>viewportCount</name></member> + <member noautovalidity="true" len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></member> + </type> + <type category="struct" name="VkViewportSwizzleNV"> + <member><type>VkViewportCoordinateSwizzleNV</type> <name>x</name></member> + <member><type>VkViewportCoordinateSwizzleNV</type> <name>y</name></member> + <member><type>VkViewportCoordinateSwizzleNV</type> <name>z</name></member> + <member><type>VkViewportCoordinateSwizzleNV</type> <name>w</name></member> + </type> + <type category="struct" name="VkPipelineViewportSwizzleStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineViewportSwizzleStateCreateFlagsNV</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>viewportCount</name></member> + <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewportSwizzleNV</type>* <name>pViewportSwizzles</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceDiscardRectanglePropertiesEXT" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxDiscardRectangles</name><comment>max number of active discard rectangles</comment></member> + </type> + <type category="struct" name="VkPipelineDiscardRectangleStateCreateInfoEXT" structextends="VkGraphicsPipelineCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineDiscardRectangleStateCreateFlagsEXT</type> <name>flags</name></member> + <member><type>VkDiscardRectangleModeEXT</type> <name>discardRectangleMode</name></member> + <member optional="true"><type>uint32_t</type> <name>discardRectangleCount</name></member> + <member noautovalidity="true" optional="true" len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>perViewPositionAllComponents</name></member> + </type> + <type category="struct" name="VkInputAttachmentAspectReference"> + <member><type>uint32_t</type> <name>subpass</name></member> + <member><type>uint32_t</type> <name>inputAttachmentIndex</name></member> + <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member> + </type> + <type category="struct" name="VkInputAttachmentAspectReferenceKHR" alias="VkInputAttachmentAspectReference"/> + <type category="struct" name="VkRenderPassInputAttachmentAspectCreateInfo" structextends="VkRenderPassCreateInfo"> + <member values="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>aspectReferenceCount</name></member> + <member len="aspectReferenceCount">const <type>VkInputAttachmentAspectReference</type>* <name>pAspectReferences</name></member> + </type> + <type category="struct" name="VkRenderPassInputAttachmentAspectCreateInfoKHR" alias="VkRenderPassInputAttachmentAspectCreateInfo"/> + <type category="struct" name="VkPhysicalDeviceSurfaceInfo2KHR"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkSurfaceKHR</type> <name>surface</name></member> + </type> + <type category="struct" name="VkSurfaceCapabilities2KHR" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkSurfaceCapabilitiesKHR</type> <name>surfaceCapabilities</name></member> + </type> + <type category="struct" name="VkSurfaceFormat2KHR" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkSurfaceFormatKHR</type> <name>surfaceFormat</name></member> + </type> + <type category="struct" name="VkSharedPresentSurfaceCapabilitiesKHR" returnedonly="true" structextends="VkSurfaceCapabilities2KHR"> + <member values="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkImageUsageFlags</type> <name>sharedPresentSupportedUsageFlags</name><comment>Supported image usage flags if swapchain created using a shared present mode</comment></member> + </type> + <type category="struct" name="VkPhysicalDevice16BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="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> + <member><type>VkBool32</type> <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member> + <member><type>VkBool32</type> <name>storageInputOutput16</name><comment>16-bit integer/floating-point variables supported in shader inputs and outputs</comment></member> + </type> + <type category="struct" name="VkPhysicalDevice16BitStorageFeaturesKHR" alias="VkPhysicalDevice16BitStorageFeatures"/> + <type category="struct" name="VkPhysicalDeviceSubgroupProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member noautovalidity="true"><type>uint32_t</type> <name>subgroupSize</name><comment>The size of a subgroup for this queue.</comment></member> + <member noautovalidity="true"><type>VkShaderStageFlags</type> <name>supportedStages</name><comment>Bitfield of what shader stages support subgroup operations</comment></member> + <member noautovalidity="true"><type>VkSubgroupFeatureFlags</type> <name>supportedOperations</name><comment>Bitfield of what subgroup operations are supported.</comment></member> + <member noautovalidity="true"><type>VkBool32</type> <name>quadOperationsInAllStages</name><comment>Flag to specify whether quad operations are available in all stages.</comment></member> + </type> + <type category="struct" name="VkBufferMemoryRequirementsInfo2"> + <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBuffer</type> <name>buffer</name></member> + </type> + <type category="struct" name="VkBufferMemoryRequirementsInfo2KHR" alias="VkBufferMemoryRequirementsInfo2"/> + <type category="struct" name="VkImageMemoryRequirementsInfo2"> + <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkImage</type> <name>image</name></member> + </type> + <type category="struct" name="VkImageMemoryRequirementsInfo2KHR" alias="VkImageMemoryRequirementsInfo2"/> + <type category="struct" name="VkImageSparseMemoryRequirementsInfo2"> + <member values="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkImage</type> <name>image</name></member> + </type> + <type category="struct" name="VkImageSparseMemoryRequirementsInfo2KHR" alias="VkImageSparseMemoryRequirementsInfo2"/> + <type category="struct" name="VkMemoryRequirements2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkMemoryRequirements</type> <name>memoryRequirements</name></member> + </type> + <type category="struct" name="VkMemoryRequirements2KHR" alias="VkMemoryRequirements2"/> + <type category="struct" name="VkSparseImageMemoryRequirements2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkSparseImageMemoryRequirements</type> <name>memoryRequirements</name></member> + </type> + <type category="struct" name="VkSparseImageMemoryRequirements2KHR" alias="VkSparseImageMemoryRequirements2"/> + <type category="struct" name="VkPhysicalDevicePointClippingProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkPointClippingBehavior</type> <name>pointClippingBehavior</name></member> + </type> + <type category="struct" name="VkPhysicalDevicePointClippingPropertiesKHR" alias="VkPhysicalDevicePointClippingProperties"/> + <type category="struct" name="VkMemoryDedicatedRequirements" returnedonly="true" structextends="VkMemoryRequirements2"> + <member values="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>prefersDedicatedAllocation</name></member> + <member><type>VkBool32</type> <name>requiresDedicatedAllocation</name></member> + </type> + <type category="struct" name="VkMemoryDedicatedRequirementsKHR" alias="VkMemoryDedicatedRequirements"/> + <type category="struct" name="VkMemoryDedicatedAllocateInfo" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkImage</type> <name>image</name><comment>Image that this allocation will be bound to</comment></member> + <member optional="true"><type>VkBuffer</type> <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member> + </type> + <type category="struct" name="VkMemoryDedicatedAllocateInfoKHR" alias="VkMemoryDedicatedAllocateInfo"/> + <type category="struct" name="VkImageViewUsageCreateInfo" structextends="VkImageViewCreateInfo"> + <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkImageUsageFlags</type> <name>usage</name></member> + </type> + <type category="struct" name="VkImageViewUsageCreateInfoKHR" alias="VkImageViewUsageCreateInfo"/> + <type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfo" structextends="VkPipelineTessellationStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkTessellationDomainOrigin</type> <name>domainOrigin</name></member> + </type> + <type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfoKHR" alias="VkPipelineTessellationDomainOriginStateCreateInfo"/> + <type category="struct" name="VkSamplerYcbcrConversionInfo" structextends="VkSamplerCreateInfo,VkImageViewCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkSamplerYcbcrConversion</type> <name>conversion</name></member> + </type> + <type category="struct" name="VkSamplerYcbcrConversionInfoKHR" alias="VkSamplerYcbcrConversionInfo"/> + <type category="struct" name="VkSamplerYcbcrConversionCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>VkSamplerYcbcrModelConversion</type> <name>ycbcrModel</name></member> + <member><type>VkSamplerYcbcrRange</type> <name>ycbcrRange</name></member> + <member><type>VkComponentMapping</type> <name>components</name></member> + <member><type>VkChromaLocation</type> <name>xChromaOffset</name></member> + <member><type>VkChromaLocation</type> <name>yChromaOffset</name></member> + <member><type>VkFilter</type> <name>chromaFilter</name></member> + <member><type>VkBool32</type> <name>forceExplicitReconstruction</name></member> + </type> + <type category="struct" name="VkSamplerYcbcrConversionCreateInfoKHR" alias="VkSamplerYcbcrConversionCreateInfo"/> + <type category="struct" name="VkBindImagePlaneMemoryInfo" structextends="VkBindImageMemoryInfo"> + <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member> + </type> + <type category="struct" name="VkBindImagePlaneMemoryInfoKHR" alias="VkBindImagePlaneMemoryInfo"/> + <type category="struct" name="VkImagePlaneMemoryRequirementsInfo" structextends="VkImageMemoryRequirementsInfo2"> + <member values="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member> + </type> + <type category="struct" name="VkImagePlaneMemoryRequirementsInfoKHR" alias="VkImagePlaneMemoryRequirementsInfo"/> + <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>samplerYcbcrConversion</name><comment>Sampler color conversion supported</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR" alias="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/> + <type category="struct" name="VkSamplerYcbcrConversionImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2"> + <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>combinedImageSamplerDescriptorCount</name></member> + </type> + <type category="struct" name="VkSamplerYcbcrConversionImageFormatPropertiesKHR" alias="VkSamplerYcbcrConversionImageFormatProperties"/> + <type category="struct" name="VkTextureLODGatherFormatPropertiesAMD" returnedonly="true" structextends="VkImageFormatProperties2"> + <member values="VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>supportsTextureGatherLODBiasAMD</name></member> + </type> + <type category="struct" name="VkProtectedSubmitInfo" structextends="VkSubmitInfo"> + <member values="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>protectedSubmit</name><comment>Submit protected command buffers</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceProtectedMemoryFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>protectedMemory</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceProtectedMemoryProperties" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>protectedNoFault</name></member> + </type> + <type category="struct" name="VkDeviceQueueInfo2"> + <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceQueueCreateFlags</type> <name>flags</name></member> + <member><type>uint32_t</type> <name>queueFamilyIndex</name></member> + <member><type>uint32_t</type> <name>queueIndex</name></member> + </type> + <type category="struct" name="VkPipelineCoverageToColorStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineCoverageToColorStateCreateFlagsNV</type> <name>flags</name></member> + <member><type>VkBool32</type> <name>coverageToColorEnable</name></member> + <member optional="true"><type>uint32_t</type> <name>coverageToColorLocation</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>filterMinmaxSingleComponentFormats</name></member> + <member><type>VkBool32</type> <name>filterMinmaxImageComponentMapping</name></member> + </type> + <type category="struct" name="VkSampleLocationEXT"> + <member><type>float</type> <name>x</name></member> + <member><type>float</type> <name>y</name></member> + </type> + <type category="struct" name="VkSampleLocationsInfoEXT" structextends="VkImageMemoryBarrier"> + <member values="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkSampleCountFlagBits</type> <name>sampleLocationsPerPixel</name></member> + <member><type>VkExtent2D</type> <name>sampleLocationGridSize</name></member> + <member><type>uint32_t</type> <name>sampleLocationsCount</name></member> + <member len="sampleLocationsCount">const <type>VkSampleLocationEXT</type>* <name>pSampleLocations</name></member> + </type> + <type category="struct" name="VkAttachmentSampleLocationsEXT"> + <member><type>uint32_t</type> <name>attachmentIndex</name></member> + <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member> + </type> + <type category="struct" name="VkSubpassSampleLocationsEXT"> + <member><type>uint32_t</type> <name>subpassIndex</name></member> + <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member> + </type> + <type category="struct" name="VkRenderPassSampleLocationsBeginInfoEXT" structextends="VkRenderPassBeginInfo"> + <member values="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>attachmentInitialSampleLocationsCount</name></member> + <member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</name></member> + <member optional="true"><type>uint32_t</type> <name>postSubpassSampleLocationsCount</name></member> + <member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pPostSubpassSampleLocations</name></member> + </type> + <type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>sampleLocationsEnable</name></member> + <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceSampleLocationsPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkSampleCountFlags</type> <name>sampleLocationSampleCounts</name></member> + <member><type>VkExtent2D</type> <name>maxSampleLocationGridSize</name></member> + <member><type>float</type> <name>sampleLocationCoordinateRange</name>[2]</member> + <member><type>uint32_t</type> <name>sampleLocationSubPixelBits</name></member> + <member><type>VkBool32</type> <name>variableSampleLocations</name></member> + </type> + <type category="struct" name="VkMultisamplePropertiesEXT" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkExtent2D</type> <name>maxSampleLocationGridSize</name></member> + </type> + <type category="struct" name="VkSamplerReductionModeCreateInfoEXT" structextends="VkSamplerCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkSamplerReductionModeEXT</type> <name>reductionMode</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" structextends="VkPhysicalDeviceFeatures2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>advancedBlendCoherentOperations</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>advancedBlendMaxColorAttachments</name></member> + <member><type>VkBool32</type> <name>advancedBlendIndependentBlend</name></member> + <member><type>VkBool32</type> <name>advancedBlendNonPremultipliedSrcColor</name></member> + <member><type>VkBool32</type> <name>advancedBlendNonPremultipliedDstColor</name></member> + <member><type>VkBool32</type> <name>advancedBlendCorrelatedOverlap</name></member> + <member><type>VkBool32</type> <name>advancedBlendAllOperations</name></member> + </type> + <type category="struct" name="VkPipelineColorBlendAdvancedStateCreateInfoEXT" structextends="VkPipelineColorBlendStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>srcPremultiplied</name></member> + <member><type>VkBool32</type> <name>dstPremultiplied</name></member> + <member><type>VkBlendOverlapEXT</type> <name>blendOverlap</name></member> + </type> + <type category="struct" name="VkPipelineCoverageModulationStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkPipelineCoverageModulationStateCreateFlagsNV</type> <name>flags</name></member> + <member><type>VkCoverageModulationModeNV</type> <name>coverageModulationMode</name></member> + <member><type>VkBool32</type> <name>coverageModulationTableEnable</name></member> + <member><type>uint32_t</type> <name>coverageModulationTableCount</name></member> + <member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member> + </type> + <type category="struct" name="VkImageFormatListCreateInfoKHR" structextends="VkImageCreateInfo"> + <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>viewFormatCount</name></member> + <member len="viewFormatCount">const <type>VkFormat</type>* <name>pViewFormats</name></member> + </type> + <type category="struct" name="VkValidationCacheCreateInfoEXT"> + <member values="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkValidationCacheCreateFlagsEXT</type> <name>flags</name></member> + <member optional="true"><type>size_t</type> <name>initialDataSize</name></member> + <member len="initialDataSize">const <type>void</type>* <name>pInitialData</name></member> + </type> + <type category="struct" name="VkShaderModuleValidationCacheCreateInfoEXT" structextends="VkShaderModuleCreateInfo"> + <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkValidationCacheEXT</type> <name>validationCache</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceMaintenance3Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxPerSetDescriptors</name></member> + <member><type>VkDeviceSize</type> <name>maxMemoryAllocationSize</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceMaintenance3PropertiesKHR" alias="VkPhysicalDeviceMaintenance3Properties"/> + <type category="struct" name="VkDescriptorSetLayoutSupport" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>supported</name></member> + </type> + <type category="struct" name="VkDescriptorSetLayoutSupportKHR" alias="VkDescriptorSetLayoutSupport"/> + <type category="struct" name="VkPhysicalDeviceShaderDrawParameterFeatures" structextends="VkPhysicalDeviceFeatures2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>shaderDrawParameters</name></member> + </type> + <type category="struct" name="VkNativeBufferANDROID"> + <member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member>const <type>void</type>* <name>handle</name></member> + <member><type>int</type> <name>stride</name></member> + <member><type>int</type> <name>format</name></member> + <member><type>int</type> <name>usage</name></member> + </type> + <type category="struct" name="VkShaderResourceUsageAMD" returnedonly="true"> + <member><type>uint32_t</type> <name>numUsedVgprs</name></member> + <member><type>uint32_t</type> <name>numUsedSgprs</name></member> + <member><type>uint32_t</type> <name>ldsSizePerLocalWorkGroup</name></member> + <member><type>size_t</type> <name>ldsUsageSizeInBytes</name></member> + <member><type>size_t</type> <name>scratchMemUsageInBytes</name></member> + </type> + <type category="struct" name="VkShaderStatisticsInfoAMD" returnedonly="true"> + <member><type>VkShaderStageFlags</type> <name>shaderStageMask</name></member> + <member><type>VkShaderResourceUsageAMD</type> <name>resourceUsage</name></member> + <member><type>uint32_t</type> <name>numPhysicalVgprs</name></member> + <member><type>uint32_t</type> <name>numPhysicalSgprs</name></member> + <member><type>uint32_t</type> <name>numAvailableVgprs</name></member> + <member><type>uint32_t</type> <name>numAvailableSgprs</name></member> + <member><type>uint32_t</type> <name>computeWorkGroupSize</name>[3]</member> + </type> + <type category="struct" name="VkDeviceQueueGlobalPriorityCreateInfoEXT" structextends="VkDeviceQueueCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkQueueGlobalPriorityEXT</type> <name>globalPriority</name></member> + </type> + <type category="struct" name="VkDebugUtilsObjectNameInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkObjectType</type> <name>objectType</name></member> + <member><type>uint64_t</type> <name>objectHandle</name></member> + <member optional="true" len="null-terminated">const <type>char</type>* <name>pObjectName</name></member> + </type> + <type category="struct" name="VkDebugUtilsObjectTagInfoEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkObjectType</type> <name>objectType</name></member> + <member><type>uint64_t</type> <name>objectHandle</name></member> + <member><type>uint64_t</type> <name>tagName</name></member> + <member><type>size_t</type> <name>tagSize</name></member> + <member len="tagSize">const <type>void</type>* <name>pTag</name></member> + </type> + <type category="struct" name="VkDebugUtilsLabelEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member len="null-terminated">const <type>char</type>* <name>pLabelName</name></member> + <member optional="true"><type>float</type> <name>color</name>[4]</member> + </type> + <type category="struct" name="VkDebugUtilsMessengerCreateInfoEXT" structextends="VkInstanceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDebugUtilsMessengerCreateFlagsEXT</type> <name>flags</name></member> + <member><type>VkDebugUtilsMessageSeverityFlagsEXT</type> <name>messageSeverity</name></member> + <member><type>VkDebugUtilsMessageTypeFlagsEXT</type> <name>messageType</name></member> + <member><type>PFN_vkDebugUtilsMessengerCallbackEXT</type> <name>pfnUserCallback</name></member> + <member optional="true"><type>void</type>* <name>pUserData</name></member> + </type> + <type category="struct" name="VkDebugUtilsMessengerCallbackDataEXT"> + <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkDebugUtilsMessengerCallbackDataFlagsEXT</type> <name>flags</name></member> + <member optional="true" len="null-terminated">const <type>char</type>* <name>pMessageIdName</name></member> + <member optional="true"><type>int32_t</type> <name>messageIdNumber</name></member> + <member len="null-terminated">const <type>char</type>* <name>pMessage</name></member> + <member optional="true"><type>uint32_t</type> <name>queueLabelCount</name></member> + <member noautovalidity="true" optional="true" len="queueLabelCount"><type>VkDebugUtilsLabelEXT</type>* <name>pQueueLabels</name></member> + <member optional="true"><type>uint32_t</type> <name>cmdBufLabelCount</name></member> + <member noautovalidity="true" optional="true" len="cmdBufLabelCount"><type>VkDebugUtilsLabelEXT</type>* <name>pCmdBufLabels</name></member> + <member><type>uint32_t</type> <name>objectCount</name></member> + <member noautovalidity="true" len="objectCount"><type>VkDebugUtilsObjectNameInfoEXT</type>* <name>pObjects</name></member> + </type> + <type category="struct" name="VkImportMemoryHostPointerInfoEXT" structextends="VkMemoryAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member> + <member optional="false"><type>void</type>* <name>pHostPointer</name></member> + </type> + <type category="struct" name="VkMemoryHostPointerPropertiesEXT"> + <member values="VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>memoryTypeBits</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceExternalMemoryHostPropertiesEXT" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceSize</type> <name>minImportedHostPointerAlignment</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceConservativeRasterizationPropertiesEXT" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member> + <member><type>float</type> <name>primitiveOverestimationSize</name><comment>The size in pixels the primitive is enlarged at each edge during conservative rasterization</comment></member> + <member><type>float</type> <name>maxExtraPrimitiveOverestimationSize</name><comment>The maximum additional overestimation the client can specify in the pipeline state</comment></member> + <member><type>float</type> <name>extraPrimitiveOverestimationSizeGranularity</name><comment>The granularity of extra overestimation sizes the implementations supports between 0 and maxExtraOverestimationSize</comment></member> + <member><type>VkBool32</type> <name>primitiveUnderestimation</name><comment>true if the implementation supports conservative rasterization underestimation mode</comment></member> + <member><type>VkBool32</type> <name>conservativePointAndLineRasterization</name><comment>true if conservative rasterization also applies to points and lines</comment></member> + <member><type>VkBool32</type> <name>degenerateTrianglesRasterized</name><comment>true if degenerate triangles (those with zero area after snap) are rasterized</comment></member> + <member><type>VkBool32</type> <name>degenerateLinesRasterized</name><comment>true if degenerate lines (those with zero length after snap) are rasterized</comment></member> + <member><type>VkBool32</type> <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable</comment></member> + <member><type>VkBool32</type> <name>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member> + </type> + <type category="struct" name="VkPhysicalDeviceShaderCorePropertiesAMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member> + <member><type>uint32_t</type> <name>shaderEngineCount</name><comment>number of shader engines</comment></member> + <member><type>uint32_t</type> <name>shaderArraysPerEngineCount</name><comment>number of shader arrays</comment></member> + <member><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of CUs per shader array</comment></member> + <member><type>uint32_t</type> <name>simdPerComputeUnit</name><comment>number of SIMDs per compute unit</comment></member> + <member><type>uint32_t</type> <name>wavefrontsPerSimd</name><comment>number of wavefront slots in each SIMD</comment></member> + <member><type>uint32_t</type> <name>wavefrontSize</name><comment>number of threads per wavefront</comment></member> + <member><type>uint32_t</type> <name>sgprsPerSimd</name><comment>number of physical SGPRs per SIMD</comment></member> + <member><type>uint32_t</type> <name>minSgprAllocation</name><comment>minimum number of SGPRs that can be allocated by a wave</comment></member> + <member><type>uint32_t</type> <name>maxSgprAllocation</name><comment>number of available SGPRs</comment></member> + <member><type>uint32_t</type> <name>sgprAllocationGranularity</name><comment>SGPRs are allocated in groups of this size</comment></member> + <member><type>uint32_t</type> <name>vgprsPerSimd</name><comment>number of physical VGPRs per SIMD</comment></member> + <member><type>uint32_t</type> <name>minVgprAllocation</name><comment>minimum number of VGPRs that can be allocated by a wave</comment></member> + <member><type>uint32_t</type> <name>maxVgprAllocation</name><comment>number of available VGPRs</comment></member> + <member><type>uint32_t</type> <name>vgprAllocationGranularity</name><comment>VGPRs are allocated in groups of this size</comment></member> + </type> + <type category="struct" name="VkPipelineRasterizationConservativeStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> + <member optional="true"><type>VkPipelineRasterizationConservativeStateCreateFlagsEXT</type> <name>flags</name></member> <!-- Reserved --> + <member><type>VkConservativeRasterizationModeEXT</type> <name>conservativeRasterizationMode</name></member> <!-- Conservative rasterization mode --> + <member><type>float</type> <name>extraPrimitiveOverestimationSize</name></member> <!-- Extra overestimation to add to the primitive --> + </type> + <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member> + <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member> + <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member> + <member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayNonUniformIndexing</name></member> + <member><type>VkBool32</type> <name>descriptorBindingUniformBufferUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>descriptorBindingSampledImageUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>descriptorBindingStorageImageUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>descriptorBindingStorageBufferUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>descriptorBindingUniformTexelBufferUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>descriptorBindingStorageTexelBufferUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>descriptorBindingUpdateUnusedWhilePending</name></member> + <member><type>VkBool32</type> <name>descriptorBindingPartiallyBound</name></member> + <member><type>VkBool32</type> <name>descriptorBindingVariableDescriptorCount</name></member> + <member><type>VkBool32</type> <name>runtimeDescriptorArray</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member> + <member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member> + <member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexingNative</name></member> + <member><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexingNative</name></member> + <member><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexingNative</name></member> + <member><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexingNative</name></member> + <member><type>VkBool32</type> <name>robustBufferAccessUpdateAfterBind</name></member> + <member><type>VkBool32</type> <name>quadDivergentImplicitLod</name></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSamplers</name></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindUniformBuffers</name></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageBuffers</name></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSampledImages</name></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageImages</name></member> + <member><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindInputAttachments</name></member> + <member><type>uint32_t</type> <name>maxPerStageUpdateAfterBindResources</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSamplers</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffers</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffers</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSampledImages</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageImages</name></member> + <member><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindInputAttachments</name></member> + </type> + <type category="struct" name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" structextends="VkDescriptorSetLayoutCreateInfo"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>bindingCount</name></member> + <member len="bindingCount">const <type>VkDescriptorBindingFlagsEXT</type>* <name>pBindingFlags</name></member> + </type> + <type category="struct" name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" structextends="VkDescriptorSetAllocateInfo"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>descriptorSetCount</name></member> + <member len="descriptorSetCount">const <type>uint32_t</type>* <name>pDescriptorCounts</name></member> + </type> + <type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" structextends="VkDescriptorSetLayoutSupport" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxVariableDescriptorCount</name></member> + </type> + <type category="struct" name="VkVertexInputBindingDivisorDescriptionEXT"> + <member><type>uint32_t</type> <name>binding</name></member> + <member><type>uint32_t</type> <name>divisor</name></member> + </type> + <type category="struct" name="VkPipelineVertexInputDivisorStateCreateInfoEXT" structextends="VkPipelineVertexInputStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>vertexBindingDivisorCount</name></member> + <member len="vertexBindingDivisorCount">const <type>VkVertexInputBindingDivisorDescriptionEXT</type>* <name>pVertexBindingDivisors</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>maxVertexAttribDivisor</name><comment>max value of vertex attribute divisor</comment></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> + <member>const <type>void</type>* <name>pNext</name></member> + <member>struct <type>AHardwareBuffer</type>* <name>buffer</name></member> + </type> + <type category="struct" name="VkAndroidHardwareBufferUsageANDROID" structextends="VkImageFormatProperties2" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint64_t</type> <name>androidHardwareBufferUsage</name></member> + </type> + <type category="struct" name="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceSize</type> <name>allocationSize</name></member> + <member><type>uint32_t</type> <name>memoryTypeBits</name></member> + </type> + <type category="struct" name="VkMemoryGetAndroidHardwareBufferInfoANDROID"> + <member values="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>VkDeviceMemory</type> <name>memory</name></member> + </type> + <type category="struct" name="VkAndroidHardwareBufferFormatPropertiesANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true"> + <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>VkFormat</type> <name>format</name></member> + <member><type>uint64_t</type> <name>externalFormat</name></member> + <member><type>VkFormatFeatureFlags</type> <name>formatFeatures</name></member> + <member><type>VkComponentMapping</type> <name>samplerYcbcrConversionComponents</name></member> + <member><type>VkSamplerYcbcrModelConversion</type> <name>suggestedYcbcrModel</name></member> + <member><type>VkSamplerYcbcrRange</type> <name>suggestedYcbcrRange</name></member> + <member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member> + <member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member> + </type> + <type category="struct" name="VkExternalFormatANDROID" structextends="VkImageCreateInfo,VkSamplerYcbcrConversionCreateInfo"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint64_t</type> <name>externalFormat</name></member> + </type> + </types> + + <comment>Vulkan enumerant (token) definitions</comment> + + <enums name="API Constants" comment="Vulkan hardcoded constants - not an enumerated type, part of the header boilerplate"> + <enum value="256" name="VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"/> + <enum value="16" name="VK_UUID_SIZE"/> + <enum value="8" name="VK_LUID_SIZE"/> + <enum name="VK_LUID_SIZE_KHR" alias="VK_LUID_SIZE"/> + <enum value="256" name="VK_MAX_EXTENSION_NAME_SIZE"/> + <enum value="256" name="VK_MAX_DESCRIPTION_SIZE"/> + <enum value="32" name="VK_MAX_MEMORY_TYPES"/> + <enum value="16" name="VK_MAX_MEMORY_HEAPS" comment="The maximum number of unique memory heaps, each of which supporting 1 or more memory types"/> + <enum value="1000.0f" name="VK_LOD_CLAMP_NONE"/> + <enum value="(~0U)" name="VK_REMAINING_MIP_LEVELS"/> + <enum value="(~0U)" name="VK_REMAINING_ARRAY_LAYERS"/> + <enum value="(~0ULL)" name="VK_WHOLE_SIZE"/> + <enum value="(~0U)" name="VK_ATTACHMENT_UNUSED"/> + <enum value="1" name="VK_TRUE"/> + <enum value="0" name="VK_FALSE"/> + <enum value="(~0U)" name="VK_QUEUE_FAMILY_IGNORED"/> + <enum value="(~0U-1)" name="VK_QUEUE_FAMILY_EXTERNAL"/> + <enum name="VK_QUEUE_FAMILY_EXTERNAL_KHR" alias="VK_QUEUE_FAMILY_EXTERNAL"/> + <enum value="(~0U-2)" name="VK_QUEUE_FAMILY_FOREIGN_EXT"/> + <enum value="(~0U)" name="VK_SUBPASS_EXTERNAL"/> + <enum value="32" name="VK_MAX_DEVICE_GROUP_SIZE"/> + <enum name="VK_MAX_DEVICE_GROUP_SIZE_KHR" alias="VK_MAX_DEVICE_GROUP_SIZE"/> + </enums> + + <comment> + Unlike OpenGL, most tokens in Vulkan are actual typed enumerants in + their own numeric namespaces. The "name" attribute is the C enum + type name, and is pulled in from a type tag definition above + (slightly clunky, but retains the type / enum distinction). "type" + attributes of "enum" or "bitmask" indicate that these values should + be generated inside an appropriate definition. + </comment> + + <enums name="VkImageLayout" type="enum"> + <enum value="0" name="VK_IMAGE_LAYOUT_UNDEFINED" comment="Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)"/> + <enum value="1" name="VK_IMAGE_LAYOUT_GENERAL" comment="General layout when image can be used for any kind of access"/> + <enum value="2" name="VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL" comment="Optimal layout when image is only used for color attachment read/write"/> + <enum value="3" name="VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL" comment="Optimal layout when image is only used for depth/stencil attachment read/write"/> + <enum value="4" name="VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL" comment="Optimal layout when image is used for read only depth/stencil attachment and shader access"/> + <enum value="5" name="VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL" comment="Optimal layout when image is used for read only shader access"/> + <enum value="6" name="VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL" comment="Optimal layout when image is used only as source of transfer operations"/> + <enum value="7" name="VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL" comment="Optimal layout when image is used only as destination of transfer operations"/> + <enum value="8" name="VK_IMAGE_LAYOUT_PREINITIALIZED" comment="Initial layout used when the data is populated by the CPU"/> + </enums> + <enums name="VkAttachmentLoadOp" type="enum"> + <enum value="0" name="VK_ATTACHMENT_LOAD_OP_LOAD"/> + <enum value="1" name="VK_ATTACHMENT_LOAD_OP_CLEAR"/> + <enum value="2" name="VK_ATTACHMENT_LOAD_OP_DONT_CARE"/> + </enums> + <enums name="VkAttachmentStoreOp" type="enum"> + <enum value="0" name="VK_ATTACHMENT_STORE_OP_STORE"/> + <enum value="1" name="VK_ATTACHMENT_STORE_OP_DONT_CARE"/> + </enums> + <enums name="VkImageType" type="enum"> + <enum value="0" name="VK_IMAGE_TYPE_1D"/> + <enum value="1" name="VK_IMAGE_TYPE_2D"/> + <enum value="2" name="VK_IMAGE_TYPE_3D"/> + </enums> + <enums name="VkImageTiling" type="enum"> + <enum value="0" name="VK_IMAGE_TILING_OPTIMAL"/> + <enum value="1" name="VK_IMAGE_TILING_LINEAR"/> + </enums> + <enums name="VkImageViewType" type="enum"> + <enum value="0" name="VK_IMAGE_VIEW_TYPE_1D"/> + <enum value="1" name="VK_IMAGE_VIEW_TYPE_2D"/> + <enum value="2" name="VK_IMAGE_VIEW_TYPE_3D"/> + <enum value="3" name="VK_IMAGE_VIEW_TYPE_CUBE"/> + <enum value="4" name="VK_IMAGE_VIEW_TYPE_1D_ARRAY"/> + <enum value="5" name="VK_IMAGE_VIEW_TYPE_2D_ARRAY"/> + <enum value="6" name="VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"/> + </enums> + <enums name="VkCommandBufferLevel" type="enum"> + <enum value="0" name="VK_COMMAND_BUFFER_LEVEL_PRIMARY"/> + <enum value="1" name="VK_COMMAND_BUFFER_LEVEL_SECONDARY"/> + </enums> + <enums name="VkComponentSwizzle" type="enum"> + <enum value="0" name="VK_COMPONENT_SWIZZLE_IDENTITY"/> + <enum value="1" name="VK_COMPONENT_SWIZZLE_ZERO"/> + <enum value="2" name="VK_COMPONENT_SWIZZLE_ONE"/> + <enum value="3" name="VK_COMPONENT_SWIZZLE_R"/> + <enum value="4" name="VK_COMPONENT_SWIZZLE_G"/> + <enum value="5" name="VK_COMPONENT_SWIZZLE_B"/> + <enum value="6" name="VK_COMPONENT_SWIZZLE_A"/> + </enums> + <enums name="VkDescriptorType" type="enum"> + <enum value="0" name="VK_DESCRIPTOR_TYPE_SAMPLER"/> + <enum value="1" name="VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"/> + <enum value="2" name="VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"/> + <enum value="3" name="VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"/> + <enum value="4" name="VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"/> + <enum value="5" name="VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"/> + <enum value="6" name="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"/> + <enum value="7" name="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"/> + <enum value="8" name="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"/> + <enum value="9" name="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"/> + <enum value="10" name="VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"/> + </enums> + <enums name="VkQueryType" type="enum"> + <enum value="0" name="VK_QUERY_TYPE_OCCLUSION"/> + <enum value="1" name="VK_QUERY_TYPE_PIPELINE_STATISTICS" comment="Optional"/> + <enum value="2" name="VK_QUERY_TYPE_TIMESTAMP"/> + </enums> + <enums name="VkBorderColor" type="enum"> + <enum value="0" name="VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"/> + <enum value="1" name="VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"/> + <enum value="2" name="VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"/> + <enum value="3" name="VK_BORDER_COLOR_INT_OPAQUE_BLACK"/> + <enum value="4" name="VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"/> + <enum value="5" name="VK_BORDER_COLOR_INT_OPAQUE_WHITE"/> + </enums> + <enums name="VkPipelineBindPoint" type="enum"> + <enum value="0" name="VK_PIPELINE_BIND_POINT_GRAPHICS"/> + <enum value="1" name="VK_PIPELINE_BIND_POINT_COMPUTE"/> + </enums> + <enums name="VkPipelineCacheHeaderVersion" type="enum"> + <enum value="1" name="VK_PIPELINE_CACHE_HEADER_VERSION_ONE"/> + </enums> + <enums name="VkPrimitiveTopology" type="enum"> + <enum value="0" name="VK_PRIMITIVE_TOPOLOGY_POINT_LIST"/> + <enum value="1" name="VK_PRIMITIVE_TOPOLOGY_LINE_LIST"/> + <enum value="2" name="VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"/> + <enum value="3" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"/> + <enum value="4" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"/> + <enum value="5" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"/> + <enum value="6" name="VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"/> + <enum value="7" name="VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"/> + <enum value="8" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"/> + <enum value="9" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"/> + <enum value="10" name="VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"/> + </enums> + <enums name="VkSharingMode" type="enum"> + <enum value="0" name="VK_SHARING_MODE_EXCLUSIVE"/> + <enum value="1" name="VK_SHARING_MODE_CONCURRENT"/> + </enums> + <enums name="VkIndexType" type="enum"> + <enum value="0" name="VK_INDEX_TYPE_UINT16"/> + <enum value="1" name="VK_INDEX_TYPE_UINT32"/> + </enums> + <enums name="VkFilter" type="enum"> + <enum value="0" name="VK_FILTER_NEAREST"/> + <enum value="1" name="VK_FILTER_LINEAR"/> + </enums> + <enums name="VkSamplerMipmapMode" type="enum"> + <enum value="0" name="VK_SAMPLER_MIPMAP_MODE_NEAREST" comment="Choose nearest mip level"/> + <enum value="1" name="VK_SAMPLER_MIPMAP_MODE_LINEAR" comment="Linear filter between mip levels"/> + </enums> + <enums name="VkSamplerAddressMode" type="enum"> + <enum value="0" name="VK_SAMPLER_ADDRESS_MODE_REPEAT"/> + <enum value="1" name="VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"/> + <enum value="2" name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"/> + <enum value="3" name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"/> + <comment> + value="4" reserved for VK_KHR_sampler_mirror_clamp_to_edge + enum VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; do not + alias! + </comment> + </enums> + <enums name="VkCompareOp" type="enum"> + <enum value="0" name="VK_COMPARE_OP_NEVER"/> + <enum value="1" name="VK_COMPARE_OP_LESS"/> + <enum value="2" name="VK_COMPARE_OP_EQUAL"/> + <enum value="3" name="VK_COMPARE_OP_LESS_OR_EQUAL"/> + <enum value="4" name="VK_COMPARE_OP_GREATER"/> + <enum value="5" name="VK_COMPARE_OP_NOT_EQUAL"/> + <enum value="6" name="VK_COMPARE_OP_GREATER_OR_EQUAL"/> + <enum value="7" name="VK_COMPARE_OP_ALWAYS"/> + </enums> + <enums name="VkPolygonMode" type="enum"> + <enum value="0" name="VK_POLYGON_MODE_FILL"/> + <enum value="1" name="VK_POLYGON_MODE_LINE"/> + <enum value="2" name="VK_POLYGON_MODE_POINT"/> + </enums> + <enums name="VkCullModeFlagBits" type="bitmask"> + <enum value="0" name="VK_CULL_MODE_NONE"/> + <enum bitpos="0" name="VK_CULL_MODE_FRONT_BIT"/> + <enum bitpos="1" name="VK_CULL_MODE_BACK_BIT"/> + <enum value="0x00000003" name="VK_CULL_MODE_FRONT_AND_BACK"/> + </enums> + <enums name="VkFrontFace" type="enum"> + <enum value="0" name="VK_FRONT_FACE_COUNTER_CLOCKWISE"/> + <enum value="1" name="VK_FRONT_FACE_CLOCKWISE"/> + </enums> + <enums name="VkBlendFactor" type="enum"> + <enum value="0" name="VK_BLEND_FACTOR_ZERO"/> + <enum value="1" name="VK_BLEND_FACTOR_ONE"/> + <enum value="2" name="VK_BLEND_FACTOR_SRC_COLOR"/> + <enum value="3" name="VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"/> + <enum value="4" name="VK_BLEND_FACTOR_DST_COLOR"/> + <enum value="5" name="VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"/> + <enum value="6" name="VK_BLEND_FACTOR_SRC_ALPHA"/> + <enum value="7" name="VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"/> + <enum value="8" name="VK_BLEND_FACTOR_DST_ALPHA"/> + <enum value="9" name="VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"/> + <enum value="10" name="VK_BLEND_FACTOR_CONSTANT_COLOR"/> + <enum value="11" name="VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"/> + <enum value="12" name="VK_BLEND_FACTOR_CONSTANT_ALPHA"/> + <enum value="13" name="VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"/> + <enum value="14" name="VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"/> + <enum value="15" name="VK_BLEND_FACTOR_SRC1_COLOR"/> + <enum value="16" name="VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"/> + <enum value="17" name="VK_BLEND_FACTOR_SRC1_ALPHA"/> + <enum value="18" name="VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"/> + </enums> + <enums name="VkBlendOp" type="enum"> + <enum value="0" name="VK_BLEND_OP_ADD"/> + <enum value="1" name="VK_BLEND_OP_SUBTRACT"/> + <enum value="2" name="VK_BLEND_OP_REVERSE_SUBTRACT"/> + <enum value="3" name="VK_BLEND_OP_MIN"/> + <enum value="4" name="VK_BLEND_OP_MAX"/> + </enums> + <enums name="VkStencilOp" type="enum"> + <enum value="0" name="VK_STENCIL_OP_KEEP"/> + <enum value="1" name="VK_STENCIL_OP_ZERO"/> + <enum value="2" name="VK_STENCIL_OP_REPLACE"/> + <enum value="3" name="VK_STENCIL_OP_INCREMENT_AND_CLAMP"/> + <enum value="4" name="VK_STENCIL_OP_DECREMENT_AND_CLAMP"/> + <enum value="5" name="VK_STENCIL_OP_INVERT"/> + <enum value="6" name="VK_STENCIL_OP_INCREMENT_AND_WRAP"/> + <enum value="7" name="VK_STENCIL_OP_DECREMENT_AND_WRAP"/> + </enums> + <enums name="VkLogicOp" type="enum"> + <enum value="0" name="VK_LOGIC_OP_CLEAR"/> + <enum value="1" name="VK_LOGIC_OP_AND"/> + <enum value="2" name="VK_LOGIC_OP_AND_REVERSE"/> + <enum value="3" name="VK_LOGIC_OP_COPY"/> + <enum value="4" name="VK_LOGIC_OP_AND_INVERTED"/> + <enum value="5" name="VK_LOGIC_OP_NO_OP"/> + <enum value="6" name="VK_LOGIC_OP_XOR"/> + <enum value="7" name="VK_LOGIC_OP_OR"/> + <enum value="8" name="VK_LOGIC_OP_NOR"/> + <enum value="9" name="VK_LOGIC_OP_EQUIVALENT"/> + <enum value="10" name="VK_LOGIC_OP_INVERT"/> + <enum value="11" name="VK_LOGIC_OP_OR_REVERSE"/> + <enum value="12" name="VK_LOGIC_OP_COPY_INVERTED"/> + <enum value="13" name="VK_LOGIC_OP_OR_INVERTED"/> + <enum value="14" name="VK_LOGIC_OP_NAND"/> + <enum value="15" name="VK_LOGIC_OP_SET"/> + </enums> + <enums name="VkInternalAllocationType" type="enum"> + <enum value="0" name="VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"/> + </enums> + <enums name="VkSystemAllocationScope" type="enum"> + <enum value="0" name="VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"/> + <enum value="1" name="VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"/> + <enum value="2" name="VK_SYSTEM_ALLOCATION_SCOPE_CACHE"/> + <enum value="3" name="VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"/> + <enum value="4" name="VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"/> + </enums> + <enums name="VkPhysicalDeviceType" type="enum"> + <enum value="0" name="VK_PHYSICAL_DEVICE_TYPE_OTHER"/> + <enum value="1" name="VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"/> + <enum value="2" name="VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"/> + <enum value="3" name="VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"/> + <enum value="4" name="VK_PHYSICAL_DEVICE_TYPE_CPU"/> + </enums> + <enums name="VkVertexInputRate" type="enum"> + <enum value="0" name="VK_VERTEX_INPUT_RATE_VERTEX"/> + <enum value="1" name="VK_VERTEX_INPUT_RATE_INSTANCE"/> + </enums> + <enums name="VkFormat" type="enum" comment="Vulkan format definitions"> + <enum value="0" name="VK_FORMAT_UNDEFINED"/> + <enum value="1" name="VK_FORMAT_R4G4_UNORM_PACK8"/> + <enum value="2" name="VK_FORMAT_R4G4B4A4_UNORM_PACK16"/> + <enum value="3" name="VK_FORMAT_B4G4R4A4_UNORM_PACK16"/> + <enum value="4" name="VK_FORMAT_R5G6B5_UNORM_PACK16"/> + <enum value="5" name="VK_FORMAT_B5G6R5_UNORM_PACK16"/> + <enum value="6" name="VK_FORMAT_R5G5B5A1_UNORM_PACK16"/> + <enum value="7" name="VK_FORMAT_B5G5R5A1_UNORM_PACK16"/> + <enum value="8" name="VK_FORMAT_A1R5G5B5_UNORM_PACK16"/> + <enum value="9" name="VK_FORMAT_R8_UNORM"/> + <enum value="10" name="VK_FORMAT_R8_SNORM"/> + <enum value="11" name="VK_FORMAT_R8_USCALED"/> + <enum value="12" name="VK_FORMAT_R8_SSCALED"/> + <enum value="13" name="VK_FORMAT_R8_UINT"/> + <enum value="14" name="VK_FORMAT_R8_SINT"/> + <enum value="15" name="VK_FORMAT_R8_SRGB"/> + <enum value="16" name="VK_FORMAT_R8G8_UNORM"/> + <enum value="17" name="VK_FORMAT_R8G8_SNORM"/> + <enum value="18" name="VK_FORMAT_R8G8_USCALED"/> + <enum value="19" name="VK_FORMAT_R8G8_SSCALED"/> + <enum value="20" name="VK_FORMAT_R8G8_UINT"/> + <enum value="21" name="VK_FORMAT_R8G8_SINT"/> + <enum value="22" name="VK_FORMAT_R8G8_SRGB"/> + <enum value="23" name="VK_FORMAT_R8G8B8_UNORM"/> + <enum value="24" name="VK_FORMAT_R8G8B8_SNORM"/> + <enum value="25" name="VK_FORMAT_R8G8B8_USCALED"/> + <enum value="26" name="VK_FORMAT_R8G8B8_SSCALED"/> + <enum value="27" name="VK_FORMAT_R8G8B8_UINT"/> + <enum value="28" name="VK_FORMAT_R8G8B8_SINT"/> + <enum value="29" name="VK_FORMAT_R8G8B8_SRGB"/> + <enum value="30" name="VK_FORMAT_B8G8R8_UNORM"/> + <enum value="31" name="VK_FORMAT_B8G8R8_SNORM"/> + <enum value="32" name="VK_FORMAT_B8G8R8_USCALED"/> + <enum value="33" name="VK_FORMAT_B8G8R8_SSCALED"/> + <enum value="34" name="VK_FORMAT_B8G8R8_UINT"/> + <enum value="35" name="VK_FORMAT_B8G8R8_SINT"/> + <enum value="36" name="VK_FORMAT_B8G8R8_SRGB"/> + <enum value="37" name="VK_FORMAT_R8G8B8A8_UNORM"/> + <enum value="38" name="VK_FORMAT_R8G8B8A8_SNORM"/> + <enum value="39" name="VK_FORMAT_R8G8B8A8_USCALED"/> + <enum value="40" name="VK_FORMAT_R8G8B8A8_SSCALED"/> + <enum value="41" name="VK_FORMAT_R8G8B8A8_UINT"/> + <enum value="42" name="VK_FORMAT_R8G8B8A8_SINT"/> + <enum value="43" name="VK_FORMAT_R8G8B8A8_SRGB"/> + <enum value="44" name="VK_FORMAT_B8G8R8A8_UNORM"/> + <enum value="45" name="VK_FORMAT_B8G8R8A8_SNORM"/> + <enum value="46" name="VK_FORMAT_B8G8R8A8_USCALED"/> + <enum value="47" name="VK_FORMAT_B8G8R8A8_SSCALED"/> + <enum value="48" name="VK_FORMAT_B8G8R8A8_UINT"/> + <enum value="49" name="VK_FORMAT_B8G8R8A8_SINT"/> + <enum value="50" name="VK_FORMAT_B8G8R8A8_SRGB"/> + <enum value="51" name="VK_FORMAT_A8B8G8R8_UNORM_PACK32"/> + <enum value="52" name="VK_FORMAT_A8B8G8R8_SNORM_PACK32"/> + <enum value="53" name="VK_FORMAT_A8B8G8R8_USCALED_PACK32"/> + <enum value="54" name="VK_FORMAT_A8B8G8R8_SSCALED_PACK32"/> + <enum value="55" name="VK_FORMAT_A8B8G8R8_UINT_PACK32"/> + <enum value="56" name="VK_FORMAT_A8B8G8R8_SINT_PACK32"/> + <enum value="57" name="VK_FORMAT_A8B8G8R8_SRGB_PACK32"/> + <enum value="58" name="VK_FORMAT_A2R10G10B10_UNORM_PACK32"/> + <enum value="59" name="VK_FORMAT_A2R10G10B10_SNORM_PACK32"/> + <enum value="60" name="VK_FORMAT_A2R10G10B10_USCALED_PACK32"/> + <enum value="61" name="VK_FORMAT_A2R10G10B10_SSCALED_PACK32"/> + <enum value="62" name="VK_FORMAT_A2R10G10B10_UINT_PACK32"/> + <enum value="63" name="VK_FORMAT_A2R10G10B10_SINT_PACK32"/> + <enum value="64" name="VK_FORMAT_A2B10G10R10_UNORM_PACK32"/> + <enum value="65" name="VK_FORMAT_A2B10G10R10_SNORM_PACK32"/> + <enum value="66" name="VK_FORMAT_A2B10G10R10_USCALED_PACK32"/> + <enum value="67" name="VK_FORMAT_A2B10G10R10_SSCALED_PACK32"/> + <enum value="68" name="VK_FORMAT_A2B10G10R10_UINT_PACK32"/> + <enum value="69" name="VK_FORMAT_A2B10G10R10_SINT_PACK32"/> + <enum value="70" name="VK_FORMAT_R16_UNORM"/> + <enum value="71" name="VK_FORMAT_R16_SNORM"/> + <enum value="72" name="VK_FORMAT_R16_USCALED"/> + <enum value="73" name="VK_FORMAT_R16_SSCALED"/> + <enum value="74" name="VK_FORMAT_R16_UINT"/> + <enum value="75" name="VK_FORMAT_R16_SINT"/> + <enum value="76" name="VK_FORMAT_R16_SFLOAT"/> + <enum value="77" name="VK_FORMAT_R16G16_UNORM"/> + <enum value="78" name="VK_FORMAT_R16G16_SNORM"/> + <enum value="79" name="VK_FORMAT_R16G16_USCALED"/> + <enum value="80" name="VK_FORMAT_R16G16_SSCALED"/> + <enum value="81" name="VK_FORMAT_R16G16_UINT"/> + <enum value="82" name="VK_FORMAT_R16G16_SINT"/> + <enum value="83" name="VK_FORMAT_R16G16_SFLOAT"/> + <enum value="84" name="VK_FORMAT_R16G16B16_UNORM"/> + <enum value="85" name="VK_FORMAT_R16G16B16_SNORM"/> + <enum value="86" name="VK_FORMAT_R16G16B16_USCALED"/> + <enum value="87" name="VK_FORMAT_R16G16B16_SSCALED"/> + <enum value="88" name="VK_FORMAT_R16G16B16_UINT"/> + <enum value="89" name="VK_FORMAT_R16G16B16_SINT"/> + <enum value="90" name="VK_FORMAT_R16G16B16_SFLOAT"/> + <enum value="91" name="VK_FORMAT_R16G16B16A16_UNORM"/> + <enum value="92" name="VK_FORMAT_R16G16B16A16_SNORM"/> + <enum value="93" name="VK_FORMAT_R16G16B16A16_USCALED"/> + <enum value="94" name="VK_FORMAT_R16G16B16A16_SSCALED"/> + <enum value="95" name="VK_FORMAT_R16G16B16A16_UINT"/> + <enum value="96" name="VK_FORMAT_R16G16B16A16_SINT"/> + <enum value="97" name="VK_FORMAT_R16G16B16A16_SFLOAT"/> + <enum value="98" name="VK_FORMAT_R32_UINT"/> + <enum value="99" name="VK_FORMAT_R32_SINT"/> + <enum value="100" name="VK_FORMAT_R32_SFLOAT"/> + <enum value="101" name="VK_FORMAT_R32G32_UINT"/> + <enum value="102" name="VK_FORMAT_R32G32_SINT"/> + <enum value="103" name="VK_FORMAT_R32G32_SFLOAT"/> + <enum value="104" name="VK_FORMAT_R32G32B32_UINT"/> + <enum value="105" name="VK_FORMAT_R32G32B32_SINT"/> + <enum value="106" name="VK_FORMAT_R32G32B32_SFLOAT"/> + <enum value="107" name="VK_FORMAT_R32G32B32A32_UINT"/> + <enum value="108" name="VK_FORMAT_R32G32B32A32_SINT"/> + <enum value="109" name="VK_FORMAT_R32G32B32A32_SFLOAT"/> + <enum value="110" name="VK_FORMAT_R64_UINT"/> + <enum value="111" name="VK_FORMAT_R64_SINT"/> + <enum value="112" name="VK_FORMAT_R64_SFLOAT"/> + <enum value="113" name="VK_FORMAT_R64G64_UINT"/> + <enum value="114" name="VK_FORMAT_R64G64_SINT"/> + <enum value="115" name="VK_FORMAT_R64G64_SFLOAT"/> + <enum value="116" name="VK_FORMAT_R64G64B64_UINT"/> + <enum value="117" name="VK_FORMAT_R64G64B64_SINT"/> + <enum value="118" name="VK_FORMAT_R64G64B64_SFLOAT"/> + <enum value="119" name="VK_FORMAT_R64G64B64A64_UINT"/> + <enum value="120" name="VK_FORMAT_R64G64B64A64_SINT"/> + <enum value="121" name="VK_FORMAT_R64G64B64A64_SFLOAT"/> + <enum value="122" name="VK_FORMAT_B10G11R11_UFLOAT_PACK32"/> + <enum value="123" name="VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"/> + <enum value="124" name="VK_FORMAT_D16_UNORM"/> + <enum value="125" name="VK_FORMAT_X8_D24_UNORM_PACK32"/> + <enum value="126" name="VK_FORMAT_D32_SFLOAT"/> + <enum value="127" name="VK_FORMAT_S8_UINT"/> + <enum value="128" name="VK_FORMAT_D16_UNORM_S8_UINT"/> + <enum value="129" name="VK_FORMAT_D24_UNORM_S8_UINT"/> + <enum value="130" name="VK_FORMAT_D32_SFLOAT_S8_UINT"/> + <enum value="131" name="VK_FORMAT_BC1_RGB_UNORM_BLOCK"/> + <enum value="132" name="VK_FORMAT_BC1_RGB_SRGB_BLOCK"/> + <enum value="133" name="VK_FORMAT_BC1_RGBA_UNORM_BLOCK"/> + <enum value="134" name="VK_FORMAT_BC1_RGBA_SRGB_BLOCK"/> + <enum value="135" name="VK_FORMAT_BC2_UNORM_BLOCK"/> + <enum value="136" name="VK_FORMAT_BC2_SRGB_BLOCK"/> + <enum value="137" name="VK_FORMAT_BC3_UNORM_BLOCK"/> + <enum value="138" name="VK_FORMAT_BC3_SRGB_BLOCK"/> + <enum value="139" name="VK_FORMAT_BC4_UNORM_BLOCK"/> + <enum value="140" name="VK_FORMAT_BC4_SNORM_BLOCK"/> + <enum value="141" name="VK_FORMAT_BC5_UNORM_BLOCK"/> + <enum value="142" name="VK_FORMAT_BC5_SNORM_BLOCK"/> + <enum value="143" name="VK_FORMAT_BC6H_UFLOAT_BLOCK"/> + <enum value="144" name="VK_FORMAT_BC6H_SFLOAT_BLOCK"/> + <enum value="145" name="VK_FORMAT_BC7_UNORM_BLOCK"/> + <enum value="146" name="VK_FORMAT_BC7_SRGB_BLOCK"/> + <enum value="147" name="VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"/> + <enum value="148" name="VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"/> + <enum value="149" name="VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"/> + <enum value="150" name="VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"/> + <enum value="151" name="VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"/> + <enum value="152" name="VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"/> + <enum value="153" name="VK_FORMAT_EAC_R11_UNORM_BLOCK"/> + <enum value="154" name="VK_FORMAT_EAC_R11_SNORM_BLOCK"/> + <enum value="155" name="VK_FORMAT_EAC_R11G11_UNORM_BLOCK"/> + <enum value="156" name="VK_FORMAT_EAC_R11G11_SNORM_BLOCK"/> + <enum value="157" name="VK_FORMAT_ASTC_4x4_UNORM_BLOCK"/> + <enum value="158" name="VK_FORMAT_ASTC_4x4_SRGB_BLOCK"/> + <enum value="159" name="VK_FORMAT_ASTC_5x4_UNORM_BLOCK"/> + <enum value="160" name="VK_FORMAT_ASTC_5x4_SRGB_BLOCK"/> + <enum value="161" name="VK_FORMAT_ASTC_5x5_UNORM_BLOCK"/> + <enum value="162" name="VK_FORMAT_ASTC_5x5_SRGB_BLOCK"/> + <enum value="163" name="VK_FORMAT_ASTC_6x5_UNORM_BLOCK"/> + <enum value="164" name="VK_FORMAT_ASTC_6x5_SRGB_BLOCK"/> + <enum value="165" name="VK_FORMAT_ASTC_6x6_UNORM_BLOCK"/> + <enum value="166" name="VK_FORMAT_ASTC_6x6_SRGB_BLOCK"/> + <enum value="167" name="VK_FORMAT_ASTC_8x5_UNORM_BLOCK"/> + <enum value="168" name="VK_FORMAT_ASTC_8x5_SRGB_BLOCK"/> + <enum value="169" name="VK_FORMAT_ASTC_8x6_UNORM_BLOCK"/> + <enum value="170" name="VK_FORMAT_ASTC_8x6_SRGB_BLOCK"/> + <enum value="171" name="VK_FORMAT_ASTC_8x8_UNORM_BLOCK"/> + <enum value="172" name="VK_FORMAT_ASTC_8x8_SRGB_BLOCK"/> + <enum value="173" name="VK_FORMAT_ASTC_10x5_UNORM_BLOCK"/> + <enum value="174" name="VK_FORMAT_ASTC_10x5_SRGB_BLOCK"/> + <enum value="175" name="VK_FORMAT_ASTC_10x6_UNORM_BLOCK"/> + <enum value="176" name="VK_FORMAT_ASTC_10x6_SRGB_BLOCK"/> + <enum value="177" name="VK_FORMAT_ASTC_10x8_UNORM_BLOCK"/> + <enum value="178" name="VK_FORMAT_ASTC_10x8_SRGB_BLOCK"/> + <enum value="179" name="VK_FORMAT_ASTC_10x10_UNORM_BLOCK"/> + <enum value="180" name="VK_FORMAT_ASTC_10x10_SRGB_BLOCK"/> + <enum value="181" name="VK_FORMAT_ASTC_12x10_UNORM_BLOCK"/> + <enum value="182" name="VK_FORMAT_ASTC_12x10_SRGB_BLOCK"/> + <enum value="183" name="VK_FORMAT_ASTC_12x12_UNORM_BLOCK"/> + <enum value="184" name="VK_FORMAT_ASTC_12x12_SRGB_BLOCK"/> + </enums> + <enums name="VkStructureType" type="enum" comment="Structure type enumerant"> + <enum value="0" name="VK_STRUCTURE_TYPE_APPLICATION_INFO"/> + <enum value="1" name="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"/> + <enum value="2" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"/> + <enum value="3" name="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"/> + <enum value="4" name="VK_STRUCTURE_TYPE_SUBMIT_INFO"/> + <enum value="5" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"/> + <enum value="6" name="VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"/> + <enum value="7" name="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"/> + <enum value="8" name="VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"/> + <enum value="9" name="VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"/> + <enum value="10" name="VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"/> + <enum value="11" name="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"/> + <enum value="12" name="VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"/> + <enum value="13" name="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"/> + <enum value="14" name="VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"/> + <enum value="15" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"/> + <enum value="16" name="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"/> + <enum value="17" name="VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"/> + <enum value="18" name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"/> + <enum value="19" name="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"/> + <enum value="20" name="VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"/> + <enum value="21" name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"/> + <enum value="22" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"/> + <enum value="23" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"/> + <enum value="24" name="VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"/> + <enum value="25" name="VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"/> + <enum value="26" name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"/> + <enum value="27" name="VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"/> + <enum value="28" name="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"/> + <enum value="29" name="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"/> + <enum value="30" name="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"/> + <enum value="31" name="VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"/> + <enum value="32" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"/> + <enum value="33" name="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"/> + <enum value="34" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"/> + <enum value="35" name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"/> + <enum value="36" name="VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"/> + <enum value="37" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"/> + <enum value="38" name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"/> + <enum value="39" name="VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"/> + <enum value="40" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"/> + <enum value="41" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"/> + <enum value="42" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"/> + <enum value="43" name="VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"/> + <enum value="44" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"/> + <enum value="45" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"/> + <enum value="46" name="VK_STRUCTURE_TYPE_MEMORY_BARRIER"/> + <enum value="47" name="VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO" comment="Reserved for internal use by the loader, layers, and ICDs"/> + <enum value="48" name="VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO" comment="Reserved for internal use by the loader, layers, and ICDs"/> + </enums> + <enums name="VkSubpassContents" type="enum"> + <enum value="0" name="VK_SUBPASS_CONTENTS_INLINE"/> + <enum value="1" name="VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"/> + </enums> + <enums name="VkResult" type="enum" comment="API result codes"> + <comment>Return codes (positive values)</comment> + <enum value="0" name="VK_SUCCESS" comment="Command completed successfully"/> + <enum value="1" name="VK_NOT_READY" comment="A fence or query has not yet completed"/> + <enum value="2" name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/> + <enum value="3" name="VK_EVENT_SET" comment="An event is signaled"/> + <enum value="4" name="VK_EVENT_RESET" comment="An event is unsignaled"/> + <enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the result"/> + <comment>Error codes (negative values)</comment> + <enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/> + <enum value="-2" name="VK_ERROR_OUT_OF_DEVICE_MEMORY" comment="A device memory allocation has failed"/> + <enum value="-3" name="VK_ERROR_INITIALIZATION_FAILED" comment="Initialization of a object has failed"/> + <enum value="-4" name="VK_ERROR_DEVICE_LOST" comment="The logical device has been lost. See <<devsandqueues-lost-device>>"/> + <enum value="-5" name="VK_ERROR_MEMORY_MAP_FAILED" comment="Mapping of a memory object has failed"/> + <enum value="-6" name="VK_ERROR_LAYER_NOT_PRESENT" comment="Layer specified does not exist"/> + <enum value="-7" name="VK_ERROR_EXTENSION_NOT_PRESENT" comment="Extension specified does not exist"/> + <enum value="-8" name="VK_ERROR_FEATURE_NOT_PRESENT" comment="Requested feature is not available on this device"/> + <enum value="-9" name="VK_ERROR_INCOMPATIBLE_DRIVER" comment="Unable to find a Vulkan driver"/> + <enum value="-10" name="VK_ERROR_TOO_MANY_OBJECTS" comment="Too many objects of the type have already been created"/> + <enum value="-11" name="VK_ERROR_FORMAT_NOT_SUPPORTED" comment="Requested format is not supported on this device"/> + <enum value="-12" name="VK_ERROR_FRAGMENTED_POOL" comment="A requested pool allocation has failed due to fragmentation of the pool's memory"/> + <unused start="-12"/> + </enums> + <enums name="VkDynamicState" type="enum"> + <enum value="0" name="VK_DYNAMIC_STATE_VIEWPORT"/> + <enum value="1" name="VK_DYNAMIC_STATE_SCISSOR"/> + <enum value="2" name="VK_DYNAMIC_STATE_LINE_WIDTH"/> + <enum value="3" name="VK_DYNAMIC_STATE_DEPTH_BIAS"/> + <enum value="4" name="VK_DYNAMIC_STATE_BLEND_CONSTANTS"/> + <enum value="5" name="VK_DYNAMIC_STATE_DEPTH_BOUNDS"/> + <enum value="6" name="VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"/> + <enum value="7" name="VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"/> + <enum value="8" name="VK_DYNAMIC_STATE_STENCIL_REFERENCE"/> + </enums> + <enums name="VkDescriptorUpdateTemplateType" type="enum"> + <enum value="0" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET" comment="Create descriptor update template for descriptor set updates"/> + </enums> + <enums name="VkObjectType" type="enum" comment="Enums to track objects of various types"> + <enum value="0" name="VK_OBJECT_TYPE_UNKNOWN"/> + <enum value="1" name="VK_OBJECT_TYPE_INSTANCE" comment="VkInstance"/> + <enum value="2" name="VK_OBJECT_TYPE_PHYSICAL_DEVICE" comment="VkPhysicalDevice"/> + <enum value="3" name="VK_OBJECT_TYPE_DEVICE" comment="VkDevice"/> + <enum value="4" name="VK_OBJECT_TYPE_QUEUE" comment="VkQueue"/> + <enum value="5" name="VK_OBJECT_TYPE_SEMAPHORE" comment="VkSemaphore"/> + <enum value="6" name="VK_OBJECT_TYPE_COMMAND_BUFFER" comment="VkCommandBuffer"/> + <enum value="7" name="VK_OBJECT_TYPE_FENCE" comment="VkFence"/> + <enum value="8" name="VK_OBJECT_TYPE_DEVICE_MEMORY" comment="VkDeviceMemory"/> + <enum value="9" name="VK_OBJECT_TYPE_BUFFER" comment="VkBuffer"/> + <enum value="10" name="VK_OBJECT_TYPE_IMAGE" comment="VkImage"/> + <enum value="11" name="VK_OBJECT_TYPE_EVENT" comment="VkEvent"/> + <enum value="12" name="VK_OBJECT_TYPE_QUERY_POOL" comment="VkQueryPool"/> + <enum value="13" name="VK_OBJECT_TYPE_BUFFER_VIEW" comment="VkBufferView"/> + <enum value="14" name="VK_OBJECT_TYPE_IMAGE_VIEW" comment="VkImageView"/> + <enum value="15" name="VK_OBJECT_TYPE_SHADER_MODULE" comment="VkShaderModule"/> + <enum value="16" name="VK_OBJECT_TYPE_PIPELINE_CACHE" comment="VkPipelineCache"/> + <enum value="17" name="VK_OBJECT_TYPE_PIPELINE_LAYOUT" comment="VkPipelineLayout"/> + <enum value="18" name="VK_OBJECT_TYPE_RENDER_PASS" comment="VkRenderPass"/> + <enum value="19" name="VK_OBJECT_TYPE_PIPELINE" comment="VkPipeline"/> + <enum value="20" name="VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT" comment="VkDescriptorSetLayout"/> + <enum value="21" name="VK_OBJECT_TYPE_SAMPLER" comment="VkSampler"/> + <enum value="22" name="VK_OBJECT_TYPE_DESCRIPTOR_POOL" comment="VkDescriptorPool"/> + <enum value="23" name="VK_OBJECT_TYPE_DESCRIPTOR_SET" comment="VkDescriptorSet"/> + <enum value="24" name="VK_OBJECT_TYPE_FRAMEBUFFER" comment="VkFramebuffer"/> + <enum value="25" name="VK_OBJECT_TYPE_COMMAND_POOL" comment="VkCommandPool"/> + </enums> + + <comment>Flags</comment> + <enums name="VkQueueFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_QUEUE_GRAPHICS_BIT" comment="Queue supports graphics operations"/> + <enum bitpos="1" name="VK_QUEUE_COMPUTE_BIT" comment="Queue supports compute operations"/> + <enum bitpos="2" name="VK_QUEUE_TRANSFER_BIT" comment="Queue supports transfer operations"/> + <enum bitpos="3" name="VK_QUEUE_SPARSE_BINDING_BIT" comment="Queue supports sparse resource memory management operations"/> + </enums> + <enums name="VkDeviceQueueCreateFlagBits" type="bitmask"></enums> + <enums name="VkMemoryPropertyFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/> + <enum bitpos="1" name="VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT" comment="Memory is mappable by host"/> + <enum bitpos="2" name="VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" comment="Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"/> + <enum bitpos="3" name="VK_MEMORY_PROPERTY_HOST_CACHED_BIT" comment="Memory will be cached by the host"/> + <enum bitpos="4" name="VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT" comment="Memory may be allocated by the driver when it is required"/> + </enums> + <enums name="VkMemoryHeapFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_MEMORY_HEAP_DEVICE_LOCAL_BIT" comment="If set, heap represents device memory"/> + </enums> + <enums name="VkAccessFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_ACCESS_INDIRECT_COMMAND_READ_BIT" comment="Controls coherency of indirect command reads"/> + <enum bitpos="1" name="VK_ACCESS_INDEX_READ_BIT" comment="Controls coherency of index reads"/> + <enum bitpos="2" name="VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT" comment="Controls coherency of vertex attribute reads"/> + <enum bitpos="3" name="VK_ACCESS_UNIFORM_READ_BIT" comment="Controls coherency of uniform buffer reads"/> + <enum bitpos="4" name="VK_ACCESS_INPUT_ATTACHMENT_READ_BIT" comment="Controls coherency of input attachment reads"/> + <enum bitpos="5" name="VK_ACCESS_SHADER_READ_BIT" comment="Controls coherency of shader reads"/> + <enum bitpos="6" name="VK_ACCESS_SHADER_WRITE_BIT" comment="Controls coherency of shader writes"/> + <enum bitpos="7" name="VK_ACCESS_COLOR_ATTACHMENT_READ_BIT" comment="Controls coherency of color attachment reads"/> + <enum bitpos="8" name="VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT" comment="Controls coherency of color attachment writes"/> + <enum bitpos="9" name="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT" comment="Controls coherency of depth/stencil attachment reads"/> + <enum bitpos="10" name="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT" comment="Controls coherency of depth/stencil attachment writes"/> + <enum bitpos="11" name="VK_ACCESS_TRANSFER_READ_BIT" comment="Controls coherency of transfer reads"/> + <enum bitpos="12" name="VK_ACCESS_TRANSFER_WRITE_BIT" comment="Controls coherency of transfer writes"/> + <enum bitpos="13" name="VK_ACCESS_HOST_READ_BIT" comment="Controls coherency of host reads"/> + <enum bitpos="14" name="VK_ACCESS_HOST_WRITE_BIT" comment="Controls coherency of host writes"/> + <enum bitpos="15" name="VK_ACCESS_MEMORY_READ_BIT" comment="Controls coherency of memory reads"/> + <enum bitpos="16" name="VK_ACCESS_MEMORY_WRITE_BIT" comment="Controls coherency of memory writes"/> + </enums> + <enums name="VkBufferUsageFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/> + <enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/> + <enum bitpos="2" name="VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT" comment="Can be used as TBO"/> + <enum bitpos="3" name="VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT" comment="Can be used as IBO"/> + <enum bitpos="4" name="VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT" comment="Can be used as UBO"/> + <enum bitpos="5" name="VK_BUFFER_USAGE_STORAGE_BUFFER_BIT" comment="Can be used as SSBO"/> + <enum bitpos="6" name="VK_BUFFER_USAGE_INDEX_BUFFER_BIT" comment="Can be used as source of fixed-function index fetch (index buffer)"/> + <enum bitpos="7" name="VK_BUFFER_USAGE_VERTEX_BUFFER_BIT" comment="Can be used as source of fixed-function vertex fetch (VBO)"/> + <enum bitpos="8" name="VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT" comment="Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)"/> + </enums> + <enums name="VkBufferCreateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_BUFFER_CREATE_SPARSE_BINDING_BIT" comment="Buffer should support sparse backing"/> + <enum bitpos="1" name="VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT" comment="Buffer should support sparse backing with partial residency"/> + <enum bitpos="2" name="VK_BUFFER_CREATE_SPARSE_ALIASED_BIT" comment="Buffer should support constent data access to physical memory ranges mapped into multiple locations of sparse buffers"/> + </enums> + <enums name="VkShaderStageFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_SHADER_STAGE_VERTEX_BIT"/> + <enum bitpos="1" name="VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"/> + <enum bitpos="2" name="VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"/> + <enum bitpos="3" name="VK_SHADER_STAGE_GEOMETRY_BIT"/> + <enum bitpos="4" name="VK_SHADER_STAGE_FRAGMENT_BIT"/> + <enum bitpos="5" name="VK_SHADER_STAGE_COMPUTE_BIT"/> + <enum value="0x0000001F" name="VK_SHADER_STAGE_ALL_GRAPHICS"/> + <enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/> + </enums> + <enums name="VkImageUsageFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/> + <enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/> + <enum bitpos="2" name="VK_IMAGE_USAGE_SAMPLED_BIT" comment="Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/> + <enum bitpos="3" name="VK_IMAGE_USAGE_STORAGE_BIT" comment="Can be used as storage image (STORAGE_IMAGE descriptor type)"/> + <enum bitpos="4" name="VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT" comment="Can be used as framebuffer color attachment"/> + <enum bitpos="5" name="VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT" comment="Can be used as framebuffer depth/stencil attachment"/> + <enum bitpos="6" name="VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT" comment="Image data not needed outside of rendering"/> + <enum bitpos="7" name="VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT" comment="Can be used as framebuffer input attachment"/> + </enums> + <enums name="VkImageCreateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_IMAGE_CREATE_SPARSE_BINDING_BIT" comment="Image should support sparse backing"/> + <enum bitpos="1" name="VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT" comment="Image should support sparse backing with partial residency"/> + <enum bitpos="2" name="VK_IMAGE_CREATE_SPARSE_ALIASED_BIT" comment="Image should support constent data access to physical memory ranges mapped into multiple locations of sparse images"/> + <enum bitpos="3" name="VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT" comment="Allows image views to have different format than the base image"/> + <enum bitpos="4" name="VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT" comment="Allows creating image views with cube type from the created image"/> + </enums> + <enums name="VkPipelineCreateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"/> + <enum bitpos="1" name="VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"/> + <enum bitpos="2" name="VK_PIPELINE_CREATE_DERIVATIVE_BIT"/> + </enums> + <enums name="VkColorComponentFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_COLOR_COMPONENT_R_BIT"/> + <enum bitpos="1" name="VK_COLOR_COMPONENT_G_BIT"/> + <enum bitpos="2" name="VK_COLOR_COMPONENT_B_BIT"/> + <enum bitpos="3" name="VK_COLOR_COMPONENT_A_BIT"/> + </enums> + <enums name="VkFenceCreateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_FENCE_CREATE_SIGNALED_BIT"/> + </enums> + <enums name="VkFormatFeatureFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT" comment="Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/> + <enum bitpos="1" name="VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT" comment="Format can be used for storage images (STORAGE_IMAGE descriptor type)"/> + <enum bitpos="2" name="VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT" comment="Format supports atomic operations in case it is used for storage images"/> + <enum bitpos="3" name="VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" comment="Format can be used for uniform texel buffers (TBOs)"/> + <enum bitpos="4" name="VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT" comment="Format can be used for storage texel buffers (IBOs)"/> + <enum bitpos="5" name="VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT" comment="Format supports atomic operations in case it is used for storage texel buffers"/> + <enum bitpos="6" name="VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" comment="Format can be used for vertex buffers (VBOs)"/> + <enum bitpos="7" name="VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT" comment="Format can be used for color attachment images"/> + <enum bitpos="8" name="VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT" comment="Format supports blending in case it is used for color attachment images"/> + <enum bitpos="9" name="VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT" comment="Format can be used for depth/stencil attachment images"/> + <enum bitpos="10" name="VK_FORMAT_FEATURE_BLIT_SRC_BIT" comment="Format can be used as the source image of blits with vkCmdBlitImage"/> + <enum bitpos="11" name="VK_FORMAT_FEATURE_BLIT_DST_BIT" comment="Format can be used as the destination image of blits with vkCmdBlitImage"/> + <enum bitpos="12" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" comment="Format can be filtered with VK_FILTER_LINEAR when being sampled"/> + </enums> + <enums name="VkQueryControlFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_QUERY_CONTROL_PRECISE_BIT" comment="Require precise results to be collected by the query"/> + </enums> + <enums name="VkQueryResultFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_QUERY_RESULT_64_BIT" comment="Results of the queries are written to the destination buffer as 64-bit values"/> + <enum bitpos="1" name="VK_QUERY_RESULT_WAIT_BIT" comment="Results of the queries are waited on before proceeding with the result copy"/> + <enum bitpos="2" name="VK_QUERY_RESULT_WITH_AVAILABILITY_BIT" comment="Besides the results of the query, the availability of the results is also written"/> + <enum bitpos="3" name="VK_QUERY_RESULT_PARTIAL_BIT" comment="Copy the partial results of the query even if the final results are not available"/> + </enums> + <enums name="VkCommandBufferUsageFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"/> + <enum bitpos="1" name="VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"/> + <enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/> + </enums> + <enums name="VkQueryPipelineStatisticFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT" comment="Optional"/> + <enum bitpos="1" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT" comment="Optional"/> + <enum bitpos="2" name="VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT" comment="Optional"/> + <enum bitpos="3" name="VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT" comment="Optional"/> + <enum bitpos="4" name="VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT" comment="Optional"/> + <enum bitpos="5" name="VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT" comment="Optional"/> + <enum bitpos="6" name="VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT" comment="Optional"/> + <enum bitpos="7" name="VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT" comment="Optional"/> + <enum bitpos="8" name="VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT" comment="Optional"/> + <enum bitpos="9" name="VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT" comment="Optional"/> + <enum bitpos="10" name="VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT" comment="Optional"/> + </enums> + <enums name="VkImageAspectFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_IMAGE_ASPECT_COLOR_BIT"/> + <enum bitpos="1" name="VK_IMAGE_ASPECT_DEPTH_BIT"/> + <enum bitpos="2" name="VK_IMAGE_ASPECT_STENCIL_BIT"/> + <enum bitpos="3" name="VK_IMAGE_ASPECT_METADATA_BIT"/> + </enums> + <enums name="VkSparseImageFormatFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT" comment="Image uses a single mip tail region for all array layers"/> + <enum bitpos="1" name="VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT" comment="Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels."/> + <enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/> + </enums> + <enums name="VkSparseMemoryBindFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_SPARSE_MEMORY_BIND_METADATA_BIT" comment="Operation binds resource metadata to memory"/> + </enums> + <enums name="VkPipelineStageFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT" comment="Before subsequent commands are processed"/> + <enum bitpos="1" name="VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT" comment="Draw/DispatchIndirect command fetch"/> + <enum bitpos="2" name="VK_PIPELINE_STAGE_VERTEX_INPUT_BIT" comment="Vertex/index fetch"/> + <enum bitpos="3" name="VK_PIPELINE_STAGE_VERTEX_SHADER_BIT" comment="Vertex shading"/> + <enum bitpos="4" name="VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT" comment="Tessellation control shading"/> + <enum bitpos="5" name="VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT" comment="Tessellation evaluation shading"/> + <enum bitpos="6" name="VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT" comment="Geometry shading"/> + <enum bitpos="7" name="VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT" comment="Fragment shading"/> + <enum bitpos="8" name="VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT" comment="Early fragment (depth and stencil) tests"/> + <enum bitpos="9" name="VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT" comment="Late fragment (depth and stencil) tests"/> + <enum bitpos="10" name="VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT" comment="Color attachment writes"/> + <enum bitpos="11" name="VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" comment="Compute shading"/> + <enum bitpos="12" name="VK_PIPELINE_STAGE_TRANSFER_BIT" comment="Transfer/copy operations"/> + <enum bitpos="13" name="VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT" comment="After previous commands have completed"/> + <enum bitpos="14" name="VK_PIPELINE_STAGE_HOST_BIT" comment="Indicates host (CPU) is a source/sink of the dependency"/> + <enum bitpos="15" name="VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT" comment="All stages of the graphics pipeline"/> + <enum bitpos="16" name="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT" comment="All stages supported on the queue"/> + </enums> + <enums name="VkCommandPoolCreateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/> + <enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/> + </enums> + <enums name="VkCommandPoolResetFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/> + </enums> + <enums name="VkCommandBufferResetFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/> + </enums> + <enums name="VkSampleCountFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_SAMPLE_COUNT_1_BIT" comment="Sample count 1 supported"/> + <enum bitpos="1" name="VK_SAMPLE_COUNT_2_BIT" comment="Sample count 2 supported"/> + <enum bitpos="2" name="VK_SAMPLE_COUNT_4_BIT" comment="Sample count 4 supported"/> + <enum bitpos="3" name="VK_SAMPLE_COUNT_8_BIT" comment="Sample count 8 supported"/> + <enum bitpos="4" name="VK_SAMPLE_COUNT_16_BIT" comment="Sample count 16 supported"/> + <enum bitpos="5" name="VK_SAMPLE_COUNT_32_BIT" comment="Sample count 32 supported"/> + <enum bitpos="6" name="VK_SAMPLE_COUNT_64_BIT" comment="Sample count 64 supported"/> + </enums> + <enums name="VkAttachmentDescriptionFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT" comment="The attachment may alias physical memory of another attachment in the same render pass"/> + </enums> + <enums name="VkStencilFaceFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_STENCIL_FACE_FRONT_BIT" comment="Front face"/> + <enum bitpos="1" name="VK_STENCIL_FACE_BACK_BIT" comment="Back face"/> + <enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/> + </enums> + <enums name="VkDescriptorPoolCreateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT" comment="Descriptor sets may be freed individually"/> + </enums> + <enums name="VkDependencyFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_DEPENDENCY_BY_REGION_BIT" comment="Dependency is per pixel region "/> + </enums> + + <comment>WSI Extensions</comment> + <enums name="VkPresentModeKHR" type="enum"> + <enum value="0" name="VK_PRESENT_MODE_IMMEDIATE_KHR"/> + <enum value="1" name="VK_PRESENT_MODE_MAILBOX_KHR"/> + <enum value="2" name="VK_PRESENT_MODE_FIFO_KHR"/> + <enum value="3" name="VK_PRESENT_MODE_FIFO_RELAXED_KHR"/> + </enums> + <enums name="VkColorSpaceKHR" type="enum"> + <enum value="0" name="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"/> + </enums> + <enums name="VkDisplayPlaneAlphaFlagBitsKHR" type="bitmask"> + <enum bitpos="0" name="VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"/> + <enum bitpos="1" name="VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"/> + <enum bitpos="2" name="VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"/> + <enum bitpos="3" name="VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"/> + </enums> + <enums name="VkCompositeAlphaFlagBitsKHR" type="bitmask"> + <enum bitpos="0" name="VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"/> + <enum bitpos="1" name="VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"/> + <enum bitpos="2" name="VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"/> + <enum bitpos="3" name="VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"/> + </enums> + <enums name="VkSurfaceTransformFlagBitsKHR" type="bitmask"> + <enum bitpos="0" name="VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"/> + <enum bitpos="1" name="VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"/> + <enum bitpos="2" name="VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"/> + <enum bitpos="3" name="VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"/> + <enum bitpos="4" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"/> + <enum bitpos="5" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"/> + <enum bitpos="6" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"/> + <enum bitpos="7" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/> + <enum bitpos="8" name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/> + </enums> + <enums name="VkDebugReportFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_DEBUG_REPORT_INFORMATION_BIT_EXT"/> + <enum bitpos="1" name="VK_DEBUG_REPORT_WARNING_BIT_EXT"/> + <enum bitpos="2" name="VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"/> + <enum bitpos="3" name="VK_DEBUG_REPORT_ERROR_BIT_EXT"/> + <enum bitpos="4" name="VK_DEBUG_REPORT_DEBUG_BIT_EXT"/> + </enums> + <enums name="VkDebugReportObjectTypeEXT" type="enum"> + <enum value="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"/> + <enum value="1" name="VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"/> + <enum value="2" name="VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"/> + <enum value="3" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"/> + <enum value="4" name="VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"/> + <enum value="5" name="VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"/> + <enum value="6" name="VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"/> + <enum value="7" name="VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"/> + <enum value="8" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"/> + <enum value="9" name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"/> + <enum value="10" name="VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"/> + <enum value="11" name="VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"/> + <enum value="12" name="VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"/> + <enum value="13" name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"/> + <enum value="14" name="VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"/> + <enum value="15" name="VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"/> + <enum value="16" name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"/> + <enum value="17" name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"/> + <enum value="18" name="VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"/> + <enum value="19" name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"/> + <enum value="20" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"/> + <enum value="21" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"/> + <enum value="22" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"/> + <enum value="23" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"/> + <enum value="24" name="VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"/> + <enum value="25" name="VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"/> + <enum value="26" name="VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"/> + <enum value="27" name="VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"/> + <enum value="28" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"/> + <enum value="29" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"/> + <enum value="30" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"/> + <enum value="31" name="VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"/> + <enum value="32" name="VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"/> + <enum value="33" name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"/> + </enums> + <enums name="VkRasterizationOrderAMD" type="enum"> + <enum value="0" name="VK_RASTERIZATION_ORDER_STRICT_AMD"/> + <enum value="1" name="VK_RASTERIZATION_ORDER_RELAXED_AMD"/> + </enums> + <enums name="VkExternalMemoryHandleTypeFlagBitsNV" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"/> + <enum bitpos="1" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"/> + <enum bitpos="2" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"/> + <enum bitpos="3" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"/> + </enums> + <enums name="VkExternalMemoryFeatureFlagBitsNV" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"/> + <enum bitpos="1" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"/> + <enum bitpos="2" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"/> + </enums> + <enums name="VkValidationCheckEXT" type="enum"> + <enum value="0" name="VK_VALIDATION_CHECK_ALL_EXT"/> + <enum value="1" name="VK_VALIDATION_CHECK_SHADERS_EXT"/> + <comment>Placeholder for validation enums to be defined for VK_EXT_Validation_flags extension</comment> + </enums> + <enums name="VkSubgroupFeatureFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_SUBGROUP_FEATURE_BASIC_BIT" comment="Basic subgroup operations"/> + <enum bitpos="1" name="VK_SUBGROUP_FEATURE_VOTE_BIT" comment="Vote subgroup operations"/> + <enum bitpos="2" name="VK_SUBGROUP_FEATURE_ARITHMETIC_BIT" comment="Arithmetic subgroup operations"/> + <enum bitpos="3" name="VK_SUBGROUP_FEATURE_BALLOT_BIT" comment="Ballot subgroup operations"/> + <enum bitpos="4" name="VK_SUBGROUP_FEATURE_SHUFFLE_BIT" comment="Shuffle subgroup operations"/> + <enum bitpos="5" name="VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT" comment="Shuffle relative subgroup operations"/> + <enum bitpos="6" name="VK_SUBGROUP_FEATURE_CLUSTERED_BIT" comment="Clustered subgroup operations"/> + <enum bitpos="7" name="VK_SUBGROUP_FEATURE_QUAD_BIT" comment="Quad subgroup operations"/> + </enums> + <enums name="VkIndirectCommandsLayoutUsageFlagBitsNVX" type="bitmask"> + <enum bitpos="0" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"/> + <enum bitpos="1" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"/> + <enum bitpos="2" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"/> + <enum bitpos="3" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"/> + </enums> + <enums name="VkObjectEntryUsageFlagBitsNVX" type="bitmask"> + <enum bitpos="0" name="VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"/> + <enum bitpos="1" name="VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"/> + </enums> + <enums name="VkIndirectCommandsTokenTypeNVX" type="enum"> + <enum value="0" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"/> + <enum value="1" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"/> + <enum value="2" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"/> + <enum value="3" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"/> + <enum value="4" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"/> + <enum value="5" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"/> + <enum value="6" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"/> + <enum value="7" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"/> + </enums> + <enums name="VkObjectEntryTypeNVX" type="enum"> + <enum value="0" name="VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"/> + <enum value="1" name="VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX"/> + <enum value="2" name="VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"/> + <enum value="3" name="VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"/> + <enum value="4" name="VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"/> + </enums> + <enums name="VkDescriptorSetLayoutCreateFlagBits" type="bitmask"> + </enums> + <enums name="VkExternalMemoryHandleTypeFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"/> + <enum bitpos="1" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"/> + <enum bitpos="2" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/> + <enum bitpos="3" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"/> + <enum bitpos="4" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"/> + <enum bitpos="5" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"/> + <enum bitpos="6" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"/> + </enums> + <enums name="VkExternalMemoryFeatureFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"/> + <enum bitpos="1" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"/> + <enum bitpos="2" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"/> + </enums> + <enums name="VkExternalSemaphoreHandleTypeFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"/> + <enum bitpos="1" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/> + <enum bitpos="2" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/> + <enum bitpos="3" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/> + <enum bitpos="4" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"/> + </enums> + <enums name="VkExternalSemaphoreFeatureFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"/> + <enum bitpos="1" name="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"/> + </enums> + <enums name="VkSemaphoreImportFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"/> + </enums> + <enums name="VkExternalFenceHandleTypeFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"/> + <enum bitpos="1" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/> + <enum bitpos="2" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/> + <enum bitpos="3" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"/> + </enums> + <enums name="VkExternalFenceFeatureFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"/> + <enum bitpos="1" name="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"/> + </enums> + <enums name="VkFenceImportFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_FENCE_IMPORT_TEMPORARY_BIT"/> + </enums> + <enums name="VkSurfaceCounterFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_SURFACE_COUNTER_VBLANK_EXT"/> + </enums> + <enums name="VkDisplayPowerStateEXT" type="enum"> + <enum value="0" name="VK_DISPLAY_POWER_STATE_OFF_EXT"/> + <enum value="1" name="VK_DISPLAY_POWER_STATE_SUSPEND_EXT"/> + <enum value="2" name="VK_DISPLAY_POWER_STATE_ON_EXT"/> + </enums> + <enums name="VkDeviceEventTypeEXT" type="enum"> + <enum value="0" name="VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"/> + </enums> + <enums name="VkDisplayEventTypeEXT" type="enum"> + <enum value="0" name="VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"/> + </enums> + <enums name="VkPeerMemoryFeatureFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT" comment="Can read with vkCmdCopy commands"/> + <enum bitpos="1" name="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT" comment="Can write with vkCmdCopy commands"/> + <enum bitpos="2" name="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT" comment="Can read with any access type/command"/> + <enum bitpos="3" name="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT" comment="Can write with and access type/command"/> + </enums> + <enums name="VkMemoryAllocateFlagBits" type="bitmask"> + <enum bitpos="0" name="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT" comment="Force allocation on specific devices"/> + </enums> + <enums name="VkDeviceGroupPresentModeFlagBitsKHR" type="bitmask"> + <enum bitpos="0" name="VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR" comment="Present from local memory"/> + <enum bitpos="1" name="VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR" comment="Present from remote memory"/> + <enum bitpos="2" name="VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR" comment="Present sum of local and/or remote memory"/> + <enum bitpos="3" name="VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR" comment="Each physical device presents from local memory"/> + </enums> + <enums name="VkSwapchainCreateFlagBitsKHR" type="bitmask"> + </enums> + <enums name="VkViewportCoordinateSwizzleNV" type="enum"> + <enum value="0" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"/> + <enum value="1" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"/> + <enum value="2" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"/> + <enum value="3" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"/> + <enum value="4" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"/> + <enum value="5" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"/> + <enum value="6" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"/> + <enum value="7" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"/> + </enums> + <enums name="VkDiscardRectangleModeEXT" type="enum"> + <enum value="0" name="VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"/> + <enum value="1" name="VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"/> + </enums> + <enums name="VkSubpassDescriptionFlagBits" type="bitmask"> + </enums> + <enums name="VkPointClippingBehavior" type="enum"> + <enum value="0" name="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"/> + <enum value="1" name="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"/> + </enums> + <enums name="VkSamplerReductionModeEXT" type="enum"> + <enum value="0" name="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"/> + <enum value="1" name="VK_SAMPLER_REDUCTION_MODE_MIN_EXT"/> + <enum value="2" name="VK_SAMPLER_REDUCTION_MODE_MAX_EXT"/> + </enums> + <enums name="VkTessellationDomainOrigin" type="enum"> + <enum value="0" name="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"/> + <enum value="1" name="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"/> + </enums> + <enums name="VkSamplerYcbcrModelConversion" type="enum"> + <enum value="0" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"/> + <enum value="1" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY" comment="just range expansion"/> + <enum value="2" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709" comment="aka HD YUV"/> + <enum value="3" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601" comment="aka SD YUV"/> + <enum value="4" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020" comment="aka UHD YUV"/> + </enums> + <enums name="VkSamplerYcbcrRange" type="enum"> + <enum value="0" name="VK_SAMPLER_YCBCR_RANGE_ITU_FULL" comment="Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"/> + <enum value="1" name="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW" comment="Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"/> + </enums> + <enums name="VkChromaLocation" type="enum"> + <enum value="0" name="VK_CHROMA_LOCATION_COSITED_EVEN"/> + <enum value="1" name="VK_CHROMA_LOCATION_MIDPOINT"/> + </enums> + <enums name="VkBlendOverlapEXT" type="enum"> + <enum value="0" name="VK_BLEND_OVERLAP_UNCORRELATED_EXT"/> + <enum value="1" name="VK_BLEND_OVERLAP_DISJOINT_EXT"/> + <enum value="2" name="VK_BLEND_OVERLAP_CONJOINT_EXT"/> + </enums> + <enums name="VkCoverageModulationModeNV" type="enum"> + <enum value="0" name="VK_COVERAGE_MODULATION_MODE_NONE_NV"/> + <enum value="1" name="VK_COVERAGE_MODULATION_MODE_RGB_NV"/> + <enum value="2" name="VK_COVERAGE_MODULATION_MODE_ALPHA_NV"/> + <enum value="3" name="VK_COVERAGE_MODULATION_MODE_RGBA_NV"/> + </enums> + <enums name="VkValidationCacheHeaderVersionEXT" type="enum"> + <enum value="1" name="VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"/> + </enums> + <enums name="VkShaderInfoTypeAMD" type="enum"> + <enum value="0" name="VK_SHADER_INFO_TYPE_STATISTICS_AMD"/> + <enum value="1" name="VK_SHADER_INFO_TYPE_BINARY_AMD"/> + <enum value="2" name="VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"/> + </enums> + <enums name="VkQueueGlobalPriorityEXT" type="enum"> + <enum value="128" name="VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"/> + <enum value="256" name="VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"/> + <enum value="512" name="VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"/> + <enum value="1024" name="VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"/> + </enums> + <enums name="VkDebugUtilsMessageSeverityFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"/> + <enum bitpos="4" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"/> + <enum bitpos="8" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"/> + <enum bitpos="12" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"/> + </enums> + <enums name="VkDebugUtilsMessageTypeFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"/> + <enum bitpos="1" name="VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"/> + <enum bitpos="2" name="VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"/> + </enums> + <enums name="VkConservativeRasterizationModeEXT" type="enum"> + <enum value="0" name="VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"/> + <enum value="1" name="VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"/> + <enum value="2" name="VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"/> + </enums> + <enums name="VkDescriptorBindingFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"/> + <enum bitpos="1" name="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"/> + <enum bitpos="2" name="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"/> + <enum bitpos="3" name="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_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"> + <proto><type>VkResult</type> <name>vkCreateInstance</name></proto> + <param>const <type>VkInstanceCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkInstance</type>* <name>pInstance</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyInstance</name></proto> + <param optional="true" externsync="true"><type>VkInstance</type> <name>instance</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED"> + <proto><type>VkResult</type> <name>vkEnumeratePhysicalDevices</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceCount</name></param> + <param optional="true" len="pPhysicalDeviceCount"><type>VkPhysicalDevice</type>* <name>pPhysicalDevices</name></param> + </command> + <command> + <proto><type>PFN_vkVoidFunction</type> <name>vkGetDeviceProcAddr</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param len="null-terminated">const <type>char</type>* <name>pName</name></param> + </command> + <command> + <proto><type>PFN_vkVoidFunction</type> <name>vkGetInstanceProcAddr</name></proto> + <param optional="true"><type>VkInstance</type> <name>instance</name></param> + <param len="null-terminated">const <type>char</type>* <name>pName</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkPhysicalDeviceProperties</type>* <name>pProperties</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param> + <param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties</type>* <name>pQueueFamilyProperties</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkPhysicalDeviceMemoryProperties</type>* <name>pMemoryProperties</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkPhysicalDeviceFeatures</type>* <name>pFeatures</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkFormat</type> <name>format</name></param> + <param><type>VkFormatProperties</type>* <name>pFormatProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkFormat</type> <name>format</name></param> + <param><type>VkImageType</type> <name>type</name></param> + <param><type>VkImageTiling</type> <name>tiling</name></param> + <param><type>VkImageUsageFlags</type> <name>usage</name></param> + <param optional="true"><type>VkImageCreateFlags</type> <name>flags</name></param> + <param><type>VkImageFormatProperties</type>* <name>pImageFormatProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkCreateDevice</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkDeviceCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDevice</type>* <name>pDevice</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyDevice</name></proto> + <param optional="true" externsync="true"><type>VkDevice</type> <name>device</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkEnumerateInstanceVersion</name></proto> + <param><type>uint32_t</type>* <name>pApiVersion</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkEnumerateInstanceLayerProperties</name></proto> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT"> + <proto><type>VkResult</type> <name>vkEnumerateInstanceExtensionProperties</name></proto> + <param optional="true" len="null-terminated">const <type>char</type>* <name>pLayerName</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkEnumerateDeviceLayerProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT"> + <proto><type>VkResult</type> <name>vkEnumerateDeviceExtensionProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param optional="true" len="null-terminated">const <type>char</type>* <name>pLayerName</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetDeviceQueue</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + <param><type>uint32_t</type> <name>queueIndex</name></param> + <param><type>VkQueue</type>* <name>pQueue</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkQueueSubmit</name></proto> + <param externsync="true"><type>VkQueue</type> <name>queue</name></param> + <param optional="true"><type>uint32_t</type> <name>submitCount</name></param> + <param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param> + <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkQueueWaitIdle</name></proto> + <param><type>VkQueue</type> <name>queue</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkDeviceWaitIdle</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <implicitexternsyncparams> + <param>all sname:VkQueue objects created from pname:device</param> + </implicitexternsyncparams> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkAllocateMemory</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkMemoryAllocateInfo</type>* <name>pAllocateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDeviceMemory</type>* <name>pMemory</name></param> + </command> + <command> + <proto><type>void</type> <name>vkFreeMemory</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED"> + <proto><type>VkResult</type> <name>vkMapMemory</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + <param><type>VkDeviceSize</type> <name>size</name></param> + <param optional="true"><type>VkMemoryMapFlags</type> <name>flags</name></param> + <param optional="false,true"><type>void</type>** <name>ppData</name></param> + </command> + <command> + <proto><type>void</type> <name>vkUnmapMemory</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkDeviceMemory</type> <name>memory</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkFlushMappedMemoryRanges</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>memoryRangeCount</name></param> + <param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkInvalidateMappedMemoryRanges</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>memoryRangeCount</name></param> + <param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetDeviceMemoryCommitment</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkDeviceMemory</type> <name>memory</name></param> + <param><type>VkDeviceSize</type>* <name>pCommittedMemoryInBytes</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetBufferMemoryRequirements</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkBindBufferMemory</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceMemory</type> <name>memory</name></param> + <param><type>VkDeviceSize</type> <name>memoryOffset</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetImageMemoryRequirements</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkBindImageMemory</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkImage</type> <name>image</name></param> + <param><type>VkDeviceMemory</type> <name>memory</name></param> + <param><type>VkDeviceSize</type> <name>memoryOffset</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetImageSparseMemoryRequirements</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param> + <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements</type>* <name>pSparseMemoryRequirements</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkFormat</type> <name>format</name></param> + <param><type>VkImageType</type> <name>type</name></param> + <param><type>VkSampleCountFlagBits</type> <name>samples</name></param> + <param><type>VkImageUsageFlags</type> <name>usage</name></param> + <param><type>VkImageTiling</type> <name>tiling</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties</type>* <name>pProperties</name></param> + </command> + <command queues="sparse_binding" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkQueueBindSparse</name></proto> + <param externsync="true"><type>VkQueue</type> <name>queue</name></param> + <param optional="true"><type>uint32_t</type> <name>bindInfoCount</name></param> + <param len="bindInfoCount" externsync="pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param> + <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateFence</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkFenceCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkFence</type>* <name>pFence</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyFence</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkResetFences</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>fenceCount</name></param> + <param len="fenceCount" externsync="true">const <type>VkFence</type>* <name>pFences</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_NOT_READY" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkGetFenceStatus</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkFence</type> <name>fence</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_TIMEOUT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkWaitForFences</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>fenceCount</name></param> + <param len="fenceCount">const <type>VkFence</type>* <name>pFences</name></param> + <param><type>VkBool32</type> <name>waitAll</name></param> + <param><type>uint64_t</type> <name>timeout</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateSemaphore</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkSemaphoreCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSemaphore</type>* <name>pSemaphore</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroySemaphore</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateEvent</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkEventCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkEvent</type>* <name>pEvent</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyEvent</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkEvent</type> <name>event</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_EVENT_SET,VK_EVENT_RESET" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkGetEventStatus</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkEvent</type> <name>event</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkSetEvent</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkEvent</type> <name>event</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkResetEvent</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkEvent</type> <name>event</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateQueryPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkQueryPoolCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkQueryPool</type>* <name>pQueryPool</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyQueryPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkQueryPool</type> <name>queryPool</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_NOT_READY" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST"> + <proto><type>VkResult</type> <name>vkGetQueryPoolResults</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkQueryPool</type> <name>queryPool</name></param> + <param><type>uint32_t</type> <name>firstQuery</name></param> + <param><type>uint32_t</type> <name>queryCount</name></param> + <param><type>size_t</type> <name>dataSize</name></param> + <param len="dataSize"><type>void</type>* <name>pData</name></param> + <param><type>VkDeviceSize</type> <name>stride</name></param> + <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateBuffer</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkBufferCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkBuffer</type>* <name>pBuffer</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyBuffer</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkBuffer</type> <name>buffer</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateBufferView</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkBufferViewCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkBufferView</type>* <name>pView</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyBufferView</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkBufferView</type> <name>bufferView</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateImage</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkImage</type>* <name>pImage</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyImage</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkImage</type> <name>image</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetImageSubresourceLayout</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param>const <type>VkImageSubresource</type>* <name>pSubresource</name></param> + <param><type>VkSubresourceLayout</type>* <name>pLayout</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateImageView</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImageViewCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkImageView</type>* <name>pView</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyImageView</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkImageView</type> <name>imageView</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV"> + <proto><type>VkResult</type> <name>vkCreateShaderModule</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkShaderModuleCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkShaderModule</type>* <name>pShaderModule</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyShaderModule</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkShaderModule</type> <name>shaderModule</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreatePipelineCache</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkPipelineCacheCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkPipelineCache</type>* <name>pPipelineCache</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyPipelineCache</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetPipelineCacheData</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkPipelineCache</type> <name>pipelineCache</name></param> + <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param> + <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkMergePipelineCaches</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkPipelineCache</type> <name>dstCache</name></param> + <param><type>uint32_t</type> <name>srcCacheCount</name></param> + <param len="srcCacheCount">const <type>VkPipelineCache</type>* <name>pSrcCaches</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV"> + <proto><type>VkResult</type> <name>vkCreateGraphicsPipelines</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param> + <param><type>uint32_t</type> <name>createInfoCount</name></param> + <param len="createInfoCount">const <type>VkGraphicsPipelineCreateInfo</type>* <name>pCreateInfos</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV"> + <proto><type>VkResult</type> <name>vkCreateComputePipelines</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param> + <param><type>uint32_t</type> <name>createInfoCount</name></param> + <param len="createInfoCount">const <type>VkComputePipelineCreateInfo</type>* <name>pCreateInfos</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyPipeline</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkPipeline</type> <name>pipeline</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreatePipelineLayout</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkPipelineLayoutCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkPipelineLayout</type>* <name>pPipelineLayout</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyPipelineLayout</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkPipelineLayout</type> <name>pipelineLayout</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_TOO_MANY_OBJECTS"> + <proto><type>VkResult</type> <name>vkCreateSampler</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkSamplerCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSampler</type>* <name>pSampler</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroySampler</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkSampler</type> <name>sampler</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateDescriptorSetLayout</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkDescriptorSetLayoutCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDescriptorSetLayout</type>* <name>pSetLayout</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyDescriptorSetLayout</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTATION_EXT"> + <proto><type>VkResult</type> <name>vkCreateDescriptorPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkDescriptorPoolCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDescriptorPool</type>* <name>pDescriptorPool</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyDescriptorPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkResetDescriptorPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param> + <param optional="true"><type>VkDescriptorPoolResetFlags</type> <name>flags</name></param> + <implicitexternsyncparams> + <param>any sname:VkDescriptorSet objects allocated from pname:descriptorPool</param> + </implicitexternsyncparams> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTED_POOL,VK_ERROR_OUT_OF_POOL_MEMORY"> + <proto><type>VkResult</type> <name>vkAllocateDescriptorSets</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pAllocateInfo::descriptorPool">const <type>VkDescriptorSetAllocateInfo</type>* <name>pAllocateInfo</name></param> + <param len="pAllocateInfo::descriptorSetCount"><type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkFreeDescriptorSets</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param> + <param><type>uint32_t</type> <name>descriptorSetCount</name></param> + <param noautovalidity="true" externsync="true" len="descriptorSetCount">const <type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param> + </command> + <command> + <proto><type>void</type> <name>vkUpdateDescriptorSets</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true"><type>uint32_t</type> <name>descriptorWriteCount</name></param> + <param len="descriptorWriteCount" externsync="pDescriptorWrites[].dstSet">const <type>VkWriteDescriptorSet</type>* <name>pDescriptorWrites</name></param> + <param optional="true"><type>uint32_t</type> <name>descriptorCopyCount</name></param> + <param len="descriptorCopyCount" externsync="pDescriptorCopies[].dstSet">const <type>VkCopyDescriptorSet</type>* <name>pDescriptorCopies</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateFramebuffer</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkFramebufferCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkFramebuffer</type>* <name>pFramebuffer</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyFramebuffer</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkFramebuffer</type> <name>framebuffer</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateRenderPass</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkRenderPassCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkRenderPass</type>* <name>pRenderPass</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyRenderPass</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkRenderPass</type> <name>renderPass</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetRenderAreaGranularity</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkRenderPass</type> <name>renderPass</name></param> + <param><type>VkExtent2D</type>* <name>pGranularity</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateCommandPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkCommandPoolCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkCommandPool</type>* <name>pCommandPool</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyCommandPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkResetCommandPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param> + <param optional="true"><type>VkCommandPoolResetFlags</type> <name>flags</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkAllocateCommandBuffers</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pAllocateInfo::commandPool">const <type>VkCommandBufferAllocateInfo</type>* <name>pAllocateInfo</name></param> + <param len="pAllocateInfo::commandBufferCount"><type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param> + </command> + <command> + <proto><type>void</type> <name>vkFreeCommandBuffers</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param> + <param><type>uint32_t</type> <name>commandBufferCount</name></param> + <param noautovalidity="true" externsync="true" len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkBeginCommandBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkCommandBufferBeginInfo</type>* <name>pBeginInfo</name></param> + <implicitexternsyncparams> + <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param> + </implicitexternsyncparams> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkEndCommandBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <implicitexternsyncparams> + <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param> + </implicitexternsyncparams> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkResetCommandBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param optional="true"><type>VkCommandBufferResetFlags</type> <name>flags</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdBindPipeline</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param> + <param><type>VkPipeline</type> <name>pipeline</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetViewport</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>firstViewport</name></param> + <param><type>uint32_t</type> <name>viewportCount</name></param> + <param len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetScissor</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>firstScissor</name></param> + <param><type>uint32_t</type> <name>scissorCount</name></param> + <param len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetLineWidth</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>float</type> <name>lineWidth</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetDepthBias</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>float</type> <name>depthBiasConstantFactor</name></param> + <param><type>float</type> <name>depthBiasClamp</name></param> + <param><type>float</type> <name>depthBiasSlopeFactor</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetBlendConstants</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>float</type> <name>blendConstants</name>[4]</param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetDepthBounds</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>float</type> <name>minDepthBounds</name></param> + <param><type>float</type> <name>maxDepthBounds</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetStencilCompareMask</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param> + <param><type>uint32_t</type> <name>compareMask</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetStencilWriteMask</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param> + <param><type>uint32_t</type> <name>writeMask</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetStencilReference</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param> + <param><type>uint32_t</type> <name>reference</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdBindDescriptorSets</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param> + <param><type>VkPipelineLayout</type> <name>layout</name></param> + <param><type>uint32_t</type> <name>firstSet</name></param> + <param><type>uint32_t</type> <name>descriptorSetCount</name></param> + <param len="descriptorSetCount">const <type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param> + <param optional="true"><type>uint32_t</type> <name>dynamicOffsetCount</name></param> + <param len="dynamicOffsetCount">const <type>uint32_t</type>* <name>pDynamicOffsets</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdBindIndexBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + <param><type>VkIndexType</type> <name>indexType</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdBindVertexBuffers</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>firstBinding</name></param> + <param><type>uint32_t</type> <name>bindingCount</name></param> + <param len="bindingCount">const <type>VkBuffer</type>* <name>pBuffers</name></param> + <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdDraw</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>vertexCount</name></param> + <param><type>uint32_t</type> <name>instanceCount</name></param> + <param><type>uint32_t</type> <name>firstVertex</name></param> + <param><type>uint32_t</type> <name>firstInstance</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdDrawIndexed</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>indexCount</name></param> + <param><type>uint32_t</type> <name>instanceCount</name></param> + <param><type>uint32_t</type> <name>firstIndex</name></param> + <param><type>int32_t</type> <name>vertexOffset</name></param> + <param><type>uint32_t</type> <name>firstInstance</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdDrawIndirect</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + <param><type>uint32_t</type> <name>drawCount</name></param> + <param><type>uint32_t</type> <name>stride</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdDrawIndexedIndirect</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + <param><type>uint32_t</type> <name>drawCount</name></param> + <param><type>uint32_t</type> <name>stride</name></param> + </command> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="compute"> + <proto><type>void</type> <name>vkCmdDispatch</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>groupCountX</name></param> + <param><type>uint32_t</type> <name>groupCountY</name></param> + <param><type>uint32_t</type> <name>groupCountZ</name></param> + </command> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="compute"> + <proto><type>void</type> <name>vkCmdDispatchIndirect</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdCopyBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>srcBuffer</name></param> + <param><type>VkBuffer</type> <name>dstBuffer</name></param> + <param><type>uint32_t</type> <name>regionCount</name></param> + <param len="regionCount">const <type>VkBufferCopy</type>* <name>pRegions</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdCopyImage</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkImage</type> <name>srcImage</name></param> + <param><type>VkImageLayout</type> <name>srcImageLayout</name></param> + <param><type>VkImage</type> <name>dstImage</name></param> + <param><type>VkImageLayout</type> <name>dstImageLayout</name></param> + <param><type>uint32_t</type> <name>regionCount</name></param> + <param len="regionCount">const <type>VkImageCopy</type>* <name>pRegions</name></param> + </command> + <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdBlitImage</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkImage</type> <name>srcImage</name></param> + <param><type>VkImageLayout</type> <name>srcImageLayout</name></param> + <param><type>VkImage</type> <name>dstImage</name></param> + <param><type>VkImageLayout</type> <name>dstImageLayout</name></param> + <param><type>uint32_t</type> <name>regionCount</name></param> + <param len="regionCount">const <type>VkImageBlit</type>* <name>pRegions</name></param> + <param><type>VkFilter</type> <name>filter</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdCopyBufferToImage</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>srcBuffer</name></param> + <param><type>VkImage</type> <name>dstImage</name></param> + <param><type>VkImageLayout</type> <name>dstImageLayout</name></param> + <param><type>uint32_t</type> <name>regionCount</name></param> + <param len="regionCount">const <type>VkBufferImageCopy</type>* <name>pRegions</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdCopyImageToBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkImage</type> <name>srcImage</name></param> + <param><type>VkImageLayout</type> <name>srcImageLayout</name></param> + <param><type>VkBuffer</type> <name>dstBuffer</name></param> + <param><type>uint32_t</type> <name>regionCount</name></param> + <param len="regionCount">const <type>VkBufferImageCopy</type>* <name>pRegions</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdUpdateBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>dstBuffer</name></param> + <param><type>VkDeviceSize</type> <name>dstOffset</name></param> + <param><type>VkDeviceSize</type> <name>dataSize</name></param> + <param len="dataSize">const <type>void</type>* <name>pData</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer" comment="transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification"> + <proto><type>void</type> <name>vkCmdFillBuffer</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>dstBuffer</name></param> + <param><type>VkDeviceSize</type> <name>dstOffset</name></param> + <param><type>VkDeviceSize</type> <name>size</name></param> + <param><type>uint32_t</type> <name>data</name></param> + </command> + <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdClearColorImage</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param><type>VkImageLayout</type> <name>imageLayout</name></param> + <param>const <type>VkClearColorValue</type>* <name>pColor</name></param> + <param><type>uint32_t</type> <name>rangeCount</name></param> + <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param> + </command> + <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdClearDepthStencilImage</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param><type>VkImageLayout</type> <name>imageLayout</name></param> + <param>const <type>VkClearDepthStencilValue</type>* <name>pDepthStencil</name></param> + <param><type>uint32_t</type> <name>rangeCount</name></param> + <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdClearAttachments</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>attachmentCount</name></param> + <param len="attachmentCount">const <type>VkClearAttachment</type>* <name>pAttachments</name></param> + <param><type>uint32_t</type> <name>rectCount</name></param> + <param len="rectCount">const <type>VkClearRect</type>* <name>pRects</name></param> + </command> + <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdResolveImage</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkImage</type> <name>srcImage</name></param> + <param><type>VkImageLayout</type> <name>srcImageLayout</name></param> + <param><type>VkImage</type> <name>dstImage</name></param> + <param><type>VkImageLayout</type> <name>dstImageLayout</name></param> + <param><type>uint32_t</type> <name>regionCount</name></param> + <param len="regionCount">const <type>VkImageResolve</type>* <name>pRegions</name></param> + </command> + <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetEvent</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkEvent</type> <name>event</name></param> + <param><type>VkPipelineStageFlags</type> <name>stageMask</name></param> + </command> + <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdResetEvent</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkEvent</type> <name>event</name></param> + <param><type>VkPipelineStageFlags</type> <name>stageMask</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdWaitEvents</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>eventCount</name></param> + <param len="eventCount">const <type>VkEvent</type>* <name>pEvents</name></param> + <param><type>VkPipelineStageFlags</type> <name>srcStageMask</name></param> + <param><type>VkPipelineStageFlags</type> <name>dstStageMask</name></param> + <param optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></param> + <param len="memoryBarrierCount">const <type>VkMemoryBarrier</type>* <name>pMemoryBarriers</name></param> + <param optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></param> + <param len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier</type>* <name>pBufferMemoryBarriers</name></param> + <param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param> + <param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdPipelineBarrier</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineStageFlags</type> <name>srcStageMask</name></param> + <param><type>VkPipelineStageFlags</type> <name>dstStageMask</name></param> + <param optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></param> + <param optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></param> + <param len="memoryBarrierCount">const <type>VkMemoryBarrier</type>* <name>pMemoryBarriers</name></param> + <param optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></param> + <param len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier</type>* <name>pBufferMemoryBarriers</name></param> + <param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param> + <param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdBeginQuery</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkQueryPool</type> <name>queryPool</name></param> + <param><type>uint32_t</type> <name>query</name></param> + <param optional="true"><type>VkQueryControlFlags</type> <name>flags</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdEndQuery</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkQueryPool</type> <name>queryPool</name></param> + <param><type>uint32_t</type> <name>query</name></param> + </command> + <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdResetQueryPool</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkQueryPool</type> <name>queryPool</name></param> + <param><type>uint32_t</type> <name>firstQuery</name></param> + <param><type>uint32_t</type> <name>queryCount</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdWriteTimestamp</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineStageFlagBits</type> <name>pipelineStage</name></param> + <param><type>VkQueryPool</type> <name>queryPool</name></param> + <param><type>uint32_t</type> <name>query</name></param> + </command> + <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdCopyQueryPoolResults</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkQueryPool</type> <name>queryPool</name></param> + <param><type>uint32_t</type> <name>firstQuery</name></param> + <param><type>uint32_t</type> <name>queryCount</name></param> + <param><type>VkBuffer</type> <name>dstBuffer</name></param> + <param><type>VkDeviceSize</type> <name>dstOffset</name></param> + <param><type>VkDeviceSize</type> <name>stride</name></param> + <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdPushConstants</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineLayout</type> <name>layout</name></param> + <param><type>VkShaderStageFlags</type> <name>stageFlags</name></param> + <param><type>uint32_t</type> <name>offset</name></param> + <param><type>uint32_t</type> <name>size</name></param> + <param len="size">const <type>void</type>* <name>pValues</name></param> + </command> + <command queues="graphics" renderpass="outside" cmdbufferlevel="primary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdBeginRenderPass</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkRenderPassBeginInfo</type>* <name>pRenderPassBegin</name></param> + <param><type>VkSubpassContents</type> <name>contents</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdNextSubpass</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkSubpassContents</type> <name>contents</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdEndRenderPass</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary"> + <proto><type>void</type> <name>vkCmdExecuteCommands</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>commandBufferCount</name></param> + <param len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"> + <proto><type>VkResult</type> <name>vkCreateAndroidSurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkAndroidSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPropertiesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkDisplayPropertiesKHR</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkDisplayPlanePropertiesKHR</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetDisplayPlaneSupportedDisplaysKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>planeIndex</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pDisplayCount</name></param> + <param optional="true" len="pDisplayCount"><type>VkDisplayKHR</type>* <name>pDisplays</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetDisplayModePropertiesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkDisplayKHR</type> <name>display</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkDisplayModePropertiesKHR</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED"> + <proto><type>VkResult</type> <name>vkCreateDisplayModeKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param externsync="true"><type>VkDisplayKHR</type> <name>display</name></param> + <param>const <type>VkDisplayModeCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDisplayModeKHR</type>* <name>pMode</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetDisplayPlaneCapabilitiesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param externsync="true"><type>VkDisplayModeKHR</type> <name>mode</name></param> + <param><type>uint32_t</type> <name>planeIndex</name></param> + <param><type>VkDisplayPlaneCapabilitiesKHR</type>* <name>pCapabilities</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateDisplayPlaneSurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkDisplaySurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkCreateSharedSwapchainsKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>swapchainCount</name></param> + <param len="swapchainCount" externsync="pCreateInfos[].surface,pCreateInfos[].oldSwapchain">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfos</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param len="swapchainCount"><type>VkSwapchainKHR</type>* <name>pSwapchains</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateMirSurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkMirSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command> + <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceMirPresentationSupportKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + <param><type>MirConnection</type>* <name>connection</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroySurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param optional="true" externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceSupportKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + <param><type>VkSurfaceKHR</type> <name>surface</name></param> + <param><type>VkBool32</type>* <name>pSupported</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkSurfaceKHR</type> <name>surface</name></param> + <param><type>VkSurfaceCapabilitiesKHR</type>* <name>pSurfaceCapabilities</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceFormatsKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkSurfaceKHR</type> <name>surface</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param> + <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormatKHR</type>* <name>pSurfaceFormats</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfacePresentModesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkSurfaceKHR</type> <name>surface</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPresentModeCount</name></param> + <param optional="true" len="pPresentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"> + <proto><type>VkResult</type> <name>vkCreateSwapchainKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pCreateInfo.surface,pCreateInfo.oldSwapchain">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSwapchainKHR</type>* <name>pSwapchain</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroySwapchainKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetSwapchainImagesKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkSwapchainKHR</type> <name>swapchain</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pSwapchainImageCount</name></param> + <param optional="true" len="pSwapchainImageCount"><type>VkImage</type>* <name>pSwapchainImages</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkAcquireNextImageKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> + <param><type>uint64_t</type> <name>timeout</name></param> + <param optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></param> + <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> + <param><type>uint32_t</type>* <name>pImageIndex</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkQueuePresentKHR</name></proto> + <param externsync="true"><type>VkQueue</type> <name>queue</name></param> + <param externsync="pPresentInfo.pWaitSemaphores[],pPresentInfo.pSwapchains[]">const <type>VkPresentInfoKHR</type>* <name>pPresentInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"> + <proto><type>VkResult</type> <name>vkCreateViSurfaceNN</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkViSurfaceCreateInfoNN</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateWaylandSurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkWaylandSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command> + <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceWaylandPresentationSupportKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + <param>struct <type>wl_display</type>* <name>display</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateWin32SurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkWin32SurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command> + <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceWin32PresentationSupportKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateXlibSurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkXlibSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command> + <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceXlibPresentationSupportKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + <param><type>Display</type>* <name>dpy</name></param> + <param><type>VisualID</type> <name>visualID</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateXcbSurfaceKHR</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkXcbSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command> + <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceXcbPresentationSupportKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>uint32_t</type> <name>queueFamilyIndex</name></param> + <param><type>xcb_connection_t</type>* <name>connection</name></param> + <param><type>xcb_visualid_t</type> <name>visual_id</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateDebugReportCallbackEXT</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkDebugReportCallbackCreateInfoEXT</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDebugReportCallbackEXT</type>* <name>pCallback</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyDebugReportCallbackEXT</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param externsync="true"><type>VkDebugReportCallbackEXT</type> <name>callback</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDebugReportMessageEXT</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param><type>VkDebugReportFlagsEXT</type> <name>flags</name></param> + <param><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name></param> + <param><type>uint64_t</type> <name>object</name></param> + <param><type>size_t</type> <name>location</name></param> + <param><type>int32_t</type> <name>messageCode</name></param> + <param len="null-terminated">const <type>char</type>* <name>pLayerPrefix</name></param> + <param len="null-terminated">const <type>char</type>* <name>pMessage</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkDebugMarkerSetObjectNameEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pNameInfo.object">const <type>VkDebugMarkerObjectNameInfoEXT</type>* <name>pNameInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkDebugMarkerSetObjectTagEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pTagInfo.object">const <type>VkDebugMarkerObjectTagInfoEXT</type>* <name>pTagInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDebugMarkerBeginEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDebugMarkerEndEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDebugMarkerInsertEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceExternalImageFormatPropertiesNV</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkFormat</type> <name>format</name></param> + <param><type>VkImageType</type> <name>type</name></param> + <param><type>VkImageTiling</type> <name>tiling</name></param> + <param><type>VkImageUsageFlags</type> <name>usage</name></param> + <param optional="true"><type>VkImageCreateFlags</type> <name>flags</name></param> + <param optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>externalHandleType</name></param> + <param><type>VkExternalImageFormatPropertiesNV</type>* <name>pExternalImageFormatProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetMemoryWin32HandleNV</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkDeviceMemory</type> <name>memory</name></param> + <param><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleType</name></param> + <param><type>HANDLE</type>* <name>pHandle</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdDrawIndirectCountAMD</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + <param><type>VkBuffer</type> <name>countBuffer</name></param> + <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param> + <param><type>uint32_t</type> <name>maxDrawCount</name></param> + <param><type>uint32_t</type> <name>stride</name></param> + </command> + <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" pipeline="graphics"> + <proto><type>void</type> <name>vkCmdDrawIndexedIndirectCountAMD</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBuffer</type> <name>buffer</name></param> + <param><type>VkDeviceSize</type> <name>offset</name></param> + <param><type>VkBuffer</type> <name>countBuffer</name></param> + <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param> + <param><type>uint32_t</type> <name>maxDrawCount</name></param> + <param><type>uint32_t</type> <name>stride</name></param> + </command> + <command queues="graphics,compute" renderpass="inside" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdProcessCommandsNVX</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkCmdProcessCommandsInfoNVX</type>* <name>pProcessCommandsInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="inside" cmdbufferlevel="secondary"> + <proto><type>void</type> <name>vkCmdReserveSpaceForCommandsNVX</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkCmdReserveSpaceForCommandsInfoNVX</type>* <name>pReserveSpaceInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateIndirectCommandsLayoutNVX</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkIndirectCommandsLayoutCreateInfoNVX</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkIndirectCommandsLayoutNVX</type>* <name>pIndirectCommandsLayout</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyIndirectCommandsLayoutNVX</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkIndirectCommandsLayoutNVX</type> <name>indirectCommandsLayout</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateObjectTableNVX</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkObjectTableCreateInfoNVX</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkObjectTableNVX</type>* <name>pObjectTable</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyObjectTableNVX</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkObjectTableNVX</type> <name>objectTable</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkRegisterObjectsNVX</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkObjectTableNVX</type> <name>objectTable</name></param> + <param><type>uint32_t</type> <name>objectCount</name></param> + <param len="objectCount">const <type>VkObjectTableEntryNVX</type>* const* <name>ppObjectTableEntries</name></param> + <param len="objectCount">const <type>uint32_t</type>* <name>pObjectIndices</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkUnregisterObjectsNVX</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkObjectTableNVX</type> <name>objectTable</name></param> + <param><type>uint32_t</type> <name>objectCount</name></param> + <param len="objectCount">const <type>VkObjectEntryTypeNVX</type>* <name>pObjectEntryTypes</name></param> + <param len="objectCount">const <type>uint32_t</type>* <name>pObjectIndices</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkDeviceGeneratedCommandsFeaturesNVX</type>* <name>pFeatures</name></param> + <param><type>VkDeviceGeneratedCommandsLimitsNVX</type>* <name>pLimits</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkPhysicalDeviceFeatures2</type>* <name>pFeatures</name></param> + </command> + <command name="vkGetPhysicalDeviceFeatures2KHR" alias="vkGetPhysicalDeviceFeatures2"/> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceProperties2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkPhysicalDeviceProperties2</type>* <name>pProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceProperties2KHR" alias="vkGetPhysicalDeviceProperties2"/> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkFormat</type> <name>format</name></param> + <param><type>VkFormatProperties2</type>* <name>pFormatProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceFormatProperties2KHR" alias="vkGetPhysicalDeviceFormatProperties2"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceImageFormatInfo2</type>* <name>pImageFormatInfo</name></param> + <param><type>VkImageFormatProperties2</type>* <name>pImageFormatProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceImageFormatProperties2KHR" alias="vkGetPhysicalDeviceImageFormatProperties2"/> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param> + <param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties2</type>* <name>pQueueFamilyProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR" alias="vkGetPhysicalDeviceQueueFamilyProperties2"/> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkPhysicalDeviceMemoryProperties2</type>* <name>pMemoryProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceMemoryProperties2KHR" alias="vkGetPhysicalDeviceMemoryProperties2"/> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties2</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceSparseImageFormatInfo2</type>* <name>pFormatInfo</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> + <param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties2</type>* <name>pProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR" alias="vkGetPhysicalDeviceSparseImageFormatProperties2"/> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdPushDescriptorSetKHR</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param> + <param><type>VkPipelineLayout</type> <name>layout</name></param> + <param><type>uint32_t</type> <name>set</name></param> + <param><type>uint32_t</type> <name>descriptorWriteCount</name></param> + <param len="descriptorWriteCount">const <type>VkWriteDescriptorSet</type>* <name>pDescriptorWrites</name></param> + </command> + <command> + <proto><type>void</type> <name>vkTrimCommandPool</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param> + <param optional="true"><type>VkCommandPoolTrimFlags</type> <name>flags</name></param> + </command> + <command name="vkTrimCommandPoolKHR" alias="vkTrimCommandPool"/> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceExternalBufferProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceExternalBufferInfo</type>* <name>pExternalBufferInfo</name></param> + <param><type>VkExternalBufferProperties</type>* <name>pExternalBufferProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceExternalBufferPropertiesKHR" alias="vkGetPhysicalDeviceExternalBufferProperties"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetMemoryWin32HandleKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkMemoryGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param> + <param><type>HANDLE</type>* <name>pHandle</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkGetMemoryWin32HandlePropertiesKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param> + <param><type>HANDLE</type> <name>handle</name></param> + <param><type>VkMemoryWin32HandlePropertiesKHR</type>* <name>pMemoryWin32HandleProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetMemoryFdKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkMemoryGetFdInfoKHR</type>* <name>pGetFdInfo</name></param> + <param><type>int</type>* <name>pFd</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkGetMemoryFdPropertiesKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param> + <param><type>int</type> <name>fd</name></param> + <param><type>VkMemoryFdPropertiesKHR</type>* <name>pMemoryFdProperties</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceExternalSemaphoreProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceExternalSemaphoreInfo</type>* <name>pExternalSemaphoreInfo</name></param> + <param><type>VkExternalSemaphoreProperties</type>* <name>pExternalSemaphoreProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" alias="vkGetPhysicalDeviceExternalSemaphoreProperties"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetSemaphoreWin32HandleKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkSemaphoreGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param> + <param><type>HANDLE</type>* <name>pHandle</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkImportSemaphoreWin32HandleKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImportSemaphoreWin32HandleInfoKHR</type>* <name>pImportSemaphoreWin32HandleInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetSemaphoreFdKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkSemaphoreGetFdInfoKHR</type>* <name>pGetFdInfo</name></param> + <param><type>int</type>* <name>pFd</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkImportSemaphoreFdKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImportSemaphoreFdInfoKHR</type>* <name>pImportSemaphoreFdInfo</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceExternalFenceProperties</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceExternalFenceInfo</type>* <name>pExternalFenceInfo</name></param> + <param><type>VkExternalFenceProperties</type>* <name>pExternalFenceProperties</name></param> + </command> + <command name="vkGetPhysicalDeviceExternalFencePropertiesKHR" alias="vkGetPhysicalDeviceExternalFenceProperties"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetFenceWin32HandleKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkFenceGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param> + <param><type>HANDLE</type>* <name>pHandle</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkImportFenceWin32HandleKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImportFenceWin32HandleInfoKHR</type>* <name>pImportFenceWin32HandleInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetFenceFdKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkFenceGetFdInfoKHR</type>* <name>pGetFdInfo</name></param> + <param><type>int</type>* <name>pFd</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkImportFenceFdKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImportFenceFdInfoKHR</type>* <name>pImportFenceFdInfo</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkReleaseDisplayEXT</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkDisplayKHR</type> <name>display</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED"> + <proto><type>VkResult</type> <name>vkAcquireXlibDisplayEXT</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>Display</type>* <name>dpy</name></param> + <param><type>VkDisplayKHR</type> <name>display</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkGetRandROutputDisplayEXT</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>Display</type>* <name>dpy</name></param> + <param><type>RROutput</type> <name>rrOutput</name></param> + <param><type>VkDisplayKHR</type>* <name>pDisplay</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkDisplayPowerControlEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkDisplayKHR</type> <name>display</name></param> + <param>const <type>VkDisplayPowerInfoEXT</type>* <name>pDisplayPowerInfo</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkRegisterDeviceEventEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkDeviceEventInfoEXT</type>* <name>pDeviceEventInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkFence</type>* <name>pFence</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkRegisterDisplayEventEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkDisplayKHR</type> <name>display</name></param> + <param>const <type>VkDisplayEventInfoEXT</type>* <name>pDisplayEventInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkFence</type>* <name>pFence</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR"> + <proto><type>VkResult</type> <name>vkGetSwapchainCounterEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkSwapchainKHR</type> <name>swapchain</name></param> + <param><type>VkSurfaceCounterFlagBitsEXT</type> <name>counter</name></param> + <param><type>uint64_t</type>* <name>pCounterValue</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2EXT</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkSurfaceKHR</type> <name>surface</name></param> + <param><type>VkSurfaceCapabilities2EXT</type>* <name>pSurfaceCapabilities</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED"> + <proto><type>VkResult</type> <name>vkEnumeratePhysicalDeviceGroups</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceGroupCount</name></param> + <param optional="true" len="pPhysicalDeviceGroupCount"><type>VkPhysicalDeviceGroupProperties</type>* <name>pPhysicalDeviceGroupProperties</name></param> + </command> + <command name="vkEnumeratePhysicalDeviceGroupsKHR" alias="vkEnumeratePhysicalDeviceGroups"/> + <command> + <proto><type>void</type> <name>vkGetDeviceGroupPeerMemoryFeatures</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>heapIndex</name></param> + <param><type>uint32_t</type> <name>localDeviceIndex</name></param> + <param><type>uint32_t</type> <name>remoteDeviceIndex</name></param> + <param><type>VkPeerMemoryFeatureFlags</type>* <name>pPeerMemoryFeatures</name></param> + </command> + <command name="vkGetDeviceGroupPeerMemoryFeaturesKHR" alias="vkGetDeviceGroupPeerMemoryFeatures"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkBindBufferMemory2</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>bindInfoCount</name></param> + <param len="bindInfoCount">const <type>VkBindBufferMemoryInfo</type>* <name>pBindInfos</name></param> + </command> + <command name="vkBindBufferMemory2KHR" alias="vkBindBufferMemory2"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkBindImageMemory2</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>bindInfoCount</name></param> + <param len="bindInfoCount">const <type>VkBindImageMemoryInfo</type>* <name>pBindInfos</name></param> + </command> + <command name="vkBindImageMemory2KHR" alias="vkBindImageMemory2"/> + <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetDeviceMask</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>deviceMask</name></param> + </command> + <command name="vkCmdSetDeviceMaskKHR" alias="vkCmdSetDeviceMask"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetDeviceGroupPresentCapabilitiesKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkDeviceGroupPresentCapabilitiesKHR</type>* <name>pDeviceGroupPresentCapabilities</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetDeviceGroupSurfacePresentModesKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param> + <param optional="false,true"><type>VkDeviceGroupPresentModeFlagsKHR</type>* <name>pModes</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkAcquireNextImage2KHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkAcquireNextImageInfoKHR</type>* <name>pAcquireInfo</name></param> + <param><type>uint32_t</type>* <name>pImageIndex</name></param> + </command> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdDispatchBase</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>baseGroupX</name></param> + <param><type>uint32_t</type> <name>baseGroupY</name></param> + <param><type>uint32_t</type> <name>baseGroupZ</name></param> + <param><type>uint32_t</type> <name>groupCountX</name></param> + <param><type>uint32_t</type> <name>groupCountY</name></param> + <param><type>uint32_t</type> <name>groupCountZ</name></param> + </command> + <command name="vkCmdDispatchBaseKHR" alias="vkCmdDispatchBase"/> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetPhysicalDevicePresentRectanglesKHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pRectCount</name></param> + <param optional="true" len="pRectCount"><type>VkRect2D</type>* <name>pRects</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateDescriptorUpdateTemplate</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkDescriptorUpdateTemplateCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDescriptorUpdateTemplate</type>* <name>pDescriptorUpdateTemplate</name></param> + </command> + <command name="vkCreateDescriptorUpdateTemplateKHR" alias="vkCreateDescriptorUpdateTemplate"/> + <command> + <proto><type>void</type> <name>vkDestroyDescriptorUpdateTemplate</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command name="vkDestroyDescriptorUpdateTemplateKHR" alias="vkDestroyDescriptorUpdateTemplate"/> + <command> + <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplate</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkDescriptorSet</type> <name>descriptorSet</name></param> + <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param> + <param noautovalidity="true">const <type>void</type>* <name>pData</name></param> + </command> + <command name="vkUpdateDescriptorSetWithTemplateKHR" alias="vkUpdateDescriptorSetWithTemplate"/> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdPushDescriptorSetWithTemplateKHR</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param> + <param><type>VkPipelineLayout</type> <name>layout</name></param> + <param><type>uint32_t</type> <name>set</name></param> + <param noautovalidity="true">const <type>void</type>* <name>pData</name></param> + </command> + <command> + <proto><type>void</type> <name>vkSetHdrMetadataEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>uint32_t</type> <name>swapchainCount</name></param> + <param len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name></param> + <param len="swapchainCount">const <type>VkHdrMetadataEXT</type>* <name>pMetadata</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetSwapchainStatusKHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetRefreshCycleDurationGOOGLE</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> + <param><type>VkRefreshCycleDurationGOOGLE</type>* <name>pDisplayTimingProperties</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPastPresentationTimingGOOGLE</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pPresentationTimingCount</name></param> + <param optional="true" len="pPresentationTimingCount"><type>VkPastPresentationTimingGOOGLE</type>* <name>pPresentationTimings</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"> + <proto><type>VkResult</type> <name>vkCreateIOSSurfaceMVK</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkIOSSurfaceCreateInfoMVK</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"> + <proto><type>VkResult</type> <name>vkCreateMacOSSurfaceMVK</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkMacOSSurfaceCreateInfoMVK</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetViewportWScalingNV</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>firstViewport</name></param> + <param><type>uint32_t</type> <name>viewportCount</name></param> + <param len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetDiscardRectangleEXT</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>uint32_t</type> <name>firstDiscardRectangle</name></param> + <param><type>uint32_t</type> <name>discardRectangleCount</name></param> + <param len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></param> + </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdSetSampleLocationsEXT</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkSampleLocationsInfoEXT</type>* <name>pSampleLocationsInfo</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetPhysicalDeviceMultisamplePropertiesEXT</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param><type>VkSampleCountFlagBits</type> <name>samples</name></param> + <param><type>VkMultisamplePropertiesEXT</type>* <name>pMultisampleProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2KHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param> + <param><type>VkSurfaceCapabilities2KHR</type>* <name>pSurfaceCapabilities</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> + <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceFormats2KHR</name></proto> + <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> + <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param> + <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormat2KHR</type>* <name>pSurfaceFormats</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetBufferMemoryRequirements2</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkBufferMemoryRequirementsInfo2</type>* <name>pInfo</name></param> + <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param> + </command> + <command name="vkGetBufferMemoryRequirements2KHR" alias="vkGetBufferMemoryRequirements2"/> + <command> + <proto><type>void</type> <name>vkGetImageMemoryRequirements2</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImageMemoryRequirementsInfo2</type>* <name>pInfo</name></param> + <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param> + </command> + <command name="vkGetImageMemoryRequirements2KHR" alias="vkGetImageMemoryRequirements2"/> + <command> + <proto><type>void</type> <name>vkGetImageSparseMemoryRequirements2</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkImageSparseMemoryRequirementsInfo2</type>* <name>pInfo</name></param> + <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param> + <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements2</type>* <name>pSparseMemoryRequirements</name></param> + </command> + <command name="vkGetImageSparseMemoryRequirements2KHR" alias="vkGetImageSparseMemoryRequirements2"/> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateSamplerYcbcrConversion</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkSamplerYcbcrConversionCreateInfo</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkSamplerYcbcrConversion</type>* <name>pYcbcrConversion</name></param> + </command> + <command name="vkCreateSamplerYcbcrConversionKHR" alias="vkCreateSamplerYcbcrConversion"/> + <command> + <proto><type>void</type> <name>vkDestroySamplerYcbcrConversion</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkSamplerYcbcrConversion</type> <name>ycbcrConversion</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command name="vkDestroySamplerYcbcrConversionKHR" alias="vkDestroySamplerYcbcrConversion"/> + <command> + <proto><type>void</type> <name>vkGetDeviceQueue2</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkDeviceQueueInfo2</type>* <name>pQueueInfo</name></param> + <param><type>VkQueue</type>* <name>pQueue</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkValidationCacheEXT</type>* <name>pValidationCache</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyValidationCacheEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkValidationCacheEXT</type> <name>validationCache</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkGetValidationCacheDataEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkValidationCacheEXT</type> <name>validationCache</name></param> + <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param> + <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkMergeValidationCachesEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkValidationCacheEXT</type> <name>dstCache</name></param> + <param><type>uint32_t</type> <name>srcCacheCount</name></param> + <param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetDescriptorSetLayoutSupport</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkDescriptorSetLayoutCreateInfo</type>* <name>pCreateInfo</name></param> + <param><type>VkDescriptorSetLayoutSupport</type>* <name>pSupport</name></param> + </command> + <command name="vkGetDescriptorSetLayoutSupportKHR" alias="vkGetDescriptorSetLayoutSupport"/> + <command> + <proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageANDROID</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkFormat</type> <name>format</name></param> + <param><type>VkImageUsageFlags</type> <name>imageUsage</name></param> + <param><type>int</type>* <name>grallocUsage</name></param> + </command> + <command> + <proto><type>VkResult</type> <name>vkAcquireImageANDROID</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param><type>int</type> <name>nativeFenceFd</name></param> + <param><type>VkSemaphore</type> <name>semaphore</name></param> + <param><type>VkFence</type> <name>fence</name></param> + </command> + <command> + <proto><type>VkResult</type> <name>vkQueueSignalReleaseImageANDROID</name></proto> + <param><type>VkQueue</type> <name>queue</name></param> + <param><type>uint32_t</type> <name>waitSemaphoreCount</name></param> + <param>const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param><type>int</type>* <name>pNativeFenceFd</name></param> + </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetShaderInfoAMD</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkPipeline</type> <name>pipeline</name></param> + <param><type>VkShaderStageFlagBits</type> <name>shaderStage</name></param> + <param><type>VkShaderInfoTypeAMD</type> <name>infoType</name></param> + <param optional="false,true"><type>size_t</type>* <name>pInfoSize</name></param> + <param optional="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkSetDebugUtilsObjectNameEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pNameInfo.objectHandle">const <type>VkDebugUtilsObjectNameInfoEXT</type>* <name>pNameInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkSetDebugUtilsObjectTagEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="pTagInfo.objectHandle">const <type>VkDebugUtilsObjectTagInfoEXT</type>* <name>pTagInfo</name></param> + </command> + <command> + <proto><type>void</type> <name>vkQueueBeginDebugUtilsLabelEXT</name></proto> + <param><type>VkQueue</type> <name>queue</name></param> + <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param> + </command> + <command> + <proto><type>void</type> <name>vkQueueEndDebugUtilsLabelEXT</name></proto> + <param><type>VkQueue</type> <name>queue</name></param> + </command> + <command> + <proto><type>void</type> <name>vkQueueInsertDebugUtilsLabelEXT</name></proto> + <param><type>VkQueue</type> <name>queue</name></param> + <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdBeginDebugUtilsLabelEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdEndDebugUtilsLabelEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + </command> + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <proto><type>void</type> <name>vkCmdInsertDebugUtilsLabelEXT</name></proto> + <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateDebugUtilsMessengerEXT</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param>const <type>VkDebugUtilsMessengerCreateInfoEXT</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkDebugUtilsMessengerEXT</type>* <name>pMessenger</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyDebugUtilsMessengerEXT</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param externsync="true"><type>VkDebugUtilsMessengerEXT</type> <name>messenger</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command> + <proto><type>void</type> <name>vkSubmitDebugUtilsMessageEXT</name></proto> + <param><type>VkInstance</type> <name>instance</name></param> + <param><type>VkDebugUtilsMessageSeverityFlagBitsEXT</type> <name>messageSeverity</name></param> + <param><type>VkDebugUtilsMessageTypeFlagsEXT</type> <name>messageTypes</name></param> + <param>const <type>VkDebugUtilsMessengerCallbackDataEXT</type>* <name>pCallbackData</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE"> + <proto><type>VkResult</type> <name>vkGetMemoryHostPointerPropertiesEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param> + <param optional="false">const <type>void</type>* <name>pHostPointer</name></param> + <param><type>VkMemoryHostPointerPropertiesEXT</type>* <name>pMemoryHostPointerProperties</name></param> + </command> + <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary" pipeline="transfer"> + <proto><type>void</type> <name>vkCmdWriteBufferMarkerAMD</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkPipelineStageFlagBits</type> <name>pipelineStage</name></param> + <param><type>VkBuffer</type> <name>dstBuffer</name></param> + <param><type>VkDeviceSize</type> <name>dstOffset</name></param> + <param><type>uint32_t</type> <name>marker</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR"> + <proto><type>VkResult</type> <name>vkGetAndroidHardwareBufferPropertiesANDROID</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const struct <type>AHardwareBuffer</type>* <name>buffer</name></param> + <param><type>VkAndroidHardwareBufferPropertiesANDROID</type>* <name>pProperties</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> + <proto><type>VkResult</type> <name>vkGetMemoryAndroidHardwareBufferANDROID</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkMemoryGetAndroidHardwareBufferInfoANDROID</type>* <name>pInfo</name></param> + <param>struct <type>AHardwareBuffer</type>** <name>pBuffer</name></param> + </command> + </commands> + + <feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions"> + <require comment="Header boilerplate"> + <type name="vk_platform"/> + </require> + <require comment="API version"> + <type name="VK_API_VERSION"/> + <type name="VK_API_VERSION_1_0"/> + <type name="VK_VERSION_MAJOR"/> + <type name="VK_VERSION_MINOR"/> + <type name="VK_VERSION_PATCH"/> + <type name="VK_HEADER_VERSION"/> + </require> + <require comment="API constants"> + <enum name="VK_LOD_CLAMP_NONE"/> + <enum name="VK_REMAINING_MIP_LEVELS"/> + <enum name="VK_REMAINING_ARRAY_LAYERS"/> + <enum name="VK_WHOLE_SIZE"/> + <enum name="VK_ATTACHMENT_UNUSED"/> + <enum name="VK_TRUE"/> + <enum name="VK_FALSE"/> + <type name="VK_NULL_HANDLE"/> + <enum name="VK_QUEUE_FAMILY_IGNORED"/> + <enum name="VK_SUBPASS_EXTERNAL"/> + <type name="VkPipelineCacheHeaderVersion"/> + </require> + <require comment="Device initialization"> + <command name="vkCreateInstance"/> + <command name="vkDestroyInstance"/> + <command name="vkEnumeratePhysicalDevices"/> + <command name="vkGetPhysicalDeviceFeatures"/> + <command name="vkGetPhysicalDeviceFormatProperties"/> + <command name="vkGetPhysicalDeviceImageFormatProperties"/> + <command name="vkGetPhysicalDeviceProperties"/> + <command name="vkGetPhysicalDeviceQueueFamilyProperties"/> + <command name="vkGetPhysicalDeviceMemoryProperties"/> + <command name="vkGetInstanceProcAddr"/> + <command name="vkGetDeviceProcAddr"/> + </require> + <require comment="Device commands"> + <command name="vkCreateDevice"/> + <command name="vkDestroyDevice"/> + </require> + <require comment="Extension discovery commands"> + <command name="vkEnumerateInstanceExtensionProperties"/> + <command name="vkEnumerateDeviceExtensionProperties"/> + </require> + <require comment="Layer discovery commands"> + <command name="vkEnumerateInstanceLayerProperties"/> + <command name="vkEnumerateDeviceLayerProperties"/> + </require> + <require comment="queue commands"> + <command name="vkGetDeviceQueue"/> + <command name="vkQueueSubmit"/> + <command name="vkQueueWaitIdle"/> + <command name="vkDeviceWaitIdle"/> + </require> + <require comment="Memory commands"> + <command name="vkAllocateMemory"/> + <command name="vkFreeMemory"/> + <command name="vkMapMemory"/> + <command name="vkUnmapMemory"/> + <command name="vkFlushMappedMemoryRanges"/> + <command name="vkInvalidateMappedMemoryRanges"/> + <command name="vkGetDeviceMemoryCommitment"/> + </require> + <require comment="Memory management API commands"> + <command name="vkBindBufferMemory"/> + <command name="vkBindImageMemory"/> + <command name="vkGetBufferMemoryRequirements"/> + <command name="vkGetImageMemoryRequirements"/> + </require> + <require comment="Sparse resource memory management API commands"> + <command name="vkGetImageSparseMemoryRequirements"/> + <command name="vkGetPhysicalDeviceSparseImageFormatProperties"/> + <command name="vkQueueBindSparse"/> + </require> + <require comment="Fence commands"> + <command name="vkCreateFence"/> + <command name="vkDestroyFence"/> + <command name="vkResetFences"/> + <command name="vkGetFenceStatus"/> + <command name="vkWaitForFences"/> + </require> + <require comment="Queue semaphore commands"> + <command name="vkCreateSemaphore"/> + <command name="vkDestroySemaphore"/> + </require> + <require comment="Event commands"> + <command name="vkCreateEvent"/> + <command name="vkDestroyEvent"/> + <command name="vkGetEventStatus"/> + <command name="vkSetEvent"/> + <command name="vkResetEvent"/> + </require> + <require comment="Query commands"> + <command name="vkCreateQueryPool"/> + <command name="vkDestroyQueryPool"/> + <command name="vkGetQueryPoolResults"/> + </require> + <require comment="Buffer commands"> + <command name="vkCreateBuffer"/> + <command name="vkDestroyBuffer"/> + </require> + <require comment="Buffer view commands"> + <command name="vkCreateBufferView"/> + <command name="vkDestroyBufferView"/> + </require> + <require comment="Image commands"> + <command name="vkCreateImage"/> + <command name="vkDestroyImage"/> + <command name="vkGetImageSubresourceLayout"/> + </require> + <require comment="Image view commands"> + <command name="vkCreateImageView"/> + <command name="vkDestroyImageView"/> + </require> + <require comment="Shader commands"> + <command name="vkCreateShaderModule"/> + <command name="vkDestroyShaderModule"/> + </require> + <require comment="Pipeline Cache commands"> + <command name="vkCreatePipelineCache"/> + <command name="vkDestroyPipelineCache"/> + <command name="vkGetPipelineCacheData"/> + <command name="vkMergePipelineCaches"/> + </require> + <require comment="Pipeline commands"> + <command name="vkCreateGraphicsPipelines"/> + <command name="vkCreateComputePipelines"/> + <command name="vkDestroyPipeline"/> + </require> + <require comment="Pipeline layout commands"> + <command name="vkCreatePipelineLayout"/> + <command name="vkDestroyPipelineLayout"/> + </require> + <require comment="Sampler commands"> + <command name="vkCreateSampler"/> + <command name="vkDestroySampler"/> + </require> + <require comment="Descriptor set commands"> + <command name="vkCreateDescriptorSetLayout"/> + <command name="vkDestroyDescriptorSetLayout"/> + <command name="vkCreateDescriptorPool"/> + <command name="vkDestroyDescriptorPool"/> + <command name="vkResetDescriptorPool"/> + <command name="vkAllocateDescriptorSets"/> + <command name="vkFreeDescriptorSets"/> + <command name="vkUpdateDescriptorSets"/> + </require> + <require comment="Pass commands"> + <command name="vkCreateFramebuffer"/> + <command name="vkDestroyFramebuffer"/> + <command name="vkCreateRenderPass"/> + <command name="vkDestroyRenderPass"/> + <command name="vkGetRenderAreaGranularity"/> + </require> + <require comment="Command pool commands"> + <command name="vkCreateCommandPool"/> + <command name="vkDestroyCommandPool"/> + <command name="vkResetCommandPool"/> + </require> + <require comment="Command buffer commands"> + <command name="vkAllocateCommandBuffers"/> + <command name="vkFreeCommandBuffers"/> + <command name="vkBeginCommandBuffer"/> + <command name="vkEndCommandBuffer"/> + <command name="vkResetCommandBuffer"/> + </require> + <require comment="Command buffer building commands"> + <command name="vkCmdBindPipeline"/> + <command name="vkCmdSetViewport"/> + <command name="vkCmdSetScissor"/> + <command name="vkCmdSetLineWidth"/> + <command name="vkCmdSetDepthBias"/> + <command name="vkCmdSetBlendConstants"/> + <command name="vkCmdSetDepthBounds"/> + <command name="vkCmdSetStencilCompareMask"/> + <command name="vkCmdSetStencilWriteMask"/> + <command name="vkCmdSetStencilReference"/> + <command name="vkCmdBindDescriptorSets"/> + <command name="vkCmdBindIndexBuffer"/> + <command name="vkCmdBindVertexBuffers"/> + <command name="vkCmdDraw"/> + <command name="vkCmdDrawIndexed"/> + <command name="vkCmdDrawIndirect"/> + <command name="vkCmdDrawIndexedIndirect"/> + <command name="vkCmdDispatch"/> + <command name="vkCmdDispatchIndirect"/> + <command name="vkCmdCopyBuffer"/> + <command name="vkCmdCopyImage"/> + <command name="vkCmdBlitImage"/> + <command name="vkCmdCopyBufferToImage"/> + <command name="vkCmdCopyImageToBuffer"/> + <command name="vkCmdUpdateBuffer"/> + <command name="vkCmdFillBuffer"/> + <command name="vkCmdClearColorImage"/> + <command name="vkCmdClearDepthStencilImage"/> + <command name="vkCmdClearAttachments"/> + <command name="vkCmdResolveImage"/> + <command name="vkCmdSetEvent"/> + <command name="vkCmdResetEvent"/> + <command name="vkCmdWaitEvents"/> + <command name="vkCmdPipelineBarrier"/> + <command name="vkCmdBeginQuery"/> + <command name="vkCmdEndQuery"/> + <command name="vkCmdResetQueryPool"/> + <command name="vkCmdWriteTimestamp"/> + <command name="vkCmdCopyQueryPoolResults"/> + <command name="vkCmdPushConstants"/> + <command name="vkCmdBeginRenderPass"/> + <command name="vkCmdNextSubpass"/> + <command name="vkCmdEndRenderPass"/> + <command name="vkCmdExecuteCommands"/> + </require> + <require comment="Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API."> + <type name="VkBufferMemoryBarrier"/> + <type name="VkDispatchIndirectCommand"/> + <type name="VkDrawIndexedIndirectCommand"/> + <type name="VkDrawIndirectCommand"/> + <type name="VkImageMemoryBarrier"/> + <type name="VkMemoryBarrier"/> + <type name="VkObjectType"/> + </require> + </feature> + <feature api="vulkan" name="VK_VERSION_1_1" number="1.1" comment="Vulkan 1.1 core API interface definitions."> + <require> + <type name="VK_API_VERSION_1_1"/> + </require> + <require comment="Device Initialization"> + <command name="vkEnumerateInstanceVersion"/> + </require> + <require comment="Promoted from VK_KHR_relaxed_block_layout, which has no API"/> + <require comment="Promoted from VK_KHR_storage_buffer_storage_class, which has no API"/> + <require comment="Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95"> + <enum extends="VkStructureType" extnumber="95" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"/> + <type name="VkPhysicalDeviceSubgroupProperties"/> + <type name="VkSubgroupFeatureFlags"/> + <type name="VkSubgroupFeatureFlagBits"/> + </require> + <require comment="Promoted from VK_KHR_bind_memory2"> + <command name="vkBindBufferMemory2"/> + <command name="vkBindImageMemory2"/> + <enum extends="VkStructureType" extnumber="158" offset="0" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"/> + <enum extends="VkStructureType" extnumber="158" offset="1" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"/> + <enum bitpos="10" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_ALIAS_BIT"/> + <type name="VkBindBufferMemoryInfo"/> + <type name="VkBindImageMemoryInfo"/> + </require> + <require comment="Promoted from VK_KHR_16bit_storage"> + <enum extends="VkStructureType" extnumber="84" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"/> + <type name="VkPhysicalDevice16BitStorageFeatures"/> + </require> + <require comment="Promoted from VK_KHR_dedicated_allocation"> + <enum extends="VkStructureType" extnumber="128" offset="0" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"/> + <enum extends="VkStructureType" extnumber="128" offset="1" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"/> + <type name="VkMemoryDedicatedRequirements"/> + <type name="VkMemoryDedicatedAllocateInfo"/> + </require> + <require comment="Promoted from VK_KHR_device_group"> + <enum extends="VkStructureType" extnumber="61" offset="0" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/> + <comment>offset 1 reserved for the old VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX enum</comment> + <comment>offset 2 reserved for the old VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX enum</comment> + <enum extends="VkStructureType" extnumber="61" offset="3" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/> + <enum extends="VkStructureType" extnumber="61" offset="4" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"/> + <enum extends="VkStructureType" extnumber="61" offset="5" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"/> + <enum extends="VkStructureType" extnumber="61" offset="6" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/> + <type name="VkPeerMemoryFeatureFlags"/> + <type name="VkPeerMemoryFeatureFlagBits"/> + <type name="VkMemoryAllocateFlags"/> + <type name="VkMemoryAllocateFlagBits"/> + <type name="VkMemoryAllocateFlagsInfo"/> + <type name="VkDeviceGroupRenderPassBeginInfo"/> + <type name="VkDeviceGroupCommandBufferBeginInfo"/> + <type name="VkDeviceGroupSubmitInfo"/> + <type name="VkDeviceGroupBindSparseInfo"/> + <command name="vkGetDeviceGroupPeerMemoryFeatures"/> + <command name="vkCmdSetDeviceMask"/> + <command name="vkCmdDispatchBase"/> + <enum bitpos="3" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"/> + <enum bitpos="4" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DISPATCH_BASE"/> + <enum bitpos="2" extends="VkDependencyFlagBits" name="VK_DEPENDENCY_DEVICE_GROUP_BIT" comment="Dependency is across devices"/> + </require> + <require comment="Promoted from VK_KHR_device_group + VK_KHR_bind_memory2"> + <enum extends="VkStructureType" extnumber="61" offset="13" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"/> + <enum extends="VkStructureType" extnumber="61" offset="14" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"/> + <type name="VkBindBufferMemoryDeviceGroupInfo"/> + <type name="VkBindImageMemoryDeviceGroupInfo"/> + <enum bitpos="6" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT" comment="Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image"/> + </require> + <require comment="Promoted from VK_KHR_device_group_creation"> + <enum extends="VkStructureType" extnumber="71" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"/> + <enum extends="VkStructureType" extnumber="71" offset="1" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"/> + <enum name="VK_MAX_DEVICE_GROUP_SIZE"/> + <type name="VkPhysicalDeviceGroupProperties"/> + <type name="VkDeviceGroupDeviceCreateInfo"/> + <command name="vkEnumeratePhysicalDeviceGroups"/> + <enum bitpos="1" extends="VkMemoryHeapFlagBits" name="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT" comment="If set, heap allocations allocate multiple instances by default"/> + </require> + <require comment="Promoted from VK_KHR_get_memory_requirements2"> + <enum extends="VkStructureType" extnumber="147" offset="0" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"/> + <enum extends="VkStructureType" extnumber="147" offset="1" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"/> + <enum extends="VkStructureType" extnumber="147" offset="2" name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/> + <enum extends="VkStructureType" extnumber="147" offset="3" name="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"/> + <enum extends="VkStructureType" extnumber="147" offset="4" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/> + <type name="VkBufferMemoryRequirementsInfo2"/> + <type name="VkImageMemoryRequirementsInfo2"/> + <type name="VkImageSparseMemoryRequirementsInfo2"/> + <type name="VkMemoryRequirements2"/> + <type name="VkSparseImageMemoryRequirements2"/> + <command name="vkGetImageMemoryRequirements2"/> + <command name="vkGetBufferMemoryRequirements2"/> + <command name="vkGetImageSparseMemoryRequirements2"/> + </require> + <require comment="Promoted from VK_KHR_get_physical_device_properties2"> + <enum extends="VkStructureType" extnumber="60" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="1" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="2" name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="3" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="4" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"/> + <enum extends="VkStructureType" extnumber="60" offset="5" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="6" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="7" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/> + <enum extends="VkStructureType" extnumber="60" offset="8" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/> + <type name="VkPhysicalDeviceFeatures2"/> + <type name="VkPhysicalDeviceProperties2"/> + <type name="VkFormatProperties2"/> + <type name="VkImageFormatProperties2"/> + <type name="VkPhysicalDeviceImageFormatInfo2"/> + <type name="VkQueueFamilyProperties2"/> + <type name="VkPhysicalDeviceMemoryProperties2"/> + <type name="VkSparseImageFormatProperties2"/> + <type name="VkPhysicalDeviceSparseImageFormatInfo2"/> + <command name="vkGetPhysicalDeviceFeatures2"/> + <command name="vkGetPhysicalDeviceProperties2"/> + <command name="vkGetPhysicalDeviceFormatProperties2"/> + <command name="vkGetPhysicalDeviceImageFormatProperties2"/> + <command name="vkGetPhysicalDeviceQueueFamilyProperties2"/> + <command name="vkGetPhysicalDeviceMemoryProperties2"/> + <command name="vkGetPhysicalDeviceSparseImageFormatProperties2"/> + </require> + <require comment="Promoted from VK_KHR_maintenance1"> + <enum extends="VkResult" extnumber="70" offset="0" dir="-" name="VK_ERROR_OUT_OF_POOL_MEMORY"/> + <enum bitpos="14" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT" comment="Format can be used as the source image of image transfer commands"/> + <enum bitpos="15" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT" comment="Format can be used as the destination image of image transfer commands"/> + <enum bitpos="5" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT" comment="The 3D image can be viewed as a 2D or 2D array image"/> + <command name="vkTrimCommandPool"/> + <comment>Additional dependent types / tokens extending enumerants, not explicitly mentioned</comment> + <type name="VkCommandPoolTrimFlags"/> + </require> + <require comment="Promoted from VK_KHR_maintenance2"> + <enum bitpos="7" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"/> + <enum bitpos="8" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"/> + <enum extends="VkStructureType" extnumber="118" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"/> + <enum extends="VkStructureType" extnumber="118" offset="1" name="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"/> + <enum extends="VkStructureType" extnumber="118" offset="2" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"/> + <enum extends="VkStructureType" extnumber="118" offset="3" name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"/> + <enum extends="VkImageLayout" extnumber="118" offset="0" name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"/> + <enum extends="VkImageLayout" extnumber="118" offset="1" name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"/> + <type name="VkPhysicalDevicePointClippingProperties"/> + <type name="VkPointClippingBehavior"/> + <type name="VkRenderPassInputAttachmentAspectCreateInfo"/> + <type name="VkInputAttachmentAspectReference"/> + <type name="VkImageViewUsageCreateInfo"/> + <type name="VkTessellationDomainOrigin"/> + <type name="VkPipelineTessellationDomainOriginStateCreateInfo"/> + </require> + <require comment="Promoted from VK_KHR_multiview"> + <enum extends="VkStructureType" extnumber="54" offset="0" name="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"/> + <enum extends="VkStructureType" extnumber="54" offset="1" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"/> + <enum extends="VkStructureType" extnumber="54" offset="2" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"/> + <enum bitpos="1" extends="VkDependencyFlagBits" name="VK_DEPENDENCY_VIEW_LOCAL_BIT"/> + <type name="VkRenderPassMultiviewCreateInfo"/> + <type name="VkPhysicalDeviceMultiviewFeatures"/> + <type name="VkPhysicalDeviceMultiviewProperties"/> + </require> + <require comment="Promoted from VK_KHR_variable_pointers"> + <enum extends="VkStructureType" extnumber="121" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"/> + <type name="VkPhysicalDeviceVariablePointerFeatures"/> + </require> + <require comment="Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they weren't actually promoted from an extension."> + <enum extends="VkStructureType" extnumber="146" offset="0" name="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"/> + <enum extends="VkStructureType" extnumber="146" offset="1" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"/> + <enum extends="VkStructureType" extnumber="146" offset="2" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"/> + <enum extends="VkStructureType" extnumber="146" offset="3" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"/> + <enum bitpos="4" extends="VkQueueFlagBits" name="VK_QUEUE_PROTECTED_BIT" comment="Queues may support protected operations"/> + <enum bitpos="0" extends="VkDeviceQueueCreateFlagBits" name="VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT" comment="Queue is a protected-capable device queue"/> + <enum bitpos="5" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_PROTECTED_BIT" comment="Memory is protected"/> + <enum bitpos="3" extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_PROTECTED_BIT" comment="Buffer requires protected memory"/> + <enum bitpos="11" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_PROTECTED_BIT" comment="Image requires protected memory"/> + <enum bitpos="2" extends="VkCommandPoolCreateFlagBits" name="VK_COMMAND_POOL_CREATE_PROTECTED_BIT" comment="Command buffers allocated from pool are protected command buffers"/> + <type name="VkPhysicalDeviceProtectedMemoryFeatures"/> + <type name="VkPhysicalDeviceProtectedMemoryProperties"/> + <type name="VkDeviceQueueInfo2"/> + <type name="VkProtectedSubmitInfo"/> + <command name="vkGetDeviceQueue2"/> + </require> + <require comment="Promoted from VK_KHR_sampler_ycbcr_conversion"> + <enum extends="VkStructureType" extnumber="157" offset="0" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/> + <enum extends="VkStructureType" extnumber="157" offset="1" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/> + <enum extends="VkStructureType" extnumber="157" offset="2" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"/> + <enum extends="VkStructureType" extnumber="157" offset="3" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"/> + <enum extends="VkStructureType" extnumber="157" offset="4" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"/> + <enum extends="VkStructureType" extnumber="157" offset="5" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"/> + <enum extends="VkObjectType" extnumber="157" offset="0" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"/> + <enum extends="VkFormat" extnumber="157" offset="0" name="VK_FORMAT_G8B8G8R8_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="1" name="VK_FORMAT_B8G8R8G8_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="2" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="3" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="4" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="5" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="6" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="7" name="VK_FORMAT_R10X6_UNORM_PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="8" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="9" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="10" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="11" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="12" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="13" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="14" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="15" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="16" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="17" name="VK_FORMAT_R12X4_UNORM_PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="18" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="19" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="20" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="21" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="22" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="23" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="24" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="25" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="26" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"/> + <enum extends="VkFormat" extnumber="157" offset="27" name="VK_FORMAT_G16B16G16R16_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="28" name="VK_FORMAT_B16G16R16G16_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="29" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="30" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="31" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="32" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"/> + <enum extends="VkFormat" extnumber="157" offset="33" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"/> + <enum bitpos="4" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT"/> + <enum bitpos="5" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT"/> + <enum bitpos="6" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT"/> + <enum bitpos="9" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT"/> + <enum bitpos="17" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT" comment="Format can have midpoint rather than cosited chroma samples"/> + <enum bitpos="18" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT" comment="Format can be used with linear filtering whilst color conversion is enabled"/> + <enum bitpos="19" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT" comment="Format can have different chroma, min and mag filters"/> + <enum bitpos="20" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/> + <enum bitpos="21" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/> + <enum bitpos="22" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT" comment="Format supports disjoint planes"/> + <enum bitpos="23" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT" comment="Format can have cosited rather than midpoint chroma samples"/> + <type name="VkSamplerYcbcrConversionCreateInfo"/> + <type name="VkSamplerYcbcrConversionInfo"/> + <type name="VkBindImagePlaneMemoryInfo"/> + <type name="VkImagePlaneMemoryRequirementsInfo"/> + <type name="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/> + <type name="VkSamplerYcbcrConversionImageFormatProperties"/> + <command name="vkCreateSamplerYcbcrConversion"/> + <command name="vkDestroySamplerYcbcrConversion"/> + <comment>Additional dependent types / tokens extending enumerants, not explicitly mentioned</comment> + <type name="VkSamplerYcbcrConversion"/> + <type name="VkSamplerYcbcrModelConversion"/> + <type name="VkSamplerYcbcrRange"/> + <type name="VkChromaLocation"/> + </require> + <require comment="Promoted from VK_KHR_descriptor_update_template"> + <enum extends="VkStructureType" extnumber="86" offset="0" name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/> + <enum extends="VkObjectType" extnumber="86" offset="0" name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/> + <command name="vkCreateDescriptorUpdateTemplate"/> + <command name="vkDestroyDescriptorUpdateTemplate"/> + <command name="vkUpdateDescriptorSetWithTemplate"/> + <type name="VkDescriptorUpdateTemplate"/> + <type name="VkDescriptorUpdateTemplateCreateFlags"/> + <type name="VkDescriptorUpdateTemplateType"/> + <type name="VkDescriptorUpdateTemplateEntry"/> + <type name="VkDescriptorUpdateTemplateCreateInfo"/> + </require> + <require comment="Promoted from VK_KHR_external_memory_capabilities"> + <enum extends="VkStructureType" extnumber="72" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"/> + <enum extends="VkStructureType" extnumber="72" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"/> + <enum extends="VkStructureType" extnumber="72" offset="2" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"/> + <enum extends="VkStructureType" extnumber="72" offset="3" name="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"/> + <enum extends="VkStructureType" extnumber="72" offset="4" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/> + <enum name="VK_LUID_SIZE"/> + <type name="VkExternalMemoryHandleTypeFlags"/> + <type name="VkExternalMemoryHandleTypeFlagBits"/> + <type name="VkExternalMemoryFeatureFlags"/> + <type name="VkExternalMemoryFeatureFlagBits"/> + <type name="VkExternalMemoryProperties"/> + <type name="VkPhysicalDeviceExternalImageFormatInfo"/> + <type name="VkExternalImageFormatProperties"/> + <type name="VkPhysicalDeviceExternalBufferInfo"/> + <type name="VkExternalBufferProperties"/> + <type name="VkPhysicalDeviceIDProperties"/> + <command name="vkGetPhysicalDeviceExternalBufferProperties"/> + </require> + <require comment="Promoted from VK_KHR_external_memory"> + <enum extends="VkStructureType" extnumber="73" offset="0" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"/> + <enum extends="VkStructureType" extnumber="73" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"/> + <enum extends="VkStructureType" extnumber="73" offset="2" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"/> + <enum extends="VkResult" extnumber="73" offset="3" dir="-" name="VK_ERROR_INVALID_EXTERNAL_HANDLE"/> + <enum name="VK_QUEUE_FAMILY_EXTERNAL"/> + <type name="VkExternalMemoryImageCreateInfo"/> + <type name="VkExternalMemoryBufferCreateInfo"/> + <type name="VkExportMemoryAllocateInfo"/> + </require> + <require comment="Promoted from VK_KHR_external_fence_capabilities"> + <enum extends="VkStructureType" extnumber="113" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"/> + <enum extends="VkStructureType" extnumber="113" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"/> + <type name="VkExternalFenceHandleTypeFlags"/> + <type name="VkExternalFenceHandleTypeFlagBits"/> + <type name="VkExternalFenceFeatureFlags"/> + <type name="VkExternalFenceFeatureFlagBits"/> + <type name="VkPhysicalDeviceExternalFenceInfo"/> + <type name="VkExternalFenceProperties"/> + <command name="vkGetPhysicalDeviceExternalFenceProperties"/> + </require> + <require comment="Promoted from VK_KHR_external_fence"> + <enum extends="VkStructureType" extnumber="114" offset="0" name="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"/> + <type name="VkFenceImportFlags"/> + <type name="VkFenceImportFlagBits"/> + <type name="VkExportFenceCreateInfo"/> + </require> + <require comment="Promoted from VK_KHR_external_semaphore"> + <enum extends="VkStructureType" extnumber="78" offset="0" name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"/> + <type name="VkSemaphoreImportFlags"/> + <type name="VkSemaphoreImportFlagBits"/> + <type name="VkExportSemaphoreCreateInfo"/> + </require> + <require comment="Promoted from VK_KHR_external_semaphore_capabilities"> + <enum extends="VkStructureType" extnumber="77" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"/> + <enum extends="VkStructureType" extnumber="77" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"/> + <type name="VkExternalSemaphoreHandleTypeFlags"/> + <type name="VkExternalSemaphoreHandleTypeFlagBits"/> + <type name="VkExternalSemaphoreFeatureFlags"/> + <type name="VkExternalSemaphoreFeatureFlagBits"/> + <type name="VkPhysicalDeviceExternalSemaphoreInfo"/> + <type name="VkExternalSemaphoreProperties"/> + <command name="vkGetPhysicalDeviceExternalSemaphoreProperties"/> + </require> + <require comment="Promoted from VK_KHR_maintenance3"> + <enum extends="VkStructureType" extnumber="169" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"/> + <enum extends="VkStructureType" extnumber="169" offset="1" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"/> + <type name="VkPhysicalDeviceMaintenance3Properties"/> + <type name="VkDescriptorSetLayoutSupport"/> + <command name="vkGetDescriptorSetLayoutSupport"/> + </require> + <require comment="Promoted from VK_KHR_shader_draw_parameters, with a feature support query added"> + <enum extends="VkStructureType" extnumber="64" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"/> + <type name="VkPhysicalDeviceShaderDrawParameterFeatures"/> + </require> + </feature> + + + <extensions comment="Vulkan extension interface definitions"> + <extension name="VK_KHR_surface" number="1" type="instance" author="KHR" contact="James Jones @cubanismo,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="25" name="VK_KHR_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_surface"" name="VK_KHR_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkResult" dir="-" name="VK_ERROR_SURFACE_LOST_KHR"/> + <enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"/> + <enum value="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR" name="VK_COLORSPACE_SRGB_NONLINEAR_KHR"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SURFACE_KHR" comment="VkSurfaceKHR"/> + <command name="vkDestroySurfaceKHR"/> + <command name="vkGetPhysicalDeviceSurfaceSupportKHR"/> + <command name="vkGetPhysicalDeviceSurfaceCapabilitiesKHR"/> + <command name="vkGetPhysicalDeviceSurfaceFormatsKHR"/> + <command name="vkGetPhysicalDeviceSurfacePresentModesKHR"/> + </require> + </extension> + <extension name="VK_KHR_swapchain" number="2" type="device" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="70" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/> + <enum value=""VK_KHR_swapchain"" name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"/> + <enum offset="2" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"/> + <enum offset="3" extends="VkResult" name="VK_SUBOPTIMAL_KHR"/> + <enum offset="4" extends="VkResult" dir="-" name="VK_ERROR_OUT_OF_DATE_KHR"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SWAPCHAIN_KHR" comment="VkSwapchainKHR"/> + <command name="vkCreateSwapchainKHR"/> + <command name="vkDestroySwapchainKHR"/> + <command name="vkGetSwapchainImagesKHR"/> + <command name="vkAcquireNextImageKHR"/> + <command name="vkQueuePresentKHR"/> + </require> + <require feature="VK_VERSION_1_1"> + <comment>This duplicates definitions in VK_KHR_device_group below</comment> + <enum extends="VkStructureType" extnumber="61" offset="7" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/> + <enum extends="VkStructureType" extnumber="61" offset="8" name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"/> + <enum extends="VkStructureType" extnumber="61" offset="9" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"/> + <enum extends="VkStructureType" extnumber="61" offset="10" name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"/> + <enum extends="VkStructureType" extnumber="61" offset="11" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"/> + <enum extends="VkStructureType" extnumber="61" offset="12" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"/> + <enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" comment="Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/> + <type name="VkImageSwapchainCreateInfoKHR"/> + <type name="VkBindImageMemorySwapchainInfoKHR"/> + <type name="VkAcquireNextImageInfoKHR"/> + <type name="VkDeviceGroupPresentModeFlagBitsKHR"/> + <type name="VkDeviceGroupPresentModeFlagsKHR"/> + <type name="VkDeviceGroupPresentCapabilitiesKHR"/> + <type name="VkDeviceGroupPresentInfoKHR"/> + <type name="VkDeviceGroupSwapchainCreateInfoKHR"/> + <command name="vkGetDeviceGroupPresentCapabilitiesKHR"/> + <command name="vkGetDeviceGroupSurfacePresentModesKHR"/> + <command name="vkGetPhysicalDevicePresentRectanglesKHR"/> + <command name="vkAcquireNextImage2KHR"/> + <enum bitpos="1" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR" comment="Swapchain is protected"/> + </require> + </extension> + <extension name="VK_KHR_display" number="3" type="instance" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Norbert Nopper @FslNopper" supported="vulkan"> + <require> + <enum value="21" name="VK_KHR_DISPLAY_SPEC_VERSION"/> + <enum value=""VK_KHR_display"" name="VK_KHR_DISPLAY_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DISPLAY_KHR" comment="VkDisplayKHR"/> + <enum offset="1" extends="VkObjectType" name="VK_OBJECT_TYPE_DISPLAY_MODE_KHR" comment="VkDisplayModeKHR"/> + <type name="VkDisplayPlaneAlphaFlagsKHR"/> + <type name="VkDisplayPlaneAlphaFlagBitsKHR"/> + <type name="VkDisplayPropertiesKHR"/> + <type name="VkDisplayModeParametersKHR"/> + <type name="VkDisplayModePropertiesKHR"/> + <type name="VkDisplayModeCreateInfoKHR"/> + <type name="VkDisplayPlaneCapabilitiesKHR"/> + <type name="VkDisplayPlanePropertiesKHR"/> + <type name="VkDisplaySurfaceCreateInfoKHR"/> + <command name="vkGetPhysicalDeviceDisplayPropertiesKHR"/> + <command name="vkGetPhysicalDeviceDisplayPlanePropertiesKHR"/> + <command name="vkGetDisplayPlaneSupportedDisplaysKHR"/> + <command name="vkGetDisplayModePropertiesKHR"/> + <command name="vkCreateDisplayModeKHR"/> + <command name="vkGetDisplayPlaneCapabilitiesKHR"/> + <command name="vkCreateDisplayPlaneSurfaceKHR"/> + </require> + </extension> + <extension name="VK_KHR_display_swapchain" number="4" type="device" requires="VK_KHR_swapchain,VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="9" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/> + <enum value=""VK_KHR_display_swapchain"" name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"/> + <enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"/> + <type name="VkDisplayPresentInfoKHR"/> + <command name="vkCreateSharedSwapchainsKHR"/> + </require> + </extension> + <extension name="VK_KHR_xlib_surface" number="5" type="instance" requires="VK_KHR_surface" platform="xlib" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="6" name="VK_KHR_XLIB_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_xlib_surface"" name="VK_KHR_XLIB_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"/> + <type name="VkXlibSurfaceCreateFlagsKHR"/> + <type name="VkXlibSurfaceCreateInfoKHR"/> + <command name="vkCreateXlibSurfaceKHR"/> + <command name="vkGetPhysicalDeviceXlibPresentationSupportKHR"/> + </require> + </extension> + <extension name="VK_KHR_xcb_surface" number="6" type="instance" requires="VK_KHR_surface" platform="xcb" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="6" name="VK_KHR_XCB_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_xcb_surface"" name="VK_KHR_XCB_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"/> + <type name="VkXcbSurfaceCreateFlagsKHR"/> + <type name="VkXcbSurfaceCreateInfoKHR"/> + <command name="vkCreateXcbSurfaceKHR"/> + <command name="vkGetPhysicalDeviceXcbPresentationSupportKHR"/> + </require> + </extension> + <extension name="VK_KHR_wayland_surface" number="7" type="instance" requires="VK_KHR_surface" platform="wayland" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="6" name="VK_KHR_WAYLAND_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_wayland_surface"" name="VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"/> + <type name="VkWaylandSurfaceCreateFlagsKHR"/> + <type name="VkWaylandSurfaceCreateInfoKHR"/> + <command name="vkCreateWaylandSurfaceKHR"/> + <command name="vkGetPhysicalDeviceWaylandPresentationSupportKHR"/> + </require> + </extension> + <extension name="VK_KHR_mir_surface" number="8" type="instance" requires="VK_KHR_surface" platform="mir" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="4" name="VK_KHR_MIR_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_mir_surface"" name="VK_KHR_MIR_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"/> + <type name="VkMirSurfaceCreateFlagsKHR"/> + <type name="VkMirSurfaceCreateInfoKHR"/> + <command name="vkCreateMirSurfaceKHR"/> + <command name="vkGetPhysicalDeviceMirPresentationSupportKHR"/> + </require> + </extension> + <extension name="VK_KHR_android_surface" number="9" type="instance" requires="VK_KHR_surface" platform="android" author="KHR" contact="Jesse Hall @jessehall" supported="vulkan"> + <require> + <enum value="6" name="VK_KHR_ANDROID_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_android_surface"" name="VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"/> + <type name="ANativeWindow"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"/> + <type name="VkAndroidSurfaceCreateFlagsKHR"/> + <type name="VkAndroidSurfaceCreateInfoKHR"/> + <command name="vkCreateAndroidSurfaceKHR"/> + </require> + </extension> + <extension name="VK_KHR_win32_surface" number="10" type="instance" requires="VK_KHR_surface" platform="win32" author="KHR" contact="Jesse Hall @jessehall,Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="6" name="VK_KHR_WIN32_SURFACE_SPEC_VERSION"/> + <enum value=""VK_KHR_win32_surface"" name="VK_KHR_WIN32_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"/> + <type name="VkWin32SurfaceCreateFlagsKHR"/> + <type name="VkWin32SurfaceCreateInfoKHR"/> + <command name="vkCreateWin32SurfaceKHR"/> + <command name="vkGetPhysicalDeviceWin32PresentationSupportKHR"/> + </require> + </extension> + <extension name="VK_ANDROID_native_buffer" number="11" type="device" author="ANDROID" platform="android" contact="Jesse Hall @jessehall" supported="disabled"> + <require> + <enum value="5" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/> + <enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/> + <enum value=""VK_ANDROID_native_buffer"" name="VK_ANDROID_NATIVE_BUFFER_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"/> + <type name="VkNativeBufferANDROID"/> + <command name="vkGetSwapchainGrallocUsageANDROID"/> + <command name="vkAcquireImageANDROID"/> + <command name="vkQueueSignalReleaseImageANDROID"/> + </require> + </extension> + <extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney" supported="vulkan"> + <require> + <enum value="9" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/> + <enum value=""VK_EXT_debug_report"" name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"/> + <enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_VALIDATION_FAILED_EXT"/> + <enum value="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT" comment="VkDebugReportCallbackEXT"/> + <enum value="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT"/> + <type name="VkDebugReportObjectTypeEXT"/> + <type name="VkDebugReportCallbackCreateInfoEXT"/> + <command name="vkCreateDebugReportCallbackEXT"/> + <command name="vkDestroyDebugReportCallbackEXT"/> + <command name="vkDebugReportMessageEXT"/> + </require> + <require feature="VK_VERSION_1_1"> + <comment>This duplicates definitions in other extensions, below</comment> + <enum extends="VkDebugReportObjectTypeEXT" extnumber="157" offset="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/> + <enum extends="VkDebugReportObjectTypeEXT" extnumber="86" offset="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"/> + </require> + </extension> + <extension name="VK_NV_glsl_shader" number="13" type="device" author="NV" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_GLSL_SHADER_SPEC_VERSION"/> + <enum value=""VK_NV_glsl_shader"" name="VK_NV_GLSL_SHADER_EXTENSION_NAME"/> + <enum offset="0" extends="VkResult" dir="-" name="VK_ERROR_INVALID_SHADER_NV"/> + </require> + </extension> + <extension name="VK_EXT_depth_range_unrestricted" type="device" number="14" author="NV" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION"/> + <enum value=""VK_EXT_depth_range_unrestricted"" name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_sampler_mirror_clamp_to_edge" type="device" number="15" author="KHR" contact="Tobias Hector @tobias" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/> + <enum value=""VK_KHR_sampler_mirror_clamp_to_edge"" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME"/> + <enum value="4" extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Note that this defines what was previously a core enum, and so uses the 'value' attribute rather than 'offset', and does not have a suffix. This is a special case, and should not be repeated"/> + </require> + </extension> + <extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobias" supported="vulkan"> + <require> + <enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/> + <enum value=""VK_IMG_filter_cubic"" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/> + <enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/> + <enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/> + </require> + </extension> + <extension name="VK_AMD_extension_17" number="17" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_17_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_17"" name="VK_AMD_EXTENSION_17_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_18" number="18" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_18_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_18"" name="VK_AMD_EXTENSION_18_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_rasterization_order" number="19" type="device" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION"/> + <enum value=""VK_AMD_rasterization_order"" name="VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"/> + <type name="VkRasterizationOrderAMD"/> + <type name="VkPipelineRasterizationStateRasterizationOrderAMD"/> + </require> + </extension> + <extension name="VK_AMD_extension_20" number="20" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_20_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_20"" name="VK_AMD_EXTENSION_20_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_shader_trinary_minmax" number="21" type="device" author="AMD" contact="[email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_trinary_minmax"" name="VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_shader_explicit_vertex_parameter" number="22" type="device" author="AMD" contact="[email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_explicit_vertex_parameter"" name="VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_debug_marker" number="23" type="device" requires="VK_EXT_debug_report" author="Baldur Karlsson" contact="[email protected]" supported="vulkan"> + <require> + <enum value="4" name="VK_EXT_DEBUG_MARKER_SPEC_VERSION"/> + <enum value=""VK_EXT_debug_marker"" name="VK_EXT_DEBUG_MARKER_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"/> + <type name="VkDebugReportObjectTypeEXT"/> + <type name="VkDebugMarkerObjectNameInfoEXT"/> + <type name="VkDebugMarkerObjectTagInfoEXT"/> + <type name="VkDebugMarkerMarkerInfoEXT"/> + <command name="vkDebugMarkerSetObjectTagEXT"/> + <command name="vkDebugMarkerSetObjectNameEXT"/> + <command name="vkCmdDebugMarkerBeginEXT"/> + <command name="vkCmdDebugMarkerEndEXT"/> + <command name="vkCmdDebugMarkerInsertEXT"/> + </require> + </extension> + <extension name="VK_AMD_extension_24" number="24" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_24_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_24"" name="VK_AMD_EXTENSION_24_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_25" number="25" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_25_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_25"" name="VK_AMD_EXTENSION_25_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_gcn_shader" number="26" type="device" author="AMD" contact="[email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_GCN_SHADER_SPEC_VERSION"/> + <enum value=""VK_AMD_gcn_shader"" name="VK_AMD_GCN_SHADER_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_dedicated_allocation" number="27" type="device" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION"/> + <enum value=""VK_NV_dedicated_allocation"" name="VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"/> + <type name="VkDedicatedAllocationImageCreateInfoNV"/> + <type name="VkDedicatedAllocationBufferCreateInfoNV"/> + <type name="VkDedicatedAllocationMemoryAllocateInfoNV"/> + </require> + </extension> + <extension name="VK_EXT_extension_28" number="28" author="NV" contact="Piers Daniell @pdaniell" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_28_SPEC_VERSION"/> + <enum value=""VK_NV_extension_28"" name="VK_EXT_EXTENSION_28_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_extension_29" number="29" author="NVX" contact="Jeff Juliano @jjuliano" supported="disabled"> + <require> + <enum value="0" name="VK_NVX_EXTENSION_29_SPEC_VERSION"/> + <enum value=""VK_NVX_extension_29"" name="VK_NVX_EXTENSION_29_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_extension_30" number="30" author="NVX" contact="Jeff Juliano @jjuliano" supported="disabled"> + <require> + <enum value="0" name="VK_NVX_EXTENSION_30_SPEC_VERSION"/> + <enum value=""VK_NVX_extension_30"" name="VK_NVX_EXTENSION_30_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_extension_31" number="31" author="NVX" contact="Jeff Juliano @jjuliano" supported="disabled"> + <require> + <enum value="0" name="VK_NVX_EXTENSION_31_SPEC_VERSION"/> + <enum value=""VK_NVX_extension_31"" name="VK_NVX_EXTENSION_31_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_32" number="32" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_32_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_32"" name="VK_AMD_EXTENSION_32_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_33" number="33" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_33_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_33"" name="VK_AMD_EXTENSION_33_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_draw_indirect_count" number="34" type="device" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/> + <enum value=""VK_AMD_draw_indirect_count"" name="VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/> + <command name="vkCmdDrawIndirectCountAMD"/> + <command name="vkCmdDrawIndexedIndirectCountAMD"/> + </require> + </extension> + <extension name="VK_AMD_extension_35" number="35" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_35_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_35"" name="VK_AMD_EXTENSION_35_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_negative_viewport_height" number="36" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION"/> + <enum value=""VK_AMD_negative_viewport_height"" name="VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_gpu_shader_half_float" number="37" type="device" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION"/> + <enum value=""VK_AMD_gpu_shader_half_float"" name="VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_shader_ballot" number="38" type="device" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_SHADER_BALLOT_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_ballot"" name="VK_AMD_SHADER_BALLOT_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_39" number="39" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_39_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_39"" name="VK_AMD_EXTENSION_39_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_40" number="40" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_40_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_40"" name="VK_AMD_EXTENSION_40_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_41" number="41" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_41_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_41"" name="VK_AMD_EXTENSION_41_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_texture_gather_bias_lod" number="42" author="AMD" contact="Rex Xu @amdrexu" supported="vulkan" type="device" requires="VK_KHR_get_physical_device_properties2"> + <require> + <enum value="1" name="VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION"/> + <enum value=""VK_AMD_texture_gather_bias_lod"" name="VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"/> + <type name="VkTextureLODGatherFormatPropertiesAMD"/> + </require> + </extension> + <extension name="VK_AMD_shader_info" number="43" author="AMD" contact="Jaakko Konttinen @jaakko" supported="vulkan" type="device"> + <require> + <enum value="1" name="VK_AMD_SHADER_INFO_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_info"" name="VK_AMD_SHADER_INFO_EXTENSION_NAME"/> + <type name="VkShaderInfoTypeAMD"/> + <type name="VkShaderResourceUsageAMD"/> + <type name="VkShaderStatisticsInfoAMD"/> + <command name="vkGetShaderInfoAMD"/> + </require> + </extension> + <extension name="VK_AMD_extension_44" number="44" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_44_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_44"" name="VK_AMD_EXTENSION_44_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_45" number="45" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_45_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_45"" name="VK_AMD_EXTENSION_45_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_46" number="46" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_46_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_46"" name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_shader_image_load_store_lod" number="47" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan" type="device"> + <require> + <enum value="1" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_image_load_store_lod"" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled"> + <require> + <enum value="0" name="VK_NVX_EXTENSION_48_SPEC_VERSION"/> + <enum value=""VK_NVX_extension_48"" name="VK_NVX_EXTENSION_48_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_49" number="49" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_49_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_49"" name="VK_GOOGLE_EXTENSION_49_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_50" number="50" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_50_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_50"" name="VK_GOOGLE_EXTENSION_50_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_extension_51" number="51" author="NVX" contact="James Jones @cubanismo" supported="disabled"> + <require> + <enum value="0" name="VK_NVX_EXTENSION_51_SPEC_VERSION"/> + <enum value=""VK_NVX_extension_51"" name="VK_NVX_EXTENSION_51_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_extension_52" number="52" author="NVX" contact="James Jones @cubanismo" supported="disabled"> + <require> + <enum value="0" name="VK_NVX_EXTENSION_52_SPEC_VERSION"/> + <enum value=""VK_NVX_extension_52"" name="VK_NVX_EXTENSION_52_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_53" number="53" author="NV" contact="Jeff Bolz @jbolz" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_53_SPEC_VERSION"/> + <enum value=""VK_NV_extension_53"" name="VK_NV_EXTENSION_53_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_multiview" number="54" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_MULTIVIEW_SPEC_VERSION"/> + <enum value=""VK_KHR_multiview"" name="VK_KHR_MULTIVIEW_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"/> + <enum extends="VkDependencyFlagBits" name="VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR" alias="VK_DEPENDENCY_VIEW_LOCAL_BIT"/> + <type name="VkRenderPassMultiviewCreateInfoKHR"/> + <type name="VkPhysicalDeviceMultiviewFeaturesKHR"/> + <type name="VkPhysicalDeviceMultiviewPropertiesKHR"/> + </require> + </extension> + <extension name="VK_IMG_format_pvrtc" number="55" type="device" author="IMG" contact="Tobias Hector @tobias" supported="vulkan"> + <require> + <enum value="1" name="VK_IMG_FORMAT_PVRTC_SPEC_VERSION"/> + <enum value=""VK_IMG_format_pvrtc"" name="VK_IMG_FORMAT_PVRTC_EXTENSION_NAME"/> + <enum offset="0" extends="VkFormat" name="VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"/> + <enum offset="1" extends="VkFormat" name="VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"/> + <enum offset="2" extends="VkFormat" name="VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"/> + <enum offset="3" extends="VkFormat" name="VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"/> + <enum offset="4" extends="VkFormat" name="VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"/> + <enum offset="5" extends="VkFormat" name="VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"/> + <enum offset="6" extends="VkFormat" name="VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"/> + <enum offset="7" extends="VkFormat" name="VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"/> + </require> + </extension> + <extension name="VK_NV_external_memory_capabilities" number="56" type="instance" author="NV" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"/> + <enum value=""VK_NV_external_memory_capabilities"" name="VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"/> + <type name="VkExternalMemoryHandleTypeFlagsNV"/> + <type name="VkExternalMemoryHandleTypeFlagBitsNV"/> + <type name="VkExternalMemoryFeatureFlagsNV"/> + <type name="VkExternalMemoryFeatureFlagBitsNV"/> + <type name="VkExternalImageFormatPropertiesNV"/> + <command name="vkGetPhysicalDeviceExternalImageFormatPropertiesNV"/> + </require> + </extension> + <extension name="VK_NV_external_memory" number="57" type="device" requires="VK_NV_external_memory_capabilities" author="NV" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_EXTERNAL_MEMORY_SPEC_VERSION"/> + <enum value=""VK_NV_external_memory"" name="VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"/> + <type name="VkExternalMemoryImageCreateInfoNV"/> + <type name="VkExportMemoryAllocateInfoNV"/> + </require> + </extension> + <extension name="VK_NV_external_memory_win32" number="58" type="device" requires="VK_NV_external_memory" author="NV" contact="James Jones @cubanismo" platform="win32" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/> + <enum value=""VK_NV_external_memory_win32"" name="VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"/> + <type name="VkImportMemoryWin32HandleInfoNV"/> + <type name="VkExportMemoryWin32HandleInfoNV"/> + <command name="vkGetMemoryWin32HandleNV"/> + </require> + </extension> + <extension name="VK_NV_win32_keyed_mutex" number="59" type="device" requires="VK_NV_external_memory_win32" author="NV" contact="Carsten Rohde" platform="win32" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/> + <enum value=""VK_NV_win32_keyed_mutex"" name="VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"/> + <type name="VkWin32KeyedMutexAcquireReleaseInfoNV"/> + </require> + </extension> + <extension name="VK_KHR_get_physical_device_properties2" number="60" type="instance" author="KHR" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/> + <enum value=""VK_KHR_get_physical_device_properties2"" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/> + <type name="VkPhysicalDeviceFeatures2KHR"/> + <type name="VkPhysicalDeviceProperties2KHR"/> + <type name="VkFormatProperties2KHR"/> + <type name="VkImageFormatProperties2KHR"/> + <type name="VkPhysicalDeviceImageFormatInfo2KHR"/> + <type name="VkQueueFamilyProperties2KHR"/> + <type name="VkPhysicalDeviceMemoryProperties2KHR"/> + <type name="VkSparseImageFormatProperties2KHR"/> + <type name="VkPhysicalDeviceSparseImageFormatInfo2KHR"/> + <command name="vkGetPhysicalDeviceFeatures2KHR"/> + <command name="vkGetPhysicalDeviceProperties2KHR"/> + <command name="vkGetPhysicalDeviceFormatProperties2KHR"/> + <command name="vkGetPhysicalDeviceImageFormatProperties2KHR"/> + <command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR"/> + <command name="vkGetPhysicalDeviceMemoryProperties2KHR"/> + <command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR"/> + </require> + </extension> + <extension name="VK_KHR_device_group" number="61" type="device" author="KHR" requires="VK_KHR_device_group_creation" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="3" name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/> + <enum value=""VK_KHR_device_group"" name="VK_KHR_DEVICE_GROUP_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/> + <type name="VkPeerMemoryFeatureFlagsKHR"/> + <type name="VkPeerMemoryFeatureFlagBitsKHR"/> + <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"/> + <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"/> + <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"/> + <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"/> + <type name="VkMemoryAllocateFlagsKHR"/> + <type name="VkMemoryAllocateFlagBitsKHR"/> + <enum extends="VkMemoryAllocateFlagBits" name="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"/> + <type name="VkMemoryAllocateFlagsInfoKHR"/> + <type name="VkDeviceGroupRenderPassBeginInfoKHR"/> + <type name="VkDeviceGroupCommandBufferBeginInfoKHR"/> + <type name="VkDeviceGroupSubmitInfoKHR"/> + <type name="VkDeviceGroupBindSparseInfoKHR"/> + <command name="vkGetDeviceGroupPeerMemoryFeaturesKHR"/> + <command name="vkCmdSetDeviceMaskKHR"/> + <command name="vkCmdDispatchBaseKHR"/> + <enum extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR" alias="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"/> + <enum extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DISPATCH_BASE_KHR" alias="VK_PIPELINE_CREATE_DISPATCH_BASE"/> + <enum extends="VkDependencyFlagBits" name="VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR" alias="VK_DEPENDENCY_DEVICE_GROUP_BIT"/> + </require> + <require extension="VK_KHR_bind_memory2"> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"/> + <type name="VkBindBufferMemoryDeviceGroupInfoKHR"/> + <type name="VkBindImageMemoryDeviceGroupInfoKHR"/> + <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" alias="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/> + </require> + <require extension="VK_KHR_surface"> + <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/> + <type name="VkDeviceGroupPresentModeFlagBitsKHR"/> + <type name="VkDeviceGroupPresentModeFlagsKHR"/> + <type name="VkDeviceGroupPresentCapabilitiesKHR"/> + <command name="vkGetDeviceGroupPresentCapabilitiesKHR"/> + <command name="vkGetDeviceGroupSurfacePresentModesKHR"/> + <command name="vkGetPhysicalDevicePresentRectanglesKHR"/> + </require> + <require extension="VK_KHR_swapchain"> + <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"/> + <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"/> + <enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"/> + <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"/> + <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"/> + <enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" comment="Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/> + <type name="VkImageSwapchainCreateInfoKHR"/> + <type name="VkBindImageMemorySwapchainInfoKHR"/> + <type name="VkAcquireNextImageInfoKHR"/> + <type name="VkDeviceGroupPresentInfoKHR"/> + <type name="VkDeviceGroupSwapchainCreateInfoKHR"/> + <command name="vkAcquireNextImage2KHR"/> + </require> + </extension> + <extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_VALIDATION_FLAGS_SPEC_VERSION"/> + <enum value=""VK_EXT_validation_flags"" name="VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"/> + <type name="VkValidationFlagsEXT"/> + </require> + </extension> + <extension name="VK_NN_vi_surface" number="63" type="instance" author="NN" contact="Mathias Heyer @mheyer" requires="VK_KHR_surface" platform="vi" supported="vulkan"> + <require> + <enum value="1" name="VK_NN_VI_SURFACE_SPEC_VERSION"/> + <enum value=""VK_NN_vi_surface"" name="VK_NN_VI_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"/> + <type name="VkViSurfaceCreateFlagsNN"/> + <type name="VkViSurfaceCreateInfoNN"/> + <command name="vkCreateViSurfaceNN"/> + </require> + </extension> + <extension name="VK_KHR_shader_draw_parameters" number="64" type="device" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION"/> + <enum value=""VK_KHR_shader_draw_parameters"" name="VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_shader_subgroup_ballot" number="65" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION"/> + <enum value=""VK_EXT_shader_subgroup_ballot"" name="VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_shader_subgroup_vote" number="66" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION"/> + <enum value=""VK_EXT_shader_subgroup_vote"" name="VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_ARM_extension_01" number="67" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharald" supported="disabled"> + <require> + <enum value="0" name="VK_ARM_EXTENSION_01_SPEC_VERSION"/> + <enum value=""VK_ARM_extension_01"" name="VK_ARM_EXTENSION_01_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_ARM_extension_02" number="68" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharald" supported="disabled"> + <require> + <enum value="0" name="VK_ARM_EXTENSION_02_SPEC_VERSION"/> + <enum value=""VK_ARM_extension_02"" name="VK_ARM_EXTENSION_02_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_IMG_extension_69" number="69" type="device" author="IMG" contact="Tobias Hector @tobias" supported="disabled"> + <require> + <enum value="0" name="VK_IMG_EXTENSION_69_SPEC_VERSION"/> + <enum value=""VK_IMG_extension_69"" name="VK_IMG_EXTENSION_69_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_maintenance1" number="70" type="device" author="KHR" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="2" name="VK_KHR_MAINTENANCE1_SPEC_VERSION"/> + <enum value=""VK_KHR_maintenance1"" name="VK_KHR_MAINTENANCE1_EXTENSION_NAME"/> + <enum extends="VkResult" name="VK_ERROR_OUT_OF_POOL_MEMORY_KHR" alias="VK_ERROR_OUT_OF_POOL_MEMORY"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR" alias="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR" alias="VK_FORMAT_FEATURE_TRANSFER_DST_BIT"/> + <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR" alias="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"/> + <type name="VkCommandPoolTrimFlagsKHR"/> + <command name="vkTrimCommandPoolKHR"/> + </require> + </extension> + <extension name="VK_KHR_device_group_creation" number="71" type="instance" author="KHR" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION"/> + <enum value=""VK_KHR_device_group_creation"" name="VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"/> + <enum name="VK_MAX_DEVICE_GROUP_SIZE_KHR"/> + <type name="VkPhysicalDeviceGroupPropertiesKHR"/> + <type name="VkDeviceGroupDeviceCreateInfoKHR"/> + <command name="vkEnumeratePhysicalDeviceGroupsKHR"/> + <enum extends="VkMemoryHeapFlagBits" name="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR" alias="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"/> + </require> + </extension> + <extension name="VK_KHR_external_memory_capabilities" number="72" type="instance" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"/> + <enum value=""VK_KHR_external_memory_capabilities"" name="VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/> + <enum name="VK_LUID_SIZE_KHR"/> + <type name="VkExternalMemoryHandleTypeFlagsKHR"/> + <type name="VkExternalMemoryHandleTypeFlagBitsKHR"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"/> + <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"/> + <type name="VkExternalMemoryFeatureFlagsKHR"/> + <type name="VkExternalMemoryFeatureFlagBitsKHR"/> + <enum extends="VkExternalMemoryFeatureFlagBits" name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"/> + <enum extends="VkExternalMemoryFeatureFlagBits" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"/> + <enum extends="VkExternalMemoryFeatureFlagBits" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"/> + <type name="VkExternalMemoryPropertiesKHR"/> + <type name="VkPhysicalDeviceExternalImageFormatInfoKHR"/> + <type name="VkExternalImageFormatPropertiesKHR"/> + <type name="VkPhysicalDeviceExternalBufferInfoKHR"/> + <type name="VkExternalBufferPropertiesKHR"/> + <type name="VkPhysicalDeviceIDPropertiesKHR"/> + <command name="vkGetPhysicalDeviceExternalBufferPropertiesKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_memory" number="73" type="device" requires="VK_KHR_external_memory_capabilities" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION"/> + <enum value=""VK_KHR_external_memory"" name="VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"/> + <enum extends="VkResult" name="VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR" alias="VK_ERROR_INVALID_EXTERNAL_HANDLE"/> + <enum name="VK_QUEUE_FAMILY_EXTERNAL_KHR"/> + <type name="VkExternalMemoryImageCreateInfoKHR"/> + <type name="VkExternalMemoryBufferCreateInfoKHR"/> + <type name="VkExportMemoryAllocateInfoKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_memory_win32" number="74" type="device" requires="VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" platform="win32" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/> + <enum value=""VK_KHR_external_memory_win32"" name="VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"/> + <type name="VkImportMemoryWin32HandleInfoKHR"/> + <type name="VkExportMemoryWin32HandleInfoKHR"/> + <type name="VkMemoryWin32HandlePropertiesKHR"/> + <type name="VkMemoryGetWin32HandleInfoKHR"/> + <command name="vkGetMemoryWin32HandleKHR"/> + <command name="vkGetMemoryWin32HandlePropertiesKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_memory_fd" number="75" type="device" requires="VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION"/> + <enum value=""VK_KHR_external_memory_fd"" name="VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"/> + <type name="VkImportMemoryFdInfoKHR"/> + <type name="VkMemoryFdPropertiesKHR"/> + <type name="VkMemoryGetFdInfoKHR"/> + <command name="vkGetMemoryFdKHR"/> + <command name="vkGetMemoryFdPropertiesKHR"/> + </require> + </extension> + <extension name="VK_KHR_win32_keyed_mutex" number="76" type="device" requires="VK_KHR_external_memory_win32" author="KHR" contact="Carsten Rohde" platform="win32" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"/> + <enum value=""VK_KHR_win32_keyed_mutex"" name="VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"/> + <type name="VkWin32KeyedMutexAcquireReleaseInfoKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_semaphore_capabilities" number="77" type="instance" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION"/> + <enum value=""VK_KHR_external_semaphore_capabilities"" name="VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"/> + <enum name="VK_LUID_SIZE_KHR"/> + <type name="VkExternalSemaphoreHandleTypeFlagsKHR"/> + <type name="VkExternalSemaphoreHandleTypeFlagBitsKHR"/> + <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"/> + <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/> + <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/> + <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/> + <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"/> + <type name="VkExternalSemaphoreFeatureFlagsKHR"/> + <type name="VkExternalSemaphoreFeatureFlagBitsKHR"/> + <enum extends="VkExternalSemaphoreFeatureFlagBits" name="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"/> + <enum extends="VkExternalSemaphoreFeatureFlagBits" name="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"/> + <type name="VkPhysicalDeviceExternalSemaphoreInfoKHR"/> + <type name="VkExternalSemaphorePropertiesKHR"/> + <type name="VkPhysicalDeviceIDPropertiesKHR"/> + <command name="vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_semaphore" number="78" type="device" requires="VK_KHR_external_semaphore_capabilities" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION"/> + <enum value=""VK_KHR_external_semaphore"" name="VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"/> + <type name="VkSemaphoreImportFlagsKHR"/> + <type name="VkSemaphoreImportFlagBitsKHR"/> + <enum extends="VkSemaphoreImportFlagBits" name="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR" alias="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"/> + <type name="VkExportSemaphoreCreateInfoKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_semaphore_win32" number="79" type="device" requires="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" platform="win32" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION"/> + <enum value=""VK_KHR_external_semaphore_win32"" name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"/> + <type name="VkImportSemaphoreWin32HandleInfoKHR"/> + <type name="VkExportSemaphoreWin32HandleInfoKHR"/> + <type name="VkD3D12FenceSubmitInfoKHR"/> + <type name="VkSemaphoreGetWin32HandleInfoKHR"/> + <command name="vkImportSemaphoreWin32HandleKHR"/> + <command name="vkGetSemaphoreWin32HandleKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_semaphore_fd" number="80" type="device" requires="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION"/> + <enum value=""VK_KHR_external_semaphore_fd"" name="VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"/> + <type name="VkImportSemaphoreFdInfoKHR"/> + <type name="VkSemaphoreGetFdInfoKHR"/> + <command name="vkImportSemaphoreFdKHR"/> + <command name="vkGetSemaphoreFdKHR"/> + </require> + </extension> + <extension name="VK_KHR_push_descriptor" number="81" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="2" name="VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION"/> + <enum value=""VK_KHR_push_descriptor"" name="VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"/> + <enum bitpos="0" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR" comment="Descriptors are pushed via flink:vkCmdPushDescriptorSetKHR"/> + <command name="vkCmdPushDescriptorSetKHR"/> + <type name="VkPhysicalDevicePushDescriptorPropertiesKHR"/> + </require> + <require feature="VK_VERSION_1_1"> + <command name="vkCmdPushDescriptorSetWithTemplateKHR"/> + <enum value="1" extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/> + </require> + </extension> + <extension name="VK_EXT_extension_82" number="82" type="device" author="EXT" contact="Piers Daniell @pdaniell" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_82_SPEC_VERSION"/> + <enum value=""VK_EXT_extension_82"" name="VK_EXT_EXTENSION_82_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_extension_83" number="83" author="KHR" contact="Jan-Harald Fredriksen @janharald" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_83_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_83"" name="VK_KHR_EXTENSION_83_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_16bit_storage" number="84" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" author="KHR" contact="Jan-Harald Fredriksen @janharald" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_16BIT_STORAGE_SPEC_VERSION"/> + <enum value=""VK_KHR_16bit_storage"" name="VK_KHR_16BIT_STORAGE_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"/> + <type name="VkPhysicalDevice16BitStorageFeaturesKHR"/> + </require> + </extension> + <extension name="VK_KHR_incremental_present" number="85" type="device" author="KHR" requires="VK_KHR_swapchain" contact="Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION"/> + <enum value=""VK_KHR_incremental_present"" name="VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"/> + <type name="VkPresentRegionsKHR"/> + <type name="VkPresentRegionKHR"/> + <type name="VkRectLayerKHR"/> + </require> + </extension> + <extension name="VK_KHR_descriptor_update_template" number="86" type="device" author="KHR" contact="Markus Tavenrath @mtavenrath" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION"/> + <enum value=""VK_KHR_descriptor_update_template"" name="VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/> + <enum extends="VkObjectType" name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR" alias="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/> + <command name="vkCreateDescriptorUpdateTemplateKHR"/> + <command name="vkDestroyDescriptorUpdateTemplateKHR"/> + <command name="vkUpdateDescriptorSetWithTemplateKHR"/> + <type name="VkDescriptorUpdateTemplateKHR"/> + <type name="VkDescriptorUpdateTemplateCreateFlagsKHR"/> + <type name="VkDescriptorUpdateTemplateTypeKHR"/> + <type name="VkDescriptorUpdateTemplateEntryKHR"/> + <type name="VkDescriptorUpdateTemplateCreateInfoKHR"/> + <enum extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR" alias="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"/> + </require> + <require extension="VK_KHR_push_descriptor"> + <command name="vkCmdPushDescriptorSetWithTemplateKHR"/> + <enum value="1" extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/> + </require> + <require extension="VK_EXT_debug_report"> + <enum extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"/> + </require> + </extension> + <extension name="VK_NVX_device_generated_commands" number="87" type="device" author="NVX" contact="Christoph Kubisch @pixeljetstream" supported="vulkan"> + <require> + <enum value="3" name="VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/> + <enum value=""VK_NVX_device_generated_commands"" name="VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"/> + <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"/> + <enum bitpos="17" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"/> + <enum bitpos="17" extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"/> + <enum bitpos="18" extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_OBJECT_TABLE_NVX" comment="VkobjectTableNVX"/> + <enum offset="1" extends="VkObjectType" name="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX" comment="VkIndirectCommandsLayoutNVX"/> + <type name="VkObjectTableNVX"/> + <type name="VkIndirectCommandsLayoutNVX"/> + <type name="VkIndirectCommandsLayoutUsageFlagsNVX"/> + <type name="VkObjectEntryUsageFlagsNVX"/> + <type name="VkIndirectCommandsLayoutUsageFlagBitsNVX"/> + <type name="VkIndirectCommandsTokenTypeNVX"/> + <type name="VkObjectEntryUsageFlagBitsNVX"/> + <type name="VkObjectEntryTypeNVX"/> + <type name="VkDeviceGeneratedCommandsFeaturesNVX"/> + <type name="VkDeviceGeneratedCommandsLimitsNVX"/> + <type name="VkIndirectCommandsTokenNVX"/> + <type name="VkIndirectCommandsLayoutTokenNVX"/> + <type name="VkIndirectCommandsLayoutCreateInfoNVX"/> + <type name="VkCmdProcessCommandsInfoNVX"/> + <type name="VkCmdReserveSpaceForCommandsInfoNVX"/> + <type name="VkObjectTableCreateInfoNVX"/> + <type name="VkObjectTableEntryNVX"/> + <type name="VkObjectTablePipelineEntryNVX"/> + <type name="VkObjectTableDescriptorSetEntryNVX"/> + <type name="VkObjectTableVertexBufferEntryNVX"/> + <type name="VkObjectTableIndexBufferEntryNVX"/> + <type name="VkObjectTablePushConstantEntryNVX"/> + <command name="vkCmdProcessCommandsNVX"/> + <command name="vkCmdReserveSpaceForCommandsNVX"/> + <command name="vkCreateIndirectCommandsLayoutNVX"/> + <command name="vkDestroyIndirectCommandsLayoutNVX"/> + <command name="vkCreateObjectTableNVX"/> + <command name="vkDestroyObjectTableNVX"/> + <command name="vkRegisterObjectsNVX"/> + <command name="vkUnregisterObjectsNVX"/> + <command name="vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"/> + </require> + </extension> + <extension name="VK_NV_clip_space_w_scaling" number="88" type="device" author="NV" contact="Eric Werness @ewerness" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION"/> + <enum value=""VK_NV_clip_space_w_scaling"" name="VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"/> + <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"/> + <type name="VkViewportWScalingNV"/> + <type name="VkPipelineViewportWScalingStateCreateInfoNV"/> + <command name="vkCmdSetViewportWScalingNV"/> + </require> + </extension> + <extension name="VK_EXT_direct_mode_display" number="89" type="instance" requires="VK_KHR_display" author="NV" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION"/> + <enum value=""VK_EXT_direct_mode_display"" name="VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME"/> + <command name="vkReleaseDisplayEXT"/> + </require> + </extension> + <extension name="VK_EXT_acquire_xlib_display" number="90" type="instance" requires="VK_EXT_direct_mode_display" author="NV" contact="James Jones @cubanismo" platform="xlib_xrandr" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"/> + <enum value=""VK_EXT_acquire_xlib_display"" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"/> + <command name="vkAcquireXlibDisplayEXT"/> + <command name="vkGetRandROutputDisplayEXT"/> + </require> + </extension> + <extension name="VK_EXT_display_surface_counter" number="91" type="instance" requires="VK_KHR_display" author="NV" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"/> + <enum value=""VK_EXT_display_surface_counter"" name="VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"/> + <enum value="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT"/> + <type name="VkSurfaceCounterFlagsEXT"/> + <type name="VkSurfaceCounterFlagBitsEXT"/> + <type name="VkSurfaceCapabilities2EXT"/> + <command name="vkGetPhysicalDeviceSurfaceCapabilities2EXT"/> + </require> + </extension> + <extension name="VK_EXT_display_control" number="92" type="device" requires="VK_EXT_display_surface_counter,VK_KHR_swapchain" author="NV" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"/> + <enum value=""VK_EXT_display_control"" name="VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"/> + <type name="VkDisplayPowerStateEXT"/> + <type name="VkDeviceEventTypeEXT"/> + <type name="VkDisplayEventTypeEXT"/> + <type name="VkDisplayPowerInfoEXT"/> + <type name="VkDeviceEventInfoEXT"/> + <type name="VkDisplayEventInfoEXT"/> + <type name="VkSwapchainCounterCreateInfoEXT"/> + <command name="vkDisplayPowerControlEXT"/> + <command name="vkRegisterDeviceEventEXT"/> + <command name="vkRegisterDisplayEventEXT"/> + <command name="vkGetSwapchainCounterEXT"/> + </require> + </extension> + <extension name="VK_GOOGLE_display_timing" number="93" type="device" author="GOOGLE" requires="VK_KHR_swapchain" contact="Ian Elliott [email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_display_timing"" name="VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"/> + <type name="VkRefreshCycleDurationGOOGLE"/> + <type name="VkPastPresentationTimingGOOGLE"/> + <type name="VkPresentTimesInfoGOOGLE"/> + <type name="VkPresentTimeGOOGLE"/> + <command name="vkGetRefreshCycleDurationGOOGLE"/> + <command name="vkGetPastPresentationTimingGOOGLE"/> + </require> + </extension> + <extension name="RESERVED_DO_NOT_USE_94" number="94" supported="disabled" comment="Used for functionality subsumed into Vulkan 1.1 and not published as an extension"> + </extension> + <extension name="VK_NV_sample_mask_override_coverage" number="95" type="device" author="NV" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION"/> + <enum value=""VK_NV_sample_mask_override_coverage"" name="VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME"/> + <comment> + enum offset=0 was mistakenly used for the 1.1 core enum + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES + (value=1000094000). Fortunately, no conflict resulted. + </comment> + </require> + </extension> + <extension name="VK_NV_geometry_shader_passthrough" number="96" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION"/> + <enum value=""VK_NV_geometry_shader_passthrough"" name="VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_viewport_array2" number="97" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION"/> + <enum value=""VK_NV_viewport_array2"" name="VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NVX_multiview_per_view_attributes" number="98" type="device" requires="VK_KHR_multiview" author="NVX" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"/> + <enum value=""VK_NVX_multiview_per_view_attributes"" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"/> + <enum bitpos="0" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"/> + <enum bitpos="1" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"/> + <type name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"/> + </require> + </extension> + <extension name="VK_NV_viewport_swizzle" number="99" type="device" author="NV" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION"/> + <enum value=""VK_NV_viewport_swizzle"" name="VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"/> + <type name="VkViewportSwizzleNV"/> + <type name="VkViewportCoordinateSwizzleNV"/> + <type name="VkPipelineViewportSwizzleStateCreateInfoNV"/> + <type name="VkPipelineViewportSwizzleStateCreateFlagsNV"/> + </require> + </extension> + <extension name="VK_EXT_discard_rectangles" number="100" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION"/> + <enum value=""VK_EXT_discard_rectangles"" name="VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"/> + <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"/> + <type name="VkPhysicalDeviceDiscardRectanglePropertiesEXT"/> + <type name="VkPipelineDiscardRectangleStateCreateInfoEXT"/> + <type name="VkPipelineDiscardRectangleStateCreateFlagsEXT"/> + <type name="VkDiscardRectangleModeEXT"/> + <command name="vkCmdSetDiscardRectangleEXT"/> + </require> + </extension> + <extension name="VK_NV_extension_101" number="101" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_101_SPEC_VERSION"/> + <enum value=""VK_NV_extension_101"" name="VK_NV_EXTENSION_101_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_conservative_rasterization" number="102" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Piers Daniell @pdaniell" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION"/> + <enum value=""VK_EXT_conservative_rasterization"" name="VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"/> + <type name="VkPhysicalDeviceConservativeRasterizationPropertiesEXT"/> + <type name="VkPipelineRasterizationConservativeStateCreateInfoEXT"/> + <type name="VkPipelineRasterizationConservativeStateCreateFlagsEXT"/> + <type name="VkConservativeRasterizationModeEXT"/> + </require> + </extension> + <extension name="VK_NV_extension_103" number="103" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_103_SPEC_VERSION"/> + <enum value=""VK_NV_extension_103"" name="VK_NV_EXTENSION_103_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_104" number="104" author="NV" contact="Mathias Schott @mschott" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_104_SPEC_VERSION"/> + <enum value=""VK_NV_extension_104"" name="VK_NV_EXTENSION_104_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_swapchain_colorspace" number="105" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" requires="VK_KHR_surface" supported="vulkan"> + <require> + <enum value="3" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"/> + <enum value=""VK_EXT_swapchain_colorspace"" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME"/> + <enum offset="1" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"/> + <enum offset="2" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"/> + <enum offset="3" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"/> + <enum offset="4" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"/> + <enum offset="5" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_LINEAR_EXT"/> + <enum offset="6" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_NONLINEAR_EXT"/> + <enum offset="7" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT2020_LINEAR_EXT"/> + <enum offset="8" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_HDR10_ST2084_EXT"/> + <enum offset="9" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DOLBYVISION_EXT"/> + <enum offset="10" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_HDR10_HLG_EXT"/> + <enum offset="11" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"/> + <enum offset="12" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"/> + <enum offset="13" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_PASS_THROUGH_EXT"/> + <enum offset="14" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"/> + </require> + </extension> + <extension name="VK_EXT_hdr_metadata" number="106" type="device" requires="VK_KHR_swapchain" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/> + <enum value=""VK_EXT_hdr_metadata"" name="VK_EXT_HDR_METADATA_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"/> + <type name="VkHdrMetadataEXT"/> + <type name="VkXYColorEXT"/> + <command name="vkSetHdrMetadataEXT"/> + </require> + </extension> + <extension name="VK_IMG_extension_107" number="107" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled"> + <require> + <enum value="0" name="VK_IMG_EXTENSION_107_SPEC_VERSION"/> + <enum value=""VK_IMG_extension_107"" name="VK_IMG_EXTENSION_107_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_IMG_extension_108" number="108" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled"> + <require> + <enum value="0" name="VK_IMG_EXTENSION_108_SPEC_VERSION"/> + <enum value=""VK_IMG_extension_108"" name="VK_IMG_EXTENSION_108_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_IMG_extension_109" number="109" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled"> + <require> + <enum value="0" name="VK_IMG_EXTENSION_109_SPEC_VERSION"/> + <enum value=""VK_IMG_extension_109"" name="VK_IMG_EXTENSION_109_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_IMG_extension_110" number="110" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled"> + <require> + <enum value="0" name="VK_IMG_EXTENSION_110_SPEC_VERSION"/> + <enum value=""VK_IMG_extension_110"" name="VK_IMG_EXTENSION_110_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_IMG_extension_111" number="111" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled"> + <require> + <enum value="0" name="VK_IMG_EXTENSION_111_SPEC_VERSION"/> + <enum value=""VK_IMG_extension_111"" name="VK_IMG_EXTENSION_111_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_shared_presentable_image" number="112" type="device" requires="VK_KHR_swapchain,VK_KHR_get_physical_device_properties2,VK_KHR_get_surface_capabilities2" author="KHR" contact="Alon Or-bach @alonorbach" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION"/> + <enum value=""VK_KHR_shared_presentable_image"" name="VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"/> + <enum offset="0" extends="VkPresentModeKHR" name="VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"/> + <enum offset="1" extends="VkPresentModeKHR" name="VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"/> + <enum offset="0" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"/> + <type name="VkSharedPresentSurfaceCapabilitiesKHR"/> + <command name="vkGetSwapchainStatusKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_fence_capabilities" number="113" type="instance" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jesse Hall @jessehall" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION"/> + <enum value=""VK_KHR_external_fence_capabilities"" name="VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"/> + <enum name="VK_LUID_SIZE_KHR"/> + <type name="VkExternalFenceHandleTypeFlagsKHR"/> + <type name="VkExternalFenceHandleTypeFlagBitsKHR"/> + <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"/> + <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/> + <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/> + <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"/> + <type name="VkExternalFenceFeatureFlagsKHR"/> + <type name="VkExternalFenceFeatureFlagBitsKHR"/> + <enum extends="VkExternalFenceFeatureFlagBits" name="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"/> + <enum extends="VkExternalFenceFeatureFlagBits" name="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"/> + <type name="VkPhysicalDeviceExternalFenceInfoKHR"/> + <type name="VkExternalFencePropertiesKHR"/> + <type name="VkPhysicalDeviceIDPropertiesKHR"/> + <command name="vkGetPhysicalDeviceExternalFencePropertiesKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_fence" number="114" type="device" requires="VK_KHR_external_fence_capabilities" author="KHR" contact="Jesse Hall @jessehall" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_FENCE_SPEC_VERSION"/> + <enum value=""VK_KHR_external_fence"" name="VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"/> + <type name="VkFenceImportFlagsKHR"/> + <type name="VkFenceImportFlagBitsKHR"/> + <enum extends="VkFenceImportFlagBits" name="VK_FENCE_IMPORT_TEMPORARY_BIT_KHR" alias="VK_FENCE_IMPORT_TEMPORARY_BIT"/> + <type name="VkExportFenceCreateInfoKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_fence_win32" number="115" type="device" requires="VK_KHR_external_fence" author="KHR" contact="Jesse Hall @jessehall" platform="win32" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION"/> + <enum value=""VK_KHR_external_fence_win32"" name="VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"/> + <type name="VkImportFenceWin32HandleInfoKHR"/> + <type name="VkExportFenceWin32HandleInfoKHR"/> + <type name="VkFenceGetWin32HandleInfoKHR"/> + <command name="vkImportFenceWin32HandleKHR"/> + <command name="vkGetFenceWin32HandleKHR"/> + </require> + </extension> + <extension name="VK_KHR_external_fence_fd" number="116" type="device" requires="VK_KHR_external_fence" author="KHR" contact="Jesse Hall @jessehall" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION"/> + <enum value=""VK_KHR_external_fence_fd"" name="VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"/> + <type name="VkImportFenceFdInfoKHR"/> + <type name="VkFenceGetFdInfoKHR"/> + <command name="vkImportFenceFdKHR"/> + <command name="vkGetFenceFdKHR"/> + </require> + </extension> + <extension name="VK_KHR_extension_117" number="117" author="KHR" contact="Kenneth Benzie @kbenzie" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_117_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_117"" name="VK_KHR_EXTENSION_117_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_maintenance2" number="118" type="device" author="KHR" contact="Michael Worcester @michaelworcester" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_MAINTENANCE2_SPEC_VERSION"/> + <enum value=""VK_KHR_maintenance2"" name="VK_KHR_MAINTENANCE2_EXTENSION_NAME"/> + <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR" alias="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"/> + <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR" alias="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"/> + <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"/> + <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"/> + <type name="VkPhysicalDevicePointClippingPropertiesKHR"/> + <type name="VkPointClippingBehaviorKHR"/> + <enum extends="VkPointClippingBehavior" name="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR" alias="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"/> + <enum extends="VkPointClippingBehavior" name="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR" alias="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"/> + <type name="VkRenderPassInputAttachmentAspectCreateInfoKHR"/> + <type name="VkInputAttachmentAspectReferenceKHR"/> + <type name="VkImageViewUsageCreateInfoKHR"/> + <type name="VkTessellationDomainOriginKHR"/> + <enum extends="VkTessellationDomainOrigin" name="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR" alias="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"/> + <enum extends="VkTessellationDomainOrigin" name="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR" alias="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"/> + <type name="VkPipelineTessellationDomainOriginStateCreateInfoKHR"/> + </require> + </extension> + <extension name="VK_KHR_extension_119" number="119" author="KHR" contact="Michael Worcester @michaelworcester" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_119_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_119"" name="VK_KHR_EXTENSION_119_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_get_surface_capabilities2" number="120" type="instance" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION"/> + <enum value=""VK_KHR_get_surface_capabilities2"" name="VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"/> + <type name="VkPhysicalDeviceSurfaceInfo2KHR"/> + <type name="VkSurfaceCapabilities2KHR"/> + <type name="VkSurfaceFormat2KHR"/> + <command name="vkGetPhysicalDeviceSurfaceCapabilities2KHR"/> + <command name="vkGetPhysicalDeviceSurfaceFormats2KHR"/> + </require> + </extension> + <extension name="VK_KHR_variable_pointers" number="121" type="device" author="KHR" contact="Jesse Hall @jessehall" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_VARIABLE_POINTERS_SPEC_VERSION"/> + <enum value=""VK_KHR_variable_pointers"" name="VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"/> + <type name="VkPhysicalDeviceVariablePointerFeaturesKHR"/> + </require> + </extension> + <extension name="VK_KHR_extension_122" number="122" author="KHR" contact="James Jones @cubanismo" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_122_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_122"" name="VK_KHR_EXTENSION_122_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_MVK_ios_surface" number="123" type="instance" requires="VK_KHR_surface" platform="ios" supported="vulkan" author="MVK" contact="Bill Hollings @billhollings"> + <require> + <enum value="2" name="VK_MVK_IOS_SURFACE_SPEC_VERSION"/> + <enum value=""VK_MVK_ios_surface"" name="VK_MVK_IOS_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"/> + <type name="VkIOSSurfaceCreateFlagsMVK"/> + <type name="VkIOSSurfaceCreateInfoMVK"/> + <command name="vkCreateIOSSurfaceMVK"/> + </require> + </extension> + <extension name="VK_MVK_macos_surface" number="124" type="instance" requires="VK_KHR_surface" platform="macos" supported="vulkan" author="MVK" contact="Bill Hollings @billhollings"> + <require> + <enum value="2" name="VK_MVK_MACOS_SURFACE_SPEC_VERSION"/> + <enum value=""VK_MVK_macos_surface"" name="VK_MVK_MACOS_SURFACE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"/> + <type name="VkMacOSSurfaceCreateFlagsMVK"/> + <type name="VkMacOSSurfaceCreateInfoMVK"/> + <command name="vkCreateMacOSSurfaceMVK"/> + </require> + </extension> + <extension name="VK_MVK_moltenvk" number="125" type="instance" author="MVK" contact="Bill Hollings @billhollings" supported="disabled"> + <require> + <enum value="0" name="VK_MVK_MOLTENVK_SPEC_VERSION"/> + <enum value=""VK_MVK_moltenvk"" name="VK_MVK_MOLTENVK_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" requires="VK_KHR_external_memory_fd" author="EXT" contact="Chad Versace @chadversary" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/> + <enum value=""VK_EXT_external_memory_dma_buf"" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/> + <enum bitpos="9" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"/> + </require> + </extension> + <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" requires="VK_KHR_external_memory" contact="Chad Versace @chadversary" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"/> + <enum value=""VK_EXT_queue_family_foreign"" name="VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME"/> + <enum name="VK_QUEUE_FAMILY_FOREIGN_EXT"/> + </require> + </extension> + <extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" requires="VK_KHR_get_memory_requirements2" contact="James Jones @cubanismo" supported="vulkan"> + <require> + <enum value="3" name="VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"/> + <enum value=""VK_KHR_dedicated_allocation"" name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"/> + <type name="VkMemoryDedicatedRequirementsKHR"/> + <type name="VkMemoryDedicatedAllocateInfoKHR"/> + </require> + </extension> + <extension name="VK_EXT_debug_utils" number="129" type="instance" author="EXT" contact="Mark Young @MarkY_LunarG" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_DEBUG_UTILS_SPEC_VERSION"/> + <enum value=""VK_EXT_debug_utils"" name="VK_EXT_DEBUG_UTILS_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT" comment="VkDebugUtilsMessengerEXT"/> + <type name="VkDebugUtilsObjectNameInfoEXT"/> + <type name="VkDebugUtilsObjectTagInfoEXT"/> + <type name="VkDebugUtilsLabelEXT"/> + <type name="VkDebugUtilsMessengerCallbackDataEXT"/> + <type name="VkDebugUtilsMessengerCreateInfoEXT"/> + <command name="vkSetDebugUtilsObjectNameEXT"/> + <command name="vkSetDebugUtilsObjectTagEXT"/> + <command name="vkQueueBeginDebugUtilsLabelEXT"/> + <command name="vkQueueEndDebugUtilsLabelEXT"/> + <command name="vkQueueInsertDebugUtilsLabelEXT"/> + <command name="vkCmdBeginDebugUtilsLabelEXT"/> + <command name="vkCmdEndDebugUtilsLabelEXT"/> + <command name="vkCmdInsertDebugUtilsLabelEXT"/> + <command name="vkCreateDebugUtilsMessengerEXT"/> + <command name="vkDestroyDebugUtilsMessengerEXT"/> + <command name="vkSubmitDebugUtilsMessageEXT"/> + </require> + </extension> + <extension name="VK_ANDROID_external_memory_android_hardware_buffer" number="130" type="device" author="ANDROID" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory,VK_EXT_queue_family_foreign" platform="android" contact="Jesse Hall @jessehall" supported="vulkan"> + <require> + <enum value="3" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"/> + <enum value=""VK_ANDROID_external_memory_android_hardware_buffer"" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"/> + <enum bitpos="10" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"/> + <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"/> + <type name="VkAndroidHardwareBufferUsageANDROID"/> + <type name="VkAndroidHardwareBufferPropertiesANDROID"/> + <type name="VkAndroidHardwareBufferFormatPropertiesANDROID"/> + <type name="VkImportAndroidHardwareBufferInfoANDROID"/> + <type name="VkMemoryGetAndroidHardwareBufferInfoANDROID"/> + <type name="VkExternalFormatANDROID"/> + <command name="vkGetAndroidHardwareBufferPropertiesANDROID"/> + <command name="vkGetMemoryAndroidHardwareBufferANDROID"/> + </require> + </extension> + <extension name="VK_EXT_sampler_filter_minmax" number="131" type="device" author="NV" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/> + <enum value=""VK_EXT_sampler_filter_minmax"" name="VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"/> + <enum bitpos="16" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT" comment="Format can be used with min/max reduction filtering"/> + <type name="VkSamplerReductionModeEXT"/> + <type name="VkSamplerReductionModeCreateInfoEXT"/> + <type name="VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT"/> + </require> + </extension> + <extension name="VK_KHR_storage_buffer_storage_class" number="132" type="device" author="KHR" contact="Alexander Galazin @debater" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION"/> + <enum value=""VK_KHR_storage_buffer_storage_class"" name="VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_gpu_shader_int16" number="133" type="device" author="AMD" contact="[email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_GPU_SHADER_INT16_SPEC_VERSION"/> + <enum value=""VK_AMD_gpu_shader_int16"" name="VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_134" number="134" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_134_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_134"" name="VK_AMD_EXTENSION_134_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_135" number="135" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_135_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_135"" name="VK_AMD_EXTENSION_135_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_136" number="136" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_136_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_136"" name="VK_AMD_EXTENSION_136_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_mixed_attachment_samples" number="137" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION"/> + <enum value=""VK_AMD_mixed_attachment_samples"" name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_shader_fragment_mask" number="138" author="AMD" contact="Aaron Hagan @ahagan" supported="vulkan" type="device"> + <require> + <enum value="1" name="VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_fragment_mask"" name="VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_139" number="139" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_139_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_139"" name="VK_AMD_EXTENSION_139_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_140" number="140" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_140_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_140"" name="VK_AMD_EXTENSION_140_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_shader_stencil_export" number="141" type="device" author="EXT" contact="[email protected]" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION"/> + <enum value=""VK_EXT_shader_stencil_export"" name="VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_142" number="142" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_142_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_142"" name="VK_AMD_EXTENSION_142_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_143" number="143" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled"> + <require> + <enum value="0" name="VK_AMD_EXTENSION_143_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_143"" name="VK_AMD_EXTENSION_143_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_sample_locations" number="144" type="device" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"/> + <enum value=""VK_EXT_sample_locations"" name="VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"/> + <enum bitpos="12" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"/> + <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"/> + <type name="VkSampleLocationEXT"/> + <type name="VkSampleLocationsInfoEXT"/> + <type name="VkAttachmentSampleLocationsEXT"/> + <type name="VkSubpassSampleLocationsEXT"/> + <type name="VkRenderPassSampleLocationsBeginInfoEXT"/> + <type name="VkPipelineSampleLocationsStateCreateInfoEXT"/> + <type name="VkPhysicalDeviceSampleLocationsPropertiesEXT"/> + <type name="VkMultisamplePropertiesEXT"/> + <command name="vkCmdSetSampleLocationsEXT"/> + <command name="vkGetPhysicalDeviceMultisamplePropertiesEXT"/> + </require> + </extension> + <extension name="VK_KHR_relaxed_block_layout" number="145" type="device" author="KHR" contact="John Kessenich @johnk" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION"/> + <enum value=""VK_KHR_relaxed_block_layout"" name="VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME"/> + </require> + </extension> + <extension name="RESERVED_DO_NOT_USE_146" number="146" supported="disabled" comment="Used for functionality subsumed into Vulkan 1.1 and not published as an extension"> + </extension> + <extension name="VK_KHR_get_memory_requirements2" number="147" type="device" author="KHR" contact="Jason Ekstrand @jekstrand" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION"/> + <enum value=""VK_KHR_get_memory_requirements2"" name="VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR" alias="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/> + <type name="VkBufferMemoryRequirementsInfo2KHR"/> + <type name="VkImageMemoryRequirementsInfo2KHR"/> + <type name="VkImageSparseMemoryRequirementsInfo2KHR"/> + <type name="VkMemoryRequirements2KHR"/> + <type name="VkSparseImageMemoryRequirements2KHR"/> + <command name="vkGetImageMemoryRequirements2KHR"/> + <command name="vkGetBufferMemoryRequirements2KHR"/> + <command name="vkGetImageSparseMemoryRequirements2KHR"/> + </require> + </extension> + <extension name="VK_KHR_image_format_list" number="148" type="device" author="KHR" contact="Jason Ekstrand @jekstrand" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION"/> + <enum value=""VK_KHR_image_format_list"" name="VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"/> + <type name="VkImageFormatListCreateInfoKHR"/> + </require> + </extension> + <extension name="VK_EXT_blend_operation_advanced" number="149" type="device" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="2" name="VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION"/> + <enum value=""VK_EXT_blend_operation_advanced"" name="VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"/> + <type name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT"/> + <type name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT"/> + <type name="VkPipelineColorBlendAdvancedStateCreateInfoEXT"/> + <type name="VkBlendOverlapEXT"/> + <enum offset="0" extends="VkBlendOp" name="VK_BLEND_OP_ZERO_EXT"/> + <enum offset="1" extends="VkBlendOp" name="VK_BLEND_OP_SRC_EXT"/> + <enum offset="2" extends="VkBlendOp" name="VK_BLEND_OP_DST_EXT"/> + <enum offset="3" extends="VkBlendOp" name="VK_BLEND_OP_SRC_OVER_EXT"/> + <enum offset="4" extends="VkBlendOp" name="VK_BLEND_OP_DST_OVER_EXT"/> + <enum offset="5" extends="VkBlendOp" name="VK_BLEND_OP_SRC_IN_EXT"/> + <enum offset="6" extends="VkBlendOp" name="VK_BLEND_OP_DST_IN_EXT"/> + <enum offset="7" extends="VkBlendOp" name="VK_BLEND_OP_SRC_OUT_EXT"/> + <enum offset="8" extends="VkBlendOp" name="VK_BLEND_OP_DST_OUT_EXT"/> + <enum offset="9" extends="VkBlendOp" name="VK_BLEND_OP_SRC_ATOP_EXT"/> + <enum offset="10" extends="VkBlendOp" name="VK_BLEND_OP_DST_ATOP_EXT"/> + <enum offset="11" extends="VkBlendOp" name="VK_BLEND_OP_XOR_EXT"/> + <enum offset="12" extends="VkBlendOp" name="VK_BLEND_OP_MULTIPLY_EXT"/> + <enum offset="13" extends="VkBlendOp" name="VK_BLEND_OP_SCREEN_EXT"/> + <enum offset="14" extends="VkBlendOp" name="VK_BLEND_OP_OVERLAY_EXT"/> + <enum offset="15" extends="VkBlendOp" name="VK_BLEND_OP_DARKEN_EXT"/> + <enum offset="16" extends="VkBlendOp" name="VK_BLEND_OP_LIGHTEN_EXT"/> + <enum offset="17" extends="VkBlendOp" name="VK_BLEND_OP_COLORDODGE_EXT"/> + <enum offset="18" extends="VkBlendOp" name="VK_BLEND_OP_COLORBURN_EXT"/> + <enum offset="19" extends="VkBlendOp" name="VK_BLEND_OP_HARDLIGHT_EXT"/> + <enum offset="20" extends="VkBlendOp" name="VK_BLEND_OP_SOFTLIGHT_EXT"/> + <enum offset="21" extends="VkBlendOp" name="VK_BLEND_OP_DIFFERENCE_EXT"/> + <enum offset="22" extends="VkBlendOp" name="VK_BLEND_OP_EXCLUSION_EXT"/> + <enum offset="23" extends="VkBlendOp" name="VK_BLEND_OP_INVERT_EXT"/> + <enum offset="24" extends="VkBlendOp" name="VK_BLEND_OP_INVERT_RGB_EXT"/> + <enum offset="25" extends="VkBlendOp" name="VK_BLEND_OP_LINEARDODGE_EXT"/> + <enum offset="26" extends="VkBlendOp" name="VK_BLEND_OP_LINEARBURN_EXT"/> + <enum offset="27" extends="VkBlendOp" name="VK_BLEND_OP_VIVIDLIGHT_EXT"/> + <enum offset="28" extends="VkBlendOp" name="VK_BLEND_OP_LINEARLIGHT_EXT"/> + <enum offset="29" extends="VkBlendOp" name="VK_BLEND_OP_PINLIGHT_EXT"/> + <enum offset="30" extends="VkBlendOp" name="VK_BLEND_OP_HARDMIX_EXT"/> + <enum offset="31" extends="VkBlendOp" name="VK_BLEND_OP_HSL_HUE_EXT"/> + <enum offset="32" extends="VkBlendOp" name="VK_BLEND_OP_HSL_SATURATION_EXT"/> + <enum offset="33" extends="VkBlendOp" name="VK_BLEND_OP_HSL_COLOR_EXT"/> + <enum offset="34" extends="VkBlendOp" name="VK_BLEND_OP_HSL_LUMINOSITY_EXT"/> + <enum offset="35" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_EXT"/> + <enum offset="36" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_CLAMPED_EXT"/> + <enum offset="37" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"/> + <enum offset="38" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_DARKER_EXT"/> + <enum offset="39" extends="VkBlendOp" name="VK_BLEND_OP_MINUS_EXT"/> + <enum offset="40" extends="VkBlendOp" name="VK_BLEND_OP_MINUS_CLAMPED_EXT"/> + <enum offset="41" extends="VkBlendOp" name="VK_BLEND_OP_CONTRAST_EXT"/> + <enum offset="42" extends="VkBlendOp" name="VK_BLEND_OP_INVERT_OVG_EXT"/> + <enum offset="43" extends="VkBlendOp" name="VK_BLEND_OP_RED_EXT"/> + <enum offset="44" extends="VkBlendOp" name="VK_BLEND_OP_GREEN_EXT"/> + <enum offset="45" extends="VkBlendOp" name="VK_BLEND_OP_BLUE_EXT"/> + <enum bitpos="19" extends="VkAccessFlagBits" name="VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"/> + </require> + </extension> + <extension name="VK_NV_fragment_coverage_to_color" number="150" type="device" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION"/> + <enum value=""VK_NV_fragment_coverage_to_color"" name="VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"/> + <type name="VkPipelineCoverageToColorStateCreateFlagsNV"/> + <type name="VkPipelineCoverageToColorStateCreateInfoNV"/> + </require> + </extension> + <extension name="VK_NV_extension_151" number="151" author="NV" contact="Jeff Bolz @jbolz" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_151_SPEC_VERSION"/> + <enum value=""VK_NV_extension_151"" name="VK_NV_EXTENSION_151_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_152" number="152" author="NV" contact="Jeff Bolz @jbolz" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_152_SPEC_VERSION"/> + <enum value=""VK_NV_extension_152"" name="VK_NV_EXTENSION_152_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_framebuffer_mixed_samples" number="153" type="device" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION"/> + <enum value=""VK_NV_framebuffer_mixed_samples"" name="VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"/> + <type name="VkPipelineCoverageModulationStateCreateInfoNV"/> + <type name="VkPipelineCoverageModulationStateCreateFlagsNV"/> + <type name="VkCoverageModulationModeNV"/> + </require> + </extension> + <extension name="VK_NV_fill_rectangle" number="154" type="device" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_FILL_RECTANGLE_SPEC_VERSION"/> + <enum value=""VK_NV_fill_rectangle"" name="VK_NV_FILL_RECTANGLE_EXTENSION_NAME"/> + <enum offset="0" extends="VkPolygonMode" name="VK_POLYGON_MODE_FILL_RECTANGLE_NV"/> + </require> + </extension> + <extension name="VK_NV_extension_155" number="155" author="NV" contact="Jeff Bolz @jbolz" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_155_SPEC_VERSION"/> + <enum value=""VK_NV_extension_155"" name="VK_NV_EXTENSION_155_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_post_depth_coverage" number="156" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION"/> + <enum value=""VK_EXT_post_depth_coverage"" name="VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_sampler_ycbcr_conversion" number="157" type="device" requires="VK_KHR_maintenance1,VK_KHR_bind_memory2,VK_KHR_get_memory_requirements2,VK_KHR_get_physical_device_properties2" author="KHR" contact="Andrew Garrard @fluppeteer" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/> + <enum value=""VK_KHR_sampler_ycbcr_conversion"" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"/> + <enum extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/> + <enum extends="VkObjectType" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR" alias="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"/> + <enum extends="VkFormat" name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR" alias="VK_FORMAT_G8B8G8R8_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR" alias="VK_FORMAT_B8G8R8G8_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR" alias="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR" alias="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_R10X6_UNORM_PACK16_KHR" alias="VK_FORMAT_R10X6_UNORM_PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR" alias="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR" alias="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_R12X4_UNORM_PACK16_KHR" alias="VK_FORMAT_R12X4_UNORM_PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR" alias="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR" alias="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"/> + <enum extends="VkFormat" name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR" alias="VK_FORMAT_G16B16G16R16_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR" alias="VK_FORMAT_B16G16R16G16_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR" alias="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR" alias="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"/> + <enum extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"/> + <enum extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_0_BIT"/> + <enum extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_1_BIT"/> + <enum extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_2_BIT"/> + <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR" alias="VK_IMAGE_CREATE_DISJOINT_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" alias="VK_FORMAT_FEATURE_DISJOINT_BIT"/> + <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"/> + <type name="VkSamplerYcbcrConversionCreateInfoKHR"/> + <type name="VkSamplerYcbcrConversionInfoKHR"/> + <type name="VkBindImagePlaneMemoryInfoKHR"/> + <type name="VkImagePlaneMemoryRequirementsInfoKHR"/> + <type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/> + <type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/> + <command name="vkCreateSamplerYcbcrConversionKHR"/> + <command name="vkDestroySamplerYcbcrConversionKHR"/> + <type name="VkSamplerYcbcrConversionKHR"/> + <type name="VkSamplerYcbcrModelConversionKHR"/> + <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"/> + <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"/> + <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"/> + <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"/> + <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"/> + <type name="VkSamplerYcbcrRangeKHR"/> + <enum extends="VkSamplerYcbcrRange" name="VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR" alias="VK_SAMPLER_YCBCR_RANGE_ITU_FULL"/> + <enum extends="VkSamplerYcbcrRange" name="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR" alias="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"/> + <type name="VkChromaLocationKHR"/> + <enum extends="VkChromaLocation" name="VK_CHROMA_LOCATION_COSITED_EVEN_KHR" alias="VK_CHROMA_LOCATION_COSITED_EVEN"/> + <enum extends="VkChromaLocation" name="VK_CHROMA_LOCATION_MIDPOINT_KHR" alias="VK_CHROMA_LOCATION_MIDPOINT"/> + </require> + <require extension="VK_EXT_debug_report"> + <enum extends="VkDebugReportObjectTypeEXT" offset="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/> + </require> + </extension> + <extension name="VK_KHR_bind_memory2" number="158" type="device" author="KHR" contact="Tobias Hector @tobias" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_BIND_MEMORY_2_SPEC_VERSION"/> + <enum value=""VK_KHR_bind_memory2"" name="VK_KHR_BIND_MEMORY_2_EXTENSION_NAME"/> + <command name="vkBindBufferMemory2KHR"/> + <command name="vkBindImageMemory2KHR"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"/> + <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_ALIAS_BIT_KHR" alias="VK_IMAGE_CREATE_ALIAS_BIT"/> + <type name="VkBindBufferMemoryInfoKHR"/> + <type name="VkBindImageMemoryInfoKHR"/> + </require> + </extension> + <extension name="VK_EXT_extension_159" number="159" author="EXT" contact="Chad Versace @chadversary" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_159_SPEC_VERSION"/> + <enum value=""VK_EXT_extension_159"" name="VK_EXT_EXTENSION_159_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_extension_160" number="160" author="EXT" contact="Mark Young @MarkY_LunarG" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_160_SPEC_VERSION"/> + <enum value=""VK_EXT_extension_160"" name="VK_EXT_EXTENSION_160_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_validation_cache" number="161" type="device" author="GOOGLE" contact="Cort Stratton @cdwfs" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_VALIDATION_CACHE_SPEC_VERSION"/> + <enum value=""VK_EXT_validation_cache"" name="VK_EXT_VALIDATION_CACHE_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"/> + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_VALIDATION_CACHE_EXT" comment="VkValidationCacheEXT"/> + <enum value="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT"/> + <type name="VkValidationCacheEXT"/> + <type name="VkValidationCacheCreateInfoEXT"/> + <type name="VkShaderModuleValidationCacheCreateInfoEXT"/> + <type name="VkValidationCacheHeaderVersionEXT"/> + <type name="VkValidationCacheCreateFlagsEXT"/> + <command name="vkCreateValidationCacheEXT"/> + <command name="vkDestroyValidationCacheEXT"/> + <command name="vkMergeValidationCachesEXT"/> + <command name="vkGetValidationCacheDataEXT"/> + </require> + </extension> + <extension name="VK_EXT_descriptor_indexing" number="162" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_maintenance3" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="2" name="VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"/> + <enum value=""VK_EXT_descriptor_indexing"" name="VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"/> + <enum bitpos="1" extends="VkDescriptorPoolCreateFlagBits" name="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"/> + <enum bitpos="1" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"/> + <enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_FRAGMENTATION_EXT"/> + <type name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"/> + <type name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/> + <type name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT"/> + <type name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"/> + <type name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"/> + </require> + </extension> + <extension name="VK_EXT_shader_viewport_index_layer" number="163" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION"/> + <enum value=""VK_EXT_shader_viewport_index_layer"" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_164" number="164" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_164_SPEC_VERSION"/> + <enum value=""VK_NV_extension_164"" name="VK_EXT_EXTENSION_164_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_165" number="165" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_165_SPEC_VERSION"/> + <enum value=""VK_NV_extension_165"" name="VK_EXT_EXTENSION_165_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_166" number="166" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_166_SPEC_VERSION"/> + <enum value=""VK_NV_extension_166"" name="VK_EXT_EXTENSION_166_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_167" number="167" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_167_SPEC_VERSION"/> + <enum value=""VK_NV_extension_167"" name="VK_EXT_EXTENSION_167_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_168" number="168" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_168_SPEC_VERSION"/> + <enum value=""VK_NV_extension_168"" name="VK_EXT_EXTENSION_168_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_maintenance3" number="169" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_KHR_MAINTENANCE3_SPEC_VERSION"/> + <enum value=""VK_KHR_maintenance3"" name="VK_KHR_MAINTENANCE3_EXTENSION_NAME"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"/> + <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"/> + <type name="VkPhysicalDeviceMaintenance3PropertiesKHR"/> + <type name="VkDescriptorSetLayoutSupportKHR"/> + <command name="vkGetDescriptorSetLayoutSupportKHR"/> + </require> + </extension> + <extension name="VK_EXT_extension_170" number="170" author="NV" contact="Piers Daniell @pdaniell" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_170_SPEC_VERSION"/> + <enum value=""VK_EXT_extension_170"" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_171" number="171" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_extension_171_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_171"" name="VK_QCOM_extension_171_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_172" number="172" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_extension_172_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_172"" name="VK_QCOM_extension_172_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_extension_173_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_173"" name="VK_QCOM_extension_173_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_extension_174_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_174"" name="VK_QCOM_extension_174_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_global_priority" number="175" type="device" author="EXT" contact="Andres Rodriguez @lostgoat" supported="vulkan"> + <require> + <enum value="2" name="VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"/> + <enum value=""VK_EXT_global_priority"" name="VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"/> + <enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NOT_PERMITTED_EXT"/> + <type name="VkDeviceQueueGlobalPriorityCreateInfoEXT"/> + <type name="VkQueueGlobalPriorityEXT"/> + </require> + </extension> + <extension name="VK_EXT_extension_176" number="176" author="EXT" contact="Neil Henning @neil_henning" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_176_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_176"" name="VK_KHR_EXTENSION_176_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_extension_177" number="177" author="EXT" contact="Neil Henning @neil_henning" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_177_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_177"" name="VK_KHR_EXTENSION_177_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_extension_178" number="178" author="EXT" contact="Alexander Galazin @debater" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_178_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_178"" name="VK_KHR_EXTENSION_178_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_external_memory_host" number="179" type="device" author="EXT" requires="VK_KHR_external_memory" contact="Daniel Rakos @aqnuep" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION"/> + <enum value=""VK_EXT_external_memory_host"" name="VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"/> + <enum bitpos="7" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"/> + <enum bitpos="8" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"/> + <type name="VkExternalMemoryHandleTypeFlagsKHR"/> + <type name="VkExternalMemoryHandleTypeFlagBitsKHR"/> + <type name="VkImportMemoryHostPointerInfoEXT"/> + <type name="VkMemoryHostPointerPropertiesEXT"/> + <type name="VkPhysicalDeviceExternalMemoryHostPropertiesEXT"/> + <command name="vkGetMemoryHostPointerPropertiesEXT"/> + </require> + </extension> + <extension name="VK_AMD_buffer_marker" number="180" type="device" author="AMD" contact="Daniel Rakos @aqnuep" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_BUFFER_MARKER_SPEC_VERSION"/> + <enum value=""VK_AMD_buffer_marker"" name="VK_AMD_BUFFER_MARKER_EXTENSION_NAME"/> + <command name="vkCmdWriteBufferMarkerAMD"/> + </require> + </extension> + <extension name="VK_AMD_extension_181" number="181" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_181_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_181"" name="VK_KHR_EXTENSION_181_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_182" number="182" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_182_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_182"" name="VK_KHR_EXTENSION_182_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_183" number="183" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_183_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_183"" name="VK_KHR_EXTENSION_183_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_184" number="184" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_184_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_184"" name="VK_KHR_EXTENSION_184_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_185" number="185" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_185_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_185"" name="VK_KHR_EXTENSION_185_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan"> + <require> + <enum value="1" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/> + <enum value=""VK_AMD_shader_core_properties"" name="VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"/> + <type name="VkPhysicalDeviceShaderCorePropertiesAMD"/> + </require> + </extension> + <extension name="VK_AMD_extension_187" number="187" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_187_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_187"" name="VK_KHR_EXTENSION_187_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_188" number="188" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_188_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_188"" name="VK_KHR_EXTENSION_188_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_189" number="189" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_189_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_189"" name="VK_KHR_EXTENSION_189_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_AMD_extension_190" number="190" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_190_SPEC_VERSION"/> + <enum value=""VK_AMD_extension_190"" name="VK_KHR_EXTENSION_190_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_vertex_attribute_divisor" number="191" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION"/> + <enum value=""VK_EXT_vertex_attribute_divisor"" name="VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"/> + <type name="VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT"/> + <type name="VkVertexInputBindingDivisorDescriptionEXT"/> + <type name="VkPipelineVertexInputDivisorStateCreateInfoEXT"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_192" number="192" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_192_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_192"" name="VK_GOOGLE_EXTENSION_192_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_193" number="193" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_193_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_193"" name="VK_GOOGLE_EXTENSION_193_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_194" number="194" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_194_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_194"" name="VK_GOOGLE_EXTENSION_194_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_195" number="195" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_195_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_195"" name="VK_GOOGLE_EXTENSION_195_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_GOOGLE_extension_196" number="196" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled"> + <require> + <enum value="0" name="VK_GOOGLE_EXTENSION_196_SPEC_VERSION"/> + <enum value=""VK_GOOGLE_extension_196"" name="VK_GOOGLE_EXTENSION_196_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_EXT_extension_197" number="197" author="Baldur Karlsson" contact="[email protected]" supported="disabled"> + <require> + <enum value="0" name="VK_EXT_EXTENSION_197_SPEC_VERSION"/> + <enum value=""VK_EXT_extension_197"" name="VK_EXT_EXTENSION_197_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_ARM_extension_198" number="198" author="Alexander Galazin" contact="@debater" supported="disabled"> + <require> + <enum value="0" name="VK_ARM_EXTENSION_198_SPEC_VERSION"/> + <enum value=""VK_EXT_extension_198"" name="VK_ARM_EXTENSION_198_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" requiresCore="1.1" author="NV" contact="Jeff Bolz @jbolz" supported="vulkan"> + <require> + <enum value="1" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"/> + <enum value=""VK_NV_shader_subgroup_partitioned"" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME"/> + <enum bitpos="8" extends="VkSubgroupFeatureFlagBits" name="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/> + </require> + </extension> + <extension name="VK_KHR_extension_200" number="200" author="KHR" contact="Jan-Harald Fredriksen @janharald" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_200_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_200"" name="VK_KHR_EXTENSION_200_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_extension_201" number="201" type="device" author="KHR" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_201_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_201"" name="VK_KHR_EXTENSION_201_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_202" number="202" author="NV" contact="Pat Brown @pbrown" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_202_SPEC_VERSION"/> + <enum value=""VK_NV_extension_202"" name="VK_NV_EXTENSION_202_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_203" number="203" author="NV" contact="Pat Brown @pbrown" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_203_SPEC_VERSION"/> + <enum value=""VK_NV_extension_203"" name="VK_NV_EXTENSION_203_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_204" number="204" author="NV" contact="Pat Brown @pbrown" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_204_SPEC_VERSION"/> + <enum value=""VK_NV_extension_204"" name="VK_NV_EXTENSION_204_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_205" number="205" author="NV" contact="Pat Brown @pbrown" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_205_SPEC_VERSION"/> + <enum value=""VK_NV_extension_205"" name="VK_NV_EXTENSION_205_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_206" number="206" author="NV" contact="Pat Brown @pbrown" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_206_SPEC_VERSION"/> + <enum value=""VK_NV_extension_206"" name="VK_NV_EXTENSION_206_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_207" number="207" author="NV" contact="Nuno Subtil @nsubtil" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_207_SPEC_VERSION"/> + <enum value=""VK_NV_extension_207"" name="VK_NV_EXTENSION_207_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_extension_208" number="208" type="device" author="KHR" contact="Daniel Rakos @aqnuep" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_208_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_208"" name="VK_KHR_EXTENSION_208_EXTENSION_NAME"/> + </require> + </extension> + </extensions> +</registry> |