diff options
Diffstat (limited to 'registry')
-rw-r--r-- | registry/generator.py | 35 | ||||
-rwxr-xr-x[-rw-r--r--] | registry/genvk.py | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | registry/reg.py | 87 | ||||
-rw-r--r-- | registry/validusage.json | 84 | ||||
-rw-r--r-- | registry/vk.xml | 58 |
5 files changed, 181 insertions, 83 deletions
diff --git a/registry/generator.py b/registry/generator.py index 8573655..1e4be14 100644 --- a/registry/generator.py +++ b/registry/generator.py @@ -43,6 +43,17 @@ def noneStr(s): return s return "" +# noneInt - returns string argument as an integer, or default if argument is +# None. +# Used in converting etree Elements into integers. +# s - string to convert +# default - default value +def noneInt(s, default = 0): + if s: + return int(s) + else: + return default + # enquote - returns string argument with surrounding quotes, # for serialization into Python code. def enquote(s): @@ -50,7 +61,7 @@ def enquote(s): return "'{}'".format(s) return None -# Primary sort key for regSortFeatures. +# 1st sort key for regSortFeatures. # Sorts by category of the feature name string: # Core API features (those defined with a <feature> tag) # ARB/KHR/OES (Khronos extensions) @@ -66,31 +77,32 @@ def regSortCategoryKey(feature): return 2 -# Secondary sort key for regSortFeatures. -# Sorts by extension name. -def regSortNameKey(feature): - return feature.name +# 2nd sort key for regSortFeatures. +# Sorts by sortorder attribute +def regSortOrderKey(feature): + return feature.sortorder -# Second sort key for regSortFeatures. +# 3rd sort key for regSortFeatures. # Sorts by feature version. <extension> elements all have version number "0" def regSortFeatureVersionKey(feature): return float(feature.versionNumber) -# Tertiary sort key for regSortFeatures. +# 4th sort key for regSortFeatures. # Sorts by extension number. <feature> elements all have extension number 0. def regSortExtensionNumberKey(feature): return int(feature.number) # regSortFeatures - default sort procedure for features. -# Sorts by primary key of feature category ('feature' or 'extension') +# Sorts by primary key of feature category ('feature', or extension tag) +# then by sort order within the category # 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=regSortOrderKey) 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. @@ -121,8 +133,9 @@ def regSortFeatures(featureList): # 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. +# Default is core API versions, ARB/KHR/OES extensions, all other +# extensions, by core API version number or extension number in +# each group. # The regex patterns can be None or empty, in which case they match # nothing. class GeneratorOptions: diff --git a/registry/genvk.py b/registry/genvk.py index 84cad3c..84cad3c 100644..100755 --- a/registry/genvk.py +++ b/registry/genvk.py diff --git a/registry/reg.py b/registry/reg.py index fb30ed8..27164c8 100644..100755 --- a/registry/reg.py +++ b/registry/reg.py @@ -19,7 +19,8 @@ import re import sys import xml.etree.ElementTree as etree from collections import defaultdict, namedtuple -from generator import OutputGenerator, write +from generator import OutputGenerator, write, noneInt +import pdb # matchAPIProfile - returns whether an API and profile # being generated matches an element's profile @@ -70,6 +71,12 @@ def matchAPIProfile(api, profile, elem): return False return True +# Print all the keys in an Element - only for diagnostics +# def printKeys(msg, elem): +# print('printKeys:', msg, file=sys.stderr) +# for key in elem.keys(): +# print(' {} -> {}'.format(key, elem.get(key)), file=sys.stderr) + # BaseInfo - base class for information about a registry feature # (type/group/enum/command/API/extension). # required - should this feature be defined during header generation @@ -89,26 +96,41 @@ class BaseInfo: def resetState(self): self.required = False self.declared = False - def compareElem(self, info): - # Just compares the tag and attributes. - # @@ This should be virtualized. In particular, comparing <enum> - # tags requires special-casing on the attributes, as 'extnumber' is - # only relevant when 'offset' is present. - selfKeys = sorted(self.elem.keys()) - infoKeys = sorted(info.elem.keys()) - - if selfKeys != infoKeys: + def compareKeys(self, info, key, required = False): + # Return True if self.elem and info.elem have the same attribute + # value for key. + # If 'required' is not True, also returns True if neither element + # has an attribute value for key. + if required and key not in self.elem.keys(): 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 not in ('extname', 'extnumber') and \ - (self.elem.get(key) != info.elem.get(key)): + return self.elem.get(key) == info.elem.get(key) + def compareElem(self, info, infoName): + # Return True if self.elem and info.elem have the same definition + # info - the other object + # infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' + + if infoName == 'enum': + if self.compareKeys(info, 'extends'): + # Either both extend the same type, or no type + if (self.compareKeys(info, 'value', required = True) or + self.compareKeys(info, 'bitpos', required = True)): + # If both specify the same value or bit position, + # they're equal + return True + elif (self.compareKeys(info, 'extends') and + self.compareKeys(info, 'extnumber') and + self.compareKeys(info, 'offset') and + self.compareKeys(info, 'dir')): + # If both specify the same relative offset, they're equal + return True + else: + return False + else: + # The same enum can't extend two different types return False - - return True + else: + # Non-<enum>s should never be redefined + return False # TypeInfo - registry information about a type. No additional state # beyond BaseInfo is required. @@ -164,29 +186,34 @@ class CmdInfo(BaseInfo): # FeatureInfo - registry information about an API <feature> # or <extension> # name - feature name string (e.g. 'VK_KHR_surface') -# version - feature version number (e.g. 1.2). <extension> +# category - category, e.g. VERSION or khr/vendor tag +# version - feature name string # features are unversioned and assigned version number 0. # ** This is confusingly taken from the 'number' attribute of <feature>. # Needs fixing. +# versionNumber - API version number, taken from the 'number' attribute +# of <feature>. Extensions do not have API version numbers and are +# assigned number 0. # number - extension number, used for ordering and for # assigning enumerant offsets. <feature> features do # not have extension numbers and are assigned number 0. -# category - category, e.g. VERSION or khr/vendor tag # emit - has this feature been defined already? class FeatureInfo(BaseInfo): """Represents the state of an API feature (version/extension)""" def __init__(self, elem): BaseInfo.__init__(self, elem) self.name = elem.get('name') - # Determine element category (vendor). Only works - # for <extension> elements. + self.sortorder = noneInt(elem.get('sortorder'), 0) + if elem.tag == 'feature': + # Element category (vendor) is meaningless for <feature> self.category = 'VERSION' self.version = elem.get('name') self.versionNumber = elem.get('number') self.number = "0" self.supported = None else: + # Extract vendor portion of VK_<vendor>_<name> self.category = self.name.split('_', 2)[1] self.version = "0" self.versionNumber = "0" @@ -295,12 +322,14 @@ class Registry: else: key = elem.get('name') if key in dictionary: - if not dictionary[key].compareElem(info): + if not dictionary[key].compareElem(info, infoName): 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') + '(this should not happen)') + # printKeys('old element', dictionary[key].elem) + # printKeys('new element', info.elem) + else: + # Benign redefinition - intentional cases exist. + True else: dictionary[key] = info @@ -1053,7 +1082,7 @@ class Registry: 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 + # Sort the features list, if a sort procedure is defined if self.genOpts.sortProcedure: self.genOpts.sortProcedure(features) diff --git a/registry/validusage.json b/registry/validusage.json index 9240390..fed2e68 100644 --- a/registry/validusage.json +++ b/registry/validusage.json @@ -1,9 +1,9 @@ { "version info": { "schema version": 2, - "api version": "1.1.120", - "comment": "from git branch: github-master commit: 521e98405f8587ce6506811125c001f1eda26314", - "date": "2019-08-17 22:33:44Z" + "api version": "1.1.121", + "comment": "from git branch: github-master commit: 59750fe4c72a9295a94e22474060d3a1635e92c8", + "date": "2019-08-25 10:57:34Z" }, "validation": { "vkGetInstanceProcAddr": { @@ -362,7 +362,7 @@ }, { "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext", - "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeaturesEXT\">VkPhysicalDeviceHostQueryResetFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeaturesKHR\">VkPhysicalDeviceImagelessFramebufferFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8FeaturesKHR\">VkPhysicalDeviceShaderFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeaturesEXT\">VkPhysicalDeviceSubgroupSizeControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT\">VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR\">VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>" + "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeaturesEXT\">VkPhysicalDeviceHostQueryResetFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeaturesKHR\">VkPhysicalDeviceImagelessFramebufferFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8FeaturesKHR\">VkPhysicalDeviceShaderFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeaturesEXT\">VkPhysicalDeviceSubgroupSizeControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT\">VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR\">VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>" }, { "vuid": "VUID-VkDeviceCreateInfo-sType-unique", @@ -5402,11 +5402,11 @@ "(VK_EXT_subgroup_size_control)": [ { "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784", - "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set, the <a href=\"#features-features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled." + "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled." }, { "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785", - "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set, the <a href=\"#features-features-computeFullSubgroups\"><code>computeFullSubgroups</code></a> feature <strong class=\"purple\">must</strong> be enabled." + "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set, the <a href=\"#features-computeFullSubgroups\"><code>computeFullSubgroups</code></a> feature <strong class=\"purple\">must</strong> be enabled." }, { "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754", @@ -5414,7 +5414,7 @@ }, { "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755", - "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is chained to <code>pNext</code>, the <a href=\"#features-features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled, and <code>stage</code> <strong class=\"purple\">must</strong> be a valid bit specified in <a href=\"#limits-required-subgroup-size-stages\"><code>requiredSubgroupSizeStages</code></a>." + "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is chained to <code>pNext</code>, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled, and <code>stage</code> <strong class=\"purple\">must</strong> be a valid bit specified in <a href=\"#limits-required-subgroup-size-stages\"><code>requiredSubgroupSizeStages</code></a>." }, { "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756", @@ -6692,6 +6692,12 @@ "vuid": "VUID-vkAllocateMemory-pMemory-parameter", "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceMemory</code> handle" } + ], + "(VK_AMD_device_coherent_memory)": [ + { + "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790", + "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo</code>-><code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>" + } ] }, "VkMemoryAllocateInfo": { @@ -7948,7 +7954,7 @@ }, { "vuid": "VUID-VkBufferViewCreateInfo-offset-02749", - "text": " If the <a href=\"#features-features-texelBufferAlignment\">texelBufferAlignment</a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>" + "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>" }, { "vuid": "VUID-VkBufferViewCreateInfo-range-00928", @@ -8006,11 +8012,11 @@ "(VK_EXT_texel_buffer_alignment)": [ { "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750", - "text": " If the <a href=\"#features-features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead" + "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead" }, { "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751", - "text": " If the <a href=\"#features-features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead" + "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead" } ] }, @@ -9566,11 +9572,11 @@ "(VK_VERSION_1_1,VK_KHR_external_memory)": [ { "vuid": "VUID-vkBindBufferMemory-memory-02726", - "text": " If <code>memory</code> was allocated with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained must also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created." + "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" }, { "vuid": "VUID-vkBindBufferMemory-memory-02727", - "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory must also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created." + "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" } ] }, @@ -9664,6 +9670,16 @@ "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605", "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated" } + ], + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [ + { + "vuid": "VUID-VkBindBufferMemoryInfo-handleTypes-02791", + "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" + }, + { + "vuid": "VUID-VkBindBufferMemoryInfo-memory-02792", + "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" + } ] }, "VkBindBufferMemoryDeviceGroupInfo": { @@ -9748,7 +9764,7 @@ "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [ { "vuid": "VUID-vkBindImageMemory-memory-01509", - "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." + "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" } ], "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [ @@ -9786,11 +9802,11 @@ "(VK_VERSION_1_1,VK_KHR_external_memory)": [ { "vuid": "VUID-vkBindImageMemory-memory-02728", - "text": " If <code>memory</code> was allocated with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained must also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created." + "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" }, { "vuid": "VUID-vkBindImageMemory-memory-02729", - "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory must also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created." + "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" } ] }, @@ -9960,6 +9976,16 @@ "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632", "text": " If the <code>pNext</code> chain does not include an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" } + ], + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [ + { + "vuid": "VUID-VkBindImageMemoryInfo-handleTypes-02793", + "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" + }, + { + "vuid": "VUID-VkBindImageMemoryInfo-memory-02794", + "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" + } ] }, "VkBindImageMemoryDeviceGroupInfo": { @@ -23079,6 +23105,10 @@ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" }, { + "vuid": "VUID-vkCmdTraceRaysNV-renderpass", + "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" + }, + { "vuid": "VUID-vkCmdTraceRaysNV-commonparent", "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" } @@ -23185,6 +23215,10 @@ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" }, { + "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass", + "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" + }, + { "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent", "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" } @@ -23233,6 +23267,10 @@ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" }, { + "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass", + "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" + }, + { "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength", "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" }, @@ -23277,6 +23315,10 @@ "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" }, { + "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass", + "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" + }, + { "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent", "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" } @@ -23723,10 +23765,6 @@ { "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR</code>" - }, - { - "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-pNext-pNext", - "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" } ] }, @@ -23770,6 +23808,14 @@ } ] }, + "VkPhysicalDeviceCoherentMemoryFeaturesAMD": { + "(VK_AMD_device_coherent_memory)": [ + { + "vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType", + "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD</code>" + } + ] + }, "VkPhysicalDevicePushDescriptorPropertiesKHR": { "(VK_KHR_push_descriptor)": [ { diff --git a/registry/vk.xml b/registry/vk.xml index bc1c63d..60d035a 100644 --- a/registry/vk.xml +++ b/registry/vk.xml @@ -154,7 +154,7 @@ server. <type category="define">// Vulkan 1.1 version number #define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type> <type category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 120</type> +#define <name>VK_HEADER_VERSION</name> 121</type> <type category="define"> #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> @@ -4036,7 +4036,7 @@ typedef void <name>CAMetalLayer</name>; <member><type>VkBool32</type> <name>fragmentShaderPixelInterlock</name></member> <member><type>VkBool32</type> <name>fragmentShaderShadingRateInterlock</name></member> </type> - <type category="struct" name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR"> + <type category="struct" name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member> <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>pipelineExecutableInfo</name></member> @@ -4148,6 +4148,11 @@ typedef void <name>CAMetalLayer</name>; <member>const <type>void</type>* <name>pNext</name></member> <member optional="true"><type>VkPipelineCompilerControlFlagsAMD</type> <name>compilerControlFlags</name></member> </type> + <type category="struct" name="VkPhysicalDeviceCoherentMemoryFeaturesAMD" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>deviceCoherentMemory</name></member> + </type> </types> <comment>Vulkan enumerant (token) definitions</comment> @@ -7562,14 +7567,14 @@ typedef void <name>CAMetalLayer</name>; <param><type>uint32_t</type> <name>bindInfoCount</name></param> <param len="bindInfoCount">const <type>VkBindAccelerationStructureMemoryInfoNV</type>* <name>pBindInfos</name></param> </command> - <command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> <proto><type>void</type> <name>vkCmdCopyAccelerationStructureNV</name></proto> <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> <param><type>VkAccelerationStructureNV</type> <name>dst</name></param> <param><type>VkAccelerationStructureNV</type> <name>src</name></param> <param><type>VkCopyAccelerationStructureModeNV</type> <name>mode</name></param> </command> - <command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> <proto><type>void</type> <name>vkCmdWriteAccelerationStructuresPropertiesNV</name></proto> <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> <param><type>uint32_t</type> <name>accelerationStructureCount</name></param> @@ -7578,7 +7583,7 @@ typedef void <name>CAMetalLayer</name>; <param><type>VkQueryPool</type> <name>queryPool</name></param> <param><type>uint32_t</type> <name>firstQuery</name></param> </command> - <command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> <proto><type>void</type> <name>vkCmdBuildAccelerationStructureNV</name></proto> <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> <param>const <type>VkAccelerationStructureInfoNV</type>* <name>pInfo</name></param> @@ -7590,7 +7595,7 @@ typedef void <name>CAMetalLayer</name>; <param><type>VkBuffer</type> <name>scratch</name></param> <param><type>VkDeviceSize</type> <name>scratchOffset</name></param> </command> - <command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary"> + <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary"> <proto><type>void</type> <name>vkCmdTraceRaysNV</name></proto> <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param> <param><type>VkBuffer</type> <name>raygenShaderBindingTableBuffer</name></param> @@ -8383,7 +8388,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_KHR_display" number="3" type="instance" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Norbert Nopper @FslNopper" supported="vulkan"> <require> - <enum value="21" name="VK_KHR_DISPLAY_SPEC_VERSION"/> + <enum value="23" name="VK_KHR_DISPLAY_SPEC_VERSION"/> <enum value=""VK_KHR_display"" name="VK_KHR_DISPLAY_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"/> <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"/> @@ -8409,7 +8414,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_KHR_display_swapchain" number="4" type="device" requires="VK_KHR_swapchain,VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan"> <require> - <enum value="9" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/> + <enum value="10" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/> <enum value=""VK_KHR_display_swapchain"" name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"/> <enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"/> @@ -8535,9 +8540,10 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_KHR_sampler_mirror_clamp_to_edge" type="device" number="15" author="KHR" contact="Tobias Hector @tobski" supported="vulkan"> <require> - <enum value="1" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/> + <enum value="3" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/> <enum value=""VK_KHR_sampler_mirror_clamp_to_edge"" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME"/> <enum value="4" extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Note that this defines what was previously a core enum, and so uses the 'value' attribute rather than 'offset', and does not have a suffix. This is a special case, and should not be repeated"/> + <enum extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR" alias="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Alias introduced for consistency with extension suffixing rules"/> </require> </extension> <extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobski" supported="vulkan"> @@ -8727,7 +8733,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_AMD_draw_indirect_count" number="34" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_KHR_draw_indirect_count"> <require> - <enum value="1" name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/> + <enum value="2" name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/> <enum value=""VK_AMD_draw_indirect_count"" name="VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/> <command name="vkCmdDrawIndirectCountAMD"/> <command name="vkCmdDrawIndexedIndirectCountAMD"/> @@ -8924,7 +8930,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_NV_win32_keyed_mutex" number="59" type="device" requires="VK_NV_external_memory_win32" author="NV" contact="Carsten Rohde @crohde" platform="win32" supported="vulkan" promotedto="VK_KHR_win32_keyed_mutex"> <require> - <enum value="1" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/> + <enum value="2" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/> <enum value=""VK_NV_win32_keyed_mutex"" name="VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"/> <type name="VkWin32KeyedMutexAcquireReleaseInfoNV"/> @@ -8932,7 +8938,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_KHR_get_physical_device_properties2" number="60" type="instance" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1"> <require> - <enum value="1" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/> + <enum value="2" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/> <enum value=""VK_KHR_get_physical_device_properties2"" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"/> <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/> <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/> @@ -8963,7 +8969,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_KHR_device_group" number="61" type="device" author="KHR" requires="VK_KHR_device_group_creation" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1"> <require> - <enum value="3" name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/> + <enum value="4" name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/> <enum value=""VK_KHR_device_group"" name="VK_KHR_DEVICE_GROUP_EXTENSION_NAME"/> <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/> <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/> @@ -9285,7 +9291,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_EXT_conditional_rendering" number="82" type="device" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan"> <require> - <enum value="1" name="VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"/> + <enum value="2" name="VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"/> <enum value=""VK_EXT_conditional_rendering"" name="VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"/> <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"/> @@ -9592,7 +9598,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_EXT_hdr_metadata" number="106" type="device" requires="VK_KHR_swapchain" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" supported="vulkan"> <require> - <enum value="1" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/> + <enum value="2" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/> <enum value=""VK_EXT_hdr_metadata"" name="VK_EXT_HDR_METADATA_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"/> <type name="VkHdrMetadataEXT"/> @@ -9903,7 +9909,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_EXT_sampler_filter_minmax" number="131" type="device" author="NV" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan"> <require> - <enum value="1" name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/> + <enum value="2" name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/> <enum value=""VK_EXT_sampler_filter_minmax"" name="VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"/> <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"/> @@ -10168,7 +10174,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_KHR_sampler_ycbcr_conversion" number="157" type="device" requires="VK_KHR_maintenance1,VK_KHR_bind_memory2,VK_KHR_get_memory_requirements2,VK_KHR_get_physical_device_properties2" author="KHR" contact="Andrew Garrard @fluppeteer" supported="vulkan" promotedto="VK_VERSION_1_1"> <require> - <enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/> + <enum value="14" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/> <enum value=""VK_KHR_sampler_ycbcr_conversion"" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/> <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/> <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/> @@ -10451,7 +10457,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_NV_representative_fragment_test" number="167" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan"> <require> - <enum value="1" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"/> + <enum value="2" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"/> <enum value=""VK_NV_representative_fragment_test"" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"/> <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"/> @@ -10613,7 +10619,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan"> <require> - <enum value="1" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/> + <enum value="2" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/> <enum value=""VK_AMD_shader_core_properties"" name="VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"/> <type name="VkPhysicalDeviceShaderCorePropertiesAMD"/> @@ -10778,7 +10784,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_NV_shader_image_footprint" number="205" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan"> <require> - <enum value="1" name="VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"/> + <enum value="2" name="VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"/> <enum value=""VK_NV_shader_image_footprint"" name="VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"/> <type name="VkPhysicalDeviceShaderImageFootprintFeaturesNV"/> @@ -11021,10 +11027,14 @@ typedef void <name>CAMetalLayer</name>; <enum value=""VK_AMD_extension_229"" name="VK_AMD_EXTENSION_229_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_AMD_extension_230" number="230" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled"> + <extension name="VK_AMD_device_coherent_memory" number="230" type="device" author="AMD" contact="Tobias Hector @tobski" supported="vulkan"> <require> - <enum value="0" name="VK_AMD_EXTENSION_230_SPEC_VERSION"/> - <enum value=""VK_AMD_extension_230"" name="VK_AMD_EXTENSION_230_EXTENSION_NAME"/> + <enum value="1" name="VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION"/> + <enum value=""VK_AMD_device_coherent_memory"" name="VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME"/> + <enum bitpos="6" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"/> + <enum bitpos="7" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"/> + <type name="VkPhysicalDeviceCoherentMemoryFeaturesAMD"/> </require> </extension> <extension name="VK_AMD_extension_231" number="231" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled"> @@ -11229,7 +11239,7 @@ typedef void <name>CAMetalLayer</name>; </extension> <extension name="VK_EXT_full_screen_exclusive" number="256" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2,VK_KHR_surface,VK_KHR_get_surface_capabilities2,VK_KHR_swapchain" platform="win32" contact="James Jones @cubanismo" supported="vulkan"> <require> - <enum value="3" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"/> + <enum value="4" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"/> <enum value=""VK_EXT_full_screen_exclusive"" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"/> <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"/> |