From 1c1b63ef12dab39444be8f3ba89a435e1e73edfb Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Wed, 13 Jun 2018 11:34:08 -0600 Subject: scripts: Remove local copies of registry files --- scripts/cgenerator.py | 417 --- scripts/generator.py | 595 ---- scripts/reg.py | 1059 ------ scripts/vk.xml | 8699 ------------------------------------------------- 4 files changed, 10770 deletions(-) delete mode 100644 scripts/cgenerator.py delete mode 100755 scripts/generator.py delete mode 100755 scripts/reg.py delete mode 100644 scripts/vk.xml (limited to 'scripts') diff --git a/scripts/cgenerator.py b/scripts/cgenerator.py deleted file mode 100644 index a3709700..00000000 --- a/scripts/cgenerator.py +++ /dev/null @@ -1,417 +0,0 @@ -#!/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 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 tag where the contents are - # interpreted as a set of tags instead of freeform C - # C type declarations. The tags are just like - # 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 - # 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/scripts/generator.py b/scripts/generator.py deleted file mode 100755 index a0f79ac2..00000000 --- a/scripts/generator.py +++ /dev/null @@ -1,595 +0,0 @@ -#!/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 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. elements all have version number "0" -def regSortFeatureVersionKey(feature): - return float(feature.versionNumber) - -# Tertiary sort key for regSortFeatures. -# Sorts by extension number. 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 '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 . 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 / 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 element is required -# elem - element to test -# makeCDecls(cmd) - return C prototype and function pointer typedef for a -# Element, as a list of two strings -# cmd - Element for the -# 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 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 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 - # 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 tags may contain no-op 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 into C-language prototype - # and typedef declarations for that name. - # name - contents of 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 or block (e.g. function parameter - # or structure/union member). - # param - Element ( or ) to format - # aligncol - if non-zero, attempt to align the nested 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 or block (e.g. function parameter - # or structure/union member). - # param - Element ( or ) 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 element is - # required, False otherwise - # elem - 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 element was - # moved into the 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 tag - def makeCDecls(self, cmd): - """Generate C function pointer typedef for 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 *) around the name and - # use the PFN_cmdnameproc naming convention. - # Done by walking the tree for 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 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 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/scripts/reg.py b/scripts/reg.py deleted file mode 100755 index fd568e97..00000000 --- a/scripts/reg.py +++ /dev/null @@ -1,1059 +0,0 @@ -#!/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: -# with no attribute will match -# will match -# 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 - # 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' and 'extnumber', as these will inherently - # be different when redefining the same interface in different feature - # and/or extension blocks. - for key in selfKeys: - if (key != 'extname' and key != 'extnumber' 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 block, generally corresponding to a C "enum" type. -class GroupInfo(BaseInfo): - """Represents the state of a registry group""" - def __init__(self, elem): - BaseInfo.__init__(self, elem) - -# EnumInfo - registry information about an enum -# type - numeric type of the value of the 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 -# or -# name - feature name string (e.g. 'VK_KHR_surface') -# version - feature version number (e.g. 1.2). -# features are unversioned and assigned version number 0. -# ** This is confusingly taken from the 'number' attribute of . -# Needs fixing. -# number - extension number, used for ordering and for -# assigning enumerant offsets. 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 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 -# 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 Elements keyed by API name -# extensions - list of Elements -# extdict - dictionary of 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 - ///// 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 - self.reg = self.tree.getroot() - # - # Create dictionary of registry types from toplevel tags - # and add 'name' attribute to each tag (where missing) - # based on its element. - # - # There's usually one block; more are OK - # Required attributes: 'name' or nested tag contents - self.typedict = {} - for type in self.reg.findall('types/type'): - # If the doesn't already have a 'name' attribute, set - # it from contents of its 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 tags. - # - # Required 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 tags. - self.groupdict = {} - for group in self.reg.findall('enums'): - self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict) - # - # Create dictionary of registry enums from tags - # - # tags usually define different namespaces for the values - # defined in those tags, but the actual names all share the - # same dictionary. - # Required attributes: 'name', 'value' - # For containing which have type="enum" or type="bitmask", - # tag all contained 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 tags - # and add 'name' attribute to each tag (where missing) - # based on its element. - # - # There's usually only one block; more are OK. - # Required attributes: 'name' or 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 doesn't already have a 'name' attribute, set - # it from contents of its 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 found for command', - cmd.get('name'), 'alias', alias) - - # - # Create dictionaries of API and extension interfaces - # from toplevel and 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 tags - # to the corresponding core type. - # When seen here, the element, processed to contain the - # numeric enum value, is added to the corresponding - # element, as well as adding to the enum dictionary. It is - # *removed* from the 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 tag, leading - # to the nested loop traversal of / elements - # below. - # - # This code also adds a 'version' attribute containing the - # api version. - # - # For 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 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 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 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 block's extension number attribute to - # the 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 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 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 - # 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 - # tags) - # Look for in entire tree, - # not just immediate children - for subtype in type.elem.findall('.//type'): - self.gen.logMsg('diag', 'markRequired: type requires dependent ', subtype.text) - self.markTypeRequired(subtype.text, required) - # Tag enums used in defining this type, for example in - # member[MEMBER_SIZE] - for subenum in type.elem.findall('.//enum'): - self.gen.logMsg('diag', 'markRequired: type requires dependent ', 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 - # 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 in entire 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 or 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 = , 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 or , containing - # and tags - # api - string specifying API name being generated - # profile - string specifying API profile being generated - def requireAndRemoveFeatures(self, interface, api, profile): - """Process and tags for a or """ - # marks things that are required by this version/profile - for feature in interface.findall('require'): - if (matchAPIProfile(api, profile, feature)): - self.markRequired(feature,True) - # 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 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 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 (//) - # 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 and tags within the element. - # For commands, there may be many in 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 - # tags) - # Look for in entire tree, - # not just immediate children - for subtype in f.elem.findall('.//type'): - self.gen.logMsg('diag', 'Generating required dependent ', - subtype.text) - self.generateFeature(subtype.text, 'type', self.typedict) - - # Generate enums used in defining this type, for example in - # member[MEMBER_SIZE] - for subtype in f.elem.findall('.//enum'): - self.gen.logMsg('diag', 'Generating required dependent ', - 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 tags injected by - #@ tags without any verification of whether - #@ they're required or not. It may also contain - #@ duplicates injected by multiple consistent - #@ definitions of an . - - #@ 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 element was - # moved into the 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 or - def generateRequiredInterface(self, interface): - """Generate required C interface for specified API version/extension""" - - # - # Loop over all features inside all 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 block) or no - # longer required (in an 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 and - # 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 and tags""" - # Keep track of group names not in 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/scripts/vk.xml b/scripts/vk.xml deleted file mode 100644 index 8f4c13d9..00000000 --- a/scripts/vk.xml +++ /dev/null @@ -1,8699 +0,0 @@ - - - -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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #include "vk_platform.h" - - WSI extensions - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - #define VK_MAKE_VERSION(major, minor, patch) \ - (((major) << 22) | ((minor) << 12) | (patch)) - #define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) - #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) - #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) - - // 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 VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 - // Vulkan 1.0 version number -#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0 - // Vulkan 1.1 version number -#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 - // Version of this file -#define VK_HEADER_VERSION 74 - - -#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; - - -#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 - - - -#define VK_NULL_HANDLE 0 - - - struct ANativeWindow; - struct AHardwareBuffer; - - typedef uint32_t VkSampleMask; - typedef uint32_t VkBool32; - typedef uint32_t VkFlags; - typedef uint64_t VkDeviceSize; - - Basic C types, pulled in via vk_platform.h - - - - - - - - - - - Bitmask types - typedef VkFlags VkFramebufferCreateFlags; - typedef VkFlags VkQueryPoolCreateFlags; - typedef VkFlags VkRenderPassCreateFlags; - typedef VkFlags VkSamplerCreateFlags; - typedef VkFlags VkPipelineLayoutCreateFlags; - typedef VkFlags VkPipelineCacheCreateFlags; - typedef VkFlags VkPipelineDepthStencilStateCreateFlags; - typedef VkFlags VkPipelineDynamicStateCreateFlags; - typedef VkFlags VkPipelineColorBlendStateCreateFlags; - typedef VkFlags VkPipelineMultisampleStateCreateFlags; - typedef VkFlags VkPipelineRasterizationStateCreateFlags; - typedef VkFlags VkPipelineViewportStateCreateFlags; - typedef VkFlags VkPipelineTessellationStateCreateFlags; - typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; - typedef VkFlags VkPipelineVertexInputStateCreateFlags; - typedef VkFlags VkPipelineShaderStageCreateFlags; - typedef VkFlags VkDescriptorSetLayoutCreateFlags; - typedef VkFlags VkBufferViewCreateFlags; - typedef VkFlags VkInstanceCreateFlags; - typedef VkFlags VkDeviceCreateFlags; - typedef VkFlags VkDeviceQueueCreateFlags; - typedef VkFlags VkQueueFlags; - typedef VkFlags VkMemoryPropertyFlags; - typedef VkFlags VkMemoryHeapFlags; - typedef VkFlags VkAccessFlags; - typedef VkFlags VkBufferUsageFlags; - typedef VkFlags VkBufferCreateFlags; - typedef VkFlags VkShaderStageFlags; - typedef VkFlags VkImageUsageFlags; - typedef VkFlags VkImageCreateFlags; - typedef VkFlags VkImageViewCreateFlags; - typedef VkFlags VkPipelineCreateFlags; - typedef VkFlags VkColorComponentFlags; - typedef VkFlags VkFenceCreateFlags; - typedef VkFlags VkSemaphoreCreateFlags; - typedef VkFlags VkFormatFeatureFlags; - typedef VkFlags VkQueryControlFlags; - typedef VkFlags VkQueryResultFlags; - typedef VkFlags VkShaderModuleCreateFlags; - typedef VkFlags VkEventCreateFlags; - typedef VkFlags VkCommandPoolCreateFlags; - typedef VkFlags VkCommandPoolResetFlags; - typedef VkFlags VkCommandBufferResetFlags; - typedef VkFlags VkCommandBufferUsageFlags; - typedef VkFlags VkQueryPipelineStatisticFlags; - typedef VkFlags VkMemoryMapFlags; - typedef VkFlags VkImageAspectFlags; - typedef VkFlags VkSparseMemoryBindFlags; - typedef VkFlags VkSparseImageFormatFlags; - typedef VkFlags VkSubpassDescriptionFlags; - typedef VkFlags VkPipelineStageFlags; - typedef VkFlags VkSampleCountFlags; - typedef VkFlags VkAttachmentDescriptionFlags; - typedef VkFlags VkStencilFaceFlags; - typedef VkFlags VkCullModeFlags; - typedef VkFlags VkDescriptorPoolCreateFlags; - typedef VkFlags VkDescriptorPoolResetFlags; - typedef VkFlags VkDependencyFlags; - typedef VkFlags VkSubgroupFeatureFlags; - typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX; - typedef VkFlags VkObjectEntryUsageFlagsNVX; - - typedef VkFlags VkDescriptorUpdateTemplateCreateFlags; - - - WSI extensions - typedef VkFlags VkCompositeAlphaFlagsKHR; - typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; - typedef VkFlags VkSurfaceTransformFlagsKHR; - typedef VkFlags VkSwapchainCreateFlagsKHR; - typedef VkFlags VkDisplayModeCreateFlagsKHR; - typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; - typedef VkFlags VkAndroidSurfaceCreateFlagsKHR; - typedef VkFlags VkMirSurfaceCreateFlagsKHR; - typedef VkFlags VkViSurfaceCreateFlagsNN; - typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; - typedef VkFlags VkWin32SurfaceCreateFlagsKHR; - typedef VkFlags VkXlibSurfaceCreateFlagsKHR; - typedef VkFlags VkXcbSurfaceCreateFlagsKHR; - typedef VkFlags VkIOSSurfaceCreateFlagsMVK; - typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; - typedef VkFlags VkPeerMemoryFeatureFlags; - - typedef VkFlags VkMemoryAllocateFlags; - - typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; - - typedef VkFlags VkDebugReportFlagsEXT; - typedef VkFlags VkCommandPoolTrimFlags; - - typedef VkFlags VkExternalMemoryHandleTypeFlagsNV; - typedef VkFlags VkExternalMemoryFeatureFlagsNV; - typedef VkFlags VkExternalMemoryHandleTypeFlags; - - typedef VkFlags VkExternalMemoryFeatureFlags; - - typedef VkFlags VkExternalSemaphoreHandleTypeFlags; - - typedef VkFlags VkExternalSemaphoreFeatureFlags; - - typedef VkFlags VkSemaphoreImportFlags; - - typedef VkFlags VkExternalFenceHandleTypeFlags; - - typedef VkFlags VkExternalFenceFeatureFlags; - - typedef VkFlags VkFenceImportFlags; - - typedef VkFlags VkSurfaceCounterFlagsEXT; - typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; - typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; - typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; - typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; - typedef VkFlags VkValidationCacheCreateFlagsEXT; - typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; - typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; - typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; - typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; - typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; - typedef VkFlags VkDescriptorBindingFlagsEXT; - - Types which can be void pointers or class pointers, selected at compile time - VK_DEFINE_HANDLE(VkInstance) - VK_DEFINE_HANDLE(VkPhysicalDevice) - VK_DEFINE_HANDLE(VkDevice) - VK_DEFINE_HANDLE(VkQueue) - VK_DEFINE_HANDLE(VkCommandBuffer) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) - - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) - - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) - - WSI extensions - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) - VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) - - Types generated from corresponding enums tags below - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Extensions - - - - - - - - - - - - - - - - - - WSI extensions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The PFN_vk*Function types are used by VkAllocationCallbacks below - typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( - void* pUserData, - size_t size, - VkInternalAllocationType allocationType, - VkSystemAllocationScope allocationScope); - typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( - void* pUserData, - size_t size, - VkInternalAllocationType allocationType, - VkSystemAllocationScope allocationScope); - typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( - void* pUserData, - void* pOriginal, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); - typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( - void* pUserData, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); - typedef void (VKAPI_PTR *PFN_vkFreeFunction)( - void* pUserData, - void* pMemory); - - The PFN_vkVoidFunction type are used by VkGet*ProcAddr below - typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); - - The PFN_vkDebugReportCallbackEXT type are used by the DEBUG_REPORT extension - typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage, - void* pUserData); - - The PFN_vkDebugUtilsMessengerCallbackEXT type are used by the VK_EXT_debug_utils extension - typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageType, - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, - void* pUserData); - - Struct types - - int32_t x - int32_t y - - - int32_t x - int32_t y - int32_t z - - - uint32_t width - uint32_t height - - - uint32_t width - uint32_t height - uint32_t depth - - - float x - float y - float width - float height - float minDepth - float maxDepth - - - VkOffset2D offset - VkExtent2D extent - - - VkRect2D rect - uint32_t baseArrayLayer - uint32_t layerCount - - - VkComponentSwizzle r - VkComponentSwizzle g - VkComponentSwizzle b - VkComponentSwizzle a - - - uint32_t apiVersion - uint32_t driverVersion - uint32_t vendorID - uint32_t deviceID - VkPhysicalDeviceType deviceType - char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] - uint8_t pipelineCacheUUID[VK_UUID_SIZE] - VkPhysicalDeviceLimits limits - VkPhysicalDeviceSparseProperties sparseProperties - - - char extensionName[VK_MAX_EXTENSION_NAME_SIZE]extension name - uint32_t specVersionversion of the extension specification implemented - - - char layerName[VK_MAX_EXTENSION_NAME_SIZE]layer name - uint32_t specVersionversion of the layer specification implemented - uint32_t implementationVersionbuild or release version of the layer's library - char description[VK_MAX_DESCRIPTION_SIZE]Free-form description of the layer - - - VkStructureType sType - const void* pNext - const char* pApplicationName - uint32_t applicationVersion - const char* pEngineName - uint32_t engineVersion - uint32_t apiVersion - - - void* pUserData - PFN_vkAllocationFunction pfnAllocation - PFN_vkReallocationFunction pfnReallocation - PFN_vkFreeFunction pfnFree - PFN_vkInternalAllocationNotification pfnInternalAllocation - PFN_vkInternalFreeNotification pfnInternalFree - - - VkStructureType sType - const void* pNext - VkDeviceQueueCreateFlags flags - uint32_t queueFamilyIndex - uint32_t queueCount - const float* pQueuePriorities - - - VkStructureType sType - const void* pNext - VkDeviceCreateFlags flags - uint32_t queueCreateInfoCount - const VkDeviceQueueCreateInfo* pQueueCreateInfos - uint32_t enabledLayerCount - const char* const* ppEnabledLayerNamesOrdered list of layer names to be enabled - uint32_t enabledExtensionCount - const char* const* ppEnabledExtensionNames - const VkPhysicalDeviceFeatures* pEnabledFeatures - - - VkStructureType sType - const void* pNext - VkInstanceCreateFlags flags - const VkApplicationInfo* pApplicationInfo - uint32_t enabledLayerCount - const char* const* ppEnabledLayerNamesOrdered list of layer names to be enabled - uint32_t enabledExtensionCount - const char* const* ppEnabledExtensionNamesExtension names to be enabled - - - VkQueueFlags queueFlagsQueue flags - uint32_t queueCount - uint32_t timestampValidBits - VkExtent3D minImageTransferGranularityMinimum alignment requirement for image transfers - - - uint32_t memoryTypeCount - VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES] - uint32_t memoryHeapCount - VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS] - - - VkStructureType sType - const void* pNext - VkDeviceSize allocationSizeSize of memory allocation - uint32_t memoryTypeIndexIndex of the of the memory type to allocate from - - - VkDeviceSize sizeSpecified in bytes - VkDeviceSize alignmentSpecified in bytes - uint32_t memoryTypeBitsBitmask of the allowed memory type indices into memoryTypes[] for this object - - - VkImageAspectFlags aspectMask - VkExtent3D imageGranularity - VkSparseImageFormatFlags flags - - - VkSparseImageFormatProperties formatProperties - uint32_t imageMipTailFirstLod - VkDeviceSize imageMipTailSizeSpecified in bytes, must be a multiple of sparse block size in bytes / alignment - VkDeviceSize imageMipTailOffsetSpecified in bytes, must be a multiple of sparse block size in bytes / alignment - VkDeviceSize imageMipTailStrideSpecified in bytes, must be a multiple of sparse block size in bytes / alignment - - - VkMemoryPropertyFlags propertyFlagsMemory properties of this memory type - uint32_t heapIndexIndex of the memory heap allocations of this memory type are taken from - - - VkDeviceSize sizeAvailable memory in the heap - VkMemoryHeapFlags flagsFlags for the heap - - - VkStructureType sType - const void* pNext - VkDeviceMemory memoryMapped memory object - VkDeviceSize offsetOffset within the memory object where the range starts - VkDeviceSize sizeSize of the range within the memory object - - - VkFormatFeatureFlags linearTilingFeaturesFormat features in case of linear tiling - VkFormatFeatureFlags optimalTilingFeaturesFormat features in case of optimal tiling - VkFormatFeatureFlags bufferFeaturesFormat features supported by buffers - - - VkExtent3D maxExtentmax image dimensions for this resource type - uint32_t maxMipLevelsmax number of mipmap levels for this resource type - uint32_t maxArrayLayersmax array size for this resource type - VkSampleCountFlags sampleCountssupported sample counts for this resource type - VkDeviceSize maxResourceSizemax size (in bytes) of this resource type - - - VkBuffer bufferBuffer used for this descriptor slot when the descriptor is UNIFORM_BUFFER[_DYNAMIC] or STORAGE_BUFFER[_DYNAMIC]. VK_NULL_HANDLE otherwise. - VkDeviceSize offsetBase offset from buffer start in bytes to update in the descriptor set. - VkDeviceSize rangeSize in bytes of the buffer resource for this descriptor update. - - - VkSampler samplerSampler to write to the descriptor in case it is a SAMPLER or COMBINED_IMAGE_SAMPLER descriptor. Ignored otherwise. - VkImageView imageViewImage view to write to the descriptor in case it is a SAMPLED_IMAGE, STORAGE_IMAGE, COMBINED_IMAGE_SAMPLER, or INPUT_ATTACHMENT descriptor. Ignored otherwise. - VkImageLayout imageLayoutLayout the image is expected to be in when accessed using this descriptor (only used if imageView is not VK_NULL_HANDLE). - - - VkStructureType sType - const void* pNext - VkDescriptorSet dstSetDestination descriptor set - uint32_t dstBindingBinding within the destination descriptor set to write - uint32_t dstArrayElementArray element within the destination binding to write - uint32_t descriptorCountNumber of descriptors to write (determines the size of the array pointed by pDescriptors) - VkDescriptorType descriptorTypeDescriptor type to write (determines which members of the array pointed by pDescriptors are going to be used) - const VkDescriptorImageInfo* pImageInfoSampler, image view, and layout for SAMPLER, COMBINED_IMAGE_SAMPLER, {SAMPLED,STORAGE}_IMAGE, and INPUT_ATTACHMENT descriptor types. - const VkDescriptorBufferInfo* pBufferInfoRaw buffer, size, and offset for {UNIFORM,STORAGE}_BUFFER[_DYNAMIC] descriptor types. - const VkBufferView* pTexelBufferViewBuffer view to write to the descriptor for {UNIFORM,STORAGE}_TEXEL_BUFFER descriptor types. - - - VkStructureType sType - const void* pNext - VkDescriptorSet srcSetSource descriptor set - uint32_t srcBindingBinding within the source descriptor set to copy from - uint32_t srcArrayElementArray element within the source binding to copy from - VkDescriptorSet dstSetDestination descriptor set - uint32_t dstBindingBinding within the destination descriptor set to copy to - uint32_t dstArrayElementArray element within the destination binding to copy to - uint32_t descriptorCountNumber of descriptors to write (determines the size of the array pointed by pDescriptors) - - - VkStructureType sType - const void* pNext - VkBufferCreateFlags flagsBuffer creation flags - VkDeviceSize sizeSpecified in bytes - VkBufferUsageFlags usageBuffer usage flags - VkSharingMode sharingMode - uint32_t queueFamilyIndexCount - const uint32_t* pQueueFamilyIndices - - - VkStructureType sType - const void* pNext - VkBufferViewCreateFlagsflags - VkBuffer buffer - VkFormat formatOptionally specifies format of elements - VkDeviceSize offsetSpecified in bytes - VkDeviceSize rangeView size specified in bytes - - - VkImageAspectFlags aspectMask - uint32_t mipLevel - uint32_t arrayLayer - - - VkImageAspectFlags aspectMask - uint32_t mipLevel - uint32_t baseArrayLayer - uint32_t layerCount - - - VkImageAspectFlags aspectMask - uint32_t baseMipLevel - uint32_t levelCount - uint32_t baseArrayLayer - uint32_t layerCount - - - VkStructureType sType - const void* pNext - VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize - VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize - - - VkStructureType sType - const void* pNext - VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize - VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize - uint32_t srcQueueFamilyIndexQueue family to transition ownership from - uint32_t dstQueueFamilyIndexQueue family to transition ownership to - VkBuffer bufferBuffer to sync - VkDeviceSize offsetOffset within the buffer to sync - VkDeviceSize sizeAmount of bytes to sync - - - VkStructureType sType - const void* pNext - VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize - VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize - VkImageLayout oldLayoutCurrent layout of the image - VkImageLayout newLayoutNew layout to transition the image to - uint32_t srcQueueFamilyIndexQueue family to transition ownership from - uint32_t dstQueueFamilyIndexQueue family to transition ownership to - VkImage imageImage to sync - VkImageSubresourceRange subresourceRangeSubresource range to sync - - - VkStructureType sType - const void* pNext - VkImageCreateFlags flagsImage creation flags - VkImageType imageType - VkFormat format - VkExtent3D extent - uint32_t mipLevels - uint32_t arrayLayers - VkSampleCountFlagBits samples - VkImageTiling tiling - VkImageUsageFlags usageImage usage flags - VkSharingMode sharingModeCross-queue-family sharing mode - uint32_t queueFamilyIndexCountNumber of queue families to share across - const uint32_t* pQueueFamilyIndicesArray of queue family indices to share across - VkImageLayout initialLayoutInitial image layout for all subresources - - - VkDeviceSize offsetSpecified in bytes - VkDeviceSize sizeSpecified in bytes - VkDeviceSize rowPitchSpecified in bytes - VkDeviceSize arrayPitchSpecified in bytes - VkDeviceSize depthPitchSpecified in bytes - - - VkStructureType sType - const void* pNext - VkImageViewCreateFlags flags - VkImage image - VkImageViewType viewType - VkFormat format - VkComponentMapping components - VkImageSubresourceRange subresourceRange - - - VkDeviceSize srcOffsetSpecified in bytes - VkDeviceSize dstOffsetSpecified in bytes - VkDeviceSize sizeSpecified in bytes - - - VkDeviceSize resourceOffsetSpecified in bytes - VkDeviceSize sizeSpecified in bytes - VkDeviceMemory memory - VkDeviceSize memoryOffsetSpecified in bytes - VkSparseMemoryBindFlagsflags - - - VkImageSubresource subresource - VkOffset3D offset - VkExtent3D extent - VkDeviceMemory memory - VkDeviceSize memoryOffsetSpecified in bytes - VkSparseMemoryBindFlagsflags - - - VkBuffer buffer - uint32_t bindCount - const VkSparseMemoryBind* pBinds - - - VkImage image - uint32_t bindCount - const VkSparseMemoryBind* pBinds - - - VkImage image - uint32_t bindCount - const VkSparseImageMemoryBind* pBinds - - - VkStructureType sType - const void* pNext - uint32_t waitSemaphoreCount - const VkSemaphore* pWaitSemaphores - uint32_t bufferBindCount - const VkSparseBufferMemoryBindInfo* pBufferBinds - uint32_t imageOpaqueBindCount - const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds - uint32_t imageBindCount - const VkSparseImageMemoryBindInfo* pImageBinds - uint32_t signalSemaphoreCount - const VkSemaphore* pSignalSemaphores - - - VkImageSubresourceLayers srcSubresource - VkOffset3D srcOffsetSpecified in pixels for both compressed and uncompressed images - VkImageSubresourceLayers dstSubresource - VkOffset3D dstOffsetSpecified in pixels for both compressed and uncompressed images - VkExtent3D extentSpecified in pixels for both compressed and uncompressed images - - - VkImageSubresourceLayers srcSubresource - VkOffset3D srcOffsets[2]Specified in pixels for both compressed and uncompressed images - VkImageSubresourceLayers dstSubresource - VkOffset3D dstOffsets[2]Specified in pixels for both compressed and uncompressed images - - - VkDeviceSize bufferOffsetSpecified in bytes - uint32_t bufferRowLengthSpecified in texels - uint32_t bufferImageHeight - VkImageSubresourceLayers imageSubresource - VkOffset3D imageOffsetSpecified in pixels for both compressed and uncompressed images - VkExtent3D imageExtentSpecified in pixels for both compressed and uncompressed images - - - VkImageSubresourceLayers srcSubresource - VkOffset3D srcOffset - VkImageSubresourceLayers dstSubresource - VkOffset3D dstOffset - VkExtent3D extent - - - VkStructureType sType - const void* pNext - VkShaderModuleCreateFlags flags - size_t codeSizeSpecified in bytes - const uint32_t* pCodeBinary code of size codeSize - - - uint32_t bindingBinding number for this entry - VkDescriptorType descriptorTypeType of the descriptors in this binding - uint32_t descriptorCountNumber of descriptors in this binding - VkShaderStageFlags stageFlagsShader stages this binding is visible to - const VkSampler* pImmutableSamplersImmutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains count number of elements) - - - VkStructureType sType - const void* pNext - VkDescriptorSetLayoutCreateFlags flags - uint32_t bindingCountNumber of bindings in the descriptor set layout - const VkDescriptorSetLayoutBinding* pBindingsArray of descriptor set layout bindings - - - VkDescriptorType type - uint32_t descriptorCount - - - VkStructureType sType - const void* pNext - VkDescriptorPoolCreateFlags flags - uint32_t maxSets - uint32_t poolSizeCount - const VkDescriptorPoolSize* pPoolSizes - - - VkStructureType sType - const void* pNext - VkDescriptorPool descriptorPool - uint32_t descriptorSetCount - const VkDescriptorSetLayout* pSetLayouts - - - uint32_t constantIDThe SpecConstant ID specified in the BIL - uint32_t offsetOffset of the value in the data block - size_t sizeSize in bytes of the SpecConstant - - - uint32_t mapEntryCountNumber of entries in the map - const VkSpecializationMapEntry* pMapEntriesArray of map entries - size_t dataSizeSize in bytes of pData - const void* pDataPointer to SpecConstant data - - - VkStructureType sType - const void* pNext - VkPipelineShaderStageCreateFlags flags - VkShaderStageFlagBits stageShader stage - VkShaderModule moduleModule containing entry point - const char* pNameNull-terminated entry point name - const VkSpecializationInfo* pSpecializationInfo - - - VkStructureType sType - const void* pNext - VkPipelineCreateFlags flagsPipeline creation flags - VkPipelineShaderStageCreateInfo stage - VkPipelineLayout layoutInterface layout of the pipeline - VkPipeline basePipelineHandleIf 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 - int32_t basePipelineIndexIf 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 - - - uint32_t bindingVertex buffer binding id - uint32_t strideDistance between vertices in bytes (0 = no advancement) - VkVertexInputRate inputRateThe rate at which the vertex data is consumed - - - uint32_t locationlocation of the shader vertex attrib - uint32_t bindingVertex buffer binding id - VkFormat formatformat of source data - uint32_t offsetOffset of first element in bytes from base of vertex - - - VkStructureType sType - const void* pNext - VkPipelineVertexInputStateCreateFlags flags - uint32_t vertexBindingDescriptionCountnumber of bindings - const VkVertexInputBindingDescription* pVertexBindingDescriptions - uint32_t vertexAttributeDescriptionCountnumber of attributes - const VkVertexInputAttributeDescription* pVertexAttributeDescriptions - - - VkStructureType sType - const void* pNext - VkPipelineInputAssemblyStateCreateFlags flags - VkPrimitiveTopology topology - VkBool32 primitiveRestartEnable - - - VkStructureType sType - const void* pNext - VkPipelineTessellationStateCreateFlags flags - uint32_t patchControlPoints - - - VkStructureType sType - const void* pNext - VkPipelineViewportStateCreateFlags flags - uint32_t viewportCount - const VkViewport* pViewports - uint32_t scissorCount - const VkRect2D* pScissors - - - VkStructureType sType - const void* pNext - VkPipelineRasterizationStateCreateFlags flags - VkBool32 depthClampEnable - VkBool32 rasterizerDiscardEnable - VkPolygonMode polygonModeoptional (GL45) - VkCullModeFlags cullMode - VkFrontFace frontFace - VkBool32 depthBiasEnable - float depthBiasConstantFactor - float depthBiasClamp - float depthBiasSlopeFactor - float lineWidth - - - VkStructureType sType - const void* pNext - VkPipelineMultisampleStateCreateFlags flags - VkSampleCountFlagBits rasterizationSamplesNumber of samples used for rasterization - VkBool32 sampleShadingEnableoptional (GL45) - float minSampleShadingoptional (GL45) - const VkSampleMask* pSampleMaskArray of sampleMask words - VkBool32 alphaToCoverageEnable - VkBool32 alphaToOneEnable - - - VkBool32 blendEnable - VkBlendFactor srcColorBlendFactor - VkBlendFactor dstColorBlendFactor - VkBlendOp colorBlendOp - VkBlendFactor srcAlphaBlendFactor - VkBlendFactor dstAlphaBlendFactor - VkBlendOp alphaBlendOp - VkColorComponentFlags colorWriteMask - - - VkStructureType sType - const void* pNext - VkPipelineColorBlendStateCreateFlags flags - VkBool32 logicOpEnable - VkLogicOp logicOp - uint32_t attachmentCount# of pAttachments - const VkPipelineColorBlendAttachmentState* pAttachments - float blendConstants[4] - - - VkStructureType sType - const void* pNext - VkPipelineDynamicStateCreateFlags flags - uint32_t dynamicStateCount - const VkDynamicState* pDynamicStates - - - VkStencilOp failOp - VkStencilOp passOp - VkStencilOp depthFailOp - VkCompareOp compareOp - uint32_t compareMask - uint32_t writeMask - uint32_t reference - - - VkStructureType sType - const void* pNext - VkPipelineDepthStencilStateCreateFlags flags - VkBool32 depthTestEnable - VkBool32 depthWriteEnable - VkCompareOp depthCompareOp - VkBool32 depthBoundsTestEnableoptional (depth_bounds_test) - VkBool32 stencilTestEnable - VkStencilOpState front - VkStencilOpState back - float minDepthBounds - float maxDepthBounds - - - VkStructureType sType - const void* pNext - VkPipelineCreateFlags flagsPipeline creation flags - uint32_t stageCount - const VkPipelineShaderStageCreateInfo* pStagesOne entry for each active shader stage - const VkPipelineVertexInputStateCreateInfo* pVertexInputState - const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState - const VkPipelineTessellationStateCreateInfo* pTessellationState - const VkPipelineViewportStateCreateInfo* pViewportState - const VkPipelineRasterizationStateCreateInfo* pRasterizationState - const VkPipelineMultisampleStateCreateInfo* pMultisampleState - const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState - const VkPipelineColorBlendStateCreateInfo* pColorBlendState - const VkPipelineDynamicStateCreateInfo* pDynamicState - VkPipelineLayout layoutInterface layout of the pipeline - VkRenderPass renderPass - uint32_t subpass - VkPipeline basePipelineHandleIf 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 - int32_t basePipelineIndexIf 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 - - - VkStructureType sType - const void* pNext - VkPipelineCacheCreateFlags flags - size_t initialDataSizeSize of initial data to populate cache, in bytes - const void* pInitialDataInitial data to populate cache - - - VkShaderStageFlags stageFlagsWhich stages use the range - uint32_t offsetStart of the range, in bytes - uint32_t sizeSize of the range, in bytes - - - VkStructureType sType - const void* pNext - VkPipelineLayoutCreateFlags flags - uint32_t setLayoutCountNumber of descriptor sets interfaced by the pipeline - const VkDescriptorSetLayout* pSetLayoutsArray of setCount number of descriptor set layout objects defining the layout of the - uint32_t pushConstantRangeCountNumber of push-constant ranges used by the pipeline - const VkPushConstantRange* pPushConstantRangesArray of pushConstantRangeCount number of ranges used by various shader stages - - - VkStructureType sType - const void* pNext - VkSamplerCreateFlags flags - VkFilter magFilterFilter mode for magnification - VkFilter minFilterFilter mode for minifiation - VkSamplerMipmapMode mipmapModeMipmap selection mode - VkSamplerAddressMode addressModeU - VkSamplerAddressMode addressModeV - VkSamplerAddressMode addressModeW - float mipLodBias - VkBool32 anisotropyEnable - float maxAnisotropy - VkBool32 compareEnable - VkCompareOp compareOp - float minLod - float maxLod - VkBorderColor borderColor - VkBool32 unnormalizedCoordinates - - - VkStructureType sType - const void* pNext - VkCommandPoolCreateFlags flagsCommand pool creation flags - uint32_t queueFamilyIndex - - - VkStructureType sType - const void* pNext - VkCommandPool commandPool - VkCommandBufferLevel level - uint32_t commandBufferCount - - - VkStructureType sType - const void* pNext - VkRenderPass renderPassRender pass for secondary command buffers - uint32_t subpass - VkFramebuffer framebufferFramebuffer for secondary command buffers - VkBool32 occlusionQueryEnableWhether this secondary command buffer may be executed during an occlusion query - VkQueryControlFlags queryFlagsQuery flags used by this secondary command buffer, if executed during an occlusion query - VkQueryPipelineStatisticFlags pipelineStatisticsPipeline statistics that may be counted for this secondary command buffer - - - VkStructureType sType - const void* pNext - VkCommandBufferUsageFlags flagsCommand buffer usage flags - const VkCommandBufferInheritanceInfo* pInheritanceInfoPointer to inheritance info for secondary command buffers - - - VkStructureType sType - const void* pNext - VkRenderPass renderPass - VkFramebuffer framebuffer - VkRect2D renderArea - uint32_t clearValueCount - const VkClearValue* pClearValues - - - float float32[4] - int32_t int32[4] - uint32_t uint32[4] - - - float depth - uint32_t stencil - - - VkClearColorValue color - VkClearDepthStencilValue depthStencil - - - VkImageAspectFlags aspectMask - uint32_t colorAttachment - VkClearValue clearValue - - - VkAttachmentDescriptionFlags flags - VkFormat format - VkSampleCountFlagBits samples - VkAttachmentLoadOp loadOpLoad operation for color or depth data - VkAttachmentStoreOp storeOpStore operation for color or depth data - VkAttachmentLoadOp stencilLoadOpLoad operation for stencil data - VkAttachmentStoreOp stencilStoreOpStore operation for stencil data - VkImageLayout initialLayout - VkImageLayout finalLayout - - - uint32_t attachment - VkImageLayout layout - - - VkSubpassDescriptionFlags flags - VkPipelineBindPoint pipelineBindPointMust be VK_PIPELINE_BIND_POINT_GRAPHICS for now - uint32_t inputAttachmentCount - const VkAttachmentReference* pInputAttachments - uint32_t colorAttachmentCount - const VkAttachmentReference* pColorAttachments - const VkAttachmentReference* pResolveAttachments - const VkAttachmentReference* pDepthStencilAttachment - uint32_t preserveAttachmentCount - const uint32_t* pPreserveAttachments - - - uint32_t srcSubpass - uint32_t dstSubpass - VkPipelineStageFlags srcStageMask - VkPipelineStageFlags dstStageMask - VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize - VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize - VkDependencyFlags dependencyFlags - - - VkStructureType sType - const void* pNext - VkRenderPassCreateFlags flags - uint32_t attachmentCount - const VkAttachmentDescription* pAttachments - uint32_t subpassCount - const VkSubpassDescription* pSubpasses - uint32_t dependencyCount - const VkSubpassDependency* pDependencies - - - VkStructureType sType - const void* pNext - VkEventCreateFlags flagsEvent creation flags - - - VkStructureType sType - const void* pNext - VkFenceCreateFlags flagsFence creation flags - - - VkBool32 robustBufferAccessout of bounds buffer accesses are well defined - VkBool32 fullDrawIndexUint32full 32-bit range of indices for indexed draw calls - VkBool32 imageCubeArrayimage views which are arrays of cube maps - VkBool32 independentBlendblending operations are controlled per-attachment - VkBool32 geometryShadergeometry stage - VkBool32 tessellationShadertessellation control and evaluation stage - VkBool32 sampleRateShadingper-sample shading and interpolation - VkBool32 dualSrcBlendblend operations which take two sources - VkBool32 logicOplogic operations - VkBool32 multiDrawIndirectmulti draw indirect - VkBool32 drawIndirectFirstInstanceindirect draws can use non-zero firstInstance - VkBool32 depthClampdepth clamping - VkBool32 depthBiasClampdepth bias clamping - VkBool32 fillModeNonSolidpoint and wireframe fill modes - VkBool32 depthBoundsdepth bounds test - VkBool32 wideLineslines with width greater than 1 - VkBool32 largePointspoints with size greater than 1 - VkBool32 alphaToOnethe fragment alpha component can be forced to maximum representable alpha value - VkBool32 multiViewportviewport arrays - VkBool32 samplerAnisotropyanisotropic sampler filtering - VkBool32 textureCompressionETC2ETC texture compression formats - VkBool32 textureCompressionASTC_LDRASTC LDR texture compression formats - VkBool32 textureCompressionBCBC1-7 texture compressed formats - VkBool32 occlusionQueryPreciseprecise occlusion queries returning actual sample counts - VkBool32 pipelineStatisticsQuerypipeline statistics query - VkBool32 vertexPipelineStoresAndAtomicsstores and atomic ops on storage buffers and images are supported in vertex, tessellation, and geometry stages - VkBool32 fragmentStoresAndAtomicsstores and atomic ops on storage buffers and images are supported in the fragment stage - VkBool32 shaderTessellationAndGeometryPointSizetessellation and geometry stages can export point size - VkBool32 shaderImageGatherExtendedimage gather with run-time values and independent offsets - VkBool32 shaderStorageImageExtendedFormatsthe extended set of formats can be used for storage images - VkBool32 shaderStorageImageMultisamplemultisample images can be used for storage images - VkBool32 shaderStorageImageReadWithoutFormatread from storage image does not require format qualifier - VkBool32 shaderStorageImageWriteWithoutFormatwrite to storage image does not require format qualifier - VkBool32 shaderUniformBufferArrayDynamicIndexingarrays of uniform buffers can be accessed with dynamically uniform indices - VkBool32 shaderSampledImageArrayDynamicIndexingarrays of sampled images can be accessed with dynamically uniform indices - VkBool32 shaderStorageBufferArrayDynamicIndexingarrays of storage buffers can be accessed with dynamically uniform indices - VkBool32 shaderStorageImageArrayDynamicIndexingarrays of storage images can be accessed with dynamically uniform indices - VkBool32 shaderClipDistanceclip distance in shaders - VkBool32 shaderCullDistancecull distance in shaders - VkBool32 shaderFloat6464-bit floats (doubles) in shaders - VkBool32 shaderInt6464-bit integers in shaders - VkBool32 shaderInt1616-bit integers in shaders - VkBool32 shaderResourceResidencyshader can use texture operations that return resource residency information (requires sparseNonResident support) - VkBool32 shaderResourceMinLodshader can use texture operations that specify minimum resource LOD - VkBool32 sparseBindingSparse resources support: Resource memory can be managed at opaque page level rather than object level - VkBool32 sparseResidencyBufferSparse resources support: GPU can access partially resident buffers - VkBool32 sparseResidencyImage2DSparse resources support: GPU can access partially resident 2D (non-MSAA non-depth/stencil) images - VkBool32 sparseResidencyImage3DSparse resources support: GPU can access partially resident 3D images - VkBool32 sparseResidency2SamplesSparse resources support: GPU can access partially resident MSAA 2D images with 2 samples - VkBool32 sparseResidency4SamplesSparse resources support: GPU can access partially resident MSAA 2D images with 4 samples - VkBool32 sparseResidency8SamplesSparse resources support: GPU can access partially resident MSAA 2D images with 8 samples - VkBool32 sparseResidency16SamplesSparse resources support: GPU can access partially resident MSAA 2D images with 16 samples - VkBool32 sparseResidencyAliasedSparse resources support: GPU can correctly access data aliased into multiple locations (opt-in) - VkBool32 variableMultisampleRatemultisample rate must be the same for all pipelines in a subpass - VkBool32 inheritedQueriesQueries may be inherited from primary to secondary command buffers - - - VkBool32 residencyStandard2DBlockShapeSparse resources support: GPU will access all 2D (single sample) sparse resources using the standard sparse image block shapes (based on pixel format) - VkBool32 residencyStandard2DMultisampleBlockShapeSparse resources support: GPU will access all 2D (multisample) sparse resources using the standard sparse image block shapes (based on pixel format) - VkBool32 residencyStandard3DBlockShapeSparse resources support: GPU will access all 3D sparse resources using the standard sparse image block shapes (based on pixel format) - VkBool32 residencyAlignedMipSizeSparse 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 - VkBool32 residencyNonResidentStrictSparse resources support: GPU can consistently access non-resident regions of a resource, all reads return as if data is 0, writes are discarded - - - resource maximum sizes - uint32_t maxImageDimension1Dmax 1D image dimension - uint32_t maxImageDimension2Dmax 2D image dimension - uint32_t maxImageDimension3Dmax 3D image dimension - uint32_t maxImageDimensionCubemax cubemap image dimension - uint32_t maxImageArrayLayersmax layers for image arrays - uint32_t maxTexelBufferElementsmax texel buffer size (fstexels) - uint32_t maxUniformBufferRangemax uniform buffer range (bytes) - uint32_t maxStorageBufferRangemax storage buffer range (bytes) - uint32_t maxPushConstantsSizemax size of the push constants pool (bytes) - memory limits - uint32_t maxMemoryAllocationCountmax number of device memory allocations supported - uint32_t maxSamplerAllocationCountmax number of samplers that can be allocated on a device - VkDeviceSize bufferImageGranularityGranularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage - VkDeviceSize sparseAddressSpaceSizeTotal address space available for sparse allocations (bytes) - descriptor set limits - uint32_t maxBoundDescriptorSetsmax number of descriptors sets that can be bound to a pipeline - uint32_t maxPerStageDescriptorSamplersmax number of samplers allowed per-stage in a descriptor set - uint32_t maxPerStageDescriptorUniformBuffersmax number of uniform buffers allowed per-stage in a descriptor set - uint32_t maxPerStageDescriptorStorageBuffersmax number of storage buffers allowed per-stage in a descriptor set - uint32_t maxPerStageDescriptorSampledImagesmax number of sampled images allowed per-stage in a descriptor set - uint32_t maxPerStageDescriptorStorageImagesmax number of storage images allowed per-stage in a descriptor set - uint32_t maxPerStageDescriptorInputAttachmentsmax number of input attachments allowed per-stage in a descriptor set - uint32_t maxPerStageResourcesmax number of resources allowed by a single stage - uint32_t maxDescriptorSetSamplersmax number of samplers allowed in all stages in a descriptor set - uint32_t maxDescriptorSetUniformBuffersmax number of uniform buffers allowed in all stages in a descriptor set - uint32_t maxDescriptorSetUniformBuffersDynamicmax number of dynamic uniform buffers allowed in all stages in a descriptor set - uint32_t maxDescriptorSetStorageBuffersmax number of storage buffers allowed in all stages in a descriptor set - uint32_t maxDescriptorSetStorageBuffersDynamicmax number of dynamic storage buffers allowed in all stages in a descriptor set - uint32_t maxDescriptorSetSampledImagesmax number of sampled images allowed in all stages in a descriptor set - uint32_t maxDescriptorSetStorageImagesmax number of storage images allowed in all stages in a descriptor set - uint32_t maxDescriptorSetInputAttachmentsmax number of input attachments allowed in all stages in a descriptor set - vertex stage limits - uint32_t maxVertexInputAttributesmax number of vertex input attribute slots - uint32_t maxVertexInputBindingsmax number of vertex input binding slots - uint32_t maxVertexInputAttributeOffsetmax vertex input attribute offset added to vertex buffer offset - uint32_t maxVertexInputBindingStridemax vertex input binding stride - uint32_t maxVertexOutputComponentsmax number of output components written by vertex shader - tessellation control stage limits - uint32_t maxTessellationGenerationLevelmax level supported by tessellation primitive generator - uint32_t maxTessellationPatchSizemax patch size (vertices) - uint32_t maxTessellationControlPerVertexInputComponentsmax number of input components per-vertex in TCS - uint32_t maxTessellationControlPerVertexOutputComponentsmax number of output components per-vertex in TCS - uint32_t maxTessellationControlPerPatchOutputComponentsmax number of output components per-patch in TCS - uint32_t maxTessellationControlTotalOutputComponentsmax total number of per-vertex and per-patch output components in TCS - tessellation evaluation stage limits - uint32_t maxTessellationEvaluationInputComponentsmax number of input components per vertex in TES - uint32_t maxTessellationEvaluationOutputComponentsmax number of output components per vertex in TES - geometry stage limits - uint32_t maxGeometryShaderInvocationsmax invocation count supported in geometry shader - uint32_t maxGeometryInputComponentsmax number of input components read in geometry stage - uint32_t maxGeometryOutputComponentsmax number of output components written in geometry stage - uint32_t maxGeometryOutputVerticesmax number of vertices that can be emitted in geometry stage - uint32_t maxGeometryTotalOutputComponentsmax total number of components (all vertices) written in geometry stage - fragment stage limits - uint32_t maxFragmentInputComponentsmax number of input components read in fragment stage - uint32_t maxFragmentOutputAttachmentsmax number of output attachments written in fragment stage - uint32_t maxFragmentDualSrcAttachmentsmax number of output attachments written when using dual source blending - uint32_t maxFragmentCombinedOutputResourcesmax total number of storage buffers, storage images and output buffers - compute stage limits - uint32_t maxComputeSharedMemorySizemax total storage size of work group local storage (bytes) - uint32_t maxComputeWorkGroupCount[3]max num of compute work groups that may be dispatched by a single command (x,y,z) - uint32_t maxComputeWorkGroupInvocationsmax total compute invocations in a single local work group - uint32_t maxComputeWorkGroupSize[3]max local size of a compute work group (x,y,z) - uint32_t subPixelPrecisionBitsnumber bits of subpixel precision in screen x and y - uint32_t subTexelPrecisionBitsnumber bits of precision for selecting texel weights - uint32_t mipmapPrecisionBitsnumber bits of precision for selecting mipmap weights - uint32_t maxDrawIndexedIndexValuemax index value for indexed draw calls (for 32-bit indices) - uint32_t maxDrawIndirectCountmax draw count for indirect draw calls - float maxSamplerLodBiasmax absolute sampler LOD bias - float maxSamplerAnisotropymax degree of sampler anisotropy - uint32_t maxViewportsmax number of active viewports - uint32_t maxViewportDimensions[2]max viewport dimensions (x,y) - float viewportBoundsRange[2]viewport bounds range (min,max) - uint32_t viewportSubPixelBitsnumber bits of subpixel precision for viewport - size_t minMemoryMapAlignmentmin required alignment of pointers returned by MapMemory (bytes) - VkDeviceSize minTexelBufferOffsetAlignmentmin required alignment for texel buffer offsets (bytes) - VkDeviceSize minUniformBufferOffsetAlignmentmin required alignment for uniform buffer sizes and offsets (bytes) - VkDeviceSize minStorageBufferOffsetAlignmentmin required alignment for storage buffer offsets (bytes) - int32_t minTexelOffsetmin texel offset for OpTextureSampleOffset - uint32_t maxTexelOffsetmax texel offset for OpTextureSampleOffset - int32_t minTexelGatherOffsetmin texel offset for OpTextureGatherOffset - uint32_t maxTexelGatherOffsetmax texel offset for OpTextureGatherOffset - float minInterpolationOffsetfurthest negative offset for interpolateAtOffset - float maxInterpolationOffsetfurthest positive offset for interpolateAtOffset - uint32_t subPixelInterpolationOffsetBitsnumber of subpixel bits for interpolateAtOffset - uint32_t maxFramebufferWidthmax width for a framebuffer - uint32_t maxFramebufferHeightmax height for a framebuffer - uint32_t maxFramebufferLayersmax layer count for a layered framebuffer - VkSampleCountFlags framebufferColorSampleCountssupported color sample counts for a framebuffer - VkSampleCountFlags framebufferDepthSampleCountssupported depth sample counts for a framebuffer - VkSampleCountFlags framebufferStencilSampleCountssupported stencil sample counts for a framebuffer - VkSampleCountFlags framebufferNoAttachmentsSampleCountssupported sample counts for a framebuffer with no attachments - uint32_t maxColorAttachmentsmax number of color attachments per subpass - VkSampleCountFlags sampledImageColorSampleCountssupported color sample counts for a non-integer sampled image - VkSampleCountFlags sampledImageIntegerSampleCountssupported sample counts for an integer image - VkSampleCountFlags sampledImageDepthSampleCountssupported depth sample counts for a sampled image - VkSampleCountFlags sampledImageStencilSampleCountssupported stencil sample counts for a sampled image - VkSampleCountFlags storageImageSampleCountssupported sample counts for a storage image - uint32_t maxSampleMaskWordsmax number of sample mask words - VkBool32 timestampComputeAndGraphicstimestamps on graphics and compute queues - float timestampPeriodnumber of nanoseconds it takes for timestamp query value to increment by 1 - uint32_t maxClipDistancesmax number of clip distances - uint32_t maxCullDistancesmax number of cull distances - uint32_t maxCombinedClipAndCullDistancesmax combined number of user clipping - uint32_t discreteQueuePrioritiesdistinct queue priorities available - float pointSizeRange[2]range (min,max) of supported point sizes - float lineWidthRange[2]range (min,max) of supported line widths - float pointSizeGranularitygranularity of supported point sizes - float lineWidthGranularitygranularity of supported line widths - VkBool32 strictLinesline rasterization follows preferred rules - VkBool32 standardSampleLocationssupports standard sample locations for all supported sample counts - VkDeviceSize optimalBufferCopyOffsetAlignmentoptimal offset of buffer copies - VkDeviceSize optimalBufferCopyRowPitchAlignmentoptimal pitch of buffer copies - VkDeviceSize nonCoherentAtomSizeminimum size and alignment for non-coherent host-mapped device memory access - - - VkStructureType sType - const void* pNext - VkSemaphoreCreateFlags flagsSemaphore creation flags - - - VkStructureType sType - const void* pNext - VkQueryPoolCreateFlags flags - VkQueryType queryType - uint32_t queryCount - VkQueryPipelineStatisticFlags pipelineStatisticsOptional - - - VkStructureType sType - const void* pNext - VkFramebufferCreateFlags flags - VkRenderPass renderPass - uint32_t attachmentCount - const VkImageView* pAttachments - uint32_t width - uint32_t height - uint32_t layers - - - uint32_t vertexCount - uint32_t instanceCount - uint32_t firstVertex - uint32_t firstInstance - - - uint32_t indexCount - uint32_t instanceCount - uint32_t firstIndex - int32_t vertexOffset - uint32_t firstInstance - - - uint32_t x - uint32_t y - uint32_t z - - - VkStructureType sType - const void* pNext - uint32_t waitSemaphoreCount - const VkSemaphore* pWaitSemaphores - const VkPipelineStageFlags* pWaitDstStageMask - uint32_t commandBufferCount - const VkCommandBuffer* pCommandBuffers - uint32_t signalSemaphoreCount - const VkSemaphore* pSignalSemaphores - - WSI extensions - - VkDisplayKHR displayHandle of the display object - const char* displayNameName of the display - VkExtent2D physicalDimensionsIn millimeters? - VkExtent2D physicalResolutionMax resolution for CRT? - VkSurfaceTransformFlagsKHR supportedTransformsone or more bits from VkSurfaceTransformFlagsKHR - VkBool32 planeReorderPossibleVK_TRUE if the overlay plane's z-order can be changed on this display. - VkBool32 persistentContentVK_TRUE if this is a "smart" display that supports self-refresh/internal buffering. - - - VkDisplayKHR currentDisplayDisplay the plane is currently associated with. Will be VK_NULL_HANDLE if the plane is not in use. - uint32_t currentStackIndexCurrent z-order of the plane. - - - VkExtent2D visibleRegionVisible scanout region. - uint32_t refreshRateNumber of times per second the display is updated. - - - VkDisplayModeKHR displayModeHandle of this display mode. - VkDisplayModeParametersKHR parametersThe parameters this mode uses. - - - VkStructureType sType - const void* pNext - VkDisplayModeCreateFlagsKHR flags - VkDisplayModeParametersKHR parametersThe parameters this mode uses. - - - VkDisplayPlaneAlphaFlagsKHR supportedAlphaTypes of alpha blending supported, if any. - VkOffset2D minSrcPositionDoes the plane have any position and extent restrictions? - VkOffset2D maxSrcPosition - VkExtent2D minSrcExtent - VkExtent2D maxSrcExtent - VkOffset2D minDstPosition - VkOffset2D maxDstPosition - VkExtent2D minDstExtent - VkExtent2D maxDstExtent - - - VkStructureType sType - const void* pNext - VkDisplaySurfaceCreateFlagsKHR flags - VkDisplayModeKHR displayModeThe mode to use when displaying this surface - uint32_t planeIndexThe plane on which this surface appears. Must be between 0 and the value returned by vkGetPhysicalDeviceDisplayPlanePropertiesKHR() in pPropertyCount. - uint32_t planeStackIndexThe z-order of the plane. - VkSurfaceTransformFlagBitsKHR transformTransform to apply to the images as part of the scanout operation - float globalAlphaGlobal alpha value. Must be between 0 and 1, inclusive. Ignored if alphaMode is not VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR - VkDisplayPlaneAlphaFlagBitsKHR alphaModeWhat type of alpha blending to use. Must be a bit from vkGetDisplayPlanePropertiesKHR::supportedAlpha. - VkExtent2D imageExtentsize of the images to use with this surface - - - VkStructureType sType - const void* pNext - VkRect2D srcRectRectangle within the presentable image to read pixel data from when presenting to the display. - VkRect2D dstRectRectangle within the current display mode's visible region to display srcRectangle in. - VkBool32 persistentFor smart displays, use buffered mode. If the display properties member "persistentMode" is VK_FALSE, this member must always be VK_FALSE. - - - uint32_t minImageCountSupported minimum number of images for the surface - uint32_t maxImageCountSupported maximum number of images for the surface, 0 for unlimited - VkExtent2D currentExtentCurrent image width and height for the surface, (0, 0) if undefined - VkExtent2D minImageExtentSupported minimum image width and height for the surface - VkExtent2D maxImageExtentSupported maximum image width and height for the surface - uint32_t maxImageArrayLayersSupported maximum number of image layers for the surface - VkSurfaceTransformFlagsKHR supportedTransforms1 or more bits representing the transforms supported - VkSurfaceTransformFlagBitsKHR currentTransformThe surface's current transform relative to the device's natural orientation - VkCompositeAlphaFlagsKHR supportedCompositeAlpha1 or more bits representing the alpha compositing modes supported - VkImageUsageFlags supportedUsageFlagsSupported image usage flags for the surface - - - VkStructureType sType - const void* pNext - VkAndroidSurfaceCreateFlagsKHR flags - struct ANativeWindow* window - - - VkStructureType sType - const void* pNext - VkMirSurfaceCreateFlagsKHR flags - MirConnection* connection - MirSurface* mirSurface - - - VkStructureType sType - const void* pNext - VkViSurfaceCreateFlagsNN flags - void* window - - - VkStructureType sType - const void* pNext - VkWaylandSurfaceCreateFlagsKHR flags - struct wl_display* display - struct wl_surface* surface - - - VkStructureType sType - const void* pNext - VkWin32SurfaceCreateFlagsKHR flags - HINSTANCE hinstance - HWND hwnd - - - VkStructureType sType - const void* pNext - VkXlibSurfaceCreateFlagsKHR flags - Display* dpy - Window window - - - VkStructureType sType - const void* pNext - VkXcbSurfaceCreateFlagsKHR flags - xcb_connection_t* connection - xcb_window_t window - - - VkFormat formatSupported pair of rendering format - VkColorSpaceKHR colorSpaceand color space for the surface - - - VkStructureType sType - const void* pNext - VkSwapchainCreateFlagsKHR flags - VkSurfaceKHR surfaceThe swapchain's target surface - uint32_t minImageCountMinimum number of presentation images the application needs - VkFormat imageFormatFormat of the presentation images - VkColorSpaceKHR imageColorSpaceColorspace of the presentation images - VkExtent2D imageExtentDimensions of the presentation images - uint32_t imageArrayLayersDetermines the number of views for multiview/stereo presentation - VkImageUsageFlags imageUsageBits indicating how the presentation images will be used - VkSharingMode imageSharingModeSharing mode used for the presentation images - uint32_t queueFamilyIndexCountNumber of queue families having access to the images in case of concurrent sharing mode - const uint32_t* pQueueFamilyIndicesArray of queue family indices having access to the images in case of concurrent sharing mode - VkSurfaceTransformFlagBitsKHR preTransformThe transform, relative to the device's natural orientation, applied to the image content prior to presentation - VkCompositeAlphaFlagBitsKHR compositeAlphaThe alpha blending mode used when compositing this surface with other surfaces in the window system - VkPresentModeKHR presentModeWhich presentation mode to use for presents on this swap chain - VkBool32 clippedSpecifies whether presentable images may be affected by window clip regions - VkSwapchainKHR oldSwapchainExisting swap chain to replace, if any - - - VkStructureType sType - const void* pNext - uint32_t waitSemaphoreCountNumber of semaphores to wait for before presenting - const VkSemaphore* pWaitSemaphoresSemaphores to wait for before presenting - uint32_t swapchainCountNumber of swapchains to present in this call - const VkSwapchainKHR* pSwapchainsSwapchains to present an image from - const uint32_t* pImageIndicesIndices of which presentable images to present - VkResult* pResultsOptional (i.e. if non-NULL) VkResult for each swapchain - - - VkStructureType sType - const void* pNext - VkDebugReportFlagsEXT flagsIndicates which events call this callback - PFN_vkDebugReportCallbackEXT pfnCallbackFunction pointer of a callback function - void* pUserDataUser data provided to callback function - - - VkStructureType sTypeMust be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT - const void* pNext - uint32_t disabledValidationCheckCountNumber of validation checks to disable - VkValidationCheckEXT* pDisabledValidationChecksValidation checks to disable - - - VkStructureType sType - const void* pNext - VkRasterizationOrderAMD rasterizationOrderRasterization order to use for the pipeline - - - VkStructureType sType - const void* pNext - VkDebugReportObjectTypeEXT objectTypeThe type of the object - uint64_t objectThe handle of the object, cast to uint64_t - const char* pObjectNameName to apply to the object - - - VkStructureType sType - const void* pNext - VkDebugReportObjectTypeEXT objectTypeThe type of the object - uint64_t objectThe handle of the object, cast to uint64_t - uint64_t tagNameThe name of the tag to set on the object - size_t tagSizeThe length in bytes of the tag data - const void* pTagTag data to attach to the object - - - VkStructureType sType - const void* pNext - const char* pMarkerNameName of the debug marker - float color[4]Optional color for debug marker - - - VkStructureType sType - const void* pNext - VkBool32 dedicatedAllocationWhether this image uses a dedicated allocation - - - VkStructureType sType - const void* pNext - VkBool32 dedicatedAllocationWhether this buffer uses a dedicated allocation - - - VkStructureType sType - const void* pNext - VkImage imageImage that this allocation will be bound to - VkBuffer bufferBuffer that this allocation will be bound to - - - VkImageFormatProperties imageFormatProperties - VkExternalMemoryFeatureFlagsNV externalMemoryFeatures - VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes - VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagsNV handleTypes - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagsNV handleTypes - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagsNV handleType - HANDLE handle - - - VkStructureType sType - const void* pNext - const SECURITY_ATTRIBUTES* pAttributes - DWORD dwAccess - - - VkStructureType sType - const void* pNext - uint32_t acquireCount - const VkDeviceMemory* pAcquireSyncs - const uint64_t* pAcquireKeys - const uint32_t* pAcquireTimeoutMilliseconds - uint32_t releaseCount - const VkDeviceMemory* pReleaseSyncs - const uint64_t* pReleaseKeys - - - VkStructureType sType - const void* pNext - VkBool32 computeBindingPointSupport - - - VkStructureType sType - const void* pNext - uint32_t maxIndirectCommandsLayoutTokenCount - uint32_t maxObjectEntryCounts - uint32_t minSequenceCountBufferOffsetAlignment - uint32_t minSequenceIndexBufferOffsetAlignment - uint32_t minCommandsTokenBufferOffsetAlignment - - - VkIndirectCommandsTokenTypeNVX tokenType - VkBuffer bufferbuffer containing tableEntries and additional data for indirectCommands - VkDeviceSize offsetoffset from the base address of the buffer - - - VkIndirectCommandsTokenTypeNVX tokenType - uint32_t bindingUnitBinding unit for vertex attribute / descriptor set, offset for pushconstants - uint32_t dynamicCountNumber of variable dynamic values for descriptor set / push constants - uint32_t divisorRate the which the array is advanced per element (must be power of 2, minimum 1) - - - VkStructureType sType - const void* pNext - VkPipelineBindPoint pipelineBindPoint - VkIndirectCommandsLayoutUsageFlagsNVX flags - uint32_t tokenCount - const VkIndirectCommandsLayoutTokenNVX* pTokens - - - VkStructureType sType - const void* pNext - VkObjectTableNVX objectTable - VkIndirectCommandsLayoutNVX indirectCommandsLayout - uint32_t indirectCommandsTokenCount - const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens - uint32_t maxSequencesCount - VkCommandBuffer targetCommandBuffer - VkBuffer sequencesCountBuffer - VkDeviceSize sequencesCountOffset - VkBuffer sequencesIndexBuffer - VkDeviceSize sequencesIndexOffset - - - VkStructureType sType - const void* pNext - VkObjectTableNVX objectTable - VkIndirectCommandsLayoutNVX indirectCommandsLayout - uint32_t maxSequencesCount - - - VkStructureType sType - const void* pNext - uint32_t objectCount - const VkObjectEntryTypeNVX* pObjectEntryTypes - const uint32_t* pObjectEntryCounts - const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags - - uint32_t maxUniformBuffersPerDescriptor - uint32_t maxStorageBuffersPerDescriptor - uint32_t maxStorageImagesPerDescriptor - uint32_t maxSampledImagesPerDescriptor - uint32_t maxPipelineLayouts - - - VkObjectEntryTypeNVX type - VkObjectEntryUsageFlagsNVX flags - - - VkObjectEntryTypeNVX type - VkObjectEntryUsageFlagsNVX flags - VkPipeline pipeline - - - VkObjectEntryTypeNVX type - VkObjectEntryUsageFlagsNVX flags - VkPipelineLayout pipelineLayout - VkDescriptorSet descriptorSet - - - VkObjectEntryTypeNVX type - VkObjectEntryUsageFlagsNVX flags - VkBuffer buffer - - - VkObjectEntryTypeNVX type - VkObjectEntryUsageFlagsNVX flags - VkBuffer buffer - VkIndexType indexType - - - VkObjectEntryTypeNVX type - VkObjectEntryUsageFlagsNVX flags - VkPipelineLayout pipelineLayout - VkShaderStageFlags stageFlags - - - VkStructureType sType - void* pNext - VkPhysicalDeviceFeatures features - - - - VkStructureType sType - void* pNext - VkPhysicalDeviceProperties properties - - - - VkStructureType sType - void* pNext - VkFormatProperties formatProperties - - - - VkStructureType sType - void* pNext - VkImageFormatProperties imageFormatProperties - - - - VkStructureType sType - const void* pNext - VkFormat format - VkImageType type - VkImageTiling tiling - VkImageUsageFlags usage - VkImageCreateFlags flags - - - - VkStructureType sType - void* pNext - VkQueueFamilyProperties queueFamilyProperties - - - - VkStructureType sType - void* pNext - VkPhysicalDeviceMemoryProperties memoryProperties - - - - VkStructureType sType - void* pNext - VkSparseImageFormatProperties properties - - - - VkStructureType sType - const void* pNext - VkFormat format - VkImageType type - VkSampleCountFlagBits samples - VkImageUsageFlags usage - VkImageTiling tiling - - - - VkStructureType sType - void* pNext - uint32_t maxPushDescriptors - - - VkStructureType sType - const void* pNext - uint32_t swapchainCountCopy of VkPresentInfoKHR::swapchainCount - const VkPresentRegionKHR* pRegionsThe regions that have changed - - - uint32_t rectangleCountNumber of rectangles in pRectangles - const VkRectLayerKHR* pRectanglesArray of rectangles that have changed in a swapchain's image(s) - - - VkOffset2D offsetupper-left corner of a rectangle that has not changed, in pixels of a presentation images - VkExtent2D extentDimensions of a rectangle that has not changed, in pixels of a presentation images - uint32_t layerLayer of a swapchain's image(s), for stereoscopic-3D images - - - VkStructureType sType - void* pNext - VkBool32 variablePointersStorageBuffer - VkBool32 variablePointers - - - - VkExternalMemoryFeatureFlags externalMemoryFeatures - VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes - VkExternalMemoryHandleTypeFlags compatibleHandleTypes - - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagBits handleType - - - - VkStructureType sType - void* pNext - VkExternalMemoryProperties externalMemoryProperties - - - - VkStructureType sType - const void* pNext - VkBufferCreateFlags flags - VkBufferUsageFlags usage - VkExternalMemoryHandleTypeFlagBits handleType - - - - VkStructureType sType - void* pNext - VkExternalMemoryProperties externalMemoryProperties - - - - VkStructureType sType - void* pNext - uint8_t deviceUUID[VK_UUID_SIZE] - uint8_t driverUUID[VK_UUID_SIZE] - uint8_t deviceLUID[VK_LUID_SIZE] - uint32_t deviceNodeMask - VkBool32 deviceLUIDValid - - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlags handleTypes - - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlags handleTypes - - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlags handleTypes - - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagBits handleType - HANDLE handle - LPCWSTR name - - - VkStructureType sType - const void* pNext - const SECURITY_ATTRIBUTES* pAttributes - DWORD dwAccess - LPCWSTR name - - - VkStructureType sType - void* pNext - uint32_t memoryTypeBits - - - VkStructureType sType - const void* pNext - VkDeviceMemory memory - VkExternalMemoryHandleTypeFlagBits handleType - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagBits handleType - int fd - - - VkStructureType sType - void* pNext - uint32_t memoryTypeBits - - - VkStructureType sType - const void* pNext - VkDeviceMemory memory - VkExternalMemoryHandleTypeFlagBits handleType - - - VkStructureType sType - const void* pNext - uint32_t acquireCount - const VkDeviceMemory* pAcquireSyncs - const uint64_t* pAcquireKeys - const uint32_t* pAcquireTimeouts - uint32_t releaseCount - const VkDeviceMemory* pReleaseSyncs - const uint64_t* pReleaseKeys - - - VkStructureType sType - const void* pNext - VkExternalSemaphoreHandleTypeFlagBits handleType - - - - VkStructureType sType - void* pNext - VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes - VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes - VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures - - - - VkStructureType sType - const void* pNext - VkExternalSemaphoreHandleTypeFlags handleTypes - - - - VkStructureType sType - const void* pNext - VkSemaphore semaphore - VkSemaphoreImportFlags flags - VkExternalSemaphoreHandleTypeFlagBits handleType - HANDLE handle - LPCWSTR name - - - VkStructureType sType - const void* pNext - const SECURITY_ATTRIBUTES* pAttributes - DWORD dwAccess - LPCWSTR name - - - VkStructureType sType - const void* pNext - uint32_t waitSemaphoreValuesCount - const uint64_t* pWaitSemaphoreValues - uint32_t signalSemaphoreValuesCount - const uint64_t* pSignalSemaphoreValues - - - VkStructureType sType - const void* pNext - VkSemaphore semaphore - VkExternalSemaphoreHandleTypeFlagBits handleType - - - VkStructureType sType - const void* pNext - VkSemaphore semaphore - VkSemaphoreImportFlags flags - VkExternalSemaphoreHandleTypeFlagBits handleType - int fd - - - VkStructureType sType - const void* pNext - VkSemaphore semaphore - VkExternalSemaphoreHandleTypeFlagBits handleType - - - VkStructureType sType - const void* pNext - VkExternalFenceHandleTypeFlagBits handleType - - - - VkStructureType sType - void* pNext - VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes - VkExternalFenceHandleTypeFlags compatibleHandleTypes - VkExternalFenceFeatureFlags externalFenceFeatures - - - - VkStructureType sType - const void* pNext - VkExternalFenceHandleTypeFlags handleTypes - - - - VkStructureType sType - const void* pNext - VkFence fence - VkFenceImportFlags flags - VkExternalFenceHandleTypeFlagBits handleType - HANDLE handle - LPCWSTR name - - - VkStructureType sType - const void* pNext - const SECURITY_ATTRIBUTES* pAttributes - DWORD dwAccess - LPCWSTR name - - - VkStructureType sType - const void* pNext - VkFence fence - VkExternalFenceHandleTypeFlagBits handleType - - - VkStructureType sType - const void* pNext - VkFence fence - VkFenceImportFlags flags - VkExternalFenceHandleTypeFlagBits handleType - int fd - - - VkStructureType sType - const void* pNext - VkFence fence - VkExternalFenceHandleTypeFlagBits handleType - - - VkStructureType sType - void* pNext - VkBool32 multiviewMultiple views in a renderpass - VkBool32 multiviewGeometryShaderMultiple views in a renderpass w/ geometry shader - VkBool32 multiviewTessellationShaderMultiple views in a renderpass w/ tessellation shader - - - - VkStructureType sType - void* pNext - uint32_t maxMultiviewViewCountmax number of views in a subpass - uint32_t maxMultiviewInstanceIndexmax instance index for a draw in a multiview subpass - - - - VkStructureType sType - const void* pNext - uint32_t subpassCount - const uint32_t* pViewMasks - uint32_t dependencyCount - const int32_t* pViewOffsets - uint32_t correlationMaskCount - const uint32_t* pCorrelationMasks - - - - VkStructureType sType - void* pNext - uint32_t minImageCountSupported minimum number of images for the surface - uint32_t maxImageCountSupported maximum number of images for the surface, 0 for unlimited - VkExtent2D currentExtentCurrent image width and height for the surface, (0, 0) if undefined - VkExtent2D minImageExtentSupported minimum image width and height for the surface - VkExtent2D maxImageExtentSupported maximum image width and height for the surface - uint32_t maxImageArrayLayersSupported maximum number of image layers for the surface - VkSurfaceTransformFlagsKHR supportedTransforms1 or more bits representing the transforms supported - VkSurfaceTransformFlagBitsKHR currentTransformThe surface's current transform relative to the device's natural orientation - VkCompositeAlphaFlagsKHR supportedCompositeAlpha1 or more bits representing the alpha compositing modes supported - VkImageUsageFlags supportedUsageFlagsSupported image usage flags for the surface - VkSurfaceCounterFlagsEXT supportedSurfaceCounters - - - VkStructureType sType - const void* pNext - VkDisplayPowerStateEXT powerState - - - VkStructureType sType - const void* pNext - VkDeviceEventTypeEXT deviceEvent - - - VkStructureType sType - const void* pNext - VkDisplayEventTypeEXT displayEvent - - - VkStructureType sType - const void* pNext - VkSurfaceCounterFlagsEXT surfaceCounters - - - VkStructureType sType - void* pNext - uint32_t physicalDeviceCount - VkPhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE] - VkBool32 subsetAllocation - - - - VkStructureType sType - const void* pNext - VkMemoryAllocateFlags flags - uint32_t deviceMask - - - - VkStructureType sType - const void* pNext - VkBuffer buffer - VkDeviceMemory memory - VkDeviceSize memoryOffset - - - - VkStructureType sType - const void* pNext - uint32_t deviceIndexCount - const uint32_t* pDeviceIndices - - - - VkStructureType sType - const void* pNext - VkImage image - VkDeviceMemory memory - VkDeviceSize memoryOffset - - - - VkStructureType sType - const void* pNext - uint32_t deviceIndexCount - const uint32_t* pDeviceIndices - uint32_t splitInstanceBindRegionCount - const VkRect2D* pSplitInstanceBindRegions - - - - VkStructureType sType - const void* pNext - uint32_t deviceMask - uint32_t deviceRenderAreaCount - const VkRect2D* pDeviceRenderAreas - - - - VkStructureType sType - const void* pNext - uint32_t deviceMask - - - - VkStructureType sType - const void* pNext - uint32_t waitSemaphoreCount - const uint32_t* pWaitSemaphoreDeviceIndices - uint32_t commandBufferCount - const uint32_t* pCommandBufferDeviceMasks - uint32_t signalSemaphoreCount - const uint32_t* pSignalSemaphoreDeviceIndices - - - - VkStructureType sType - const void* pNext - uint32_t resourceDeviceIndex - uint32_t memoryDeviceIndex - - - - VkStructureType sType - const void* pNext - uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE] - VkDeviceGroupPresentModeFlagsKHR modes - - - VkStructureType sType - const void* pNext - VkSwapchainKHR swapchain - - - VkStructureType sType - const void* pNext - VkSwapchainKHR swapchain - uint32_t imageIndex - - - VkStructureType sType - const void* pNext - VkSwapchainKHR swapchain - uint64_t timeout - VkSemaphore semaphore - VkFence fence - uint32_t deviceMask - - - VkStructureType sType - const void* pNext - uint32_t swapchainCount - const uint32_t* pDeviceMasks - VkDeviceGroupPresentModeFlagBitsKHR mode - - - VkStructureType sType - const void* pNext - uint32_t physicalDeviceCount - const VkPhysicalDevice* pPhysicalDevices - - - - VkStructureType sType - const void* pNext - VkDeviceGroupPresentModeFlagsKHR modes - - - uint32_t dstBindingBinding within the destination descriptor set to write - uint32_t dstArrayElementArray element within the destination binding to write - uint32_t descriptorCountNumber of descriptors to write - VkDescriptorType descriptorTypeDescriptor type to write - size_t offsetOffset into pData where the descriptors to update are stored - size_t strideStride between two descriptors in pData when writing more than one descriptor - - - - VkStructureType sType - void* pNext - VkDescriptorUpdateTemplateCreateFlags flags - uint32_t descriptorUpdateEntryCountNumber of descriptor update entries to use for the update template - const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntriesDescriptor update entries for the template - VkDescriptorUpdateTemplateType templateType - VkDescriptorSetLayout descriptorSetLayout - VkPipelineBindPoint pipelineBindPoint - VkPipelineLayoutpipelineLayoutIf used for push descriptors, this is the only allowed layout - uint32_t set - - - - float x - float y - - - Display primary in chromaticity coordinates - VkStructureType sType - const void* pNext - From SMPTE 2086 - VkXYColorEXT displayPrimaryRedDisplay primary's Red - VkXYColorEXT displayPrimaryGreenDisplay primary's Green - VkXYColorEXT displayPrimaryBlueDisplay primary's Blue - VkXYColorEXT whitePointDisplay primary's Blue - float maxLuminanceDisplay maximum luminance - float minLuminanceDisplay minimum luminance - From CTA 861.3 - float maxContentLightLevelContent maximum luminance - float maxFrameAverageLightLevel - - - uint64_t refreshDurationNumber of nanoseconds from the start of one refresh cycle to the next - - - uint32_t presentIDApplication-provided identifier, previously given to vkQueuePresentKHR - uint64_t desiredPresentTimeEarliest time an image should have been presented, previously given to vkQueuePresentKHR - uint64_t actualPresentTimeTime the image was actually displayed - uint64_t earliestPresentTimeEarliest time the image could have been displayed - uint64_t presentMarginHow early vkQueuePresentKHR was processed vs. how soon it needed to be and make earliestPresentTime - - - VkStructureType sType - const void* pNext - uint32_t swapchainCountCopy of VkPresentInfoKHR::swapchainCount - const VkPresentTimeGOOGLE* pTimesThe earliest times to present images - - - uint32_t presentIDApplication-provided identifier - uint64_t desiredPresentTimeEarliest time an image should be presented - - - VkStructureType sType - const void* pNext - VkIOSSurfaceCreateFlagsMVK flags - const void* pView - - - VkStructureType sType - const void* pNext - VkMacOSSurfaceCreateFlagsMVK flags - const void* pView - - - float xcoeff - float ycoeff - - - VkStructureType sType - const void* pNext - VkBool32 viewportWScalingEnable - uint32_t viewportCount - const VkViewportWScalingNV* pViewportWScalings - - - VkViewportCoordinateSwizzleNV x - VkViewportCoordinateSwizzleNV y - VkViewportCoordinateSwizzleNV z - VkViewportCoordinateSwizzleNV w - - - VkStructureType sType - const void* pNext - VkPipelineViewportSwizzleStateCreateFlagsNV flags - uint32_t viewportCount - const VkViewportSwizzleNV* pViewportSwizzles - - - VkStructureType sType - void* pNext - uint32_t maxDiscardRectanglesmax number of active discard rectangles - - - VkStructureType sType - const void* pNext - VkPipelineDiscardRectangleStateCreateFlagsEXT flags - VkDiscardRectangleModeEXT discardRectangleMode - uint32_t discardRectangleCount - const VkRect2D* pDiscardRectangles - - - VkStructureType sType - void* pNext - VkBool32 perViewPositionAllComponents - - - uint32_t subpass - uint32_t inputAttachmentIndex - VkImageAspectFlags aspectMask - - - - VkStructureType sType - const void* pNext - uint32_t aspectReferenceCount - const VkInputAttachmentAspectReference* pAspectReferences - - - - VkStructureType sType - const void* pNext - VkSurfaceKHR surface - - - VkStructureType sType - void* pNext - VkSurfaceCapabilitiesKHR surfaceCapabilities - - - VkStructureType sType - void* pNext - VkSurfaceFormatKHR surfaceFormat - - - VkStructureType sType - void* pNext - VkImageUsageFlags sharedPresentSupportedUsageFlagsSupported image usage flags if swapchain created using a shared present mode - - - VkStructureType sType - void* pNext - VkBool32 storageBuffer16BitAccess16-bit integer/floating-point variables supported in BufferBlock - VkBool32 uniformAndStorageBuffer16BitAccess16-bit integer/floating-point variables supported in BufferBlock and Block - VkBool32 storagePushConstant1616-bit integer/floating-point variables supported in PushConstant - VkBool32 storageInputOutput1616-bit integer/floating-point variables supported in shader inputs and outputs - - - - VkStructureType sType - void* pNext - uint32_t subgroupSizeThe size of a subgroup for this queue. - VkShaderStageFlags supportedStagesBitfield of what shader stages support subgroup operations - VkSubgroupFeatureFlags supportedOperationsBitfield of what subgroup operations are supported. - VkBool32 quadOperationsInAllStagesFlag to specify whether quad operations are available in all stages. - - - VkStructureType sType - const void* pNext - VkBuffer buffer - - - - VkStructureType sType - const void* pNext - VkImage image - - - - VkStructureType sType - const void* pNext - VkImage image - - - - VkStructureType sType - void* pNext - VkMemoryRequirements memoryRequirements - - - - VkStructureType sType - void* pNext - VkSparseImageMemoryRequirements memoryRequirements - - - - VkStructureType sType - void* pNext - VkPointClippingBehavior pointClippingBehavior - - - - VkStructureType sType - void* pNext - VkBool32 prefersDedicatedAllocation - VkBool32 requiresDedicatedAllocation - - - - VkStructureType sType - const void* pNext - VkImage imageImage that this allocation will be bound to - VkBuffer bufferBuffer that this allocation will be bound to - - - - VkStructureType sType - const void* pNext - VkImageUsageFlags usage - - - - VkStructureType sType - const void* pNext - VkTessellationDomainOrigin domainOrigin - - - - VkStructureType sType - const void* pNext - VkSamplerYcbcrConversion conversion - - - - VkStructureType sType - const void* pNext - VkFormat format - VkSamplerYcbcrModelConversion ycbcrModel - VkSamplerYcbcrRange ycbcrRange - VkComponentMapping components - VkChromaLocation xChromaOffset - VkChromaLocation yChromaOffset - VkFilter chromaFilter - VkBool32 forceExplicitReconstruction - - - - VkStructureType sType - const void* pNext - VkImageAspectFlagBits planeAspect - - - - VkStructureType sType - const void* pNext - VkImageAspectFlagBits planeAspect - - - - VkStructureType sType - void* pNext - VkBool32 samplerYcbcrConversionSampler color conversion supported - - - - VkStructureType sType - void* pNext - uint32_t combinedImageSamplerDescriptorCount - - - - VkStructureType sType - void* pNext - VkBool32 supportsTextureGatherLODBiasAMD - - - VkStructureType sType - const void* pNext - VkBool32 protectedSubmitSubmit protected command buffers - - - VkStructureType sType - void* pNext - VkBool32 protectedMemory - - - VkStructureType sType - void* pNext - VkBool32 protectedNoFault - - - VkStructureType sType - const void* pNext - VkDeviceQueueCreateFlags flags - uint32_t queueFamilyIndex - uint32_t queueIndex - - - VkStructureType sType - const void* pNext - VkPipelineCoverageToColorStateCreateFlagsNV flags - VkBool32 coverageToColorEnable - uint32_t coverageToColorLocation - - - VkStructureType sType - void* pNext - VkBool32 filterMinmaxSingleComponentFormats - VkBool32 filterMinmaxImageComponentMapping - - - float x - float y - - - VkStructureType sType - const void* pNext - VkSampleCountFlagBits sampleLocationsPerPixel - VkExtent2D sampleLocationGridSize - uint32_t sampleLocationsCount - const VkSampleLocationEXT* pSampleLocations - - - uint32_t attachmentIndex - VkSampleLocationsInfoEXT sampleLocationsInfo - - - uint32_t subpassIndex - VkSampleLocationsInfoEXT sampleLocationsInfo - - - VkStructureType sType - const void* pNext - uint32_t attachmentInitialSampleLocationsCount - const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations - uint32_t postSubpassSampleLocationsCount - const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations - - - VkStructureType sType - const void* pNext - VkBool32 sampleLocationsEnable - VkSampleLocationsInfoEXT sampleLocationsInfo - - - VkStructureType sType - void* pNext - VkSampleCountFlags sampleLocationSampleCounts - VkExtent2D maxSampleLocationGridSize - float sampleLocationCoordinateRange[2] - uint32_t sampleLocationSubPixelBits - VkBool32 variableSampleLocations - - - VkStructureType sType - void* pNext - VkExtent2D maxSampleLocationGridSize - - - VkStructureType sType - const void* pNext - VkSamplerReductionModeEXT reductionMode - - - VkStructureType sType - void* pNext - VkBool32 advancedBlendCoherentOperations - - - VkStructureType sType - void* pNext - uint32_t advancedBlendMaxColorAttachments - VkBool32 advancedBlendIndependentBlend - VkBool32 advancedBlendNonPremultipliedSrcColor - VkBool32 advancedBlendNonPremultipliedDstColor - VkBool32 advancedBlendCorrelatedOverlap - VkBool32 advancedBlendAllOperations - - - VkStructureType sType - const void* pNext - VkBool32 srcPremultiplied - VkBool32 dstPremultiplied - VkBlendOverlapEXT blendOverlap - - - VkStructureType sType - const void* pNext - VkPipelineCoverageModulationStateCreateFlagsNV flags - VkCoverageModulationModeNV coverageModulationMode - VkBool32 coverageModulationTableEnable - uint32_t coverageModulationTableCount - const float* pCoverageModulationTable - - - VkStructureType sType - const void* pNext - uint32_t viewFormatCount - const VkFormat* pViewFormats - - - VkStructureType sType - const void* pNext - VkValidationCacheCreateFlagsEXT flags - size_t initialDataSize - const void* pInitialData - - - VkStructureType sType - const void* pNext - VkValidationCacheEXT validationCache - - - VkStructureType sType - void* pNext - uint32_t maxPerSetDescriptors - VkDeviceSize maxMemoryAllocationSize - - - - VkStructureType sType - void* pNext - VkBool32 supported - - - - VkStructureType sType - void* pNext - VkBool32 shaderDrawParameters - - - VkStructureType sType - const void* pNext - const void* handle - int stride - int format - int usage - - - uint32_t numUsedVgprs - uint32_t numUsedSgprs - uint32_t ldsSizePerLocalWorkGroup - size_t ldsUsageSizeInBytes - size_t scratchMemUsageInBytes - - - VkShaderStageFlags shaderStageMask - VkShaderResourceUsageAMD resourceUsage - uint32_t numPhysicalVgprs - uint32_t numPhysicalSgprs - uint32_t numAvailableVgprs - uint32_t numAvailableSgprs - uint32_t computeWorkGroupSize[3] - - - VkStructureType sType - const void* pNext - VkQueueGlobalPriorityEXT globalPriority - - - VkStructureType sType - const void* pNext - VkObjectType objectType - uint64_t objectHandle - const char* pObjectName - - - VkStructureType sType - const void* pNext - VkObjectType objectType - uint64_t objectHandle - uint64_t tagName - size_t tagSize - const void* pTag - - - VkStructureType sType - const void* pNext - const char* pLabelName - float color[4] - - - VkStructureType sType - const void* pNext - VkDebugUtilsMessengerCreateFlagsEXT flags - VkDebugUtilsMessageSeverityFlagsEXT messageSeverity - VkDebugUtilsMessageTypeFlagsEXT messageType - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback - void* pUserData - - - VkStructureType sType - const void* pNext - VkDebugUtilsMessengerCallbackDataFlagsEXT flags - const char* pMessageIdName - int32_t messageIdNumber - const char* pMessage - uint32_t queueLabelCount - VkDebugUtilsLabelEXT* pQueueLabels - uint32_t cmdBufLabelCount - VkDebugUtilsLabelEXT* pCmdBufLabels - uint32_t objectCount - VkDebugUtilsObjectNameInfoEXT* pObjects - - - VkStructureType sType - const void* pNext - VkExternalMemoryHandleTypeFlagBits handleType - void* pHostPointer - - - VkStructureType sType - void* pNext - uint32_t memoryTypeBits - - - VkStructureType sType - void* pNext - VkDeviceSize minImportedHostPointerAlignment - - - VkStructureType sType - void* pNextPointer to next structure - float primitiveOverestimationSizeThe size in pixels the primitive is enlarged at each edge during conservative rasterization - float maxExtraPrimitiveOverestimationSizeThe maximum additional overestimation the client can specify in the pipeline state - float extraPrimitiveOverestimationSizeGranularityThe granularity of extra overestimation sizes the implementations supports between 0 and maxExtraOverestimationSize - VkBool32 primitiveUnderestimationtrue if the implementation supports conservative rasterization underestimation mode - VkBool32 conservativePointAndLineRasterizationtrue if conservative rasterization also applies to points and lines - VkBool32 degenerateTrianglesRasterizedtrue if degenerate triangles (those with zero area after snap) are rasterized - VkBool32 degenerateLinesRasterizedtrue if degenerate lines (those with zero length after snap) are rasterized - VkBool32 fullyCoveredFragmentShaderInputVariabletrue if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable - VkBool32 conservativeRasterizationPostDepthCoveragetrue if the implementation supports both conservative rasterization and post depth coverage sample coverage mask - - - VkStructureType sType - void* pNextPointer to next structure - uint32_t shaderEngineCountnumber of shader engines - uint32_t shaderArraysPerEngineCountnumber of shader arrays - uint32_t computeUnitsPerShaderArraynumber of CUs per shader array - uint32_t simdPerComputeUnitnumber of SIMDs per compute unit - uint32_t wavefrontsPerSimdnumber of wavefront slots in each SIMD - uint32_t wavefrontSizenumber of threads per wavefront - uint32_t sgprsPerSimdnumber of physical SGPRs per SIMD - uint32_t minSgprAllocationminimum number of SGPRs that can be allocated by a wave - uint32_t maxSgprAllocationnumber of available SGPRs - uint32_t sgprAllocationGranularitySGPRs are allocated in groups of this size - uint32_t vgprsPerSimdnumber of physical VGPRs per SIMD - uint32_t minVgprAllocationminimum number of VGPRs that can be allocated by a wave - uint32_t maxVgprAllocationnumber of available VGPRs - uint32_t vgprAllocationGranularityVGPRs are allocated in groups of this size - - - VkStructureType sType - const void* pNext - VkPipelineRasterizationConservativeStateCreateFlagsEXT flags - VkConservativeRasterizationModeEXT conservativeRasterizationMode - float extraPrimitiveOverestimationSize - - - VkStructureType sType - void* pNext - VkBool32 shaderInputAttachmentArrayDynamicIndexing - VkBool32 shaderUniformTexelBufferArrayDynamicIndexing - VkBool32 shaderStorageTexelBufferArrayDynamicIndexing - VkBool32 shaderUniformBufferArrayNonUniformIndexing - VkBool32 shaderSampledImageArrayNonUniformIndexing - VkBool32 shaderStorageBufferArrayNonUniformIndexing - VkBool32 shaderStorageImageArrayNonUniformIndexing - VkBool32 shaderInputAttachmentArrayNonUniformIndexing - VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing - VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing - VkBool32 descriptorBindingUniformBufferUpdateAfterBind - VkBool32 descriptorBindingSampledImageUpdateAfterBind - VkBool32 descriptorBindingStorageImageUpdateAfterBind - VkBool32 descriptorBindingStorageBufferUpdateAfterBind - VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind - VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind - VkBool32 descriptorBindingUpdateUnusedWhilePending - VkBool32 descriptorBindingPartiallyBound - VkBool32 descriptorBindingVariableDescriptorCount - VkBool32 runtimeDescriptorArray - - - VkStructureType sType - void* pNext - uint32_t maxUpdateAfterBindDescriptorsInAllPools - VkBool32 shaderUniformBufferArrayNonUniformIndexingNative - VkBool32 shaderSampledImageArrayNonUniformIndexingNative - VkBool32 shaderStorageBufferArrayNonUniformIndexingNative - VkBool32 shaderStorageImageArrayNonUniformIndexingNative - VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative - VkBool32 robustBufferAccessUpdateAfterBind - VkBool32 quadDivergentImplicitLod - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments - uint32_t maxPerStageUpdateAfterBindResources - uint32_t maxDescriptorSetUpdateAfterBindSamplers - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic - uint32_t maxDescriptorSetUpdateAfterBindSampledImages - uint32_t maxDescriptorSetUpdateAfterBindStorageImages - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments - - - VkStructureType sType - const void* pNext - uint32_t bindingCount - const VkDescriptorBindingFlagsEXT* pBindingFlags - - - VkStructureType sType - const void* pNext - uint32_t descriptorSetCount - const uint32_t* pDescriptorCounts - - - VkStructureType sType - void* pNext - uint32_t maxVariableDescriptorCount - - - uint32_t binding - uint32_t divisor - - - VkStructureType sType - const void* pNext - uint32_t vertexBindingDivisorCount - const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors - - - VkStructureType sType - void* pNext - uint32_t maxVertexAttribDivisormax value of vertex attribute divisor - - - VkStructureType sType - const void* pNext - struct AHardwareBuffer* buffer - - - VkStructureType sType - void* pNext - uint64_t androidHardwareBufferUsage - - - VkStructureType sType - void* pNext - VkDeviceSize allocationSize - uint32_t memoryTypeBits - - - VkStructureType sType - const void* pNext - VkDeviceMemory memory - - - VkStructureType sType - void* pNext - VkFormat format - uint64_t externalFormat - VkFormatFeatureFlags formatFeatures - VkComponentMapping samplerYcbcrConversionComponents - VkSamplerYcbcrModelConversion suggestedYcbcrModel - VkSamplerYcbcrRange suggestedYcbcrRange - VkChromaLocation suggestedXChromaOffset - VkChromaLocation suggestedYChromaOffset - - - VkStructureType sType - void* pNext - uint64_t externalFormat - - - - Vulkan enumerant (token) definitions - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - value="4" reserved for VK_KHR_sampler_mirror_clamp_to_edge - enum VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; do not - alias! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Return codes (positive values) - - - - - - - Error codes (negative values) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Flags - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WSI Extensions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Placeholder for validation enums to be defined for VK_EXT_Validation_flags extension - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VkResult vkCreateInstance - const VkInstanceCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkInstance* pInstance - - - void vkDestroyInstance - VkInstance instance - const VkAllocationCallbacks* pAllocator - - - VkResult vkEnumeratePhysicalDevices - VkInstance instance - uint32_t* pPhysicalDeviceCount - VkPhysicalDevice* pPhysicalDevices - - - PFN_vkVoidFunction vkGetDeviceProcAddr - VkDevice device - const char* pName - - - PFN_vkVoidFunction vkGetInstanceProcAddr - VkInstance instance - const char* pName - - - void vkGetPhysicalDeviceProperties - VkPhysicalDevice physicalDevice - VkPhysicalDeviceProperties* pProperties - - - void vkGetPhysicalDeviceQueueFamilyProperties - VkPhysicalDevice physicalDevice - uint32_t* pQueueFamilyPropertyCount - VkQueueFamilyProperties* pQueueFamilyProperties - - - void vkGetPhysicalDeviceMemoryProperties - VkPhysicalDevice physicalDevice - VkPhysicalDeviceMemoryProperties* pMemoryProperties - - - void vkGetPhysicalDeviceFeatures - VkPhysicalDevice physicalDevice - VkPhysicalDeviceFeatures* pFeatures - - - void vkGetPhysicalDeviceFormatProperties - VkPhysicalDevice physicalDevice - VkFormat format - VkFormatProperties* pFormatProperties - - - VkResult vkGetPhysicalDeviceImageFormatProperties - VkPhysicalDevice physicalDevice - VkFormat format - VkImageType type - VkImageTiling tiling - VkImageUsageFlags usage - VkImageCreateFlags flags - VkImageFormatProperties* pImageFormatProperties - - - VkResult vkCreateDevice - VkPhysicalDevice physicalDevice - const VkDeviceCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDevice* pDevice - - - void vkDestroyDevice - VkDevice device - const VkAllocationCallbacks* pAllocator - - - VkResult vkEnumerateInstanceVersion - uint32_t* pApiVersion - - - VkResult vkEnumerateInstanceLayerProperties - uint32_t* pPropertyCount - VkLayerProperties* pProperties - - - VkResult vkEnumerateInstanceExtensionProperties - const char* pLayerName - uint32_t* pPropertyCount - VkExtensionProperties* pProperties - - - VkResult vkEnumerateDeviceLayerProperties - VkPhysicalDevice physicalDevice - uint32_t* pPropertyCount - VkLayerProperties* pProperties - - - VkResult vkEnumerateDeviceExtensionProperties - VkPhysicalDevice physicalDevice - const char* pLayerName - uint32_t* pPropertyCount - VkExtensionProperties* pProperties - - - void vkGetDeviceQueue - VkDevice device - uint32_t queueFamilyIndex - uint32_t queueIndex - VkQueue* pQueue - - - VkResult vkQueueSubmit - VkQueue queue - uint32_t submitCount - const VkSubmitInfo* pSubmits - VkFence fence - - - VkResult vkQueueWaitIdle - VkQueue queue - - - VkResult vkDeviceWaitIdle - VkDevice device - - all sname:VkQueue objects created from pname:device - - - - VkResult vkAllocateMemory - VkDevice device - const VkMemoryAllocateInfo* pAllocateInfo - const VkAllocationCallbacks* pAllocator - VkDeviceMemory* pMemory - - - void vkFreeMemory - VkDevice device - VkDeviceMemory memory - const VkAllocationCallbacks* pAllocator - - - VkResult vkMapMemory - VkDevice device - VkDeviceMemory memory - VkDeviceSize offset - VkDeviceSize size - VkMemoryMapFlags flags - void** ppData - - - void vkUnmapMemory - VkDevice device - VkDeviceMemory memory - - - VkResult vkFlushMappedMemoryRanges - VkDevice device - uint32_t memoryRangeCount - const VkMappedMemoryRange* pMemoryRanges - - - VkResult vkInvalidateMappedMemoryRanges - VkDevice device - uint32_t memoryRangeCount - const VkMappedMemoryRange* pMemoryRanges - - - void vkGetDeviceMemoryCommitment - VkDevice device - VkDeviceMemory memory - VkDeviceSize* pCommittedMemoryInBytes - - - void vkGetBufferMemoryRequirements - VkDevice device - VkBuffer buffer - VkMemoryRequirements* pMemoryRequirements - - - VkResult vkBindBufferMemory - VkDevice device - VkBuffer buffer - VkDeviceMemory memory - VkDeviceSize memoryOffset - - - void vkGetImageMemoryRequirements - VkDevice device - VkImage image - VkMemoryRequirements* pMemoryRequirements - - - VkResult vkBindImageMemory - VkDevice device - VkImage image - VkDeviceMemory memory - VkDeviceSize memoryOffset - - - void vkGetImageSparseMemoryRequirements - VkDevice device - VkImage image - uint32_t* pSparseMemoryRequirementCount - VkSparseImageMemoryRequirements* pSparseMemoryRequirements - - - void vkGetPhysicalDeviceSparseImageFormatProperties - VkPhysicalDevice physicalDevice - VkFormat format - VkImageType type - VkSampleCountFlagBits samples - VkImageUsageFlags usage - VkImageTiling tiling - uint32_t* pPropertyCount - VkSparseImageFormatProperties* pProperties - - - VkResult vkQueueBindSparse - VkQueue queue - uint32_t bindInfoCount - const VkBindSparseInfo* pBindInfo - VkFence fence - - - VkResult vkCreateFence - VkDevice device - const VkFenceCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkFence* pFence - - - void vkDestroyFence - VkDevice device - VkFence fence - const VkAllocationCallbacks* pAllocator - - - VkResult vkResetFences - VkDevice device - uint32_t fenceCount - const VkFence* pFences - - - VkResult vkGetFenceStatus - VkDevice device - VkFence fence - - - VkResult vkWaitForFences - VkDevice device - uint32_t fenceCount - const VkFence* pFences - VkBool32 waitAll - uint64_t timeout - - - VkResult vkCreateSemaphore - VkDevice device - const VkSemaphoreCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSemaphore* pSemaphore - - - void vkDestroySemaphore - VkDevice device - VkSemaphore semaphore - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateEvent - VkDevice device - const VkEventCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkEvent* pEvent - - - void vkDestroyEvent - VkDevice device - VkEvent event - const VkAllocationCallbacks* pAllocator - - - VkResult vkGetEventStatus - VkDevice device - VkEvent event - - - VkResult vkSetEvent - VkDevice device - VkEvent event - - - VkResult vkResetEvent - VkDevice device - VkEvent event - - - VkResult vkCreateQueryPool - VkDevice device - const VkQueryPoolCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkQueryPool* pQueryPool - - - void vkDestroyQueryPool - VkDevice device - VkQueryPool queryPool - const VkAllocationCallbacks* pAllocator - - - VkResult vkGetQueryPoolResults - VkDevice device - VkQueryPool queryPool - uint32_t firstQuery - uint32_t queryCount - size_t dataSize - void* pData - VkDeviceSize stride - VkQueryResultFlags flags - - - VkResult vkCreateBuffer - VkDevice device - const VkBufferCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkBuffer* pBuffer - - - void vkDestroyBuffer - VkDevice device - VkBuffer buffer - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateBufferView - VkDevice device - const VkBufferViewCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkBufferView* pView - - - void vkDestroyBufferView - VkDevice device - VkBufferView bufferView - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateImage - VkDevice device - const VkImageCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkImage* pImage - - - void vkDestroyImage - VkDevice device - VkImage image - const VkAllocationCallbacks* pAllocator - - - void vkGetImageSubresourceLayout - VkDevice device - VkImage image - const VkImageSubresource* pSubresource - VkSubresourceLayout* pLayout - - - VkResult vkCreateImageView - VkDevice device - const VkImageViewCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkImageView* pView - - - void vkDestroyImageView - VkDevice device - VkImageView imageView - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateShaderModule - VkDevice device - const VkShaderModuleCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkShaderModule* pShaderModule - - - void vkDestroyShaderModule - VkDevice device - VkShaderModule shaderModule - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreatePipelineCache - VkDevice device - const VkPipelineCacheCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkPipelineCache* pPipelineCache - - - void vkDestroyPipelineCache - VkDevice device - VkPipelineCache pipelineCache - const VkAllocationCallbacks* pAllocator - - - VkResult vkGetPipelineCacheData - VkDevice device - VkPipelineCache pipelineCache - size_t* pDataSize - void* pData - - - VkResult vkMergePipelineCaches - VkDevice device - VkPipelineCache dstCache - uint32_t srcCacheCount - const VkPipelineCache* pSrcCaches - - - VkResult vkCreateGraphicsPipelines - VkDevice device - VkPipelineCache pipelineCache - uint32_t createInfoCount - const VkGraphicsPipelineCreateInfo* pCreateInfos - const VkAllocationCallbacks* pAllocator - VkPipeline* pPipelines - - - VkResult vkCreateComputePipelines - VkDevice device - VkPipelineCache pipelineCache - uint32_t createInfoCount - const VkComputePipelineCreateInfo* pCreateInfos - const VkAllocationCallbacks* pAllocator - VkPipeline* pPipelines - - - void vkDestroyPipeline - VkDevice device - VkPipeline pipeline - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreatePipelineLayout - VkDevice device - const VkPipelineLayoutCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkPipelineLayout* pPipelineLayout - - - void vkDestroyPipelineLayout - VkDevice device - VkPipelineLayout pipelineLayout - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateSampler - VkDevice device - const VkSamplerCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSampler* pSampler - - - void vkDestroySampler - VkDevice device - VkSampler sampler - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateDescriptorSetLayout - VkDevice device - const VkDescriptorSetLayoutCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDescriptorSetLayout* pSetLayout - - - void vkDestroyDescriptorSetLayout - VkDevice device - VkDescriptorSetLayout descriptorSetLayout - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateDescriptorPool - VkDevice device - const VkDescriptorPoolCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDescriptorPool* pDescriptorPool - - - void vkDestroyDescriptorPool - VkDevice device - VkDescriptorPool descriptorPool - const VkAllocationCallbacks* pAllocator - - - VkResult vkResetDescriptorPool - VkDevice device - VkDescriptorPool descriptorPool - VkDescriptorPoolResetFlags flags - - any sname:VkDescriptorSet objects allocated from pname:descriptorPool - - - - VkResult vkAllocateDescriptorSets - VkDevice device - const VkDescriptorSetAllocateInfo* pAllocateInfo - VkDescriptorSet* pDescriptorSets - - - VkResult vkFreeDescriptorSets - VkDevice device - VkDescriptorPool descriptorPool - uint32_t descriptorSetCount - const VkDescriptorSet* pDescriptorSets - - - void vkUpdateDescriptorSets - VkDevice device - uint32_t descriptorWriteCount - const VkWriteDescriptorSet* pDescriptorWrites - uint32_t descriptorCopyCount - const VkCopyDescriptorSet* pDescriptorCopies - - - VkResult vkCreateFramebuffer - VkDevice device - const VkFramebufferCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkFramebuffer* pFramebuffer - - - void vkDestroyFramebuffer - VkDevice device - VkFramebuffer framebuffer - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateRenderPass - VkDevice device - const VkRenderPassCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkRenderPass* pRenderPass - - - void vkDestroyRenderPass - VkDevice device - VkRenderPass renderPass - const VkAllocationCallbacks* pAllocator - - - void vkGetRenderAreaGranularity - VkDevice device - VkRenderPass renderPass - VkExtent2D* pGranularity - - - VkResult vkCreateCommandPool - VkDevice device - const VkCommandPoolCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkCommandPool* pCommandPool - - - void vkDestroyCommandPool - VkDevice device - VkCommandPool commandPool - const VkAllocationCallbacks* pAllocator - - - VkResult vkResetCommandPool - VkDevice device - VkCommandPool commandPool - VkCommandPoolResetFlags flags - - - VkResult vkAllocateCommandBuffers - VkDevice device - const VkCommandBufferAllocateInfo* pAllocateInfo - VkCommandBuffer* pCommandBuffers - - - void vkFreeCommandBuffers - VkDevice device - VkCommandPool commandPool - uint32_t commandBufferCount - const VkCommandBuffer* pCommandBuffers - - - VkResult vkBeginCommandBuffer - VkCommandBuffer commandBuffer - const VkCommandBufferBeginInfo* pBeginInfo - - the sname:VkCommandPool that pname:commandBuffer was allocated from - - - - VkResult vkEndCommandBuffer - VkCommandBuffer commandBuffer - - the sname:VkCommandPool that pname:commandBuffer was allocated from - - - - VkResult vkResetCommandBuffer - VkCommandBuffer commandBuffer - VkCommandBufferResetFlags flags - - - void vkCmdBindPipeline - VkCommandBuffer commandBuffer - VkPipelineBindPoint pipelineBindPoint - VkPipeline pipeline - - - void vkCmdSetViewport - VkCommandBuffer commandBuffer - uint32_t firstViewport - uint32_t viewportCount - const VkViewport* pViewports - - - void vkCmdSetScissor - VkCommandBuffer commandBuffer - uint32_t firstScissor - uint32_t scissorCount - const VkRect2D* pScissors - - - void vkCmdSetLineWidth - VkCommandBuffer commandBuffer - float lineWidth - - - void vkCmdSetDepthBias - VkCommandBuffer commandBuffer - float depthBiasConstantFactor - float depthBiasClamp - float depthBiasSlopeFactor - - - void vkCmdSetBlendConstants - VkCommandBuffer commandBuffer - const float blendConstants[4] - - - void vkCmdSetDepthBounds - VkCommandBuffer commandBuffer - float minDepthBounds - float maxDepthBounds - - - void vkCmdSetStencilCompareMask - VkCommandBuffer commandBuffer - VkStencilFaceFlags faceMask - uint32_t compareMask - - - void vkCmdSetStencilWriteMask - VkCommandBuffer commandBuffer - VkStencilFaceFlags faceMask - uint32_t writeMask - - - void vkCmdSetStencilReference - VkCommandBuffer commandBuffer - VkStencilFaceFlags faceMask - uint32_t reference - - - void vkCmdBindDescriptorSets - VkCommandBuffer commandBuffer - VkPipelineBindPoint pipelineBindPoint - VkPipelineLayout layout - uint32_t firstSet - uint32_t descriptorSetCount - const VkDescriptorSet* pDescriptorSets - uint32_t dynamicOffsetCount - const uint32_t* pDynamicOffsets - - - void vkCmdBindIndexBuffer - VkCommandBuffer commandBuffer - VkBuffer buffer - VkDeviceSize offset - VkIndexType indexType - - - void vkCmdBindVertexBuffers - VkCommandBuffer commandBuffer - uint32_t firstBinding - uint32_t bindingCount - const VkBuffer* pBuffers - const VkDeviceSize* pOffsets - - - void vkCmdDraw - VkCommandBuffer commandBuffer - uint32_t vertexCount - uint32_t instanceCount - uint32_t firstVertex - uint32_t firstInstance - - - void vkCmdDrawIndexed - VkCommandBuffer commandBuffer - uint32_t indexCount - uint32_t instanceCount - uint32_t firstIndex - int32_t vertexOffset - uint32_t firstInstance - - - void vkCmdDrawIndirect - VkCommandBuffer commandBuffer - VkBuffer buffer - VkDeviceSize offset - uint32_t drawCount - uint32_t stride - - - void vkCmdDrawIndexedIndirect - VkCommandBuffer commandBuffer - VkBuffer buffer - VkDeviceSize offset - uint32_t drawCount - uint32_t stride - - - void vkCmdDispatch - VkCommandBuffer commandBuffer - uint32_t groupCountX - uint32_t groupCountY - uint32_t groupCountZ - - - void vkCmdDispatchIndirect - VkCommandBuffer commandBuffer - VkBuffer buffer - VkDeviceSize offset - - - void vkCmdCopyBuffer - VkCommandBuffer commandBuffer - VkBuffer srcBuffer - VkBuffer dstBuffer - uint32_t regionCount - const VkBufferCopy* pRegions - - - void vkCmdCopyImage - VkCommandBuffer commandBuffer - VkImage srcImage - VkImageLayout srcImageLayout - VkImage dstImage - VkImageLayout dstImageLayout - uint32_t regionCount - const VkImageCopy* pRegions - - - void vkCmdBlitImage - VkCommandBuffer commandBuffer - VkImage srcImage - VkImageLayout srcImageLayout - VkImage dstImage - VkImageLayout dstImageLayout - uint32_t regionCount - const VkImageBlit* pRegions - VkFilter filter - - - void vkCmdCopyBufferToImage - VkCommandBuffer commandBuffer - VkBuffer srcBuffer - VkImage dstImage - VkImageLayout dstImageLayout - uint32_t regionCount - const VkBufferImageCopy* pRegions - - - void vkCmdCopyImageToBuffer - VkCommandBuffer commandBuffer - VkImage srcImage - VkImageLayout srcImageLayout - VkBuffer dstBuffer - uint32_t regionCount - const VkBufferImageCopy* pRegions - - - void vkCmdUpdateBuffer - VkCommandBuffer commandBuffer - VkBuffer dstBuffer - VkDeviceSize dstOffset - VkDeviceSize dataSize - const void* pData - - - void vkCmdFillBuffer - VkCommandBuffer commandBuffer - VkBuffer dstBuffer - VkDeviceSize dstOffset - VkDeviceSize size - uint32_t data - - - void vkCmdClearColorImage - VkCommandBuffer commandBuffer - VkImage image - VkImageLayout imageLayout - const VkClearColorValue* pColor - uint32_t rangeCount - const VkImageSubresourceRange* pRanges - - - void vkCmdClearDepthStencilImage - VkCommandBuffer commandBuffer - VkImage image - VkImageLayout imageLayout - const VkClearDepthStencilValue* pDepthStencil - uint32_t rangeCount - const VkImageSubresourceRange* pRanges - - - void vkCmdClearAttachments - VkCommandBuffer commandBuffer - uint32_t attachmentCount - const VkClearAttachment* pAttachments - uint32_t rectCount - const VkClearRect* pRects - - - void vkCmdResolveImage - VkCommandBuffer commandBuffer - VkImage srcImage - VkImageLayout srcImageLayout - VkImage dstImage - VkImageLayout dstImageLayout - uint32_t regionCount - const VkImageResolve* pRegions - - - void vkCmdSetEvent - VkCommandBuffer commandBuffer - VkEvent event - VkPipelineStageFlags stageMask - - - void vkCmdResetEvent - VkCommandBuffer commandBuffer - VkEvent event - VkPipelineStageFlags stageMask - - - void vkCmdWaitEvents - VkCommandBuffer commandBuffer - uint32_t eventCount - const VkEvent* pEvents - VkPipelineStageFlags srcStageMask - VkPipelineStageFlags dstStageMask - uint32_t memoryBarrierCount - const VkMemoryBarrier* pMemoryBarriers - uint32_t bufferMemoryBarrierCount - const VkBufferMemoryBarrier* pBufferMemoryBarriers - uint32_t imageMemoryBarrierCount - const VkImageMemoryBarrier* pImageMemoryBarriers - - - void vkCmdPipelineBarrier - VkCommandBuffer commandBuffer - VkPipelineStageFlags srcStageMask - VkPipelineStageFlags dstStageMask - VkDependencyFlags dependencyFlags - uint32_t memoryBarrierCount - const VkMemoryBarrier* pMemoryBarriers - uint32_t bufferMemoryBarrierCount - const VkBufferMemoryBarrier* pBufferMemoryBarriers - uint32_t imageMemoryBarrierCount - const VkImageMemoryBarrier* pImageMemoryBarriers - - - void vkCmdBeginQuery - VkCommandBuffer commandBuffer - VkQueryPool queryPool - uint32_t query - VkQueryControlFlags flags - - - void vkCmdEndQuery - VkCommandBuffer commandBuffer - VkQueryPool queryPool - uint32_t query - - - void vkCmdResetQueryPool - VkCommandBuffer commandBuffer - VkQueryPool queryPool - uint32_t firstQuery - uint32_t queryCount - - - void vkCmdWriteTimestamp - VkCommandBuffer commandBuffer - VkPipelineStageFlagBits pipelineStage - VkQueryPool queryPool - uint32_t query - - - void vkCmdCopyQueryPoolResults - VkCommandBuffer commandBuffer - VkQueryPool queryPool - uint32_t firstQuery - uint32_t queryCount - VkBuffer dstBuffer - VkDeviceSize dstOffset - VkDeviceSize stride - VkQueryResultFlags flags - - - void vkCmdPushConstants - VkCommandBuffer commandBuffer - VkPipelineLayout layout - VkShaderStageFlags stageFlags - uint32_t offset - uint32_t size - const void* pValues - - - void vkCmdBeginRenderPass - VkCommandBuffer commandBuffer - const VkRenderPassBeginInfo* pRenderPassBegin - VkSubpassContents contents - - - void vkCmdNextSubpass - VkCommandBuffer commandBuffer - VkSubpassContents contents - - - void vkCmdEndRenderPass - VkCommandBuffer commandBuffer - - - void vkCmdExecuteCommands - VkCommandBuffer commandBuffer - uint32_t commandBufferCount - const VkCommandBuffer* pCommandBuffers - - - VkResult vkCreateAndroidSurfaceKHR - VkInstance instance - const VkAndroidSurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkResult vkGetPhysicalDeviceDisplayPropertiesKHR - VkPhysicalDevice physicalDevice - uint32_t* pPropertyCount - VkDisplayPropertiesKHR* pProperties - - - VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR - VkPhysicalDevice physicalDevice - uint32_t* pPropertyCount - VkDisplayPlanePropertiesKHR* pProperties - - - VkResult vkGetDisplayPlaneSupportedDisplaysKHR - VkPhysicalDevice physicalDevice - uint32_t planeIndex - uint32_t* pDisplayCount - VkDisplayKHR* pDisplays - - - VkResult vkGetDisplayModePropertiesKHR - VkPhysicalDevice physicalDevice - VkDisplayKHR display - uint32_t* pPropertyCount - VkDisplayModePropertiesKHR* pProperties - - - VkResult vkCreateDisplayModeKHR - VkPhysicalDevice physicalDevice - VkDisplayKHR display - const VkDisplayModeCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDisplayModeKHR* pMode - - - VkResult vkGetDisplayPlaneCapabilitiesKHR - VkPhysicalDevice physicalDevice - VkDisplayModeKHR mode - uint32_t planeIndex - VkDisplayPlaneCapabilitiesKHR* pCapabilities - - - VkResult vkCreateDisplayPlaneSurfaceKHR - VkInstance instance - const VkDisplaySurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkResult vkCreateSharedSwapchainsKHR - VkDevice device - uint32_t swapchainCount - const VkSwapchainCreateInfoKHR* pCreateInfos - const VkAllocationCallbacks* pAllocator - VkSwapchainKHR* pSwapchains - - - VkResult vkCreateMirSurfaceKHR - VkInstance instance - const VkMirSurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR - VkPhysicalDevice physicalDevice - uint32_t queueFamilyIndex - MirConnection* connection - - - void vkDestroySurfaceKHR - VkInstance instance - VkSurfaceKHR surface - const VkAllocationCallbacks* pAllocator - - - VkResult vkGetPhysicalDeviceSurfaceSupportKHR - VkPhysicalDevice physicalDevice - uint32_t queueFamilyIndex - VkSurfaceKHR surface - VkBool32* pSupported - - - VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR - VkPhysicalDevice physicalDevice - VkSurfaceKHR surface - VkSurfaceCapabilitiesKHR* pSurfaceCapabilities - - - VkResult vkGetPhysicalDeviceSurfaceFormatsKHR - VkPhysicalDevice physicalDevice - VkSurfaceKHR surface - uint32_t* pSurfaceFormatCount - VkSurfaceFormatKHR* pSurfaceFormats - - - VkResult vkGetPhysicalDeviceSurfacePresentModesKHR - VkPhysicalDevice physicalDevice - VkSurfaceKHR surface - uint32_t* pPresentModeCount - VkPresentModeKHR* pPresentModes - - - VkResult vkCreateSwapchainKHR - VkDevice device - const VkSwapchainCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSwapchainKHR* pSwapchain - - - void vkDestroySwapchainKHR - VkDevice device - VkSwapchainKHR swapchain - const VkAllocationCallbacks* pAllocator - - - VkResult vkGetSwapchainImagesKHR - VkDevice device - VkSwapchainKHR swapchain - uint32_t* pSwapchainImageCount - VkImage* pSwapchainImages - - - VkResult vkAcquireNextImageKHR - VkDevice device - VkSwapchainKHR swapchain - uint64_t timeout - VkSemaphore semaphore - VkFence fence - uint32_t* pImageIndex - - - VkResult vkQueuePresentKHR - VkQueue queue - const VkPresentInfoKHR* pPresentInfo - - - VkResult vkCreateViSurfaceNN - VkInstance instance - const VkViSurfaceCreateInfoNN* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkResult vkCreateWaylandSurfaceKHR - VkInstance instance - const VkWaylandSurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR - VkPhysicalDevice physicalDevice - uint32_t queueFamilyIndex - struct wl_display* display - - - VkResult vkCreateWin32SurfaceKHR - VkInstance instance - const VkWin32SurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR - VkPhysicalDevice physicalDevice - uint32_t queueFamilyIndex - - - VkResult vkCreateXlibSurfaceKHR - VkInstance instance - const VkXlibSurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR - VkPhysicalDevice physicalDevice - uint32_t queueFamilyIndex - Display* dpy - VisualID visualID - - - VkResult vkCreateXcbSurfaceKHR - VkInstance instance - const VkXcbSurfaceCreateInfoKHR* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR - VkPhysicalDevice physicalDevice - uint32_t queueFamilyIndex - xcb_connection_t* connection - xcb_visualid_t visual_id - - - VkResult vkCreateDebugReportCallbackEXT - VkInstance instance - const VkDebugReportCallbackCreateInfoEXT* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDebugReportCallbackEXT* pCallback - - - void vkDestroyDebugReportCallbackEXT - VkInstance instance - VkDebugReportCallbackEXT callback - const VkAllocationCallbacks* pAllocator - - - void vkDebugReportMessageEXT - VkInstance instance - VkDebugReportFlagsEXT flags - VkDebugReportObjectTypeEXT objectType - uint64_t object - size_t location - int32_t messageCode - const char* pLayerPrefix - const char* pMessage - - - VkResult vkDebugMarkerSetObjectNameEXT - VkDevice device - const VkDebugMarkerObjectNameInfoEXT* pNameInfo - - - VkResult vkDebugMarkerSetObjectTagEXT - VkDevice device - const VkDebugMarkerObjectTagInfoEXT* pTagInfo - - - void vkCmdDebugMarkerBeginEXT - VkCommandBuffer commandBuffer - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo - - - void vkCmdDebugMarkerEndEXT - VkCommandBuffer commandBuffer - - - void vkCmdDebugMarkerInsertEXT - VkCommandBuffer commandBuffer - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo - - - VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV - VkPhysicalDevice physicalDevice - VkFormat format - VkImageType type - VkImageTiling tiling - VkImageUsageFlags usage - VkImageCreateFlags flags - VkExternalMemoryHandleTypeFlagsNV externalHandleType - VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties - - - VkResult vkGetMemoryWin32HandleNV - VkDevice device - VkDeviceMemory memory - VkExternalMemoryHandleTypeFlagsNV handleType - HANDLE* pHandle - - - void vkCmdDrawIndirectCountAMD - VkCommandBuffer commandBuffer - VkBuffer buffer - VkDeviceSize offset - VkBuffer countBuffer - VkDeviceSize countBufferOffset - uint32_t maxDrawCount - uint32_t stride - - - void vkCmdDrawIndexedIndirectCountAMD - VkCommandBuffer commandBuffer - VkBuffer buffer - VkDeviceSize offset - VkBuffer countBuffer - VkDeviceSize countBufferOffset - uint32_t maxDrawCount - uint32_t stride - - - void vkCmdProcessCommandsNVX - VkCommandBuffer commandBuffer - const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo - - - void vkCmdReserveSpaceForCommandsNVX - VkCommandBuffer commandBuffer - const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo - - - VkResult vkCreateIndirectCommandsLayoutNVX - VkDevice device - const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout - - - void vkDestroyIndirectCommandsLayoutNVX - VkDevice device - VkIndirectCommandsLayoutNVX indirectCommandsLayout - const VkAllocationCallbacks* pAllocator - - - VkResult vkCreateObjectTableNVX - VkDevice device - const VkObjectTableCreateInfoNVX* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkObjectTableNVX* pObjectTable - - - void vkDestroyObjectTableNVX - VkDevice device - VkObjectTableNVX objectTable - const VkAllocationCallbacks* pAllocator - - - VkResult vkRegisterObjectsNVX - VkDevice device - VkObjectTableNVX objectTable - uint32_t objectCount - const VkObjectTableEntryNVX* const* ppObjectTableEntries - const uint32_t* pObjectIndices - - - VkResult vkUnregisterObjectsNVX - VkDevice device - VkObjectTableNVX objectTable - uint32_t objectCount - const VkObjectEntryTypeNVX* pObjectEntryTypes - const uint32_t* pObjectIndices - - - void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - VkPhysicalDevice physicalDevice - VkDeviceGeneratedCommandsFeaturesNVX* pFeatures - VkDeviceGeneratedCommandsLimitsNVX* pLimits - - - void vkGetPhysicalDeviceFeatures2 - VkPhysicalDevice physicalDevice - VkPhysicalDeviceFeatures2* pFeatures - - - - void vkGetPhysicalDeviceProperties2 - VkPhysicalDevice physicalDevice - VkPhysicalDeviceProperties2* pProperties - - - - void vkGetPhysicalDeviceFormatProperties2 - VkPhysicalDevice physicalDevice - VkFormat format - VkFormatProperties2* pFormatProperties - - - - VkResult vkGetPhysicalDeviceImageFormatProperties2 - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo - VkImageFormatProperties2* pImageFormatProperties - - - - void vkGetPhysicalDeviceQueueFamilyProperties2 - VkPhysicalDevice physicalDevice - uint32_t* pQueueFamilyPropertyCount - VkQueueFamilyProperties2* pQueueFamilyProperties - - - - void vkGetPhysicalDeviceMemoryProperties2 - VkPhysicalDevice physicalDevice - VkPhysicalDeviceMemoryProperties2* pMemoryProperties - - - - void vkGetPhysicalDeviceSparseImageFormatProperties2 - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo - uint32_t* pPropertyCount - VkSparseImageFormatProperties2* pProperties - - - - void vkCmdPushDescriptorSetKHR - VkCommandBuffer commandBuffer - VkPipelineBindPoint pipelineBindPoint - VkPipelineLayout layout - uint32_t set - uint32_t descriptorWriteCount - const VkWriteDescriptorSet* pDescriptorWrites - - - void vkTrimCommandPool - VkDevice device - VkCommandPool commandPool - VkCommandPoolTrimFlags flags - - - - void vkGetPhysicalDeviceExternalBufferProperties - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo - VkExternalBufferProperties* pExternalBufferProperties - - - - VkResult vkGetMemoryWin32HandleKHR - VkDevice device - const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo - HANDLE* pHandle - - - VkResult vkGetMemoryWin32HandlePropertiesKHR - VkDevice device - VkExternalMemoryHandleTypeFlagBits handleType - HANDLE handle - VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties - - - VkResult vkGetMemoryFdKHR - VkDevice device - const VkMemoryGetFdInfoKHR* pGetFdInfo - int* pFd - - - VkResult vkGetMemoryFdPropertiesKHR - VkDevice device - VkExternalMemoryHandleTypeFlagBits handleType - int fd - VkMemoryFdPropertiesKHR* pMemoryFdProperties - - - void vkGetPhysicalDeviceExternalSemaphoreProperties - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo - VkExternalSemaphoreProperties* pExternalSemaphoreProperties - - - - VkResult vkGetSemaphoreWin32HandleKHR - VkDevice device - const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo - HANDLE* pHandle - - - VkResult vkImportSemaphoreWin32HandleKHR - VkDevice device - const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo - - - VkResult vkGetSemaphoreFdKHR - VkDevice device - const VkSemaphoreGetFdInfoKHR* pGetFdInfo - int* pFd - - - VkResult vkImportSemaphoreFdKHR - VkDevice device - const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo - - - void vkGetPhysicalDeviceExternalFenceProperties - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo - VkExternalFenceProperties* pExternalFenceProperties - - - - VkResult vkGetFenceWin32HandleKHR - VkDevice device - const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo - HANDLE* pHandle - - - VkResult vkImportFenceWin32HandleKHR - VkDevice device - const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo - - - VkResult vkGetFenceFdKHR - VkDevice device - const VkFenceGetFdInfoKHR* pGetFdInfo - int* pFd - - - VkResult vkImportFenceFdKHR - VkDevice device - const VkImportFenceFdInfoKHR* pImportFenceFdInfo - - - VkResult vkReleaseDisplayEXT - VkPhysicalDevice physicalDevice - VkDisplayKHR display - - - VkResult vkAcquireXlibDisplayEXT - VkPhysicalDevice physicalDevice - Display* dpy - VkDisplayKHR display - - - VkResult vkGetRandROutputDisplayEXT - VkPhysicalDevice physicalDevice - Display* dpy - RROutput rrOutput - VkDisplayKHR* pDisplay - - - VkResult vkDisplayPowerControlEXT - VkDevice device - VkDisplayKHR display - const VkDisplayPowerInfoEXT* pDisplayPowerInfo - - - VkResult vkRegisterDeviceEventEXT - VkDevice device - const VkDeviceEventInfoEXT* pDeviceEventInfo - const VkAllocationCallbacks* pAllocator - VkFence* pFence - - - VkResult vkRegisterDisplayEventEXT - VkDevice device - VkDisplayKHR display - const VkDisplayEventInfoEXT* pDisplayEventInfo - const VkAllocationCallbacks* pAllocator - VkFence* pFence - - - VkResult vkGetSwapchainCounterEXT - VkDevice device - VkSwapchainKHR swapchain - VkSurfaceCounterFlagBitsEXT counter - uint64_t* pCounterValue - - - VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT - VkPhysicalDevice physicalDevice - VkSurfaceKHR surface - VkSurfaceCapabilities2EXT* pSurfaceCapabilities - - - VkResult vkEnumeratePhysicalDeviceGroups - VkInstance instance - uint32_t* pPhysicalDeviceGroupCount - VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties - - - - void vkGetDeviceGroupPeerMemoryFeatures - VkDevice device - uint32_t heapIndex - uint32_t localDeviceIndex - uint32_t remoteDeviceIndex - VkPeerMemoryFeatureFlags* pPeerMemoryFeatures - - - - VkResult vkBindBufferMemory2 - VkDevice device - uint32_t bindInfoCount - const VkBindBufferMemoryInfo* pBindInfos - - - - VkResult vkBindImageMemory2 - VkDevice device - uint32_t bindInfoCount - const VkBindImageMemoryInfo* pBindInfos - - - - void vkCmdSetDeviceMask - VkCommandBuffer commandBuffer - uint32_t deviceMask - - - - VkResult vkGetDeviceGroupPresentCapabilitiesKHR - VkDevice device - VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities - - - VkResult vkGetDeviceGroupSurfacePresentModesKHR - VkDevice device - VkSurfaceKHR surface - VkDeviceGroupPresentModeFlagsKHR* pModes - - - VkResult vkAcquireNextImage2KHR - VkDevice device - const VkAcquireNextImageInfoKHR* pAcquireInfo - uint32_t* pImageIndex - - - void vkCmdDispatchBase - VkCommandBuffer commandBuffer - uint32_t baseGroupX - uint32_t baseGroupY - uint32_t baseGroupZ - uint32_t groupCountX - uint32_t groupCountY - uint32_t groupCountZ - - - - VkResult vkGetPhysicalDevicePresentRectanglesKHR - VkPhysicalDevice physicalDevice - VkSurfaceKHR surface - uint32_t* pRectCount - VkRect2D* pRects - - - VkResult vkCreateDescriptorUpdateTemplate - VkDevice device - const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate - - - - void vkDestroyDescriptorUpdateTemplate - VkDevice device - VkDescriptorUpdateTemplate descriptorUpdateTemplate - const VkAllocationCallbacks* pAllocator - - - - void vkUpdateDescriptorSetWithTemplate - VkDevice device - VkDescriptorSet descriptorSet - VkDescriptorUpdateTemplate descriptorUpdateTemplate - const void* pData - - - - void vkCmdPushDescriptorSetWithTemplateKHR - VkCommandBuffer commandBuffer - VkDescriptorUpdateTemplate descriptorUpdateTemplate - VkPipelineLayout layout - uint32_t set - const void* pData - - - void vkSetHdrMetadataEXT - VkDevice device - uint32_t swapchainCount - const VkSwapchainKHR* pSwapchains - const VkHdrMetadataEXT* pMetadata - - - VkResult vkGetSwapchainStatusKHR - VkDevice device - VkSwapchainKHR swapchain - - - VkResult vkGetRefreshCycleDurationGOOGLE - VkDevice device - VkSwapchainKHR swapchain - VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties - - - VkResult vkGetPastPresentationTimingGOOGLE - VkDevice device - VkSwapchainKHR swapchain - uint32_t* pPresentationTimingCount - VkPastPresentationTimingGOOGLE* pPresentationTimings - - - VkResult vkCreateIOSSurfaceMVK - VkInstance instance - const VkIOSSurfaceCreateInfoMVK* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - VkResult vkCreateMacOSSurfaceMVK - VkInstance instance - const VkMacOSSurfaceCreateInfoMVK* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSurfaceKHR* pSurface - - - void vkCmdSetViewportWScalingNV - VkCommandBuffer commandBuffer - uint32_t firstViewport - uint32_t viewportCount - const VkViewportWScalingNV* pViewportWScalings - - - void vkCmdSetDiscardRectangleEXT - VkCommandBuffer commandBuffer - uint32_t firstDiscardRectangle - uint32_t discardRectangleCount - const VkRect2D* pDiscardRectangles - - - void vkCmdSetSampleLocationsEXT - VkCommandBuffer commandBuffer - const VkSampleLocationsInfoEXT* pSampleLocationsInfo - - - void vkGetPhysicalDeviceMultisamplePropertiesEXT - VkPhysicalDevice physicalDevice - VkSampleCountFlagBits samples - VkMultisamplePropertiesEXT* pMultisampleProperties - - - VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo - VkSurfaceCapabilities2KHR* pSurfaceCapabilities - - - VkResult vkGetPhysicalDeviceSurfaceFormats2KHR - VkPhysicalDevice physicalDevice - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo - uint32_t* pSurfaceFormatCount - VkSurfaceFormat2KHR* pSurfaceFormats - - - void vkGetBufferMemoryRequirements2 - VkDevice device - const VkBufferMemoryRequirementsInfo2* pInfo - VkMemoryRequirements2* pMemoryRequirements - - - - void vkGetImageMemoryRequirements2 - VkDevice device - const VkImageMemoryRequirementsInfo2* pInfo - VkMemoryRequirements2* pMemoryRequirements - - - - void vkGetImageSparseMemoryRequirements2 - VkDevice device - const VkImageSparseMemoryRequirementsInfo2* pInfo - uint32_t* pSparseMemoryRequirementCount - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements - - - - VkResult vkCreateSamplerYcbcrConversion - VkDevice device - const VkSamplerYcbcrConversionCreateInfo* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkSamplerYcbcrConversion* pYcbcrConversion - - - - void vkDestroySamplerYcbcrConversion - VkDevice device - VkSamplerYcbcrConversion ycbcrConversion - const VkAllocationCallbacks* pAllocator - - - - void vkGetDeviceQueue2 - VkDevice device - const VkDeviceQueueInfo2* pQueueInfo - VkQueue* pQueue - - - VkResult vkCreateValidationCacheEXT - VkDevice device - const VkValidationCacheCreateInfoEXT* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkValidationCacheEXT* pValidationCache - - - void vkDestroyValidationCacheEXT - VkDevice device - VkValidationCacheEXT validationCache - const VkAllocationCallbacks* pAllocator - - - VkResult vkGetValidationCacheDataEXT - VkDevice device - VkValidationCacheEXT validationCache - size_t* pDataSize - void* pData - - - VkResult vkMergeValidationCachesEXT - VkDevice device - VkValidationCacheEXT dstCache - uint32_t srcCacheCount - const VkValidationCacheEXT* pSrcCaches - - - void vkGetDescriptorSetLayoutSupport - VkDevice device - const VkDescriptorSetLayoutCreateInfo* pCreateInfo - VkDescriptorSetLayoutSupport* pSupport - - - - VkResult vkGetSwapchainGrallocUsageANDROID - VkDevice device - VkFormat format - VkImageUsageFlags imageUsage - int* grallocUsage - - - VkResult vkAcquireImageANDROID - VkDevice device - VkImage image - int nativeFenceFd - VkSemaphore semaphore - VkFence fence - - - VkResult vkQueueSignalReleaseImageANDROID - VkQueue queue - uint32_t waitSemaphoreCount - const VkSemaphore* pWaitSemaphores - VkImage image - int* pNativeFenceFd - - - VkResult vkGetShaderInfoAMD - VkDevice device - VkPipeline pipeline - VkShaderStageFlagBits shaderStage - VkShaderInfoTypeAMD infoType - size_t* pInfoSize - void* pInfo - - - VkResult vkSetDebugUtilsObjectNameEXT - VkDevice device - const VkDebugUtilsObjectNameInfoEXT* pNameInfo - - - VkResult vkSetDebugUtilsObjectTagEXT - VkDevice device - const VkDebugUtilsObjectTagInfoEXT* pTagInfo - - - void vkQueueBeginDebugUtilsLabelEXT - VkQueue queue - const VkDebugUtilsLabelEXT* pLabelInfo - - - void vkQueueEndDebugUtilsLabelEXT - VkQueue queue - - - void vkQueueInsertDebugUtilsLabelEXT - VkQueue queue - const VkDebugUtilsLabelEXT* pLabelInfo - - - void vkCmdBeginDebugUtilsLabelEXT - VkCommandBuffer commandBuffer - const VkDebugUtilsLabelEXT* pLabelInfo - - - void vkCmdEndDebugUtilsLabelEXT - VkCommandBuffer commandBuffer - - - void vkCmdInsertDebugUtilsLabelEXT - VkCommandBuffer commandBuffer - const VkDebugUtilsLabelEXT* pLabelInfo - - - VkResult vkCreateDebugUtilsMessengerEXT - VkInstance instance - const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo - const VkAllocationCallbacks* pAllocator - VkDebugUtilsMessengerEXT* pMessenger - - - void vkDestroyDebugUtilsMessengerEXT - VkInstance instance - VkDebugUtilsMessengerEXT messenger - const VkAllocationCallbacks* pAllocator - - - void vkSubmitDebugUtilsMessageEXT - VkInstance instance - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity - VkDebugUtilsMessageTypeFlagsEXT messageTypes - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData - - - VkResult vkGetMemoryHostPointerPropertiesEXT - VkDevice device - VkExternalMemoryHandleTypeFlagBits handleType - const void* pHostPointer - VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties - - - void vkCmdWriteBufferMarkerAMD - VkCommandBuffer commandBuffer - VkPipelineStageFlagBits pipelineStage - VkBuffer dstBuffer - VkDeviceSize dstOffset - uint32_t marker - - - VkResult vkGetAndroidHardwareBufferPropertiesANDROID - VkDevice device - const struct AHardwareBuffer* buffer - VkAndroidHardwareBufferPropertiesANDROID* pProperties - - - VkResult vkGetMemoryAndroidHardwareBufferANDROID - VkDevice device - const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo - struct AHardwareBuffer** pBuffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - offset 1 reserved for the old VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX enum - offset 2 reserved for the old VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX enum - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Additional dependent types / tokens extending enumerants, not explicitly mentioned - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Additional dependent types / tokens extending enumerants, not explicitly mentioned - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This duplicates definitions in VK_KHR_device_group below - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This duplicates definitions in other extensions, below - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- cgit v1.2.3